参考阅读
MPLS域间OptionB解决方案详解(直连为pnv4 EBGP邻居)
顾名思义,OptionB的解决方案中,两个域的关系是直连的weipnv4邻居关系
实验拓扑
说明:R4、R5之间建立的是wiepnv4的邻居关系 其他说明在配置中展开
配置
[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
peer 10.1.45.5 as-number 567
ipv4-family unicast
undo synchronization
undo peer 10.1.2.2 enable
undo peer 10.1.45.5 enable
ipv4-family vpnv4
policy vpn-target
peer 10.1.2.2 enable
peer 10.1.45.5 enable
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
peer 10.1.45.4 as-number 234
ipv4-family unicast
undo synchronization
undo peer 10.1.7.7 enable
undo peer 10.1.45.4 enable
ipv4-family vpnv4
policy vpn-target
peer 10.1.7.7 enable
peer 10.1.45.4 enable
return
问题1
- R2把172.16.1.1的路由发给R4,R4不收;
- R7把172.16.8.8的路由发给R5,R5不收
现象:R2上有路由,但是R4上没有;R5,R7相同
详细说明:R1发来的路由是携带RT+ipv4即96bit的weipnv4路由,但是R4是没有RT的标识的,即不收这条路由;R5上相同
为什么optionA方案中没有这个问题? 因为OptionA中R4、R5上配置了RT 收的内容就是R2、R7上的RT
如何看R1、R7将路由发给了R2、R5
[R2]dis bgp vpnv4 all routing-table peer 10.1.4.4 advertised-routes
[R7]dis bgp vpnv4 all routing-table peer 10.1.5.5 advertised-routes
意义: 为了减少不必要的标签存储,针对PE而言(标签存在的本质);PE对接CE是接收哪些CE的路由是有要求的,这个要求就是ARF,并不是谁的都收;若关闭了ARF,那么PE就接收任意的CE路由 对于ASBR,其必须要学习到所有的PE路由,那么就需要关闭ARF
解决:
ipv4-family vpnv4
Undo policy vpn-traget
问题2
R4不能将路由(从R5学到的)发给R2;R5不能将路由(从R4学到的)发给R7 原因:R4和R5的接口没有使能MPLS,导致标签的隧道不可达 解决:MPLS意义在于使能标签的功能,具体标签是谁发的可能是LDP、BGP
未使能:没有出接口 使能:有出接口
为什么optionA方案中没有这个问题? OptionA中R4、R5之间是ipv4 weipn-instance的BGP,传递的是IP包,不需要使能mpls,重新进入新的mpls域会重新打RT,切双方都有互相导入的RT 为什么要使能mpls? 因为R4、R5之间要传递的是label,所以接口要使能mpls,不用开启ldp是因为这个label是由weipnv4产生的 而不是ldp产生的
问题3
R4给R2传递weipn路由(从R5学到的),R2不收;R5给R7传递vpn路由(从R4学到的)
原因:RT不匹配; 解决:R2、R7上互导RT
检查邻居
分析
如下从两个维度进行分析
控制层面
R8给R7分配私网的label 1026
R7通过LDP分配给R5一个公网的label 1025
R4、R5又是一段LSP,还是需要一个label
- R8给R7分配的,R7中继给R5分配了一个1026的私网label 收到下游的label
- 自己又分配了1028传给R4
R4上重新产生一个新的私网label,送给上游,R4上将进行一个SWAPPUSH操作 即更换label
数据层面
1、R1查询FIB给到R2
dis fib 172.16.8.8
2、R2查FIB发现这是一个标签包,首先压入底层标签1029(R5通过vpnv4传递给R4的底层标签)
dis fib vpn-instance a 172.16.8.8
然后查询token,压入1024的公网label,这个是R4通过ldp协议分发的,下一条是R3
dis tunnel-info tunnel-id 0x3
至此,R2上有两层label 3、R3上查询in-label为1024的信息,弹出1024,即PHP,露出1029,给到R4
dis mpls lsp in-label 1024 verbose
4、R4上进行swappsuh操作,将私网的1029换成1028,1028这个label是R5通过vpnv4传递来的私网label(R4 <—> R5这一段),给到R5
dis mpls lsp in-label 1027 verbose
R4的入接口抓包,可以看到公网label被弹出,仅剩私网label 1029
R4的出接口抓包,可以看到私网label做了更换的操作,变成了1028 5、R5上进行swappsuh操作,将私网的1028换成1026,1026这个label是R8通过vpnv4传递来的私网label,给到R7 R7传递给R5(控制层面)
dis mpls lsp in-label 1027 verbose
此lsp还有顶层的token,查询详情还需要压入公网的label1025 这个是mpls-domain中ldp生成的,给到R6
dis tunnel-info tunnel-id 0x3
6、R6将公网的1025 label弹出,只剩下私网的1026这个label
dis mpls lsp in-label 1025 verbose
7、R7将私网的1026弹出,查询FIB
dis mpls lsp in-label 1026 verbose
dis fib 172.16.8.8
总结
问题汇总:
- ARF默认开启:R8将路由给到R7,R7发给R5,R5不收
- MPLS未使能(无label、无nexthop):R5给R4,R4不给R2
- RT不匹配:R4给R2传,R2不收
LSP路径
|