最近摆弄MPLS,发现很多人配置MPLS只是写了个简单的命令,对具体的原理解释说的很少。我们这篇文章就好好说下。
这是基本的拓扑图
1.为什么开发MPLS技术,它和传统的ip技术的区别?
我们知道传统的ip转发技术是基于路由表的,也就是说一个从入口来的数据包路由要检查ip 路由表才能做转发,这样的IP数据包网络,在网络设备传递数据包时,是根据数据包的IP包头信息进行交换的,也就是网络设备根据包头中的目标IP地址,来决定从哪个接口转发出去。所以在数据包当中,指导设备正确转发数据包的就是IP地址信息,而IP地址只是数据包的一个标识而已!那么我们为什么不能直接打个标签让路由通过硬件识别这个tag,从进行转发,这样岂不大大节省路由器处理数据包的时间,这就是MPLS产生的原因。不过那时还木有CEF MLS 这样的技术。
2:MPLS标签
其中EXP是关于qos相关的,一会说到这个
bos值是指示标签栈的,一个flow可以有多个标签,值为0,如果是栈底,就为1,在标签交互过程中只看顶部标签,这点注意
3.MPLS基本概念
入站LSR:接收没有标签的数据包,打上标签并发出
4.LDP工作流程
LDP是负责标签转发的协议,
(1)运行LDP的LSR发现
(2)会话的建立和维护
5.标签的交换过程
明白上下游,数据层面路由层面
R345运行mpls ,R1267ip
R1有个1.1.1.1到R6的6.6.6.6标签交换
在运行MPLS路由器上有3张表,路由表 cef表 标签转发表
R3#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
E1 - OSPF external type 1, E2 - OSPF external type 2
i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
ia - IS-IS inter area, * - candidate default, U - per-user static route
o - ODR, P - periodic downloaded static route
Gateway of last resort is not set
34.0.0.0/24 is subnetted, 1 subnets
C 34.1.1.0 is directly connected, Serial0/3
1.0.0.0/32 is subnetted, 1 subnets
D 1.1.1.1 [90/2297856] via 13.1.1.1, 00:43:06, Serial0/0
3.0.0.0/32 is subnetted, 1 subnets
C 3.3.3.3 is directly connected, Loopback0
4.0.0.0/32 is subnetted, 1 subnets
D 4.4.4.4 [90/2297856] via 34.1.1.4, 00:41:57, Serial0/3
5.0.0.0/32 is subnetted, 1 subnets
D 5.5.5.5 [90/2809856] via 34.1.1.4, 00:41:17, Serial0/3
6.0.0.0/32 is subnetted, 1 subnets
D 6.6.6.6 [90/3321856] via 34.1.1.4, 00:41:09, Serial0/3
56.0.0.0/24 is subnetted, 1 subnets
D 56.1.1.0 [90/3193856] via 34.1.1.4, 00:41:18, Serial0/3
13.0.0.0/24 is subnetted, 1 subnets
C 13.1.1.0 is directly connected, Serial0/0
45.0.0.0/24 is subnetted, 1 subnets
D 45.1.1.0 [90/2681856] via 34.1.1.4, 00:41:23, Serial0/3
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 13.1.1.1 Serial0/0
3.3.3.3/32 receive
4.4.4.4/32 34.1.1.4 Serial0/3
5.5.5.5/32 34.1.1.4 Serial0/3
6.6.6.6/32 34.1.1.4 Serial0/3
13.1.1.0/24 attached Serial0/0
13.1.1.0/32 receive
13.1.1.3/32 receive
13.1.1.255/32 receive
34.1.1.0/24 attached Serial0/3
34.1.1.0/32 receive
34.1.1.3/32 receive
34.1.1.255/32 receive
45.1.1.0/24 34.1.1.4 Serial0/3
56.1.1.0/24 34.1.1.4 Serial0/3
224.0.0.0/4 drop
224.0.0.0/24 receive
255.255.255.255/32 receive
R3#show mpls forwarding-table
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Untagged 1.1.1.1/32 0 Se0/0 point2point
17 Pop tag 4.4.4.4/32 0 Se0/3 point2point
18 Pop tag 45.1.1.0/24 0 Se0/3 point2point
19 19 5.5.5.5/32 0 Se0/3 point2point
20 20 56.1.1.0/24 0 Se0/3 point2point
22 22 6.6.6.6/32 0 Se0/3 point2point
虽然一条路由可以打了多标签,但是中间的LSR只根据最顶部的标签便可以做出转发。但是,每台LSR的转发表里都会为一条路由显示两个标签,一个是本地标签,一个是远程标签,要显示两个标签,是因为一台LSR收到数据包之后,就查看它的顶部标签,如果这个标签是某一条相应的本地标签,那么就从相应的接口发出去,同时在发出去的时候,就将数据包的顶部标签改为与这个本地标签对应的远程标签
我们从R5上开始看
R5#show mpls for
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 4.4.4.4/32 0 Se0/2 point2point
17 Pop tag 34.1.1.0/24 0 Se0/2 point2point
18 16 3.3.3.3/32 0 Se0/2 point2point
19 17 13.1.1.0/24 0 Se0/2 point2point
20 18 1.1.1.1/32 0 Se0/2 point2point
21 Untagged 6.6.6.6/32 1224 Se0/0 point2point
木有local标签是21,而出标签是untagged因为R6是ip网络
R4#show mpls for
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Pop tag 3.3.3.3/32 0 Se0/3 point2point
17 Pop tag 13.1.1.0/24 1152 Se0/3 point2point
18 16 1.1.1.1/32 0 Se0/3 point2point
19 Pop tag 5.5.5.5/32 0 Se0/2 point2point
20 Pop tag 56.1.1.0/24 0 Se0/2 point2point
22 21 6.6.6.6/32 432 Se0/2 point2point
关于6.6.6.6路由条目在R4上local 是22 出标签21,意思就是凡事收到6.6.6.6路由条目把出标签是21并从s0/2口转发出去,我们发现R4的出标签就是R5的local标签,这也就是LDP协议的所在
R3#show mpls for
Local Outgoing Prefix Bytes tag Outgoing Next Hop
tag tag or VC or Tunnel Id switched interface
16 Untagged 1.1.1.1/32 0 Se0/0 point2point
17 Pop tag 4.4.4.4/32 0 Se0/3 point2point
18 Pop tag 45.1.1.0/24 0 Se0/3 point2point
19 19 5.5.5.5/32 0 Se0/3 point2point
20 20 56.1.1.0/24 0 Se0/3 point2point
22 22 6.6.6.6/32 0 Se0/3 point2point
之所以是两个22,local那个22是路由随意打得,木有啥实际意思
6.标签的定义
隐式空3标签
7.最后才是配置命令
mpls label protocol ldp
interface Loopback0
ip address 3.3.3.3 255.255.255.255
interface Serial0/0
ip address 13.1.1.3 255.255.255.0
serial restart-delay 0
interface Serial0/1
ip address 23.1.1.3 255.255.255.0
serial restart-delay 0
interface Serial0/3
ip address 34.1.1.3 255.255.255.0
mpls ip
serial restart-delay 0
router eigrp 100
network 3.3.3.0 0.0.0.255
network 13.1.1.0 0.0.0.255
network 23.1.1.0 0.0.0.255
network 34.1.1.0 0.0.0.255
no auto-summary
mpls ldp router-id Loopback0 force
R3#show mpls int
Interface IP Tunnel Operational
Serial0/3 Yes (ldp) No Yes
还有一点说下
R3#show mpls ldp discovery de
Local LDP Identifier:
3.3.3.3:0
Discovery Sources:
Interfaces:
Serial0/3 (ldp): xmit/recv
Enabled: Interface config
Hello interval: 5000 ms; Transport IP addr: 3.3.3.3 (必须保证可以连通)
LDP Id: 4.4.4.4:0
Src IP addr: 34.1.1.4; Transport IP addr: 4.4.4.4
Hold time: 15 sec; Proposed local/peer: 15/15 sec
Reachable via 4.4.4.4/32