MPLS原理
背景
90年代,为解决流量快速增长而设备性能受到限制,相较于传统的基于IP路由表转发已经无法满足需求,MPLS多协议标签交换被提出,创新式的提出基于标签转发,一定情况下缩短了包处理时间,而后续随着设备性能不断迭代,MPLS因为其转控分离,支持多层标签嵌套分发更多被用于VPN和QOS领域当中
相关概念
MPLS域:一系列运行MPLS的设备组成的域
LSR:运行MPLS的设备
FEC:转发等价类,是一组具有某些共性的数据流集合,通常用路由条目或DSCP等特征划分
LSP:标签交换路径,是标签报文穿越MPLS域到达目的地的路径,对于同一个FEC其标签是一样的
设备角色
根据所属MPLS域的位置
ler:位于MPLS域边缘的设备
core lsr:MPLS域内部的设备
根据对流量处理的方式
ingress入站LSR:通常指向IP报文中压入标签的设备
transit中转LSR:通常指将MPLS报文进行置换标签,并将其在MPLS域内继续传递的设备
egress出站LSR:通常指将MPLS报文进行剥离标签,还原为IP报文的设备
行为
PUSH:压入标签
SWAP:交换标签
POP:弹出标签
报文
MPLS标签报文被嵌入在数据链路层和网络层之间,自持嵌套包含
Label20bit,范围0-15,16-1023静态分布,1023-1048575被用于动态分配
Experimental Use实验字段3bit:同于CoS(class of servive)
S栈底位1bit:用于标识该标签是不是最后一个MPLS标签,如果是置1,不是置0
TTL8bit:作用同IP报文的TTL
重要表项
FTN(FEC-to-NHLFE)在ingress存在
包括:Tunnel ID、FEC到NHLFE的映射信息
NHLFE下一跳标签转发表项(Next Hop Label Forwarding Entry)在ingress和transit存在
包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息
ILM入标签映射(ILM,Incoming Label Map)在transit和egress存在
包括:Tunnel ID、入标签、入接口、标签操作类型等信息。
转发流程
1.当流量进入根据FIB表项查看如果发现Tunnel-id不为0X0即视为进入标签转发(对应图中1)
2.通过Tunnel-id查询NHLFE表项关联流量(对应图中2)
3.依据NHLFE表项对流量进行相关操作,这里是压入标签Z并转发到1.1.1.2(对应图中3,4)
4.R2收到数据查ILM表(对应图中5)
6.由ILM表的Tunnel-id关联NHLFE表项(对应图中6)
7.明确行为位交换标签并且下一跳为2.2.2.2执行(对应图中7)
8.R3收到查ILM表项根据表项进行下一步处理即出站去除标签还原为IP报文(对应图中8,9)
配置案例
结合以上拓扑现要求实现1.1.1.1访问3.3.3.3实现双向标签转发
实验步骤
1.IP地址配置
R1
R2
R3
2.OSPF路由互通

3.激活MPLS
本操作以R1为例
mpls lsr-id 1.1.1.1
mpls
INT E0/0/0
MPLS
4.静态LSP配置
[R3]static-lsp egress 1 incoming-interface Ethernet0/0/0 in-label 666
[R1]static-lsp ingress 1 destination 3.3.3.3 32 nexthop 10.0.12.2 out-label 777
[R2]static-lsp transit 1 incoming-interface Ethernet0/0/0 in-label 777 nexthop 10.0.
23.3 out-label 666
1.1.1.1 ---->3.3.3.3[R3]static-lsp ingress 2 destination 1.1.1.1 32 nexthop 10.0.23.2 out-label 666
[R2]static-lsp transit 2 incoming-interface Ethernet0/0/1 in-label 666 nexthop 10.0.
12.1 out-label 777
[R1]static-lsp egress 2 incoming-interface Ethernet0/0/0 in-label 777
3.3.3.3 ---->1.1.1.1
效果查看
对于入栈设备查看FIB表得到tunnel id,再通过nhlfe表项得知具体行为
对于中转设备查看ILM表得到tunnel id,再通过nhlfe表项得知具体行为
对于出栈设备查看ILM表可看到其弹出栈的行为
以下以R1为例查看
ping包携带标签