作者:https://blog.51cto.com/361531/1703951
L3 MPLS *** 静态CE路由配置:
--1, P与PE设备之间部署IGP, 保证loopback地址是否可达.
--2, P与PE设备之间部署LDP, IGP,LDP用于骨干网的标签分发,IGP保证PE之间的环回口可达,这样LDP才能正常工作.
--3, PE设备之间建立MP-BGP邻居关系
--4, PE设备配置相关VRF以及接口
--5,配置PE-CE间路由协议(静态)
--6, 将CE路由引入PE的相关VRF BGP中.
最后,CE---CE之间的路由能互通, CE R1和R2之间的loopback可以互通.
建议:
在PE上面配置BGP的时候,一定要在全局打上:no bgp default ipv4-unicast
强烈推荐.PE到PE之间,只需要建立环回口BGP邻居,因为BGP全局默认是会对IPv4路由进行承载的,但是CE到CE之间的路由是不会被BGP承载的。所以为了逻辑清晰,这里推荐全局干掉ipv4-unicast.在address-family ipv4-unicast中进行激活.
PE router bgp 1
no bgp default ipv4-unicast //建议干掉默认的IPv4承载.
neighbor 7.7.7.7 remote-as 1 //全局的BGP邻居,PE到PE之间全局邻居.
neighbor 7.7.7.7 update-source loop0
!
address-family ***v4 //引入了地址族,就是MP-BGP,多协议BGP.
//地址族分很多类,IPv4, IPv6, ***V4.组播等等.以后根据协议的发展,还可以进行扩展.
neighbor 7.7.7.7 active //激活***V4邻居,这样的话下面的命令会自动生成.
neighbor 7.7.7.7 send-community extended //扩展团体属性,会携带RD/RT传递到对端去,这样在控制层面才有办法当路由前缀到了对端设备的时候从全局导入到VRF中去.该命令会在cisco设备中自动生成,不能删除,否则RD/RT就不能传递过去了。还有BGP对端PE分配给我这个私网路由的***标签.
exit-address-family
所以,bgp下面,除了全局bgp邻居,还有bgp ***v4的邻居.
用命令:show ip bgp ***v4 all summary 进行查看.
这里***V4邻居关系已经建立,可以携带RT/RD通告到对端.(私有团体属性是不能传递的,所以需要制定命令开启传递).
关于RT,在PE设备上面,两点都要export和import能对应上,如下:
||||
|||| 只要配置了vrf以后,在BGP中会自动生成vrf的地址族.
\ / 需要做的事情仅仅是重分发而已.非常智能.
需要手动做CE端的路由协议的重分布:
接下来, PE--CE之间的路由协议.这里我们用的是静态路由.
最后,PE5和PE7,用show ip bgp ***v4 all进行查看,都有了本端和对端CE的路由信息.
并且可以看到,携带的RD是1:1,RT的话要进入路由明细去看。
标签,外层标签是LDP分配的,已经没有什么可以看的了。这里重点是看***标签.
对于整个报文标签的转发如下图:
最后,R5上面做Traceroute也能看到,到了R6剥离外层标签。到了R7剥离***标签.
一共有两层标签.
配置案例:
拓扑图如下:
这里当然首先用试验阐述报文的封装转发过程,最后再附上相关配置.
1,原理部分
上面是两端PE 的RD不同的时候,那么相同的时候,就不会维护两个RD为一个相同的路由前缀:
下面看看标签的分配,包括MPLS LDP标签和MP-BGP分配的标签:
在R5上面,关于2.2.2.2这个***v4的路由前缀,对端的RT export为100:2. 关于MP-BGP分配的标签, 对端MP-BGP为该前缀分配的是704标签,通告到本端.所以out 标签为704. 本地不为这个前缀分标签.
因为PE-1-R5来说,是IP--->MPLS.所以CEF表中,会记录更全的标签信息:
这里可以看到,对于2.2.2.2/32,外层标签(LDP)分配给R5本端的是602.而MP-BGP分配给我的标签是704.
602这个标签,对于全局来说,实际上是对端的R7的环回口的标签,因为BGP+MPLS,最终,只会为BGP路由前缀的下一跳进行标签的分配。
所以在mpls forwarding-table中,不会体现2.2.2.2这个***V4的路由前缀,而是直接体现7.7.7.7的标签.
Traceroute的结果。我们也可以看到这两层标签的工作情况:
CE1开始traceroute, 到了PE-1-R5的时候,是IP报文,到了第二跳R6的时候,出去的时候携带MPLS LDP标签602,MP-BGP分配的***V4标签704到达R6.第三跳,因为R6是倒数第二跳,传递给PE-2-R7的时候,会剥离外层标签602.然后仅仅是报文携带704这个MP-BGP标签到达R7,最后R7会根据704这个标签,把该报文送到相关的vrf接口,最终达到最后一跳.
在R7上面, show ip cef vrf Hank detail中可以看到,R7确实是为2.2.2.2这个***v4路由前缀分配了本地MP-BGP的标签704:
最后,CE1的loop0到CE2的loop0肯定是通的.
2, 配置&&注释部分:
对于CE来说,没有什么特别的,接口IP地址,然后就是静态路由.
CE1-R1:
interface Loopback0
ip address 1.1.1.1 255.255.255.255
!
interface Ethernet0/0
ip address 10.0.15.1 255.255.255.0
!
ip route 2.2.2.2 255.255.255.255 10.0.15.5
CE2-R2:
interface Loopback0
ip address 2.2.2.2 255.255.255.255
!
interface Ethernet0/1
ip address 10.0.27.2 255.255.255.0
!
ip route 1.1.1.1 255.255.255.255 10.0.27.7
对于PE来说, 各个配置都必须要保证配好.
PE-1-R5:
ip vrf Hank //创建一个vrf在PE-1-R5上面.
rd 1:1 //RD仅仅是一个本地的路由标示,本地有效,所以R5配置1:1.R7配置2:2一点问题都没有.
route-target export 100:1 //RT export,对于控制平面来说,本端的RT export 100:1一定要和R7的RT import对应一致.否则路由到了R7不能导入.
route-target import 100:2 //RT import, 对于控制平面来说,对端的RT export 100:2一定要和本端VRF的RT import对应,否则的话,路由从R7到了R5以后不能被R5导入.
!
ip cef //cef是FIB表,一定要打开,LDP是基于FIB表的,如果cef关了,那么出现的想想是show mpls forwarding-table是控标项.
mpls label range 500 599 //这里因为是做实验的关系,R5的标签范围分配99个.从500开始,好看现象.真实现网中一定不能这样配置范围,否则会因为路由前缀超过范围,而得不到标签,影响现网业务.
mpls label protocol ldp //这个是系统默认的标签分发协议.手动修改以后,可以修改为TDP.
mpls ldp router-id Loopback0 force //mpls LDP的router-id强制为loop0.
!
//关于环回口,这里要多说几句. 一定要配置为32位的掩码,至少是一个好的习惯.为什么呢?主要原因还是为OSPF这个IGP协议留上一手。我们知道,核心骨干网中,RIP,OSPF,ISIS,EIGRP,OSPF是使用最广泛的.(RIP的16跳就限制了该协议不可能在中大型网络中使用,EIGRP是cisco私有协议,没有任何一个运营商会用EIGRP,因为需要考虑其他设备的兼容性. ISIS使用得比较少),那么最后就是OSPF.
OSPF,默认的网络类型是broadcast.有一个特性,loopback口,如果不修改网络类型为point-to-point的话,如果配置的掩码是24位,本地会为5.5.5.0/24分配一个标签,但是IGP OSPF传递到其他路由器是32位的掩码,这样就算本地把5.5.5.0/24的标签通告给其他邻居,但是因为其他邻居收到的IGP路由是5.5.5.5/32,标签和路由前缀不匹配,因而LSP断裂.最终导致找不到标签从上一个路由器丢包.
interface Loopback0
ip address 5.5.5.5 255.255.255.255
!
interface Ethernet0/0
ip vrf forwarding Hank //CE端的接口,需要将接口划分到VRF中.以便进行CE之间的区分.
ip address 10.0.15.5 255.255.255.0
!
interface Ethernet0/1
ip address 9.0.56.5 255.255.255.0
mpls label protocol ldp //接口下面的默认配置。
mpls ip //需要手工开启,标示该接口运行LDP协议.
!
//OSPF,骨干网的IGP协议,所以不能携带VRF参数,要把环回口,骨干的接口全部network进去。IGP通了以后, LDP才能顺利的建立邻居,分发标签.
router ospf 1
router-id 5.5.5.5
network 5.5.5.5 0.0.0.0 area 0
network 9.0.56.5 0.0.0.0 area 0
!
//BGP是重头戏,下面的配置是MP-BGP,因为承载了IPv4, vrf IPv4, ***V4.有需要的话MP-BGP还需要承载更多的协议进来.
router bgp 1000
bgp router-id 5.5.5.5 //bgp的环回口使用loopback接口.TCP可达,邻居就能建立起来.
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 7.7.7.7 remote-as 1000 //全局建立BGP邻居
neighbor 7.7.7.7 update-source Loopback0 //用环回口当更新源,否则默认是用出接口做.
!
address-family ipv4 //因为全局打上了no bgp default ipv4,这里需要在ipv4地址族里面激活全局的IBGP邻居.
neighbor 7.7.7.7 activate
exit-address-family
!
//下面***V4地址族,就是MP-BGP承载的众多协议之一.
当VRF接口将路由导入到全局的BGP的时候,会携带RD/RT和标签属性.这些都会被作为MP-BGP的扩展团体属性,在***v4地址族中进行携带,然后发送到对端。所以一定需要将***v4的邻居激活,否则的话,扩展团体属性是没有办法进行传递的.
address-family ***v4
neighbor 7.7.7.7 activate
neighbor 7.7.7.7 send-community extended
exit-address-family
!
//关于ipv4 vrf xxx,这里是需要将VRF接口的路由给重分发到BGP中,一个vrf-->BGP的导入的过程.
因为本例只用了静态路由,所以这里只需要重分发静态即可.
address-family ipv4 vrf Hank
redistribute static
exit-address-family
!
ip route vrf Hank 1.1.1.1 255.255.255.255 10.0.15.1 //静态路由,需要写的是vrf的路由.
!
PE-2-R7:
ip vrf Hank
rd 2:2
route-target export 100:2
route-target import 100:1
!
ip cef
mpls label range 700 799
mpls label protocol ldp
mpls ldp router-id Loopback0 force
!
interface Loopback0
ip address 7.7.7.7 255.255.255.255
!
interface Ethernet0/0
ip address 9.0.67.7 255.255.255.0
mpls label protocol ldp
mpls ip
!
interface Ethernet0/1
ip vrf forwarding Hank
ip address 10.0.27.7 255.255.255.0
!
router ospf 1
router-id 7.7.7.7
network 7.7.7.7 0.0.0.0 area 0
network 9.0.67.7 0.0.0.0 area 0
!
router bgp 1000
bgp router-id 7.7.7.7
bgp log-neighbor-changes
no bgp default ipv4-unicast
neighbor 5.5.5.5 remote-as 1000
neighbor 5.5.5.5 update-source Loopback0
!
address-family ipv4
neighbor 5.5.5.5 activate
exit-address-family
!
address-family ***v4
neighbor 5.5.5.5 activate
neighbor 5.5.5.5 send-community extended
exit-address-family
!
address-family ipv4 vrf Hank
redistribute static
exit-address-family
!
ip route vrf Hank 2.2.2.2 255.255.255.255 10.0.27.2
!
P-R6:
关于P路由器,其实配置非常简单。而且P不需要知道BGP,VRF的CE路由.
P唯一的工作就是转发标签报文,所以运营商对于P路由器的需求是:性能高,稳定.一般用cisco7600或者12800等高端设备来做.
ip cef //依然要说的是,cef是FIB表,是MPLS标签绑定表和标签转发表的基础,如果有人把cef关了,那么本设备的MPLS功能会被完全禁用.当MPLS报文来了该设备,因为该设备IGP路由表中没有报文目的的前缀,结果是直接丢包.
mpls label range 600 699
mpls label protocol ldp
mpls ldp router-id Loopback0 force
!
interface Loopback0
ip address 6.6.6.6 255.255.255.255
!
interface Ethernet0/0
ip address 9.0.67.6 255.255.255.0
mpls label protocol ldp
mpls ip
!
interface Ethernet0/1
ip address 9.0.56.6 255.255.255.0
mpls label protocol ldp
mpls ip
!
router ospf 1
router-id 6.6.6.6
network 6.6.6.6 0.0.0.0 area 0
network 9.0.56.6 0.0.0.0 area 0
network 9.0.67.6 0.0.0.0 area 0
!