背景技术
传统的三层数据中心架构中采用STP(SpanningTreeProtocol,生成树协议)来优化客户端到服务器的路径和支持连接冗余。由于STP的收敛性能等原因,一般情况下STP的网络规模不会超过100台交换机。同时由于STP需要阻塞冗余设备和链路,也降低了网络资源带宽利用率。传统的基于STP备份设备和链路方案已经不能满足数据中心规模、带宽的需求,并且STP协议几秒至几分钟的故障收敛时间,也不能满足数据中心的可靠性要求。因此,需要能够有新的技术,在满足二层网络规模的同时,也能够充分利用冗余设备和链路,提升链路利用率,而且数据中心的故障收敛时间能够降低到亚秒甚至毫秒级。
虚拟化能够有效地提高服务器的利用率,降低能源消耗,降低客户的运维成本,所以虚拟化技术得到了极大的发展。虚拟化给数据中心带来的不仅是服务器利用率的提高,还有网络架构的变化。虚拟机迁移技术可以使数据中心的计算资源得到灵活的调配,进一步提高虚拟机资源的利用率。但是虚拟机迁移要求虚拟机迁移前后的IP和MAC(MediaAccessControl,介质访问控制)地址不变,这就需要虚拟机迁移前后的网络处于同一个二层域内部。由于客户要求虚拟机迁移的范围越来越大,甚至是跨越不同地域、不同机房之间的迁移,所以使得数据中心二层网络的范围越来越大,甚至出现了大规模二层网络(下文中简称为大二层网络)这一新领域专题。
隧道技术能够实现覆盖多个接入交换机和核心交换机的数据中心内的大二层网络。隧道技术的典型代表是TRILL(TRansparentInterconnectionofLotsofLinks,多链路透明互联)和SPB(ShortestPathBridging,最短路径桥)技术,两者均是通过借用IS-IS(IntermediateSystemtoIntermediateSystem,中间系统到中间系统)路由协议的计算和转发模式,实现二层网络的大规模扩展。这些技术目前正在标准化过程中,同时传统交换机不仅需要软件升级,还需要硬件支持。SPB协议支持Q-in-Q模式(称为SPBV)和MAC-in-MAC模式(称为SPBM),其中SPBM(ShortestPathBridgingMACMode,MAC-in-MAC模式的最短路径桥)是目前的主要推荐模式。
目前在SPBM网络和TRILL网络中,厂商芯片对实际组网的支持不够,从而导致网络不能实现正常转发功能。
下面将以SPBM网络为例,介绍其中的报文转发流程。
SPBM网络中包括BEB(BackboneEdgeBridge,骨干网边缘网桥)设备、BCB(BackboneCoreBridge,骨干网核心网桥)设备和之间的骨干链路。BEB设备是SPBM网络的边缘设备,可将来自用户网络的报文进行MAC-in-MAC封装,并转发到SPBM网络中;或者,将来自SPBM网络的MAC-in-MAC报文进行解封装,并转发到用户网络。BCB设备是SPBM网络的核心设备,在对报文进行MAC-in-MAC封装时,为其打上运营商所分配的B-MAC(BackboneMAC,骨干网MAC)地址和B-VLAN(Backbone-VirtualLocalAreaNetwork,骨干网虚拟局域网);按照B-MAC和B-VLAN转发MAC-in-MAC报文,且只需要转发报文和学习骨干网中的MAC地址,不需要学习用户网络中大量的MAC地址。
BEB设备上连接SPBM网络的端口称为上行口,连接用户网络的端口称为下行口;来自用户网络的报文被封装成MAC-in-MAC报文之后,会通过BEB设备相应的上行口转发出去;来自SPBM网络的MAC-in-MAC报文被解封装之后,会按照用户MAC地址通过BEB设备相应的下行口转发出去。
如图1所示,为SPBM网络的一种组网结构示意图,在SPBM网络中运行SPB(ShortestPathBridging,最短路径桥)协议时,对于不在同一个网段的主机1和主机2来说,相应的转发流程可以包括以下过程:
一、针对主机1的ARP学习过程,该过程可以包括以下步骤:
步骤1、主机1向BEB1发送ARP(AddressResolutionProtocol,地址解析协议)请求报文,该ARP请求报文的以太网报头的源MAC地址为主机1的MAC地址,且该ARP请求报文还携带了作为发送端的主机1的MAC地址(1-1-1)和IP地址(1.1.1.2)、作为目标端的网关设备的IP地址和MAC地址,其中网关设备的MAC地址填充为FFFF-FFFF-FFFF,且该ARP请求报文以太网报头中的源MAC地址为主机1的MAC地址。
步骤2、BEB1收到ARP请求报文后,进行源MAC地址学习,从而学习到主机1的MAC地址,在MAC地址表中记录MAC地址(1-1-1)与接收端口的对应关系,并对ARP请求报文进行MAC-in-MAC封装,可以通过广播方式将经MAC-in-MAC封装后的ARP请求报文发送给网关设备(在图1所示的应用场景下,网关设备部署在BCB1上)。
步骤3、网关设备对MAC-in-MAC封装后的ARP请求报文进行解封装,进行源MAC地址学习,从而学习主机1的MAC地址,在MAC地址表中记录主机1的MAC地址(1-1-1)与邻居信息的对应关系,该邻居信息包括MAC地址(1-1-1)对应的出端口(即ARP请求报文的接收端口)及MAC-in-MAC转发时的封装信息;学习ARP请求报文中发送端的MAC地址(1-1-1)和IP地址(1.1.1.2),在路由表中记录MAC地址(1-1-1)、IP地址(1.1.1.2)和接收端口间对应关系。
步骤4、网关设备对所述ARP请求报文进行响应,生成一ARP应答报文,在该ARP应答报文中,发送端IP地址为网关设备的IP地址(1.1.1.1),发送端MAC地址为网关设备的MAC地址(3-3-3),目标端IP地址为主机1的IP地址(1.1.1.2),目标端MAC地址为主机1的MAC地址(1-1-1)。
此外,该ARP应答报文的以太网报头的源、目的MAC地址分别为网关设备和主机1的MAC地址;网关设备对该ARP应答报文进行MAC-in-MAC封装,将封装后的ARP应答报文发送给BEB1。
步骤5、BEB1对MAC-in-MAC封装后的ARP应答报文进行解封装,得到ARP应答报文,根据该ARP应答报文进行源MAC地址学习,从而学习到网关设备的MAC地址,在MAC地址表中记录网关设备的MAC地址(3-3-3)与邻居信息的对应关系,该邻居信息包括MAC地址(3-3-3)对应的出端口(即ARP应答报文的接收端口)及MAC-in-MAC转发时的封装信息。
步骤6、BEB1利用ARP应答报文的目的MAC地址(1-1-1)查询MAC表,获得对应的端口,从而通过该端口将ARP应答报文发送给主机1。
步骤7、主机1在收到ARP应答报文后,学习到网关设备的IP地址(1.1.1.1)对应的MAC地址(3-3-3)。
二、针对主机2的ARP学习过程,该过程类似于上述主机1的ARP学习过程,可以包括以下步骤:
步骤1、主机2向BEB2发送ARP请求报文,该ARP请求报文的以太网报头的源MAC地址为主机2的MAC地址,且该ARP请求报文中携带作为发送端的主机2的MAC地址(2-2-2)和IP地址(2.2.2.2)、以及作为目标端的网关设备的IP地址和MAC地址,其中网关设备的MAC地址填充为FFFF-FFFF-FFFF,且该ARP请求报文以太网报头中的源MAC地址为主机2的MAC地址。
步骤2、BEB2收到ARP请求报文后,进行源MAC地址学习,从而学习到主机2的MAC地址,在MAC地址表中记录MAC地址(2-2-2)与接收端口的对应关系,并对ARP请求报文进行MAC-in-MAC封装,可以通过广播方式将经MAC-in-MAC封装后的ARP请求报文发送给网关设备(在图1所示的应用场景下,网关设备部署在BCB1上)。
步骤3、网关设备对MAC-in-MAC封装后的ARP请求报文进行解封装,进行源MAC地址学习,从而学习主机2的MAC地址,在MAC地址表中记录主机2的MAC地址(2-2-2)与邻居信息的对应关系,该邻居信息包括MAC地址(2-2-2)对应的出端口(即ARP请求报文的接收端口)及MAC-in-MAC转发时的封装信息;学习ARP请求报文中发送端的MAC地址(2-2-2)和IP地址(2.2.2.2),在路由表中记录MAC地址(2-2-2)、IP地址(2.2.2.2)和接收端口间对应关系。
步骤4、网关设备对所述ARP请求报文进行响应,生成一ARP应答报文,在该ARP应答报文中,发送端IP地址为网关设备的IP地址(2.2.2.1),发送端MAC地址为网关设备的MAC地址(3-3-3),目标端IP地址为主机2的IP地址(2.2.2.2),目标端MAC地址为主机2的MAC地址(2-2-2)。
此外,该ARP应答报文的以太网报头的源、目的MAC地址分别为网关设备和主机2的MAC地址;网关设备对该ARP应答报文进行MAC-in-MAC封装,将封装后的ARP应答报文发送给BEB2。
步骤5、BEB2对MAC-in-MAC封装后的ARP应答报文进行解封装,得到ARP应答报文,根据该ARP应答报文进行源MAC地址学习,从而学习到网关设备的MAC地址,在MAC地址表中记录网关设备的MAC地址(3-3-3)与邻居信息的对应关系,该邻居信息包括MAC地址(3-3-3)对应的出端口(即ARP应答报文的接收端口)及MAC-in-MAC转发时的封装信息。
步骤6、BEB2利用ARP应答报文的目的MAC地址(2-2-2)查询MAC表,获得对应的端口,从而通过该端口将ARP应答报文发送给主机2。
步骤7、主机2在收到ARP应答报文后,学习到网关设备的IP地址(2.2.2.1)对应的和MAC地址(3-3-3)。
三、针对主机1向主机2发送报文的流程,该流程可以包括以下步骤:
步骤1、主机1向主机2发送报文,该报文的目的IP地址为主机2的IP地址(2.2.2.2),目的MAC地址为网关设备的MAC地址(3-3-3)。
步骤2、BEB1收到主机1发送给主机2的报文后,利用目的MAC地址查询MAC地址表,命中(3-3-3)的表项,依据(3-3-3)的表项的邻居信息对报文进行MAC-in-MAC封装,并通过(3-3-3)表项对应的出端口将MAC-in-MAC封装后的报文单播发送给网关设备。
步骤3、网关设备对MAC-in-MAC封装后的报文进行解封装,发现目的MAC地址是本设备MAC地址(3-3-3),则利用目的IP地址(2.2.2.2)查询路由表,得到对应的MAC地址为(2-2-2),并将报文的源MAC地址修改为本设备MAC地址(3-3-3),将报文的目的MAC地址修改为MAC地址(2-2-2)。
步骤4、网关设备利用修改后的MAC地址(2-2-2)查询MAC地址表,命中(2-2-2)的表项,依据(2-2-2)的表项对应的邻居信息对修改后的报文进行MAC-in-MAC封装,并通过(2-2-2)表项对应的出端口将MAC-in-MAC封装后的报文发送给BEB2。
步骤5、BEB2对MAC-in-MAC封装后的报文进行解封装,在得到相应报文之后,利用该报文的目的MAC地址(2-2-2)查询MAC地址表,命中(2-2-2)的表项,并通过(2-2-2)表项对应的出端口将报文发送给主机2。
针对主机2向主机1发送报文的流程,与上述流程类似。
在上述步骤3和步骤4中,网关设备需要先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表;但是,当前部分厂商芯片无法实现先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表的处理过程,从而导致上述流程无法实现,即无法正常转发主机1发送给主机2的报文。
发明内容
本发明实施例提供一种报文传输方法和设备,在芯片的处理流程无法实现先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表时,可以正常转发不同终端设备之间需要传输的报文。
为了达到上述目的,本发明实施例提供一种报文传输方法,应用于包括终端设备、边缘桥设备和网关设备的大二层网络中,其中,所述边缘桥设备与所述终端设备直接连接,在所述边缘桥设备上实现三层转发功能时,所述方法包括以下步骤:
所述网关设备接收来自边缘桥设备的GRE封装的第一报文,并对接收到的GRE封装的第一报文解封装后得到第二报文;
所述网关设备根据所述第二报文的目的IP地址,查找本地路由表中维护的终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系;
所述网关设备根据查找到的第二报文的目的IP地址对应的边缘桥设备的IP地址和MAC地址,对所述第二报文进行GRE封装后生成第三报文;
所述网关设备将GRE封装的第三报文发送给对应的边缘桥设备;由该边缘桥设备对第三报文解GRE封装得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的本地终端设备的IP地址与MAC地址的对应关系,确定第二报文的目的IP地址对应的MAC地址后进行转发;
其中,所述大二层网络为SPBM网络,所述边缘桥设备为BEB设备;或者,所述大二层网络为TRILL网络,所述边缘桥设备为RB设备。
所述网关设备查找本地路由表中维护的终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系之前,所述方法还包括:
所述网关设备接收终端设备相连的边缘桥设备转发的来自所述终端设备的ARP请求报文,该ARP请求报文中携带终端设备的IP地址和MAC地址;
所述网关设备学习所述ARP请求报文中携带的终端设备的IP地址和MAC地址,并获得终端设备相连的边缘桥设备的IP地址和MAC地址;
所述网关设备在本地路由表中记录终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系。
所述网关设备获得终端设备相连的边缘桥设备的IP地址和MAC地址,具体包括:
所述网关设备在拓扑表中预先维护所述大二层网络中各边缘桥设备的IP地址与MAC地址之间的对应关系;
所述网关设备在收到来自边缘桥设备的ARP请求报文时,确定所述边缘桥设备的MAC地址,并通过所述边缘桥设备的MAC地址查询所述拓扑表,以得到所述边缘桥设备的IP地址。
本发明实施例提供一种报文传输方法,应用于包括终端设备、边缘桥设备和网关设备的大二层网络中,其中,所述边缘桥设备与所述终端设备直接连接,在所述边缘桥设备上实现三层转发功能时,所述方法包括以下步骤:
当所述边缘桥设备为源端设备时,所述边缘桥设备接收来自所述终端设备且目的MAC地址为所述边缘桥设备的MAC地址的第二报文,匹配到本地路由表中的默认路由,并利用所述默认路由中设置的网关设备的IP地址和MAC地址,对所述第二报文进行GRE封装后生成第一报文,并将GRE封装的第一报文发送给所述网关设备;
当所述边缘桥设备为目的端设备时,所述边缘桥设备接收来自网关设备的GRE封装的第三报文,该第三报文是网关设备在对收到的GRE封装的第一报文解封装后得到第二报文时,根据第二报文的目的IP地址,查找本地路由表中维护的终端设备IP地址和MAC地址、以及与终端设备相连边缘桥设备的IP地址和MAC地址之间的对应关系,并根据查找到的第二报文的目的IP地址对应的边缘桥设备的IP地址和MAC地址,对第二报文进行GRE封装后生成并发送的;
所述边缘桥设备对所述第三报文解GRE封装得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的本地终端设备的IP地址与MAC地址的对应关系,确定第二报文的目的IP地址对应的MAC地址后进行转发;
其中,所述大二层网络为SPBM网络,所述边缘桥设备为BEB设备;或者,所述大二层网络为TRILL网络,所述边缘桥设备为RB设备。
所述方法还包括:所述边缘桥设备接收来自本地终端设备的ARP请求报文,所述ARP请求报文中携带所述本地终端设备的IP地址和MAC地址;
所述边缘桥设备学习所述ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录所述本地终端设备的IP地址与MAC地址的对应关系。
所述边缘桥设备接收来自本地终端设备的ARP请求报文,之后还包括:
所述边缘桥设备生成所述ARP请求报文对应的ARP应答报文,并将所述ARP应答报文发送给所述本地终端设备;在所述ARP应答报文中,发送端IP地址为网关设备的IP地址,目标端IP地址为本地终端设备的IP地址,发送端MAC地址为本边缘桥设备的MAC地址,目标端MAC地址为本地终端设备的MAC地址。
所述边缘桥设备学习所述ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录所述本地终端设备的IP地址与MAC地址的对应关系,具体包括:
所述边缘桥设备在连接本地终端设备的VLAN上使能ARPSnooping功能,且使能ARPSnooping功能表示所述边缘桥设备需要学习所述VLAN内所有端口收到的ARP请求报文中携带的IP地址和MAC地址;
所述边缘桥设备在所述VLAN内的端口上收到所述ARP请求报文后,将所述ARP请求报文上送至本设备的CPU,以学习所述ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录所述本地终端设备的IP地址与MAC地址的对应关系。
本发明实施例提供一种网关设备,应用于包括终端设备、边缘桥设备和所述网关设备的大二层网络中,其中,所述边缘桥设备与所述终端设备直接连接,在所述边缘桥设备上实现三层转发功能时,所述网关设备具体包括:
接收模块,用于接收来自边缘桥设备的GRE封装的第一报文;
解封装模块,用于对收到的GRE封装的第一报文解封装后得到第二报文;
查询模块,用于根据所述第二报文的目的IP地址,查找本地路由表中维护的终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系;
封装模块,用于根据查找到的第二报文的目的IP地址对应的边缘桥设备的IP地址和MAC地址,对所述第二报文进行GRE封装后生成第三报文;
发送模块,用于将GRE封装的第三报文发送给对应的边缘桥设备;由该边缘桥设备对第三报文解GRE封装得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的本地终端设备的IP地址与MAC地址的对应关系,确定第二报文的目的IP地址对应的MAC地址后进行转发;
其中,所述大二层网络为SPBM网络,所述边缘桥设备为BEB设备;或者,所述大二层网络为TRILL网络,所述边缘桥设备为RB设备。
还包括:维护模块;
所述接收模块,还用于接收终端设备相连的边缘桥设备转发的来自所述终端设备的ARP请求报文,所述ARP请求报文中携带了终端设备的IP地址和MAC地址;
所述维护模块,用于学习所述ARP请求报文中携带的终端设备的IP地址和MAC地址,并获得终端设备相连的边缘桥设备的IP地址和MAC地址;
以及,在本地路由表中记录终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系。
所述维护模块,进一步用于在拓扑表中预先维护所述大二层网络中各边缘桥设备的IP地址与MAC地址之间的对应关系;在收到来自边缘桥设备的ARP请求报文时,确定所述边缘桥设备的MAC地址,并通过所述边缘桥设备的MAC地址查询所述拓扑表,以得到所述边缘桥设备的IP地址。
本发明实施例提供一种边缘桥设备,应用于包括终端设备、边缘桥设备和网关设备的大二层网络中,其中,所述边缘桥设备与所述终端设备直接连接,在所述边缘桥设备上实现三层转发功能时,所述边缘桥设备具体包括:
接收模块,用于当所述边缘桥设备为源端设备时,接收来自所述终端设备且目的MAC地址为所述边缘桥设备的MAC地址的第二报文;当所述边缘桥设备为目的端设备时,接收来自网关设备的GRE封装的第三报文,该第三报文是网关设备在对收到的GRE封装的第一报文解封装后得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的终端设备IP地址和MAC地址、以及与终端设备相连边缘桥设备的IP地址和MAC地址之间的对应关系,并根据查找到的第二报文的目的IP地址对应的边缘桥设备的IP地址和MAC地址,对第二报文进行GRE封装后生成并发送的;
处理模块,用于当所述边缘桥设备为源端设备时,匹配到本地路由表中的默认路由,并利用所述默认路由中设置的网关设备的IP地址和MAC地址,对所述第二报文进行GRE封装后生成第一报文;
当所述边缘桥设备为目的端设备时,对所述第三报文解GRE封装得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的本地终端设备的IP地址与MAC地址的对应关系;
发送模块,用于当所述边缘桥设备为源端设备时,将GRE封装的第一报文发送给所述网关设备;当所述边缘桥设备为目的端设备时,利用查找到的定第二报文的目的IP地址对应的MAC地址进行第二报文的转发;
其中,所述大二层网络为SPBM网络,所述边缘桥设备为BEB设备;或者,所述大二层网络为TRILL网络,所述边缘桥设备为RB设备。
还包括:维护模块;
所述接收模块,还用于接收来自本地终端设备的ARP请求报文,所述ARP请求报文中携带所述本地终端设备的IP地址和MAC地址;
所述维护模块,用于学习所述ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录所述本地终端设备的IP地址与MAC地址的对应关系。
所述发送模块,还用于生成所述ARP请求报文对应的ARP应答报文,并将所述ARP应答报文发送给所述本地终端设备;在所述ARP应答报文中,发送端IP地址为网关设备的IP地址,目标端IP地址为本地终端设备的IP地址,发送端MAC地址为本边缘桥设备的MAC地址,目标端MAC地址为本地终端设备的MAC地址。
所述维护模块,具体用于在连接本地终端设备的VLAN上使能ARPSnooping功能,且使能ARPSnooping功能表示所述边缘桥设备需要学习所述VLAN内所有端口收到的ARP请求报文中携带的IP地址和MAC地址;
在所述VLAN内的端口上收到所述ARP请求报文后,将所述ARP请求报文上送至本设备的CPU,以学习所述ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录所述本地终端设备的IP地址与MAC地址的对应关系。
与现有技术相比,本发明实施例至少具有以下优点:本发明实施例中,通过在边缘桥设备上进行三层转发,使得网关设备的功能由二层转发和三层转发同时存在,变成了单纯的三层转发,即网关设备将GRE格式报文解封装后,再封装成GRE格式报文,并向边缘桥设备发送GRE封装后的报文,以避免先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表的处理流程,从而在芯片的处理流程无法实现先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表时,可以正常转发不同终端设备之间需要传输的报文,避免在SPBM网络使用SPB协议或者在TRILL网络使用TRILL协议时,报文无法正常传输的情况。
具体实施方式
下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
针对现有技术中存在的问题,本发明实施例提出一种报文传输方法,该方法应用于包括终端设备、边缘桥设备和网关设备的大二层网络中,其中,边缘桥设备与终端设备直接连接,在终端设备为发送端设备时,则该边缘桥设备为源端设备,在终端设备为接收端设备时,则该边缘桥设备为目的端设备;本发明实施例中,通过在边缘桥设备上实现三层转发功能,使得网关设备的功能由二层转发和三层转发同时存在,变成了单纯的三层转发,即该网关设备将GRE格式报文解封装后,再封装成GRE格式报文,从而向边缘桥设备发送GRE封装后的报文,以避免先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表的处理流程,从而在芯片的处理流程无法实现先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表时,可以正常转发不同终端设备之间需要传输的报文。
本发明实施例中,当边缘桥设备为源端设备时,该边缘桥设备接收来自终端设备且目的MAC地址为本边缘桥设备的MAC地址的第二报文,匹配到本地路由表中的默认路由,并利用所述默认路由中设置的网关设备的IP地址和MAC地址,对第二报文进行GRE封装后生成第一报文,并将GRE封装的第一报文发送给网关设备。
网关设备接收来自边缘桥设备的GRE封装的第一报文,并对接收到的GRE封装的第一报文解封装后得到第二报文;网关设备根据第二报文的目的IP地址,查找本地路由表中维护的终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系;根据查找到的第二报文的目的IP地址对应的边缘桥设备的IP地址和MAC地址,对第二报文进行GRE封装后生成第三报文,并将GRE封装的第三报文发送给对应的边缘桥设备。
当边缘桥设备为目的端设备时,该边缘桥设备接收来自网关设备的GRE封装的第三报文,对第三报文解GRE封装得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的本地终端设备的IP地址与MAC地址的对应关系,确定第二报文的目的IP地址对应的MAC地址后进行转发。
本发明实施例中,网关设备维护本地路由表的过程包括:网关设备接收终端设备相连的边缘桥设备转发的来自终端设备的ARP请求报文,该ARP请求报文中携带终端设备的IP地址和MAC地址;学习ARP请求报文中携带的终端设备的IP地址和MAC地址,并获得终端设备相连的边缘桥设备的IP地址和MAC地址;在本地路由表中记录终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系。
进一步的,网关设备获得终端设备相连的边缘桥设备的IP地址和MAC地址,具体包括:网关设备在拓扑表中预先维护大二层网络中各边缘桥设备的IP地址与MAC地址之间的对应关系;网关设备在收到来自边缘桥设备的ARP请求报文时,确定边缘桥设备的MAC地址,并通过边缘桥设备的MAC地址查询拓扑表,以得到边缘桥设备的IP地址。
本发明实施例中,边缘桥设备维护本地路由表的过程具体包括但不限于:边缘桥设备接收来自本地终端设备的ARP请求报文,该ARP请求报文中携带本地终端设备的IP地址和MAC地址;之后,边缘桥设备学习ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录本地终端设备的IP地址与MAC地址的对应关系。
具体的,边缘桥设备学习ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录本地终端设备的IP地址与MAC地址的对应关系,具体包括:边缘桥设备在连接本地终端设备的VLAN上使能ARPSnooping功能,且使能ARPSnooping功能表示边缘桥设备需要学习VLAN内所有端口收到的ARP请求报文中携带的IP地址和MAC地址;在VLAN内的端口上收到ARP请求报文后,将ARP请求报文上送至本设备的CPU,以学习ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录本地终端设备的IP地址与MAC地址的对应关系。
进一步,边缘桥设备接收ARP请求报文后还包括:边缘桥设备生成ARP请求报文对应的ARP应答报文,并将ARP应答报文发送给本地终端设备;在该ARP应答报文中,发送端IP地址为网关设备的IP地址,目标端IP地址为本地终端设备的IP地址,发送端MAC地址为本边缘桥设备的MAC地址,目标端MAC地址为本地终端设备的MAC地址。
本发明实施例中,大二层网络为SPBM网络,边缘桥设备为BEB设备;或者,大二层网络为TRILL网络,边缘桥设备为RB设备。
为了更加清楚的阐述本发明实施例提供的技术方案,以基于SPB协议的SPBM网络为例,则该SPBM网络的应用场景可以如图2所示;本发明实施例提出的报文传输方法,可以应用于包括源终端设备、源BEB设备、目的终端设备、目的BEB设备和网关设备的SPBM网络中;其中,在该源BEB设备和目的BEB设备上需要实现三层转发功能和代理网关功能。
在主机1向主机2发送报文的过程中,源终端设备为主机1,源BEB设备为BEB1,目的终端设备为主机2,目的BEB设备为BEB2,且在图2所示应用场景下,网关设备部署在BCB1上。在主机2向主机1发送报文的过程中,源终端设备为主机2,源BEB设备为BEB2,目的终端设备为主机1,目的BEB设备为BEB1,且在图2所示应用场景下,网关设备部署在BCB1上。
本发明实施例中,可以配置各BEB设备在连接主机的VLAN上使能ARPSnooping(探测),使能ARPSnooping功能表示BEB设备需要学习该VLAN内所有端口收到的ARP报文中携带的IP地址和MAC地址;因此,BEB设备上连接主机的VLAN在使能ARPSnooping之后,该VLAN内所有端口上接收的ARP请求报文均会重定向到CPU(CentralProcessingUnit,中央处理单元),由CPU对重定向上送的ARP请求报文进行分析,以获取ARP请求报文中携带的发送端IP地址、发送端MAC地址、VLAN和入端口等信息。
本发明实施例中,各BEB设备上仅需要配置一条默认路由(即一种特殊的静态路由),该默认路由用于使各BEB设备将报文发送给网关设备;因此,各BEB设备在收到来自相应主机的报文之后,在做三层转发处理时,只能匹配到该默认路由,继而将该报文发送给网关设备,由网关设备进行后续处理。
一、在上述应用场景下,针对主机1的ARP学习过程,包括以下步骤:
步骤1、主机1向BEB1发送ARP请求报文,该ARP请求报文中携带作为发送端的主机1的MAC地址(1-1-1)和IP地址(1.1.1.2)、以及作为目标端的网关设备的IP地址和MAC地址,其中网关设备的MAC地址填充为FFFF-FFFF-FFFF,且该ARP请求报文以太网报头中的源MAC地址为主机1的MAC地址。
步骤2、BEB1在收到ARP请求报文后,进行源MAC地址学习,从而学习到主机1的MAC地址,在MAC地址表中记录MAC地址(1-1-1)与接收端口的对应关系;并学习ARP请求报文中携带的发送端的MAC地址(1-1-1)和IP地址(1.1.1.2),在路由表中记录MAC地址(1-1-1)、IP地址(1.1.1.2)和接收端口之间的对应关系。
本发明实施例中,由于BEB1上在连接主机的VLAN上使能ARPSnooping,基于此,BEB1在连接主机1的VLAN上使能ARPSnooping功能之后,如果BEB1在该VLAN内的端口上收到来自主机1的ARP请求报文(携带主机1的IP地址和MAC地址),则BEB1需要将该ARP请求报文上送至CPU,通过CPU学习该ARP请求报文中携带的主机1的IP地址和MAC地址,并在本设备的路由表中记录该主机1的IP地址与MAC地址的对应关系,对于路由表中的其它信息不再赘述。
此外,BEB1还需要启用代理网关功能对ARP请求报文进行响应,生成ARP应答报文,并将该ARP应答报文发送给主机1;在该ARP应答报文中,发送端IP地址为网关设备的IP地址(1.1.1.1),目标端IP地址为主机1的IP地址(1.1.1.2),发送端MAC地址为BEB1的MAC地址(5-5-5),目标端MAC地址为主机1的MAC地址(1-1-1),且该ARP应答报文的以太网报头的源、目的MAC地址分别为BEB1和主机1的MAC地址。
步骤3、主机1在收到ARP应答报文后,学习到网关的IP地址(1.1.1.1)和MAC地址(5-5-5)之间的对应关系。这样,对于主机1来说,它将认为网关的MAC地址为5-5-5。
步骤4、对于上送CPU的所述ARP请求报文,BEB1进一步通过查找路由表进行转发,由于路由表中仅配置了一条默认路由,因此根据默认路由对ARP请求报文进行GRE(GenericRoutingEncapsulation,通用路由封装)封装,GRE封装后的报文的隧道头部的源、目的IP地址分别为BEB1、网关设备的IP地址,并将经GRE封装后的ARP请求报文发送给网关设备(网关设备部署在BCB1上)。
步骤5、网关设备对GRE封装后的ARP请求报文进行解封装,以得到相应的ARP请求报文;学习ARP请求报文中携带的发送端的MAC地址(1-1-1)和IP地址(1.1.1.2),在路由表中记录发送端的MAC地址(1-1-1)、IP地址(1.1.1.2)和接收端口之间的对应关系。
本发明实施例中,网关设备在接收到来自BEB1的ARP请求报文(携带主机1的MAC地址(1-1-1)和IP地址(1.1.1.2))后,该网关设备需要学习ARP请求报文中携带的主机1的MAC地址(1-1-1)和IP地址(1.1.1.2),并进一步获得BEB1的IP地址(私网IP地址192.168.1.4)和MAC地址(5-5-5),从而在路由表中记录主机1的MAC地址(1-1-1)和IP地址(1.1.1.2)、以及GRE隧道信息的对应关系,所述GRE隧道信息包括GRE隧道对端的BEB1的IP地址(192.168.1.4)和MAC地址(5-5-5)。
进一步的,为了使网关设备能够获得BEB1的IP地址和MAC地址,网关设备可以在拓扑表中预先维护网络中各BEB设备的IP地址与MAC地址间的对应关系;在收到来自BEB1的ARP请求报文时,网关设备直接确定BEB1的MAC地址,并通过BEB1的MAC地址查询拓扑表,得到BEB1的IP地址。
SPBM网络中各设备需要保留一个VLAN(为防止二层转发环路,该保留VLAN上的二层转发功能需要关闭),该VLAN用来学习SPBM网络中其它设备保留VLAN的MAC地址和IP地址。基于此VLAN,SPBM网络中的各设备通过扩展ISIS协议的方式,将本设备上保留VLAN的MAC地址和IP地址逐跳地通知到SPBM网络中的所有设备;因此,网关设备可在拓扑表中预先维护SPBM网络中各BEB设备的IP地址与MAC地址间的对应关系。
步骤6、网关设备对ARP请求报文进行响应,生成一ARP应答报文,对该ARP应答报文进行GRE封装,将封装后的ARP应答报文发送给BEB1;在该ARP应答报文中,发送端IP地址为网关设备的IP地址(1.1.1.1),目标端IP地址为主机1的IP地址(1.1.1.2),发送端MAC地址为网关设备的MAC地址(3-3-3),目标端MAC地址为主机1的MAC地址(1-1-1),且该ARP应答报文的以太网报头的源、目的MAC地址分别为网关设备和主机1的MAC地址。
步骤7、BEB1收到来自网关设备的GRE封装后的ARP应答报文后,发现已经代理网关功能对主机1进行了响应,因此丢弃ARP应答报文。
二、在上述应用场景下,针对主机2的ARP学习过程,包括以下步骤:
步骤1、主机2向BEB2发送ARP请求报文,该ARP请求报文中携带作为发送端的主机2的MAC地址(2-2-2)和IP地址(2.2.2.2)、以及作为目标端的网关设备的IP地址和MAC地址,其中网关设备的MAC地址填充为FFFF-FFFF-FFFF,且该ARP请求报文以太网报头中的源MAC地址为主机2的MAC地址。
步骤2、BEB2在收到ARP请求报文后,进行源MAC地址学习,从而学习到主机2的MAC地址,在MAC地址表中记录MAC地址(2-2-2)与接收端口的对应关系;并学习ARP请求报文中携带的发送端的MAC地址(2-2-2)和IP地址(2.2.2.2),在路由表中记录MAC地址(2-2-2)、IP地址(2.2.2.2)和接收端口之间的对应关系。
本发明实施例中,由于BEB2上在连接主机的VLAN上使能ARPSnooping,基于此,BEB2在连接主机2的VLAN上使能ARPSnooping功能之后,如果BEB2在该VLAN内的端口上收到来自主机2的ARP请求报文(携带主机2的IP地址和MAC地址),则BEB2需要将该ARP请求报文上送至CPU,通过CPU学习该ARP请求报文中携带的主机2的IP地址和MAC地址,并在本设备的路由表中记录该主机2的IP地址与MAC地址的对应关系,对于路由表中的其它信息不再赘述。
此外,BEB2还需要启用代理网关功能对ARP请求报文进行响应,生成ARP应答报文,并将该ARP应答报文发送给主机2;在该ARP应答报文中,发送端IP地址为网关设备的IP地址(1.1.1.1),目标端IP地址为主机2的IP地址(2.2.2.2),发送端MAC地址为BEB2的MAC地址(6-6-6),目标端MAC地址为主机2的MAC地址(2-2-2),且该ARP应答报文的以太网报头的源、目的MAC地址分别为BEB2和主机2的MAC地址。
步骤3、主机2在收到ARP应答报文后,学习到网关的IP地址(1.1.1.1)和MAC地址(6-6-6)之间的对应关系。这样,对于主机1来说,它将认为网关的MAC地址为6-6-6。
步骤4、对于上送CPU的所述ARP请求报文,BEB2进一步通过查找路由表进行转发,由于路由表中仅配置了一条默认路由,因此根据默认路由对ARP请求报文进行GRE封装,GRE封装后的报文的隧道头部的源、目的IP地址分别为BEB2、网关设备的IP地址,并将经GRE封装后的ARP请求报文发送给网关设备(网关设备部署在BCB1上)。
步骤5、网关设备对GRE封装后的ARP请求报文进行解封装,以得到相应的ARP请求报文;学习ARP请求报文中携带的发送端的MAC地址(2-2-2)和IP地址(2.2.2.2),在路由表中记录发送端的MAC地址(2-2-2)、IP地址(2.2.2.2)和接收端口之间的对应关系。
本发明实施例中,网关设备在接收到来自BEB2的ARP请求报文(携带主机2的MAC地址(2-2-2)和IP地址(2.2.2.2))后,该网关设备需要学习ARP请求报文中携带的主机2的MAC地址(2-2-2)和IP地址(2.2.2.2),并进一步获得BEB2的IP地址(私网IP地址192.168.1.5)和MAC地址(6-6-6),从而在路由表中记录主机2的MAC地址(2-2-2)和IP地址(2.2.2.2)、以及GRE隧道信息的对应关系,所述GRE隧道信息包括GRE隧道对端的BEB2的IP地址(192.168.1.5)和MAC地址(6-6-6)。
进一步的,为了使网关设备能够获得BEB2的IP地址和MAC地址,网关设备可以在拓扑表中预先维护网络中各BEB设备的IP地址与MAC地址间的对应关系;在收到来自BEB2的ARP请求报文时,网关设备直接确定BEB2的MAC地址,并通过BEB2的MAC地址查询拓扑表,得到BEB2的IP地址。
SPBM网络中各设备需要保留一个VLAN(为防止二层转发环路,该保留VLAN上的二层转发功能需要关闭),该VLAN用来学习SPBM网络中其它设备保留VLAN的MAC地址和IP地址。基于此VLAN,SPBM网络中的各设备通过扩展ISIS协议的方式,将本设备上保留VLAN的MAC地址和IP地址逐跳地通知到SPBM网络中的所有设备;因此,网关设备可在拓扑表中预先维护SPBM网络中各BEB设备的IP地址与MAC地址间的对应关系。
步骤6、网关设备对ARP请求报文进行响应,生成一ARP应答报文,对该ARP应答报文进行GRE封装,将封装后的ARP应答报文发送给BEB2;在该ARP应答报文中,发送端IP地址为网关设备的IP地址(2.2.2.1),目标端IP地址为主机2的IP地址(2.2.2.2),发送端MAC地址为网关设备的MAC地址(3-3-3),目标端MAC地址为主机1的MAC地址(2-2-2),且该ARP应答报文的以太网报头的源、目的MAC地址分别为网关设备和主机2的MAC地址。
步骤7、BEB2收到来自网关设备的GRE封装后的ARP应答报文后,发现已经代理网关功能对主机2进行了响应,因此丢弃ARP应答报文。
三、在上述应用场景下,基于主机1的ARP学习过程和主机2的ARP学习过程,在主机1向主机2发送报文时,如图3所示,该报文传输方法包括以下步骤:
步骤301,主机1向主机2发送报文,该报文的目的IP地址为主机2的IP地址(2.2.2.2),目的MAC地址为主机1记录的网关MAC地址,即BEB1的MAC地址(5-5-5);该报文的源IP地址为主机1的IP地址(1.1.1.2),源MAC地址为主机1的MAC地址(1-1-1)。
步骤302,BEB1接收主机1发送给主机2的上述报文(目的IP地址为主机2的IP地址(2.2.2.2),目的MAC地址为BEB1的MAC地址(5-5-5)),由于目的MAC地址为自身,因此BEB1通过查找路由表转发上述报文,由于查找路由表匹配默认路由,因此根据默认路由对报文进行GRE封装,并将GRE封装后的报文发送给网关设备。
本发明实施例中,各BEB上会配置到网关设备的默认路由(即网关设备的IP地址192.168.1.1和MAC地址3-3-3),基于该默认路由,BEB1在收到主机1发送给主机2的报文后,只能匹配到该默认路由,并利用网关设备的IP地址(192.168.1.1)和MAC地址(3-3-3)对报文进行GRE封装;具体的,先为该报文增加GRE头(GREheader)得到GRE报文;之后根据网关设备的IP地址(192.168.1.1)和MAC地址(3-3-3),为该GRE报文增加传输协议的报文头(Deliveryheader)以及以太网报头,得到GRE封装后的报文;在GRE封装后的报文的GRE隧道头部中,源IP地址为BEB1的IP地址源,目的IP地址为网关设备的IP地址(192.168.1.1),目的MAC地址为为网关设备的MAC地址(3-3-3)。
步骤303,网关设备对GRE封装后的报文进行解封装(具体解封装方式不再赘述,以得到主机1发送给主机2的报文),利用解封装后的报文的目的IP地址(2.2.2.2)查询路由表,得到目的IP地址(2.2.2.2)对应的BEB2的IP地址(192.168.1.5)和MAC地址(6-6-6)。
具体的,在网关设备维护的路由表中,记录有主机2的MAC地址(2-2-2)和IP地址(2.2.2.2)以及GRE隧道信息的对应关系,所述GRE隧道信息包括GRE隧道对端的BEB2的IP地址(192.168.1.5)和MAC地址(6-6-6);因此,网关设备在利用目的IP地址(2.2.2.2)查询路由表时,可以得到BEB2的IP地址(192.168.1.5)以及MAC地址(6-6-6)。
步骤304,网关设备利用BEB2的IP地址(192.168.1.5)和MAC地址(6-6-6)对报文进行GRE封装,具体的,先为该报文增加GRE头(GREheader)得到GRE报文;再根据BEB2的IP地址(192.168.1.5)和MAC地址(6-6-6),为该GRE报文增加传输协议的报文头(Deliveryheader)以及以太网报头,得到GRE封装后的报文;其中,在GRE封装后的报文的GRE隧道头部中,目的IP地址为BEB2的IP地址(192.168.1.5),目的MAC地址为BEB2的MAC地址(6-6-6)。
步骤305,GRE封装后的报文的目的MAC地址为BEB2的MAC地址(6-6-6),网关设备根据该目的MAC地址将GRE封装后的报文发送给BEB2。
步骤306,BEB2对GRE封装后的报文进行GRE解封装(具体解封装方式在此不再赘述,以得到主机1发送给主机2的报文),利用解封装后的报文的目的IP地址(2.2.2.2)查询路由表,得到主机2的MAC地址(2-2-2)。
具体的,在BEB2维护的路由表中,记录有主机2的IP地址(2.2.2.2)与MAC地址(2-2-2)之间的对应关系;因此,BEB2在利用目的IP地址(2.2.2.2)查询路由表时,可以得到主机2的MAC地址(2-2-2)。
步骤307,BEB2将报文的目的MAC地址修改为主机2的MAC地址(2-2-2),将报文的源MAC地址修改为本设备的MAC地址(6-6-6)。
情况一、如果网关设备对报文进行GRE封装时,剥掉报文的目的MAC地址和源MAC地址,则BEB2直接在报文中添加目的MAC地址为主机2的MAC地址(2-2-2),源MAC地址为本设备的MAC地址(6-6-6)。
方式二、如果网关设备对报文进行GRE封装时,未剥掉报文的目的MAC地址和源MAC地址,则BEB2将报文的目的MAC地址修改为主机2的MAC地址(2-2-2),将报文的源MAC地址修改为本设备的MAC地址(6-6-6)。
步骤308,BEB2将修改后的报文发送给主机2。
四、在上述应用场景下,基于主机1的ARP学习过程和主机2的ARP学习过程,在主机2向主机1发送报文时,如图4所示,该报文传输方法包括以下步骤:
步骤401,主机2向主机1发送报文,该报文的目的IP地址为主机1的IP地址(1.1.1.2),目的MAC地址为主机2记录的网关MAC地址,即BEB2的MAC地址(6-6-6);该报文的源IP地址为主机2的IP地址(2.2.2.2),源MAC地址为主机2的MAC地址(2-2-2)。
步骤402,BEB2接收主机2发送给主机1的上述报文(目的IP地址为主机1的IP地址(1.1.1.2),目的MAC地址为BEB2的MAC地址(6-6-6)),由于目的MAC地址为自身,因此BEB2通过查找路由表转发上述报文,由于查找路由表匹配默认路由,因此根据默认路由对报文进行GRE封装,并将GRE封装后的报文发送给网关设备。
本发明实施例中,各BEB上会配置到网关设备的默认路由(即网关设备的IP地址192.168.1.1和MAC地址3-3-3),基于该默认路由,BEB2在收到主机2发送给主机1的报文后,只能匹配到该默认路由,并利用网关设备的IP地址(192.168.1.1)和MAC地址(3-3-3)对报文进行GRE封装;具体的,先为该报文增加GRE头得到GRE报文;之后根据网关设备的IP地址(192.168.1.1)和MAC地址(3-3-3),为GRE报文增加传输协议的报文头和以太网报头,得到GRE封装后报文;在GRE封装后报文的GRE隧道头部中,源IP地址为BEB2的IP地址源,目的IP地址为网关设备的IP地址(192.168.1.1),目的MAC地址为为网关设备的MAC地址(3-3-3)。
步骤403,网关设备对GRE封装后的报文进行解封装(具体解封装方式不再赘述,以得到主机2发送给主机1的报文),利用解封装后的报文的目的IP地址(1.1.1.2)查询路由表,得到目的IP地址(1.1.1.2)对应的BEB1的IP地址(192.168.1.4)和MAC地址(5-5-5)。
具体的,在网关设备维护的路由表中,记录有主机1的MAC地址(1-1-1)和IP地址(1.1.1.2)以及GRE隧道信息的对应关系,所述GRE隧道信息包括GRE隧道对端的BEB1的IP地址(192.168.1.4)和MAC地址(5-5-5);因此,网关设备在利用目的IP地址(1.1.1.2)查询路由表时,可以得到BEB1的IP地址(192.168.1.4)以及MAC地址(5-5-5)。
步骤404,网关设备利用BEB1的IP地址(192.168.1.4)和MAC地址(5-5-5)对报文进行GRE封装,具体的,先为该报文增加GRE头(GREheader)得到GRE报文;再根据BEB1的IP地址(192.168.1.4)和MAC地址(5-5-5),为该GRE报文增加传输协议的报文头(Deliveryheader)以及以太网报头,得到GRE封装后的报文;其中,在GRE封装后的报文的GRE隧道头部中,目的IP地址为BEB1的IP地址(192.168.1.4),目的MAC地址为BEB1的MAC地址(5-5-5)。
步骤405,GRE封装后的报文的目的MAC地址为BEB1的MAC地址(5-5-5),网关设备根据该目的MAC地址GRE封装后的报文发送给BEB1。
步骤406,BEB1对GRE封装后的报文进行GRE解封装(具体解封装方式在此不再赘述,以得到主机2发送给主机1的报文),利用解封装后的报文的目的IP地址(1.1.1.2)查询路由表,得到主机1的MAC地址(1-1-1)。
具体的,在BEB1维护的路由表中,记录有主机1的IP地址(1.1.1.2)与MAC地址(1-1-1)之间的对应关系;因此,BEB1在利用目的IP地址(1.1.1.2)查询路由表时,可以得到主机1的MAC地址(1-1-1)。
步骤407,BEB1将报文的目的MAC地址修改为主机1的MAC地址(1-1-1),将报文的源MAC地址修改为本设备的MAC地址(5-5-5)。
情况一、如果网关设备对报文进行GRE封装时,剥掉报文的目的MAC地址和源MAC地址,则BEB1直接在报文中添加目的MAC地址为主机1的MAC地址(1-1-1),源MAC地址为本设备的MAC地址(5-5-5)。
方式二、如果网关设备对报文进行GRE封装时,未剥掉报文的目的MAC地址和源MAC地址,则BEB1将报文的目的MAC地址修改为主机1的MAC地址(1-1-1),将报文的源MAC地址修改为本设备的MAC地址(5-5-5)。
步骤408,BEB1将修改后的报文发送给主机1。
需要说明的是,上述为基于SPB协议的SPBM网络的报文传输流程,对于基于TRILL协议的TRILL网络,BEB设备为相应的入口路由桥(IngressRB,IngressRoutingBridge)设备(相当于源BEB设备)和出口RB设备(EgressRB)(相当于目的BEB设备),BCB设备为相应的传输RB(TransitRB)设备;在TRILL网络中,与上述报文传输流程相比,只是多了ECMP(EqualCostMultipathRouting,等价多路径)的处理,即网关设备在向入口RB设备和出口RB设备发送报文时,需要根据报文的字段计算出哈希值,从而选择一条最优路径来发送报文,其他流程与上述报文传输流程类似,在此不再赘述。
当然,本发明实施例提供的方法并不局限于基于SPB协议的SPBM网络和基于TRILL协议的TRILL网络,对于其它按照上述流程实现报文转发的网络,均在本发明保护范围之内,对于其它网络的处理在此不再赘述。
综上所述,本发明实施例中,通过在边缘桥设备上进行三层转发,使网关设备的功能由二层转发和三层转发同时存在,变成了单纯三层转发,即网关设备将GRE格式报文解封装后,再封装成GRE格式报文,并向边缘桥设备发送GRE封装后的报文,以避免先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表的处理流程,从而在芯片的处理流程无法实现先利用目的IP地址查询路由表,再利用目的MAC地址查询MAC地址表时,可以正常转发不同终端设备之间需要传输的报文,避免在SPBM网络使用SPB协议或者在TRILL网络使用TRILL协议时,报文无法正常传输的情况。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种网关设备,应用于包括终端设备、边缘桥设备和所述网关设备的大二层网络中,其中,所述边缘桥设备与所述终端设备直接连接,在所述边缘桥设备上实现三层转发功能时,如图5所示,所述网关设备具体包括:
接收模块11,用于接收来自边缘桥设备的GRE封装的第一报文;
解封装模块12,用于对收到GRE封装的第一报文解封装后得到第二报文;
查询模块13,用于根据所述第二报文的目的IP地址,查找本地路由表中维护的终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系;
封装模块14,用于根据查找到的第二报文的目的IP地址对应的边缘桥设备的IP地址和MAC地址,对所述第二报文进行GRE封装后生成第三报文;
发送模块15,用于将GRE封装的第三报文发送给对应的边缘桥设备;由该边缘桥设备对第三报文解GRE封装得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的本地终端设备的IP地址与MAC地址的对应关系,确定第二报文的目的IP地址对应的MAC地址后进行转发;
本发明实施例中,所述大二层网络为SPBM网络,所述边缘桥设备为BEB设备;或者,所述大二层网络为TRILL网络,所述边缘桥设备为RB设备。
所述网络设备还包括:维护模块16;所述接收模块11,还用于接收终端设备相连的边缘桥设备转发的来自所述终端设备的ARP请求报文,所述ARP请求报文中携带了终端设备的IP地址和MAC地址;所述维护模块16,用于学习所述ARP请求报文中携带的终端设备的IP地址和MAC地址,并获得终端设备相连的边缘桥设备的IP地址和MAC地址;以及,在本地路由表中记录终端设备IP地址和MAC地址、以及与终端设备相连的边缘桥设备的IP地址和MAC地址之间的对应关系。
所述维护模块16,进一步用于在拓扑表中预先维护所述大二层网络中各边缘桥设备的IP地址与MAC地址之间的对应关系;在收到来自边缘桥设备的ARP请求报文时,确定所述边缘桥设备的MAC地址,并通过所述边缘桥设备的MAC地址查询所述拓扑表,以得到所述边缘桥设备的IP地址。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
基于与上述方法同样的发明构思,本发明实施例中还提供了一种边缘桥设备,应用于包括终端设备、边缘桥设备和网关设备的大二层网络中,其中,所述边缘桥设备与所述终端设备直接连接,在所述边缘桥设备上实现三层转发功能时,如图6所示,所述边缘桥设备具体包括:
接收模块21,用于当所述边缘桥设备为源端设备时,接收来自所述终端设备且目的MAC地址为所述边缘桥设备的MAC地址的第二报文;当所述边缘桥设备为目的端设备时,接收来自网关设备的GRE封装的第三报文,该第三报文是网关设备在对收到的GRE封装的第一报文解封装后得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的终端设备IP地址和MAC地址、以及与终端设备相连边缘桥设备的IP地址和MAC地址之间的对应关系,并根据查找到的第二报文的目的IP地址对应的边缘桥设备的IP地址和MAC地址,对第二报文进行GRE封装后生成并发送的;
处理模块22,用于当所述边缘桥设备为源端设备时,匹配到本地路由表中的默认路由,并利用所述默认路由中设置的网关设备的IP地址和MAC地址,对所述第二报文进行GRE封装后生成第一报文;
当所述边缘桥设备为目的端设备时,对所述第三报文解GRE封装得到第二报文,根据第二报文的目的IP地址,查找本地路由表中维护的本地终端设备的IP地址与MAC地址的对应关系;
发送模块23,用于当所述边缘桥设备为源端设备时,将GRE封装的第一报文发送给所述网关设备;当所述边缘桥设备为目的端设备时,利用查找到的定第二报文的目的IP地址对应的MAC地址进行第二报文的转发;
本发明实施例中,所述大二层网络为SPBM网络,所述边缘桥设备为BEB设备;或者,所述大二层网络为TRILL网络,所述边缘桥设备为RB设备。
所述边缘桥设备还包括:维护模块24;所述接收模块21,还用于接收来自本地终端设备的ARP请求报文,所述ARP请求报文中携带所述本地终端设备的IP地址和MAC地址;所述维护模块24,用于学习所述ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录所述本地终端设备的IP地址与MAC地址的对应关系。
所述发送模块23,还用于生成所述ARP请求报文对应的ARP应答报文,并将所述ARP应答报文发送给所述本地终端设备;在所述ARP应答报文中,发送端IP地址为网关设备的IP地址,目标端IP地址为本地终端设备的IP地址,发送端MAC地址为本边缘桥设备的MAC地址,目标端MAC地址为本地终端设备的MAC地址。
所述维护模块24,具体用于在连接本地终端设备的VLAN上使能ARPSnooping功能,且使能ARPSnooping功能表示所述边缘桥设备需要学习所述VLAN内所有端口收到的ARP请求报文中携带的IP地址和MAC地址;
在所述VLAN内的端口上收到所述ARP请求报文后,将所述ARP请求报文上送至本设备的CPU,以学习所述ARP请求报文中携带的本地终端设备的IP地址和MAC地址,并在本地路由表中记录所述本地终端设备的IP地址与MAC地址的对应关系。
其中,本发明装置的各个模块可以集成于一体,也可以分离部署。上述模块可以合并为一个模块,也可以进一步拆分成多个子模块。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
本领域技术人员可以理解附图只是一个优选实施例的示意图,附图中的模块或流程并不一定是实施本发明所必须的。
本领域技术人员可以理解实施例中的装置中的模块可以按照实施例描述进行分布于实施例的装置中,也可以进行相应变化位于不同于本实施例的一个或多个装置中。上述实施例的模块可以合并为一个模块,也可以进一步拆分成多个子模块。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
以上公开的仅为本发明的几个具体实施例,但是,本发明并非局限于此,任何本领域的技术人员能思之的变化都应落入本发明的保护范围。