参考阅读
MPLS域间OptionA解决方案(背靠背的为pn-instance)
域间的解决方案有三种OptionsA、B、C
此blog主要详解OptionA方案
实验拓扑
说明:
R2 <—> R4 建立MP-BGP 为pnv4的bgp邻居
R5 <—> R7 建立MP-BGP 为pnv4的bgp邻居
R4 <—> R5 建立为pn-instance的bgp邻居
相当于做了两个MPLS的域内为PN解决,对于R4来说,AS567相当于一个client,对于R5来说 相同
配置
分为如下几个模块进行配置
AS234、AS567均是如下配置
1、IGP
2、MPLS(全局使能、接口使能、LSP使能[动态])
3、mp-bgp 为pnv4
4、为pn-instance
[R2]dis c c bgp
[V200R003C00]
#
bgp 234
router-id 2.2.2.2
undo default ipv4-unicast
peer 10.1.4.4 as-number 234
peer 10.1.4.4 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
undo peer 10.1.4.4 enable
#
ipv4-family vpnv4
policy vpn-target
peer 10.1.4.4 enable
#
ipv4-family vpn-instance a
peer 172.16.12.1 as-number 100
#
return
<R4>dis c c bgp
[V200R003C00]
#
bgp 234
router-id 4.4.4.4
undo default ipv4-unicast
peer 10.1.2.2 as-number 234
peer 10.1.2.2 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
undo peer 10.1.2.2 enable
#
ipv4-family vpnv4
policy vpn-target
peer 10.1.2.2 enable
#
ipv4-family vpn-instance a
peer 10.1.45.5 as-number 567
#
return
[R5]dis c c bgp
[V200R003C00]
#
bgp 567
router-id 5.5.5.5
undo default ipv4-unicast
peer 10.1.7.7 as-number 567
peer 10.1.7.7 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
undo peer 10.1.7.7 enable
#
ipv4-family vpnv4
policy vpn-target
peer 10.1.7.7 enable
#
ipv4-family vpn-instance b
peer 10.1.45.4 as-number 234
#
return
<R7>dis c c bgp
[V200R003C00]
#
bgp 567
router-id 7.7.7.7
undo default ipv4-unicast
peer 10.1.5.5 as-number 567
peer 10.1.5.5 connect-interface LoopBack0
#
ipv4-family unicast
undo synchronization
undo peer 10.1.5.5 enable
#
ipv4-family vpnv4
policy vpn-target
peer 10.1.5.5 enable
#
ipv4-family vpn-instance b
peer 172.16.78.8 as-number 800
#
return
检查邻居
R2与R1建立的是为pn-instance,与R4建立的是为pnv4的邻居
R4与R5建立的是为pn-instance,与R1建立的是为pnv4的邻居
R7情况相同
分析
分析控制层面和数据层面的走向
控制层面
顶层label:R7为R5分配一个label 这个是MPLS域内中的LDP分配的,这个是公网label 1025
底层label:R8为R7分配了一个label,这个是vpn-instance分配的私网label1026,R7传递给R5
此时R5上去172.16.8.8就有两层标签;R5去R8要走R7,
数据层面
R1查询fib到R2
R2查询172.16.8.8压入lable为1026,发现有token ,去172.16.8.8要去10.1.4.4 那就再压入1025,下一跳到R3
R3上根据入label查询,做PHP3 弹出,露出底层的1026,下一跳到R4
R4做POP label操作,变成一个IP包,给到R5
R5查询172.16.8.8压入lable为1026,发现有token ,去172.16.8.8要去10.1.7.7 那就再压入1025,下一跳到R6
R6做弹出操作,给到R7
R7做POP label操作,变成一个IP包,给到R8
验证
R1 ping R8 再R3的入接口可以看到两层label;1026为公网的label,由LDP产生,1025为私网label,由R8那边发出
R4的出口 、R5的入口抓包均是IP包,没有label信息
在R6的入口抓包,可以看到,1026为公网的label,由LDP产生,1025为私网label,由R8那边发出
总结
- R4、R5之所以可以收到R1、R8的路由就是因为其上面运行了为pn-instance,可以识别RT+ipv4组成的为pnv4的96bit路由
- optionA的解决方案可以看作是每个域都将对方看作为client
- R3、R4弹出的是LDP的公网label;R4、R7弹出的是私网的label