实现跨域的MPLS-VPN
概述:
实现跨域的MPLS-VPN大体上有三种散发,本文档介绍第三种方法:Option-C。在Option-A中标签在ASBR处会断开,数据由标签交换转为IP路由,不仅会影响转发效率还会加大ASBR的负担。而Option-B中的标签是虽然连续的,但是ASBR还是要运载大量的VPNv4路由,处理器负担也是很大的。而Option-C则在两个AS域的路由反射器间建立MP-eBGP对等体,把VPNv4路由直接传递到RR,而ASBR不需要知道VPNv4路由,从而减小了ASBR的处理负担,标签的转发也都是连续的,效率也得到了提升。文档收集自网络,仅用于个人学习 配置任务:
? 按照普通的域内MPLS-VPN配置方法启用域内MPLS-VPN。本实验PE与CE使用的是BGP。
注:与普通域内MPLS-VPN不同的是,这里只需要在RR和PE间建立VPNv4对等体。
在ASBR间建立eBGP的IPv4对等体,并且宣告本AS内的RR和PE的地址到IPv4地址族下,确保能使RR间建立MP-eBGP对等体,并知道如何到达下一跳地址。文档收集自网络,仅用于个人学习 ? 在ASBR上重发布对端RR和PE的BGP路由到IGP,以使得AS内所有路由器知道自己的下一跳地址。 ? RR间建立MP-eBGP对等体,以传递VPNv4路由。并使用neighborx.x.x.x next-hop-unchange命令来使对端AS
内所有的路由器看到的下一跳地址都是PE,以消除次优路由。文档收集自网络,仅用于个人学习 注:RR间不能建立IPv4对等体,否则会影响标签的分发。
? ? 在ASBR间启用MPLS,因为LDP是能为BGP的IPv4路由分发标签的,所以需要使用neighborx.x.x.x send-label命令,来使BGP为BGP的IPv4路由分配标签。文档收集自网络,仅用于个人学习
1 / 23
MP-eBGPRRR3RRR6R2PER4ASBRR5ASBRR7PEAS 234R1AS 567R8AS18AS18
控制层面分析:
1. R8会通过BGP宣告一条8.8.8.8/32的路由给PE R7的VRF下。 R8#show ip bgp neighbors 78.1.1.7 advertised-routes BGP table version is 3, local router ID is 8.8.8.8 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 8.8.8.8/32 0.0.0.0 0 32768 i
R7会把这条8.8.8.8/32的路由通过MP-eBGP通告给路由反射器R6。并携带RT export值1:1在BGP扩展社团属性。同时还会为这条路由分配一个VPN标签22。文档收集自网络,仅用于个人学习 R7#show ip bgp vpnv4 all neighbors 6.6.6.6 advertised-routes BGP table version is 15, local router ID is 7.7.7.7 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path Route Distinguisher: 1:1 (default for vrf vpn-a) *> 8.8.8.8/32 78.1.1.8 0 0 18 i 2 / 23
2. R7#show ip bgp vpnv4 all labels Network Next Hop In label/Out label Route Distinguisher: 1:1 (vpn-a) 1.1.1.1/32 2.2.2.2 nolabel/22 8.8.8.8/32 78.1.1.8 22/nolabel 3. R6会把这条路由传递给VPNv4对等体R3。由于使用了next-hop-unchanged命令R3看到这条路由的下一跳还是PE R7文档收集自网络,仅用于个人学习 R3#show ip bgp vpnv4 all BGP table version is 10, local router ID is 3.3.3.3 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path Route Distinguisher: 1:1 *>i1.1.1.1/32 2.2.2.2 0 100 0 18 i *> 8.8.8.8/32 7.7.7.7 0 567 18 i 4. 5. R3会把这条路由宣告给PE R1,R1通过匹配RT export 1:1 和本地VRF RT import 1:1 对应,会把这条路由放入到VRF路由表。文档收集自网络,仅用于个人学习 R2会把这条路由通过VRF接口F0/0.12通告给CE R1,此时R1已经有8.8.8.8/32的路由了。文档收集自网络,仅用于个人学习 R1#show ip bgp BGP table version is 3, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal, r RIB-failure, S Stale Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 1.1.1.1/32 0.0.0.0 0 32768 i *> 8.8.8.8/32 12.1.1.2 0 234 567 18 i 数据层面分析:
1. R1查看路由表到8.8.8.8/32 下一跳地址为12.1.1.2。
2. R2在VRF接口收到数据后会查看VRF下的CEF表,R2为这条路由压入两层标签,外层的MPLS标签是R4通过
LDP分发的,内层的VPN标签是R7通过BGP分发的。R2会把数据压入标签{23 22}后从F0/0.24口发送出去。
文档收集自网络,仅用于个人学习 R2#show ip cef vrf vpn-a 8.8.8.8 8.8.8.8/32, version 14, epoch 0, cached adjacency 24.1.1.4 0 packets, 0 bytes tag information set local tag: VPN-route-head fast tag rewrite with Fa0/0.24, 24.1.1.4, tags imposed: {23 22} 3 / 23
via 7.7.7.7, 0 dependencies, recursive next hop 24.1.1.4, FastEthernet0/0.24 via 7.7.7.7/32 valid cached adjacency tag rewrite with Fa0/0.24, 24.1.1.4, tags imposed: {23 22} 3. R4收到数据后会查看LFIB表,收到标签23后会压入18从F0/0.45发送。 R4#show mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag 2.2.2.2/32 2074 Fa0/0.24 24.1.1.2 17 Pop tag 3.3.3.3/32 15391 Fa0/0.34 34.1.1.3 18 Pop tag 23.1.1.0/24 0 Fa0/0.34 34.1.1.3 Pop tag 23.1.1.0/24 0 Fa0/0.24 24.1.1.2 23 18 7.7.7.7/32 2520 Fa0/0.45 45.1.1.5 25 Pop tag 45.1.1.5/32 0 Fa0/0.45 45.1.1.5 29 17 6.6.6.6/32 1227 Fa0/0.45 45.1.1.5 4.
R5收到数据后继续查看LFIB表,收到标签为18后会Pop 掉外层标签从F0/0.57发送。此时只携带了一层为22的VPN标签。文档收集自网络,仅用于个人学习 R5#show mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag 67.1.1.0/24 0 Fa0/0.57 57.1.1.7 Pop tag 67.1.1.0/24 0 Fa0/0.56 56.1.1.6 17 Pop tag 6.6.6.6/32 10110 Fa0/0.56 56.1.1.6 18 Pop tag 7.7.7.7/32 2440 Fa0/0.57 57.1.1.7 22 16 2.2.2.2/32 2142 Fa0/0.45 45.1.1.4 25 Pop tag 45.1.1.4/32 0 Fa0/0.45 45.1.1.4 30 17 3.3.3.3/32 1501 Fa0/0.45 45.1.1.4 R7收到数据后继续查看LFIB表,收到标签为22后会untagged掉标签。数据还原为IP包从F0/0.78发送给R8。
文档收集自网络,仅用于个人学习 5. R7#show mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 16 Pop tag 56.1.1.0/24 0 Fa0/0.67 67.1.1.6 Pop tag 56.1.1.0/24 0 Fa0/0.57 57.1.1.5 17 Pop tag 5.5.5.5/32 0 Fa0/0.57 57.1.1.5 18 Pop tag 6.6.6.6/32 0 Fa0/0.67 67.1.1.6 20 Pop tag 45.1.1.0/24 0 Fa0/0.57 57.1.1.5 21 Untagged 3.3.3.3/32 0 Fa0/0.57 57.1.1.5 22 Untagged 8.8.8.8/32[V] 590 Fa0/0.78 78.1.1.8 25 22 2.2.2.2/32 0 Fa0/0.57 57.1.1.5
6. R8收到源为1.1.1.1/32目的8.8.8.8/32的IP包后,会给出回应。到此两端CE已经正常联通了。文档收集自网络,仅用于个人学习 R1#ping 8.8.8.8 source 1.1.1.1 4 / 23
Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 8.8.8.8, timeout is 2 seconds: Packet sent with a source address of 1.1.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 56/89/192 ms 详细配置:
R1
!
version 12.3
service timestamps debug datetime msec service timestamps log datetime msec no service password-encryption !
hostname R1 !
boot-start-marker boot-end-marker ! !
no aaa new-model ip subnet-zero ! !
no ip domain lookup !
ip cef !
interface Loopback0
ip address 1.1.1.1 255.255.255.255 !
interface FastEthernet0/0 no ip address duplex full !
interface FastEthernet0/0.12 encapsulation dot1Q 12
ip address 12.1.1.1 255.255.255.0 no snmp trap link-status !
interface Serial1/0 no ip address shutdown
serial restart-delay 0
5 / 23