想要运行MPLS ,必须完成以后三步走
路由器运行IGP协议,维护RIB表以及CEF表(FIB表) forwarding information base
这个不用多说,只要是支持CEF的表设备,有RIB就肯定会有CEF
运行完IGP协议后,会学习路由条目,
MPLS 标签模式
LDP 公有标准
TDP 思科私有协议
如果两端所使用的协议不同,则LDP 的邻居无法建立
(标签分发协议)维护LIB表(label information base)
首先要确保该设备支持MPLS ,并且可以支持LDP协议。才可以
(LDP公有 TDP cisco私有)
在本地为所有的路由前缀捆绑标签,
比如R3为30.0的条目,在本地捆绑300
R2为30.0的条目,在本地捆绑200
然后将这个标签通行给我的LDP邻居
然后维护自己的LIB表,(label information base)
LIB表最终形态就是这样的
本地捆绑的标签是给我的LDP邻居用的。当然,R1也会把30.0的条目标签发送给R2,但是R2并没有最终走它,为什么?因为会考虑IGP协议的下一跳设备。
路由器更新CEF表,同时维护自己的LFIB表(label forwarding information base)
此时,就出现了4个表,
RIB routing information base
FIB cef表 forwarding information base
LIB label information base
LFIB label forwarding information base
可以理解为LFIB表是由LIB 和FIB表共同建立的。
MPLS 基础配置
那它们都是什么样的呢?
别急,咱们来完成一个MPLS的基础配置看一下
拓扑如下
1 三台设备运行IGP协议(这里选择的是OSPF,就不再赘述了)
2 启用LDP标签分发协议,并且手动指定标签范围
3 启用MPLS协议
命令如下
R1
R1(config)#ip cef ////设备一定要支持CEF才可以,并且要确保开启 R1(config)#mpls ldp router-id lo 1 //指定LDP的RID为loopback接口 R1(config)#mpls label range 100 199 //指定标签分发的范围 R1(config)#inter f0/0 //进入相应的接口下 R1(config-if)#mpls ip //开启MPLS
这里需要注意的是,在LDP的协议中,这个RID和OSPF里的定义是一样的
就是用于标识设备的,另外,-它同样和OSPF一样,支持选举,
可以指定loop back 接口,也可以让它自己来选定
R2
R2(config)#ip cef R2(config)#mpls ldp rou lo 1 R2(config)#mpls lab range 200 299 R2(config)#inter range f0/0 - 1 R2(config-if-range)#mpls ip
R3
R3(config)#ip cef R3(config)#mpls ldp rou lo 1 R3(config)#mpls lab range 300 399 R3(config)#inter f0/0 R3(config-if)#mpls ip
如果说LDP的Neigbor能够起来的话,系统会有相应的提示
先来看看刚才提到的那些表项如何查看吧
Show ip cef
R3#show ip cef Prefix Next Hop Interface 0.0.0.0/0 drop Null0 (default route handler entry) 0.0.0.0/32 receive 1.1.1.1/32 23.0.0.2 FastEthernet0/0 2.2.2.2/32 23.0.0.2 FastEthernet0/0 3.3.3.3/32 receive 12.0.0.0/24 23.0.0.2 FastEthernet0/0 23.0.0.0/24 attached FastEthernet0/0 23.0.0.0/32 receive 23.0.0.2/32 23.0.0.2 FastEthernet0/0 23.0.0.3/32 receive 23.0.0.255/32 receive 224.0.0.0/4 drop 224.0.0.0/24 receive 255.255.255.255/32 receive
CEF表,只要是设备支持,就一定可以查看的,其实在路由设备进行转发数据的时候,最终查询的还是CEF表,而不是RIB表。使用CEF表可以有效的降低数据转发过程中的递归查询,从而实现所谓的“思科特快转发”
当然,你也可以直接但看CEF时,查看具体的一个前缀,如下:
Show ip cef x.x.x.x
R3#show ip cef 1.1.1.1 1.1.1.1/32, version 8, epoch 0, cached adjacency 23.0.0.2 0 packets, 0 bytes tag information set local tag: 300 //本地标签 fast tag rewrite with Fa0/0, 23.0.0.2, tags imposed: {200} //强行压入的标签 via 23.0.0.2, FastEthernet0/0, 0 dependencies next hop 23.0.0.2, FastEthernet0/0 //下一跳地址以及出接口 valid cached adjacency tag rewrite with Fa0/0, 23.0.0.2, tags imposed: {200} //{所压入的标签}
2 LIB
Show mpls ldp bindings
R3#show mpls ldp bindings tib entry: 1.1.1.1/32, rev 2 local binding: tag: 300 //本地对该条前缀标记的标签 remote binding: tsr: 2.2.2.2:0, tag: 200 //来自于neighbor2.2.2.2来的标签 (对于ldp的标签而言,始终记住一句话,我自己为本地压入的标签是给我的邻居用的) tib entry: 2.2.2.2/32, rev 4 local binding: tag: 301 remote binding: tsr: 2.2.2.2:0, tag: imp-null tib entry: 3.3.3.3/32, rev 6 local binding: tag: imp-null remote binding: tsr: 2.2.2.2:0, tag: 201 tib entry: 12.0.0.0/24, rev 10 local binding: tag: 302 remote binding: tsr: 2.2.2.2:0, tag: imp-null tib entry: 23.0.0.0/24, rev 8 local binding: tag: imp-null remote binding: tsr: 2.2.2.2:0, tag: imp-null R3#
有了LIB表,有了FIB表,二者共同构建了LFIB表(label information forwarding base)
Show mpls forwarding-tables
R3#show mpls forwarding-table Local Outgoing Prefix Bytes tag Outgoing Next Hop tag tag or VC or Tunnel Id switched interface 300 200 1.1.1.1/32 0 Fa0/0 23.0.0.2 301 Pop tag 2.2.2.2/32 0 Fa0/0 23.0.0.2 302 Pop tag 12.0.0.0/24 0 Fa0/0 23.0.0.2 R3#
解读
1 local tag 本地标签 //prefix中所标记前缀在本地压入的标签
2 Outgoing tag or VC //出去的动作
3 prefix or tunnel ID //前缀或者是tunnel id
4 outgoing interface //出接口
5 next hop ///下一跳地址
查看LDP邻居列表
Show mpls ldp neighbor
Peer ldp ident 1.1.1.1:0; local ldp ident 2.2.2.2:0
邻居的LDP标识为: 本地LDP标识为:
Tcp connection:1.1.1.1:646 – 2.2.2.2.36511
Tcp连接的地址及端口号,646 对随机
Show mpls ldp discovery
Local ldp identifier 本地LDP 标识
3.3.3.3
Interface 本端接口
Xmit/recv //发送和接收,如果都有则显示LDP的邻居且标签分发过程正常
Ldp id : 对端的LDP ID(也是我们前面提到的tracport address,和对端设备建立LDP的三次握手,必须保证这个地址是能够通信的,这一点和OSPF的RID是有所不同的,OSPF的RID,就是一个虚构的,可以不互通,仅做标识使用。需要注意)
也可以叫做弹出,同样的,只会弹出报文中最前端(顶层)的标签
2 交换 swap
会显示为 Local --- outgoing的标签转换,但是只会交换最前面的(顶层)
3 添加 push
会在原有标签的基础之上再加上一个新的标签
(移除所有标签),不管你有多少层标签,只要是标记为Untagged的话,那么将会由一个标签包直接 转换成IP包
看到这里你是否会有一个疑惑?
什么疑惑呢?
就是LDP的邻居是如何建立的?
是像IGP协议那样?还是像BGP协议那样呢?
咱们下节笔记详见......
----------------------------------------------
CCIE成长之路 --- 梅利
原文:https://www.cnblogs.com/meili333/p/13722286.html