1.MPLS标签

MPLS_mpls

一个标签由32个bit组成

前20为标签值,范围从0到2的20次方减一,即1048575。

其中前16bit不能随便定义,有特定含义,从21到23bit共3位试验用(EXP),用于QOS。

第24比特是栈底Bos位,值为0,如果是栈底,就为1,标签栈中,标签数量没有限制。

从25到32共8个bit是TTL

2.MPLS未知标签

   通常LSR只接收和发送带标签的并且能理解的数据包,因为某些原因,标签没找到的话,IOS是默认采用丢弃行为,如果找不到标签也传,也不能保证别人能传不丢弃,所以就自己开始丢弃。

3.MPLS保留标签

   MPLS 标签范围中,并不是所有的标签都是可以随便用的,有些是保留的,范围是0-15,有特殊作用,0是显式空(null),3是隐式空,1是路由器报警标签,14是OAM报警,其它还没定义。在IOS中,PHP这种行为是默认的,但只会为直连路由和聚合路由通告隐式空3,但3不会明写。

4.LDP邻居认证

说明:邻居之间可以配置相应密码,如果密码不同,则邻居无法建立。

(1)配置R2对R1使用密码cisco,如果R1无密码,则邻居失败:

r2(config)#mpls ldp neighbor 12.1.1.1 password 0 cisco

r2(config)#

说明:指定邻居时,后面应该为邻居的Router-ID,0表示在内存中显示时不加密。其它邻居失败的效果略过,请自行配置查看。

5.OSPF Sham-Link

当PE和CE使用OSPF时,PE从CE学到路由后,都放在相应VRF中,然后传递给对端PE,再由PE转发到远程CE。在OSPF中,当同时从intra-area(同一个区域)和inter-area(不同区域)学到相同路由时,intra-area中的路由总是被优先选中。

MPLS_vpn_02

   有多个MPLS ×××场点同时连接到MPLS ×××骨干网络,PE-CE路由协议使用OSPF,OSPF区域分别有0、1、2、3,当MPLS ×××场点之间互相再连接链路后,这样的链路被称为后门链路(BackDoor),只要OSPF路由从这些后门链路上更新,那么势必会造成PE和CE路由器将MPLS ×××场点之间的流量优先选择从后门链路发送,而放弃从MPLS ×××骨干网络发送,原因为:

MPLS ×××骨干网络中为BGP,且为IBGP,管理距离为200,高于OSPF的值。

PE和CE之间使用OSPF,从同区域学习到的路由优先于其它区域路由。

MPLS_vpn_03

当CE路由器R3从与R4的后门链路学习到OSPF路由44.4.4.4之后,R3必定会优先选择从后门链路到达44.4.4.4,因为从后门链路学习到的路由为同区域的,都为区域1。不仅如此,PE路由器R1也同样会选择从后门链路到达44.4.4.4而放弃从MPLS ×××骨干网络中传输。如果CE之间的后门链路仅仅是作为备份使用,那么将其选作主用链路,是不理智的。

   解决方法为,在PE路由器之间也创建一个OSPF区域,这样一来,从后门链路到达远程场点是OSPF路径,从MPLS ×××骨干网络中到达远程网络同样也是OSPF路径,所以就能轻松地控制PE和CE路由器到达远程场点的路径。在PE之间创建额外的OSPF区域的方法是创建OSPF Sham-Link,PE之间的Sham-Link相当于一条逻辑的链路,但是这条链路也属于某个OSPF区域,供PE路由器选路使用。只要PE路由器想要从MPLS ×××骨干网络到达远程网络,就等于从Sham-Link上到达远程网络。

   在PE上创建OSPF Sham-Link需要注意的是:

OSPF Sham-Link也算是一条OSPF链路,这条链路可以指定为任何区域。

当PE到CE再从后门链路到远程网络都属于同一个OSPF区域,即学习到的路由为intra-area路由时,必须将Sham-Link也指定为同一区域,因为如果Sham-Link属于另一区域,那么就表示从MPLS ×××骨干网络到达远程网络是inter-area路由,而inter-area路由是不可能优先于intra-area路由的,所以也就不可能让到达远程网络的路径从Sham-Link走。

配置Sham-Link时,需要满足以下条件:

在PE上单独创建/32位的地址,在PE之间使用这个地址来建立Sham-Link。

这个/32位地址的接口必须放入相应的VRF。

这个/32位地址必须在BGP里发布,而不能在OSPF里发布。

注:Sham-Link是有COST值的,PE穿越MPLS ×××骨干网络的OSPF COST值,就是Sham-Link的COST值,如果没有后门链路,Sham-Link就不需要创建了。

6.PE-CE之间运行EBGP

说明:PE和CE之间只能运行EBGP,因为当PE学到CE的路由后,要发给远程LAN,所以此路由需要导入MP-BGP,但是这种重分布在EBGP和MP-BGP之间会自动执行,无需额外配置。

(1)在PE R1上配置到CE的EBGP:

r1(config)#router bg 100

r1(config-router)#address-family ipv4 vrf vpn1

r1(config-router-af)#neighbor 14.1.1.4 remote-as 200

r1(config-router-af)#neighbor 14.1.1.4 activate

(2)在PE R3上配置到CE的EBGP:

r3(config)#router bgp 100

r3(config-router)#address-family ipv4 vrf vpn1

r3(config-router-af)#neighbor 36.1.1.6 remote-as 300

r3(config-router-af)#neighbor 36.1.1.6 activate

r3(config-router-af)#

(3)在CE R4上配置到PE的EBGP:

r4(config)#router bgp 200

r4(config-router)#neighbor 14.1.1.1 remote

r4(config-router)#neighbor 14.1.1.1 remote-as 100

r4(config-router)#network 10.1.1.0 mask 255.255.255.0

(4)在CE R6上配置到PE的EBGP:

r6(config)#router bgp 200

r6(config-router)#neighbor 36.1.1.3 remote-as 100

r6(config-router)#network 192.168.1.0 mask 255.255.255.0

(5)解决BGP路由问题:

说明:因为在LAN1和LAN2之间配置的BGP AS号码都为200,而本端BGP在收到路由时,如果发现路由携带的AS和自己的AS相同,则丢弃该路由,所以双方的CE都不会有对方的路由,所以这个问题要在PE的BGP上配置允许AS重叠。

r1(config)#router bgp 100

r1(config-router)#address-family ipv4 vrf vpn1

r1(config-router-af)#neighbor 14.1.1.4 as-override

r3(config)#router bgp 100

r3(config-router)#address-family ipv4 vrf vpn1

r3(config-router-af)#neighbor 36.1.1.6 as-override

7.Multi-VRF CE / VRF-Lite

在CE上将连接不同部门的接口直接划入不同的VRF。因为在平时,要将接口划入VRF,是在PE上做的,而CE是不了解VRF的,也就是说MPLS_×××对于CE端来说是透明的,现在要让CE也能够认识VRF,能够成功为不同接口划不同的VRF,这就需要扩展CE具有PE的功能,这种功能被称为Multi-VRF CE 或VRF-Lite,在CE上为不同接口划VRF的同时,PE上的VRF将继续保留不可删除,所以PE的功能将不作变动。而在CE将路由传递给PE时,这中间运行的协议是OSPF,并且还要扩展OSPF的vrf-lite功能。

CISCO官方VRF-lite文档:

http://www.cisco.com/en/US/docs/ios/12_2sb/feature/guide/vrflitsb.html