背景技术
SPB是电气和电子工程师协会(IEEE,Institute of Electrical andElectronics Engineers)802.1aq定义的以太网标准之一,是多实例生成树协议(MSTP,Multiple Spanning Tree Protocol)的进一步延伸,旨在构建大型扁平的无阻塞二层网络,使用SPB-中间***到中间***(ISIS,IntermediateSystem to Intermediate System)来共享网络中的链路状态,网络各个节点并行计算各节点之间的最短路径,避免了使用生成树协议(STP,Spanning TreeProtocol)带来的不稳定性和部分链路利用效率低下的不足。802.1aq定义了两个SPB模式:虚拟局域网(VLAN,Virtual Local Area Network)模式(SPBV)和M-in-M模式(SPBM),其中SPBM是目前的主要推荐模式,在数据中心网络中广泛使用。
在SPBM网络中,骨干网主要包括骨干网边缘网桥(BEB,Backbone EdgeBridge)和骨干网核心网桥(BCB,Backbone Core Bridge)等类型的设备以及这些设备之间的骨干链路。其中:
BEB:相当于MPLS网络中的服务提供商网络边缘(PE,Provider Edge)设备。它负责将来自用户网络的报文进行M-in-M封装,并将得到的M-in-M报文转发到骨干网中,或者将来自骨干网的M-in-M报文进行解封装,并转发到用户网络中。
BCB:相当于MPLS网络中的P设备。它负责按照骨干网媒体访问控制地址(B-MAC,Backbone Media Access Control)和骨干网VLAN(B-VLAN,Backbone VLAN)转发M-in-M报文。BCB设备只需要转发报文和学习骨干网中的MAC地址,不需要学习用户网络中大量的MAC地址,从而降低了网络部署的成本,也为骨干网络提供了更好的可扩展性。
SPBM继承了802.1ah定义的M-in-M的封装格式。图1为现有的SPBM定义的M-in-M报文封装格式示意图,如图1所示,用户原始的以太网报文外层增加了虚拟服务实例(VSI,Virtual Service Instance)、B-VLAN、B-MAC地址信息,骨干网络通过这些信息进行转发。其中:
B-MAC/B-VLAN:BEB设备在对用户报文进行M-in-M封装时,会为用户报文打上运营商为本设备分配的MAC地址和VLAN。该由运营商分配的MAC地址和VLAN就分别称为B-MAC地址和B-VLAN。B-MAC地址包括:源B-MAC地址和目的B-MAC地址,BEB设备在对用户报文进行M-in-M封装时,会将自己的MAC地址作为源B-MAC地址,将SPBM隧道目的端的BEB设备的MAC地址作为目的B-MAC地址进行封装。
VSI和骨干网VSI编号(I-SID,Backbone Service Instance Identifier):在骨干网中,一个VSI代表一类业务或者用户,I-SID是VSI的唯一编号。
骨干网目的MAC地址(B-DA,Backbone Destination MAC address):即目的B-MAC地址,是M-in-M封装的外层目的MAC地址,为SPBM隧道目的端的BEB设备的MAC地址。
骨干网源MAC地址(B-SA,Backbone Source MAC address),即源B-MAC地址,是M-in-M封装的外层源MAC地址,为SPBM隧道源端的BEB设备的MAC地址。
骨干网VLAN标签(B-Tag,Backbone VLAN Tag):即B-VLAN Tag,是M-in-M封装的外层VLAN Tag,用于标识报文在骨干网中的VLAN和优先级信息,其标签协议标识(TPID,Tag Protocol Identifier)值固定为0x88a8。
骨干网VSI标签(I-Tag,Backbone Service Instance Tag):M-in-M封装中的业务标记,包括:报文在BEB设备上处理时的传送优先级I-PCP和丢弃优先级I-DEI、标识VSI的I-SID,其TPID值固定为0x88e7。
用户目的MAC地址(C-DA,Customer Destination MAC address):用户报文原始的目的MAC地址。
用户源MAC地址(C-SA,Customer Source MAC address):用户报文原始的源MAC地址。
BEB设备从连接用户网络的用户侧端口收到用户报文后,根据报文入端口和VLAN映射到相应的VSI中进行查表转发,如果查到的出接口为SPBM隧道口,则根据该VSI与B-VLAN的映射关系,得到B-Tag,然后使用该VSI的I-SID,B-Tag和B-MAC对该用户报文进行M-in-M隧道封装。经过M-in-M隧道封装后的报文进入SPB网络后,BCB设备根据报文头的B-MAC地址、B-VLAN进行转发。
SPB提供了不同地域的用户之间的二层互联。当BEB设备在SPB网和L3VPN中间时,需要实现SPB网和L3VPN的域间互访。图2为现有的SPB网到L3VPN互访组网示意图,如图2所示:
L3VPN的PE设备作为SPB网的BEB设备的用户边缘(CE,CustomerEdge)设备,PE设备对用户IP报文封装MPLS标签和二层头部后,将报文发送到BEB设备,BEB设备接收到的是一个二层以太报文或者是MPLS报文,不过BEB设备不关注报文类型,仅仅根据目的MAC地址在SPB网内进行MAC表查找,根据查找的结果转发报文,若目的MAC地址是远端MAC地址则封装M-in-M隧道头部转发到SPB公网,若是本地MAC地址则直接通过本地端口转发。
BEB设备从SPB网内接收到的是二层报文或者M-in-M隧道报文,对于二层报文直接查询MAC表转发,对于M-in-M隧道报文先终结掉M-in-M隧道头部然后再进行MAC表查找,根据查询结果转发报文。
现有的SPB与L3VPN网络互联时必须通过实际组网设备将SPB网和L3VPN完全隔开,无法实现同一个边缘设备的集成接入,对网络设备资源是一种较大的浪费。
发明内容
本发明提供SPB网和L3VPN互通方法及公共边缘设备,以降低SPB网和L3VPN互通时的设备成本。
本发明的技术方案是这样实现的:
一种最短路径桥SPB和三层虚拟专网L3VPN互通方法,SPB网与L3VPN通过一公共边缘设备相连,该公共边缘设备同时作为SPB网的骨干网边缘网桥BEB设备和L3VPN的服务提供商网络边缘PE设备,同时在该公共边缘设备上配置VPN实例与SPB网的虚拟服务实例VSI的关联关系,其中,每个VPN实例具备一个网关接口IP地址和媒体访问控制MAC地址,不同VPN实例的网关接口MAC地址不同,对于位于同一SPB虚链路PW两端的公共边缘设备,在每个公共边缘设备上配置对端公共边缘设备的各VPN实例的网关接口IP地址,该方法包括:
每个公共边缘设备将自身的各VPN实例的网关接口MAC地址发布到SPB网内,以触发生成该MAC地址在SPB网内的转发路径;
对于每个VPN实例,公共边缘设备根据该VPN实例与VSI的关联关系以及SPB PW对端的公共边缘设备的网关接口IP地址,学习对端公共边缘设备的IP地址解析表项和主机路由表项;
公共边缘设备通过VPN实例的网关接口与各对端公共边缘设备交互各自的VPN路由信息用户边缘CE设备的路由信息,创建VPN实例的路由表项;
公共边缘设备根据学习到的VPN实例的网关接口MAC地址的转发路径、IP地址解析表项和所述VPN实例的路由表项,将来自VPN内的报文转发到SPB网中,或者将来自SPB网的报文转发到VPN中。
所述创建VPN实例的路由表项包括:
当公共边缘设备接收到一对端公共边缘设备发来的一VPN实例内的VPN路由时,将对端公共边缘设备的该VPN实例的网关接口IP地址作为该路由的下一跳地址,并查找到与该VPN实例标识和下一跳地址匹配的主机路由表项,以该主机路由表项中的出接口作为该VPN路由的出接口,建立该VPN的路由表项。
所述公共边缘设备学习对端公共边缘设备的IP地址解析表项和主机路由表项包括:
对于每个VPN实例,公共边缘设备接收SPB PW对端的公共边缘设备发来的IP地址解析请求报文,该报文的外层隧道头中包含该VPN实例关联的VSI标识,该报文的内层二层头中的发送端MAC地址为对端公共边缘设备的该VPN实例的网关接口MAC地址,发送端IP地址为对端公共边缘设备的该VPN实例的网关接口IP地址,目标端IP地址为本公共边缘设备的该VPN实例的网关IP地址,VLAN ID为该VPN实例的VLAN ID,边缘设备根据报文中的VLAN ID确定VPN实例标识,学习IP地址解析表项和主机路由表项。
所述公共边缘设备将来自VPN内的报文转发到SPB网中包括:
公共边缘设备接收到来自VPN的报文,在该报文的目的MAC地址为本身边一VPN实例的网关接口的MAC地址时,根据报文的目的IP地址查找到对应的VPN实例的路由表项,根据该表项中的VPN实例标识和下一跳地址查找到对应的IP地址解析表项,根据该IP地址解析表项为报文封装二层头,其中,二层头的源MAC地址为本边缘设备的该VPN实例的网关接口MAC地址,二层头的目的MAC地址为IP地址解析表项中的MAC地址,将该报文发送到SPB网中。
所述公共边缘设备将来自SPB网的报文转发到VPN中包括:
公共边缘设备接收来自SPB网的报文,发现该报文的目的MAC地址是本设备一VPN实例的网关接口MAC地址,根据报文的目的IP地址查找到对应的VPN实例的路由表项,将该报文在该VPN实例内进行路由转发。
一种公共边缘设备,位于SPB网和L3VPN之间,且同时作为SPB网的BEB设备和L3VPN的PE设备,该公共边缘设备包括:
配置保存模块:保存VPN实例与SPB网的VSI的关联关系,其中,每个VPN实例具备一个网关接口IP地址和MAC地址,不同VPN实例的网关接口MAC地址不同,保存SPB PW对端的公共边缘设备的各VPN实例的网关接口IP地址;
表项学习模块:将配置保存模块中的本设备的各VPN实例的网关接口MAC地址发布到SPB网内,以触发生成该MAC地址在SPB网内的转发路径;对于每个VPN实例,根据配置保存模块中的该VPN实例与VSI的关联关系以及SPB PW对端的公共边缘设备的网关接口IP地址,学习对端公共边缘设备的IP地址解析表项和主机路由表项;通过VPN实例的网关接口与各对端公共边缘设备交互各自的VPN路由信息用户边缘CE设备的路由信息,创建VPN实例的路由表项;
报文转发模块:根据表项学习模块中的VPN实例的网关接口MAC地址的转发路径、IP地址解析表项和所述VPN实例的路由表项,将来自VPN内的报文转发到SPB网中,或者将来自SPB网的报文转发到VPN中。
所述表项学习模块进一步用于,根据对端公共边缘设备发来的VPN实例内的VPN路由,将配置保存模块中的该对端公共边缘设备的该VPN实例的网关接口IP地址作为该路由的下一跳地址,并查找到与该VPN实例标识和下一跳地址匹配的主机路由表项,以该主机路由表项中的出接口作为该VPN路由的出接口,建立该VPN的路由表项。
所述表项学习模块进一步用于,当学习对端公共边缘设备的IP地址解析表项和主机路由表项时,对于每个VPN实例,当接收到SPB PW对端的公共边缘设备发来的IP地址解析请求报文时,该报文的外层隧道头中包含该VPN实例关联的VSI标识,该报文的内层二层头中的发送端MAC地址为该对端公共边缘设备的该VPN实例的网关接口MAC地址,发送端IP地址为该对端公共边缘设备的该VPN实例的网关接口IP地址,目标端IP地址为本公共边缘设备的该VPN实例的网关IP地址,VLAN ID为该VPN实例的VLAN ID,根据报文中的VLAN ID确定VPN实例标识,学习IP地址解析表项和主机路由表项。
所述报文转发模块进一步用于,当接收到来自VPN的报文时,在该报文的目的MAC地址为本身边一VPN实例的网关接口的MAC地址时,根据报文的目的IP地址在表项学习模块中查找到对应的VPN实例的路由表项,根据该表项中的VPN实例标识和下一跳地址在表项学习模块中查找到对应的IP地址解析表项,根据该IP地址解析表项为报文封装二层头,其中,二层头的源MAC地址为本设备的该VPN实例的网关接口MAC地址,二层头的目的MAC地址为IP地址解析表项中的MAC地址,将该报文发送到SPB网中。
所述报文转发模块进一步用于,当接收到来自SPB网的报文时,若发现报文的目的MAC地址为本设备一VPN实例的网关接口MAC地址,根据报文的目的IP地址查找到对应的VPN实例的路由表项,将该报文在该VPN实例内进行路由转发。
与现有技术相比,本发明在一个公共边缘设备上集成L3VPN和SPB功能,实现了SPB网和L3VPN的直接互访,节省了网络设备资源,降低了网络设备成本。
具体实施方式
下面结合附图及具体实施例对本发明再作进一步详细的说明。
图3为本发明实施例提供的SPB网与L3VPN互联时的路由学习方法流程图,如图3所示,其具体步骤如下:
步骤301:当L3VPN与SPB网互联时,在部署网络时,将SPB网与L3VPN之间的边缘设备部署为:同时具备L3VPN的PE设备功能和SPB网的BEB设备功能,本实施例中将该边缘设备称为BEB/PE设备。
BEB/PE设备集成了L3VPN功能和SPB功能,需要实现L3VPN在SPB网内的透传,需要做到如下两个事情:在SPB网内识别VPN实例,在SPB网内适配IP转发。
步骤302:在BEB/PE设备上为每个VPN实例配置一个源MAC地址和一个网关接口,其中,网关接口的MAC地址即该VPN实例的源MAC地址,在BEB/PE设备上配置VPN实例标识、VPN实例的VLAN ID、VPN实例的网关接口MAC地址、VPN实例的网关接口IP地址与SPB网的VSI的I-SID的对应关系。
不同VPN实例可以配置相同的网关接口IP地址,但是,不同VPN实例的网关接口MAC地址必须不同。
配置了VPN实例的标识、VLAN ID、网关接口MAC地址、网关接口IP地址与VSI的I-SID的对应关系,就可以将L3VPN的VPN实例与SPB网的VSI关联起来了,即就可以在SPB网的公共边缘设备(BEB/PE)上识别VPN实例了。
多个VPN实例可以关联到同一个VSI上。作为一个可选方式,所有的VPN实例可以都关联到同一个VSI上。
步骤303:对于位于SPB虚链路(PW)两端的BEB/PE设备,在每个BEB/PE设备上配置SPB PW对端BEB/PE设备的各VPN实例的标识及网关接口IP地址。
如图4所示,BEB1/PE1、BEB2/PE2设备分别位于SPB PW的两端,则在BEB1/PE1设备上配置BEB2/PE2设备的各VPN实例的标识及网关接口IP地址,同时在BEB2/PE2设备上配置BEB1/PE1设备的各VPN实例的标识及网关接口IP地址。
步骤304:对于每个BEB/PE设备,该设备将自身各VPN实例的网关接口MAC地址在SPB网内发布,以在SPB网内的B-VLAN中形成该VPN实例的网关接口MAC地址的转发路径。
VPN实例的网关接口MAC地址的转发路径的形成和SPB网内的单播B-MAC地址一致,BEB设备只需将网关接口MAC地址和B-MAC地址一起在SPB网内进行泛洪计算,从而形成各VPN实例的网关接口MAC地址和各B-MAC地址的转发路径。具体地,SPB网的各个节点在骨干链路上交互SPB-ISIS协议报文,根据预设规则建立ISIS邻居,进行链路状态信息的同步,同步之后,每个节点都拥有整个网络中所有节点信息和链路状态信息,形成公共信息数据库,然后每个节点基于该公共信息数据库,进行最短路径树(SPT,Shortest Path Tree)计算,得到转发路径的集合。
步骤305:对于自身的每个VPN实例,任一BEB/PE设备,设为BEB1/PE1设备,针对自身各SPB PW,分别构造ARP请求报文,报文的发送端MAC地址为本设备的该VPN实例的网关接口MAC地址,目标端MAC地址为全F,发送端IP地址为本设备的该VPN实例的网关接口IP地址,目标端IP地址为任一SPB PW对端的BEB/PE设备的该VPN实例的网关接口IP地址,VLAN ID为该VPN实例的VLAN ID,然后对各报文进行M-in-M隧道头封装,将各报文通过SPB PW发送出去。
例如:若一SPB PW对端为BEB2/PE2设备,则在对ARP请求报文进行M-in-M隧道头封装时,隧道头的源MAC地址为BEB1/PE1设备的B-MAC地址,隧道头的目的MAC地址为BEB2/PE2设备的B-MAC地址,隧道头中的I-SID为该VPN实例关联的VSI的I-SID。
步骤306:任一SPB PW对端BEB/PE设备,如BEB2/PE2设备接收到该ARP请求报文,解M-IN-M封装后,发现报文内层是ARP请求报文,则将报文送往中央处理单元(CPU,Central Processing Unit),CPU从M-in-M隧道头中读取VSI的I-SID,根据报文中的VLAN ID确定VPN实例标识,学习ARP表项和主机路由表项。
ARP表项包括:VPN实例标识、IP地址、MAC地址、端口信息、ARP索引。其中:
VPN实例标识:根据原始ARP请求报文中的VLAN ID确定;
IP地址:即原始ARP请求报文的发送端IP地址,也就是BEB1/PE1设备的VPN实例的网关接口IP地址;
MAC地址:即原始ARP请求报文的发送端MAC地址,也就是BEB1/PE1设备的VPN实例的网关接口MAC地址;
端口信息:即ARP请求报文的入端口信息,以VSI标识+PW标识表示,VSI标识即ARP请求报文的隧道头中的I-SID,PW标识即承载ARP请求报文的PW标识;
ARP索引:即ARP表项的索引,由***自动生成,可从1开始,依次生成。
主机路由表项包括:VPN实例标识、路由前缀(Prefix)、下一跳地址(Next Hop Address)、出接口信息、ARP索引。其中:
VPN实例标识同ARP表项的VPN实例标识;
路由前缀同ARP表项的IP地址;
下一跳地址与路由前缀相同;
出接口信息:即ARP请求报文的入接口信息,以B-VLAN标识+端口号表示,B-VLAN标识即ARP请求报文的隧道头中的B-VLAN标签,端口号即ARP请求报文的入端口号;
ARP索引同ARP表项的ARP索引,可见,当一主机路由表项的下一跳地址与一ARP表项的IP地址相同时,该两表项的ARP索引相同。
例如:如图4所示,设BEB1/PE1设备上VPN1的网关接口IP地址为1.1.1.1,MAC地址为0000-1000-0001,VPN2的网关接口IP地址为1.1.2.1,MAC地址为0000-1000-0002,VPN1、VPN2关联到VSI1上,BEB1/PE1设备针对VPN1、VPN2分别构造ARP请求报文,该两报文都通过PW1、Port2到达BEB2设备,则BEB2设备学习到的ARP表项为:
表1BEB2/PE2设备学习到的BEB1/PE1设备的ARP表项BEB2/PE2设备学习到的主机路由表项为:
表2BEB2/PE2设备学习到的BEB1/PE1设备的主机路由表项
步骤307:BEB2/PE2设备构造ARP响应报文,报文的发送端MAC地址为BEB2/PE2设备的该VPN实例的网关接口MAC地址,目标端MAC地址为BEB1/PE1设备的该VPN实例的网关接口MAC地址,发送端IP地址为BEB2/PE2设备的该VPN实例的网关接口IP地址,目标端IP地址为BEB1/PE1设备的该VPN实例的网关接口IP地址,为报文封装M-in-M隧道头,隧道头的目的MAC地址为BEB1/PE1设备的B-MAC地址,隧道头的源MAC地址为BEB2/PE2设备的B-MAC地址,报文通过SPB PW在SPB网内转发,最终到达BEB1/PE1设备。
步骤308:BEB1/PE1设备接收ARP响应报文,解M-IN-M封装后,发现报文内层为ARP响应报文,则将报文送往CPU,CPU根据M-in-M隧道头中的I-SID确定VSI,根据原始ARP响应报文中的VLAN ID确定VPN实例标识,学习ARP表项和主机路由表项。
ARP表项和主机路由表项的构成与步骤306相同。
例如:如图4所示,设BEB2/PE2设备上VPN1的网关接口IP地址为1.1.1.2,MAC地址为0000-2000-0001,VPN2的网关接口IP地址为1.1.2.2,MAC地址为0000-2000-0002,VPN1、VPN2关联到VSI1上,当BEB2/PE2设备接收到BEB1/PE1设备发来的针对VPN1、VPN2构造的ARP请求报文后,分别返回ARP响应报文,该两ARP响应报文都通过PW1、Port1到达BEB1/PE1设备,则BEB1/PE1设备学习到的ARP表项为:
表3BEB1/PE1设备学习到的BEB2/PE2设备的ARP表项BEB1/PE1设备学习到的主机路由表项为:
表4BEB1/PE1设备学习到的BEB2/PE2设备的主机路由表项
步骤309:当BEB1/PE1设备接收到来自L3VPN的CE设备的路由信息时,该路由信息包含VPN实例标识和CE设备的IP地址,将该CE设备的路由信息通过各SPB PW发布给各对端BEB/PE设备。
本实施例中,各个公共边缘设备之间,将自身的VPN路由信息通告给包括对端公共边缘设备在内的BGP邻居,如BEB1/PE1、BEB2/PE2设备可以通过边界网关协议(BGP,Border Gateway Protocol)进行VPN路由信息的交互,,以使对端公共边缘设备据此创建VPN实例的路由表项。下面以公共边缘设备之间交互CE设备的VPN路由信息为例进行说明。
步骤310:任一SPB PW对端的BEB/PE设备,如BEB2/PE2设备接收到该CE设备的路由信息,从该路由信息中读取VPN实例标识和CE设备的IP地址,将BEB1/PE1设备的该VPN实例的网关接口IP地址作为该CE设备的路由的下一跳地址,根据VPN实例标识和BEB1/PE1设备的该VPN实例的网关接口IP地址在自身记录的主机路由表项中查找到对应的出接口信息和ARP索引,学习该CE设备的路由表项。
CE设备的路由表项包括:VPN实例标识、路由前缀、下一跳地址、出接口信息、ARP索引。其中:
VPN实例标识:即从CE设备的路由信息中读取的VPN实例标识;
路由前缀:即BEBl/PEl设备发来的CE设备的路由信息中的IP地址;
下一跳地址:BEB 1/PEl设备的该VPN实例的网关接口IP地址;
出接口信息:即BEB2/PE2设备根据VPN实例标识和BEBl/PEl设备的该VPN实例的网关接口IP地址在自身记录的主机路由表项中查找到的出接口信息:
ARP索引:即BEB2/PE2设备根据VPN实例标识和BEBl/PEl设备的该VPN实例的网关接口IP地址在自身记录的主机路由表项中查找到的ARP索引。
例如:如图4所示,设VPNl内的CE3设备的IP地址为3.1.1.1,CE3设备将自身的路由信息发布出去,该路由信息经过PE3设备到达BEB2/PE2设备,BEB2/PE2设备将CE3设备的路由信息发布出去,该路由信息到达BEBl/PEl,BEBl/PEl将BEB2/PE2的VPNl的网关接口IP地址:1.1.1.2作为该CE3设备的路由的下一跳地址,并根据VPNl、1.1.1.2查找主机路由表项,得到出接口:B—VLAN+Portl、ARP索引:1,则学习到CE3设备的路由表项如下:
表5BEB1/PEl设备学习到的CE3设备的路由表项
VPNl内的CE4设备的IP地址为4.1.1.1,CE4设备将自身的路由信息发布出去,该路由信息经过PE4设备到达BEBl/PEl设备,BEBl/PEl设备将该路由信息发布出去,该路由信息到达BEB2/PE2设备,BEB2/PE2设备将BEBl/PEl设备的VPNl的网关接口IP地址:1.1.1.1作为该CE3设备的路由的下一跳地址,并根据VPNl、1.1.1.1查找主机路由表项,得到出接口:B-VLAN+Port2、ARP索引:1,则学习到CE4设备的路由表项如下:
表6BEB2/PE2设备学习到的CE4设备的路由表项
图5为本发明实施例提供的SPB网与L3VPN互联时的报文转发方法流程图,如图5所示,其具体步骤如下:
步骤501:BEB1/PE1设备接收来自L3VPN的报文,在该报文的目的MAC地址为本身边一VPN实例的网关接口的MAC地址时,根据报文的目的IP地址,在自身记录的VPN实例的路由表项中查找到对应的表项,根据该表项中的ARP索引查找到对应的ARP表项,从ARP表项中读取VPN实例标识、MAC地址,根据该ARP表项为该报文封装二层头,二层头的源MAC地址为BEB1/PE1设备的该VPN实例的网关接口MAC地址,二层头的目的MAC地址为ARP表项中的MAC地址,根据查找到的CE设备的路由表项中的出接口信息将该报文发送到SPB网中。
也就是说,边缘设备接收到目的MAC地址为自身VPN实例的网关接口MAC地址的报文,根据所述报文的目的IP地址,匹配VPN实例的路由转发表,若匹配上的路由表项的下一跳为对端边缘设备网关接口,则进一步根据对端边缘设备网关接口的IP地址解析表项,更新所述报文的以太帧头封装后,通过对端边缘设备网关接口的MAC地址在SPB域内的转发路径,将所述报文发送至对端边缘设备。
发到SPB网中的报文并不是M-in-M报文,而是一个普通的二层以太报文,报文的目的MAC地址为BEB1/PE1设备对端的BEB2/PE2设备的该VPN实例的网关MAC地址,报文在SPB网中按照BEB2/PE2设备的该VPN实例的网关MAC地址的转发路径进行转发,到达BEB2/PE2设备。其中,BEB2/PE2设备的该VPN实例的网关MAC地址的转发路径在步骤304中形成。
步骤502:BEB2/PE2设备从SPB网接收该报文,发现报文的目的MAC地址为本设备一VPN实例的网关接口MAC地址,根据报文的目的IP地址查找到对应的VPN实例的路由表项,则将该报文无条件在该VPN实例内进行路由转发。
报文在该VPN实例内进行路由转发的过程与现有技术相同。
如图4所示,设CE4设备发出ping报文,报文的源IP地址为4.1.1.1,目的IP地址为3.1.1.1,即目的设备为CE3设备,则报文转发过程如下:
步骤01:报文经L3VPN到达BEB1/PE1设备,BEB1/PE1设备根据报文的目的IP地址:3.1.1.1,查找到对应的CE3设备的路由表项,得到VPN实例标识为1,出接口信息为B-VLAN+Port1,ARP索引为1,找到ARP索引1对应的ARP表项,根据该ARP表项为报文封装二层头,二层头的目的MAC地址为ARP表项中的MAC地址:0000-2000-0001,即BEB2/PE2设备的VPN1的网关接口MAC地址,源MAC地址为BEB1/PE1设备的VPN1的网关接口MAC地址,将报文通过Port1发送到SPB网中。
报文进入SPB网时,并不是M-in-M报文,而是一个普通的二层以太报文,报文在SPB网中按照MAC地址:0000-2000-0001的转发路径进行转发,到达BEB2/PE2设备。
步骤02:BEB2/PE2设备接收ping报文,发现报文的目的MAC地址为VPN1的网关接口MAC地址,将该报文无条件在VPN1内进行路由转发。
步骤03:ping报文在VPN1内正常转发到PE3设备,由PE3设备转发给下挂的CE3设备,CE3设备接收到该报文后产生应答报文,报文的目的IP地址为4.1.1.1,源IP为3.1.1.1。
步骤04:应答报文经过PE3设备进入L3VPN,到达BEB2/PE2设备。
步骤05:BEB2/PE2设备收到应答报文后,根据报文的目的IP地址:3.1.1.1,查找到对应的CE4设备的路由表项,得到VPN实例标识为1,出接口信息为B-VLAN+Port2,ARP索引为1,根据ARP索引1找到ARP表项,根据该ARP表项为报文封装二层头,二层头的目的MAC地址为ARP表项中的MAC地址:0000-1000-0001,即BEB1/PE1设备的VPN1的网关接口MAC地址,源MAC地址为BEB2/PE2设备的VPN1的网关接口MAC地址,将报文通过Port2发送到SPB网中。
步骤06:应答报文在SPB网内按照MAC地址:0000-1000-0001的转发路径进行转发,到达BEB1/PE1设备,BEB1/PE1设备发现目的MAC地址为VPN1的网关接口MAC地址,无条件在VPN1内进行路由转发。
步骤07:报文在VPN1内正常转发到PE4设备,并由PE4设备转发给下挂的CE4设备,从而完成了CE4设备到CE3设备的一次报文交互。
图6为本发明实施例提供的公共边缘设备的组成示意图,该公共边缘设备位于SPB网和L3VPN之间,且同时具备L3VPN的PE设备功能和SPB网的BEB设备功能,该公共边缘设备包括:配置保存模块61、表项学习模块62和报文转发模块63,其中:
配置保存模块61:保存VPN实例与SPB网的VSI的关联关系,其中,每个VPN实例以VLAN ID标识,同时每个VPN实例具备一个源MAC地址和一个网关接口,网关接口具备IP地址和MAC地址,网关接口的MAC地址与该VPN实例的源MAC地址相同,不同VPN实例的网关接口MAC地址不同,VSI以I-SID标识;保存SPB PW对端的公共边缘设备的各VPN实例的标识及网关接口IP地址。
表项学习模块62:从配置保存模块61获取本公共边缘设备的各VPN实例的网关接口MAC地址,将该各VPN实例的网关接口MAC地址发布到SPB网内,以触发生成各VPN实例的网关接口MAC地址在SPB网内的转发路径;对于每个VPN实例,从配置保存模块61获取该VPN实例关联的VSI标识,以及各SPB PW对端的公共边缘设备的各VPN实例的标识及网关接口IP地址,通过与各对端公共边缘设备交互各VPN实例的IP地址解析请求/响应报文,学习各对端公共边缘设备的IP地址解析表项和主机路由表项;通过VPN实例的网关接口与各对端公共边缘设备交互各自的VPN路由信息用户边缘CE设备的路由信息,创建VPN实例的路由表项。例如,当接收到一对端公共边缘设备发来的一VPN内的CE设备的路由时,将配置保存模块61中的该对端公共边缘设备的该VPN的网关接口IP地址作为该路由的下一跳地址,并查找到与该VPN实例标识和下一跳地址匹配的主机路由表项,以该主机路由表项中的出接口作为该CE设备的路由的出接口,建立该CE设备的路由表项。
其中,表项学习模块62在学习任一对端公共边缘设备的IP地址解析表项和主机路由表项时,对于每个VPN实例,当接收到任一对端公共边缘设备发来的IP地址解析请求报文时,该报文的外层隧道头中包含该VPN实例关联的VSI标识,该报文的内层二层头中的发送端MAC地址为该对端公共边缘设备的该VPN实例的网关接口MAC地址,发送端IP地址为该对端公共边缘设备的该VPN实例的网关接口IP地址,目标端IP地址为本公共边缘设备的该VPN实例的网关IP地址,VLAN ID为该VPN实例的VLAN ID,根据报文中的VLAN ID确定VPN实例标识,学习IP地址解析表项和主机路由表项,其中:
IP地址解析表项包括:VPN实例标识、IP地址、MAC地址、端口信息和IP地址解析索引;
主机路由表项包括:VPN实例标识、路由前缀、下一跳地址、出接口信息和IP地址解析索引;
其中,IP地址、MAC地址:即对端公共边缘设备的该VPN实例的网关接口IP地址、MAC地址;
端口信息:由该VPN实例关联的VSI标识+承载该报文的PW标识表示;
路由前缀、下一跳地址:即对端公共边缘设备的该VPN实例的网关接口IP地址;
出接口信息:由IP地址解析请求报文中的B-VLAN标识+报文的入端口标识表示;
IP地址解析表项和主机路由表项中的IP地址解析索引相同。
报文转发模块63:根据表项学习模块中的VPN实例的网关接口MAC地址的转发路径、IP地址解析表项和所述VPN实例的路由表项,将来自VPN内的报文转发到SPB网中,或者将来自SPB网的报文转发到VPN中。例如,当接收到来自VPN的报文时,在该报文的目的MAC地址为本身边一VPN实例的网关接口的MAC地址时,报文转发模块63根据报文的目的IP地址在表项学习模块62中查找到对应的VPN实例的路由表项,根据该表项中的VPN实例标识和下一跳地址在表项学习模块62中查找到对应的IP地址解析表项,根据该IP地址解析表项为报文封装二层头,其中,二层头的源MAC地址为本设备的该VPN实例的网关接口MAC地址,二层头的目的MAC地址为IP地址解析表项中的MAC地址,将该报文发送到SPB网中;当接收到来自SPB网的报文时,从若发现报文的目的MAC地址为本设备一VPN实例的网关接口MAC地址,根据报文的目的IP地址查找到对应的VPN实例的路由表项。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。