MPLS技术详解1:原理、架构与转发机制详析
本系列首篇将带您全面了解MPLS(多协议标签交换)技术的基础原理、网络设备类型、标签交换机制及其优势。文章深入解析MPLS报头结构、标签堆栈、数据包在MPLS网络中的转发流程,以及与Cisco Express Forwarding的关系。通过对控制平面和数据平面的梳理,帮助读者建立完整的MPLS认知体系,为深入学习后续高级应用和实战部署打下坚实基础
1. 基础概念
MPLS的全称是多协议标签交换技术。顾名思义,它支持多协议,使用标签交换机制在网络中转发数据包。
1.1 多协议支持
多协议支持意味着它可以运行在任何的数据链路层技术(以太网,帧中继,ATM,SONET)之上并可以转发任何网络层协议(IPv4,IPv6,IPX,AppleTalk)。
在数据包进入到MPLS网络的时候,MPLS路由器会添加它自己的报头,也就是所谓的标签。因此它也被叫做2.5层协议。
1.2 标签交换机制
以太网通过查询MAC地址来转发数据帧,IP网络通过查询IP地址来转发数据包,MPLS网络则是通过查询标签来转发数据包。
标签是由专门的标签分发协议来下发的,最常用也被大家熟知的就是LDP,运营商网络里也会有SR和SRv6来分发标签。至于说为什么叫交换机制,是经过每一跳都会交换(SWAP)这个标签。
1.3 设备类型
Label Edge Router,简称LER,是MPLS网络和其他网络交界的边缘,通常也被成为PE路由器。它负责标签的压入和弹出。入口的LER也叫做iLER,出口的LER也叫做eLER。
Label Switching Router,简称LSR,是MPLS网络的核心路由器,也被成为P路由器。它负责标签的交换。
1.4 标签交换路径
当IP包进入到一个MPLS网络并被加上一个合适的标签,直到它移除这个标签并离开MPLS网络,它在MPLS网络经过的路径就叫做标签交换路径Label Switched Path (LSP)。
- 它是到目的网络的IGP的最短路径。
- 它是单向的,且和数据传输的方向一致,这意味着回程可能使用不同的LSP。
- 可用于快速重路由(Fast Reroute)。预先配置备用路径的LSP,当主路径上的链路或是节点失效的时候,可以迅速切换到备用路径。
1.5 转发等价类
Forwarding Equivalence Class,即转发等价类,指的是一些数据包被在同一条路径上转发且得到相同的对待。当时数据包进入到MPLS网络的时候,入口LER将其划分到不同的FEC里,根据FEC来分配标签。对于设备来讲,对于有相同的下一条,相同的出接口,以及相同的QoS,就属于一个相同的FEC。对于其他设备上对数据包的操作,本路由器是无法干预的。
所有属于同一FEC的数据包被分配了同一个标签,但并不是所有拥有一样标签的数据包都属于同一个FEC。概念上FEC包括路径和QoS,路径是指所有的数据包都沿着一样的LSP转发,相同的对待则指的是有相同的QoS设置。举个例子,到达同样目的的数据包,在网络拥塞的情况下,语音或是视频的流量可以通过,普通的流量可以就被丢弃了。在日常提到FEC,基本就是指分配了达到相同的目的地分配了相同的标签,譬如L3VPN,客户从一个站点到另一个站点的VPN流量,在运营商承载网上走的是一条一样的LSP。根据和运营商签的SLA来保证服务质量,决定了网络拥塞时对不同流量的处理方式。
1.6 MPLS的优点
在IP网络中,每一跳都需要根据目的网络地址进行路由表的最长匹配前缀的查询,这需要消耗CPU的资源。而在MPLS网络内部,只要读取数据包报头里的标签,通过基于硬件查询的标签转发信息表LFIB,将入标签替换成新标签并从出接口发出去。因此,数据可以以线速转发,消除了CPU造成的瓶颈。
2. MPLS报头
2.1 报头格式
- Label: 顾名思义就是标签值,20比特。
- EXP:3比特的实验位,用于QoS。通常IP包在进入到MPLS网络时,iLER会将IP包的IP Precedence的值复制到这里。
- S:栈底位Bottom of Stack,在有多个标签的时候,如果栈底位置1则意味着这是最后一个标签。
- TTL:和IP网络的TTL一样,在MPLS网络里每一跳都会将TTL值减1。
2.2 标签堆栈
如果有2个及以上的标签时,一般最外层的标签的被叫做传输标签,用于找到服务所在的PE。最内层的,也就是靠近数据的一侧的标签被叫做服务标签,用于在PE上区分送到哪个服务上,譬如某个客户的VPN服务。举几个例子如下:
以第二个例子为例,RSVP-TE标签是用于找到TE隧道终点的,LDP标签是接着用于找到PE的,VPN标签是将数据转发给正确的客户的。譬如一个LSP需要从R1 -> R2 -> R3。R1到R2走的是MPLS TE的隧道接口,R2到R3是通过LDP的标签转发的,最后R3找到客户VRF和正确的出接口。
3 MPLS网络转发流程
3.1 入口LER
- 接收IP包,并分析报头,找出数据包的目的网络,QoS等特性。
- 查路由器表(RIB)找目的网络及其下一跳。查找转发表(FIB)找到下一跳的出接口。并据此映射到相应的FEC上。
- 查看标签转发表(LFIB),找到FEC对应的标签。
- 制作标签,包括找到标签值,复制IP包的IP Precedence到EXP和TTL值,如果是内层标签则栈底位为1,其余为0。
- 在2层数据帧报头和3层IP包报头中间按顺序插入MPLS标签。譬如L3VPN的多层标签,从哪个VPN学来的,就先在内层插入VPN的标签。然后再查看其BGP的下一跳,并插入外层传输的标签。
- 将以太网报头里的EtherType从0x0800改到0x8847,表示原来后面接的是IP包变成了MPLS标签。
- 将新的数据包从查到的出接口处转发出去。
3.2 LSR
- 接收标签包,并查看标签及相关信息。
- 查找LFIB,根据对应的入接口和标签值,查找出接口和标签值。
- 将入标签交换为出标签,MPLS报头的TTL减少1。IP包的报头不变。
- 将新的标签包从查到的出接口处转发出去。
3.3 出口LER
Penultimate Hop Popping (PHP),倒数第二跳弹出。指LSR将MPLS数据包发给出口LER之前,将MPLS标签移除,发送IP包给出口LER。这样出口LER就少了一个标签操作的动作,直接进行IP转发。如果是多层标签,则会将最外层的传输标签移除,保留服务标签给到出口LER。无论何种情况,都会减少一步标签的操作。
- 在有没有PHP的情况下。对于最外层的传输标签,仍需查看LFIB,如果对应标签显示的动作是Pop,则会弹出标签。
- 根据TTL的模式,来处理IP包的TTL值。
- 统一模式:MPLS网络内部的跳数也会算到IP包的TTL里。因此会将MPLS TTL值减1,再复制回IP报头的TTL字段。
- 管道模式:MPLS网络只被当作一跳,MPLS TTL值被忽略,在转发IP包时将其TTL值减1。
- 如果是多层标签,则会根据最后一个服务标签找到对应的服务,并将后面的IP包经VRF的路由表查询后从对应的接口发出去。如果次末跳路由器弹出标签后露出了IP包,出口LER直接查路由表并将IP包从对应的接口发出去。
4. CEF
Cisco Express Forwarding 思科快速转发技术,其他厂商也都有类似的技术。
4.1 组件
- FIB:根据RIB来构建优化的用于快速查询的数据结构,包括目标网络前缀,下一跳地址和出接口。
- 邻接表:在FIB中的列出的下一跳地址,需要知道它的2层信息,譬如MAC地址,VLAN标签等。这通常由ARP(IPv4)或是NDP(IPv6)来解析下一跳的2层地址。
4.2 转发流程
- 数据包来到入接口。
- 专用转发硬件通过FIB来查询数据包报头里的目的网络地址。
- FIB查出下一跳地址,并对应到邻接表里的条目。
- 根据邻接表里的条目来重写2层报头,譬如下一跳的MAC地址。
- 将新的数据帧转发到正确的出接口。
4.3 转发方式
转发方式分为集中式和分布式,我们大部分使用的还是分布式。
- 集中式快速转发:通用型CPU负责所有的操作,包括快速转发交换。优点是通用型CPU价格比较便宜。
- 分布式快速转发:由专门的硬件,入ASIC,NPU,TCAM等来负责快速转发交换。大部分的数据包处理交由线卡上的这些专门硬件来处理。当一个数据包到达入接口,它被转到此线卡的转发引擎。由于ASIC已经将RP所产生的FIB和邻接表下载并存储到TCAM里,因此转发引擎通过查看基于TCAM的表来决定数据包发到哪个出接口,或是发送到交换矩阵背板来转到其他线卡的出接口。优点是可以达到线速转发,不占用路由器处理器的CPU资源。
5. MPLS控制平面和数据平面
5.1 MPLS控制平面
MPLS的控制平面是一些进程和协议,通过在MPLS网络里创建和维持必要的路径来决定数据包是怎么转发的。
- 用于分发和交换标签。
- 路径LSP的建立和拆除。
- 负责建立LIB和LFIB表。
- 与路由协议的交互。
- 常用的协议有LDP,RSVP-TE,和MP-BGP。
5.2 MPLS数据平面
MPLS的数据平面是根据控制平面决定的路径来转发数据包。原来由每跳路由器查询数据包的目的地址,MPLS的数据平面通过对定长标签的简单快速的查询来快速转发数据包。
- 根据LFIB转发数据包。
- LER会进行IP包的MPLS封装和解封装。
- LSR会进行标签交换。
5.3 2层帧结构
- 带标签的以太帧的以太类型为0x8847,说明后面是MPLS标签。
- 不带标签的以太帧的以太类型为0x8000,说明后面是IP包。
5.4 四张表的关系
路由表,LDP邻居表,标签表和标签转发表的关系如下:
📚 延伸阅读
更多内容持续更新于我的博客:https://www.zenseek.site