MPLS标签的处理机制

2019-11-11 18:55:00 云杰通信 105

我们先来看看IP数据包或者标签数据包(指的是携带MPLS标签栈的数据包)被LSR处理时,可能有几种动作。

Push(或Impose、Insert)压入动作。例如一个IP数据包被压入一层MPLS标签,或者一个已经有标签栈的标签包,又被压入一层标签。

Swap交换动作。LSR收到一个标签包时,经过标签转发表的查找并找到匹配的表项后,将原有标签置换成新的标签。

Remove(或PoP)弹出动作。顶部标签被移除。报文的转发依靠标签栈中余下的标签,或者如果弹出该标签后已再无其他标签则将其作为无标签的报文进行转发。

图片关键词

下面我们用一个例子来介绍。

图片关键词

如上图所示,R1在收到一个IP数据包之后,经过FIB转发信息表的查询,发现去往30.0网络的数据包是转发给R2,并且需要压入(PUSH)一层标签,标签值为200。因此R1将IP数据包压入一层标签然后转发给R2。

R2收到这个携带了标签栈的标签包,它取出标签值并在自己的LFIB标签转发信息表里进行查找,发现200的入站标签要置换(SWAP)成300并转发给R3。而R3收到这个标签包同样的在LFIB表中查找入站标签300,结果发现入站标签300对应的出站动作是3(标签值3是一个特殊的、被保留的标签值,当出站标签为3时,意味着要弹出标签头),因此将标签头弹出(PoP),这就得到了原始的IP报文,最后R3将这个IP数据包转发出去。

值得一提的是在本例中,R1是Ingress LER,也及是入站的边界标签交换路由器,它左侧连接着IP网络,而右侧连接着MPLS网络。当R1收到一个IP数据包时,它会怎么处理?它会在FIB转发信息表中查找该IP报文的目的IP地址,如果有匹配的表项并且该表项所指示的下一跳是一个IP设备而不是LSR标签交换路由器,那么这个报文会被直接路由。

但是如果FIB中的表项指示下一跳是一台LSR并且需要压入标签,情况就不同了,R1会给IP报文压入一层标签,然后再把这个标签包转发出去,这个时候,IP数据包就通过R1进入了MPLS网络。一旦以标签包的形态进入MPLS网络,在转发的过程中所有LSR就只看数据包的标签头,对其进行查找及交换,而不会去理会标签头里头的IP头部。另外,如果一个标签数据包有多个标签头,那么标签交换路由器LSR均只会处理顶层的标签。