MPLS协议与配置

MPLS协议与配置

MPLS基本网络类型

在这里插入图片描述

路由器的角色分为两种:

  • LER(Label Edge Router):在MPLS网络中,用于标签的压入或弹出,如:RTB,RTD
  • LSR(Label Switched Router):在MPLS网络中用于标签的交换,如RTC。

**根据数据流的方向:**LSP的入口LER被称为入节点(Ingress);中间节点(Transit );LSP的出口LER被称为出节点( Egress )。

  • MPLS报文由Ingress发往Transit ,则Ingress是Transit的上游节点, Transit是Ingress的下游节点

MPLS作为一种分类转发技术,将具有相同转发处理方式的报文分为一类,称该类报文为一
个FEC ( Forwarding Equivalent Class )。

MPLS体系结构

控制平面:

负责产生和维护路由器信息以及标签信息

  • RIB(Routing Information Base)路由表信息:由IP路由协议生成,用于选择路由
  • LDP(Label Distribution Protocol)标签分发协议:负责标签的分配、标签转发信息表的建立、标签交换路径的建立,拆除等工作。
  • LIB(Label Information Base)标签信息表:由标签分发协议生成,用于管理标签信息。

转发平面(数据平面):

  • FIB(Forwarding Information Base)转发信息表:从RIB提取必要的路由信息生成,负责普通IP报文的转发。
  • LFIB(Label Forwarding Information Base)标签转发信息表:由标签分发协议(LDP)建立LFIB,负责带MPLS标签报文的转发。

报文转发过程:

当收到普通IP报文时,查找FIB表,如果Tunnel ID为0x0 ,则进行普通IP转发;如果查找FIB表, Tunnel ID为非0x0 ,则进行MPLS转发。

当收到带标签的报文时,查找LFIB表,如果对应的出标签是普通标签,则进行MPLS转发;查找LFIB表,如果对应的出标签是特殊标签,如标签3 ,则将报文的标签去掉,进行IP转发。

MPLS数据包:

在这里插入图片描述

字段 长度 含义
Label 20比特 标签值字段,用来标识一个FEC。
EXP 3比特 用于扩展。现在通常用做CoS(Class of Service),其作用与Ethernet802.1p的作用类似。
S 1比特 MPLS支持多重标签。值为1时表示为最底层标签。
TTL 8比特 和IP分组中的TTL意义相同,可以用来防止环路。

标签空间是指标签的取值范围。标签空间划分如下:

  • 0~15 :特殊标签。如标签3 ,称为隐式空标签,用于倒数第二跳弹出;
  • 16~ 1023 :静态L SP和静态CR-LSP (Constraint- based Routed Label SwitchedPath )共享的标签空间;
  • 1024及以上: LDP、RSVP-TE ( Resource Reservation Protocol-Traffic Engineering )、MP- BGP ( MultiProtocol Border Gateway Protocol )等动态信令协议的标签空间。

LSP的建立

静态LSP:

在这里插入图片描述

动态LSP:

在这里插入图片描述

  • Egress路由器RTD为本地存在的路由分配标签,并将路由和标签的绑定关系主动发送给上游邻居路由器RTC ;
  • 路由器RTC收到下游邻居路由器RTD的路由和标签的绑定关系后,将其记录到LIB中,并将自己分配的标签和路由的绑定关系发送给上游邻居路由器RTB ;
  • RTB执行相同的动作将标签和路由的绑定关系发送给上游邻居路由器RTA , RTA为Ingress路由器,没有上游邻居,因此动态的L SP完成建立。

LDP邻居建立

LDP协议主要使用四类消息

  • 发现( Discovery )消息:用于通告和维护网络中邻居的存在,如Hello消息。
  • 会话( Session )消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
  • 通告( Advertisement)消息:用于创建、改变和删除FEC的标签映射,如Address消息、Label Mapping消息。
  • 通知( Notification )消息:用于提供建议性的消息和差错通知。

MPLS路由器通过周期性地发送LDP链路Hello消息( LDP Link Hello ) , 实现LDP邻居的发现,并建立本地LDP会话。

为了能使开启LDP协议的设备快速发现邻居, LDP的Hello消息使用UDP封装。UDP是无连接的协议,为了保证邻居的有效性和可靠性, Hello消息周期发送,发送周期为5s ,使用组播224.0.0.2作为目的IP地址,意思是“发送给网络中的所有路由器”。

LDP的Hello消息中 ,携带有Transport Address字段,该字段与设备配置的LSR ID
一致,表明与对端建立邻居关系时所使用的IP地址。如果该字段IP地址是直连接口IP地址,则直接建立邻居关系;如果该字段地址是L oopBack接口IP地址,保证该接口IP地址路由可达,才能建立邻居关系。

