一种报文转发方法及设备的制作方法
【专利摘要】本发明公开了一种报文转发方法及设备,网关节点通过一可达大二层网络中的所有节点设备的广播树,通告本节点设备配置的虚MAC地址及所属VLAN;非网关节点设备通过广播树接收到各个网关节点通告的该网关节点配置的虚MAC地址以及所属VLAN后,生成对应的第一MAC地址转发表项;当非网关节点接收到目的MAC地址为网关节点的虚MAC地址的数据报文时,根据该目的MAC地址在第一MAC地址转发表项中的匹配表项,直接转发该数据报文而不进行大二层网络协议封装;网关节点接收到该数据报文,且确定该数据报文的目的MAC地址为自身虚MAC地址时,根据该数据报文的目的IP地址,查找路由表转发该数据报文。在本发明中,实现了基于大二层网络的L3单播流量转发。
【专利说明】一种报文转发方法及设备
【技术领域】
[0001] 本发明涉及通信领域的组播技术,尤其涉及一种报文转发方法及设备。
【背景技术】
[0002] 传统的三层数据中心架构中采用STP (Spanning Tree Protocol,生成树协议)来 优化客户端到服务器的路径和支持连接冗余。由于STP的收敛性能等原因,一般情况下STP 的网络规模不会超过100台交换机。同时由于STP需要阻塞冗余设备和链路,也降低了网 络资源带宽利用率。传统的基于STP备份设备和链路方案已经不能满足数据中心规模、带 宽的需求,并且STP协议几秒至几分钟的故障收敛时间,也不能满足数据中心的可靠性要 求。因此,需要能够有新的技术,在满足二层网络规模的同时,也能够充分利用冗余设备和 链路,提升链路利用率,而且数据中心的故障收敛时间能够降低到亚秒甚至毫秒级。
[0003] 虚拟化能够有效地提高服务器的利用率,降低能源消耗,降低客户的运维成本,所 以虚拟化技术得到了极大的发展。虚拟化给数据中心带来的不仅是服务器利用率的提高, 还有网络架构的变化。虚拟机(Virtual Machine, VM)迁移技术可以使数据中心的计算资 源得到灵活的调配,进一步提高虚拟机资源的利用率。但是虚拟机迁移要求虚拟机迁移前 后的IP和MAC (Media Access Control,介质访问控制)地址不变,这就需要虚拟机迁移前 后的网络处于同一个二层域内部。由于客户要求虚拟机迁移的范围越来越大,甚至是跨越 不同地域、不同机房之间的迁移,所以使得数据中心二层网络的范围越来越大,甚至出现了 大规模二层网络(下文中简称为大二层网络)这一新领域专题。
[0004] 隧道技术能够实现覆盖多个接入交换机和核心交换机的数据中心内的大二层网 络。隧道技术的典型代表是 TRILL(TRansparent Interconnection of Lots of Links,多 链路透明互联)和SPB (Shortest Path Bridging,最短路径桥)技术,两者均是通过借用 IS-IS (Intermediate System to Intermediate System,中间系统到中间系统)路由协议 的计算和转发模式,实现二层网络的大规模扩展。这些技术目前正在标准化过程中,同时传 统交换机不仅需要软件升级,还需要硬件支持。
[0005] 现有大二层组网技术中,对于大二层环境下的跨VLAN的三层转发,还没有比较好 的解决办法,限制了大二层组网的实际部署。
[0006] 以Trill组网为例,当前Trill标准相关的RFC刚发布不久,配套的芯片尚不成 熟,相关芯片在I v pipeline中处理完Trill后,就不能再做L3转发;执彳了完L3转发后, 就不能再做Trill处理。
[0007] 针对该问题,现有技术中有如下两种解决方式:
[0008] 方式一、采用代理转发
[0009] Trill板卡接收Trill报文,完成Trill终结后,若需要做L3转发,则将报文发送 给L3代理板进行处理转发;
[0010] L3代理板完成正常L3代理转发后,若有外部接收者,则将报文发送给外网;若 Trill域内有接收者,报文需要再次转发到Trill板卡的专用回环口(Loopback端口),报文 回环口回环后完成Tr i 11封装,根据封装后的Tr i 11报文查找Tr i 11单播表,从相应的端口 发送给Trill网络,其处理流程示意图可以参见图1。
[0011] 方式二、Trill/L3分离处理
[0012] Trill域外增加一层专门的设备来执行L3转发的功能。Trill的终结点在core 节点,core节点以上采用不带封装的native以太网报文转发,上行到L3设备处进行L3转 发处理。
[0013] 此外,现有大二层网络技术中,对于L3转发,目前存在的网关备份协议,存在固有 的分担不均的问题。对于大规模的云计算数据中心(core节点大于4个),当数据中心内部 跨VLAN的L3流量较大时,会形成转发瓶颈。
[0014] 针对该问题,现有技术中,对于控制平面,通过建立备份组,并选举一个master, 客户端的所有ARP请求都只能由master回应,master根据一定的负载分担算法,为不同的 ARP请求回应不同的网关ARP信息,这样不同的的主机获得的ARP回应不同。
[0015] 对于数据平面,不同主机封装的报文由于网关ARP不同,被发送给了不同的网关, 从而实现不同主机流量在不同L3网关出的分担。
[0016] 在实现本发明的过程中,发明人发现现有技术中至少存在以下问题:
[0017] 对于现有大二层环境下的跨VLAN的三层转发问题的解决方式中,方式一需要集 中式处理,性能较差,且代理配置复杂,需要专门的代理板卡或回环端口,造成资源浪费;方 式二中需要额外的L3设备,设备层次增加,增加了成本,同时,Trill终结点和L3网关中间 的链路存在很多的环路,需要考虑环路避免技术,且L3转发处理的性能还是较低。
[0018] 对于现有网关备份协议分担不均问题的解决方式中,对于同一个客户端发送的不 同数据流,无法在不同L3网关之间分担,造成分担不均。
【发明内容】
[0019] 本发明实施例提供一种报文转发方法及设备,用以在大二层网络中实现L3单播 流量转发。
[0020] 为了达到以上目的,本发明实施例提供了一种报文转发方法,应用于多个节点设 备基于大二层网络协议组建的大二层网络中,所述多个节点设备包括作为网关设备的网关 节点和作为接入设备的非网关节点,同一 VLAN的各网关节点配置有相同的虚IP地址和虚 MAC地址,该方法包括:
[0021] 非网关节点通过一可达所述大二层网络中的所有节点设备的广播树,接收各个网 关节点通告的该网关节点配置的虚MAC地址以及所属VLAN信息;
[0022] 非网关节点根据大二层网络协议和接收到的同一虚MAC地址对应的各个网关节 点的大二层网络标识,计算去往同一 VLAN的各网关节点的单播路由,进而生成所述虚MAC 地址对应的第一 MAC地址转发表项,其中,所述第一 MAC地址转发表项中的VLAN为所述虚 MAC所属VLAN、目的MAC地址为所述虚MAC地址、出接口为所述单播路由中代价最小的路由 对应的出接口;
[0023] 非网关节点接收到目的MAC地址为一网关节点的虚MAC地址的数据报文时,根据 该数据报文的目的MAC地址,查找匹配的第一 MAC地址转发表项,并根据查找到的匹配表 项,直接转发所述数据报文而不进行大二层网络协议封装。
[0024] 其中,该方法还包括:
[0025] 在非网关节点与网关节点之间的链路中断时,非网关节点按照更新后的拓扑,重 新计算去往同一 VLAN的各网关节点的单播路由,并更新重新计算得到的单播路由,更新第 一 MAC地址转发表项的出接口;
[0026] 在网关节点宕机时,非网关节点更新该网关节点配置的虚MAC地址对应的第一 MAC地址转发表项的出接口。
[0027] 本发明实施例还提供了一种报文转发方法,应用于多个节点设备基于大二层网络 协议组建的大二层网络中,所述多个节点设备包括作为网关节点的网关节点和作为接入设 备的非网关节点,同一 VLAN的各网关节点配置有相同的虚IP地址和虚MAC地址,该方法包 括:
[0028] 网关节点通过一可达所述大二层网络中的所有节点设备的广播树,通告本节点设 备配置的虚MAC地址以及所属VLAN信息,以使非网关节点设备根据大二层网络协议和接收 到的同一虚MAC地址对应的各个网关节点的大二层网络标识,计算去往同一 VLAN的各网关 节点的单播路由,进而生成所述虚MAC地址对应的第一 MAC地址转发表项,其中,所述第一 MAC地址转发表项中的VLAN为所述虚MAC所属VLAN、目的MAC地址为所述虚MAC地址、出 接口为所述单播路由中代价最小的路由对应的出接口;
[0029] 网关节点接收到目的MAC地址为自身虚MAC地址的数据报文,所述数据报文是非 网关节点根据报文的目的MC地址,匹配所述第一 MC地址转发表项后直接转发的且没有 进行大二层网络协议封装;
[0030] 所述网关节点在判断出所述数据报文的目的MAC地址为自身虚MAC地址时,根据 所述数据报文的目的IP地址,查找路由表转发所述数据报文。
[0031] 其中,该方法还包括:
[0032] 各个节点设备通过所述广播树,将新学习到的本地MAC地址以及所属VLAN通告 给其他节点设备,所述本地MAC地址包括从本节点设备连接的用户网络侧学习到的MAC地 址;
[0033] 网关节点从所述广播树上接收其他节点设备通告的所述其他节点设备新学习到 的本地MAC地址以及所属VLAN,并根据预先基于该大二层网络协议生成的大二层网络转发 表项,生成所述其他节点设备的本地MAC地址对应的第二MAC地址转发表项,所述第二MAC 地址转发表项中的目的MAC地址为所述其他节点设备的本地MAC地址,出接口为所述大二 层网络转发表项中去往所述其他节点的出接口;
[0034] 所述网关节点接收到目的MC地址不是自身端口 MC地址或所述虚MC地址的单 播数据报文后,根据所述单播数据报文的目的MAC地址及所属VLAN,在所述第二MAC地址转 发表项中进行匹配,并通过匹配表项的出接口直接转发所述单播数据报文而不进行大二层 网络协议封装。
[0035] 其中,所述网关节点还与所述大二层网络外部的路由设备连接;
[0036] 在各个节点设备上设置VLAN的广播域范围,其中,所述广播域范围包括该节点设 备上允许该VLAN通过的用户侧端口和该节点设备上的位于该VLAN裁剪树上的大二层网络 侧接口,所述裁剪树是基于VLAN对所述广播树进行分发树的剪枝得到的;
[0037] 网关节点在接收到所述路由设备发送的数据报文时,查找匹配所述数据报文的目 的IP地址的ARP表项,并根据查找到的ARP表项的目的MAC地址以及出接口,直接转发所 述数据报文而不进行大二层网络协议封装。
[0038] 其中,若网关节点未查找到匹配所述数据报文的目的IP地址的ARP表项,所述方 法还包括:
[0039] 所述网关节点在该数据报文对应的VLAN的广播域内,直接广播发送用于请求所 述数据报文的目的IP地址对应的MAC地址的第一 ARP请求报文而不进行大二层网络协议 封装,所述第一ARP请求报文的发送端sender IP地址是所述网关节点的发送端口 IP地址, 源MAC地址及发送端MAC地址是所述网关节点的发送端口 MAC地址;
[0040] 所述网关节点根据接收到的针对第一 ARP请求报文的第一 ARP应答报文,建立所 述数据报文的目的IP地址对应的ARP表项,并根据该建立的ARP表项,转发所述数据报文 而不进行大二层网络协议封装。
[0041] 其中,同一 VLAN中的一个网关节点被选举为该VLAN的主网关节点,该方法还包 括:
[0042] 网关节点接收到主机发送的用于请求网关节点的MAC地址的第二ARP请求报文, 且确定自身为对应VLAN的主网关节点时,生成第二ARP应答报文,该第二ARP应答报文的 目的MAC地址为所述主机的MAC地址,源MAC地址和发送端sender MAC地址均为所述网关 节点的虚MAC地址,sender IP地址为所述网关节点的虚IP地址,以使所述主机学习并建 立所述网关节点的虚IP地址与虚MAC地址之间的关联关系;
[0043] 所述网关节点根据所述ARP应答报文的目的MAC地址,在第二MAC地址转发表项 中进行匹配,并通过匹配表项的出接口直接转发所述ARP应答报文而不进行大二层网络协 议封装。
[0044] 其中,所述主网关节点的选举包括:
[0045] 同一 VLAN中的各个网关节点在该VLAN内广播携带有各自端口 IP地址、端口 MAC 地址、虚IP及虚MAC地址的邻居发现及主网关节点选举协议报文;
[0046] 同一 VLAN中的各个网关节点接收其他网关节点发送的所述协议报文,选举端口 IP地址和/或端口 MAC地址满足预设规则的网关节点,作为所述主网关节点。
[0047] 其中,还包括:
[0048] 在非网关节点与网关节点之间的链路中断时,该网关节点更新达到该非网关节点 下所有主机的ARP表项的出接口;
[0049] 在非网关节点发生宕机down时,网关节点删除该非网关节点下的所有主机的ARP 表项;
[0050] VLAN内的主网关节点down时,该VLAN内其他网关节点重新选举该VLAN内的主网 关节点;
[0051] 网关节点在发现外部路由器不可达时,退出本网关节点所在VLAN的主网关节点 的选举,以触发其他网关节点重新选举主网关节点,禁用自身所有的三层接口,并通过所述 广播树通告虚MAC地址的撤销消息,以使得非网关节点设备更新所述虚MAC地址对应的所 述第一 MAC地址转发表项的出接口。
[0052] 本发明实施例还提供一种网络设备,应用于多个节点设备基于大二层网络协议组 建的大二层网络中,所述多个节点设备包括作为网关设备的网关节点和作为接入设备的非 网关节点,同一 VLAN的各网关节点配置有相同的虚IP地址和虚MAC地址,所述网络设备作 为非网关节点应用于所述大二层网络中,该网络设备包括:
[0053] 地址管理模块,用于通过一可达所述大二层网络中的所有节点设备的广播树,接 收各个网关节点通告的该网关节点配置的虚MAC地址以及所属VLAN信息;
[0054] 表项维护模块,用于根据大二层网络协议和所述地址管理模块接收到的同一虚 MAC地址对应的各个网关节点的大二层网络标识,计算去往同一 VLAN的各网关节点的单播 路由,进而生成所述虚MAC地址对应的第一 MAC地址转发表项,其中,所述第一 MAC地址转 发表项中的VLAN为所述虚MAC所属VLAN、目的MAC地址为所述虚MAC地址、出接口为所述 单播路由中代价最小的路由对应的出接口;
[0055] 报文转发模块,用于当所述网络设备接收到目的MAC地址为一网关节点的虚MAC 地址的数据报文时,根据该数据报文的目的MAC地址,查找匹配的第一 MAC地址转发表项, 并根据查找到的匹配表项,直接转发所述数据报文而不进行大二层网络协议封装。
[0056] 其中,所述表项维护模块还用于,
[0057] 在所述网络设备与网关节点之间的链路中断时,按照更新后的拓扑,重新计算去 往同一 VLAN的各网关节点的单播路由,并更新重新计算得到的单播路由,更新第一 MC地 址转发表项的出接口;
[0058] 在网关节点宕机时,更新该网关节点配置的虚MAC地址对应的第一 MAC地址转发 表项的出接口。
[0059] 本发明实施例还提供了一种网络设备,应用于多个节点设备基于大二层网络协议 组建的大二层网络中,所述多个节点设备包括作为网关设备的网关节点和作为接入设备的 非网关节点,同一 VLAN的各网关节点配置有相同的虚IP地址和虚MC地址,所述网络设备 作为网关节点应用于所述大二层网络中,该网络设备包括:
[0060] 地址管理模块,用于通过一可达所述大二层网络中的所有节点设备的广播树,通 告本节点设备配置的虚MAC地址以及所属VLAN信息,以使非网关节点设备根据大二层网 络协议和接收到的同一虚MAC地址对应的各个网关节点的大二层网络标识,计算去往同一 VLAN的各网关节点的单播路由,进而生成所述虚MAC地址对应的第一 MAC地址转发表项,其 中,所述第一 MAC地址转发表项中的VLAN为所述虚MAC所属VLAN、目的MAC地址为所述虚 MAC地址、出接口为所述单播路由中代价最小的路由对应的出接口;
[0061] 报文转发模块,用于当所述网络设备接收到目的MAC地址为自身虚MAC地址的数 据报文,且判断出所述数据报文的目的MAC地址为自身虚MAC地址时,根据所述数据报文的 目的IP地址,查找路由表转发所述数据报文;其中,所述数据报文是非网关节点根据报文 的目的MAC地址,匹配所述第一 MAC地址转发表项后直接转发的且没有进行大二层网络协 议封装。
[0062] 其中,该网络设备还包括:表项维护模块;
[0063] 所述地址管理模块还用于,从所述广播树上接收其他节点设备通告的所述其他节 点设备新学习到的本地MAC地址以及所属VLAN ;所述本地MAC地址包括从所述其他节点设 备连接的用户网络侧学习到的MAC地址;
[0064] 表项维护模块,用于根据预先基于该大二层网络协议生成的大二层网络转发表 项,生成所述其他节点设备的本地MAC地址对应的第二MAC地址转发表项,所述第二MAC地 址转发表项中的目的MAC地址为所述其他节点设备的本地MAC地址,出接口为所述大二层 网络转发表项中去往所述其他节点设备的出接口;
[0065] 所述报文转发模块还用于,当所述网络设备接收到目的MAC地址不是自身端口 MC地址或所述虚MC地址的单播数据报文后,根据所述单播数据报文的目的MC地址及所 属VLAN,在所述第二MAC地址转发表项中进行匹配,并通过匹配表项的出接口直接转发所 述单播数据报文而不进行大二层网络协议封装。
[0066] 其中,所述网络设备还与所述大二层网络外部的路由设备连接;
[0067] 所述大二层网络中各节点设备上设置有VLAN的广播域范围,其中,所述广播域范 围包括该节点设备上允许该VLAN通过的用户侧端口和该节点设备上的位于该VLAN裁剪树 上的大二层网络侧接口,所述裁剪树是基于VLAN对所述广播树进行分发树的剪枝得到的; [0068] 所述报文转发模块还用于,在接收到所述路由设备发送的数据报文时,查找匹配 所述数据报文的目的IP地址的ARP表项,并根据查找到的ARP表项的目的MAC地址以及出 接口,直接转发所述数据报文而不进行大二层网络协议封装。
[0069] 其中,所述报文转发模块还用于,若未查找到匹配所述数据报文的目的IP地址的 ARP表项,在该数据报文对应的VLAN的广播域内,直接广播发送用于请求所述数据报文的 目的IP地址对应的MAC地址的第一 ARP请求报文而不进行大二层网络协议封装,所述第一 ARP请求报文的发送端sender IP地址是所述网络设备的发送端口 IP地址,源MAC地址及 发送端MAC地址是所述网络设备的发送端口 MAC地址;
[0070] 所述表项维护模块还用于,当所述网络设备接收到根据接收到针对第一 ARP请求 报文的第一 ARP应答报文时,建立所述数据报文的目的IP地址对应的ARP表项;
[0071] 所述报文转发模块还用于,根据所述表项维护模块建立的ARP表项,转发所述数 据报文而不进行大二层网络协议封装。
[0072] 其中,同一 VLAN中的一个网关节点被选举为该VLAN的主网关节点,
[0073] 所述报文转发模块还用于,当接收到主机发送的用于请求网关节点的MAC地址的 第二ARP请求报文,且确定所述网络设备为对应VLAN的主网关节点时,生成第二ARP应答 报文,该第二ARP应答报文的目的MAC地址为所述主机的MAC地址,源MAC地址和发送端 sender MAC地址均为所述网络设备的虚MAC地址,sender IP地址为所述网络设备的虚IP 地址,以使所述主机学习并建立所述网络设备的虚IP地址与虚MAC地址之间的关联关系; 根据所述ARP应答报文的目的MAC地址,在第二MAC地址转发表项中进行匹配,并通过匹配 表项的出接口直接转发所述ARP应答报文而不进行大二层网络协议封装。
[0074] 其中,所述网络设备还包括:
[0075] 选举模块,用于在所述网络设备所属的VLAN内广播携带有所述网络设备自身端 口 IP地址、端口 MAC地址、虚IP及虚MAC地址的邻居发现及主网关节点选举协议报文;接 收所述VLAN内其他网关节点发送的所述协议报文,选举端口 IP地址和/或端口 MAC地址 满足预设规则的网关节点,作为所述主网关节点。
[0076] 其中,所述表项维护模块还用于,在非网关节点与所述网络设备之间的链路中断 时,更新达到该非网关节点下所有主机的ARP表项的出接口;在非网关节点发生岩机down 时,删除该非网关节点下的所有主机的ARP表项;
[0077] 所述地址管理模块还用于,在所述网络设备发现外部路由器不可达时,禁用自身 所有的三层接口,并通过所述广播树通告虚MAC地址的撤销消息,以使得非网关节点设备 更新所述虚MAC地址对应的所述第一 MAC地址转发表项的出接口;
[0078] 所述选举模块还用于,在所述网络设备发现外部路由器不可达时,退出本网关节 点所在VLAN的主网关节点的选举,以触发其他网关节点重新选举主网关节点。
[0079] 本发明上述实施例中,网关节点通过一可达大二层网络中的所有节点设备的广播 树,通告本节点设备配置的虚MAC地址以及所属VLAN ;非网关节点设备通过该广播树接收 到各个网关节点通告的该网关节点配置的虚MAC地址以及所属VLAN后,根据大二层网络协 议和接收到的同一虚MAC地址对应的各个网关节点的大二层网络标识,计算去往同一 VLAN 的各网关节点的单播路由,进而生成该虚MAC地址对应的第一 MAC地址转发表项;当非网 关节点接收到数据报文,且确定该数据报文的目的MAC地址为网关节点的虚MAC地址时,该 非网关节点根据该数据报文的目的MAC地址,在第一 MAC地址转发表中查询匹配的表项,并 根据查询到的匹配表项,转发该数据报文而不进行大二层网络协议封装;网关节点接收到 该数据报文,且确定该数据报文的目的MAC地址为自身虚MAC地址时,网关节点根据该数据 报文的目的IP地址,查找路由表转发该数据报文,实现了基于大二层网络的L3单播流量转 发。
【专利附图】
【附图说明】
[0080] 图1为现有技术中一种采用代理转发解决L3转发和Trill处理不能共存问题的 方式的示意图;
[0081] 图2为本发明实施例提供的一种Trill组网中VLAN广播域的示意图;
[0082] 图3为本发明实施例提供的一种Trill组网的架构示意图;
[0083] 图4为本发明实施例提供的一种三层单播报文转发方法的流程示意图;
[0084] 图5?8为本发明实施例提供的Trill组网内故障场景示意图;
[0085] 图9为本发明实施例提供的一种网络设备的结构示意图;
[0086] 图10为本发明实施例提供的另一种网络设备的结构示意图。
【具体实施方式】
[0087] 本发明实施例提供了一种报文转发的技术方案,应用于多个节点设备基于大二层 网络协议组建的大二层网络中,该多个节点设备包括作为网关节点的网关节点和作为接入 设备的非网关节点,同一 VLAN的各网关节点都配置有该VLAN的三层(L3)接口,同一 VLAN 的各网关节点的三层接口具有互不相同的IP地址和MAC地址,即实IP地址和实MAC地址。 本发明实施例中,针对同一 VLAN的各网关节点的该三层接口,还配置相同的虚IP地址和虚 MAC地址,即同一 VLAN下的不同网关节点,具有相同的虚IP地址和虚MAC地址。
[0088] 本发明实施例中,网关节点可以通过一可达大二层网络中的所有节点设备的广播 树,通告本节点设备配置的虚MAC地址以及所属VLAN。这里,通告的虚MAC地址是三层(L3) 接口虚IP地址对应的虚MAC地址。
[0089] 非网关节点设备通过该广播树接收到各个网关节点通告的该网关节点配置的虚 MAC地址以及所属VLAN后,可以根据大二层网络协议和接收到的同一虚MAC地址对应的各 个网关节点的大二层网络标识,计算去往同一 VLAN的各网关节点的单播路由,进而生成该 虚MAC地址对应的MAC地址转发表项(以下称为第一 MAC地址转发表项),其中,该第一 MAC 地址转发表项中的VLAN为该MAC地址所属VLAN,目的MAC地址为该虚MAC地址、出接口为 该单播路由中代价最小的路由对应的出接口;
[0090] 当非网关节点接收到数据报文,且确定该数据报文的目的MAC地址为网关节点的 虚MAC地址时,该非网关节点可以根据该数据报文的目的MAC地址,在第一 MAC地址转发表 中查询匹配的表项,并根据查询到的匹配表项,直接转发该数据报文而不进行大二层网络 协议封装;
[0091] 网关节点接收到该数据报文,且确定该数据报文的目的MAC地址为自身虚MAC地 址时,网关节点根据该数据报文的目的IP地址,查找路由表转发该数据报文。
[0092] 其中,当非网关节点根据大二层网络协议和接收到的同一虚MAC地址对应的各 个网关节点的大二层网络标识,计算得到的去往同一 VLAN的单播路由中存在多条代价 (cost)最小的路由时,则需要形成等价路由,相应地,该非网关节点生成的该虚MAC地址对 应的第一 MAC地址转发表项中的出接口为该等价路由中各路由对应的出接口形成的聚合 端口。
[0093] 相应地,非网关节点在转发目的MAC地址为上述虚MAC地址的数据报文时,由于根 据该虚MAC地址查找到的匹配的第一 MAC地址转发表项的出接口为聚合端口,非网关节点 可以通过hash (哈希)算法从该聚合端口中选择一个端口作为该数据报文转发的出接口。
[0094] 在本发明实施例中,各个节点设备还需要通过上述广播树,将新学习到的本地MC 地址以及所属VLAN通告给其他节点设备,该本地MAC地址包括从本节点设备连接的用户网 络侧学习到的MAC地址;
[0095] 网关节点可以从该广播树接收其他节点设备通过的该其他节点设备新学习到的 本地MC地址以及所属VLAN,并根据预先基于该大二层网络协议生成的大二层网络转发表 项,生成该其他节点设备的本地MAC地址对应的MAC地址转发表项(以下称为第二MAC地址 转发表项),该第二MAC地址转发表项中的目的MAC地址为上述其他节点设备的本地MAC地 址,出接口为该大二层网络转发表项中去往该其他节点的出接口。
[0096] 当网关节点设备接收到单播数据报文,且确定该单播数据报文不是自身端口 MAC 地址或虚MAC地址时,该网关节点可以根据该单播数据报文的目的MAC地址及所属VLAN,在 上述第二MC地址转发表项中进行匹配,并通过匹配表项的出接口直接转发该单播数据报 文而不进行大二层网络协议。
[0097] 进一步地,在本发明实施例中,上述网关节点还与大二层网络外部的路由设备连 接,当网关节点接收到该路由设备发送的数据报文时,在数据报文的目的MAC地址为自身 MAC地址时,检查数据报文的目的IP地址,若发现该目的IP地址在自己的直联网段,则可以 根据该数据报文的目的IP地址查找匹配的ARP表项,并根据查找到的ARP表项的目的MAC 地址以及出接口,直接转发该数据报文而不进行大二层网络协议封装。
[0098] 其中,当网关节点根据接收到的数据报文的目的IP地址未查找到匹配该数据报 文的目的IP地址的ARP表项时,该网关节点需要在该数据报文对应的VLAN的广播域内,直 接广播发送用于请求该数据报文的目的IP地址对应的MAC地址的ARP请求报文(以下称为 第一 ARP请求报文)而不进行大二层网络封装,该第一 ARP请求报文的sender (发送端)IP 地址为该网关节点的三层发送端口的实IP地址,源MAC地址及sender MAC地址为该网关 节点的三层发送端口的实MAC地址。
[0099] 当该网关节点接收到针对第一 ARP请求报文的ARP应答报文(以下称为第一 ARP 应答报文)时,该网关节点可以根据该第一 ARP应答报文建立该数据报文的目的IP地址对 应的ARP表项,并根据该建立的ARP表项,直接转发该数据报文而不进行大二层网络协议封 装。
[0100] 其中,网关节点在VLAN的广播域内广播ARP请求报文时,需要根据预先设置的 VLAN的广播域范围进行广播。
[0101] 具体的,在本发明实施例中,可以在各个节点设备上设置VLAN的广播域范围,该 广播域范围包括该节点设备上允许该VLAN通过的用户侧端口和该节点设备上的位置该 VLAN裁剪树上的大二层网络侧接口,该裁剪树是基于VLAN对上述广播树进行分发树的剪 枝得到的。
[0102] 进一步地,在本发明实施例中,同一 VLAN中的各网关节点还需要进行主网关节点 的选举,以选举一个网关节点作为该VLAN的主网关节点;当网关节点接收到主机发送的用 于请求网关节点的MAC地址的ARP请求报文(以下称为第二ARP请求报文)时,只有主网关 节点进行响应。
[0103] 具体的,在本发明实施例中,同一 VLAN中的各个网关节点可以在该VLAN内广播携 带有自身三层端口的实IP地址、三层端口的实MAC地址、虚IP地址及虚MAC地址的邻居发 现及主网关节点选举协议报文;当同一 VLAN中的各个网关节点接收到其他网关节点发送 的上述协议报文,选举端口实IP地址和/或端口实MAC地址满足预设规则的网关节点,作 为主网关节点。例如,可以选举端口 IP地址+端口 MC地址最大的网关节点作为主网关节 点,或者,选举端口 IP地址或端口 MAC地址最大的网关节点作为主网关节点。
[0104] 当网关节点接收到主机发送的用于请求网关的MAC地址的第二ARP请求报文时, 网关节点需要确定自身是否为对应VLAN的主网关节点,若确定自身为对应VLAN的主网关 节点,则生成ARP应答报文(以下称为第二ARP应答报文),该第二ARP应答报文的目的MAC 地址为该主机的MAC地址,源MAC地址和sender MAC地址均为该网关节点的虚MAC地址, sender IP地址为所述网关节点的虚IP地址,以使主机学习并建立网关节点的虚IP地址与 虚MAC地址之间的关联关系;若确定自身不是对应VLAN的主网关节点,则该网关节点不对 该ARP应答报文进行响应。
[0105] 其中,作为主网关节点的网关节点生成ARP应答报文后,根据该ARP应答报文的目 的MAC地址,在第二MAC地址转发表项中进行匹配,并通过匹配表项的出接口直接转发该 ARP应答报文而不进行大二层网络协议封装。
[0106] 需要注意的是,通过以上描述可以看出,在本发明实施例提供的技术方案中,非网 关节点向网关节点转发数据报文、大二层网络节点设备对ARP请求报文、ARP应答报文的发 送/转发,采取的均为不进行大二层封装,而直接查询匹配MAC地址转发表项的方式进行, 因此,为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面对大二层网 络中二层单播/广播流量转发的技术方案进行详细描述。
[0107] 在大二层网络的控制平面,各个节点设备通过一可达大二层网络中所有节点设备 的广播树,将新学习到的本地MAC地址以及所属VLAN通告给其他节点设备(其中,需要注意 的是,在本发明实施例中,对于作为网关节点的节点设备,其通过上述广播树通告给其他节 点设备的MC地址为该网关节点配置的虚MC地址);节点设备从该广播树接收其他节点设 备通告的其他节点设备的本地MC地址,并通过预先基于该大二层网络协议生成的大二层 网络转发表项,生成原始MAC地址转发表项(在本发明实施例中,为第一 MC地址转发表项 和第二MC地址转发表项);在大二层网络的数据平面,节点设备接收到单播数据报文后,若 该单播数据报文的目的MAC地址不是自身的MAC地址,则根据该单播数据报文的目的MAC 地址及所属VLAN,在该原始MAC地址转发表项中进行匹配,并通过匹配表项的出接口直接 转发该单播数据报文而不进行大二层网络协议封装。
[0108] 具体的,当一节点设备接收到其他节点设备通告的该其他节点设备新学习到的第 一 MAC地址以及所属的第一 VLAN时,根据该其他节点设备的大二层网络标识,查询预先基 于大二层网络协议生成的大二层网络转发表,确定该其他节点设备对应的出接口,进而生 成该第一 MAC地址对应的原始MAC地址转发表项。
[0109] 其中,节点设备确定其他节点设备对应的出接口具体可以通过以下方式实现: [0110] 节点设备可以从大二层网络转发表中,查找到该其他节点设备的大二层网络标识 对应的转发表项;若查找的转发表项中仅包括一个出接口,则将查找到的出接口,作为其他 节点设备对应的出接口;若查找到的转发表项中包括两个以上的出接口,则将该两个以上 的出接口形成一个聚合端口,并将该聚合端口作为其他节点设备对应的出接口。其中,上 述转发表项中包括的两个以上的出接口可以是以等价多路径的形式存在。
[0111] 相应地,当节点设备需要通过匹配表项的出接口转发单播数据报文时,若匹配表 项的出接口为聚合端口,则可以通过HASH (哈希)算法选择该聚合端口的一个成员端口,并 通过所选择的成员端口,直接转发该单播数据报文而不进行大二层网络协议封装。
[0112] 其中,需要注意的是,在本发明实施例中,由于网关节点通过广播树通告的是虚 MAC地址,且同一 VLAN内各网关节点配置的虚MAC地址相同,因此,非网关节点设备在生成 该虚MAC地址对应的MAC地址转发表项时,需要根据大二层网络协议和接收到的同一虚MAC 地址对应的各个网关节点的大二层网络标识,计算去往同一 VLAN的各网关节点的单播路 由,进而生成所述虚MAC地址对应的第一 MAC地址转发表项。
[0113] 进一步地,在大二层网络中二层单播/广播流量转发的技术方案中,当节点设备 的本地MAC地址老化时,节点设备也需要将发生老化的本地MAC地址以及所属VLAN通告给 其他节点设备,由其他节点设备删除发生老化的MAC地址以及所属VLAN所对应的转发表 项。
[0114] 具体的,各个节点设备可以通过广播树,将发生老化的本地MAC地址以及所属 VLAN通告给其他节点设备;当节点设备从广播树上接收到其他节点设备处发生老化的MC 地址(第二MAC地址)以及所属VLAN时,从原始MAC地址转发表中,删除该第二MAC地址以 及所属VLAN所对应的转发表项。
[0115] 本发明实施例中,节点设备在MAC地址老化时,可以通过通告报文在节点之间进 行MAC地址同步。实际应用中有可能出现MAC地址假老化的情形。所谓MAC地址假老化, 是指终端数据发送报文后,间隔一段较长时间(大于MAC地址老化时间)而不再发送报文,然 后再次发送报文,反复如此,导致该终端的MAC地址在节点设备的端口上被学习、老化、再 学习、再老化……,其中每一次老化或学习过程都会引发通告报文的发送。
[0116] 为了降低MAC地址频繁假老化所引发的通告报文发送数量,减轻节点设备的CPU 处理负担,本实施例中各个节点设备可以针对自身不同的接口与VLAN的组合,分别配置一 对应的MAC地址池,用于维护在该对应接口上学习到的归属于对应VLAN的本地MAC地址;
[0117] 各个节点设备在新学习到本地MAC地址,例如在MAC转发表项中记录新学习到的 MAC地址并建立对应的老化定时器后,若对应MAC地址池中未包含有该新学习到的本地MAC 地址时,则将新学习到的本地MAC地址增加到MAC地址池中。在本地MAC地址发生老化的 一段预设时间后,才将老化的本地MAC地址从对应MAC地址池中删除,也就是说,在MAC转 发表项中的MAC地址因老化定时器超时而老化后,再过一段预设时间,才将该MAC地址从对 应MAC地址池中删除。
[0118] 相应的,各个节点设备,进一步在MAC地址池中增加了新学习到的本地MAC地址 时,通过所述广播树,将新学习到的本地MAC地址以及所属VLAN通告给其他节点设备;以 及,在MAC地址池中删除了老化的本地MAC地址时,通过所述广播树,将老化的本地MAC地 址以及所属VLAN通告给其他节点设备。也就是说,MAC转发表项中的MAC地址老化并不会 直接触发通告报文的发送,而是等待该MAC地址从MAC地址池中删除后,才去发送对应的通 告报文。
[0119] 与之相对应的,在本发明实施例中,非网关节点也可以按照上述大二层网络中二 层单播/广播流量转发的技术方案中的MAC地址老化方式对本地MC地址进行老化处理。
[0120] 对于广播报文,在大二层网络中二层单播/广播流量转发的技术方案中,可以采 用按照芯片vlan广播域范围(bitmap)直接广播的方式进行转发。
[0121] 具体的,可以在各节点设备上设置VLAN的广播域范围,其中,该广播域范围包括 该节点设备上允许该VLAN通过的用户侧端口和该节点设备上的位于该VLAN裁剪树上的 大二层网络侧接口,该VLAN裁剪树是基于VLAN对该广播树进行分发树的剪枝得到的;
[0122] 节点设备接收到待广播数据报文后,确定该待广播数据报文所属VLAN,并在该 VLAN的广播域范围所包括的除接收端口外的其他端口上,直接转发该待广播数据报文而不 进行大二层网络协议封装,其中,该待广播数据报文包括未知单播报文、广播数据报文和未 知组播报文。
[0123] 与之相对应的,在本发明实施例中,对于广播报文的处理,可以采用上述大二层网 络中二层单播/广播流量转发的技术方案中进行广播流量转发方式对本发明实施例中的 广播报文进行转发。
[0124] 以数据中心内的Trill技术为例,在本发明实施例中,可以根据trill域的vlan 裁剪树来设置硬件芯片中各个vlan的广播域范围,用户侧端口根据端口上允许通过的 vlan来对应设置;对于trill 口,不能根据允许通过的vlan来设置,而是需要根据trill计 算出来的vlan裁剪树来对应设置(需要去掉设备上端口允许通过的vlan和该vlan的广播 bitmap内包含该端口的一致性检查)。
[0125] 对于不同的vlan,可以使用不同的vlan裁剪树来实现广播流量的负载分担。如 图2所示,实线部分的链路为vlanl的广播域,按照此链路拓扑,在nickname-1上,设置 vlanl的bitmap包括用户侧端口 P5 (nickname-1到该VLAN内下挂主机的端口)和上行口 P1_P4(分另Ij为 nickname_l 至Ij nickname_gl ?nickname_g4 的端□);在 nickname_gl 上,设 置 vlanl 的 bitmap 仅包括 P1、P4 和 Pn (分另Ij为 nickname-gl 至Ij nickname-l、nickname_4、 nickname-n的端口),在nickname-4上仅包括用户侧端口 P5 (nickname-4到该VLAN内下 挂主机的端口)及上行口 Pl (nickname-4到nickname-gl的端口);在nickname-n上,仅包 括用户侧端口 P5 (nickname-n到该VLAN内下挂主机的端口)和上行口 Pl (nickname-n到 nickname-gl的端口)。对于vlan2在各RB上的bitmap的设置原理同vlanl (虚线部分的 链路),在此不再重复描述。对于从nickname-1用户侧端口接收到的报文需要在vlanl内 广播的时候,只需要按照相应的vlan bitmap进行广播即可,该广播报文可以沿着实线部 分的链路,到达所有vlanl相关的RB,且不会产生环路。
[0126] 下面以数据中心内的Trill技术为例,对本发明实施例所提供的报文转发技 术方案进行详细描述,相关原理同样适用于其他的大二层组网技术,如Vxlan (virtual Extended VLAN,虚拟扩展VLAN(Virtual Local Area Network,虚拟局域网),IETF 的 draft (草案))、SPB技术等。
[0127] 采用Trill技术构建的数据中心大二层网络,通常分为核心层、接入层。通常,运 行Trill协议的设备称为RBridge (即Routing Bridge,具有路由转发特性的网桥设备,也 称为路由桥,以下简称RB), RB构成Trill域(即Trill网络)。RB通过运行链路状态协议 认知Trill域的拓扑,并使用最短路径树算法生成从该RB到达Trill网络内的其它各个RB 的路由转发表(称之为Trill路由表)。
[0128] 在本发明实施例中,Trill域中各RB使用Trill控制协议进行nickname路由计 算时,生成的nickname单播路由表和组播表仅在软件上保留,而不下发硬件。
[0129] 相应地,由于Trill域中各RB的硬件转发表中没有nickname转发表项,因此,当 Trill 域中各 RB 使用 ESADI (End Station Address Information,用于终端 MAC 地址在 各个RB之间主动同步的协议)协议报文对各RB的本地MAC地址进行相互通告和同步时, ESADI协议报文需要被送往CPU进行软件转发和处理。其中,可以在软件上预先生成一棵 Trill的广播树,不做任何裁剪,所有节点(Trill域内各RB)可达,专门用来转发ESADI协 议报文。
[0130] 需要注意的是,为了防止由于MAC地址自动学习导致的转发环路,在本发明实施 例中,Tr i 11域内所有用户侧端口需要禁止MC自动学习(禁止硬件学习),改为软件学习或 者手工配置或者协议自动生成的方式;Trill 口(hybrid (混杂)口)禁止学习(禁止软件、硬 件学习),改为手工配置或者协议自动生成的方式。此外,使用ESADI协议同步MAC地址时, 所有节点(包括传输节点(即transit节点))都需要处理ESADI报文。
[0131] 同时,Trill域内配置为网关节点的RB节点还需要运行EGRP (Enhanced Gateway Redundancy Protocol,增强网关备份协议),对于同一 VLAN的多个网关节点,除了需要配置 各不相同的实IP地址/实MAC地址之外,还需要配置相同的虚IP地址/虚MAC地址(即同 一 VLAN的各网关节点的实IP地址/实MAC地址不同,虚IP地址/虚MAC地址相同)。
[0132] 启用EGRP协议后,配置为网关节点的RB节点在VLAN内发送EGRP协议报文,该 EGRP协议报文可采用VLAN内广播发送的方式,进行邻居发现和master选举。
[0133] 其中,各网关节点利用EGRP协议进行邻居发现和master选举可以具体为:
[0134] 各网关节点在VLAN内发送EGRP协议报文,该EGRP协议报文中可以携带有各自设 备标识信息、端口 IP地址、端口 MAC地址、虚IP及虚MAC地址;该VLAN内其他网关节点接 收到该EGRP协议报文后,将报文中的端口 IP地址和/或端口 MAC地址与自身的端口 IP地 址和/或端口 MAC地址作比较,通过比较,端口 IP地址+端口 MAC地址最大(或端口 IP地 址或端口 MAC地址最大)的网关节点将成为master,其余网关节点则作为slave。
[0135] 其中,该EGRP协议报文可以周期性发送,且发送周期根据实际场景设置。当slave 在一定时间内(如两倍的EGRP发送周期)未接收到master发送的EGRP协议报文(可以根 据EGRP协议报文中携带的设备标识确定接收到的EGRP协议报文是否为master发送的), 则认为作为master的网关节点down,需要重新在剩下的网关节点之间进行邻居发现和新 master的选举。
[0136] 其中,对于同一 VLAN的多个网关节点,在接收到host (主机)发送的ARP (Address Resolution Protocol,地址解析协议)请求报文时,仅有被选举为master的网关节点需要 响应应答报文,且该应答报文为非Trill封装的ARP报文,且该ARP报文的外层MAC地址和 sender MAC地址均为网关节点的虚MAC地址。而对于网关节点请求host的ARP的处理流 程,由网关节点使用自身的实MAC地址作为ARP请求报文的源MAC地址,而不使用虚MAC地 址。
[0137] 对于MAC地址的扩散和同步,在本发明实施例中,对于配置为网关节点的RB设备, 在通过ESADI协议同步MAC地址时,可以配置为同步虚MAC地址,即将自身的虚MAC地址携 带在ESADI协议报文中进行扩散和同步。
[0138] Trill域内各RB收到ESADI协议报文后,提取其中携带的MAC地址、VLAN信息以 及所属的nickname信息,并根据该nickname查询对应的nickname路由表,将该nickname 路由表转换为MAC转发表下发转发平面。
[0139] 具体的,可以用ESADI协议报文中携带的MAC+VLAN替换对应的nickname路由表 项中的nickname,若该nickname路由表项的出端口为单个出端口,则对应的MAC表项中出 端口直接使用该nickname路由表项的出端口;若该nickname路由表项有等价路由,则对应 的MAC表项中的出端口可以为该nickname路由表项中各端口(各等价路由对应的端口)对 应的聚合端口。
[0140] 需要注意的是,由于同一 VLAN的网关节点具有相同的虚IP地址/虚MAC地址相 同,对于非网关节点,为了生成到网关节点的虚MAC地址的等价路径,非网关节点需要分别 计算本节点到该虚MAC地址对应的各网关节点的单播路由,并将该单播路由中cost最小的 路径在本节点的出端口作为到该虚MAC地址的出端口(即该虚MAC地址对应的MAC转发表 项中的出端口);若存在多条cost最小的路径,就选取多条这种路径,把这些路径在本节点 的出端口一起列出来,如果共享一个出端口,网关mac对应的出端口就是一个单独的物理 端口;如果有多个,则将这几个物理端口聚合后作为该虚MAC地址的出端口。
[0141] 当Trill域内各RB接收到数据报文时,不对该报文进行Trill封装,而根据对应 的MAC转发表项对报文进行转发;若根据报文的目的MAC地址查询到的MAC转发表项的出 端口为单端口时,则将该报文从该出端口转发出去;若根据报文的目的MAC地址查询到的 MAC转发表项的出端口为聚合端口,则可以通过对应的聚合链路的hash分担,选择聚合链 路的某条子链路对应的端口对该报文进行转发。
[0142] 对于L3数据报文,当网关节点对该报文进行L3转发时,可以直接转发给外网路 由器,而不涉及解Trill封装的处理;相应地,外网路由器将该报文转发给目的主机所在 VLAN的网关节点时,也不涉及对加 Trill封装的处理。
[0143] 其中,由于同一 VLAN内各网关节点配置有相同的虚IP地址/虚MAC地址,且网关 节点进行MAC地址同步时同步的MAC地址为虚MAC地址,因此,Trill域内作为接入层设备 的RB上生成的MAC转发表中对应该虚MAC地址的出端口通常为为聚合端口(包括该RB连 接各网关节点的端口),因此,当作为接入层设备的RB需要将接收到host发送的L3数据报 文发送给网关节点时,可以通过对该L3数据报文的目的MAC地址(网关节点的虚MAC地址) 对应的MC转发表项中出端口对应的聚合链路进行hash,选择聚合链路的某条子链路对应 的端口对该报文进行转发,实现对流量的分担。
[0144] 需要注意的是,在本发明实施例中,MAC表项中的聚合端口和传统聚合端口的不同 之处在于:传统的聚合链路两端的设备都需要配置聚合,而本发明实施例中的聚合链路只 需要从一侧设备的角度看是聚合链路即可,对端不一定需要是聚合链路。
[0145] 此外,当Trill内作为网关节点的RB接收到access节点(非网关节点)返回的ARP 应答报文时,需要根据该ARP应答报文的源MAC地址查询自身存储的MAC表,并将该源MAC 地址对应的MAC表项中的出端口作为ARP表项中的出端口(该出端口可以是单端口或者聚 合端口),其中,当网关节点到access节点存在等价路径时,该出端口为聚合端口。
[0146] 通过以上流程可以看出,在本发明实施例中,当大二层网络中设备接收到数据报 文时,不对该报文进行大二层协议封装,而是根据数据报文的目的MAC地址查询MAC表项, 并根据查询到的MAC转发表项将该数据报文以native (原生)形式进行转发。当网关节点 确定该数据报文需要进行L3转发时,不需要进行解除大二层封装的处理,即可发送给外网 路由器;相应地,外网路由器将该报文发送给其他VLAN的网关节点时,也不需要进行大二 层封装的处理,避免了在一个pipeline处理L3转发和大二层协议加/解封装的问题,降低 了对芯片的要求,增强了大二层网络的可部署性;
[0147] 同时,由于配置为网关节点的大二层设备进行MAC地址同步时,使用的为虚MAC地 址,且同一 VLAN的各网关节点的虚MAC地址相同,因此,大二层设备中生成的对应网关节 点的MC转发表项中的出端口为聚合端口,当大二层设备需要将数据报文转发到网关节点 时,可以对相应的MAC转发表项中出端口对应的聚合链路进行hash,选择聚合链路的某条 子链路对应的端口对该报文进行转发,实现了对流量的负载分担。
[0148] 为了更清楚地说明本发明实施例,下面以图3所示的Trill组网架构为例,说明本 发明实施例提供的报文转发技术的具体实现过程。
[0149] 如图3所示,为本发明实施例提供的一种的Trill组网的架构示意图,其中:
[0150] 各接入层设备(S卩access节点)的nickname分别为nickname-1、 nickname-2、......、nickname_n ;
[0151] 各核心层设备(即 core 节点)的 nickname 分别为 nickname-gl、nickname_g2、 nickname_g3 和 nickname_g4 ;
[0152] nickname-gl (艮P nickname 为 nickname-gl 的设备,下同)、nickname_g2、 nickname_g3 以及 nickname_g4 均为网关节点;nickname-gl、nickname_g2 和 nickname_g3 为 vlanl 的网关;nickname-g2、nickname_g3 和 nickname_g4 为 vlan2 的网关。
[0153] nickname-gl、nickname_g2 和 nickname_g3 上配置有 vlanl 的三层接口,且每个 网关节点配置有各不相同的实IP地址和实MC地址,同时每个网关节点配置相同的虚IP 地址:1. I. 1. 1,以及虚 MC 地址:1_1_1。同理,nickname-g2、nickname_g3 和 nickname_g4 上配置有vlan2的三层接口,且每个网关节点配置有各不相同的实IP地址和实MC地址, 同时每个网关节点配置相同的虚IP地址:2. 2. 2. 1,以及虚MAC地址:2-2-2。
[0154] 在本发明实施例中,nickname-gl、nickname_g2、nickname_g3 以及 nickname_g4 上均配置有EGRP协议。启用EGRP协议之后,同一 VLAN的各网关节点之间在VLAN内发送 EGRP协议报文,该协议报文可采用VLAN内广播的发送方式,进行邻居发现和master选举。
[0155] EGRP协议报文可以为周期性发送,发送间隔可设置。当选举为master的网关节点 (以下简称master)down时,重新在剩下的网关节点之间进行邻居发现和新的master选举。 以图3为例,假设通过选举,vlanl中nickname-gl成为master,vlan2中nickname_g4是 master,其余网关节点为slave。
[0156] 在host请求网关的ARP的处理流程中,当host发送网关的ARP请求的时候,只有 master负责回复,slave不处理。其中,在本发明实施例中,master回复的ARP应答报文的 外层MAC地址和sender MAC地址均为虚拟MAC地址。
[0157] 例如,假设hostl. I. L 100请求I. I. L 1的ARP,由nickname-gl负责回复应答报 文,应答报文为非Trill封装的普通ARP报文,外层MAC和内层的sender MAC都是1-1-1, 该ARP应答报文的格式可以如表1所示:
[0158] 表 1
【权利要求】
1. 一种报文转发方法,应用于多个节点设备基于大二层网络协议组建的大二层网络 中,其特征在于,所述多个节点设备包括作为网关设备的网关节点和作为接入设备的非网 关节点,同一VLAN的各网关节点配置有相同的虚IP地址和虚MAC地址,该方法包括: 非网关节点通过一可达所述大二层网络中的所有节点设备的广播树,接收各个网关节 点通告的该网关节点配置的虚MAC地址以及所属VLAN信息; 非网关节点根据大二层网络协议和接收到的同一虚MAC地址对应的各个网关节点的 大二层网络标识,计算去往同一VLAN的各网关节点的单播路由,进而生成所述虚MAC地址 对应的第一MAC地址转发表项,其中,所述第一MAC地址转发表项中的VLAN为所述虚MAC 所属VLAN、目的MAC地址为所述虚MAC地址、出接口为所述单播路由中代价最小的路由对应 的出接口; 非网关节点接收到目的MAC地址为一网关节点的虚MAC地址的数据报文时,根据该数 据报文的目的MAC地址,查找匹配的第一MAC地址转发表项,并根据查找到的匹配表项,直 接转发所述数据报文而不进行大二层网络协议封装。
2. 如权利要求1所述的方法,其特征在于,该方法还包括: 在非网关节点与网关节点之间的链路中断时,非网关节点按照更新后的拓扑,重新计 算去往同一VLAN的各网关节点的单播路由,并更新重新计算得到的单播路由,更新第一 MAC地址转发表项的出接口; 在网关节点宕机时,非网关节点更新该网关节点配置的虚MAC地址对应的第一MAC地 址转发表项的出接口。
3. -种报文转发方法,应用于多个节点设备基于大二层网络协议组建的大二层网络 中,其特征在于,所述多个节点设备包括作为网关节点的网关节点和作为接入设备的非网 关节点,同一VLAN的各网关节点配置有相同的虚IP地址和虚MAC地址,该方法包括: 网关节点通过一可达所述大二层网络中的所有节点设备的广播树,通告本节点设备配 置的虚MAC地址以及所属VLAN信息,以使非网关节点设备根据大二层网络协议和接收到的 同一虚MAC地址对应的各个网关节点的大二层网络标识,计算去往同一VLAN的各网关节点 的单播路由,进而生成所述虚MAC地址对应的第一MAC地址转发表项,其中,所述第一MAC 地址转发表项中的VLAN为所述虚MAC所属VLAN、目的MAC地址为所述虚MAC地址、出接口 为所述单播路由中代价最小的路由对应的出接口; 网关节点接收到目的MAC地址为自身虚MAC地址的数据报文,所述数据报文是非网关 节点根据报文的目的MAC地址,匹配所述第一MAC地址转发表项后直接转发的且没有进行 大二层网络协议封装; 所述网关节点在判断出所述数据报文的目的MAC地址为自身虚MAC地址时,根据所述 数据报文的目的IP地址,查找路由表转发所述数据报文。
4. 如权利要求3所述的方法,其特征在于,该方法还包括: 各个节点设备通过所述广播树,将新学习到的本地MAC地址以及所属VLAN通告给其他 节点设备,所述本地MAC地址包括从本节点设备连接的用户网络侧学习到的MAC地址; 网关节点从所述广播树上接收其他节点设备通告的所述其他节点设备新学习到的本 地MAC地址以及所属VLAN,并根据预先基于该大二层网络协议生成的大二层网络转发表 项,生成所述其他节点设备的本地MAC地址对应的第二MAC地址转发表项,所述第二MAC地 址转发表项中的目的MAC地址为所述其他节点设备的本地MAC地址,出接口为所述大二层 网络转发表项中去往所述其他节点的出接口; 所述网关节点接收到目的MAC地址不是自身端口MAC地址或所述虚MAC地址的单播数 据报文后,根据所述单播数据报文的目的MAC地址及所属VLAN,在所述第二MAC地址转发表 项中进行匹配,并通过匹配表项的出接口直接转发所述单播数据报文而不进行大二层网络 协议封装。
5. 如权利要求4所述的方法,其特征在于, 所述网关节点还与所述大二层网络外部的路由设备连接; 在各个节点设备上设置VLAN的广播域范围,其中,所述广播域范围包括该节点设备上 允许该VLAN通过的用户侧端口和该节点设备上的位于该VLAN裁剪树上的大二层网络侧接 口,所述裁剪树是基于VLAN对所述广播树进行分发树的剪枝得到的; 网关节点在接收到所述路由设备发送的数据报文时,查找匹配所述数据报文的目的IP地址的ARP表项,并根据查找到的ARP表项的目的MAC地址以及出接口,直接转发所述数据 报文而不进行大二层网络协议封装。
6. 如权利要求5所述的方法,其特征在于, 若网关节点未查找到匹配所述数据报文的目的IP地址的ARP表项,所述方法还包括: 所述网关节点在该数据报文对应的VLAN的广播域内,直接广播发送用于请求所述数 据报文的目的IP地址对应的MAC地址的第一ARP请求报文而不进行大二层网络协议封装, 所述第一ARP请求报文的发送端senderIP地址是所述网关节点的发送端口IP地址,源 MAC地址及发送端MAC地址是所述网关节点的发送端口MAC地址; 所述网关节点根据接收到的针对第一ARP请求报文的第一ARP应答报文,建立所述数 据报文的目的IP地址对应的ARP表项,并根据该建立的ARP表项,转发所述数据报文而不 进行大二层网络协议封装。
7. 如权利要求4所述的方法,其特征在于,同一VLAN中的一个网关节点被选举为该 VLAN的主网关节点,该方法还包括: 网关节点接收到主机发送的用于请求网关节点的MAC地址的第二ARP请求报文,且确 定自身为对应VLAN的主网关节点时,生成第二ARP应答报文,该第二ARP应答报文的目的 MAC地址为所述主机的MAC地址,源MAC地址和发送端senderMAC地址均为所述网关节点 的虚MAC地址,senderIP地址为所述网关节点的虚IP地址,以使所述主机学习并建立所 述网关节点的虚IP地址与虚MAC地址之间的关联关系; 所述网关节点根据所述ARP应答报文的目的MAC地址,在第二MAC地址转发表项中进 行匹配,并通过匹配表项的出接口直接转发所述ARP应答报文而不进行大二层网络协议封 装。
8. 如权利要求7所述的方法,其特征在于,所述主网关节点的选举包括: 同一VLAN中的各个网关节点在该VLAN内广播携带有各自端口IP地址、端口MAC地址、 虚IP及虚MAC地址的邻居发现及主网关节点选举协议报文; 同一VLAN中的各个网关节点接收其他网关节点发送的所述协议报文,选举端口IP地 址和/或端口MAC地址满足预设规则的网关节点,作为所述主网关节点。
9. 如权利要求3所述的方法,其特征在于,还包括: 在非网关节点与网关节点之间的链路中断时,该网关节点更新达到该非网关节点下所 有主机的ARP表项的出接口; 在非网关节点发生岩机down时,网关节点删除该非网关节点下的所有主机的ARP表 项; VLAN内的主网关节点down时,该VLAN内其他网关节点重新选举该VLAN内的主网关节 占. 网关节点在发现外部路由器不可达时,退出本网关节点所在VLAN的主网关节点的选 举,以触发其他网关节点重新选举主网关节点,禁用自身所有的三层接口,并通过所述广播 树通告虚MAC地址的撤销消息,以使得非网关节点设备更新所述虚MAC地址对应的所述第 一MAC地址转发表项的出接口。
10. -种网络设备,应用于多个节点设备基于大二层网络协议组建的大二层网络中, 其特征在于,所述多个节点设备包括作为网关设备的网关节点和作为接入设备的非网关节 点,同一VLAN的各网关节点配置有相同的虚IP地址和虚MAC地址,所述网络设备作为非网 关节点应用于所述大二层网络中,该网络设备包括: 地址管理模块,用于通过一可达所述大二层网络中的所有节点设备的广播树,接收各 个网关节点通告的该网关节点配置的虚MAC地址以及所属VLAN信息; 表项维护模块,用于根据大二层网络协议和所述地址管理模块接收到的同一虚MAC地 址对应的各个网关节点的大二层网络标识,计算去往同一VLAN的各网关节点的单播路由, 进而生成所述虚MAC地址对应的第一MAC地址转发表项,其中,所述第一MAC地址转发表项 中的VLAN为所述虚MAC所属VLAN、目的MAC地址为所述虚MAC地址、出接口为所述单播路 由中代价最小的路由对应的出接口; 报文转发模块,用于当所述网络设备接收到目的MAC地址为一网关节点的虚MAC地址 的数据报文时,根据该数据报文的目的MAC地址,查找匹配的第一MAC地址转发表项,并根 据查找到的匹配表项,直接转发所述数据报文而不进行大二层网络协议封装。
11. 如权利要求10所述的网络设备,其特征在于,所述表项维护模块还用于, 在所述网络设备与网关节点之间的链路中断时,按照更新后的拓扑,重新计算去往同 一VLAN的各网关节点的单播路由,并更新重新计算得到的单播路由,更新第一MAC地址转 发表项的出接口; 在网关节点宕机时,更新该网关节点配置的虚MAC地址对应的第一MAC地址转发表项 的出接口。
12. -种网络设备,应用于多个节点设备基于大二层网络协议组建的大二层网络中, 其特征在于,所述多个节点设备包括作为网关设备的网关节点和作为接入设备的非网关节 点,同一VLAN的各网关节点配置有相同的虚IP地址和虚MAC地址,所述网络设备作为网关 节点应用于所述大二层网络中,该网络设备包括: 地址管理模块,用于通过一可达所述大二层网络中的所有节点设备的广播树,通告本 节点设备配置的虚MAC地址以及所属VLAN信息,以使非网关节点设备根据大二层网络协议 和接收到的同一虚MAC地址对应的各个网关节点的大二层网络标识,计算去往同一VLAN的 各网关节点的单播路由,进而生成所述虚MAC地址对应的第一MAC地址转发表项,其中,所 述第一MAC地址转发表项中的VLAN为所述虚MAC所属VLAN、目的MAC地址为所述虚MAC地 址、出接口为所述单播路由中代价最小的路由对应的出接口; 报文转发模块,用于当所述网络设备接收到目的MAC地址为自身虚MAC地址的数据报 文,且判断出所述数据报文的目的MAC地址为自身虚MAC地址时,根据所述数据报文的目的 IP地址,查找路由表转发所述数据报文;其中,所述数据报文是非网关节点根据报文的目 的MAC地址,匹配所述第一MAC地址转发表项后直接转发的且没有进行大二层网络协议封 装。
13. 如权利要求12所述的方法,其特征在于,该网络设备还包括:表项维护模块; 所述地址管理模块还用于,从所述广播树上接收其他节点设备通告的所述其他节点设 备新学习到的本地MAC地址以及所属VLAN;所述本地MAC地址包括从所述其他节点设备连 接的用户网络侧学习到的MAC地址; 表项维护模块,用于根据预先基于该大二层网络协议生成的大二层网络转发表项,生 成所述其他节点设备的本地MAC地址对应的第二MAC地址转发表项,所述第二MAC地址转 发表项中的目的MAC地址为所述其他节点设备的本地MAC地址,出接口为所述大二层网络 转发表项中去往所述其他节点设备的出接口; 所述报文转发模块还用于,当所述网络设备接收到目的MAC地址不是自身端口MAC地 址或所述虚MAC地址的单播数据报文后,根据所述单播数据报文的目的MAC地址及所属 VLAN,在所述第二MAC地址转发表项中进行匹配,并通过匹配表项的出接口直接转发所述 单播数据报文而不进行大二层网络协议封装。
14. 如权利要求13所述的网络设备,其特征在于,所述网络设备还与所述大二层网络 外部的路由设备连接; 所述大二层网络中各节点设备上设置有VLAN的广播域范围,其中,所述广播域范围包 括该节点设备上允许该VLAN通过的用户侧端口和该节点设备上的位于该VLAN裁剪树上的 大二层网络侧接口,所述裁剪树是基于VLAN对所述广播树进行分发树的剪枝得到的; 所述报文转发模块还用于,在接收到所述路由设备发送的数据报文时,查找匹配所述 数据报文的目的IP地址的ARP表项,并根据查找到的ARP表项的目的MAC地址以及出接口, 直接转发所述数据报文而不进行大二层网络协议封装。
15. 如权利要求14所述的网络设备,其特征在于, 所述报文转发模块还用于,若未查找到匹配所述数据报文的目的IP地址的ARP表项, 在该数据报文对应的VLAN的广播域内,直接广播发送用于请求所述数据报文的目的IP地 址对应的MAC地址的第一ARP请求报文而不进行大二层网络协议封装,所述第一ARP请求 报文的发送端senderIP地址是所述网络设备的发送端口IP地址,源MAC地址及发送端 MAC地址是所述网络设备的发送端口MAC地址; 所述表项维护模块还用于,当所述网络设备接收到根据接收到针对第一ARP请求报文 的第一ARP应答报文时,建立所述数据报文的目的IP地址对应的ARP表项; 所述报文转发模块还用于,根据所述表项维护模块建立的ARP表项,转发所述数据报 文而不进行大二层网络协议封装。
16. 如权利要求13所述的网络设备,其特征在于,同一VLAN中的一个网关节点被选举 为该VLAN的主网关节点, 所述报文转发模块还用于,当接收到主机发送的用于请求网关节点的MAC地址的第二 ARP请求报文,且确定所述网络设备为对应VLAN的主网关节点时,生成第二ARP应答报文, 该第二ARP应答报文的目的MAC地址为所述主机的MAC地址,源MAC地址和发送端sender MAC地址均为所述网络设备的虚MAC地址,senderIP地址为所述网络设备的虚IP地址,以 使所述主机学习并建立所述网络设备的虚IP地址与虚MAC地址之间的关联关系;根据所述 ARP应答报文的目的MAC地址,在第二MAC地址转发表项中进行匹配,并通过匹配表项的出 接口直接转发所述ARP应答报文而不进行大二层网络协议封装。
17. 如权利要求16所述的网络设备,其特征在于,所述网络设备还包括: 选举模块,用于在所述网络设备所属的VLAN内广播携带有所述网络设备自身端口IP地址、端口MAC地址、虚IP及虚MAC地址的邻居发现及主网关节点选举协议报文;接收所述 VLAN内其他网关节点发送的所述协议报文,选举端口IP地址和/或端口MAC地址满足预设 规则的网关节点,作为所述主网关节点。
18. 如权利要求17所述的网络设备,其特征在于, 所述表项维护模块还用于,在非网关节点与所述网络设备之间的链路中断时,更新达 到该非网关节点下所有主机的ARP表项的出接口;在非网关节点发生宕机down时,删除该 非网关节点下的所有主机的ARP表项; 所述地址管理模块还用于,在所述网络设备发现外部路由器不可达时,禁用自身所有 的三层接口,并通过所述广播树通告虚MAC地址的撤销消息,以使得非网关节点设备更新 所述虚MAC地址对应的所述第一MAC地址转发表项的出接口; 所述选举模块还用于,在所述网络设备发现外部路由器不可达时,退出本网关节点所 在VLAN的主网关节点的选举,以触发其他网关节点重新选举主网关节点。
【文档编号】H04L12/741GK104378297SQ201310357517
【公开日】2015年2月25日 申请日期:2013年8月15日 优先权日:2013年8月15日
【发明者】宋玉兵 申请人:杭州华三通信技术有限公司