R6配置
ip vpn-instance vpn1 ipv4-family route-distinguisher 6:6 vpn-target 6:1 export-extcommunity vpn-target 1:6 import-extcommunity # mpls lsr-id 6.6.6.6 mpls # mpls ldp # isis 1 is-level level-2 cost-style wide network-entity 50.0000.0000.0006.00 interface GigabitEthernet0/0/0 ip address 56.1.1.6 255.255.255.0 isis enable 1 mpls mpls ldp # interface GigabitEthernet0/0/1 ip binding vpn-instance vpn1 ip address 68.1.1.6 255.255.255.0 ospf enable 1 area 0.0.0.0 # interface NULL0 # interface LoopBack0 ip address 6.6.6.6 255.255.255.255 isis enable 1 # bgp 200 peer 1.1.1.1 as-number 100 peer 1.1.1.1 ebgp-max-hop 255 peer 1.1.1.1 connect-interface LoopBack0 peer 4.4.4.4 as-number 200 peer 4.4.4.4 connect-interface LoopBack0 # ipv4-family unicast undo synchronization peer 1.1.1.1 enable peer 4.4.4.4 enable peer 4.4.4.4 label-route-capability # ipv4-family vpnv4 policy vpn-target peer 1.1.1.1 enable # ipv4-family vpn-instance vpn1 import-route ospf 1 # ospf 1 vpn-instance vpn1 import-route bgp area 0.0.0.0
R7配置
interface GigabitEthernet0/0/0 ip address 17.1.1.7 255.255.255.0 ospf enable 1 area 0.0.0.0 # interface GigabitEthernet0/0/1 # interface GigabitEthernet0/0/2 # interface NULL0 # interface LoopBack0 ip address 7.7.7.7 255.255.255.255 ospf enable 1 area 0.0.0.0 # ospf 1 area 0.0.0.0
R8配置
interface GigabitEthernet0/0/0 ip address 68.1.1.8 255.255.255.0 ospf enable 1 area 0.0.0.0 # interface GigabitEthernet0/0/1 # interface GigabitEthernet0/0/2 # interface NULL0 # interface LoopBack0 ip address 8.8.8.8 255.255.255.255 ospf enable 1 area 0.0.0.0 # interface LoopBack9 # ospf 1 area 0.0.0.0
- 查看现象
此处会封装三层标签,分别是内层标签,以及R3分配的二层标签与LDP标签
当数据包进入R3的端口时,LDP标签会被次末跳弹出,中间层标签会执行swap动作换为R4分配的标签,内层标签保持不变,此时会有两层标签携带
此时数据包会依靠R4分配的标签进行跨域,跨域后会把策略标签弹出,封装LDP标签依靠隧道去找R6,此时会有两层标签,分别是LDP标签和内层标签,在R4的出口上面进行抓包
因为内层标签是R6分配的,所以访问目的地在R6的实例上面,迭代到去往6.6.6.6的隧道里面,封装标签为1024
- 配置细节
- R1与R6建立MP-BGP邻居(此时肯定建立不会成功,EBGP跨跳功能打开)
- R3与R4建立EBGP邻居,R3宣告1.1.1.1,R4宣告6.6.6.6
- 此时R3与R1建立IBGP邻居,R4与R6建立IBGP邻居,这样R1学习到了6.6.6.6,R6学习到了1.1.1.1(但是下一跳不可达)
- AS 100与AS 200内部分别开启LDP协议用于分配标签
- R3与R4之间开启MPLS功能,用于传递策略标签
- R3配置策略抓取1.1.1.1的路由向R4传递时携带标签
- 配置发送与接收标签的能力
- R4配置向R6传递路由时携带标签并进行swap动作(以及发送与接收标签能力)
- 相反,R4配置向R3传递路由时携带策略标签,R3向R1传递路由时携带标签
- 控制平面
- R6把内层标签传递给R1设备,R1发送数据包时会封装这个内层标签
- R4把策略标签附加到IPV4路由中,形成一个带标签的IPV4路由传递给R3设备,让它可以进行跨域
- R3swap一个策略标签附加到IPV4路由中,形成一个带标签的IPV4路由传递给R1设备,因为标签变了,下一跳一定会变,R3还会产生一个LDP标签。
- 此时R1如果向外发送数据会封装3个数据包。
- 转发平面
- 此时R7封装数据包向R8发送,数据包首先进入R1设备并封装最内层标签1027(用于数据包到R6时,R6决定去往哪一个VRF)
- R1设备会查看FIB去往R8的下一跳是谁,是否要走隧道
- 这时候,我们先封装上路由携带的标签1027,再去查看隧道的详情
- 查看之后隧道ID不为0,下一跳是3.3.3.3,所以我们要去看发往3.3.3.3设备的标签封装信息
此时因为要去3.3.3.3所以需要封装外层标签1025进行传递 - 数据包这时来到了R2设备,查看MPLS信息,发现来自1025的标签要次末跳弹出换位3号标签发出
- 此时因为要发送给R3的时候已经把最外层标签弹出,所以只剩了两层标签分别是策略标签和内层标签
- 数据包来到了R3查看MPLS标签,发现来自于1027的BGP标签要swap为1024再进行转发(这就是中间层标签,手动让BGP路由产生的)
- 数据包下一步按照MPLS标签传递给了R4,R4是最后一台产生BGP标签的设备,所以需要进行弹出,另外要去6.6.6.6还需要LDP标签的支持,所以需要再封装LDP标签1024,然后向外发送数据包给R5
- R5根据MPLS标签表发现来自1024的标签要发给R6时进行次末跳弹出操作这个时候仅仅还剩最后一层标签1027交给R6设备
10.R6根据内层标签决定数据交给了哪个VRF,到此结束