MPLS 多协议标签交换
前言:
- 多协议标签交换MPLS(Multiprotocol Label Switching)是一种IP(Internet Protocol)骨干网技术。MPLS在无连接的IP网络上引入面向连接的标签交换概念,将第三层路由技术和第二层交换技术相结合,充分发挥了IP路由的灵活性和二层交换的简捷性
- MPLS实际上是一种隧道技术。这种技术不仅支持多种高层协议与业务,而且在一定程度上可以保证信息传输的安全性
基本概念
传统的IP转发采用的是逐跳转发,数据报文经过每一台路由器,都要被解封装查看报文网络层信息,然后根据路由最长匹配原则查找路由表指导报文转发。各路由器重复进行解封装查找路由表和再封装的过程,所以转发慢
MPLS是基于MPLS头部实现数据快速转发,节约了时间,所以转发速度快
定义:
MPLS(Multiprotocol Label Switching)是一种结合了第三层(网络层)路由和第二层(数据链路层)交换的高效转发技术。其核心思想是通过在数据包前添加标签(Label),实现基于标签的快速转发,从而提升网络性能并支持多种高级功能(如VPN、流量工程等)
组成:
-
MPLS域(MPLS Domain):一系列连续的运行MPLS的网络设备构成了一个MPLS域
-
LSR(Label Switching Router,标签交换路由器):进行MPLS标签交换和报文转发的网络设备。位于MPLS域边缘、连接其它网络的LSR称为边沿路由器LER(Label Edge Router),区域内部的LSR称为核心LSR(Core LSR)
LSR分类:
-
入站LSR(Ingress LSR):是向IP报文中压入MPLS头部并生成MPLS报文的的入口路由器
-
中转LSR(Transit LSR):是将MPLS报文进行标签置换等操作,并将该报文继续在MPLS域中转发的中间路由器
-
出站LSR(Egress LSR):是将MPLS报文中MPLS头部移除,还原为IP报文的出口路由器
FEC和LSP:
FEC:
概念: 将具有相同特征的报文归为一类,称为转发等价类FEC(Forwarding Equivalence Class),属于相同FEC的报文在转发过程中被LSR以相同方式处理
FEC可以根据源地址、目的地址、源端口、目的端口、VPN等要素进行划分。例如,在传统的采用最长匹配算法的IP转发中,到同一条路由的所有报文就是一个转发等价类
最常见的 FEC 就是目的 IP 地址前缀(由 IGP 路由决定),LSR 会为每个 FEC 分配标签
LSP:
IP报文在MPLS网络中经过的入站,中转,出站路径称为标签交换路径LSP(Label Switched Path)。LSP是一个单向路径,与数据流的方向一致
同一个FEC的报文通常采用相同的LSP穿越MPLS域 , 所以对同一个FEC,LSR用相同的标签转发
一条LSP可以有0个、1个或多个中间节点,但有且只有一个入节点和一个出节点
标签:
IP报文进入MPLS域之前,会被入站LSR压入MPLS头部(又叫MPLS标签),形成一个MPLS标签报文,
一个标签报文可以包含一个或多个MPLS标签
标签(Label)是一个短而定长的、只具有本地意义的标识符,用于唯一标识一个分组所属的FEC。在某些情况下,例如要进行负载分担,对应一个FEC可能会有多个入标签,但是一台设备上,一个标签只能代表一个FEC
标签的4个字段:
-
Label:20bit,标签值域
-
Exp:3bit,用于扩展
-
S:1bit,栈底标识。S值为1时表明为最底层标签头部,为0就代表下面还有标签头部
-
TTL:8bit,用于当网络出现环路时 , 防止标签报被无限制转发
标签栈:
标签栈(Label Stack)是指标签的排序集合(同时存在多个标签头部)
当标签栈存在多个标签时:
-
最靠近二层头部的标签是栈顶标签,标签中的s字段为0
-
最靠近IP头部的标签是栈底标签,标签中的s字段为1
MPLS标签的处理:
标签操作类型包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作
-
Push:当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)
-
Swap:当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换接收搭配的MPLS报文的栈顶标签
-
Pop:当报文离开MPLS域时,将MPLS报文的标签剥掉
问题:当MPLS报文到达最后一跳(Egress LER)时,标签已完成使命(下一步需转发原始IP包)。若Egress LER仍需执行撕标签+查IP路由表两步操作,效率较低
解决方案:让倒数第二跳(Penultimate Hop)提前撕掉标签,使Egress LER直接收到原始IP包,省去撕标签动作,最后一跳节点直接进行IP转发或者下一层标签转发,转发速度更快
注释:华为设备默认开启PHP,支持PHP的Egress节点分配给倒数第二跳节点的标签值为3。标签3,代表 "直接撕掉我的标签,不用替换新标签"
MPLS的转发:
MPLS转发的本质就是将数据归到对应的FEC并按照提前建立好的LSP进行转发
- 对于整个MPLS域,LSP是某一特定的FEC进入域和离开域的路径,可以看成是LSR的有序集合
- 对于单台LSR,需要建立标签转发表,用标签来标识FEC,并绑定相应的标签处理和转发等行为