本文目录导读:

- 场景假设
- 第一步:标签压入(Push)—— Ingress 路由器
- 第二步:标签交换(Swap)—— Transit 路由器
- 第三步:标签弹出(Pop)—— Egress 路由器
- 关键概念与补充说明
- 标签交换的本质
MPLS(多协议标签交换)的核心思想是通过短而固定的标签来指导数据包的转发,而不是像传统IP路由那样依赖最长前缀匹配,它的标签交换过程可以概括为“压入、交换、弹出”。
下面用一个具体的例子来详细拆解这个过程。
场景假设
- 网络中有一个MPLS域,包含三台路由器:Ingress(入口)、Transit(中转)、Egress(出口)。
- 数据包要从网络A发往网络B,路径是 Ingress → Transit → Egress。
- 在MPLS域内部,为到达网络B的FEC(转发等价类)预先建立了一条LSP(标签交换路径),分配的标签如下:
- Ingress 告诉 Transit:发送给我的数据,标签用 100。
- Transit 告诉 Egress:发送给我的数据,标签用 200。
第一步:标签压入(Push)—— Ingress 路由器
- 收到原始IP包:Ingress路由器收到一个普通的IP数据包,目标IP是网络B。
- 分类:基于目标IP地址,它匹配到一个FEC(所有去往网络B的流量”)。
- 查找标签转发表:根据这个FEC,它查到对应的出站标签(Out Label)是 100,并且出接口是通往Transit路由器的接口。
- 执行动作:
- 在IP数据包前面压入(Push)一个MPLS头部,其中Label=100。
- 将带有标签100的包从对应接口转发给Transit路由器。
数据包的样子: [MPLS Label=100] [IP头] [负载]
第二步:标签交换(Swap)—— Transit 路由器
- 收到带标签的包:Transit路由器从Ingress路由器收到一个带有标签 100 的MPLS包。
- 查找标签转发表:Transit路由器查看自己的LFIB(标签转发信息表),找到对应 入标签 = 100 的表项,表项内容通常为:
- 入标签:100
- 出标签:200 (这是下一跳Egress要求的标签)
- 出接口:通往Egress路由器的接口
- 下一跳:Egress路由器的IP
- 执行动作:
- 将MPLS头部中的标签从 100 交换(Swap)为 200。
- (如TTL、CoS)可能根据策略修改,但标签是核心替换项。
- 将带有新标签200的包从出接口转发给Egress路由器。
数据包的样子: [MPLS Label=200] [IP头] [负载]
第三步:标签弹出(Pop)—— Egress 路由器
- 收到带标签的包:Egress路由器从Transit路由器收到一个带有标签 200 的MPLS包。
- 查找标签转报表:Egress路由器查找自己的LFIB,找到 入标签 = 200 的表项,它发现自己是LSP的终点(倒数第二跳通常已弹出,这里假设是Egress弹出,更常见的是PHP——倒数第二跳弹出,见下方补充)。
- 表项通常显示:出标签为 Pop 或 Implicit-Null(隐式空标签)。
- 执行动作:
- 弹出(Pop)MPLS头部,直接露出原始的IP数据包。
- 继续IP转发:Egress路由器得到的是一个普通的IP数据包,它根据目标IP地址查询普通的路由表,将数据包转发给最终的设备(如网络B的交换机或PC)。
数据包的样子: [IP头] [负载] (恢复了原始形态)
关键概念与补充说明
-
转发等价类(FEC)
在上面的例子中,“去往网络B的所有流量”就是一个FEC,MPLS将具有相同转发行为(例如去往同一目的地、同优先级)的流聚合到一个FEC,并分配相同标签,简化了处理。
-
标签分配与分发
- 上面的例子假设标签已经预配好(例如通过LDP、RSVP-TE或BGP-LU协议),实际网络中,下游路由器(如Transit、Egress)会通过标签分发协议主动向上游路由器通告“你发给我去往网络B的包时,应该用标签X”。
- 下游标签分发:Egress告诉Transit用标签200;Transit告诉Ingress用标签100。
-
PHP(倒数第二跳弹出)
- 在上面的例子中,如果Egress是直接弹出了标签,它还需要查一次IP路由表,为了优化,通常使用PHP:
- Egress会告诉上一跳(Transit):“你不需要给我带标签,直接给我IP包就行,我自己查IP表更快。” Egress分配的标签是 隐式空标签(Implicit Null,值为3)。
- 在Transit上,当它查到入标签=100时,出标签会执行 Pop 动作,直接去掉MPLS头部,将原始IP包发给Egress。
- 这样,Egress就不需要再查标签表了,它直接收到IP包进行IP转发,这就是标准的MPLS转发流程。
- 在上面的例子中,如果Egress是直接弹出了标签,它还需要查一次IP路由表,为了优化,通常使用PHP:
-
标签栈(Label Stack)
- MPLS允许在数据包前压入多层标签,最内层标签用于标识目的地,外层标签用于引导数据包通过特定的隧道(例如MPLS TE或L3VPN),在转发过程中,只有栈顶标签被用于转发决策,当外层标签弹出后,内层标签暴露出来,继续指导下一跳转发。
标签交换的本质
- 数据层面:MPLS交换过程就是压入、交换、弹出三个基本操作的组合。
- 控制层面:标签的分配和分发由标签分发协议完成,确保每个路由器都知道“收到标签X后,应该换成标签Y并发给谁”。
- 核心优势:基于短标签的精确匹配转发,比基于最长前缀匹配的IP路由查找更快(硬件实现简单),并且天然支持流量工程和VPN多租户隔离。
标签: MPLS标签交换
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播