《软件定义网络中学习源MAC地址的方法和装置.pdf》由会员分享,可在线阅读,更多相关《软件定义网络中学习源MAC地址的方法和装置.pdf(17页完整版)》请在专利查询网上搜索。
1、(10)申请公布号 CN 104320340 A (43)申请公布日 2015.01.28 CN 104320340 A (21)申请号 201410562781.3 (22)申请日 2014.10.21 H04L 12/741(2013.01) H04L 29/12(2006.01) (71)申请人 杭州华三通信技术有限公司 地址 310052 浙江省杭州市滨江区长河路 466 号 (72)发明人 严进波 宋小恒 王锋 (74)专利代理机构 北京德琦知识产权代理有限 公司 11018 代理人 张驰 宋志强 (54) 发明名称 软件定义网络中学习源 MAC 地址的方法和装 置 (57) 摘要 。
2、本发明提出一种软件定义网络 (SDN) 中学习 源MAC地址的方法和装置。 该方法包括在所述SDN 中的 SDN 控制器执行的如下步骤 : 向 SDN 交换机 下发第一流表项, 所述第一流表项的匹配项包括 源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 从 SDN 交换机接收由于源 MAC 地址不匹配而不能 命中所述第一流表项的二层报文, 并学习所述二 层报文中的源 MAC 地址。 (51)Int.Cl. 权利要求书 2 页 说明书 8 页 附图 6 页 (19)中华人民共和国国家知识产权局 (12)发明专利申请 权利要求书2页 说明书8页 附图6页 (10)申请公布号 CN 1。
3、04320340 A CN 104320340 A 1/2 页 2 1. 一种软件定义网络 SDN 中学习源 MAC 地址的方法, 其特征在于, 该方法包括在所述 SDN 中的 SDN 控制器执行的如下步骤 : 向 SDN 交换机下发第一流表项, 所述第一流表项的匹配项包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 从 SDN 交换机接收由于源 MAC 地址不匹配而不能命中所述第一流表项的二层报文, 并 学习所述二层报文中的源 MAC 地址。 2. 根据权利要求 1 所述的方法, 其特征在于, 该方法进一步包括 : 向 SDN 交换机下发第二流表项, 所述第二流表项的匹配项包。
4、括所述学习到的源 MAC 地 址和目的 MAC 地址, 动作为指定出端口。 3. 根据权利要求 1 所述的方法, 其特征在于, 所述第一流表项为包括第一级流表项和 第二级流表项的二级联动流表项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作为 写 Meta 值以及查询第二级流表项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定出端口。 4. 根据权利要求 1 所述的方法, 其特征在于, 所述第一流表项的匹配项进一步包括虚 拟局域网标识 VLAN ID。 5. 根据权利要求 3 所述的方法, 其特征在于, 所述第一级流表项和第二级流表项的匹 配项进一。
5、步包括 VLAN ID。 6. 一种软件定义网络 SDN 中学习源 MAC 地址的方法, 其特征在于, 该方法包括在所述 SDN 中的 SDN 交换机执行的如下步骤 : 从 SDN 控制器接收第一流表项, 所述第一流表项的匹配项包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 向 SDN 控制器发送由于源 MAC 地址不匹配而不能命中所述第一流表项的二层报文, 以 由 SDN 控制器学习所述二层报文中的源 MAC 地址。 7. 根据权利要求 6 所述的方法, 其特征在于, 该方法进一步包括 : 从 SDN 控制器接收第二流表项, 所述第二流表项的匹配项包括所述学习到的源 MAC。
6、 地 址和目的 MAC 地址, 动作为指定出端口。 8. 根据权利要求 6 所述的方法, 其特征在于, 所述第一流表项为包括第一级流表项和 第二级流表项的二级联动流表项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作为 写 Meta 值以及查询第二级流表项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定出端口。 9. 根据权利要求 6 所述的方法, 其特征在于, 所述第一流表项的匹配项进一步包括虚 拟局域网标识 VLAN ID。 10. 根据权利要求 8 所述的方法, 其特征在于, 所述第一级流表项和第二级流表项的匹 配项进一步包括 VLAN ID。
7、。 11. 一种软件定义网络 SDN 中学习源 MAC 地址的装置, 其特征在于, 该装置包括在所述 SDN 中的 SDN 控制器运行的如下模块 : 第一流表项下发模块, 用于向 SDN 交换机下发第一流表项, 所述第一流表项的匹配项 包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 源 MAC 地址学习模块, 用于从 SDN 交换机接收由于源 MAC 地址不匹配而不能命中所述 权 利 要 求 书 CN 104320340 A 2 2/2 页 3 第一流表项的二层报文, 并学习所述二层报文中的源 MAC 地址。 12. 根据权利要求 11 所述的装置, 其特征在于, 该装置进一。
8、步包括 : 第二流表项下发模块, 用于向 SDN 交换机下发第二流表项, 所述第二流表项的匹配项 包括所述学习到的源 MAC 地址和目的 MAC 地址, 动作为指定出端口。 13. 根据权利要求 11 所述的装置, 其特征在于, 所述第一流表项为包括第一级流表项 和第二级流表项的二级联动流表项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作 为写 Meta 值以及查询第二级流表项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定出端口。 14. 一种软件定义网络 SDN 中学习源 MAC 地址的装置, 其特征在于, 该装置包括在所述 SDN 中的 S。
9、DN 交换机运行的如下模块 : 第一流表项接收模块, 用于从 SDN 控制器接收第一流表项, 所述第一流表项的匹配项 包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 二层报文发送模块, 用于向 SDN 控制器发送由于源 MAC 地址不匹配而不能命中所述第 一流表项的二层报文, 以由 SDN 控制器学习所述二层报文中的源 MAC 地址。 15. 根据权利要求 14 所述的装置, 其特征在于, 还包括 : 第二流表项接收模块, 用于从 SDN 控制器接收第二流表项, 所述第二流表项的匹配项 包括所述学习到的源 MAC 地址和目的 MAC 地址, 动作为指定出端口。 16. 根据权。
10、利要求 14 所述的装置, 其特征在于, 所述第一流表项为包括第一级流表项 和第二级流表项的二级联动流表项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作 为写 Meta 值以及查询第二级流表项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定出端口。 权 利 要 求 书 CN 104320340 A 3 1/8 页 4 软件定义网络中学习源 MAC 地址的方法和装置 技术领域 0001 本发明属于软件定义网络 (Software Defi ned Network, SDN) 技术领域, 特别是一 种 SDN 中学习源媒体访问控制 (Media Ac。
11、cess Control, MAC) 地址的方法和装置。 背景技术 0002 SDN 技术通过将网络设备的控制平面与数据平面分离, 从而实现网络流量的灵活 控制。相应地, SDN 架构中包括 SDN 控制器和 SDN 交换机, 其中 : SDN 控制器和 SDN 交换机之 间通过 SDN 管理通道进行通信, SDN 控制器根据用户的配置或者动态运行的协议生成流表 下发到 SDN 交换机, SDN 交换机依据 SDN 控制器下发的流表进行报文处理。 0003 在现有的 SDN 架构中, 对于 SDN 交换机的二层报文转发, 流表只匹配目的 MAC 地 址和虚拟局域网标识 (Virtual Loc。
12、al Area Network ID, VLAN ID)。当 SDN 交换机接收 到源 MAC 地址未知、 目的 MAC 地址已知的报文时, 报文将命中流表并被转发出去, 而并不将 报文上送 SDN 控制器, 这就导致 SDN 控制器无法学习到该未知的源 MAC 地址。当有访问该 未知的源 MAC 地址的需求时, SDN 控制器需要在网络内主动泛洪地址解析协议 (Address Resolution Protocol, ARP) 报文以获取该未知的源 MAC 地址, 从而消耗系统资源并降低转 发效率。 发明内容 0004 有鉴于此, 本发明提出一种SDN中学习源MAC地址的方法和装置, 从而节。
13、约系统资 源。 0005 本发明实施方式的技术方案如下 : 0006 本发明实施方式的一方面提供了一种 SDN 中学习源 MAC 地址的方法, 该方法包括 在所述 SND 中的 SDN 控制器执行的如下步骤 : 0007 向 SDN 交换机下发第一流表项, 所述第一流表项的匹配项包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 0008 从 SDN 交换机接收由于源 MAC 地址不匹配而不能命中所述第一流表项的二层报 文, 并学习所述二层报文中的源 MAC 地址。 0009 优选地, 该方法进一步包括 : 0010 向 SDN 交换机下发第二流表项, 所述第二流表项的匹配项包括。
14、所述学习到的源 MAC 地址和目的 MAC 地址, 动作为指定出端口。 0011 优选地, 所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表 项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作为写 Meta 值以及查询第二级流表 项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定出端口。 0012 优选地, 所述第一流表项的匹配项进一步包括虚拟局域网标识 (VLAN ID)。 0013 优选地, 所述第一级流表项和第二级流表项的匹配项进一步包括 VLAN ID。 0014 本发明实施方式的一方面提供了一种 SDN 网络中学习源 MAC 。
15、地址的方法, 该方法 说 明 书 CN 104320340 A 4 2/8 页 5 包括在所述 SDN 中的 SDN 交换机执行的如下步骤 : 0015 从 SDN 控制器接收第一流表项, 所述第一流表项的匹配项包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 0016 向 SDN 控制器发送由于源 MAC 地址不匹配而不能命中所述第一流表项的二层报 文, 以由 SDN 控制器学习所述二层报文中的源 MAC 地址。 0017 优选地, 该方法进一步包括 : 0018 从 SDN 控制器接收第二流表项, 所述第二流表项的匹配项包括所述学习到的源 MAC 地址和目的 MAC 地址,。
16、 动作为指定出端口。 0019 优选地, 所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表 项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作为写 Meta 值以及查询第二级流表 项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定出端口。 0020 优选地, 所述第一流表项的匹配项进一步包括 VLAN ID。 0021 优选地, 所述第一级流表项和第二级流表项的匹配项进一步包括 VLAN ID。 0022 本发明实施方式的一方面提供了一种 SDN 中学习源 MAC 地址的装置, 该装置包括 在所述 SDN 中的 SDN 控制器运行的如下。
17、模块 : 0023 第一流表项下发模块, 用于向 SDN 交换机下发第一流表项, 所述第一流表项的匹 配项包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 0024 源 MAC 地址学习模块, 用于从 SDN 交换机接收由于源 MAC 地址不匹配而不能命中 所述第一流表项的二层报文, 并学习所述二层报文中的源 MAC 地址。 0025 优选地, 该装置进一步包括 : 0026 第二流表项下发模块, 用于向 SDN 交换机下发第二流表项, 所述第二流表项的匹 配项包括所述学习到的源 MAC 地址和目的 MAC 地址, 动作为指定出端口。 0027 优选地, 所述第一流表项为包括第。
18、一级流表项和第二级流表项的二级联动流表 项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作为写 Meta 值以及查询第二级流表 项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定出端口。 0028 本发明实施方式的一方面提供了一种 SDN 中学习源 MAC 地址的装置, 该装置包括 在所述 SDN 中的 SDN 交换机运行的如下模块 : 0029 第一流表项接收模块, 用于从 SDN 控制器接收第一流表项, 所述第一流表项的匹 配项包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 0030 二层报文发送模块, 用于向 SDN 控制器。
19、发送由于源 MAC 地址不匹配而不能命中所 述第一流表项的二层报文, 以由 SDN 控制器学习所述二层报文中的源 MAC 地址。 0031 优选地, 还包括 : 0032 第二流表项接收模块, 用于从 SDN 控制器接收第二流表项, 所述第二流表项的匹 配项包括所述学习到的源 MAC 地址和目的 MAC 地址, 动作为指定出端口。 0033 优选地, 所述第一流表项为包括第一级流表项和第二级流表项的二级联动流表 项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作为写 Meta 值以及查询第二级流表 项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定。
20、出端口。 0034 在本发明中, 向SDN交换机下发第一流表项, 第一流表项的匹配项包括源MAC地址 和目的MAC地址, 动作为指定出端口 ; 从SDN交换机接收由于源MAC地址不匹配而不能命中 说 明 书 CN 104320340 A 5 3/8 页 6 第一流表项的二层报文, 并学习二层报文中的源 MAC 地址。由此可见, SDN 控制器向 SDN 交 换机下发的第一流表项中, 匹配项不仅包括目的 MAC 地址, 还包括源 MAC 地址。只有当目的 MAC 地址和源 MAC 地址都匹配时, SDN 交换机下才发报文。当源 MAC 地址不匹配时, SDN 交 换机将二层报文转发到 SDN 控。
21、制器, SDN 控制器可以学习该二层报文的源 MAC 地址, 从而解 决现有技术中仅关注目的 MAC 地址而导致 SDN 控制器无法学习未知源主机的问题, 并且减 少了 SDN 控制器的 ARP 请求过程, 节约了系统资源。 附图说明 0035 图 1 为基于目的 MAC 地址方式的二层转发的示范性示意图 ; 0036 图 2 为本发明实施方式在 SDN 控制器侧学习源 MAC 地址的方法流程图 ; 0037 图 3 为本发明实施方式在 SDN 交换机侧学习源 MAC 地址的方法流程图 ; 0038 图 4 为本发明实施方式的二层转发示意图 ; 0039 图 5 为图 4 所示网络架构的二层转。
22、发流程图 ; 0040 图 6 为本发明实施方式的二级联动流表项的处理示意图 ; 0041 图 7 为本发明实施方式 SDN 控制器侧学习源 MAC 地址的装置结构图 ; 0042 图 8 为本发明实施方式 SDN 交换机侧学习源 MAC 地址的装置结构图。 具体实施方式 0043 为使本发明的目的、 技术方案和优点更加清楚, 下面结合附图对本发明作进一步 的详细描述。 0044 对于 SDN 交换机的二层转发, SDN 控制器下发到 SDN 交换机的流表项的匹配项通 常只包括目的 MAC 地址和 VLAN ID, 这种二层报文转发方式称为基于目的 MAC 地址方式的 二层转发。在这种转发方式。
23、中, 当 SDN 交换机接收到源 MAC 地址未知、 目的 MAC 地址已知的 报文时, 报文将命中流表项并被转发出去, 并不将报文上送 SDN 控制器, 导致 SDN 控制器无 法学到该未知的源 MAC 地址, 从而其他主机也不能通过流表方式将报文转发到该未知的源 MAC 地址对应的主机上。 0045 图 1 为基于目的 MAC 地址方式的二层转发的示范性示意图。 0046 如图 1 所示, SDN 网络包含 SDN 控制器及 3 个 SDN 交换机, 分别为 SW1、 SW2 和 SW3。 SW1与主机PC10连接 ; SW2与主机PC20连接 ; SW3与主机PC30连接, 而且PC10。
24、、 PC20和PC30 同属一个 VLAN 中。 0047 PC10 发出访问 PC30 的二层报文, 该二层报文经过 SW1 上送 SDN 控制器, SDN 控制 器学习 PC10 的 MAC 地址并予以记录, 然后 SDN 控制器在本地查找 PC30 的 MAC 地址, 发现没 有查找到, 则将二层报文广播泛洪到 SW3, 从而将二层报文发送到 PC30。 0048 PC30收到二层报文后, 向PC10发出回应报文。 回应报文首先到达SW3, SW3将回应 报文上送 SDN 控制器。SDN 控制器学习 PC30 的 MAC 地址并予以记录, 然后在本地查找 PC10 的 MAC 地址, 此。
25、时可以查找到 PC10 的 MAC 地址, SDN 控制器向 SW1、 SW2 和 SW3 下发由 SW3 通往 PC10 的整条路径 (SW3-SW2-SW1) 的流表项, 该流表项的匹配项为 VLAN ID 和目 的 MAC 地址 ( 即 PC10 的 MAC 地址 ), 并把报文发向 PC10。 0049 PC10 后续再发出访问 PC30 的二层报文, 该二层报文经过 SW1 上送到 SDN 控制器。 说 明 书 CN 104320340 A 6 4/8 页 7 SDN 控制器发现已经学习有 PC10 的 MAC 地址, 接着在本地查找 PC30 的 MAC 地址, 发现可以 查找到 。
26、PC30 的 MAC 地址, SDN 控制器向 SW1、 SW2 和 SW3 下发由 SW1 通往 PC30 的整条路径 (SW1-SW2-SW3) 的流表项, 该流表项的匹配项为 VLAN ID 和目的 MAC 地址 ( 即 PC30 的 MAC 地址 ), 并把二层报文发向 PC30。 0050 至此, PC10 和 PC30 间已经建立了基于目的 MAC 方式通往彼此的流表项。 0051 如果 PC20 发出访问 PC30 的报文, 报文到达 SW2。SW2 发现自身存在有通往 PC30 的流表项, 直接命中流表项并转发该报文, 此时该报文不上送到 SDN 控制器, 因此 SDN 控制 。
27、器无法学习 PC20 的 MAC 地址。这样, 当后续 PC30、 PC10 访问 PC20 时, 需要 SDN 控制器主动 泛洪 ARP 请求以学习 PC20 的 MAC 地址, 从而显著消耗系统资源, 并且降低了转发效率。 0052 本发明实施方式提出学习 MAC 地址的方案, 可以解决在基于目的 MAC 地址方式中 所存在的无法学习未知源 MAC 地址的缺点。 0053 图 2 为本发明实施方式在 SDN 控制器侧学习源 MAC 地址的方法流程图。 0054 如图 2 所示, 该方法包括在 SDN 控制器执行的如下步骤 : 0055 步骤 201 : 向 SDN 交换机下发第一流表项, 。
28、第一流表项的匹配项包括源 MAC 地址和 目的 MAC 地址, 动作为指定出端口。 0056 在这里, 不同于现有技术中向 SDN 交换机下发的流表项的匹配项中只包含目的 MAC 地址 ( 有时候匹配项还可能包括 VLAN ID), 本发明实施方式向 SDN 交换机下发的第一 流表项的匹配项中除了目的 MAC 地址之外, 进一步包括源 MAC 地址。因此, 不同于现有技术 中当目的 MAC 地址匹配时即命中流表项 ( 当匹配项包括 VLAN ID 时还需要命中 VLAN ID), 本发明实施方式需要源 MAC 地址和目的 MAC 地址都匹配时, 才认定命中第一流表项。 0057 在一个实施方式。
29、中, 第一流表项的匹配项进一步包括VLAN ID。 此时, 源MAC地址、 目的 MAC 地址和 VLAN ID 都匹配时, 才认定命中第一流表项。 0058 步骤 202 : 从 SDN 交换机接收由于源 MAC 地址不匹配而不能命中第一流表项的二 层报文, 并学习二层报文中的源 MAC 地址。 0059 当 SDN 交换机期望发送二层报文时, 如果因二层报文的源 MAC 地址与第一流表项 中的源 MAC 地址不匹配而导致第一流表项无法命中, 即使二层报文的目的 MAC 与第一流表 项中的目的 MAC 地址相匹配, SDN 交换机依然不转发二层报文, 而是将二层报文发送到 SDN 控制器, 。
30、从而 SDN 控制器可以学习到二层报文中的源 MAC 地址。 0060 SDN 交换机的流表通常包括 MAC-IP 流表和扩展 (Extensibility) 流表。MAC-IP 流表包括的硬件资源较多, 而扩展流表包括的硬件资源相对较少。对于 SDN 交换机的二层 转发, MAC-IP 流表是固定资源, 通常只能匹配源 MAC 地址或目的 MAC 中的一项。因此, 通常 将第一流表项实施为可以同时匹配源 MAC 地址和目的 MAC 的扩展流表的流表项。 0061 可选地, 第一流表项也可以不同时匹配源MAC地址和目的MAC地址, 而是采用多级 流表项联动的匹配方式。 0062 在一个实施方式。
31、中, 第一流表项具体实施为包含第一级流表项和第二级流表项的 二级联动流表项, 其中第一级流表项的匹配项为源 MAC 地址, 动作为写 Meta 值以及查询第 二级流表项 ; 第二级流表项的匹配项为 Meta 值和目的 MAC 地址, 动作为指定出端口。 0063 具体地, 第一级流表项可以实施为 MAC-IP 流表, 第二级流表项可以实施为扩展流 表。该 MAC-IP 流表的匹配项为 VLAN ID+ 源 MAC 地址, 动作为在 MetaData 字段中写 Meta 说 明 书 CN 104320340 A 7 5/8 页 8 值 (meta vlue) 和查询 ( 函数动作为 Goto T。
32、able) 对应于扩展流表标识 (Extensibility Table ID) 的扩展流表, Goto Table 的输出值为该扩展流表的 ID。示范性地, meta vlue 等 于 0x1。而且, 扩展流表的匹配项为 meta vlue+VLAN ID+ 目的 MAC 地址, 动作为指定出端 口。 0064 在 SDN 交换机的二层报文转发过程中, 首先执行 MAC-IP 流表匹配查询, 当报文的 VLAN ID和源MAC地址完全匹配之后, 在MetaData字段中写入Meta值(比如, 0x1), 然后执 行对应于扩展流表 ID 的扩展流表。该扩展流表的匹配项为 meta vlue( 。
33、即 0x1)+VLAN ID+ 目的 MAC 地址。意味着 : 当 Meta 值为 0x1, 而且报文的 VLAN ID 和目的 MAC 地址完全匹配 之后, 扩展流表的匹配项得到满足, 此时动作为指定出端口。 在多级流表项联动的匹配方式 中, 第二级的扩展流表可以共用, 从而还节约了流表资源。 0065 当 SDN 交换机期望转发的二层报文来自未知源 MAC 地址时, 则 MAC-IP 流表无法匹 配, 也就不能执行扩展流表。此时, SDN 交换机向 SDN 控制器上送该来自未知源 MAC 地址的 二层报文, 从而由 SDN 控制器学习该二层报文中的源 MAC 地址。 0066 由此可见, 。
34、本发明实施方式中, 首先关注源 MAC 地址是否匹配, 只有源 MAC 匹配的 情况下目的 MAC 地址的匹配才生效。对于源 MAC 地址未匹配的情况下, 即使目的 MAC 地址 匹配, 也不会命中第一流表项, 报文仍然会上送 SDN 控制器进行源 MAC 地址学习。 0067 SDN控制器接收到由SDN交换机上报的源MAC地址未知的二层报文后, 可以从二层 报文中学习源 MAC 地址。SDN 控制器学习到源 MAC 地址之后, 如果在本地能够查找到目的 MAC 地址, 则直接下发包括该学习到的源 MAC 地址和查找到的目的 MAC 地址的流表项, 如果 在本地不能够查找到目的MAC地址, 可。
35、以对SDN交换机上报的二层报文进行广播泛洪, 从而 学习到目的 MAC 地址, 然后再下发包括该学习到的源 MAC 地址和目的 MAC 地址的流表项。 0068 比如 : SDN控制器可以向SDN交换机下发包括该学习到的源MAC地址和目的MAC地 址的第二流表项, 第二流表项的匹配项包括学习到的源MAC地址和目的MAC地址, 动作为指 定出端口。第二流表项与第一流表项具有相同的结构和功能, 匹配项同样包括源 MAC 地址 ( 即学习到的源 MAC 地址 ) 和目的 MAC 地址。这样, 当 SDN 交换机接收到二层报文时, 如果 二层报文的源 MAC 地址和目的 MAC 地址与第二流表项中的匹。
36、配项分别匹配, 通过指定出端 口转发报文。类似地, 第二流表项的匹配项进一步还可以包括 VLAN ID。 0069 SDN 交换机接收到第一流表项和第二流表项之后, 可以将第一流表项和第二流表 项整合到统一的流表中。 0070 以上详细描述了在 SDN 控制器侧学习源 MAC 地址的技术方案。下面描述在 SDN 交 换机侧学习源 MAC 地址的技术方案。 0071 图 3 为本发明实施方式在 SDN 交换机侧学习源 MAC 地址的方法流程图。 0072 如图 3 所示, 该方法包括 : 0073 步骤 301 : 从 SDN 控制器接收第一流表项, 第一流表项的匹配项包括源 MAC 地址和 目。
37、的 MAC 地址, 动作为指定出端口。 0074 步骤 302 : 向 SDN 控制器发送由于源 MAC 地址不匹配而不能命中第一流表项的二 层报文, 以由 SDN 控制器学习二层报文中的源 MAC 地址。 0075 在一个实施方式中, 该方法进一步包括 : 0076 从 SDN 控制器接收第二流表项, 第二流表项的匹配项包括学习到的源 MAC 地址和 说 明 书 CN 104320340 A 8 6/8 页 9 目的 MAC 地址, 动作为指定出端口。第二流表项与第一流表项具有相同的结构和功能, 匹配 项同样包括源 MAC 地址 ( 即学习到的源 MAC 地址 ) 和目的 MAC 地址。这样。
38、, 当 SDN 交换机 接收到二层报文时, 如果二层报文的源 MAC 地址和目的 MAC 地址与第二流表项中的匹配项 分别匹配, 通过指定出端口转发报文。 类似地, 第二流表项的匹配项进一步还可以包括VLAN ID。 0077 在一个实施方式中, 第一流表项为包括第一级流表项和第二级流表项的二级联动 流表项, 其中第一级流表项的匹配项为源 MAC 地址, 动作为写 Meta 值以及查询第二级流表 项 ; 第二级流表项的匹配项为 Meta 值和目的 MAC 地址, 动作为指定出端口。 0078 在一个实施方式中, 第一流表项的匹配项进一步包括 VLAN ID。在一个实施方式 中, 第一级流表项和。
39、第二级流表项的匹配项进一步包括 VLAN ID。 0079 下面结合实例更详细地描述本发明。图 4 为本发明实施方式的二层转发示意图。 0080 如图 4 所示, SDN 网络包含 SDN 控制器及 3 个 SDN 交换机, 分别为 SW1、 SW2 和 SW3。 SW1与主机PC10连接 ; SW2与主机PC20连接 ; SW3与主机PC30连接, 而且PC10、 PC20和PC30 同属一个 VLAN 中。 0081 图 5 为图 4 所示网络架构的二层转发流程图。 0082 如图 5 所示, 该方法包括 : 0083 步骤 501 : PC10 发出访问 PC30 的二层报文, 该二层报。
40、文经过 SW1 上送到 SDN 控制 器, SDN 控制器学习 PC10 的 MAC 地址并予以记录, 然后 SDN 控制器在本地查找 PC30 的 MAC 地址, 发现没有查找到, 则将二层报文广播泛洪到 SW3, 从而二层报文发送到 PC30。 0084 步骤 502 : PC30 收到二层报文后, 向 PC10 发出回应报文。回应报文首先到达 SW3, SW3 将回应报文上送 SDN 控制器, SDN 控制器学习 PC30 的 MAC 地址并予以记录, 然后在本地 查找 PC10 的 MAC 地址, 此时可以查找到 PC10 的 MAC 地址。SDN 控制器向 SW1、 SW2 和 SW。
41、3 下 发由 SW3 通往 PC10 的整条路径 (SW3-SW2-SW1) 的第一流表项。 0085 具体地, 第一流表项为包括第一级流表项和第二级流表项的二级联动流表项。示 范性地, 图 6 为本发明实施方式的二级联动流表项的联动处理示意图。在图 6 中, 第一级流 表项实施为 MAC-IP 流表, 第二级流表项可以实施为扩展流表。第一级流表项的匹配项为 VLAN ID 和源 MAC 地址 (PC30 的 MAC 地址 ), 动作为写 Meta 值 (meta vlue) 和查询扩展流 表 (Goto Table), 比如 meta vlue 0x1, Goto Table 的值为扩展流表。
42、的 ID。扩展流表的 匹配项为 Meta 值 +VLAN ID+ 目的 MAC 地址 (PC10 的 MAC 地址 ), 动作为指定通往目的 MAC 地址 (PC10 的 MAC 地址 ) 的对应出端口, 并把报文发向 PC10。 0086 步骤 503 : PC10 后续再发出访问 PC30 的二层报文, 该二层报文经过 SW1 上送 SDN 控制器。SDN 控制器发现已经学习有 PC10 的 MAC 地址, 在本地查找 PC30 的 MAC 地址, 此时 发现可以查找到 PC30 的 MAC 地址, 因此 SDN 控制器向 SW1、 SW2 和 SW3 下发由 SW1 通往 PC30 的整。
43、条路径 (SW1-SW2-SW3) 的第一流表项。 0087 具体地, 第一流表项为包括第一级流表项和第二级流表项的二级联动流表项。示 范性地, 图 6 为本发明实施方式的二级联动流表项的联动处理示意图。在图 6 中, 第一级流 表项具体为 MAC-IP 流表, 第二级流表项可以实施为扩展流表。第一级流表项的匹配项为 VLAN ID 和源 MAC 地址 (PC10 的 MAC 地址 ), 动作为写 Meta 值 (meta vlue) 和查询扩展流 表 (Goto Table), 比如 meta vlue 0x1, Goto Table 的值为扩展流表的 ID。扩展流表的 说 明 书 CN 1。
44、04320340 A 9 7/8 页 10 匹配项为 Meta 值 +VLAN ID+ 目的 MAC 地址 (PC30 的 MAC 地址 ), 动作为指定通往目的 MAC 地址 (PC30 的 MAC 地址 ) 的对应出端口, 并把报文发向 PC30。 0088 至此, PC10和PC30间已经建立了通往彼此的流表。 此时, 如果PC20发出访问PC30 的报文, 报文首先到达SW2。 SW2发现报文不匹配之前下发的第一流表项, 将报文上送到SDN 控制器, SDN 控制器可以学习到 PC20 的 MAC 地址并予以记录。 0089 然后, 当后续PC20访问PC10和PC30时, SDN控制。
45、器可以基于所学习到PC20的MAC 地址直接下发流表, 不再需要主动泛洪 ARP 请求以学习 PC20 的 MAC 地址, 因此显著节约了 系统资源, 并且提高了转发效率。 0090 比如, SDN 控制器学习到 PC20 的 MAC 地址之后, 可以向 SW2 和 SW3 下发由 PC20 通 往 PC30 的整条路径 (SW2-SW3) 的第二流表项, 该第二流表项的匹配项包括学习到的源 MAC 地址 (PC20 的 MAC 地址 ) 和目的 MAC 地址 (PC30 的 MAC 地址 ), 动作为指定出端口。第 二流表项与第一流表项具有相同的结构和功能。举例 : 当 PC20 发出访问 。
46、PC30 的二层报文 时, SW2 发现该二层报文匹配第二流表项, 因此将二层报文转发到 SW3, SW3 再将二层报文发 送到 PC30。 0091 基于上述分析, 本发明实施方式还提出了一种 SDN 中学习源 MAC 地址的装置。 0092 图 7 为本发明实施方式 SDN 控制器侧学习源 MAC 地址的装置结构图。该装置 700 包括在 SDN 中的 SDN 控制器运行的如下模块 : 0093 第一流表项下发模块 701, 用于向 SDN 交换机下发第一流表项, 第一流表项的匹配 项包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 0094 源MAC地址学习模块702, 。
47、用于从SDN交换机接收由于源MAC地址不匹配而不能命 中第一流表项的二层报文, 并学习二层报文中的源 MAC 地址。 0095 在一个实施方式中 : 该装置 700 进一步包括 : 0096 第二流表项下发模块 703, 用于向 SDN 交换机下发第二流表项, 第二流表项的匹配 项包括学习到的源 MAC 地址和目的 MAC 地址, 动作为指定出端口。 0097 优选地, 第一流表项为包括第一级流表项和第二级流表项的二级联动流表项, 其 中第一级流表项的匹配项为源 MAC 地址, 动作为写 Meta 值以及查询第二级流表项 ; 第二级 流表项的匹配项为 Meta 值和目的 MAC 地址, 动作为。
48、指定出端口。 0098 基于上述分析, 本发明实施方式还提出了一种 SDN 中学习源 MAC 地址的装置。 0099 图 8 为本发明实施方式 SDN 控制器侧学习源 MAC 地址的装置结构图。该装置 800 包括在 SDN 中的 SDN 交换机运行的如下模块 : 0100 第一流表项接收模块 801, 用于从 SDN 控制器接收第一流表项, 第一流表项的匹配 项包括源 MAC 地址和目的 MAC 地址, 动作为指定出端口 ; 0101 二层报文发送模块802, 用于向SDN控制器发送由于源MAC地址不匹配而不能命中 第一流表项的二层报文, 以由 SDN 控制器学习二层报文中的源 MAC 地址。
49、。 0102 在一个实施方式中, 装置 800 还包括 : 0103 第二流表项接收模块 803, 用于从 SDN 控制器接收第二流表项, 第二流表项的匹配 项包括学习到的源 MAC 地址和目的 MAC 地址, 动作为指定出端口。 0104 在一个实施方式中, 第一流表项为包括第一级流表项和第二级流表项的二级联动 流表项, 其中第一级流表项的匹配项为所述源 MAC 地址, 动作为写 Meta 值以及查询第二级 说 明 书 CN 104320340 A 10 8/8 页 11 流表项 ; 第二级流表项的匹配项为所述 Meta 值和所述目的 MAC 地址, 动作为指定出端口。 0105 在本发明中, 向SDN交换机下发第一流表项, 第一流表项的匹配项包括源MAC地址 和目的MAC地址, 动作为指定出端口 ; 从SDN交换机接收由于源MAC地址不匹配而不能命中 第一流。