LDP建立过程

在这里插入图片描述

1.两个LSR之间互相发送Hello消息。

Hello消息中携带传输地址,双方使用传输地址建立LDP会话。

2.传输地址较大的一方作为主动方,发起TCP连接。

如图所示,RTB作为主动方发起TCP连接, RTA作为被动方等待对方发起连接。

3.TCP连接建立成功后,由主动方RTB发送初始化消息,协商建立LDP会话的相关参数。

LDP会话的相关参数包括LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间等。

4.被动方RTA收到初始化消息后,如果RTA接受相关参数,则发送初始化消息,同时发送
Keepalive消息给主动方RTB。

5.如果被动方RTA不能接受相关参数,则发送Notification消息终止LDP会话的建立。

6.主动方RTB收到初始化消息后,接受相关参数,则发送Keepalive消息给被动方RTA。

7.如果主动方RTB不能接受相关参数,则发送Notification消息给被动方RTA终止LDP会话的建立。

8.当双方都收到对端的Keepalive消息后, LDP会话建立成功。LDP会话建立成功后,进行FEC的创建与标签的分发。

标签的发布方式

  • DU ( Downstream Unsolicited,下游自主方式) : 对于一个到达同一目地址报文的分组, LSR无需从上游获得标签请求消息即可进行标签分配与分发。
  • DoD ( Downstream on Demand,下游按需方式) : 对于一个到达同一目的地址报文的分组, LSR获得标签请求消息之后才进行标签分配与分发。
    在这里插入图片描述

采用DU方式分发标签,对于目的地址为100.1.1.1/32的分组,下游RTD ( Egress )通过标签映射消息主动向.上游RTC ( Transit )通告自己主机路由100.1.1.1/32的标签

采用DoD方式分发标签,对于目的地址为100.1.1.1/32的分组,上游RTC ( Transit )
向下游发送标签请求消息,下游RTD (Egress )收到标签请求消息后,才会向上游发
送标签映射消息。

华为设备默认采用DU的方式发布标签

DU无需等待上有的请求信息,直接想邻居分配标签在网络拓扑发生变化时,采用DU方式可以快速反应为新的拓扑分发标签,收敛时间相对于DoD方式较短

标签的分配控制方式

  • Independent (独立标签分配控制方式) : 本地LSR可以自主地分配一个标签绑定到某个IP分组,并通告给上游LSR ,而无需等待下游的标签。
  • Ordered (有序标签分配控制方式) : 只有当该LSR已经具有此IP分组的下一跳的标签,或者该LSR就是该IP分组的出节点时,该LSR才可以向上游发送此IP分组的标签。

在这里插入图片描述

采用Independent方式:

  • 如果标签发布方式为DU ,且标签分配控制方式为Independent ,则RTC( Transit )无需等待下游RTD ( Egress )的标签,就会直接向.上游RTB分发标签。
  • 如果标签发布方式为DoD ,且标签分配控制方式为Independent ,则发送标签
    请求的RTB ( Transit )的直连下游RTC ( Transit )会直接回应标签,而不必等待来自下游RTD ( Egress )的标签。

采用Ordered方式:

  • 如果标签发布方式为DU ,且标签分配控制方式为Ordered ,则RTC ( Transit )只有收到下游RTD ( Egress )的标签,才会向上游RTB分发标签。
  • 如果标签发布方式为DoD ,且标签分配控制方式为Ordered ,则发送标签请求的RTB ( Transit )的直连下游RTC ( Transit )只有收到下游RTD ( Egress )的标签,才会向上游RTB分发标签。
  • 华为设备默认采用Ordered的方式分配标签。
  • 采用Ordered方式,只有当该LSR已经具有此IP分组的下一跳的标签时,才能向上游分发标签,这样是为了避免下游IP分组的标签未分配或收敛时间较长,上游的标签已分配,数据开始转发造成的数据丢失。

标签的保持方式

在这里插入图片描述

  • Liberal (自由标签保持方式) : 对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。
  • Conservative (保守标签保持方式) : 对于从邻居L SR收到的标签映射,只有当邻居
    LSR是自己的下一-跳时才保留。

当网络拓扑变化引起下一跳邻居改变时:

  • 使用自由标签保持方式, LSR可以直接利用原来非下一-跳邻居发来的标签,迅速重建LSP ,但需要更多的内存和标签空间。
  • 使用保守标签保持方式, LSR只保留来自下一跳邻居的标签,节省了内存和标签空间,但LSP的重建会比较慢。

