多协议标签交换MPLS(Multiprotocol Label Switching ),MPLS在无连接的IP网络上引入面向连接的标签交换概念,将第三层路由技术和第二层交换技术相结合,充分发挥了IP路由的灵活性和二层交换的便捷性
MPLS并不是一种业务或者应用,它实际上是一种隧道技术。这种技术不仅支持多种高层协议与业务,而且在一定程度上可以保证信息传输的安全性
MPLS
MP:多协议
LS:标签交换(label switch)
应用场景
MPLS是工作在“2.5”层的协议
能够进行标签转发的区域
LER(label edge router):处于MPLS网络的边界设备,负责标签的压入push和弹出pop
LSR(label switch router):处于MPLS网络的中间区域,负责标签的交换swap
到达同一目的地址的报文在mpls网络中经过的路径
数据转发过程中的LSP是单向的
LSP需要构建成功后才能进行标签转发
LSP的建立过程时间就是将FEC和标签进行绑定
具有相同转发处理方式的报文,在MPLS网络中,到达同一目的地址的所有报文就是一个FEC
MPLS中,一条FEC对应着一条路由
FEC的划分方式
设备为FEC进行标签分配;设备对一条FEC完成标签分配后(FEC和标签绑定),建立一条LSP
上游:数据源方向
下游:数据目的方向
ingress入节点:负责压入标签
transit中间节点:负责标签交换
egress出节点:负责弹出标签
标签分发是从下游往上游方向分发
动作 | 解释 |
---|---|
push | 压入 |
swap | 交换 |
pop | 弹出 |
null | 剥离标签,出空标签 |
负责生成和维护路由信息和标签信息
负责IP报文的转发和带MPLS标签报文的转发
从控制层面下发得到,形成最优表项,直接指导数据转发
Forwarding Information Base
基于RIB生成,指导IP报文转发
判断数据是否需要标签转发
Label Forwarding Information Base
基于LIB表和IP路由表生成,指导标签报文转发
由ILM表(入标签映射表)和NHLFE(下一跳标签转发表)构成
NHLFE表(下一跳转发表项)
内容
出接口
下一跳
出标签
查看方式
display tunnel-info tunnel-id xxx
display mpls lsp include x.x.x.x 32 verbose
ILM表(入标签映射表)
内容
查看
display mpls lsp in-label xxxx verbose
display mpls lsp
FIB表通过tunnel ID关联到LFIB表,ILM表通过tunnel ID关联到NHLFE表
接收到IP数据包,查看目的地址对应的tunnel ID
接收到带MPLS标签的数据包,直接查看LFIB表
当数据进入MPLS域时:
根据FIB表查找相对应的转发条目,转发条目中包含tunnel ID字段**
查看tunnel ID字段
查看二层头部信息中的TYPE字段
查询FIB表和NHLFE表指导报文转发
查看FIB表,根据目的IP地址找到对应tunnel ID
display fib ##可以找到相关目的地的tunnel ID
根据tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项相关联起来(FTN)
##查看详细信息(出接口、下一跳、出标签)
display tunnel-info tunnel-id 0x3
##查看详细信息(出接口、下一跳、出标签,标签操作类型)
display mpls lsp include 4.4.4.4 32 verbose
查看NHLFE表项得出接口、下一跳、出标签和标签操作类型
在IP报文中压入出标签、同时处理TTL,然后将封装好的MPLS报文从相应出接口发给下一跳
通过查询ILM和NHLFE表指导MPLS报文转发
根据MPLS的标签值查看对应的ILM表,可以得到tunnel ID。
display mpls lsp in-label 1025 verbose ##根据标签查找tunnel id
根据ILM表的tunnel ID找到对应的NHLFE表项
查看NHLFE表项,得出出接口、下一跳、出标签和标签操作类型
在IP报文中压入出标签、同时处理TTL,然后将封装好的MPLS报文从相应出接口发给下一跳
transit节点上MPLS对不同的label有不同的处理方式
通过查询ILM表指导MPLS报文转发,或者查找IP路由表指导IP报文转发
NHLFE表项为什么存在下一跳?
正常情况下,根据出标签值和出接口即可完成数据转发
存在下一跳主要是为了完成二层头部 目的MAC地址封装
ILM表项为什么存在入接口?
正常情况下,根据入标签即可查找到对应的ILM表项
但是设备中的标签一般会有很多,添加入接口是为了加快标签的查找时间
tunnel ID的作用?
1.在ingress节点根据tunnel id判断是进行IP转发还是MPLS转发2.通过tunnel id查找NHLFE标签
3.标识隧道
标签:短而定长,4字节
内容:
标签值;20bit;范围:0-2^20
0—15:特殊标签、保留位
16—1023:静态分配的标签
1024—2^20:动态分配的标签
路由器为FEC分发标签作为自身入标签,同一个设备为不同FEC分发的标签是不能相同的
路由器收到标签作为自身出标签,入标签和出标签可以相同的也可以不同
标签值只具有本地意义(不同设备的标签分发是可以一致的)
管道模式下,报文将MPLS域看作一台设备,不会将MPLS报文TTL映射到IP报文TTL。报文经过MPLS域,无论MPLS域内有多少台设备,对于IP报文来说TTL只会减一。这样可以更好的隐藏MPLS域,保证安全性
mpls ##进入MPLS视图
entropy-label ttl-mode {uniform | pipe} ##修改模式为 统一/管道
控制层面防环
数据层面防环
依靠TTL防环
静态LSP、动态LSP两种建立方式
由用户通过手工建立的方式为FEC分发标签建立LSP隧道
优点:不需要交互控制报文,设备资源消耗比较小
缺点:配置麻烦、易出错;网络拓扑发送改变,无法动态感知,需要管理员调整
适用于拓扑结构简单,网络稳定场景
配置:
##配置底层路由协议
##全局视图下配置
mpls lsr-id 2.2.2.2 //配置该设备的LSR-ID(该地址需要路由可达)
mpls
##接口视图下配置
interface g0/0/1
mpls //接口激活MPLS,使得接口能够发送、接收MPLS报文
##入接点设备AR2配置
static-lsp ingress 4 destination 4.4.4.4 32 outgoing-interface g0/0/1 nexthop 23.1.1.3 out-label 1020
##传输结点AR3配置
static -lsp transit 4 incoming-interface g0/0/0 in-label 1020 outgoing-interface g0/0/1 nexthop 34.1.1.4 out-label 1021
##出节点设备AR4配置
static-lsp egress 4 incoming-interface g0/0/0 in-label 1021
检查命令
display mpls static-lsp
通过交互报文形式为FEC分配标签,并进行维护
优点:方便管理,可动态感知拓扑发生变化
缺点:交互报文,资源消耗大
有LDP协议、MP-BGP协议
##1.底层IGP配置(ospf,static等)
##2.全局视图下配置
MPLS lsr-id x.x.x.x //配置该设备的LSR-ID
mpls //开启MPLS
mpls ldp //激活LDP协议
##3.接口视图下配置
interface g0/0/1
mpls
mpls ldp //是接口有自动分发的能力
检查命令
display mpls lsp //查看LSP
display mpls ldp
display mpls ldp session //查看邻居会话
使用hello message报文
设备激活LDP后,互相发送hello message报文
hello message报文主要用于对等体间的互相发现,互相学习传输地址,以便建立TCP连接
基于TCP,端口号646,保证标签传递时是可靠
传输地址大的作为主动端发起TCP连接
以hello报文协商的传输地址做连接
使用Initialization message报文和keepalive报文
1.由主动端先发出init报文进行参数协商
2.被动端收到init报文。如果协商成功发送keepalive报文确认+init报文进行参数协商;如果协商失败,发送notification报文终止会话
3.主动端收到init报文。如果协商成功发送keepalive报文确认,会话建立成功;如果协商失败,发送notification报文终止会话
keepalive报文
使用address message报文、label mapping message报文
用来请求、通告及撤销标签绑定
Address Withdraw message、Label request message、Label mapping message、Label withdraw message、Label release message、Label abort request message
相互发送address报文
相互发送maping message报文
数据从上游(ingress)去往下游(egress)
标签的分发是下游设备向上游设备发布,下游设备将分配的标签作为入标签,上游设备将收到的标签作为出标签
决定是否主动分发标签
修改
##两台设备都要配置
interface g0/0/0
mpls ldp advertisement dod ##修改接口标签分发方式为DOD
决定LSP隧道是否有序建立
案例场景:
R1、R2、R3、R4在同一MPLS域,R1上会收到3.3.3.3/32这条FEC的从两个方向(R2和R3)来的标签
1.如果是liberal方式,两个都保存,选择最优的作为主标签用于转发数据,另一个作为备份标签,当主标签链路断开,备份标签会浮现出来
2.如果是conservation方式,只保存一个最优的,1025或者1027
华为默认:DU+ordered+liberal
隐式空标签
用于解决最后一跳设备负担大的问题
在数据发送给最后一跳路由器前提前弹出标签,使最后一跳路由器只查看一次FIB表,减少最后一条的负担
显示空白标签
最后一跳弹出
用于QoS,保证QoS在整个链路中不丢失
实现:
0号标签 | 3号标签 | |
---|---|---|
名称 | 显示空标签 | 隐式空标签 |
弹出设备 | 最后一跳弹出 | 次末跳弹出 |
备注 | 用于有配置QoS的mpls域 |
修改可以为不是32位的主机路由分配标签
mpls
lsp-trigger all