一、预习:
MPLS:Multi-Protocol Label Switching多协议标签交换,是一种根据报文中携带的标签转发的技术;可承载在各种链路层协议之上(如PPP、ATM、帧中继、以太网);同时它还能承载各种网络层报文,如ipv4、ipv6;采用无连接的控制平面,实现路由信息的传递和标签的分发,采用面向连接的数据平面,实现报文在建立的标签转发路径上传送。LSR之间运行LDP来告知其他LSR本设备上的标签绑定信息,从而实现标签报文的正确转发。
技术创新:摒弃了繁琐的路由查找 ,将具有全局意义的路由表改为简单快速的标签交换;MPLS转发的本质就是将数据归到对应的FEC并按照提前建立好的LSP进行转发
MPLS在二层以太网网络协议号中使用8847或8848,IP协议号为0800,端口号646,BGP端口号179
MPLS实际应用场景:
随着硬件技术的发展,ip转发性能也大大提高,MPLS在这方面并未发挥优势,但由于MPLS结合了IP网络强大的三层路由功能和二层网络高效的转发机制,所以目前MPLS主要应用于VPN技术,TE(Traffic Engineering,流量工程)以及QOS(Quality of Service,服务质量)。
提示:基于MPLS的VPN通过LSP将私有网络的不同分支连接起来,形成一个统一的网络,用户设备无需为VPN配置GRE、L2TP等隧道;网络延时也会被降至最低。
MPLS体系结构 :
控制平面:负责产生和维护路由以及标签信息;包括IP路由协议和路由信息表,标签分发协议和标签信息表
转发平面:也称数据平面,负责普通IP报文的转及带MPLS标签报文的转发;转发平面包括转发信息表和标签转发信息表
LSR:Label Switching Router,标签交换路由器,由LSR 构成的网络区域称为 MPLS域(MPLS Domain),在 IP 网络内进行传统的 IP 转发,在 MPLS 域内进行标签转发。
LER:Label EdgeRouter位于 MPLS 域边缘、连接其它网络的边缘路由器,进入到MPLS网络的流量由LER分为不同的FEC;
Core LSR:区域内部的 LSR 称为核心 LSR。
LSR分类:
Ingress LSR 入站标签,压入MPLS头部并生成MPLS报文的LSR
Transit LSR 中转LSR,做标签转换操作
Egrss LSR 出站LSR,做剥离MPLS标签操作
LSP:Label Switch Path 标签交换通道
LDP:Label Distribution Protocol,标签分发协议是MPLS的一种控制协议,相当于传统网络中的信令协议,负责FEC的分类、标签的分配及LSP的建立和维护等操作。LDP规定了标签分发过程中的各种消息及相关处理过程。
LSP:Label Switch Path,标签交换路径|通道,是标签报文穿越MPLS网络到达目的地所走的路径,LSP是单向的路径,和数据流的方向一致同一个FEC的报文通常采用相同的LSP穿越MPLS域,所以对同一个FEC,LSR总是用相同的标签转发。
Label Stack:MPLS支持一层或者多层标签头部,这些标签头部的有序集合被称为标签栈
FEC:Forwarding Equivalence Class,转发等价类,是一组具有某些共性的数据流的集合,这些数据流在转发过程中被网络节点以相同方式处理,MPLS基于FEC发放标签;在转发过程中以等价的方式来标识创建FEC,通常的MPLS只是一条路由对应一个FEC
在MPLS网络中,FEC可通过多种方式划分,如基于目的IP及网络掩码、DSCP等特征来划分
数据属于另一个LSP,由数据 进入MPLS域时的Ingress LSR 决定
MPLS标签通常是与FEC相对应的,必须有某种机制使得网络中的LSR获得关于某FEC的标签信息
LSR ID与LDP ID
每一台运行LDP的LSR除了必须 配置LSR ID,还必须有LDP ID
LDP长度为48bit,由32bit的LSR ID与16 bit的空间标识符(Label Space ID)栬
LDP ID以“LSR ID:标签空间标识 ”的形式呈现,如1.1.1.1:0
LIB:Label Information Base,查看用dis mpls ldp lsp
LFIB:Label Forwarding Information,来源于LIB表,查看用dis mpls lsp
PHP: Penultimate Hop Popping,倒数第二跳弹出
LDP的工作过程主要分为两部分:
1、LSR之间建立LDP会话
2、LSR之间基于LDP会话动态交换标签与FEC映射信息,并根据标签信息建立 LSP
LDP会话:
LSR之间交互标签绑定消息之前必须建立 LDP会话,会话分为:
1、本地LDP会话(Local LDP Session),建立 会话的两个LSP之间是直连的
2、远程LDP会议(Remote LDP Session):建立 会话的两个LSP可以是直连的,也可以是非直连的。
两台LSR之间交互Hello消息后,即建立 起邻接体(Adjacency)关系;在建立邻接体关系基础上,两台LSR之间交互LDP会话消息,建立LDP会话,两台设备之间形成LDP对等体关系
LDP连接阶段:
1、Discover:
LDP邻居发现,会在链路上周期性地发送hello报文(UDP端口号646)给组播包224.0.0.2,用dis mpls ldp peer | adjacency去看,里面有个Transport地址,包含自己的环回口地址或者说lsr-id地址。设备通过周期性地发送LDP链路Hello报文(LDP Link Hello),实现LDP基本发现机制,收到报文表明该接口存在LDP邻接体
2、Session:
TCP连接|会话阶段:Hello报文携带传输地址Transport,双方后续 将使用传输地址建立 LDP会话;经过TCP三次握手之后,由大的Transport地址(lsr-id)向小的Transport地址通过tcp646连接,发送init报文,双方建立连接,用dis mpls ldp sseion去看,这时是NonExistent状态,因为这里没有建立路由连接,建立路由后,就可以看到mpls会话建立起来了,状态为Operational,最终状态。这里看会话也可以用dis tcp status看一下:LAM是标签通告管理,DU表示下游自主。Label Space ID值为0是基于平台的,看LSP时,入接口为 - 说明是基于平台的,基于接口的,入接口为接口值
会话建立过程中,会交互init、keepalive报文
NonExistent --> Initialized --> Opensent --> Openreceive --> Operational
dis mpls ldp session
debugging mpls ldp session
reset mpls ldp
到Operational状态,已经可以看到lsp了:dis mpls lsp
3、Advertisement:
通告阶段:用于创建、改变和删除特定FEC-标签绑定
4、Notification:
通知阶段:如果出错了发的报文
LSR处理报文时主要根据ILM、FTN、NHLFE、
FTN:FEC-to-NHLFE,当LSR收到IP报文并需要进行MPLS转发时使用,只在Ingress存在
包括:Tunnel ID、FEC到NHLFE的映射信息
NHLFE:Next Hop Label Forwardiing Entry,LSR对报文(MPLS或IP报文)进行MPLS转发时使用,在Ingress和Transit存在
包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等
ILM:Incoming Label Map,用于指导MPLS报文的转发(MPLS或IP转发),ILM只在Transit和Egress存在
包括:Tunnel ID、入标签、入接口、标签操作类型等
!!! LDP运行过程:
1、比如说去往3的路由,查FIB表,发现里面的TunnelID为0,说明不需要走隧道,进入FIB表转发,如果为非0,则要压入标签:
dis fib 3.3.3.3 32
2、压标签查标签表:
dis mpls lsp lsp include 3.3.3.3 32 verbose
标签操作:
Ingress Transit Egress
Push Swap Pop
LSP连接类型:
1、静态LSP是用户通过手工为各个FEC分配标签而建立 的。
静态不使用标签发布协议,不需要交互控制报文,因此消耗资源比较小
通过静态方式建立 的LSP不能根据网络拓朴变化 动态调整,需要管理员干预
适用于拓朴简单且稳定的小型网络
前一节点出标签值=下一节点入标签值
2、动态LSP通过标签发布协议动态建立 ,也称为信令协议,负责FEC的分类、标签分发及LSP的建立 和维护等一系列操作
常用标签分发协议:LDP,Label Distribution Protocol
LDP广泛应用于VPN服务上,具有组网、配置简单、支持基于路由动态建立 LSP、支持大容量LSP等优点
MPLS报文解析:
在二层和三层之间,又称为2.5层,一个标签报文可以包含一个多个MPLS标签
Label:20bit,用于携带标签值 ,长度20bit
EXP:Experimental Use,主要用于CoS(Class of Service),长度3bit,(相当于QOS ,如IP的TOS,二层的PRI也都属于QOS标志)
S:(bottom of Stack)栈底位,用于指示该标签头部 是否为最后一层标签,0表示 当前 标签头部 后还有其他标签头部
TTL:Time To Live,用于当网络出现环路时,防止标签报文被无限转发,与IP报文的TTL具有相同的意义
MPLS消息类型:
Discovery Message Hello UDP LDP发现机制中宣告本LSR并发现邻居
Session Message Initialization TCP 在LDP Session建立过程中协商参数
Keepalive TCP 监控LDP Session的TCP连接的完整性
Advertisement Message Address TCP 宣告接口地址
Address Withdraw TCP 撤销接口地址
Label Mapping TCP 宣告FEC、Label映射信息
Label Request TCP 请求FEC的标签映射
Label Abort Request TCP 终止未完成的Label Request Message
Label Withdraw TCP 撤销FEC/Label映射
Label Release TCP 释放标签
Notication Message Notification TCP 通知LDP Peer错误信息
标签的发布和管理:
在MPLS网络中,下游LSR决定标签和FEC的绑定关系,并将这种绑定关系发布给上游LSR
标签发布方式Label Advertisement Mode:
DU模式Downloadstream Unsolicited:下游自主方式
对于一个特定的FEC,LSR无需从上游获得标签请求消息即进行标签分配与分发
LSR会主动将自己为FEC捆绑的标签通告给上游邻居,无需邻居先发起请求再通行
DoD模式Downstream on Demand:下游按需方式
对于一个特定的FEC,LSR获得标签请求消息之后才进行标签分配与分发
一般情况下,对特定FEC的访问需求会触发标签请求消息
标签分配控制方式Label Distribution Control Mode:
Independent独立方式:本地LSR可以自主地分配一个标签绑定到某个FEC,并通告给上游LSR,而无需等待下游的标签
Ordered有序方式:对于LSR上某个FEC的标签映射 ,只有当该LSR已经已经具有此FEC下一跳的标签映射 消息、或者该LSR就是此FEC的出节点时,该LSR才向上游发送此标签的映射
配置命令:label distribution control-mode {independent | ordered}
标签保持方式Label Retention Mode:
Liberal自由模式:LSR收到的标签映射 可能 来自下一跳,也可能来自非下一跳;对于从邻居LSR收到的标签映射 ,无论邻居LSR是不是自己的下一跳都保留
Conservative保守模式:对于从邻居LSR收到的标签映射 ,只有当邻居LSR是自己的下一跳时才保留
标签操作:
Push:当IP报文进入MPLS域时,LER在报文二层头部和IP头部之间插入一个新标签;或者中间设备根据需要,要标签栈顶增加一个新标签(标签嵌套封装)
Swap:当报文在MPLS域内转发时,根据LFIB表,用下一跳分配的标签,替换MPLS的栈顶标签
Pop:当报文离开MPLS域时,将MPLS报文的标签剥掉
MPLS报文格式:
0-20位 21-23 24 25-32
label CoS S TTL
MPLS报文label字段(0-19位)标签值解析:
0-15:特殊标签
值为0:IPV4 Explicit NULL Label 显式空标签,给QOS用的,LER需要看的空标签,表示里面还有EXP位要看
值为1:Router Alert Label
值为2:IPV6显式空标签
值为3:隐式空标签,LER不需要看的空标签,次末跳,倒数第二跳,PHP(pemultimate hop popping)次末跳弹 出,置换给它一个3标签,让出站的LER直接剥离MPLS头部,即不再查LFIB(Label Forwarding Imformation Base)表,直接剥离LSP,直接进入IP转发或者下一层标签转发(减少最后一跳的负担,减少查表次数)
4~13、15:保留
14:OAM Router Alert Label,Operation Administration &Maintenance,通过发送OAM报文检测和通告LSP故障,使用MPLS承载,对于Transit LSR和Penultimate LSR是透明的
16-1023:静态LSP和静态CR-LSP(Constraint-Based Routed Label Switched Path)共享的标签空间
1024及以上:LDP、RSVP-TE、MP-BGP等动态信令协议的标签空间;动态信令协议的标签空间不是共享的,而是独立且连续的,互不影响
二、拓朴图:
三、主要配置步骤:
- 配置IGP协议,使MPLS域内路由互通
- 配置MPLS lsr-id,开启mpls协议,为IGP路由触发建立标签,默认情况下,只为32位路由建立 标签,这里设置为所有非32位的路由都发标签
- 接口开启mpls、开启mpls ldp标签分发协议
四、主要配置命令:
#
mpls lsr-id 2.2.2.2
mpls
lsp-trigger all
#
int G0/0/0
mpls
mpls ldp
#
dis mpls lsp
dis mpls ldp peer
dis mpls ldp session
五、测试:
ping测试中抓包,可以看到mpls是在2层和3层之间的协议: