跨域A回顾
缺点:因为使用了IPV4方式,导致两个ASBR之间都要建立实例,中间是多个实例,每个实例又是一使用一个单独的线缆。每台设备都需要消耗空间来存储IPV4的报文。
跨域B回顾
整个使用BGP进行传递,使用了MP-IBGP和MP-EBGP,B方案使用了两层标签,中间跨域的链路只使用了内层标签。
下一跳发生变化,标签也会变化;标签如果变化,下一跳一定变化。需要识别内层标签的设备分别是两个ASBR和两边的设备。
跨域C
不经过中间设备传递内层标签,直接让两个PE之间进行传递,两个PE上面直接建立MP-EBGP邻居。因为建立BGP邻居的基本前提是TCP可达。
- 1上面通过IGP可以学到3.3.3.3,让1设备network 3.3.3.3把路由传递给4;同时4通过IGP可以学到6.6.6.6,network 6.6.6.6把路由通过BGP传递给R3。
- R1和R3建立BGP邻居,这样R1就可以把6.6.6.6的路由传递给R3;R4和R6建立BGP邻居,这样R6就有了3.3.3.3的路由。
- 此时,R6设备去访问R3时,携带了内层标签,内层标签只能被R3与R6识别,这样的话中间设备无法识别就形成了黑洞,按照往常需要使用LDP隧道进行迭代,但是现在有一个问题就是R6,R5,R4并不和R3在一个AS内,也就意味着R6这边没有去通往R3的隧道,即便可以使用LDP也只能把数据送到R4并不能完成跨域,跨域的地方没有标签,这就是跨域C的一个问题。
- 通过策略+BGP的方式产生标签,BGP平时是通过MP-BGP自动产生标签,现在也可以手动进行产生标签,R1传给R4的时候加上一个标签;ip ip-prefix 3.3.3.3 index 10 permit 3.3.3.3 32,route-police 1 premit node 10 , if-match ip-prefix 3.3.3.3 apply mpls-label;bgp 100 ,peer 120.1.14.4 route-policy 1 export,还需要加入一条命令,具有携带标签的功能:peer 123.1.14.4 label-route-capability,接收方如果能接受标签也需要配置这条命令。能力发生变化,BGP需要重启,这个标签是R1产生的,也就是R4路由去往R1的时候,会携带策略标签+内层标签,进行跨域的时候就需要策略标签进行转发即可。
- dis bgp routing-table 3.3.3.3
- 此时R4发往R6的路由,标签是没有变化的,如果要发生变化那么就需要进行swap动作,如果标签替换了那么下一跳也可以发生变化,如果是一个标签路由,那么就重新换一个标签,此时标签就进行了替换。
R4上面:route-policy 2 permit node 10,if-match mpls-label,apply mpls-label;bgp 200 peer 6.6.6.6 policy 2 expolt ,此时R6上面的3.3.3.3路由也就有了标签,而且下一跳可达
控制平面思路
- R3发送了去往X的路由携带了一个标签传给了R6,R6的下一跳是R3,不可达
- 此时R6是无法到达R3的,那么就先用策略标签到把路由送到对面AS,此时下一跳就是R4,带着两层标签去往R4,但是R5哪一层标签也不认识,R5是一个黑洞
- 为了解决R5黑洞,那么就在AS内修一条去往4.4.4.4的隧道,这样先用最外层标签到R4,此时R4认识中间层标签进行swap动作换到1产生的标签上面,继续把报文传递到1,1也认识这个标签,把中间层弹出,R1知道这个中间标签是去往3.3.3.3的所以会为去往3.3.3.3的FEC产生一个ldp标签
跨域C2
R1把3.3.3.3的路由传递给R4后,R4会把路由引入到IGP里面,此时4,5,6就都有了去往3.3.3.3的FEC,然后R4通过策略标签进行跨域,整个VPN只有两层标签,注意,FEC默认不会为BGP路由产生标签
C1总结
C2总结