前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >深入理解MPLS,和你一起详谈MPLS标签和动作!

深入理解MPLS,和你一起详谈MPLS标签和动作!

原创
作者头像
网络技术联盟站
修改2021-06-25 10:40:55
1.7K0
修改2021-06-25 10:40:55
举报
文章被收录于专栏:网络技术联盟站

## MPLS基础

- 使用标签的进行数据转发

- ATM技术是虽然没有成功,但还是

- label大师,吸取了ATM的精华,定义在`2.5层`

![rourou](https://img-blog.csdnimg.cn/20200707230540547.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Fyb3Vyb3Vh,size_16,color_FFFFFF,t_70)

- `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 | l`abel 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报文进行相应的转发 |

**体系架构**

![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-xJcAYZJU-1594134182474)(C:\Users\ASUS\AppData\Roaming\Typora\typora-user-images\image-20200706145622026.png)]](https://img-blog.csdnimg.cn/20200707230613510.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Fyb3Vyb3Vh,size_16,color_FFFFFF,t_70)

**控制平面**

- `产生和维护路由信息以及标签信息`

- 路由信息表(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)

- 相辅相成

![rourou](https://img-blog.csdnimg.cn/20200707230649873.png)

**字段**

| 字段 | 备注 |

| ------------------------- | ---------------------------------------------- |

| `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地址`(保证路由可达)`

![rourou](https://img-blog.csdnimg.cn/2020070723074770.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Fyb3Vyb3Vh,size_16,color_FFFFFF,t_70)

![rourou](https://img-blog.csdnimg.cn/20200707230747103.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0Fyb3Vyb3Vh,size_16,color_FFFFFF,t_70)

## 便签发布和管理

| 术语 | 备注 |

| ---------------- | --------------------- |

| 标签发布方式 | 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 | 配置同步保持时间 |

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
私有网络
私有网络(Virtual Private Cloud,VPC)是基于腾讯云构建的专属云上网络空间,为您在腾讯云上的资源提供网络服务,不同私有网络间完全逻辑隔离。作为您在云上的专属网络空间,您可以通过软件定义网络的方式管理您的私有网络 VPC,实现 IP 地址、子网、路由表、网络 ACL 、流日志等功能的配置管理。私有网络还支持多种方式连接 Internet,如弹性 IP 、NAT 网关等。同时,您也可以通过 VPN 连接或专线接入连通腾讯云与您本地的数据中心,灵活构建混合云。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档