一、MPLS多协议标签交换
1.为什么需要使用MPLS
由于路由器转发效率较慢,开发MPLS加快数据的转发封装在二层与三层之间,在路径转发时,不需要查三层的IP,只需查找到2.5层,所以可以提高了转发效率
2、MPLS中的转发表项
(1)RIB:路由表,控制层面,由路由协议生成,RIB中由递归过程
(2)LIB:标签信息表,控制层面,由标签分配协议生成,包含标签与FEC的对应关系,LIB包含所有标签,无论是优的还是次优的。
(3)FIB:转发信息数据库,转发层面,数据包到达设备后查找FIB,从而学习到如何转发,FIB里没有递归(当去往目标路由的下一跳不是直连下一跳时,会产生递归)过程
(4)LFIB:标签转发数据库,转发层面,标签与FEC的对应关系,只有最优的标签,指导标签数据包如何转发。
3.MPLS的报文封装位置及格式
Link layer header | label | Layer 3 header | Layer 3 payload |
0-19 | 19-22 | 22-23 | 23-31 |
Label | Exp | S | TTL |
标签共有四个字段:
Label:20bit,标签值域
Exp:3bit,用于扩展。现在通常坐Cos(CLass of service),作用与Ethernet 802.1p的作用类似
S:1bit,栈底标识,MPLS支持多层标签,即标签嵌套。S值为1时,表明为最底层标签。
TTL:8bit,和IP分组中的TTL意义相同。
(1)标签的范围
0~15为特殊标签,3号标签标示隐式空标签,0号标签显示空标签
16~1023为静态分配标签范围
1024以上为动态分配标签,动态分配标签的方式由三种:LDP,MP-BGP,RSVP-TE
(2)TTL处理的两种方式
Uniform:统一方式保持IP和MPLS的TTL值相同,可以统计MPLS中有多少个路由器,每经过一台路由器TTL值减一,无论是MPLS还是IP
Pipe:管道方式,在入节点,IP TTL值减1,MPLS TTL字段为固定值,此后报文在MPLS网络中按照标准的TTL处理方式处理。在出节点会将IP TTL字段的值减1。即IP分组经过MPLS网络时,无论经过多少跳,IP TTL只在入节点和出节点分别减1.无法了解MPLS中有多少个节点。
4.MPLS中的术语
(1)LER、LSR(路由器的分类)
LER:标签边界路由器
LSR:标签交换路由器
(2)push、swap、pop(对标签的处理动作)
push:标签的压入
swap:标签交换
pop:标签的弹出
(3)Ingress、transit、Egress(路由器的角色,不同角色对应不同的处理方式,以数据方向进行判断,标签的分配是以路由的方向判断,刚好相反)
Ingress:第一个压入标签的路由器
transit:只负责传输标签,标签交换
Egress:标签弹出的路由器(不考虑次未跳)
5.MPLS数据包的转发过程
LIB:标签信息数据库
NHLFE:下一跳标签转发条目
ILM:入接口的标签映射
在报文转发过程中:
(1)在Ingress,通过查询FIB表和NHLFE表指导报文转发
(2)在Transit,通过查询ILM表和NHLFE表指导MPLS报文的转发
(3)在Egress,通过查询ILM表指导MPLS报文的转发或查询路由器表指导IP报文转发。
在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel id关联的。
Ingress的处理
(1)查看FIB表,根据目的IP地址找到对应的Tunnel id
(2)根据FIB表的Tunnel id找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来
(3)查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型,标签操作类型为Push
(4)在IP报文中压入出标签,并根据Qos策略处理EXP,同时处理TTL,然后将封装号的MPLS报文发送给下一跳
Transit的处理
(1)根据MPLS的标签值查看对应的ILM表,可以得到Tunnel id
(2)根据ILM表的tunnel id找到对应的NHLFE表项
(3)查看NHLFE表项可以的到出接口、出标签、下一跳和标签交换类型
(4)MPLS报文的处理方式根据不同的标签值而不同。
如果标签值>=16,则用新标签替换MPLS报文中的旧标签,同时处理EXP和TTL,然后将替换完标签的MPLS报文发送给下一跳
如果标签值为3,则直接弹出标签,同时处理EXP和TTL,然后进行IP转发或下一层标签转发(3号标签是隐式空标签)
Egress的处理
(1)如果Egress收到IP报文,则查看路由表,进行IP转发
(2)如果Egress收到MPLS报文,则查看ILM表莫得标签操作类型,同时处理TTL和EXP。
如果标签中的栈底标识S=1,表明该标签是栈底标签,直接进行IP转发。
如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发
二、MPLS LDP
标签分发协议,自动分配标签,自动构建LSP(标签交换隧道)
LDP默认只会为IGP分配标签,而且职位32位主机路由分配标签。可用命令:lsp-triffer修改
1.LDP的消息类型
(1)发现消息(discovery):用于通告和维护网络中LSR的存在
(2)会话消息(session):用于建立、维护和终止LDP对等体之间的会话
(3)通告消息(advertisement):用于创建、改变和删除FEC的标签映射
(4)通知消息(notification):用于提供建议性的消息和差错通知。
discovery message | 消息类型 | 作用 |
session message | hello | LDP发现机制中宣告本LSR并发现邻居 |
initialization | 在LDP Session建立过程中协商参数 | |
advertisement message | keepalive | 监控LDP Session的TCP连接完整性 |
address | 宣告接口地址 | |
address withdraw | 撤销接口地址 | |
label mapping | 宣告FEC/Label映射信息 | |
Label request | 请求FEC的标签映射 | |
LabelAbort Request | 请求未完成的label request message | |
label withdraw | 撤销FEC/Label映射 | |
Label release | 释放标签 | |
notification message | notification | 通知LDP peer错误信息 |
标签空间
LDP对等体之间分配标签的数值范围称为标签空间,可以分为:
全局标签空间(Per-Platform Label Space):整个LSR使用一个标签空间。主要使用此标签。
接口标签空间(Per-interface Label Space):位LSR的每一个接口指定一个标签空间。
LDP标识符
LDP标识符(LDP Identifier)用于标识特定的LSR的标签空间。LDP标识符的格式为<LSR ID>:<Label space ID>,长度为六字节,其中:
LSR ID:表示LSR标识符,占四字节
Label space ID:表示标签空间标识符,占两字节。全局标签空间为“0”,接口标签空间为“非0”
2、LDP邻居的建立过程
A、发现阶段:发现对端的LSR-id
LDP有两种发现机制:
(1)基本发现机制:
a.用于发现链路上直连的LSR
b.LSR通过周期性的发送LDP Hello报文,实现LDP基本发现机制,建立本地LDP会话。
(2)扩展发现机制:用于发现链路上非直连LSR
LSR周期性的发送Targeted hello消息到指定地址,实现LDO扩展发现机制,建立远端LDP会话。
B、会话建立阶段(TCP,646,大向小)
TCP三次握手,transport address 地址大的向地址小的建立TCP连接。
同样,Init消息大向小发,携带version、标签分发方式、LDP ID等,对方收到后回复keepalive+init消息,keepalive 15s/次,holdtime 45s/次
C、通告阶段
(1)发address消息
address消息里面携带本地开启LDP协议的接口地址,且只通告给邻居,邻居收到之后不再扩散
(2)分发标签:label mapping消息
label mapping含有三要素:label+FEC+LSR-ID,Egress路由器默认主动只为自己的32位IP路由分发标签(默认自主的发布方式),上游收到放入LIB表中(默认自由的保持方式),在收到下游的标签后继续向上游分发标签(默认有序的控制方式)
路由器收到label mapping 消息后,首先查看FEC,根据FEC查FIB表找到最优的直连下一跳,然后根据下一跳查看address消息,对应到其中的LSR-ID。然后再根据此LSR-ID查看label-mappping消息中的LSR-ID,对应选中其中的label,把此label放入LFIB中。
(3)LDP标签的发布与管理
A、在MPLS体系中,由下游LSR决定将标签分配给特定FEC,再通知上游LSR,即标签由下游指定,标签的分配按从下游到上游的方向分发。
标签发布方式 | 含义 |
下游自主方式DU(Downstream Unsolicited) | 对于一个特定的FEC,LSR无需从上游获得标签请求消息即进行标签分配与分发 |
下游按需方式DoD(Dreamstream on Demand) | 对于一个特定的FEC,LSR获得标签请求消息之后菜进行标签分配与分发 |
B、标签分配控制方式
标签分配控制方式是指在LSP的建立过程中,LSR分配标签时采用的处理方式。
标签分配控制方式 | 含义 |
独立标签分配控制方式 | 本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签 |
有序标签分配控制方式 | 对于LSR上某个FEC地标签映射,只有当该LSR已经具有此FEC下一跳地标签映射消息、或者该LSR就是此FEC的出节点时,该LSR才可以向上游发送此FEC的标签映射。 |
C、标签保持方式
标签保持方式是指LSR对收到的、但目前暂时不需要的标签映射的处理方式。LSR收到的标签映射可能来自下一跳,也可能来自非下一跳。
标签保持方式 | 含义 |
自由标签保持方式 | 对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留 |
保守标签保持方式 | 对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留 |
目前华为设备支持以下组合方式
下游自主方式(DU)+有序标签分配控制方式+自由标签保持方式----------该方式位缺省方式
下游按需方式(DoD)+有序标签分配控制方式+保守标签保持方式