注:华为设备默认采用自由标签保持方式

LDP动态建立LSP过程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-6sMMxLf8-1613710487958)(E:\Typora\image\image-20210219122019057.png)]
在这里插入图片描述

RTD上存在100.1.1.1/32的主机路由,因为RTD是Egress节点,所以直接向自己上游邻居RTC发布100.1.1.1/32与标签的绑定关系;

RTC收到下游邻居RTD分配的100.1.1.1/32与标签的绑定关系后,将标签记录在自己的LIB表中,并向上游邻居RTB发布100.1.1.1/32与标签的绑定关系,同时RTC查看自己IP路由表中到达100.1.1.1/32的下一跳是否为RTD ,如果IP路由表中的下一跳为RTD ,则RTC使用RTD分配的标签封装到达100.1.1.1/32的数据;如果IP路由表中的下一跳不是RTD ,则RTC保留RTD分配的标签作为备用标签;

RTB收到下游邻居RTC分配的100.1.1.1/32与标签的绑定关系后,执行与RTC相同的动作;

RTA收到下游邻居RTB分配的100.1.1.1/32与标签的绑定关系后,查看自己IP路由表中到达100.1.1.1/32的下一跳是否为RTB ,如果IP路由表中的下一跳为RTB ,则RTA使用RTB分配的标签封装到达100.1.1.1/32的数据;如果IP路由表中的下一跳不是RTB ,则RTA保留RTB分配的标签作为备用。因为RTA为Ingress ,最终到达100.1.1.1/32的LSP完成建立。

MPLS数据转发过程

在这里插入图片描述

  • RTA上收到访问100.1.1.1/32的数据包,如果数据包为普通的IP报文,则查找FIB表,因为Tunnel ID为非0x0 ,封装已分配的标签1027进行MPLS转发;如果数据包为带标签的报文,查找LFIB表,封装已分配的标签1027进行MPLS转发;
  • RTB收到RTA发送的带标签1027的报文,查找l FIB表,封装已分配的出标签1026进行MPLS转发给RTC ;
  • RTC收到RTB发送的带标签1026的报文,查找LFIB表,封装已分配的出标签1025进行MPLS转发给RTD ;
  • RTD收到RTC发送的带标签1025的报文,查找LFIB表,出标签为Null ,表明数据包已经到达Egress节点,所以路由器将数据包的标签信息去掉,并对数据包进行三层处理,查找IP路由表发现100.1.1.1/32的路由为自己本地的路由,根据IP路由表中的出接口进行IP数据的封装并转发。
  • [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7sBQTYZd-1613710968790)(E:\Typora\image\image-20210219122116201.png)]
    在这里插入图片描述

MPLS配置:

[r2]mpls lsr-id 2.2.2.2  // 必须先定义mpls的router-id,要为本地设备的真实ip地址,且邻居可达,因为该地址将用于建立TCP会话,建议使用环回地址
[r2]mpls             再开启mpls协议
[r2-mpls]mpls ldp      再激活LDP协议
[r2-mpls-ldp]q
之后需要在所有标签经过的接口上开启协议
[r2]interface GigabitEthernet 0/0/1
[r2-GigabitEthernet0/0/1]mpls    先开启MPLS
[r2-GigabitEthernet0/0/1]mpls ldp   再激活LDP协议
当启动配置完成后,邻居间使用UDP报文组播收发hello包;之后基于hello包中的router-id地址进行TCP会话的建立;
[r3]display tcp status
TCPCB    Tid/Soid Local Add:port        Foreign Add:port      VPNID  State
b4cf3d64 167/6    3.3.3.3:646           4.4.4.4:50858         0      Established
b4cf3adc 167/3    3.3.3.3:50806         2.2.2.2:646           0      Established

当tcp会话建立后,邻居间基于TCP会话再建立邻居关系,生成邻居表:
[r3]display  mpls ldp peer

再然后基于本地的FIB表,默认华为仅针对32位的主机路由生成标签号;存储于LIB表中,之后邻居间共享LIB表;
[r3]display  fib  查看FIB表
[r4]display  mpls ldp  lsp    查看LIB表,装载本地和邻居为各条路由分配的标签号

最后路由器将LIB和FIB集合,生成最佳路径的标签转发规则—LFIB
[r4]display mpls lsp  查看LFIB表

注:默认华为仅针对32位主机路由分配标签
[r3]mpls 
[r3-mpls]lsp-trigger all   开启功能,将针对fib表中所有路由进行标签号的分配


猜你喜欢

转载自blog.csdn.net/qq_43710889/article/details/113861233