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表中所有路由进行标签号的分配