背景技术
MPLS(Multi-Protocol Label Switching,多协议标签交换)L3VPN(VirtualPrivate Network,虚拟专用网络)是服务提供商VPN解决方案中一种基于PE(Provider Edge,运营商边界设备)的L3VPN技术,它使用BGP(Border GatewayProtocol,边界网关协议)在服务提供商骨干网上发布VPN路由,使用MPLS在服务提供商骨干网上转发VPN报文。
CE(Customer Edge,用户边界设备)和PE的划分主要是根据服务提供商与用户的管理范围,CE和PE是两者管理范围的边界。
CE设备通常是一台路由器,当CE与直接相连的PE建立邻接关系后,CE把本站点的VPN路由发布给PE,并从PE学到远端VPN的路由。CE与PE之间使用BGP/IGP(Interior Gateway Protocol,内部网关路由协议)交换路由信息,也可以使用静态路由。
PE从CE学到CE本地的VPN路由信息后,通过BGP与其它PE交换VPN路由信息。PE路由器只维护与它直接相连的VPN的路由信息,不维护服务提供商网络中的所有VPN路由。
在MPLS VPN中,不同VPN之间的路由隔离通过VPN实例(VPN-instance)实现。PE为直接相连的Site建立并维护VPN实例。VPN实例中包含对应Site的VPN成员关系和路由规则。如果一个Site中的用户同时属于多个VPN,则该Site的VPN实例中将包括所有这些VPN的信息。
为保证VPN数据的独立性和安全性,PE上每个VPN实例都有相对独立的路由表和LFIB(Label Forwarding Information Base,标签转发表)。具体来说,VPN实例中的信息包括:标签转发表、IP路由表、与VPN实例绑定的接口以及VPN实例的管理信息。VPN实例的管理信息包括RD(RouteDistinguisher,路由标识符)、路由过滤策略、成员接口列表等。
MPLS L3VPN使用BGP扩展团体属性——VPN Target(也称为RouteTarget,简称为RT)来控制VPN路由信息的发布。
PE上的VPN实例有两类VPN Target属性:
Export Target属性:在本地PE将从与自己直接相连的Site学到的VPN-IPv4路由发布给其它PE之前,为这些路由设置Export Target属性;
Import Target属性:PE在接收到其它PE路由器发布的VPN-IPv4路由时,检查其Export Target属性,只有当此属性与PE上VPN实例的Import Target属性匹配时,才把路由加入到相应的VPN路由表中。也就是说,VPN Target属性定义了一条VPN-IPv4路由可以为哪些Site所接收,PE路由器可以接收哪些Site发送来的路由。
VPN Target有三种格式:
(1)16bits自治系统号:32bits用户自定义数字,例如:100:1;
(2)32bits IPv4地址:16bits用户自定义数字,例如:172.1.1.1:1;
(3)32bits自治系统号:16bits用户自定义数字,其中的自治系统号最小值为65536,如:65536:1。
在基本的MPLS L3VPN模型中,由运营商经营MPLS VPN骨干网,通过PE设备提供VPN服务。VPN用户通过CE设备与运营商的PE设备互连,接入MPLS VPN网络,实现属于用户VPN的不同Site之间的通信。在这种情况下,用户网络是普通的IP网络,VPN用户不能再划分子VPN。
实际组网中,VPN用户网络复杂多样,繁简不同。当VPN用户内部需要进一步划分多个VPN时,传统的解决方案是直接在运营商的PE设备上配置用户内部的VPN。这种方案实现简单,缺点是将导致PE上承载的VPN数量急剧增加,并且,如果用户内部需要调整VPN关系,也必须通过运营商操作。这不仅增加了网络的运营成本,也带来了管理和安全方面的问题。
嵌套VPN是一种更为完善的解决方案,它的主要思想是在普通MPLSL3VPN的PE和CE之间传递VPNv4路由,由用户管理自己内部的VPN划分,运营商不参与用户内部VPN的管理,但维护用户内部的VPN信息。VPN用户的CE设备和运营商PE设备之间传递包括子VPN路由信息的VPNv4路由,从而实现用户网络内部子VPN路由信息的传递。
嵌套VPN中,路由信息的传播过程为:
运营商的PE设备与VPN用户的CE设备交互VPNv4路由,VPNv4路由携带用户内部的VPN信息;运营商的PE设备收到VPNv4路由后,保留用户内部的VPN信息,并附加用户在运营商网络上的MPLS VPN属性,即将该VPNv4路由的RD更换为用户所处运营商网络VPN的RD,同时将用户所处运营商网络VPN的ERT(Export Route-target,引出路由标识)添加到路由的扩展团体属性列表中;运营商的PE设备向其他运营商PE设备发布这些携带综合VPN信息的VPNv4路由;其他的运营商PE设备收到VPNv4路由后,与本地的VPN进行匹配,每个VPN接收属于自己的路由,然后将路由扩散到自己连接的子VPNCE设备,其中,如果运营商PE和CE设备之间是IPv4连接,直接扩散IPv4路由,如果运营商PE设备和CE设备之间是VPNv4连接,表示通过私网连接的是一个用户MPLS VPN网络,向CE扩散VPNv4路由。
图1示出了一种嵌套VPN组网示意图,这里配置举例如下(这里若VPN名字相同,所携带的RT属性也相同):设置VPNA的RT为100:1,VPNB1的RT为200:1,VPNB2的RT为300:1,VPNC1的RT为400:1,VPNC2的RT属性为500:1。VPNC1过来的路由信息为40.1.1.1/24,此时PE-A1为上行,路由传播方向为CE-C1→CE-B1→PE-A1→PE-A2,40.1.1.1/24的ERT在PE-A1上便为100:1,200:1,400:1,这样,在对称的嵌套VPN组网中,下行PE-A2在发布路由时,只要IRT(Import Route-target,引入路由标识)满足任一ERT属性,就会将路由向其CE端发送,所以下行方向的路由发送顺序为PE-A2→CE-B2→CE-C3。
若在图1所示组网的基础上,在PE-A1下还连接CE-C5,在PE-A2下还连接CE-C6,在CE-B2下还连接CE-C7,则形成了非对称的组网,如图2所示,其中,相同的设备上路由信息及团体属性和以上举例相同,那么刚才那条40.1.1.1/24的路由,因为IRT只要匹配任一单个ERT就会发布,所以除了沿PE-A2→CE-B2→CE-C3发布以外,还会从PE-A1向CE-C5发布、从PE-A2向CE-C6发布、从CE-B2向CE-C7发布。
由此可见,当嵌套VPN的层次增多,低层发来的路由就需要更加严格的全网规划,以保证路由的安全性。但在具体应用中,因规划问题难免存在安全隐患。
具体实施方式
为解决现有嵌套VPN路由发布机制中私网路由不安全的问题,本发明实施例中,当边界设备在接收到其下挂的边界设备或对端边界设备发布的VPN路由后,将本地VPN的IRT与接收到的VPN路由信息的属性信息中相应VPN的ERT进行匹配判断,以决定是否更新本地路由表以及进一步向下行方向上的其它边界设备扩散,并当判断需要向下行方向上的边界设备扩散时,仅向相应VPN对应的边界设备扩散,从而提高了私网路由的安全性。
以MPLS L3VPN组网中某用户网络VPN嵌套有子VPN,且该用户网络VPN布部署于用户网络1和用户网络2为例,当用户网络1中的底层用户边界设备从用户子VPN学习到VNP路由后,将该VPN路由以及VPN属性信息携带于路由发布报文沿上行方向发布给连接用户网络1的运营商边界设备,在上行发布路径上,接收到该VPN路由的用户边界设备更新本地VPN路由表,在VPN属性中添加本地VPN(即接收路由发布报文的VPN,以下同)的ERT,然后将该VPN路由以及VPN属性信息继续向上行方向扩散,直到扩散到连接用户网络1的运营商边界设备PE1。PE1根据该VPN路由更新本地VPN路由表,在VPN属性中添加本地运营商网络VPN的ERT,然后将该VPN路由以及VPN属性信息发送给对端运营商边界设备。
连接用户网络2的运营商边界设备PE2接收到PE1发送的VPN路由信息和VPN属性信息后,将本地运营商网络VPN的IRT与该VPN属性信息中的运营商网络VPN的ERT进行匹配,若匹配,则根据接收到的VPN路由信息更新本地VPN路由表,并根据匹配成功的ERT/IRT,向相应VPN扩散VPN路由信息和VPN属性信息。用户网络2中的用户边界设备在接收到PE2发布的VPN路由信息和VPN属性信息后,将本地用户网络VPN的IRT与该VPN属性信息中同一层的用户网络VPN的ERT进行匹配,若匹配,则根据该VPN路由信息更新本地VPN路由表,并根据匹配的IRT/ERT向相应VPN扩散该VPN路由信息和VPN属性信息。同理,后续各层嵌套用户边界设备接收到上层用户边界设备发布的VPN路由信息和VPN属性信息后,将本地用户网络VPN的IRT与该VPN属性信息中同一层的用户网络VPN的ERT进行匹配,若匹配,则根据该VPN路由信息更新本地VPN路由表,并根据匹配的IRT/ERT向相应VPN扩散VPN路由信息和VPN属性信息,以此类推,直到扩散到嵌套的最底层VPN。同理,连接其它用户网络的运营商边界设备接收到PE1发送的VPN路由信息和VPN属性信息后,其处理流程同上。
进一步的,如果PE1还连接了用户网络1中的其它用户边界设备(所述其它用户边界设备是指除了向PE1发布VPN路由的用户边界设备以外的用户边界设备),则还要将添加了ERT的VPN属性信息和VPN路由信息发布给该用户边界设备;该用户边界设备接收到VPN路由信息和VPN属性信息之后的处理流程与上述所描述的VPN路由发布下行方向上的处理流程相同。
进一步的,运营商边界设备判断本地运营商网络VPN的IRT与接收到的VPN属性信息中的运营商网络VPN的ERT相匹配之后,还可将运营商网络VPN的ERT从VPN属性信息中删除;用户边界设备判断本地用户网络VPN的IRT与接收到的VPN属性信息中同一层的用户网络VPN的ERT相匹配之后,还可将所述同一层的用户网络VPN的ERT从VPN属性信息中删除。这样一方面可以减小向下层传递的ERT属性的长度,从而节省网络传输开销,另一方面还可以减轻下层边界设备的计算开销,降低ERT属性信息长度对边界设备规格的要求。
通常情况下,在VPN路由信息发布过程的上行方向上,在VPN路由信息发布路径上的各层用户边界设备以及运营商边界设备,会按照顺序在路由扩展团体属性列表中添加ERT,因此,当运营商边界设备接收到对端运营商边界设备发送的VPN路由信息和VPN属性信息后,可依据该相应顺序识别出路由扩展团体属性列表中的运营商网络VPN的ERT,以便与本地运营商网络VPN的IRT进行匹配;同理,用户边界设备在接收到VPN路由信息和VPN属性信息后,也可依据该属性识别出路由扩展团体属性列表中与本地用户网络VPN同一层的用户网络VPN的ERT,以便与本地用户网络VPN的IRT进行匹配。
在具体实现时,为了简化技术实现,本发明实施例针对ERT属性引入了A、B、C三种类型,并在VPN路由发布过程中动态设置随VPN路由信息一通发布的VPN属性信息中的ERT的类型,并在边界设备根据本地VPN的IRT匹配VPN属性信息中的ERT时,以B类ERT为核心去匹配,A、C类用来辅助实现B类ERT的动态变化,从而实现上述流程,达到提高用户网络VPN路由安全性的目的。
下面以图2所示的MPLS L3VPN组网架构为例,并结合附图对本发明的优选实施例进行详细描述。
在图2所示的MPLS L3VPN组网中,用户网络中的各CE以及连接该用户网络的PE上运行BGP/IGP协议,用来发现和维护邻接关系以及发布路由。该组网中的VPN配置如下(这里若VPN名字相同,所携带的RT属性也相同):
VPNA内嵌套有VPNB1和VPNB2,VPNB1内嵌套有VPNC1,VPNB2内嵌套有VPNC3。PE-A1和PE-A2上配置VPNA并维护相应VPNA实例,CE-B1、CE-B2上配置VPNB1和VPNB2并维护有相应VPN实例,CE-C1、CE-C3上配置VPNC1并维护有相应VPN实例,CE-C2、CE-C4上配置VPNC2并维护有相应VPN实例。CE-C5上配置VPNC1并维护有相应VPN实例,CE-C6上配置VPNB1并维护有相应VPN实例,CE-C7上配置VPNC1并维护有相应VPN实例。VPNA的RT为100:1,VPNB1的RT为200:1,VPNB2的RT为300:1,VPNC1的RT为400:1,VPNC2的RT为500:1。
A、B、C类ERT的动态变化规则以及各类ERT的作用说明如下:
B类ERT:在整套A、B、C类ERT中,B类是用以进行匹配发送路由的ERT。如图2所示,路由从VPNC1过来后,在上行发布路径上的第一个边界设备CE-C1上,本地VPNC1的ERT被设置为B类ERT;当路由传递给上行发布路径上的第二个边界设备CE-B1时,B类ERT就会变化成VPNB1的ERT,而之前的B类ERT就会变成C类ERT。如此反复到顶层嵌套VPN后,路由再向下行方向传递,在PE-A2上,这条路由的B类ERT为VPNA的ERT,此时PE-A2将该B类ERT与本地VPNA的IRT匹配成功,则该路由向下发送,从PE-A2到CE-B2的过程中,B类ERT也会进行变化,之前以VPNA为B类ERT,在CE-B2上会被设置为A类ERT,而在上行方向时作为第一层的C类ERT(即VPNC1的ERT)此时会被设置为B类ERT。
C类ERT:该类ERT有产生和转移到B类ERT两个过程。在路由向上行方向传递时,会随着B类ERT的置换,将原B类ERT一层一层转换为C类ERT,嵌套的越底层的边界设备的B类ERT,在公网上会转换为更高层的C类ERT。在下行方向上,由于B类ERT会移至A类ERT,而C类ERT会转移到B类ERT,此时C类转B类的ERT是从第一层开始转移的。所以,上行方向,C类ERT在为B类所累加时是以栈的方式累加的,下行方向,C类ERT在被B类ERT所取用时,是以队列方式取用的。
A类ERT:该类ERT是在上层嵌套VPN向下层发布路由时产生的,每经过一段,边界设备将过期的B类ERT转移为A类ERT。
图3为A、B、C类ERT相互转移的示意图。如图3所示,在VPN路由发布过程中,在路由发布路径的上行方向上,嵌套的底层边界设备在累加ERT属性给上层边界设备时,该ERT作为上层边界设备的C类ERT,上层ERT便作为下层ERT的B类ERT而存在,若继续嵌套,则之前的C类ERT变为第二层C类ERT,B类ERT变为第一层C类ERT,而最上层的边界设备的ERT作为B类ERT。在路由从嵌套底层向上层边界设备发布的过程中,没有A类ERT生成,B类ERT会不断以栈的方式累加到C类ERT。
在路由发布路径的下行方向上,当PE收到携带ABC类ERT的路由时,首先判断本地VPN的IRT是否匹配收到的B类ERT,若匹配,则向此VPN发布对应路由,然后将其C类ERT的第一层提升为下一个边界设备的B类ERT,之前的B类ERT成为第一层A类ERT,使其在下行边界设备上不做优先匹配,而是对新的B类ERT做优先匹配,若继续向下嵌套,此时的B类ERT会成为第二层A类ERT,则当前的第一层C类ERT会成为B类ERT。在自顶向下嵌套VPN发布路由的过程中,A类不断增加,A类层次的数量多少对优先匹配意义不大,而C类ERT则以队列方式,从第一层开始逐步转换为B类ERT。接收到路由的边界设备,若在用B类ERT与本地VPN的IRT进行匹配时发现两者不匹配,则不会学习对应路由,也不会向其下行边界设备传递或发布。
下面以CE-C1从用户侧VPNC1学习到40.1.1.1/24路由后,该路由的发布过程为例,对本发明实施例进行详细描述。
当CE-C1从用户VPNC1学习到40.1.1.1/24这条路由后,根据该路由更新VPNC1所对应的VPN实例中的路由表,在该条路由上附加VPN属性,包括:将该条路由的RD修改为VPNC1的RD,将VPNC1的ERT 400:1添加到该路由的扩展团体属性列表中,并将VPNC1的ERT 400:1设置为B类。然后将该条路由和VPN属性信息携带于BGP报文(如UPDATE报文)发送给嵌套的上层CE设备CE-B1。
CE-B1接收到该BGP报文后,根据其中携带的VPN路由更新本地VPNB1所对应的VPN实例中的路由表,在该条路由上附加VPN属性,包括:将VPNC1的RD修改为VPNB1的RD,将VPNB1的ERT 200:1添加到该路由的扩展团体属性列表中,并将VPNB1的ERT 200:1设置为B类,将VPNC1的ERT从B类修改为C类(此C类ERT为第一层C类ERT)。然后将该条路由和VPN属性信息携带于BGP报文发送给CE-B1的上层边界设备PE-A1。
PE-A1接收到该BGP报文后,根据其中携带的VPN路由更新本地VPNA所对应的VPN实例中的路由表,在该条路由上附加VPN属性,包括:将VPNB1的RD修改为VPNA的RD,将VPNA的ERT 100:1添加到该路由的扩展团体属性列表中,并将VPNA的ERT 100:1设置为B类,将VPNB1的ERT从B类修改为C类(此C类ERT为第二层C类ERT)。然后将该条路由和VPN属性信息携带于BGP报文发送给对端PE设备PE-A2。
PE-A2接收到PE-A1发送的BGP报文后,分别用本地VPNA和VPNB1的IRT与该报文中的B类ERT进行匹配,其中,VPNA的IRT与B类ERT匹配成功,VPNB1的IRT与B类ERT匹配失败,此后,PE-A2根据该路由更新VPNA所对应的VPN实例中的路由表,更新该条路由的VPN属性,即,将VPNA的ERT 100:1从B类修改为A类,将第二层C类ERT 200:1从C类修改为B类,然后将该条路由和VPN属性信息携带于BGP报文发送给VPNA对应的CE-B2。由于本地VPNB1的IRT与B类ERT匹配失败,因此PE-A2不会将VPN路由发布到VPNB1对应的CE-C6。
CE-B2接收到PE-A1发送的BGP报文后,分别用本地VPNB1、VPNB2、VPNA的IRT与该报文中的B类ERT进行匹配,其中,VPNB1的IRT与B类ERT匹配成功,VPNB2的IRT与B类ERT匹配失败,VPNA的IRT与B类ERT匹配失败,此后,CE-B2根据该路由更新VPNB1所对应的VPN实例中的路由表,更新该条路由的VPN属性,即,将第二层C类ERT 200:1从B类修改为A类,将第一层C类ERT从C类修改为B类,然后将该条路由和VPN属性信息携带于BGP报文发送给VPNB1对应的CE-C3。由于本地VPNB2和VPNA的IRT与B类ERT匹配失败,因此CE-B2不会将VPN路由发布到VPNB2对应的CE-C4,以及VPNA对应的CE-C7。
CE-C3接收到CE-B2发送的BGP报文后,用本地VPNC1的IRT与该报文中的B类ERT进行匹配,由于两者均为400:1,因此匹配成功,此后,CE-C3根据该路由更新VPNB1所对应的VPN实例中的路由表。
由于PE-A1还连接有CE-C5,因此PE-A1在接收到BGP报文后,还将该报文发送给CE-C5。CE-C5接收到该报文后,用其中的B类ERT(200:1)与本地VPNC1的ERT(400:1)进行匹配,两者不相匹配,因此忽略该报文。
上述40.1.1.1/24的路由的发布路径中,各边界设备所接收到的ERT属性情况可如表1所示。
表1:路由发布路径CE-C1→CE-B1→PE-A1→PE-A2→CE-B2→CE-C3上的各边界设备所接收到的ERT属性
类型 |
CE-C1 |
CE-B1 |
PE-A1 |
PE-A2 |
CE-B2 |
CE-C3 |
A |
|
|
|
|
100:1 |
100:1,200:1 |
B |
400:1 |
200:1 |
100:1 |
100:1 |
200:1 |
400:1 |
C |
|
400:1 |
200:1,400:1 |
200:1,400:1 |
400:1 |
|
从以上实施例可以看出,A类ERT对于控制路由发布没有什么意义,因此为了减少网络传输开销,本发明的另一实施例在上述实施例的基础上,在VPN路由发布的下行方向上,当边界设备用本地VPN的ERT与接收到的B类ERT进行匹配并匹配成功后,将VPN属性信息中的该B类ERT删除,而不是将其转移为A类ERT,其它处理与前述实施例相同,在此不再赘述。
如果嵌套VPN中每台PE需要配置大量的RT属性,会使得每一层嵌套的PE设备都会累加上一层VPN的ERT,如果嵌套层次非常多,ERT就会累加的非常多,而往往规格是有限的,这样就十分容易出现破规格的情况。比如,64个RT属性为满规格,VPN嵌套层次为3层,最底层配置32个RT,第二层配置32个RT,第三层配置64个RT,这样在第一层发布私网路由时,所携带的团体属性ERT将会有128个ERT属性,远超规格64个,这样不仅增加计算量,而且很容易造成设备出现问题。
考虑到嵌套的下层VPN的路由传给上层时,ERT累加导致超设备规格的问题,本发明实施例可以在一定程度上缓解这个问题。例如,上述发布40.1.1.1/24这条路由的过程中,如果VPNC1,VPNB1,VPNA携带的ERT为64个,且值均不相等(为CE-C1,CE-B1,PE-A1的满规格),那么在PE-A1上,按现有技术的方式,此时会携带64*3个ERT,发布出去甚至会超过64*3个ERT。在本发明实施例中,由于采用A、B、C类ERT的技术,所以无论之前配置多少ERT,PE-A1上的B类ERT均为VPNA的ERT属性,因此C类ERT再多也不会影响设备规格,因为此时有效的ERT仅为B类ERT。
在具体实现时,可通过对现有报文结构进行改进,以达到降低ERT属性对设备规格要求的目的。
RT主要是带在BGP的扩展团体属性里,考虑到各运营商的支持情况,本发明实施例采用现有扩展团体TLV(Type,Length,Value)格式。对于不支持本发明实施例的设备,使用原TLV进行RT的规则匹配,而支持本发明实施例的设备,只使用新增TLV的规则来匹配RT。因为IRT是设备本地上的属性,与报文无关,这里不涉及,这里将主要介绍新增TLV的Value部分。
考虑到用户操作的灵活性,以上发布及剥离ERT的操作,均可使用以下两种配置进行:
配置1:用户可以在每层PE上的BGP里多实例视图下指定路由发布规则,决定某个VPN是否需要首先匹配B类ERT,若需要,则不会将路由发布给不匹配B类ERT的VPN,若不需要,则按现有技术的规则,若VPN上IRT匹配任一ERT,则将路由发布给该VPN。
配置2:用户也可以灵活配置在下行方向的顶层嵌套VPN向下层发布私网路由时,BGP里多实例视图下EXPORT时是否剥离ERT的B类ERT(即即将成为A类的ERT),若是,则剥离发布路由时对应VPN的ERT的B类ERT给下行方向,并将第一层C类ERT变为新的B类ERT。若否,则将其B类ERT转为A类ERT,并将第一层C类ERT变为新的B类ERT。对于无C类ERT属性的ERT,该配置无效。
图4示出了NestingVpn Export vpn-target TLV的格式示意图,其中各字段说明如下:
Export vpn-target attribute字段:标识TLV的类型,为2个字节;
Length字段:为TLV的长度,即Length字段之后的字段的长度之和;
Various length字段:该字段由4.5个字节组成,按顺序每1.5个字节用来表示A,B,C各个RT的个数。具体为,该字段前1.5个字节表示A类RT的个数,中间的1.5个字节表示B类RT的个数,最后1.5个字节表示C类RT的个数。如A,B,C各类RT数量分别为1,1,2,则字段为0010010020;
Res字段:保留字段,为0.5个字节,默认为0;
Type A,Type B Type C RT:Res字段后剩下的均为该字段,该字段为一个三元组,分别是Type A RT,Type B RT,Type C RT。每一个元组由N个部分组成,N为各类RT的个数,如报文中存在A类ERT为3个,则N为3。每个部分即为一个RT占据的字节大小,为8个字节。比如刚才举出的A,B,C各类RT的数量分别为1,1,2的情况。该字段占据的字节数便为1*8+1*8+2*8=32。
对于Export vpn-target attribute字段,在发布对应私网路由时,该字段A,B,C即是以上所述A,B,C类ERT,而A,B,C每段的长度是由Various length的值确定的。Various length字段和Reserved字段共占5个字节,其中,前4.5个字节用于标识A、B、C类ERT所占据的长度,最后0.5个字节作为保留字段,默认为0。给每类ERT可分配1.5个字节作为RT个数标识,取值范围0~4095。
在现有技术中,一个vpn-target属性占据8个字节,上面结构中,A、B、C类的每个RT也是占据8个字节,但根据RT实际个数,所占字节大小各有差异,但均为8的整数倍。实际数量表现在Various length里,如各类RT数量为1,1,2,则Various length字段为0010010020,来表示有1个A类RT,1个B类RT,2个C类RT。
通过以上描述可以看出,本发明实施例通过控制嵌套VPN RT策略的匹配方式,增强路由发布的安全性,另外还可进一步保护设备免超规格。此外,通过嵌套VPN向下层VPN发布路由时,选择是否删除即将产生的A类ERT的操作,节省ERT的资源,同时也可以增强下层私网路由发布时的安全性。在大型组网时,如果使用嵌套VPN,需要严格规划整个组网的RT,且每台设备都需要考虑其RT属性是否冲突,而采用本发明实施例,可以避免这样的繁琐,RT的配置更倾向于本地化。
需要说明的是,以上优选实施例是以对ERT进行A、B、C类划分为例描述的,本领域技术人员应能够理解,只要在VPN属性信息中指示出B类ERT,以使边界设备依据B类ERT进行匹配,也可控制VPN路由信息的发布,以提高用户网络路由的安全性。
基于相同的技术构思,本发明实施例还提供了一种应用于MPLS L3VPN组网的边界设备。
参见图4,为本发明实施例提供的边界设备的结构示意图,该边界设备通常为路由器,如图所示,该边界设备可包括:路由接收模块501、匹配判断模块502、路由学习模块503和第一路由发布模块504,其中:
路由接收模块501,用于接收其上行边界设备或对端边界设备发送来的路由发布报文,其中携带有嵌套VPN路由信息及其VPN属性信息;
匹配判断模块502,用于将本地VPN的引入路由器标识IRT,与该报文携带的VPN属性信息中指定类型的VPN的引出路由器标识ERT进行匹配,若匹配,则将指定类型变更到所述VPN属性信息中原指定类型的ERT的下一层嵌套ERT,并指示路由学习模块503进行路由学习,指示第一路由发布模块504发送路由发布报文。
路由学习模块503,用于按照匹配判断模块502的指示,根据所述VPN路由信息更新本地路由表;
第一路由发布模块504,用于按照匹配判断模块502的指示,根据匹配成功的本地VPN的IRT,向相应VPN发送携带所述嵌套VPN路由信息及其VPN属性信息的路由发布报文。
具体的,匹配判断模块502可通过以下方式将指定类型变更到所述VPN属性信息中原指定类型的ERT的下一层嵌套ERT:取消对匹配成功的ERT的指定类型的设置,将所述VPN属性信息中原指定类型的ERT的下一层嵌套ERT设置为指定类型;或者,将匹配成功的ERT从所述VPN属性信息中删除,将所述VPN属性信息中原指定类型的ERT的下一层嵌套ERT设置为指定类型。
进一步的,该边界设备还可包括第二路由发布模块505,用于在路由接收模块501接收到其下行边界设备发来的路由发布报文后,按照VPN嵌套顺序在路由发布报文中携带的VPN属性信息中添加接收所述路由发布报文的VPN的ERT,并将所添加的ERT设置为B类,将所述VPN属性信息中其它VPN的ERT设置为C类,另外,路由学习模块502还根据该路由发布报文进行路由学习,即更新本地相应VPN的路由表。相应的,匹配判断模块502可将本地VPN的IRT与该报文中携带的VPN属性信息中设置为B类的ERT进行匹配;以及,在本地VPN的IRT与该报文中携带的设置为B类的ERT匹配成功后,将所述VPN属性信息中B类的ERT修改为A类或删除,将原B类ERT的下一层嵌套ERT从C类修改为B类。
所述边界设备可以是运营商边界设备,此种情况下,路由接收模块501所接收到的路由发布报文是对端运营商边界设备发送的。
所述边界设备可以是用户边界设备,此种情况下,路由接收模块501所接收到的路由发布报文是与其连接的运营商边界设备或其上层嵌套用户边界设备发送的。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台终端设备(可以是手机,个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。