MPLS学习笔记

IP转发对比标签表:

普通IP转发,逐跳转发数据包,在经过的每一跳处,必须进行路由表的最长匹配查找(可能多次),速度缓慢。

MPLS的标签转发,通过事先分配好的标签,为报文建立了一条标签转发通道(LSP),在通道经过的每一台设备处,只需要进行快速的标签交换即可(一次查找)。

 

 

 

MPLS(Multi Protocol Label Switching):多协议标签交换

 

基于label转发

封装在数据链路层和网络层之间

MPLS采用短而定长的标签进行数据转发,大大提高了硬件限制下的转发能力;而且MPLS可以扩展到多种网络协议(如IPv6,IPX等)。

 

MPLS体系结构

1. 控制平面

2. 转发平面(数据平面)

MPLS学习笔记 

 

MPLS术语:

FEC:转发等价类

具有相同转发处理方式的一组数据报文,例如固定的接口进来固定的接口出去的相同动作的路由。

LSP:标签交换路径

一个FEC的数据流,在不同的节点被赋予确定的标签,数据转发按照这些标签进行,数据流所走的路径就是LSP

两种模式:①静态LSP:标签需要自动配置

②动态LSP:标签自动获取

LSR:标签交换路由器

运行了MPLS协议,并且提供标签交换和标签分发功能。

LER:标签压入/弹出路由器

在MPLS的网络边缘,有一个邻居不允许MPLS。变IP转发为标签转发。提供标签分类和标签的映射、标签的移除功能。

每台路由器只会给入方向分配标签

LFIB:标签转发信息表

LDP:标签分发协议

 

标签转发表:

标签转发表中的IN和OUT,是相对于标签转发而言,不是相对于标签分配的IN和OUT。

口诀:入标签是我分给别人的,出标签是别人分给我的。

我分配的标签是给别人用的,我不会添加到报文中。

 

MPLS头部:占4字节

(1) 标签,存放标签的,定长的,占20bit,标签只具有本地意义,所以不会出现像IPv4不够用的问题,标签通常位于数据链路层和三层数据包之间,标签通过绑定过程同FEC相映射。

(2) Exp,用来区分数据包,占3bit

(3) S,栈底位,是否为最后一层,1代表是最后一层;占1bit;如果S置为1表示剥去MPLS头部,后边是普通的网络层头部。

(4) TTL,占8字节

理论上,标记栈可以无限嵌套,从而提高无限的业务支持能力,这是MPLS技术最大的魅力所在。

 

MPLS学习笔记 

 

标签空间:

0~15:特殊标签

16~1023:静态LSP标签

1024~2^20:动态LSP标签

 

倒数第二跳弹出:

3号标签:隐式空标签,类似于空值,去掉标签;和静态的NULL的区别是有下一跳,直接从出接口发出;指的是倒数第二跳弹出,目的是减轻最后一跳的压力

MPLS学习笔记 

 

 

基本工作原理:

MPLS学习笔记 

LER边缘路由器负责接收IP报文,查找标签转发表,给IP报文打标签操作(PUSH),在出MPLS时对标签报文进行弹出操作(POP),按IP路由进行转发。

内层有LSR标签交换路由器组成,负责对标签报文进行快速的标签交换操作。

一个MPLS报文所经过的转发路径就是LSP。

 

 

FEC的优点:

不同目的地址(属于相同的网段)的IP报文,在Ingress处被划分为相同的FEC,具有相同的标签,这样在LSR处,只需根据标签做快速的交换即可。

而对传统的IP路由,在每一处实际上都是一次重新划分FEC的过程。

FEC的缺点:

对于一条FEC来说,沿途所有的设备都必须具有相同的路由(前缀和掩码必须完全相同)才可以建立一条LSP。

使用MPLS转发的所有沿途设备上,对于要使用标签转发的路由,都不能做路由聚合的操作。

 

当一个链路层协议收到一个MPLS报文后,它是如何判断这是一个MPLS报文,应该送给MPLS处理,而不是像普通的IP报文那样,直接送给IP层处理?

答:

在以太网中,数据链路层帧头的type字段:0x8847(单播)和0x8848(组播)表示上层是MPLS报文;

在PPP中,增加了一种新的NCP:MPLSCP,使用0x8281来标识

 

 

 

配置:

mpls lsr-id 2.2.2.2 //配置lsr-id

mpls //全局开启MPLS,作用是识别标签

interface g0/0/1

