文章目录
MPLS的原理与应用
前言
路由硬件架构
- 集成式
- 分布式(基于板卡级的转控分离);SDN是基于设备的转控分离
MPLS两大优点
-
定长
-
标签
下图为路由器内部结构的发展过程,由于IP地址是变长的,而MPLS是定长的,所以当时的MPLS技术产生的意义在于提高数据转发的速率与能力,即LFIB,根据标签转发信息库以标签进行转发;但是当MPLS出来的时候,路由器内部结构进行进行了变化,即板卡级别的转控分离,并且CEF(特快转发)的出现,MPLS的定长并不在是优点,进而发现MPLS的另一特性,标签;在PE与CE间建立的MPLS隧道更是解决私网IP地址与站点的重叠问题,所以MPLS目前来看还是一个很关键的技术。
一、MPLS概述
MPLS位于OSI模型中的数据链路层与IP层的中间,可以逻辑的想象成2.5层,其是根据标签进行转发数据的,不依靠三层的IP地址
1.1 MPLS体系架构
MPLS的体系结构如下
- 控制平面:负责产生和维护路由信息以及标签信息
路由信息表RIB(Routing Information Base):由IP路由协议(IP Routing Protocol)生成,用于选择路由
标签分发协议LDP(Label Distribution Protocol):负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作
标签信息表LIB(Label Information Base):由标签分发协议生成,用于管理标签信息
- 转发平面:即数据平面(Data Plane),负责普通IP报文的转发以及带MPLS标签报文的转发
转发信息表FIB(Forwarding Information Base):从RIB提取必要的路由信息生成, 负责普通IP报文的转发
标签转发信息表LFIB(Label Forwarding Information Base):简称标签转发表, 由标签分发协议建立LFIB,负责带MPLS标签报文的转发
1.2MPLS数据包结构
Label:20bit,标签值字段,用来标识一个 FEC
Exp:3bit,用于扩展。现在通常用做 CoS(Class of Service),当设备发生阻塞时, 优先发送优先级高的报文;其作用与 Ethernet802.1p 的作用类似
S:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明为最底层标签
TTL:8bit,和IP报文中的TTL(Time To Live)意义相同;用于防止环路
对于标签的取值范围
0~15:特殊标签;如标签3,称为隐式空标签,用于倒数第二跳弹出;即次末跳弹出,用于出MPLS域前剥离标签,防止数据包不能查看FIB表所导致的数据丢弃
16~1023:静态LSP和静态CR-LSP(Constraint-based Routed Label Switched Path)共享的标签空间
1024及以上:LDP、RSVP-TE(Resource Reservation Protocol-Traffic Engineering)、MP-BGP(MultiProtocol Border Gateway Protocol)等动态信令协议的标签空间。
1.3 LSP的建立
- 静态LSP:手工为各个转发等价类建立转发的隧道;资源消耗小,适用于拓扑简单并且稳定的网络,但是不利于维护
- 动态LSP:通过LDP(标签发布协议)建立转发的隧道;配置组网简单,易于管理和维护
术语解释:
LSP(Label Switched Path):标签交换路径,到达同一目的地址的报文在MPLS网络中金国的路径
FEC(Forwarding Equivalent Class):转发等价类,一些具有相同转发处理方式的报文,在MPLS网络中,到达同意目的地址的所有报文就是一个FEC;FEC的划分方式非常灵活,可以是以源目IP、源目Port、协议类型或VPN等为划分依据的任意组合
LDP(Label Distribute Protocol):标签分发协议,动态的为每个MPLS域中的路由器分发标签
LER(Label Edge Router):在MPLS网络中,用于标签的压入或弹出,可理解为MPLS网络的边界路由器
LSR(Label Switched Router):在MPLS网络中,用于标签的交换,完全处于MPLS网络中的路由器
根据数据流的方向,LSP的入口LER被称为入节点(Ingress);位于LSP中间的LSR被称为中间节点(Transit);LSP的出口LER被称为出节点(Egress)
1.4 LDP邻居的建立
LDP的邻居发现通过周期5s发送Hello(Discover)包,为保证速度,基于UDP端口646发送,使用组播224.0.0.2为目的IP;为保证可靠,LDP 的 Session 消息、Advertisement 消息和 Notification 消息都使用 TCP(端口 646)传输;
LDP的数据包如下所示
Version:版本号,目前的LDP版本始终为1
PDU LENgth:表示 PDU 的总长度,包括 LDP ID 和整组 LDP 消息,但不包括 Version 和 PDU Length 字段;如某个 LDP 报文中包含 3 个 Hello 消息,则该报文的 PDU length = 3 * Message length
LSR-ID:表示一台LSR,必须全局唯一;可理解为OSPF的RID
Laber Space ID:表示LSR内的标签空间
如下图所示,Hello包中携带有Transport Address字段,该字段与设备配置的LSR ID 一致;如果该字段IP地址是直连接口IP 地址,则直接建立邻居关系;如果该字段地址是LoopBack接口IP地址,需要先保证该接口IP地址路由可达,才能建立邻居关系;Hello包的交互可以参考OSPF中的Init(初始化)状态,IP可达可以参考BGP中IBGP的邻居建立
OSPF工作过程
BGP汇总(理论+实验)
LDP邻居的建立如下所示
四类消息
- 发现(Discovery)消息:用于通告和维护网络中邻居的存在,如Hello消息。
- 会话(Session)消息:用于建立、维护和终止LDP对等体之间的会话,如Initialization消息、Keepalive消息。
- 通告(Advertisement)消息:用于创建、改变和删除FEC的标签映射,如Address 消息、Label Mapping消息。
- 通知(Notification)消息:用于提供建议性的消息和差错通知。
LDP邻居建立过程简单概述
1、Discovery阶段:Hello包的发现,LSR-ID较大的一方作为主动方,发起TCP连接;如图所示为RTB首先发起
2、TCP的三次握手阶段
3、Session建立阶段:TCP建立完成后,主动方发送初始化消息,协商建立LDP会话的一些参数(如LDP协议版本、标签分发方式、Keepalive保持定时器的值、最大PDU长度和标签空间等);被动方RTA若接收相关参数,就发送初始化与keepalive给主动方,若不接受,则发送Notification,进而终止此次LDP的会话建立;主动方这边同理,接收则发送keepalive消息,不接受则发送Notification,进而终止此次LDP的会话
4、Advertisement阶段:至此,LDP会话建立完成,进行标签的动态分发与FEC的创建
各报文数据结构
- Hello消息
- Initialization 消息
- Keepalive消息
- Address消息
- 地址撤销( Address Withdraw)消息
二、标签
以上简单阐述了LDP的建立,至此就会发布标签与分配,存在两种两种标签的发布方式
2.1 标签的发布方式
- DU(Downstream Unsolicited,下游自主方式):对于一个到达同一目地址报文的分组,LSR无需从上游获得标签请求消息即可进行标签分配与分发。
- DoD(Downstream on Demand,下游按需方式):对于一个到达同一目的地址报文的分组,LSR获得标签请求消息之后才进行标签分配与分发。
比较:
显而易见,DU是自主的通告,但是大量的标签在路由器上转发,消耗标签空间,在网络拓扑发生变化时,采用DU方式可以快速反应为新的拓扑分发标签,收敛时间相对于DoD方式短;DoD是按需的分发通告,即根据请求来进行分配与分发,虽然节省了资源但是从一定程度上降低了速度
2.2 标签的分配控制方式
- Independent(独立标签分配控制方式):本地LSR可以自主地分配一个标签绑定到某个IP分组,并通告给上游LSR,而无需等待下游的标签。
- Ordered(有序标签分配控制方式):只有当该LSR已经具有此IP分组的下一跳的标签,或者该LSR就是该IP分组的出节点时,该LSR才可以向上游发送此IP分组的标签。
比较:
采用Ordered方式,只有当该LSR已经具有此IP分组的下一跳的标签时,才能向上游分发标签,这样是为了避免下游IP分组的标签未分配或收敛时间较长,上游的标签已分配,数据开始转发造成的数据丢失;稳定大于一切的原则,即在数据通信中,数据包的丢失是不能容忍的