深入理解MPLS,和你一起详谈MPLS标签和动作!
写在前面:本人是一名计算机系大二的学生,正在备考HCIE R&S,会不定时的将我的学习笔记分享给大家!如果需要更多的学习资源可以通过我的GitHub自行下载!
MPLS
-
使用标签的进行数据转发
-
ATM技术是虽然没有成功,但还是
-
label大师,吸取了ATM的精华,定义在
2.5层
-
multi-protocol label switching,多协议标签交换
-
一种根据
标签
转发的技术 -
可以承载在各种链路层协议上,如ppp、ATM、帧中继、以太网
-
可以承载各种网络层报文,如ipv4、ipv6
-
采用
无连接的控制平面
,实现路由信息的传递和标签的分发(类似于tcp、udp) -
采用
面向连接的数据平面
。实现报文在建立标签转发路径上传送(有lsp)
应用场景
vpn
(virtual private network,虚拟专用网)TE
(traffic engineering,流量工程)QOS
(quality of service ,服务质量)
MPLS VPN应用
- 基于mpls vpn,将不同私有网络的不同分支联结起来,形成一个统一的网络。网络时延降到最低。
MPLS TE应用
- 动态控制网络的流量和网络单元的负载,实时调整管理参数,路由参数和资源约束。优化网络,避免不均的拥塞。
网络及体系架构
属于 | 备注 |
---|---|
LER | label edge router,标签边缘路由器,入门弟子 。负责标签的压入和弹出 |
LSR | label switch router,标签转发路由器,入室弟子 ,负责标签的交换 |
LSP | label switch path,标签交换路径 ,到达同一目的地的地址在mpls网络中经过的路径,lsp是一个单向路径,与数据流方向一致 |
FEC | forwarding equivalentclass,转发等价类 ,具有相同特征的报文,在转发过程中被lsp以相同的方式处理。fec划分灵活,可以是sip\dip\smac\dmac\protocol-type\vpn等划分的任意组合 |
入接点、中间节点和出节点
- lsp是一个单向节点路径,lsp中的lsr可以分为
术语 | 备注 |
---|---|
入节点,ingress |
lsp的起始节点,一条lsp只能有一个ingress,压入一个新的标签,封装成mpls报文进行转发 |
中间节点,transit |
lsp的中间节点,一条lsp可能有多个transit,,查找标签转发信息表,通过标签交换完成mpls转发 |
出节点,egress |
lsp的为节点,一条只能有一个。弹出标签,恢复原来的io报文进行相应的转发 |
体系架构
控制平面
产生和维护路由信息以及标签信息
- 路由信息表(RIB):有ip路由协议生成,用于选择路由
- 标签分发协议(LDP):负责标签的分配、转发信息表的建立、标签交换路径的建立、拆除
- 标签信息表(LIB):由标签分发协议生成,用于管理标签信息。
数据平面
- 转发信息表FIB:从RIB提取必要的路由信息生成,负责普通IP报文的转发。
- 标签转发信息表LFIB):简称标签转发表,由标签分发协议建立LFIB,负责带MPLS标签报文的转发。
转发过程
- 当收到普通IP报文时,查找FIB表,
- 如果Tunnel ID为0x0,则进行普通IP转发;
- 如果查找FIB表,Tunnel ID为非0x0,则进行MPLS转发。
- 当收到带标签的报文时,查找LFIB表,
- 如果对应的出标签是普通标签,则进行MPLS转发;
- 查找LFIB表,如果对应的出标签是特殊标签,如标签3,则将报文的标签去掉,进行IP转发。
MPLS报文结构
-
routed:被路由,ip、http包
-
routing:路由,ospf(ip=89)、bgp(tcp 179)
-
相辅相成
字段
字段 | 备注 |
---|---|
label |
20bit,用于报文转发 |
exp(experimental use) |
3bit,用于承载ip报文中的优先级(qos) |
s (bottom of stack) |
1bit,栈底,表明是否多个,(标签可以多层嵌套) |
TTL |
8bit,类似于ip头部的ttl,用于防止环路 |
-
标签(label):较短,定长,只偶遇本地有意义,用于标识去往同一目的地址的报文
标签空间 备注 0-15 特殊保留标签,如3(隐式空标签,用于PHP) 16-102 静态lsp和静态CR-LSP共享标签空间 1024以上 LDP、REVP-TE\MP-BGP等动态协议的标签空间
**标签多嵌套:对于一个lsr来说,只处理第一个(最顶层)便签**
标签转发行为
- push、SWAP、POP
lsp的建立
-
mpls需要为报文实现分配好标签,建立一条lsp,才能进行报文转发
-
lsp仅本地有效,lsp和数据流方向一致,lsp和便签分配方向相反
方式 | 备注 |
---|---|
静态 | 同归手动方式为各个FEC分配标签建立转发隧道 |
动态 | 通过标签发布协议动态建立转发隧道 |
静态LSP
-
适用于结构简单稳定的小心网络
-
上游节点出标签=下游节点入标签
动态LSP
- 标签由下游lsp分配,按下游到上游的方向分发
转发过程
-
tunnel id:为了给使用隧道的上层应用(如vpn、路由管理)提供统一的接口、系统自动为隧道分配了一个id,也成为tunnel id,长度2 bit,只是本地有效。
-
LNHFE :
next hop label forwarding entry,下一跳标签转发项
- 用于指导mpls报文的转发
- 包括:tunnel id、出接口、下一跳、出标签、标签操作类型等信息
- fec到一组NHLFE的映射成为FTN(FEC-TO-NHKFE)
- FIB表中tunnel id值不为
0x0
的表项,能够获取FIN的详细信息 - FIN只在lngreess存在
-
ILM:
incoming label map,入标签映射
- 入标签到一组下一跳标签转发表项的映射
- 包括:tunnel id、入标签、出标签、标签操作类型等信息
- ILM在transit节点的作用是将标签和NHLFE绑定
- 通过标签索引ILM表,就相当于使用目的的io地址查询FIB,能够得到所有的标签转发信息
环路检测机制
机制 | 备注 |
---|---|
igp环路检测机制 | rip、odpf各自的防环机制 |
TTL环路检测机制 |
帧模式的mpls中使用TTL,信元模式的mpls中无TTL,使用ldp环路检测机制 |
ldp环路检测机制 | 距离向量法,最大跳数法 |
mpls对TTL的处理模式
术语 | 备注 |
---|---|
uniform | mpls TTL 和ip TTL相互同步,中间节点只处理mpls tll |
pipe | mpls TTL设置为固定值,ip TTL只在入节点和出节点分别减1 |
- pipe可以隐藏mpls ip ttl的内部细节
TTL环路检测
- 递减
LDP环路检测
机制 | 备注 |
---|---|
距离向量法 | lsr发送标签请求时添加自己的lsr id,如果收到的lsr发现了袭击的lsr id,丢弃 |
最大跳数法 | lsr发送标签请求时,更新hop count,如果到达预设的最大值,丢弃 |
静态LSP配置
- vrp没有缺省的lsr id,必须手工配置,保证唯一。推荐使用loopback接口ip,如果要修改lsr id ,必须执行
undo mpls
(会导致mpls业务中断)
配置命令
命令 | 备注 |
---|---|
mpls lsr-id x.x.x.x |
配置lsr id |
mpls |
开启mpls,全局和接口 |
static -lsp ingress lsp1 \ destination x.x.x.x xx \ nethop x.x.x.x out-label xxx \ static transit lsp1 |
配置节点静态lsp |
static -lsp transit lsp1 \ incoming-interface xxx int-label xx \ nexhop x.x.x.x out-label xxx |
配置中间节点静态lsp |
static-lsp egress lsp1 \ incoming-interface g0/0/0 \ in-label xxx |
配置出节点静态lsp |
dis mpls static-lsp |
验证今天lsp |
ping lsp ip x.x.x.x xx |
测试静态lsp |
静态lsp实验
- 开启出接口需要开启代理arp
- 抓包看包头
LDP
-
标签的产生
-
label distribution protocol,标签分发协议,RFC5036
-
在LSR之间建立
LDP session(LDP会话)
-
建立了LDP session的两台设备称为
LDP PEERS(ldp邻居\对等体)
消息类型
- 封装在UDP或TCP之上,
端口号=646
类型 | 备注 | 协议 |
---|---|---|
discovery |
发现,发现、维护邻居(hello) | UDP |
session |
会话,会话的建立、维护、终止(lnitialization、keepalive) | TCP |
advertisement |
宣告,创建、改变、删除fec的标签映射(address、label mapping) | TCP |
notification |
通知,告警和错误消息、。 | TCP |
LDP发现机制
机制 | 备注 |
---|---|
LDP基本发现机制 | 发现直连邻居,使用组播,周期性的发送ldp link hello,建立本地ldp会话 |
LDP扩展发现机制 | 发现非直连邻居,使用单播,周期性的发送ldp target hello,建立远端ldp会话 |
LDP邻居发现过程
- hello消息中,携带有
transport address(传输地址)
字段,该字段默认与设备配置的lsr id 一致
,表明与对端建立邻居关系所使用的ip地址(保证路由可达)
便签发布和管理
术语 | 备注 |
---|---|
标签发布方式 | DU\DOC |
标签分配控制方式 | odered、independent |
标签保持方式 | liberal、conservative |
上游和下游
- 针对转发方向而言
标签发布方式
label advertisement mode
,
类型 | 备注 |
---|---|
DU | downstream unsolicited,下游自主。 |
DOD | distribution on demand,下游按需 |
PS | 华为思科默认是采用DU,因为topo变化时,可以快速反应为新的topo分发标签 |
标签分配控制方式
label distribution control mode
,为路由前缀邓培标签的前提条件。标签设备自动随机生成
类型 | 备注 |
---|---|
independent | 独立,lsr可以主动分配,无需等下游标签 |
ordered | 有序,lsp只有收到下游的标签后才能分配标签 |
ps | 华为默认使用ordered,cisco默认 independent |
标签保持模式
-
label retention mode
如何保留从邻居收到的标签 -
liberal:自由
- 保留邻居所有的标签,无论自己还是下一跳
-
conservative:保守
- 只保留来自下一跳邻居的标签
-
PS:华为和cisco摩尔恩都采用liberal
组合
- DU+ORD+LIB,缺省方式
- DOD+ORD+CON
- DU+IND+LIB
- DOD+IND+CON
PHP
-
倒数第二跳弹出,penultimate hop popping
-
在最后一条节点,标签没有使用价值,这种情况下,在倒数第二条节点处标记弹出,减少诸侯一跳的负担
特殊保留标签
标签 | 备注 |
---|---|
标签3 | 隐式空标签,implicit-null ,通知倒数第二跳路由移除顶层标签(注意:标签3永远不会出现在mpls报文的标签栈中) |
标签0 | 显式空标签,explicit-null ,通知路由器直接弹出标签 |
os | 在实施qos是,最后一跳必须携带exp位,因此标签不能被弹出,需要配置显式空标签,此时分配给特定路由器的标签值为0并传递给ldp邻居 |
LDP命令
LDP配置(华为)
命令 | 备注 |
---|---|
mpls lsr-id xxxx | 配置lsr id |
mpls | 开启mpls,全局和接口 |
mpls ldp | 开启ldp,全局和接口 |
mpls ldp remote-peer | 创建亚UNDAU你邻居 |
remote-ip xxxx | 配置远端邻居ip |
mpls ldp transport-address interface \ 接口 | 配置传输地址 |
label advertise explicit-null、implicit-null、non-null | 配置PHP,默认支持PHP |
mpls ldp advertisement dod、du | 配置标签发布模式,默认为DU |
undo ttl propagate | 配置mpls ttl的处理模式为pipe模式 |
lsp-trigger all、host、ip-prefix名称 | 配置LSP触发策略,默认host即 32位主机路由 |
reset mpls ldp | 重启LDP |
dis mpls ldp \ dis mpls ldp peer \ dis mpls ldp remote-peer \ dis mpls ldp interface \ dis mpls ldp sesion | 检查命令 |
问题
问题一
mpls环境下的bgp路由
- mpls默认不会为bgp路由分配标签,但是会为bgp路由的下一跳分配标签
- bgp中的路由条目是相当多的,因此通过mpls,可大大简化路由器的性能损耗,bgp的transit AS 的路由黑洞也得到了很好的解决。
问题二:路由汇总对mpls的影响
- 路由汇总将原先的LSP分割成两段
- 看似没有问题,但是在LSP环境下就有问题,入 mpls vpn ,TE
问题三:LDP与IGP同步
- igp和ldp都认可某条链路为待转发报文的出站链路
由于LDP的收敛依赖于IGP的收敛,即LDP的收敛速度比IGP的收敛速度慢,
存在主备链路汇总的问题- 主链路故障,lsp流量丢失
- igp正常运行,但主节点ldp会话发生故障,lsp流量丢失
解决方法
开启LDP和IGP同步
- 原理:预支igp发布正常路由,保证ldp和igp同步完成收敛
- 定义了3个定时器,5个状态
命令(华为)
命令 | 备注 |
---|---|
ospf/isis ldp-sync | 接口模式下开启 |
ospf timer ldp-sync hold-down value | 配置同步保持时间 |
命令(cisco)
命令 | 配置 |
---|---|
mpls ldp sync | 路由协议模式下开启 |
no mpls ldp igp synv | 接口模式下单独关闭 |
mpls ldp igp sync holddown msecs | 配置同步保持时间 |
口模式下开启 |
| ospf timer ldp-sync hold-down value | 配置同步保持时间 |
命令(cisco)
命令 | 配置 |
---|---|
mpls ldp sync | 路由协议模式下开启 |
no mpls ldp igp synv | 接口模式下单独关闭 |
mpls ldp igp sync holddown msecs | 配置同步保持时间 |
本文均属肉肉原创,本文章属于本人花费大量时间整理出来,如有不详或错误,欢迎指出!读到这里了,不妨给肉肉
点个赞
!
往期精彩:
本文作者:肉肉
版权声明:博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!