Mpls vpn的定义
BGP/MPLS IP VPN网络一般由运营商搭建,VPN用户购买VPN服务来实现用户网络之间的路由传递、数据互通等。
Mpls vpn的网络架构:
MPLS VPN网络架构由三部分组成:CE(Customer Edge)、PE(Provider Edge)和P(Provider),其中PE和P是运营商设备,CE是MPLS VPN用户设备。
站点(site)就是MPLS VPN的用户,由CE和其他用户设备构成。
Mpls vpn的技术架构:
MPLS VPN不是单一的一种VPN技术,是多种技术结合的综合解决方案,主要包含下列技术:
MP-BGP:负责在PE与PE之间传递站点内的路由信息。
LDP:负责PE与PE之间的隧道建立。
VRF:负责PE的VPN用户管理。
静态路由、IGP、BGP:负责PE与CE之间的路由信息交换。
Mpls vpn的路由传递:
1、CE与PE之间的路由信息交换 (采用普通ipv4、ipv6的IGP、BGP、静态路由)
PE设备连接CE的接口需要划分到vpn实例,用于区分用户路由。
2、入口PE到出口PE路由传递(采用MP-BGP 传递vpnv4路由)
VPNv4地址共有12个字节,包括8字节的路由标识符RD(Route Distinguisher)和4字节的IPv4地址前缀。讲人话:就是CE的私网路由加上一个标记(RD)在MP-BGP当中传递的路由。
RD值:当PE 收到远端PE发送过来的不同的VRF里面的路由相同时,需要通过RD值来区分。
RT值:表明一个vrf的喜好,决定路由器是否接收此路由,并且对应的路由放到哪个实例的路由表。RT值是一种扩展团体属性。(发送VPNV4路由的时候会在扩展团体属性中携带出方向RT)
MPLS VPN的数据转发:
Mpls vpn可以通过MP-bgp将站点内部的路由发布给对应的站点(将本端CE的路由传递给对端CE),这仅只是控制平面完成的路由交互,数据平面需要结合mpls ldp分配的公网隧道实现数据通信。
运营商的mpls 网络P设备是没有站点内(CE)的私网路由的,因此不可能使用IP进行转发,因此需要使用mpls 标签的形式来转发私网流量。
数据转发时需要两类标签
外层标签(公网标签)由LDP为VPN路由的NextHop(一般是PE的某个接口地址)分发,P根据外层标签转发数据到PE。
内层标签(私网标签)由PE的MP-BGP为VPN路由分发。PE根据内层标签确定数据所属的VPN。
数据转发时的问题:
通过标签解决问题:
Mpls vpn路由交互的过程:
Mpls vpn的特殊场景及解决方案:
AS号替换:
若CE1通过EBGP向PE1发送一条私网路由,并经过PE2发送到CE2,则CE2会由于AS号重复丢弃这条路由,导致属于同一VPN的Site 1和Site 2之间无法连通。
可以在PE上执行peer substitute-as命令使能AS号替换功能,即PE用本地AS号替换收到的私网路由中CE所在VPN站点的AS号,这样对端CE就不会因为AS号重复而丢弃路由了。
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance vpn1
[PE1-bgp-vpn1] peer 192.168.100.1 substitute-as
SOO:
在CE多归属场景,若使能了BGP的AS号替换功能,可能会引起路由环路,需要SoO(Site of Origin)特性来避免环路。
CE1与CE3处于同一个VPN站点1,CE2位于站点Site2,Site1和Site2站点所在的AS号都为65001。PE与CE之间运行的都是EBGP路由协议,为了Site 1和Site 2之间的路由可以正常学习,需要在PE1和PE2上配置AS号替换功能。
CE1传递站点内的路由给PE1,PE1传递该路由给CE3,由于配置AS号替换,CE3会接收该路由,可能会导致产生路由环路。
配置了BGP邻居的SoO后:
接收到该邻居的BGP路由时,会在路径属性中携带该SoO属性并通告给其他BGP邻居。
向该邻居通告BGP路由时,会检查路由中的SoO属性是否与配置的SoO值相同,若相同则不通告,避免引起环路。
[PE1] bgp 123
[PE1-bgp] ipv4-family vpn-instance vpn1
[PE1-bgp-vpn1] peer 192.168.100.1 soo 200:1
[PE1-bgp-vpn1] peer 192.168.200.1 soo 200:1
Sham link:
应用场景
当CE和PE之间运行ospf,并且存在后门链路;
经过MPLSVPN骨干(super bone)的作为区域间路由,经过后门链路作为区域内路由,会导致VPN流量走后门链路作为主路径。
对端CE给PE是LSAI/2/3,此时发到对端PE一一CE是LSA3
对端CE给PE是LSA5,此时发到对端PE一一CE是LSA5
在PE上创建用于建立sham Link的接口
[PE1]interface LoopBack0
[PE1-LoopBack0] ip binding vpn-instance VPNA
[PE1-LoopBack0]ip address 1.1.1.1 32
#在BGP的VPN地址族中发布出去
[PE1-bgp-VPNA]network 1.1.1.1 32
在PE节点上配置sham Link
[PE1-ospf-1]area 0
[PE1-ospf-1-area-0.0.0.0]sham-link 1.1.1.1 2.2.2.2
调整cost值,确保后门链路的cost要大于sham Link上的cost。
[CE1-GigabitEthernet0/0/0]ospf cost 1000
Mpls vpn防环:
DN位防环:
为了防止3类LSA环路,OSPF多实例进程使用LSA Options域中一个原先未使用的比特作为标志位,称为DN位。使用DN位可以防止Type3 LSA环路。
PE路由器的OSPF实例进程在进行SPF计算时,忽略DN置位的Type3 LSA。
如果CE设备也配置了vpn实例,缺省情况下由于DN防环,因此会对PE设备发送过来的路由执行接收不计算。导致CE无法收到对端CE的路由。
需要在CE执行以下命令来接收PE发送的路由:
方式一:
dn-bit-set disable summary/ase/nssa 命令用来禁止设置OSPF LSA的DN位。
指定不设置Summary LSA/AS-external LSA/NSSA LSA的DN位
方式二:
vpn-instance-capability simple命令用来禁止路由环路检测,直接进行路由计算。
Type5/7路由防环:VPN Route Tag:
可以使用VPN Route Tag(VPN路由标记)来防止此5类或7类路由环路。
PE在根据收到的BGP的私网路由生成5/7类LSA时,携带VPN路由标记。当PE发现LSA的VPN路由标记和本地配置的一样,就会忽略这条LSA,因此可以避免上述环路。