1.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 ×××场点同时连接到MPLS ×××骨干网络,PE-CE路由协议使用OSPF,OSPF区域分别有0、1、2、3,当MPLS ×××场点之间互相再连接链路后,这样的链路被称为后门链路(BackDoor),只要OSPF路由从这些后门链路上更新,那么势必会造成PE和CE路由器将MPLS ×××场点之间的流量优先选择从后门链路发送,而放弃从MPLS ×××骨干网络发送,原因为:
*MPLS ×××骨干网络中为BGP,且为IBGP,管理距离为200,高于OSPF的值。
*PE和CE之间使用OSPF,从同区域学习到的路由优先于其它区域路由。
当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 ***1
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 ***1
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 ***1
r1(config-router-af)#neighbor 14.1.1.4 as-override
r3(config)#router bgp 100
r3(config-router)#address-family ipv4 vrf ***1
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文档: