MPLS标签与标签分配协议—LDP学习

描述

一、MPLS标签

1、定义:

一个短的、易于处理的、不包含拓扑信息、只具有局部意义的信息内容。Lable短是为了易于处理,通常可以用索引直接引用;只具有局部意义是为了便于分配。例如:一个路由器上的IN和OUT都是1500,并不会对转发产生啥影响。

标签通常位于二层和三层的头部之间

LSR根据MPLS标签决定如何转发数据

2、标签结构:

路由器路由器

标签只有4个字节,32个bits

分为4个区域:

(1)label:标签值,长度20bits,是标签转发的关键索引。

0-15为保留标签:0表示该标签必须弹出,交给IPV4处理;2表示该标签必须弹出,交给IPV6处理;3表示倒数第二跳弹出;

16-1024为静态标签;

1024-65536位动态标签。

(2)TC位:Traffic Class field,流量类别字段,用于QOS标识优先级,长度3bits,数字越大,优先级越高。

EXP ,Experimental Use,实验性使用字段,预期用途是作为“服务等级”(Class of Service,CoS) 字段;

注意:TC和EXP所表示的意思是一样的,有的文档里用的EXP,有的文档里用的是TC,现在EXP”字段被重命名为“TC”字段

(3)S:栈底标识,长度1bits。

S为1表示为最后一个标签;

S为0表示后续还有标签。这就意味着我们可以多次封装标签,嵌套标签。这在MPLS VPN和BGP MPLS VPN中会被使用,如下图:

路由器

(4)TTL:存活时间,长度8bits,用于当网络出现环路时,防止标签报文被无限制转发。

它有两种处理模式:

1,Uniform:IP报文进入mpls网络时,拷贝IP头部的TTL至标签交换,每经过一次标签交换,标签TTL-1,经过出节点时,把标签TTL再次-1后替 换到原IP头部的TTL。

2, pipe:IP头部进入MPLS时,IP头部TTL-1,MPLS标签中的TTL为固定值,每经过一次标签交换,标签TTL-1,直到经过出节点时,将IP头部TTL-1。

这两种模式最大的区别在于Uniform可以使接收设备感到TTL值的变化,可以知道自己经过了几个路由器,而pipe做不到。

3、标签识别:

以太网帧中,通过Type字段对MPLS进行识别

Type=8847,代表承载的是MPLS报文

Type=0800,代表承载的是IP报文

路由器

二、标签分配协议---LDP(Lable Distribution Protocol)

1、定义:

用于LSR之间分配标签,建立LSP,简单可靠,是MPLS网络中应用最广泛的标签分配协议之一。

2、标签分配协议的种类:

LDP

RSVP-TE

MP-BGP----专门在BGP网络中,支持标签分配协议的,适合用IPV4

MP-BGP(BGP4+)----专门在BGP网络中,支持标签分配协议的,适合用IPV6

3、LDP消息类型

发现消息(discovery messages):用于LDP邻居的发现和维持。

会话消息(session messages):用于LDP邻居会话的建立、维持和中止。

通告消息(advertisement messages):用于LDP实体向LDP邻居宣告Label、地址等信息。

通知消息(Notification messages):用于向LDP邻居通知事件或错误。

4、LDP会话建立和维护

路由器

5、LDP邻居状态机

路由器

6、标签转发表

LDP会话建立完成后,路由器根据路由表进行标签分配,形成MPLS标签转发表

标签转发表包含入标签、出标签和出接口

入标签:接收到的报文携带的标签

出标签:转发数据把入标签替换为出标签

出接口:报文数据发出的接口

7、LSP建立流程(标签分配的过程)

上游与下游:

路由器

设备的上下游,与数据转发的方向相对,数据先到达的地方是上游,后到达的地方是下游。

流程:

路由器

注:标签分配的过程必须基于全网通的情况下

每台路由器是怎么知道自己是上游还是下游?假设用户A要和用户B通信,全网通,这3台路由器都已经配置了LDP协议,并且邻居已起来

过程描述:

从A发出的数据包应该是这个样子:D:20.0.0.1+S:10.0.0.1,LSR1收到后会查看路由表,得知其下一跳是LSR2的左边接口,这也就意味是LSR1发现这个数据包的下一跳是自己的LDP邻居,于是LSR1就知道自己是这个数据包中去往目的地的上游,此时LSR1会向LSR2发起标签分配的请求,请求LSR2给LSR1分配一个去往20.0.0.1的标签。