mpls //接口下开启MPLS

 

静态LSP

static-lsp ingress 1 destination 192.168.2.0 24 outgoing-interface Ethernet0/0/1 nexthop 10.1.23.3 out-label 100

 

动态LSP:

动态LSP通过LDP(标签分发协议)实现对FEC的分类、标签的分配及LSP的建立和维护等操作。

 

interface g0/0/1

mpls //接口下开启MPLS

mpls ldp

 

LDP 标签分发协议

 

LDP与IP中的动态协议十分相像,都具备如下的几大要素:

Ÿ 邻居(或者叫消息)

Ÿ 邻居的自动发现和维护机制

Ÿ 一套算法,用来根据搜集到的信息计算最终结果

只不过前者计算的结果是标签,后者是路由

 

1、Hello邻居发现

互发Hello报文

基于UDP封装,端口号:646

目的IP地址:224.0.0.2,代表所有路由器/交换机(网络设备)

Hello间隔:5s

超时时间(hold time):15s

TLV:类型、长度、值

IPv4 transport address:发送方的LSR-ID

MPLS学习笔记 

2、TCP三次握手

IP地址大的一方主动发起,TCP,端口号646

 

3、发送init消息,协商参数(lsr-id、标签空间、keepalive时间)

4、发送keepalive消息(保活消息),维护邻居关系

周期性时间:15s

超时时间:45s

5、发送address消息(携带了自己的接口地址)

6、发送label mapping(标签映射)消息,携带标签和FEC

期间收到任何差错消息,均关闭会话,断开TCP连接

MPLS学习笔记

 

上游和下游:在一条LSP上,沿数据包传送的方向,相邻的LSR分别叫上游LSR(upstream LSR)和下游LSR(downstream LSR)。下游是路由的始发者,数据的终点。

 

 

标签的发布方式

DU方式:主动向上游通告标签

DoD方式:上游向下游发请求,下游收到请求才会向上游通告标签

MPLS学习笔记 

标签的分配控制方式

有序Independent:下游无论收没收到标签,都会向上游发送标签

独立Ordered:当从下游收到标签,才会向上游发送标签

 

标签的保持方式

*标签保持方式:收到的标签不论是不是最优的都会保留

保持标签保持方式:只收最优的

MPLS学习笔记 

*方式(Liberal retention mode) 保留来自邻居的所有发送来的标签

优点:当IP路由收敛、下一跳改变时减少了lsp收敛时间

缺点:需要更多的内存和标签空间。

保守方式(Conservative retention mode) 只保留来自下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签。

优点:节省内存和标签空间。

缺点:当IP路由收敛、下一跳改变时lsp收敛慢 比较流行的是*方式。

 

数据转发流程:

MPLS学习笔记 

以PC1给PC2发送数据为例

1.R1首先根据FIB表查找相应的转发条目,转发条目中包含Tunnel ID字段

①如果Tunnel ID为0x0,则进行IP转发

②如果Tunnel ID为非0x0,则进入MPLS转发流程

2.Ingress的处理,查询fib表和下一跳标签转发表项指导报文的转发

①首先查FIB表,根据目的IP地址找到对应的Tunnel ID(0x7);

②根据FIB表的Tunnel ID找到对应的下一跳标签转发表,将fib和标签转发表关联起来;

查看标签转发信息表LFIB,可以知道出接口、下一跳、出标签、标签的操作类型(PUSH);

④在ip报文中压入标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。

3.Transit的处理,通过查看标签转发信息表指导mpls报文的转发

①查看标签转发信息表,可以知道出接口、下一跳、出标签和标签的操作类型(SWAP)

②mpls报文的处理方式根据不同的label而不同

1)如果label大于等于16的话,则用新的标签替换MPLS报文的旧标签,同时处理TTL,然后将替换完的标签的mpls报文发送给下一跳

2)如果label等于3,则直接弹出标签,同时处理TTL,然后进行ip转发或下一层标签转发。

4.Egress处理,通过查看标签转发信息表或者查看路由表指导ip报文的转发

①如果Egress收到ip报文,则查看路由表,进行ip转发

②如果Egress收到mpls报文,则查看标签转发信息表知道标签的操作类型(POP),同时处理TTL

1)如果标签中的栈底标识S=1,表明该标签是栈底标签,然后进行ip转发

2)如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发。

上一篇:dhcp snooping enable命令


下一篇:X-Forwarded-For信息头的处理