Technical documentation
发布日期:2022-04-27 浏览次数:1997 来源:崔志鹏
HCIE Datacom理论讲解技术分享-MPLS基本转发过程详解
HCIE培训技术编辑:WOLF-LAB沃尔夫网络实验室崔志鹏
HCIE Datacom资料联系网站客服获取
在MPLS基本转发过程中涉及的相关概念如下:
MPLS转发的过程中涉及到的转发动作
Push:压入
如果看到in-lable是null,out-lable有数值就是push。
为什么是入节点完成:静态LSP因为入节点是转发等价类的分类设备,只有入节点才知道打上什么样的标签。
Swap:交换
如果看到in-lable有数值,out-lable也有数值就是swap。
Pop:剥离
如果看到in-lable有数值,out-lable=3或者是null就是标签弹出。
默认情况下,设备支持PHP特性,支持PHP的Egress节点分配给倒数第二跳节点的标签值为3。
什么是PHP?
倒数第二跳弹出
PHP的好处?
@没有PHP,出节点就会执行两次查表动作,首先要查标签表将标签剥离,然后再查路由表转发报文。有了PHP,出节点路由器相当于这条LSP的最后一跳路由器,就向上游邻居发送一个3的标签,告诉上游我是倒数第一跳;
@倒数第二跳路由器发现出标签是3,直接将顶部标签剥离,倒数第一跳收到的就是纯IP报文,此时倒数第一跳路由器仅需查路由表转发就行了,无需执行两次查表;
注意:
@倒数第二跳路由器不需要查路由表,只执行弹出标签的动作,所以PHP并没有增加倒数第二跳路由器的负担;
@静态LSP没法PHP,因为静态LSP可以配置的标签为下图:
@LDP默认使用PHP;
基本转发过程
以支持PHP的LSP为例,说明MPLS基本转发过程。
图1 MPLS基本转发过程
如图1,MPLS标签已分发完成,建立了一条LSP,其目的地址为4.4.4.2/32。则MPLS基本转发过程如下:
Ingress节点收到目的地址为4.4.4.2的IP报文,压入标签Z并转发。
Transit节点收到该标签报文,进行标签交换,将标签Z换成标签Y。
倒数第二跳Transit节点收到带标签Y的报文。因为Egress分给它的标签值为3,所以进行PHP操作,弹出标签Y并转发报文。从倒数第二跳转发给Egress的报文以IP报文形式传输。
Egress节点收到该IP报文,将其转发给目的地4.4.4.2/32。
MPLS详细转发过程
基本概念
在MPLS详细转发过程中涉及的相关概念如下:
Tunnel ID
为了给使用隧道的上层应用(如VPN、路由管理)提供统一的接口,系统自动为隧道分配了一个ID,也称为Tunnel ID。该Tunnel ID的长度为32比特,只是本地有效。
NHLFE
下一跳标签转发表项NHLFE(Next Hop Label Forwarding Entry)用于指导MPLS报文的转发。
NHLFE包括:Tunnel ID、出接口、下一跳、出标签、标签操作类型等信息。
FEC到一组NHLFE的映射称为FTN(FEC-to-NHLFE)。通过查看FIB表中Tunnel ID值不为0x0的表项,能够获得FTN的详细信息。FTN只在Ingress存在。
ILM
入标签到一组下一跳标签转发表项的映射称为入标签映射ILM(Incoming Label Map)。
ILM包括:Tunnel ID、入标签、入接口、标签操作类型等信息。
ILM在Transit节点的作用是将标签和NHLFE绑定。通过标签索引ILM表,就相当于使用目的IP地址查询FIB,能够得到所有的标签转发信息。
MPLS详细转发过程如图2所示。
当IP报文进入MPLS域时,首先查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0。
如果Tunnel ID值为0x0,则进入正常的IP转发流程。
如果Tunnel ID值不为0x0,则进入MPLS转发流程。
在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的。
Ingress的处理:通过查询FIB表和NHLFE表指导报文的转发。
查看FIB表,根据目的IP地址找到对应的Tunnel ID。
根据FIB表的Tunnel ID找到对应的NHLFE表项,将FIB表项和NHLFE表项关联起来。
查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。
Transit的处理:通过查询ILM表和NHLFE表指导MPLS报文的转发。
根据MPLS的标签值查看对应的ILM表,可以得到Tunnel ID。
根据ILM表的Tunnel ID找到对应的NHLFE表项。
查看NHLFE表项,可以得到出接口、下一跳、出标签和标签操作类型。
MPLS报文的处理方式根据不同的标签值而不同。
如果标签值>=16,则用新标签替换MPLS报文中的旧标签,同时处理TTL,然后将替换完标签的MPLS报文发送给下一跳。
如果标签值为3,则直接弹出标签,同时处理TTL,然后进行IP转发或下一层标签转发。
Egress的处理:通过查询ILM表指导MPLS报文的转发或查询路由表指导IP报文转发。
如果Egress收到IP报文,则查看路由表,进行IP转发。
如果Egress收到MPLS报文,则查看ILM表获得标签操作类型,同时处理TTL。
如果标签中的栈底标识S=1,表明该标签是栈底标签,直接进行IP转发。
如果标签中的栈底标识S=0,表明还有下一层标签,继续进行下一层标签转发。
注意:每一个FEC本地的对应的tunnel-id是唯一的
HCIE Datacom理论,联系WOLF-LAB网站客服预约免费试听