实现 ARP的方法、 交换设备及控制设备
技术领域
[01] 本发明涉及网络通信技术领域, 特别涉及实现地址解析协议 (Address Resolution Protocol , ARP) 的方法、 交换设备及控制设备。 背景技术
[02] 随着互联网规模的扩大, 软件定义网络 (Software Defined Network, SDN) 应 运而生, SDN网络采用 OpenFlow (开放流)协议, 支持开放接口和多控制的交换。 SDN 网络将网络设备的控制平面与数据转发平面进行分离,从而可以对网络流量进行灵活 控制。 其中控制平面的功能由控制设备(Controller)实现, 主要负责下发流量转发 策略; 数据转发平面的功能由交换设备 (Switch, 简称 SW) 实现, 主要用于接收控 制设备下发的流表, 并根据该流表对数据报文进行操作。通常在一个 SDN网络中, 控 制设备与每个交换设备相连, 交换设备之间通过相互连接实现数据报文的转发。
[03] 在 SDN网络中, 交换设备基于媒体访问控制 (Media Access Control , MAC) 地 址传输以太网数据包, 由于交换设备不具有三层能力, 因此当接收到互联网协议 ( Internet Protocol , IP) 数据包时, 由于无法识别该 IP数据包的目标 IP地址对 应的目标 MAC地址, 从而无法完成 IP数据包的传输。 现有技术中, 虽然二层设备可 以通过地址转换协议 (Address Resolution Protocol , ARP) 建立 ARP列表, 从而确 定 IP地址与 MAC地址之间的对应关系, 但是由于 SDN网络中的交换设备不具有支持 ARP协议的能力, 使得交换设备难以与其它外部设备之间实现 ARP交互, 从而降低了 SDN网络的数据传输能力。 发明内容
[04] 本发明实施例提供了实现 ARP 的方法、 交换设备及控制设备, 以解决现有 SDN 网络中的交换设备难以与外部设备实现 ARP交互,从而降低 SDN网络数据传输能力的 问题。 [05] 为了解决上述技术问题, 本发明实施例公开了如下技术方案:
[06] 第一方面, 提供一种实现地址解析协议 ARP的方法, 所述方法包括: [07] 交换设备接收 ARP报文;
[08] 所述交换设备将包含所述 ARP报文的信息上报消息发送到控制设备;
[09] 所述交换设备根据所述控制设备发送的信息下发消息中包含的 MAC 地址实现 ARP, 所述信息下发消息为所述控制设备根据所述信息上报消息发送的消息。
[10] 结合第一方面,在第一方面的第一种可能的实现方式中,所述交换设备接收 ARP 报文之前, 所述方法还包括:
[11] 所述交换设备接收所述控制设备下发的用于转发 ARP报文的第一流表项, 所述 第一流表项的匹配项为报文类型是 ARP报文,动作集为转发 ARP报文至所述控制设备; [12] 所述交换设备保存所述第一流表项;
[13] 所述交换设备将包含所述 ARP报文的信息上报消息发送到控制设备, 具体为: 所述交换设备根据所述第一流表项将包含所述 ARP 报文的信息上报消息发送到所述 控制设备。
[14] 结合第一方面的第一种可能的实现方式, 在第一方面的第二种可能的实现方式 中, 所述交换设备接收 ARP报文, 具体为:
[15] 所述交换设备接收 ARP请求报文, 所述 ARP请求报文中包含所述交换设备的互 联网协议 IP地址;
[16] 所述交换设备根据所述第一流表项将包含所述 ARP报文的信息上报消息发送到 所述控制设备, 包括: [17] 所述交换设备将所述 ARP请求报文的报文类型与所述第一流表项的匹配项进行 匹配后, 获得所述第一流表项的动作集;
[18] 所述交换设备将所述 ARP请求报文, 以及所述交换设备上接收到所述 ARP请求 报文的入端口的端口号封装在信息上报消息中;
[19] 所述交换设备将所述信息上报消息按照所述动作集转发到所述控制设备;
[20] 所述交换设备根据所述控制设备发送的信息下发消息中包含的 MAC 地址实现 ARP, 包括:
[21] 所述交换设备接收所述控制设备发送的信息下发消息;
[22] 所述交换设备解封装所述信息下发消息, 获得由所述控制设备构造的 ARP应答 报文, 以及所述 ARP应答报文的出端口的端口号,所述 ARP应答报文中包含所述交换 设备的 MAC地址,所述交换设备的 MAC地址为所述控制设备查找保存的地址对应关系 后获得的与所述交换设备的 IP地址和所述入端口的端口号对应的 MAC地址;
[23] 所述交换设备从所述出端口发送所述 ARP应答报文。
[24] 结合第一方面的第一种可能的实现方式, 在第一方面的第三种可能的实现方式 中, 所述交换设备接收 ARP报文之前, 所述方法还包括:
[25] 所述交换设备接收到 IP报文后, 向所述控制设备发送第一信息上报消息, 所述 第一信息上报消息用于请求与所述 IP报文中包含的 IP地址对应的 MAC地址;
[26] 所述交换设备接收所述控制设备根据所述第一信息上报消息发送的第一信息下 发消息,所述第一信息下发消息中携带由所述控制设备构造的 ARP请求报文, 以及所 述 ARP请求报文的出端口的端口号, 所述 ARP请求报文中包含所述 IP地址;
[27] 所述交换设备通过所述出端口发送所述 ARP请求报文;
[28] 所述交换设备接收 ARP报文, 具体为: 所述交换设备接收 ARP应答报文, 所述
ARP应答报文中包含所述 MAC地址, 所述 ARP应答报文为接收到所述 ARP请求报文的 外部设备确定所述 ARP请求报文中的 IP地址与自身 IP地址一致后,向所述交换设备 发送的报文。
[29] 结合第一方面的第三种可能的实现方式, 在第一方面的第四种可能的实现方式 中,所述交换设备根据所述第一流表项将包含所述 ARP报文的信息上报消息发送到所 述控制设备, 包括:
[30] 所述交换设备将所述 ARP应答报文的报文类型与所述第一流表项的匹配项进行 匹配后, 获得所述第一流表项的动作集;
[31] 所述交换设备将所述 ARP应答报文, 以及所述交换设备上接收到所述 ARP应答 报文的入端口的端口号封装在第二信息上报消息中;
[32] 所述交换设备将所述第二信息上报消息按照所述动作集转发到所述控制设备;
[33] 所述交换设备根据所述控制设备发送的信息下发消息中包含的 MAC 地址实现 ARP, 包括:
[34] 所述交换设备接收所述控制设备发送的第二信息下发消息, 所述第二信息下发 消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对应关系;
[35] 所述交换设备根据所述第二信息下发消息获得用于向所述外部设备转发 IP报文 的第二流表项,所述第二流表项的匹配项为报文类型是 IP报文, 且目的 IP地址为所 述外部设备的 IP地址, 所述第二流表项的动作集为将所述外部设备的 MAC地址封装 到 IP报文中, 且通过所述入端口转发所述 IP报文。
[36] 结合第一方面的第三种可能的实现方式,或第一方面的第四种可能的实现方式, 在第一方面的第五种可能的实现方式中, 所述出端口为所述交换设备上的所有端口;
[37] 所述交换设备通过所述出端口发送所述 ARP请求报文, 具体为: 所述交换设备 通过所述所有端口发送所述 ARP请求报文。
[38] 第二方面, 提供一种实现 ARP的方法, 所述方法包括:
[39] 控制设备接收交换设备发送的包含 ARP报文的信息上报消息;
[40] 所述控制设备根据所述信息上报消息向所述交换设备发送包含 MAC地址的信息 下发消息, 以使所述交换设备根据所述 MAC地址实现 ARP。 [41] 结合第二方面, 在第二方面的第一种可能的实现方式中, 所述控制设备接收交 换设备发送的包含 ARP报文的信息上报消息之前, 所述方法还包括:
[42] 所述控制设备向所述交换设备下发用于转发 ARP报文的第一流表项, 所述第一 流表项的匹配项为报文类型是 ARP报文, 动作集为转发 ARP报文至所述控制设备。
[43] 结合第二方面的第一种可能的实现方式, 在第二方面的第二种可能的实现方式 中, 所述控制设备接收交换设备发送的包含 ARP报文的信息上报消息, 具体为:
[44] 所述控制设备接收交换设备发送的包含 ARP请求报文的信息上报消息, 其中, 所述信息上报消息为所述交换设备将所述 ARP 请求报文与所述第一流表项的匹配项 进行匹配后, 按照获得的所述第一流表项的动作集向所述控制设备发送的消息,所述 信息上报消息中封装了所述 ARP请求报文,以及所述交换设备上接收到所述 ARP请求 报文的入端口的端口号, 所述 ARP请求报文中包含所述交换设备的 IP地址;
[45] 所述控制设备根据所述信息上报消息向所述交换设备发送包含 MAC地址的信息 下发消息, 包括:
[46] 所述控制设备解封装所述信息上报消息, 获得所述 ARP请求报文中包含的所述 交换设备的 IP地址和所述入端口的端口号; [47] 所述控制控制设备查找保存的地址对应关系后获得与所述交换设备的 IP地址和 所述入端口的端口号对应的所述交换设备的 MAC地址;
[48] 所述控制设备将根据所述交换设备的 MAC地址构造的 ARP应答报文, 以及所述
ARP应答报文的出端口的端口号封装到信息下发消息中;
[49] 所述控制设备将所述信息下发消息发送到所述交换设备, 以使所述交换设备解 封装所述信息下发消息获得所述 ARP应答报文和所述出端口的端口号后,从所述出端 口发送所述 ARP应答报文。
[50] 结合第二方面的第一种可能的实现方式, 在第二方面的第三种可能的实现方式 中,所述控制设备接收交换设备发送的包含 ARP报文的信息上报消息之前,所述方法 还包括: [51] 所述控制设备接收所述交换设备发送的请求所述外部设备的 MAC地址的第一信 息上报消息, 所述第一信息上报消息为所述交换设备接收到 IP报文后向所述控制设 备发送的消息,所述第一信息上报消息用于请求与所述 IP报文中包含的 IP地址对应 的 MAC地址;
[52] 所述控制设备根据所述第一信息上报消息生成第一信息下发消息, 所述第一信 息下发消息中携带由所述控制设备构造的 ARP请求报文,以及所述 ARP请求报文的出 端口的端口号, 所述 ARP请求报文中包含所述 IP地址;
[53] 所述控制设备接收交换设备发送的包含 ARP报文的信息上报消息, 具体为:
[54] 所述控制设备接收交换设备发送的包含 ARP应答报文的第二信息上报消息, 其 中,所述第二信息上报消息为所述交换设备将所述 ARP应答报文与所述第一流表项的 匹配项进行匹配后, 按照获得的所述第一流表项的动作集向所述控制设备发送的消 息,所述第二信息上报消息中封装了所述 ARP应答报文, 以及所述交换设备上接收到 所述 ARP应答报文的入端口的端口号,所述 ARP应答报文为接收到所述 ARP请求报文 的外部设备确定所述 ARP请求报文中的 IP地址与自身 IP地址一致后向所述交换设备 发送的报文, 所述 ARP应答报文中包含所述外部设备的 MAC地址。
[55] 结合第二方面的第三种可能的实现方式, 在第二方面的第四种可能的实现方式 中,所述控制设备根据所述信息上报消息向所述交换设备发送包含 MAC地址的信息下 发消息, 包括:
[56] 所述控制设备根据所述第二信息上报消息封装第二信息下发消息, 所述第二信 息下发消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对应关系;
[57] 所述控制设备将所述第二信息下发消息发送到所述交换设备, 以使所述交换设 备根据所述第二信息下发消息获得用于向所述外部设备转发 IP报文的第二流表项, 其中,所述第二流表项的匹配项为报文类型是 IP报文, 且目的 IP地址为所述外部设 备的 IP地址,所述第二流表项的动作集为将所述外部设备的 MAC地址封装到 IP报文 中, 且通过所述入端口转发所述 IP报文。
[58] 结合第二方面的第三种可能的实现方式,或第二方面的第四种可能的实现方式, 在第二方面的第五种可能的实现方式中, 所述出端口为所述交换设备上的所有端口, 以使所述交换设备通过所述所有端口发送所述 ARP请求报文。
[59] 第三方面, 提供一种交换设备, 所述交换设备包括:
[60] 接收单元, 用于接收 ARP报文;
[61] 上报单元, 用于将包含所述接收单元接收到的 ARP报文的信息上报消息发送到 控制设备;
[62] 实现单元, 用于根据所述控制设备发送的信息下发消息中包含的 MAC地址实现
ARP, 所述信息下发消息为所述控制设备根据所述上报单元上报的信息上报消息发送 的消息。
[63] 结合第三方面, 在第三方面的第一种可能的实现方式中, 所述接收单元, 还用 于接收所述控制设备下发的用于转发 ARP报文的第一流表项,所述第一流表项的匹配 项为报文类型是 ARP报文, 动作集为转发 ARP报文至所述控制设备;
[64] 所述交换设备还包括:
[65] 保存单元, 用于保存所述接收单元接收到的第一流表项;
[66] 所述上报单元, 具体用于根据所述保存单元保存的第一流表项将包含所述 ARP 报文的信息上报消息发送到所述控制设备。 [67] 结合第三方面的第一种可能的实现方式, 在第三方面的第二种可能的实现方式 中, 所述接收单元, 具体用于接收 ARP请求报文, 所述 ARP请求报文中包含所述交换 设备的互联网协议 IP地址;
[68] 所述上报单元, 包括:
[69] 第一匹配子单元, 用于将所述 ARP请求报文的报文类型与所述第一流表项的匹 配项进行匹配后, 获得所述第一流表项的动作集;
[70] 第一封装子单元, 用于将所述 ARP请求报文, 以及所述交换设备上接收到所述 ARP请求报文的入端口的端口号封装在信息上报消息中;
[71] 第一转发子单元,用于所述信息上报消息按照所述动作集转发到所述控制设备;
[72] 所述实现单元, 包括: [73] 第一接收子单元, 用于接收所述控制设备发送的信息下发消息;
[74] 第一解封装子单元, 用于解封装所述信息下发消息, 获得由所述控制设备构造 的 ARP应答报文, 以及所述 ARP应答报文的出端口的端口号,所述 ARP应答报文中包 含所述交换设备的 MAC地址,所述交换设备的 MAC地址为所述控制设备查找保存的地 址对应关系后获得的与所述交换设备的 IP地址和所述入端口的端口号对应的 MAC地 址;
[75] 第一发送子单元, 用于从所述出端口发送所述 ARP应答报文。
[76] 结合第三方面的第一种可能的实现方式, 在第三方面的第三种可能的实现方式 中, 所述上报单元, 还用于接收到 IP报文后, 向所述控制设备发送第一信息上报消 息,所述第一信息上报消息用于请求与所述 IP报文中包含的 IP地址对应的 MAC地址; [77] 所述接收单元, 还用于接收所述控制设备根据所述第一信息上报消息发送的第 一信息下发消息, 所述第一信息下发消息中携带由所述控制设备构造的 ARP 请求报 文, 以及所述 ARP请求报文的出端口的端口号, 所述 ARP请求报文中包含所述 IP地 址;
[78] 所述上报单元, 还用于通过所述出端口发送所述 ARP请求报文; [79] 所述接收单元,具体用于接收 ARP应答报文,所述 ARP应答报文中包含所述 MAC 地址,所述 ARP应答报文为接收到所述 ARP请求报文的外部设备确定所述 ARP请求报 文中的 IP地址与自身 IP地址一致后, 向所述交换设备发送的报文。
[80] 结合第三方面的第三种可能的实现方式, 在第三方面的第四种可能的实现方式 中, 所述上报单元, 包括: [81] 第二匹配子单元, 用于将所述 ARP应答报文的报文类型与所述第一流表项的匹 配项进行匹配后, 获得所述第一流表项的动作集;
[82] 第二封装子单元, 用于将所述 ARP应答报文, 以及所述交换设备上接收到所述
ARP应答报文的入端口的端口号封装在第二信息上报消息中;
[83] 第二转发子单元, 用于将所述第二信息上报消息按照所述动作集转发到所述控 制设备;
[84] 所述实现单元, 包括:
[85] 第二接收子单元, 用于接收所述控制设备发送的第二信息下发消息, 所述第二 信息下发消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对应关系;
[86] 第二获得子单元, 用于根据所述第二信息下发消息获得用于向所述外部设备转 发 IP报文的第二流表项, 所述第二流表项的匹配项为报文类型是 IP报文, 且目的
IP地址为所述外部设备的 IP地址,所述第二流表项的动作集为将所述外部设备的 MAC 地址封装到 IP报文中, 且通过所述入端口转发所述 IP报文。
[87] 第四方面, 提供一种控制设备, 所述控制设备包括:
[88] 接收单元, 用于接收交换设备发送的包含 ARP报文的信息上报消息; [89] 处理单元, 用于根据所述接收单元接收到的信息上报消息向所述交换设备发送 包含 MAC地址的信息下发消息, 以使所述交换设备根据所述 MAC地址实现 ARP。
[90] 结合第四方面, 在第四方面的第一种可能的实现方式中, 所述控制设备还包括:
[91] 下发单元, 用于向所述交换设备下发用于转发 ARP报文的第一流表项, 所述第 一流表项的匹配项为报文类型是 ARP报文, 动作集为转发 ARP报文至所述控制设备。 [92] 结合第四方面的第一种可能的实现方式, 在第四方面的第二种可能的实现方式 中,所述接收单元,具体用于接收交换设备发送的包含 ARP请求报文的信息上报消息, 其中,所述信息上报消息为所述交换设备将所述 ARP请求报文与所述第一流表项的匹 配项进行匹配后, 按照获得的所述第一流表项的动作集向所述控制设备发送的消息, 所述信息上报消息中封装了所述 ARP请求报文, 以及所述交换设备上接收到所述 ARP 请求报文的入端口的端口号, 所述 ARP请求报文中包含所述交换设备的 IP地址;
[93] 所述处理单元, 包括:
[94] 第一解封装子单元, 用于解封装所述信息上报消息, 获得所述 ARP请求报文中 包含的所述交换设备的 IP地址和所述入端口的端口号;
[95] 第一查找子单元,用于查找保存的地址对应关系后获得与所述交换设备的 IP地 址和所述入端口的端口号对应的所述交换设备的 MAC地址;
[96] 第一封装子单元, 用于将根据所述交换设备的 MAC地址构造的 ARP应答报文, 以及所述 ARP应答报文的出端口的端口号封装到信息下发消息中;
[97] 第一下发子单元, 用于将所述信息下发消息发送到所述交换设备, 以使所述交 换设备解封装所述信息下发消息获得所述 ARP应答报文和所述出端口的端口号后,从 所述出端口发送所述 ARP应答报文。
[98] 结合第四方面的第一种可能的实现方式, 在第四方面的第三种可能的实现方式 中,所述接收单元,还用于接收所述交换设备发送的请求所述外部设备的 MAC地址的 第一信息上报消息, 所述第一信息上报消息为所述交换设备接收到 IP报文后向所述 控制设备发送的消息, 所述第一信息上报消息用于请求与所述 IP 报文中包含的 IP 地址对应的 MAC地址;
[99] 所述处理单元, 还用于根据所述第一信息上报消息生成第一信息下发消息, 所 述第一信息下发消息中携带由所述控制设备构造的 ARP请求报文,以及所述 ARP请求 报文的出端口的端口号, 所述 ARP请求报文中包含所述 IP地址;
[100]所述接收单元, 具体用于接收交换设备发送的包含 ARP应答报文的第二信息上 报消息,其中,所述第二信息上报消息为所述交换设备将所述 ARP应答报文与所述第 一流表项的匹配项进行匹配后,按照获得的所述第一流表项的动作集向所述控制设备 发送的消息,所述第二信息上报消息中封装了所述 ARP应答报文, 以及所述交换设备 上接收到所述 ARP应答报文的入端口的端口号, 所述 ARP应答报文为接收到所述 ARP 请求报文的外部设备确定所述 ARP请求报文中的 IP地址与自身 IP地址一致后向所述 交换设备发送的报文, 所述 ARP应答报文中包含所述外部设备的 MAC地址。
[101]结合第四方面的第三种可能的实现方式, 在第四方面的第四种可能的实现方式 中, 所述处理单元, 包括:
[102]第二封装子单元, 用于根据所述第二信息上报消息封装第二信息下发消息, 所 述第二信息下发消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对 应关系;
[103]第二下发子单元, 用于将所述第二信息下发消息发送到所述交换设备, 以使所 述交换设备根据所述第二信息下发消息获得用于向所述外部设备转发 IP报文的第二 流表项, 其中, 所述第二流表项的匹配项为报文类型是 IP报文, 且目的 IP地址为所 述外部设备的 IP地址, 所述第二流表项的动作集为将所述外部设备的 MAC地址封装 到 IP报文中, 且通过所述入端口转发所述 IP报文。
[104]第五方面, 提供一种交换设备, 所述交换设备包括: 网络接口、 存储器、 收发 器和处理器, 其中,
[105]所述网络接口, 用于连接控制设备;
[106]所述存储器, 用于保存流表项; [107]所述收发器, 用于接收 ARP报文;
[108]所述处理器, 用于通过所述收发器将包含所述 ARP报文的信息上报消息发送到 控制设备, 并根据所述控制设备发送的信息下发消息中包含的 MAC地址实现 ARP, 所 述信息下发消息为所述控制设备根据所述信息上报消息发送的消息。
[109]结合第五方面, 在第五方面的第一种可能的实现方式中, 所述收发器, 还用于 接收所述控制设备下发的用于转发 ARP报文的第一流表项,所述第一流表项的匹配项 为报文类型是 ARP报文, 动作集为转发 ARP报文至所述控制设备; [no]所述存储器, 具体用于保存所述第一流表项;
[111]所述处理器,具体用于根据所述第一流表项,并通过所述收发器将包含所述 ARP 报文的信息上报消息发送到所述控制设备。
[112]结合第五方面的第一种可能的实现方式, 在第五方面的第二种可能的实现方式 中, 所述收发器, 具体用于接收 ARP请求报文, 所述 ARP请求报文中包含所述交换设 备的互联网协议 IP地址;
[113]所述处理器, 具体用于将所述 ARP请求报文的报文类型与所述第一流表项的匹 配项进行匹配后, 获得所述第一流表项的动作集, 将所述 ARP请求报文, 以及所述交 换设备上接收到所述 ARP请求报文的入端口的端口号封装在信息上报消息中,将所述 信息上报消息按照所述动作集转发到所述控制设备; 以及,解封装通过所述收发器接 收到的由控制设备发送的信息下发消息, 获得由所述控制设备构造的 ARP应答报文, 以及所述 ARP应答报文的出端口的端口号,所述 ARP应答报文中包含所述交换设备的 MAC地址, 所述交换设备的 MAC地址为所述控制设备查找保存的地址对应关系后获得 的与所述交换设备的 IP地址和所述入端口的端口号对应的 MAC地址, 并从所述出端 口发送所述 ARP应答报文。 [114]结合第五方面的第一种可能的实现方式, 在第五方面的第三种可能的实现方式 中, 所述收发器, 还用于接收到 IP报文后, 向所述控制设备发送第一信息上报消息,
所述第一信息上报消息用于请求与所述 IP报文中包含的 IP地址对应的 MAC地址;以 及,接收所述控制设备根据所述第一信息上报消息发送的第一信息下发消息,所述第 一信息下发消息中携带由所述控制设备构造的 ARP请求报文,以及所述 ARP请求报文 的出端口的端口号, 并通过所述出端口发送所述 ARP请求报文,所述 ARP请求报文中 包含所述 IP地址;
[115]所述收发器, 具体用于接收 ARP应答报文, 所述 ARP应答报文中包含所述 MAC 地址,所述 ARP应答报文为接收到所述 ARP请求报文的外部设备确定所述 ARP请求报 文中的 IP地址与自身 IP地址一致后, 向所述交换设备发送的报文。
[116]结合第五方面的第三种可能的实现方式, 在第五方面的第四种可能的实现方式 中,所述处理器, 具体用于将所述 ARP应答报文的报文类型与所述第一流表项的匹配 项进行匹配后, 获得所述第一流表项的动作集, 将所述 ARP应答报文, 以及所述交换 设备上接收到所述 ARP应答报文的入端口的端口号封装在第二信息上报消息中,并将 所述第二信息上报消息按照所述动作集转发到所述控制设备; 以及,通过所述收发器 接收到所述控制设备发送的第二信息下发消息后,所述第二信息下发消息中包含所述 外部设备的 IP地址与所述外部设备的 MAC地址的对应关系, 根据所述第二信息下发 消息获得用于向所述外部设备转发 IP报文的第二流表项, 所述第二流表项的匹配项 为报文类型是 IP报文, 且目的 IP地址为所述外部设备的 IP地址, 所述第二流表项 的动作集为将所述外部设备的 MAC地址封装到 IP报文中, 且通过所述入端口转发所 述 IP报文。 [117]第六方面, 提供一种控制设备, 所述控制设备包括: 网络接口、 收发器和处理 器, 其中,
[118]所述网络接口, 用于连接交换设备;
[119]所述收发器, 用于接收交换设备发送的包含 ARP报文的信息上报消息;
[120]所述处理器, 用于根据所述信息上报消息, 通过所述收发器向所述交换设备发 送包含 MAC地址的信息下发消息, 以使所述交换设备根据所述 MAC地址实现 ARP。
[121]结合第六方面, 在第六方面的第一种可能的实现方式中, 所述处理器, 还用于 通过所述收发器向所述交换设备下发用于转发 ARP报文的第一流表项,所述第一流表
项的匹配项为报文类型是 ARP报文, 动作集为转发 ARP报文至所述控制设备。
[122]结合第六方面的第一种可能的实现方式, 在第六方面的第二种可能的实现方式 中, 所述收发器, 具体用于接收交换设备发送的包含 ARP请求报文的信息上报消息, 其中,所述信息上报消息为所述交换设备将所述 ARP请求报文与所述第一流表项的匹 配项进行匹配后, 按照获得的所述第一流表项的动作集向所述控制设备发送的消息, 所述信息上报消息中封装了所述 ARP请求报文, 以及所述交换设备上接收到所述 ARP 请求报文的入端口的端口号, 所述 ARP请求报文中包含所述交换设备的 IP地址;
[123]所述处理器, 具体用于解封装所述信息上报消息, 获得所述 ARP请求报文中包 含的所述交换设备的 IP地址和所述入端口的端口号, 查找保存的地址对应关系后获 得与所述交换设备的 IP地址和所述入端口的端口号对应的所述交换设备的 MAC地址, 将根据所述交换设备的 MAC地址构造的 ARP应答报文,以及所述 ARP应答报文的出端 口的端口号封装到信息下发消息中,并通过所述收发器将所述信息下发消息发送到所 述交换设备,以使所述交换设备解封装所述信息下发消息获得所述 ARP应答报文和所 述出端口的端口号后, 从所述出端口发送所述 ARP应答报文。 [124]结合第六方面的第一种可能的实现方式, 在第六方面的第三种可能的实现方式 中,所述收发器,还用于接收所述交换设备发送的请求所述外部设备的 MAC地址的第 一信息上报消息, 所述第一信息上报消息为所述交换设备接收到 IP报文后向所述控 制设备发送的消息,所述第一信息上报消息用于请求与所述 IP报文中包含的 IP地址 对应的 MAC地址; [125]所述处理器, 还用于根据所述第一信息上报消息生成第一信息下发消息, 所述 第一信息下发消息中携带由所述控制设备构造的 ARP请求报文,以及所述 ARP请求报 文的出端口的端口号, 所述 ARP请求报文中包含所述 IP地址;
[126]所述收发器, 具体用于接收交换设备发送的包含 ARP应答报文的第二信息上报 消息,其中,所述第二信息上报消息为所述交换设备将所述 ARP应答报文与所述第一 流表项的匹配项进行匹配后,按照获得的所述第一流表项的动作集向所述控制设备发 送的消息,所述第二信息上报消息中封装了所述 ARP应答报文, 以及所述交换设备上 接收到所述 ARP应答报文的入端口的端口号, 所述 ARP应答报文为接收到所述 ARP 请求报文的外部设备确定所述 ARP请求报文中的 IP地址与自身 IP地址一致后向所述 交换设备发送的报文, 所述 ARP应答报文中包含所述外部设备的 MAC地址。
[127]结合第六方面的第三种可能的实现方式, 在第六方面的第四种可能的实现方式 中, 所述处理器, 具体用于根据所述第二信息上报消息封装第二信息下发消息, 所述 第二信息下发消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对应 关系, 并通过所述收发器将所述第二信息下发消息发送到所述交换设备, 以使所述交 换设备根据所述第二信息下发消息获得用于向所述外部设备转发 IP报文的第二流表 项, 其中, 所述第二流表项的匹配项为报文类型是 IP报文, 且目的 IP地址为所述外 部设备的 IP地址, 所述第二流表项的动作集为将所述外部设备的 MAC地址封装到 IP 报文中, 且通过所述入端口转发所述 IP报文。
[128]本发明实施例中, 交换设备接收 ARP报文, 将包含 ARP报文的信息上报消息发 送到控制设备,控制设备根据信息上报消息向交换设备发送包含 MAC地址的信息下发 消息, 交换设备根据信息下发消息中包含的 MAC地址实现 ARP。 应用本发明实施例, 虽然 SDN网络中的交换设备不具有支持 ARP协议的能力, 但是交换设备可以通过将 ARP报文上报到控制设备, 通过控制设备的协助实现与外部设备之间的 ARP交互, 从 而提高了 SDN网络的数据传输能力。 附图说明
[129]为了更清楚地说明本发明实施例或现有技术中的技术方案, 下面将对实施例或 现有技术描述中所需要使用的附图作简单地介绍, 显而易见地, 下面描述中的附图仅 仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的 前提下, 还可以根据这些附图获得其他的附图。 [130]图 1A为本发明实施例所应用的 SDN网络架构示意图;
[131]图 1B为本发明实现 ARP的方法的一个实施例流程图;
[132]图 1C为本发明实现 ARP的方法的另一个实施例流程图;
[133]图 2为本发明实现 ARP的方法的另一个实施例流程图;
[134]图 3为本发明实现 ARP的方法的另一个实施例流程图; [135]图 4为本发明交换设备的一个实施例框图;
[136]图 5为本发明交换设备的另一个实施例框图;
[137]图 6为本发明交换设备的另一个实施例框图; [138]图 7为本发明控制设备的一个实施例框图; [139]图 8为本发明控制设备的另一个实施例框图; [140]图 9为本发明控制设备的另一个实施例框图。 具体实施方式
[141]为了使本技术领域的人员更好地理解本发明实施例中的技术方案, 并使本发明 实施例的上述目的、特征和优点能够更加明显易懂, 下面结合附图对本发明实施例中 技术方案作进一步详细的说明。
[142]参见图 1A, 为本发明实施例所应用的 SDN网络架构示意图:
[143]图 1A示出的 SDN网络中可以包括: 一个控制设备和三个交换设备, 三个交换设 备分别为 SW1、 SW2和 SW3, 控制设备和交换设备之间相互连接。 其中, 控制设备为 基于 OpenFlow协议的控制设备, 每个交换设备上都设置有流表项, 控制设备可以统 一对所有交换设备上的流表项进行查询和管理。交换设备在传输每条数据流时, 都需 要从控制设备获得转发规则, 并将转发规则作为一个流表项进行存储, 即交换设备所 存储的每个流表项可以标识一条数据流。通常每个流表项包含的字段主要包括匹配项 和动作集,其中匹配项表示数据流需要满足的条件,动作集表示满足匹配项的数据流 所要执行的动作。 本发明实施例基于 OpenFlow协议实现交换设备与外部设备之间的 ARP交互,使得交换设备在控制设备的协助下,通过流表项匹配对 ARP报文进行处理。
[144]参见图 1B, 为本发明实现 ARP的方法的一个实施例流程图, 该实施例从交换设 备侧对实现 ARP的过程进行描述:
[145]步骤 101 : 交换设备接收 ARP报文。
[146]其中, 交换设备接收 ARP报文之前, 可以接收控制设备下发的用于转发 ARP报 文的第一流表项, 该第一流表项的匹配项为报文类型是 ARP报文, 动作集为转发 ARP 报文至所述控制设备, 交换设备保存该第一流表项。
[147]在第一个可选的实现方式中: 交换设备可以接收 ARP请求报文, 所述 ARP请求
报文中包含所述交换设备的互联网协议 (Internet Protocol , IP) 地址;
[148]在第二个可选的实现方式中: 交换设备可以接收到 IP报文后, 向所述控制设备 发送第一信息上报消息, 所述第一信息上报消息用于请求与所述 IP报文中包含的 IP 地址对应的 MAC地址,其中,所述交换设备可以在处理包含所述 IP地址的 IP报文过 程中发送所述第一信息上报消息,或者也可以在发送包含所述 IP地址的 IP报文前发 送所述第一信息上报消息;接收所述控制设备根据所述第一信息上报消息发送的第一 信息下发消息, 所述第一信息下发消息中携带由所述控制设备构造的 ARP请求报文, 以及所述 ARP请求报文的出端口的端口号, 所述 ARP请求报文中包含所述 IP地址, 通过所述出端口发送所述 ARP请求报文; 接收 ARP应答报文,所述 ARP应答报文中包 含所述 MAC地址,所述 ARP应答报文为接收到所述 ARP请求报文的外部设备确定所述 ARP请求报文中的 IP地址与自身 IP地址一致后, 向所述交换设备发送的报文。
[149]步骤 102: 交换设备将包含 ARP报文的信息上报消息发送到控制设备。
[150]其中, 交换设备可以根据所述第一流表项将包含所述 ARP报文的信息上报消息 发送到所述控制设备。 [151]结合步骤 101中的第一种可选的实现方式, 在步骤 102的第一种可选的实现方 式中:所述交换设备可以将所述 ARP请求报文的报文类型与所述第一流表项的匹配项 进行匹配后, 获得所述第一流表项的动作集; 将所述 ARP请求报文, 以及所述交换设 备上接收到所述 ARP请求报文的入端口的端口号封装在信息上报消息中;将所述信息 上报消息按照所述动作集转发到所述控制设备。 [152]结合步骤 101中的第二种可选的实现方式, 在步骤 102的第二种可选的实现方 式中:所述交换设备可以将所述 ARP应答报文的报文类型与所述第一流表项的匹配项 进行匹配后, 获得所述第一流表项的动作集; 将所述 ARP应答报文, 以及所述交换设 备上接收到所述 ARP应答报文的入端口的端口号封装在第二信息上报消息中;将所述 第二信息上报消息按照所述动作集转发到所述控制设备。 [153]步骤 103: 交换设备根据控制设备发送的信息下发消息中包含的 MAC地址实现 ARP, 该信息下发消息为控制设备根据信息上报消息发送的消息。
[154]结合步骤 102的第一种可能的实现方式, 在步骤 103的第一种可选的实现方式
中:交换设备可以接收所述控制设备发送的信息下发消息;解封装所述信息下发消息, 获得由所述控制设备构造的 ARP应答报文,以及所述 ARP应答报文的出端口的端口号, 所述 ARP应答报文中包含所述交换设备的 MAC地址,所述交换设备的 MAC地址为所述 控制设备查找保存的地址对应关系后获得的与所述交换设备的 IP地址和所述入端口 的端口号对应的 MAC地址; 并从所述出端口发送所述 ARP应答报文。
[155]结合步骤 102的第二种可能的实现方式, 在步骤 103的第二种可选的实现方式 中: 交换设备可以接收所述控制设备发送的第二信息下发消息,所述第二信息下发消 息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对应关系; 根据所述 第二信息下发消息获得用于向所述外部设备转发 IP报文的第二流表项, 所述第二流 表项的匹配项为报文类型是 IP报文, 且目的 IP地址为所述外部设备的 IP地址, 所 述第二流表项的动作集为将所述外部设备的 MAC地址封装到 IP报文中, 且通过所述 入端口转发所述 IP报文。 其中, 所述出端口可以为所述交换设备上的所有端口; 所 述交换设备通过所述出端口发送所述 ARP请求报文, 具体为: 所述交换设备通过所述 所有端口发送所述 ARP请求报文。 [156]由上述实施例可见, 虽然 SDN网络中的交换设备不具有支持 ARP协议的能力, 但是交换设备可以通过将 ARP报文上报到控制设备,通过控制设备的协助实现与外部 设备之间的 ARP交互, 从而提高了 SDN网络的数据传输能力。
[157]参见图 1C, 为本发明实现 ARP的方法的另一个实施例流程图, 该实施例从控制 设备侧对实现 ARP的过程进行描述: [158]步骤 111 : 控制设备接收交换设备发送的包含 ARP报文的信息上报消息。
[159]其中, 控制设备可以在接收到交换设备发送的包含 ARP报文的信息上报消息之 前, 向所述交换设备下发用于转发 ARP报文的第一流表项,所述第一流表项的匹配项 为报文类型是 ARP报文, 动作集为转发 ARP报文至所述控制设备。
[160]在第一个可选的实现方式中: 控制设备可以接收交换设备发送的包含 ARP请求 报文的信息上报消息,其中,所述信息上报消息为所述交换设备将所述 ARP请求报文 与所述第一流表项的匹配项进行匹配后,按照获得的所述第一流表项的动作集向所述 控制设备发送的消息,所述信息上报消息中封装了所述 ARP请求报文, 以及所述交换 设备上接收到所述 ARP请求报文的入端口的端口号,所述 ARP请求报文中包含所述交
换设备的 IP地址。
[161]在第二个可选的实现方式中: 控制设备可以接收所述交换设备发送的请求所述 外部设备的 MAC地址的第一信息上报消息,所述第一信息上报消息为所述交换设备接 收到 IP报文后向所述控制设备发送的消息, 所述第一信息上报消息用于请求与所述 IP报文中包含的 IP地址对应的 MAC地址; 根据所述第一信息上报消息生成第一信息 下发消息,所述第一信息下发消息中携带由所述控制设备构造的 ARP请求报文, 以及 所述 ARP请求报文的出端口的端口号, 所述 ARP请求报文中包含所述 IP地址; 接收 交换设备发送的包含 ARP应答报文的第二信息上报消息,其中,所述第二信息上报消 息为所述交换设备将所述 ARP应答报文与所述第一流表项的匹配项进行匹配后,按照 获得的所述第一流表项的动作集向所述控制设备发送的消息,所述第二信息上报消息 中封装了所述 ARP应答报文,以及所述交换设备上接收到所述 ARP应答报文的入端口 的端口号, 所述 ARP应答报文为接收到所述 ARP请求报文的外部设备确定所述 ARP 请求报文中的 IP地址与自身 IP地址一致后向所述交换设备发送的报文, 所述 ARP 应答报文中包含所述外部设备的 MAC地址。 [162]步骤 112:控制设备根据信息上报消息向交换设备发送包含 MAC地址的信息下发 消息, 以使交换设备根据该 MAC地址实现 ARP。
[163]结合步骤 111的第一种可选的实现方式, 在步骤 112的第一种可选的实现方式 中: 控制设备可以解封装所述信息上报消息, 获得所述 ARP请求报文中包含的所述交 换设备的 IP地址和所述入端口的端口号; 查找保存的地址对应关系后获得与所述交 换设备的 IP地址和所述入端口的端口号对应的所述交换设备的 MAC地址; 将根据所 述交换设备的 MAC地址构造的 ARP应答报文,以及所述 ARP应答报文的出端口的端口 号封装到信息下发消息中; 将所述信息下发消息发送到所述交换设备, 以使所述交换 设备解封装所述信息下发消息获得所述 ARP应答报文和所述出端口的端口号后,从所 述出端口发送所述 ARP应答报文。 [164]结合步骤 111的第二种可选的实现方式, 在步骤 112的第二种可选的实现方式 中: 控制设备可以根据所述第二信息上报消息封装第二信息下发消息,所述第二信息 下发消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对应关系; 将 所述第二信息下发消息发送到所述交换设备,以使所述交换设备根据所述第二信息下 发消息获得用于向所述外部设备转发 IP报文的第二流表项, 其中, 所述第二流表项
的匹配项为报文类型是 IP报文, 且目的 IP地址为所述外部设备的 IP地址, 所述第 二流表项的动作集为将所述外部设备的 MAC地址封装到 IP报文中, 且通过所述入端 口转发所述 IP报文。 其中, 所述出端口可以为所述交换设备上的所有端口, 以使所 述交换设备通过所述所有端口发送所述 ARP请求报文。 [165]由上述实施例可见, 虽然 SDN网络中的交换设备不具有支持 ARP协议的能力, 但是交换设备可以通过将 ARP报文上报到控制设备,通过控制设备的协助实现与外部 设备之间的 ARP交互, 从而提高了 SDN网络的数据传输能力。
[166]参见图 2,为本发明实现 ARP的方法的另一个实施例流程图,该实施例中外部设 备要获得交换设备的 MAC地址: [167]步骤 201 : 控制设备获取交换设备的端口与 IP地址的对应关系。
[168]本实施例中, 控制设备可以为交换设备的每个端口配置 IP地址, 因此控制设备 可以根据配置结果获得交换设备的每个端口与 IP地址的对应关系; 或者, 如果各个 换设备的端口的 IP地址由第三方设备配置, 则控制设备可以从第三方设备获得交换 设备的每个端口与 IP地址的对应关系。 [169]其中, 上述交换设备的端口与 IP地址的对应关系可以如下表 1所示: 表 1
端口号 IP地址
[170]上述表 1中, 交换设备的标识可以具体为交换设备的 ID号, 或者交换设备的名 称, 或者控制设备可以识别该交换设备的任何标志; 端口号为该交换设备上端口的标 识。通常一个交换设备有多个端口, 因此对应每个交换设备的标识, 有多组端口号与 IP地址的对应关系。
[171]步骤 202: 控制设备获取交换设备的端口与 MAC地址的对应关系。
[172]本步骤中, 交换设备可以主动向控制设备上报该交换设备的端口与 MAC地址的 对应关系; 或者,控制设备也可以向交换设备发送请求其端口与 MAC地址的对应关系
的请求消息,交换设备接收到该请求消息后向控制设备返回端口与 MAC地址的对应关
[173]其中, 上述交换设备的端口与 MAC地址的对应关系可以如下表 2所示: 表 2
端口号 MAC地址
[174]同前述表 1所述, 交换设备的标识可以具体为交换设备的 ID号, 或者交换设备 的名称, 或者控制设备可以识别该交换设备的任何标志; 端口号为该交换设备上端口 的标识。通常一个交换设备有多个端口, 因此对应每个交换设备的标识, 同样有多组 端口号与 MAC地址的对应关系。
[175]步骤 203: 控制设备获得交换设备的 IP地址与 MAC地址的对应关系。
[176]本步骤中, 控制设备可以基于步骤 201中表 1保存内容, 以及步骤 202中表 2 保存的内容, 获得交换设备的标识对应的端口号、 IP地址和 MAC地址, 上述对应关 系如下表 3所示: 表 3
[177]由上表 3可知, 由于每个交换设备上具有多个端口, 每个端口用于连接不同的 外部设备, 因此一个交换设备的标识可以对应多组端口号、 IP地址和 MAC地址之间 的对应关系。
[178]步骤 204: 控制设备向交换设备下发用于转发 ARP报文的流表项。
[179]本步骤中, 控制设备构造用于转发 ARP报文的流表项, 该流表项中包括的匹配 项为: 报文类型==!^报文; 动作集为: 转发 ARP报文至控制设备。
[180]控制设备可以将构造的流表项携带在流规则安装消息 (flow—mod消息) 中下发 给交换设备, 例如, 该流规则安装消息的格式可以具体为: 〈流规则安装消息〉 = {匹配 项, 〈动作集〉 } ;
[181]其中, 该流规则安装消息中用于表示 " ARP报文" 的匹配项的内容可以具体为: [182] 0XM_0F_ETH_TYPE=0x0806 ;
[183] 0XM_0F_ARP_TYPE=ARP消息;
[184]上述匹配项的内容中, " 0XM_0F_ETH_TYPE "为 0x0806时, 表示报文类型为 ARP 报文; " 0XM_0F_ARP_TYPE "用于表示 ARP报文的具体类型, 例如, 是 ARP请求报文, 或者 ARP应答报文, 本实施例中, " 0XM_0F_ARP_TYPE "为匹配项内的可选字段。 [185]上述匹配项的内容中, 该流规则安装消息中用于表示 "转发 ARP报文至控制设 备" 的动作集的内容可以具体为:
[186] 0FPAT_0UTPUT=0FPP_C0NTR0LLER;
[187]上述动作集中, " 0FPP_C0NTR0LLER"表示交换设备上用于连接控制设备的端口 的端口号, 即交换设备通过该端口号所在的端口向控制设备转发 ARP报文。 [188]步骤 205 : 交换设备接收到用于转发 ARP报文的流表项后, 保存该流表项。
[189]其中, 交换设备接收到流规则安装消息 (flow—mod消息) 后, 从该消息中获得 用于转发 ARP报文的流表项, 并保存该流表项。
[190]步骤 206 : 外部设备向交换设备发送 ARP请求报文。
[191]本实施例中, 外部设备可以具体为与该交换设备连接的其它交换设备、 网关、 或者主机设备等, 对此本发明实施例不进行限制。
[192]其中, 当外部设备要向交换设备传输报文时, 需要请求该交换设备的 MAC地址, 该 MAC地址为交换设备上与该外部设备连接的端口对应的 MAC地址,此时外部设备向 交换设备发送 ARP请求报文 (ARP_ReqUe st消息), 该 ARP请求报文中携带作为源设 备的该外部设备的 IP地址、 MAC地址、 以及作为目的设备的交换设备的 IP地址, 该 交换设备的 IP地址即为交换设备上与该外部设备连接的端口对应的 IP地址。
[193]步骤 207: 交换设备根据 ARP请求报文匹配流表项。
[194]本步骤中, 交换设备接收到 ARP请求报文后, 获得该 ARP请求报文的报文类型 为 " ARP报文", 将 " ARP报文"作为匹配项与保存的流表项进行匹配, 当匹配到如步 骤 204示出的用于转发 ARP报文的流表项后, 得到该流表项对应的动作集为 "转发 ARP报文至控制设备"。
[195]步骤 208:交换设备根据匹配结果将 ARP请求报文封装在 Packetjn消息中上报 到控制设备。
[196]交换设备根据步骤 207中匹配到的动作集 "转发 ARP报文至控制设备", 将 ARP 请求报文封装在 Openflow 协议定义的信息上报消息 (Packet_in 消息) 中, 该 Packet_in消息中携带的入端口号 (In_port) 为该交换设备上接收到 ARP请求报文 的端口的端口号。
[197]步骤 209: 控制设备根据 Packetjn消息获取交换设备的 MAC地址。
[198]本步骤中, 控制设备接收到 Packet_in消息后, 解封装该 Packetjn消息得到 其中携带的 ARP请求报文, 并从该 ARP请求报文中读取作为目的设备的交换设备的 IP地址, 然后以该 IP地址为关键字查询如表 3所示的对应关系, 获得与该 IP地址 对应的交换设备的 MAC地址。
[199]步骤 210 : 控制设备将根据获取的 MAC 地址生成的 ARP 应答报文封装在 packet_out消息中发送给交换设备。
[200]本步骤中, 控制设备根据获得的交换设备的 MAC 地址构造 ARP 应答报文 (ARP_Response消息), 该 ARP_Response中携带作为源设备的交换设备的 IP地址、 MAC地址、 以及作为目的设备的外部设备的 IP地址和 MAC地址; 然后, 控制设备将 构造的 ARP应答报文封装在 Openf low协议定义的信息下发消息 (packet—out消息) 中, 该 packet_out消息中同时携带出端口号(out_port), 该出端口号为交换设备上 用于转发该 ARP应答报文的端口的端口号,该出端口号步骤 208中 Packetjn消息携 带的入端口号一致。
[201]步骤 211 : 交换设备向外部设备发送 packet—out消息中携带的 ARP应答报文。
[202]交换设备接收到 packet—out消息后, 解封装该 packet_out消息, 获得其中携 带的 ARP应答报文, 以及出端口号; 然后, 交换设备将该 ARP应答报文通过该出端口 号所在的端口发送到外部设备, 从而完成外部设备与交换设备之间的 ARP交互。
[203]由上述实施例可见, 当外部设备要获得交换设备的 MAC地址时, 虽然 SDN网络 中的交换设备不具有支持 ARP协议的能力,但是交换设备可以通过将 ARP请求报文上 报到控制设备,通过控制设备的协助将 MAC地址发送给外部设备, 从而实现与外部设 备之间的 ARP交互, 提高了 SDN网络的数据传输能力。
[204]参见图 3,为本发明实现 ARP的方法的另一个实施例流程图,该实施例中交换设 备要获得外部设备的 MAC地址: [205]步骤 301 : 控制设备向交换设备下发用于转发 ARP报文的流表项。
[206]本步骤中, 控制设备构造用于转发 ARP报文的流表项, 该流表项中包括的匹配 项为: 报文类型==!^报文; 动作集为: 转发 ARP报文至控制设备。
[207]控制设备可以将构造的流表项携带在流规则安装消息 (flow—mod消息) 中下发 给交换设备, 例如, 该流规则安装消息的格式可以具体为: 〈流规则安装消息〉 = {匹配 项, 〈动作集〉 } ;
[208]其中, 该流规则安装消息中用于表示 " ARP报文" 的匹配项的内容可以具体为:
[209] 0XM_0F_ETH_TYPE=0x0806;
[210] 0XM_0F_ARP_TYPE=ARP消息;
[211]上述匹配项的内容中, " 0XM_0F_ETH_TYPE "为 0x0806时, 表示报文类型为 ARP 报文; " 0XM_0F_ARP_TYPE "用于表示 ARP报文的具体类型, 例如, 是 ARP请求报文, 或者 ARP应答报文, 本实施例中, " 0XM_0F_ARP_TYPE "为匹配项内的可选字段。
[212]上述匹配项的内容中, 该表项更新消息中用于表示 "转发 ARP报文至控制设备" 的动作集的内容可以具体为:
[213] 0FPAT_0UTPUT=0FPP_C0NTR0LLER;
[214]上述动作集中, " 0FPP_C0NTR0LLER"表示交换设备上用于连接控制设备的端口
的端口号, 即交换设备通过该端口号坐在的端口向控制设备转发 ARP报文。 [215]步骤 302: 交换设备接收到用于转发 ARP报文的流表项后, 保存该流表项。
[216]其中, 交换设备接收到流规则安装消息 (flow—mod消息) 后, 从该消息中获得 用于转发 ARP报文的流表项, 并保存该流表项。 [217]步骤 303: 交换设备向控制设备发送请求外部设备 2的 MAC地址的 packetjn 消息。
[218]本实施例中, 当外部设备 1要通过交换设备向外部设备 2发送 IP报文时,该 IP 报文中通常包含作为目的 IP地址的外部设备 2的 IP地址, 由于交换设备为基于 MAC 地址转发报文的二层设备, 因此需要获得外部设备 2的 IP地址对应的 MAC地址, 以 便转发收到的 IP报文。此时假设交换设备未匹配到该 IP报文对应的流表项, 从而无 法获得该 IP报文的目的 IP地址对应的目的 MAC地址, 及该 IP报文的转发策略, 因 此交换设备向控制设备发送信息上报消息 (packetjn消息), 该 packetjn消息中 携带外部设备 2的 IP地址, 以及携带原因字段的内容为 "缺少 IP地址对应的 MAC 地址"。 [219]步骤 304: 控制设备根据 ARP列表的查找结果构造 ARP请求报文。
[220]本步骤中,假设控制设备的 ARP列表中未保存外部设备 2的 IP地址与 MAC地址 的对应关系, 则控制设备接收到 packet_in消息, 从该 packetjn消息中获得外部设 备 2的 IP地址, 并在根据该 IP地址查找 ARP列表后, 无法获得对应的外部设备 2 的 MAC地址, 此时控制设备构造 ARP请求报文 (ARP_RequeSt消息), 该 ARP请求报 文中携带作为源设备的交换设备的 IP地址、 MAC地址、 以及作为目的设备的外部设 备 2的 IP地址。
[221]其中, 交换设备的 IP地址、 MAC地址可以携带在步骤 303中交换设备向控制设 备发送的 packetjn消息中; 或者,控制设备也可以预先保存交换设备的标识与其端 口号、 IP地址和 MAC地址的对应关系, 然后根据 packetjn消息中携带的交换设备 的标识和接收到 IP报文的端口的端口号查找该对应关系,获得该交换设备的 IP地址 和 MAC地址。
[222]可选的, 控制设备也可以根据 SDN网络中的外部设备与交换设备之间的路由关
系, 获得该外部设备 2的下一跳网关的 IP地址, 并请求该下一跳网关的 IP地址对应 的 MAC地址, 对此本发明实施例不进行限制。
[223]步骤 305: 控制设备向交换设备发送携带 ARP请求报文的 packet—out消息。
[224]本步骤中,控制设备构造完 ARP请求报文后,将该 ARP请求报文封装在 Openf low 协议定义的信息下发消息 (packet—out消息) 中, 该 packet—out消息中携带的出端 口号标识为 "flood", "flood"表示交换设备上所有端口的端口号。
[225]步骤 306: 交换设备根据 packet—out消息向外部设备发送 ARP请求报文。
[226]本步骤中, 交换设备接收到 packet_out消息后, 解封装该 packet—out消息, 获得其中携带的 ARP请求报文, 以及出端口号 "flood"。此时交换设备根据出端口号 "flood" 的指示, 将 ARP请求报文通过所有端口进行转发。
[227]步骤 307: 外部设备 2根据接收到的 ARP请求报文返回 ARP应答报文。
[228]本步骤中, 与交换设备关联的所有外部设备均接收到交换设备发送的 ARP请求 报文, 每个外部设备获得 ARP请求报文中携带的作为目的 IP地址的外部设备 2的 IP 地址, 将该目的 IP地址与自身 IP地址进行比较。 其中, 只有外部设备 2的 IP地址 与目的 IP地址一致, 因此外部设备 2构造 ARP应答报文, 该 ARP应答报文中携带作 为源设备的外部设备 2的 IP地址、 MAC地址、 以及作为目的设备的交换设备的 IP地 址、 MAC地址; 然后, 外部设备 2将该 ARP应答报文发送给交换设备。
[229]步骤 308:交换设备根据 ARP应答报文匹配流表项,并根据匹配结果将 ARP应答 报文封装在 Packetjn消息中上报到控制设备。 [230]本步骤中, 交换设备接收到 ARP应答报文后, 获得该 ARP应答报文的报文类型 为 " ARP报文", 将 " ARP报文"作为匹配项与保存的流表项进行匹配, 根据步骤 301 示出的用于转发 ARP报文的流表项,得到对应的动作集为"转发 ARP报文至控制设备"; 然后, 交换设备根据匹配到的动作集 "转发 ARP报文至控制设备", 将 ARP应答报文 封装在 Openflow协议定义的 Packet_in消息中, 该 Packet_in消息中携带的入端口 号 (In_port) 为交换设备上接收到该 ARP应答报文的端口的端口号。
[231]步骤 309: 控制设备根据 Packetjn消息保存外部设备 2的 IP地址和 MAC地址
的对应关系。
[232]本步骤中, 控制设备接收到 Packet_in消息后, 解封装该 Packetjn消息得到 ARP应答报文, 以及入端口号 (In_prot), 并进一步解析该 ARP应答报文, 从中获得 外部设备 2的 IP地址和 MAC地址, 将该 IP地址和 MAC地址的对应关系保存到 ARP 列表中。
[233]步骤 310: 控制设备将外部设备 2 的 IP 地址和 MAC 地址的对应关系封装在 packet_out消息中返回给交换设备。
[234]在一个实现方式中,交换设备在获得外部设备 2的 IP地址和 MAC地址的对应关 系后, 可以将该对应关系封装在 Openflow 协议定义的 packet—out 消息中, 该 packet_out消息中携带的出端口号 (out_port) 为交换设备上接收到 ARP应答报文 的端口的端口号, 即与步骤 309中 Packetjn消息携带的入端口号(In_prot)—致。
[235]在另一个实现方式中,控制设备在获得外部设备 2的 IP地址和 MAC地址的对应 关系后, 可以根据该对应关系为交换设备构造用于向外部设备 2转发 IP报文的流表 项, 该流表项中包括的匹配项为: 报文类型 ==IP报文, 目的 IP地址 ==外部设备 2的 IP地址; 动作集为: 封装目的 IP地址对应的目的 MAC地址, 并通过该交换设备上与 目的 MAC地址对应的端口转发封装后的 IP报文。 控制设备可以将构造的流表项携带 在 packet—out消息中下发给交换设备,例如,该 packet_out消息的格式可以具体为: 〈流规则安装消息〉 = {匹配项, 〈动作集〉 } ;
[236]其中, 该 packet_out消息中用于表示匹配项的内容可以具体为: [237] 0XM_0F_ETH_TYPE=0x0800; [238] 0XM_0F_IP=IP_1 ;
[239]上述匹配项中, "0XM_0F_ETH_TYPE"为 0x0800时, 表示报文类型为 IP报文; IP_1表示外部设备 2的 IP地址;
[240]其中, 该 packet—out消息中用于表示动作集的内容可以具体为: [241] 0XM_0F_ENCAP_MAC=MAC_1 ;
[242] 0FPAT_0UTPUT^ 口号_1;
[243]上述动作集中, MAC_1 表示外部设备 2的 MAC地址, "0XM_0F_ENCAP_MAC=MAC_1 " 表示将 MAC_1封装到 IP报文中; "端口号_1 "表示交换设备上接收 ARP应答报文的端 口的端口号, " 0FPAT_0UTPUT 口号 _1 "表示将封装了 MAC_1的 IP报文通过端口号 _1所在的端口转发。
[244]步骤 311: 交换设备根据 packet_out消息保存 IP报文的转发流表项。
[245]对应步骤 310中的一个实现方式, 当交换设备接收到 packet_out消息后, 解封 装该 packet—out消息,获得其中携带的外部设备 2的 IP地址和 MAC地址的对应关系, 以及出端口号 (out_p0rt), 交换设备依据上述信息构造用于向外部设备 2 转发 IP 报文的流表项, 该流表项中包括的匹配项为: 报文类型 ==IP报文, 目的 IP地址 ==外 部设备 2的 IP地址; 动作集为: 获得并封装目的 IP地址对应的目的 MAC地址, 并通 过该交换设备上与目的 MAC地址对应的端口转发封装后的 IP报文。 交换设备将构造 好的上述流表项进行保存, 以便后续按照该流表项向外部设备 2转发 IP报文。
[246]对应步骤 310中的另一个实现方式, 当交换设备接收到 packet_out消息后, 解 封装该 packet—out消息, 获得其中携带的用于向外部设备 2转发 IP报文的流表项, 并保存该流表项, 以便后续按照该流表项向外部设备 2转发 IP报文。
[247]步骤 312: 交换设备接收外部设备 1发送的 IP报文, 该 IP报文的目的 IP地址 为外部设备 2的 IP地址。
[248]步骤 313: 交换设备根据接收到的 IP报文匹配流表项。 [249]本步骤中, 交换设备接收到外部设备 1发送的 IP报文后, 获得该 IP报文中的 目的 IP地址, 即为外部设备 2的 IP地址。此时交换设备通匹配流表项, 根据前述步 骤 310中示出的流表项可知,根据 IP报文的报文类型和其中携带的目的 IP地址作为 匹配项, 匹配到对应的动作集为 "封装目的 IP地址对应的目的 MAC地址, 并通过该 交换设备上与目的 MAC地址对应的端口转发封装后的 IP报文", 其中, 与目的 IP地 址对应的目的 MAC地址为外部设备 2的 MAC地址, 目的 MAC地址对应的目的端口为前 述接收到外部设备 2返回的 ARP应答报文的端口, 因此交换设备将外部设备 2的 MAC 地址封装到接收的 IP报文中, 并通过目的端口转发出去, 该 IP报文由外部设备 2
接收。
[250]由上述实施例可见, 当交换设备要获得外部设备的 MAC地址时, 虽然 SDN网络 中的交换设备不具有支持 ARP协议的能力,但是交换设备可以通过将 ARP应答报文上 报到控制设备,通过控制设备的协助获得外部设备的 MAC地址, 从而实现与外部设备 之间的 ARP交互, 提高了 SDN网络的数据传输能力。
[251]与本发明实现 ARP的方法的实施例相对应, 本发明还提供了交换设备及控制设 备的实施例。
[252]参见图 4, 为本发明交换设备的一个实施例框图:
[253]该交换设备包括: 接收单元 410、 上报单元 420和实现单元 430。
[254]其中, 接收单元 410, 用于接收 ARP报文;
[255]上报单元 420,用于将包含所述接收单元 410接收到的 ARP报文的信息上报消息 发送到控制设备;
[256]实现单元 430,用于根据所述控制设备发送的信息下发消息中包含的 MAC地址实 现 ARP, 所述信息下发消息为所述控制设备根据所述上报单元 420上报的信息上报消 息发送的消息。
[257]参见图 5, 为本发明交换设备的另一个实施例框图:
[258]该交换设备包括: 接收单元 510、保存单元 520、上报单元 530和实现单元 540。
[259]其中,接收单元 510,用于接收所述控制设备下发的用于转发 ARP报文的第一流 表项,所述第一流表项的匹配项为报文类型是 ARP报文,动作集为转发 ARP报文至所 述控制设备;
[260]保存单元 520, 用于保存所述接收单元 510接收到的第一流表项;
[261]接收单元 510, 还用于接收 ARP报文;
[262]上报单元 530, 用于根据所述保存单元 520保存的第一流表项将包含所述 ARP 报文的信息上报消息发送到所述控制设备;
[263]实现单元 540,用于根据所述控制设备发送的信息下发消息中包含的 MAC地址实 现 ARP, 所述信息下发消息为所述控制设备根据所述上报单元 530上报的信息上报消 息发送的消息。
[264]在一个可选的实现方式中: [265]所述接收单元 510,可以具体用于接收 ARP请求报文,所述 ARP请求报文中包含 所述交换设备的互联网协议 IP地址;
[266]所述上报单元 530可以包括 (图 5中未示出):
[267]第一匹配子单元, 用于将所述 ARP请求报文的报文类型与所述第一流表项的匹 配项进行匹配后, 获得所述第一流表项的动作集; [268]第一封装子单元, 用于将所述 ARP请求报文, 以及所述交换设备上接收到所述
ARP请求报文的入端口的端口号封装在信息上报消息中;
[269]第一转发子单元,用于所述信息上报消息按照所述动作集转发到所述控制设备;
[270]所述实现单元 540可以包括 (图 5中未示出):
[271]第一接收子单元, 用于接收所述控制设备发送的信息下发消息; [272]第一解封装子单元, 用于解封装所述信息下发消息, 获得由所述控制设备构造 的 ARP应答报文, 以及所述 ARP应答报文的出端口的端口号,所述 ARP应答报文中包 含所述交换设备的 MAC地址,所述交换设备的 MAC地址为所述控制设备查找保存的地 址对应关系后获得的与所述交换设备的 IP地址和所述入端口的端口号对应的 MAC地 址; [273]第一发送子单元, 用于从所述出端口发送所述 ARP应答报文。 [274]在另一个可选的实现方式中:
[275]所述上报单元 530, 还可以用于接收到 IP报文后, 向所述控制设备发送第一信 息上报消息,所述第一信息上报消息用于请求与所述 IP报文中包含的 IP地址对应的 MAC地址;
[276]所述接收单元 510,还可以用于接收所述控制设备根据所述第一信息上报消息发 送的第一信息下发消息, 所述第一信息下发消息中携带由所述控制设备构造的 ARP 请求报文, 以及所述 ARP请求报文的出端口的端口号,所述 ARP请求报文中包含所述 IP地址; [277]所述上报单元 530, 还可以用于通过所述出端口发送所述 ARP请求报文;
[278]所述接收单元 510,可以具体用于接收 ARP应答报文,所述 ARP应答报文中包含 所述 MAC地址, 所述 ARP应答报文为接收到所述 ARP请求报文的外部设备确定所述 ARP请求报文中的 IP地址与自身 IP地址一致后, 向所述交换设备发送的报文。
[279]所述上报单元 530可以包括 (图 5中未示出): [280]第二匹配子单元, 用于将所述 ARP应答报文的报文类型与所述第一流表项的匹 配项进行匹配后, 获得所述第一流表项的动作集;
[281]第二封装子单元, 用于将所述 ARP应答报文, 以及所述交换设备上接收到所述
ARP应答报文的入端口的端口号封装在第二信息上报消息中;
[282]第二转发子单元, 用于将所述第二信息上报消息按照所述动作集转发到所述控 制设备;
[283]所述实现单元 540可以包括 (图 5中未示出):
[284]第二接收子单元, 用于接收所述控制设备发送的第二信息下发消息, 所述第二 信息下发消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对应关系;
[285]第二获得子单元, 用于根据所述第二信息下发消息获得用于向所述外部设备转 发 IP报文的第二流表项, 所述第二流表项的匹配项为报文类型是 IP报文, 且目的 IP地址为所述外部设备的 IP地址,所述第二流表项的动作集为将所述外部设备的 MAC 地址封装到 IP报文中, 且通过所述入端口转发所述 IP报文。
[286]参见图 6, 为本发明交换设备的另一个实施例框图:
[287]该交换设备包括: 网络接口 610、 存储器 620、 收发器 630和处理器 640。
[288]其中, 所述网络接口 610, 用于连接控制设备;
[289]所述存储器 620, 用于保存流表项; [290]所述收发器 630, 用于接收 ARP报文;
[291]所述处理器 640,用于通过所述收发器 630将包含所述 ARP报文的信息上报消息 发送到控制设备, 并根据所述控制设备发送的信息下发消息中包含的 MAC地址实现 ARP, 所述信息下发消息为所述控制设备根据所述信息上报消息发送的消息。
[292]进一步, 所述收发器 630, 还可以用于接收所述控制设备下发的用于转发 ARP 报文的第一流表项,所述第一流表项的匹配项为报文类型是 ARP报文,动作集为转发 ARP报文至所述控制设备; 相应的, 所述存储器 620, 可以具体用于保存所述第一流 表项; 所述处理器 640, 可以具体用于根据所述第一流表项, 并通过所述收发器将包 含所述 ARP报文的信息上报消息发送到所述控制设备。
[293]在一个可选的实现方式中:
[294]所述收发器 630,可以具体用于接收 ARP请求报文,所述 ARP请求报文中包含所 述交换设备的互联网协议 IP地址;
[295]所述处理器 640,可以具体用于将所述 ARP请求报文的报文类型与所述第一流表 项的匹配项进行匹配后, 获得所述第一流表项的动作集, 将所述 ARP请求报文, 以及 所述交换设备上接收到所述 ARP请求报文的入端口的端口号封装在信息上报消息中, 将所述信息上报消息按照所述动作集转发到所述控制设备; 以及,解封装通过所述收 发器接收到的由控制设备发送的信息下发消息,获得由所述控制设备构造的 ARP应答 报文, 以及所述 ARP应答报文的出端口的端口号,所述 ARP应答报文中包含所述交换 设备的 MAC地址,所述交换设备的 MAC地址为所述控制设备查找保存的地址对应关系 后获得的与所述交换设备的 IP地址和所述入端口的端口号对应的 MAC地址, 并从所 述出端口发送所述 ARP应答报文。
[296]在另一个可选的实现方式中:
[297]所述收发器 630, 还可以用于接收到 IP报文后, 向所述控制设备发送第一信息 上报消息, 所述第一信息上报消息用于请求与所述 IP报文中包含的 IP地址对应的 MAC地址; 以及, 接收所述控制设备根据所述第一信息上报消息发送的第一信息下发 消息,所述第一信息下发消息中携带由所述控制设备构造的 ARP请求报文, 以及所述
ARP请求报文的出端口的端口号,并通过所述出端口发送所述 ARP请求报文,所述 ARP 请求报文中包含所述 IP地址;
[298]所述收发器 630,可以具体用于接收 ARP应答报文,所述 ARP应答报文中包含所 述 MAC地址, 所述 ARP应答报文为接收到所述 ARP请求报文的外部设备确定所述 ARP 请求报文中的 IP地址与自身 IP地址一致后, 向所述交换设备发送的报文;
[299]所述处理器 640,可以具体用于将所述 ARP应答报文的报文类型与所述第一流表 项的匹配项进行匹配后, 获得所述第一流表项的动作集, 将所述 ARP应答报文, 以及 所述交换设备上接收到所述 ARP 应答报文的入端口的端口号封装在第二信息上报消 息中, 并将所述第二信息上报消息按照所述动作集转发到所述控制设备; 以及, 通过 所述收发器接收到所述控制设备发送的第二信息下发消息后,所述第二信息下发消息 中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对应关系, 根据所述第 二信息下发消息获得用于向所述外部设备转发 IP报文的第二流表项, 所述第二流表 项的匹配项为报文类型是 IP报文, 且目的 IP地址为所述外部设备的 IP地址, 所述 第二流表项的动作集为将所述外部设备的 MAC地址封装到 IP报文中, 且通过所述入 端口转发所述 IP报文。
[300]参见图 7, 为本发明控制设备的一个实施例框图: [301]该控制设备包括: 接收单元 710和处理单元 720。
[302]其中, 接收单元 710, 用于接收交换设备发送的包含 ARP报文的信息上报消息;
[303]处理单元 720,用于根据所述接收单元 710接收到的信息上报消息向所述交换设 备发送包含 MAC地址的信息下发消息,以使所述交换设备根据所述 MAC地址实现 ARP。
[304]参见图 8, 为本发明控制设备的另一个实施例框图:
[305]该控制设备包括: 下发单元 810、 接收单元 820和处理单元 830。
[306]其中,下发单元 810,用于向所述交换设备下发用于转发 ARP报文的第一流表项, 所述第一流表项的匹配项为报文类型是 ARP报文,动作集为转发 ARP报文至所述控制 设备;
[307]接收单元 820, 用于接收交换设备发送的包含 ARP报文的信息上报消息;
[308]处理单元 830,用于根据所述接收单元 820接收到的信息上报消息向所述交换设 备发送包含 MAC地址的信息下发消息,以使所述交换设备根据所述 MAC地址实现 ARP。
[309]在一个可选的实现方式中:
[310]所述接收单元 820,可以具体用于接收交换设备发送的包含 ARP请求报文的信息 上报消息,其中,所述信息上报消息为所述交换设备将所述 ARP请求报文与所述第一 流表项的匹配项进行匹配后,按照获得的所述第一流表项的动作集向所述控制设备发 送的消息,所述信息上报消息中封装了所述 ARP请求报文, 以及所述交换设备上接收 到所述 ARP请求报文的入端口的端口号, 所述 ARP请求报文中包含所述交换设备的 IP地址; [311]所述处理单元 830可以包括 (图 8中未示出):
[312]第一解封装子单元, 用于解封装所述信息上报消息, 获得所述 ARP请求报文中 包含的所述交换设备的 IP地址和所述入端口的端口号;
[313]第一查找子单元,用于查找保存的地址对应关系后获得与所述交换设备的 IP地 址和所述入端口的端口号对应的所述交换设备的 MAC地址; [314]第一封装子单元, 用于将根据所述交换设备的 MAC地址构造的 ARP应答报文, 以及所述 ARP应答报文的出端口的端口号封装到信息下发消息中;
[315]第一下发子单元, 用于将所述信息下发消息发送到所述交换设备, 以使所述交 换设备解封装所述信息下发消息获得所述 ARP应答报文和所述出端口的端口号后,从 所述出端口发送所述 ARP应答报文。 [316]在另一个可选的实现方式中:
[317]所述接收单元 820, 还可以用于接收所述交换设备发送的请求所述外部设备的
MAC地址的第一信息上报消息, 所述第一信息上报消息为所述交换设备接收到 IP报 文后向所述控制设备发送的消息, 所述第一信息上报消息用于请求与所述 IP报文中 包含的 IP地址对应的 MAC地址; [318]所述处理单元 830,还可以用于根据所述第一信息上报消息生成第一信息下发消 息, 所述第一信息下发消息中携带由所述控制设备构造的 ARP 请求报文, 以及所述
ARP请求报文的出端口的端口号, 所述 ARP请求报文中包含所述 IP地址;
[319]所述接收单元 820,可以具体用于接收交换设备发送的包含 ARP应答报文的第二 信息上报消息,其中,所述第二信息上报消息为所述交换设备将所述 ARP应答报文与 所述第一流表项的匹配项进行匹配后,按照获得的所述第一流表项的动作集向所述控 制设备发送的消息,所述第二信息上报消息中封装了所述 ARP应答报文, 以及所述交 换设备上接收到所述 ARP应答报文的入端口的端口号,所述 ARP应答报文为接收到所 述 ARP请求报文的外部设备确定所述 ARP请求报文中的 IP地址与自身 IP地址一致后 向所述交换设备发送的报文, 所述 ARP应答报文中包含所述外部设备的 MAC地址。
[320]所述处理单元 830可以包括 (图 8中未示出): [321]第二封装子单元, 用于根据所述第二信息上报消息封装第二信息下发消息, 所 述第二信息下发消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地址的对 应关系;
[322]第二下发子单元, 用于将所述第二信息下发消息发送到所述交换设备, 以使所 述交换设备根据所述第二信息下发消息获得用于向所述外部设备转发 IP报文的第二 流表项, 其中, 所述第二流表项的匹配项为报文类型是 IP报文, 且目的 IP地址为所 述外部设备的 IP地址, 所述第二流表项的动作集为将所述外部设备的 MAC地址封装 到 IP报文中, 且通过所述入端口转发所述 IP报文。
[323]参见图 9, 为本发明控制设备的另一个实施例框图:
[324]该控制设备包括: 网络接口 910、 收发器 920和处理器 930。
[325]其中, 所述网络接口 910, 用于连接交换设备;
[326]所述收发器 920, 用于接收交换设备发送的包含 ARP报文的信息上报消息;
[327]所述处理器 930,用于根据所述信息上报消息,通过所述收发器向所述交换设备 发送包含 MAC地址的信息下发消息, 以使所述交换设备根据所述 MAC地址实现 ARP。
[328]可选的,所述处理器 930,还可以用于通过所述收发器 920向所述交换设备下发 用于转发 ARP报文的第一流表项, 所述第一流表项的匹配项为报文类型是 ARP报文, 动作集为转发 ARP报文至所述控制设备。
[329]在一个可选的实现方式中:
[330]所述收发器 920,可以具体用于接收交换设备发送的包含 ARP请求报文的信息上 报消息,其中,所述信息上报消息为所述交换设备将所述 ARP请求报文与所述第一流 表项的匹配项进行匹配后,按照获得的所述第一流表项的动作集向所述控制设备发送 的消息,所述信息上报消息中封装了所述 ARP请求报文, 以及所述交换设备上接收到 所述 ARP请求报文的入端口的端口号, 所述 ARP请求报文中包含所述交换设备的 IP 地址;
[331]所述处理器 930,可以具体用于解封装所述信息上报消息,获得所述 ARP请求报 文中包含的所述交换设备的 IP地址和所述入端口的端口号, 查找保存的地址对应关 系后获得与所述交换设备的 IP 地址和所述入端口的端口号对应的所述交换设备的 MAC地址, 将根据所述交换设备的 MAC地址构造的 ARP应答报文, 以及所述 ARP应答 报文的出端口的端口号封装到信息下发消息中,并通过所述收发器将所述信息下发消 息发送到所述交换设备, 以使所述交换设备解封装所述信息下发消息获得所述 ARP 应答报文和所述出端口的端口号后, 从所述出端口发送所述 ARP应答报文。 [332]在另一个可选的实现方式中:
[333]所述收发器 920, 还可以用于接接收所述交换设备发送的请求所述外部设备的
MAC地址的第一信息上报消息, 所述第一信息上报消息为所述交换设备接收到 IP报 文后向所述控制设备发送的消息, 所述第一信息上报消息用于请求与所述 IP报文中 包含的 IP地址对应的 MAC地址; [334]所述处理器 930, 还可以用于根据所述第一信息上报消息生成第一信息下发消 息, 所述第一信息下发消息中携带由所述控制设备构造的 ARP 请求报文, 以及所述 ARP请求报文的出端口的端口号, 所述 ARP请求报文中包含所述 IP地址;
[335]所述收发器 920,可以具体用于接收交换设备发送的包含 ARP应答报文的第二信 息上报消息,其中,所述第二信息上报消息为所述交换设备将所述 ARP应答报文与所 述第一流表项的匹配项进行匹配后,按照获得的所述第一流表项的动作集向所述控制 设备发送的消息,所述第二信息上报消息中封装了所述 ARP应答报文, 以及所述交换 设备上接收到所述 ARP应答报文的入端口的端口号,所述 ARP应答报文为接收到所述 ARP请求报文的外部设备确定所述 ARP请求报文中的 IP地址与自身 IP地址一致后向
所述交换设备发送的报文, 所述 ARP应答报文中包含所述外部设备的 MAC地址;
[336]所述处理器 930,可以具体用于根据所述第二信息上报消息封装第二信息下发消 息, 所述第二信息下发消息中包含所述外部设备的 IP地址与所述外部设备的 MAC地 址的对应关系, 并通过所述收发器将所述第二信息下发消息发送到所述交换设备, 以 使所述交换设备根据所述第二信息下发消息获得用于向所述外部设备转发 IP报文的 第二流表项, 其中, 所述第二流表项的匹配项为报文类型是 IP报文, 且目的 IP地址 为所述外部设备的 IP地址, 所述第二流表项的动作集为将所述外部设备的 MAC地址 封装到 IP报文中, 且通过所述入端口转发所述 IP报文。
[337]由上述实施例可见, 交换设备接收 ARP报文, 将包含 ARP报文的信息上报消息 发送到控制设备,控制设备根据信息上报消息向交换设备发送包含 MAC地址的信息下 发消息,交换设备根据信息下发消息中包含的 MAC地址实现 ARP。应用本发明实施例, 虽然 SDN网络中的交换设备不具有支持 ARP协议的能力, 但是交换设备可以通过将 ARP报文上报到控制设备, 通过控制设备的协助实现与外部设备之间的 ARP交互, 从 而提高了 SDN网络的数据传输能力。 [338]本领域的技术人员可以清楚地了解到本发明实施例中的技术可借助软件加必需 的通用硬件平台的方式来实现。基于这样的理解,本发明实施例中的技术方案本质上 或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产 品可以存储在存储介质中, 如 R0M/RAM、 磁碟、 光盘等, 包括若干指令用以使得一台 计算机设备(可以是个人计算机, 服务器, 或者网络设备等)执行本发明各个实施例 或者实施例的某些部分所述的方法。
[339]本说明书中的各个实施例均采用递进的方式描述, 各个实施例之间相同相似的 部分互相参见即可, 每个实施例重点说明的都是与其他实施例的不同之处。尤其, 对 于系统实施例而言, 由于其基本相似于方法实施例, 所以描述的比较简单, 相关之处 参见方法实施例的部分说明即可。 [340]以上所述的本发明实施方式, 并不构成对本发明保护范围的限定。 任何在本发 明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明的保护范围 之内。