LSR2收到数据包后也会查路由表寻找下一跳,也会向LSR3发起标签分配的请求,请求LSR3给LSR2分配一个去往20.0.0.1的标签。

LSR3收到数据包后也会查路由表,发现其下一跳不是自己的LDP邻居,这就意味着这个数据包的终点是自己,自己是最后一跳。

有一种复杂的情况:R1-R3都配置了LDP协议,唯独R4没有配置LDP协议

路由器

此时LSR3收到LSR2的数据包后,会查路由表找到目的地的下一跳,发现下一跳是LSR4,但LSR4不是自己的LDP邻居,这会让LSR3同样的认为自己就是这个数据包的终点,自己值最后一跳

当LSR3知道自己是终点,是最后一跳时,LSR3会产生一个IN和OUT标签,但此时OUT标签是空的(因为它已经知道自己是最后一跳,就没必要给自己给标签了),IN标签是随机产生的,但是因为自己是最后一跳,所以,根据情况可以有三个选择:

0表示该标签必须弹出,交给IPV4处理;

2表示该标签必须弹出,交给IPV6处理;

3表示倒数第二跳弹出。

假设,这个图上配置的地址是IPV4地址,此时的IN标签应该为0,出接口没有(因为是最后一跳),最后LSR3会把自己的标签值通过标签通告报文(advertisement messages),传给自己的上游LSR2。

路由器

当LSR2收到LSR3传的标签通告报文后,会将收到报文的接口S1/1作为自己的出接口,LSR3的IN标签作为自己的出标签,自身的IN标签可自动给出一个随机值,比如:IN=1200

路由器

当LSR1收到LSR2传的标签通告报文后,会将收到报文的接口S0/1作为自己的出接口,LSR2的IN标签作为自己的出标签,自身的IN标签可自动给出一个随机值,但因为自己是起点,所以没有IN标签

路由器

此时LSP的建立流程(标签分配的流程)就结束了。

总结:

(1)出节点LSR收到上游标签分配请求后,建立LSP

出标签为空

入标签设置为3或者0或者2,视情况而定

出接口为IP路由表中目的网段的出接口

(2)出节点LSR向上游LSR发布标签映射消息,通告本机LSR的入标签

(3)上游LSR根据标签映射消息建立LSP

出标签为下游LSR通告的入标签

入标签随机产生

出接口为收到标签映射消息的接口

(4)LSR继续向上游发布标签映射消息,直到入节点

(5)入节点LSR建立LSP

出标签为下游LSR通告的入标签

入标签为空

出接口为收到标签映射消息的接口

8、标签通告模式

(1)DOD:downstream-on-demand,下游按需标记分配,默认模式

路由器

特征:上游LSR先向下游LSR发送标签请求信息;下游LSR收到标签请求消息后,为此FEC分配标签,并向上游逐层通告。

优点:没有访问需求的地址,不会建立LSP,减轻路由器的性能负担。

缺点:有访问需求才会触发建立LSP,会导致触发报文的前几个无法连通(LSP的建立需要过程,在每个路由器标签没有分配好前,有访问需求,会导致访问失败)。

(2)DU:downstream unsolicited,下游自主标记分配

路由器

特征:下游LSR在LDP会话建立后,主动向上游LSR通告标签映射消息,无需等待上游请求。

优点:无需统一访问请求触发,不会存在一组FEC前几个包不通的情况。

缺点:路由器会主动建立所有路由表中下一跳为非LDP邻居的网段的LSP,导致大量的LSP信息,而且很多可能是暂时无用的。

9、标签控制模式

有序:只有从最下游的LSR开始建立标签后,才能逐层通告

路由器

无序(独立):不管有没有收到下游的标签映射消息,都立即向上游发送标签映射消息(即使标签重复也无所谓)

路由器

10、标签保持方式

(1)保守模式:只保留最优路径的,来自下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签;

如果IP路由表中存在等价路由,LSP会建立等价路径,做负载均衡。

路由器

特征:

增加LSP的收敛时间;(一旦主路故障了,需要启动备用路径,重新建立标签分配的过程)

节省内存空间和标签。

(2)自由模式:保留所有邻居标签

路由器

特征:

减少LSP收敛时间;

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

11、带标签的MPLS报文转发流程

报文进入MPLS网络,入节点检查标签转发表,进行PUSH操作,如下图:

路由器

报文在Transilt LSR中传输时,路由器检查标签,并在标签转发表中匹配,进行标签SWAP操作

路由器

报文到达出节点,路由器弹出pop标签,并按照普通数据报文进行报文

路由器




审核编辑:刘清

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分