MPLS技术原理

产生背景

在90年代初,网络规模增长,大量的报文需要被转发,而当时硬件水平不够,路由器转发时是通过最长匹配原则遍历查路由表,极大消耗CPU,所以设计出MPLS,采用短而定长的标签进行数据转发,大大提高了硬件限制下的转发能力;而且MPLS可以扩展到多种网络协议(如IPv6,IPX等)。



工作原理

在这里插入图片描述

报文在进入MPLS网络的LER路由器进行路由查表,确定匹配的是哪一条路由,压入这条路由所对应的标签,传递给LSR后,LSR只需要查一次转发表,无需查路由表,将标签进行交换,依次传递下去,直到发给目表LER路由器,目标LER路由器再将标签弹出,完成通信。


MPLS的转发过程

当IP报文进入MPLS域时,首先查看FIB表,检查目的IP地址对应的Tunnel ID值是否为0x0。
如果Tunnel ID值为0x0,则进入正常的IP转发流程。
如果Tunnel ID值不为0x0,则进入MPLS转发流程。

在MPLS转发过程中,FIB、ILM和NHLFE表项是通过Tunnel ID关联的。
在diagnose视图下才可以查看ILM和NHLFE表。


Ingress的处理:通过查询FIB表和NHLFE表指导报文的转发。
@查FIB表,根据路由找到对应的tunnel id
@根据tunnel id查看对应的nhlfe表项,可以得到出接口、下一跳、出标签和标签操作类型。
@在IP报文中压入出标签,同时处理TTL,然后将封装好的MPLS报文发送给下一跳。


Transit的处理:通过查询ILM表和NHLFE表指导MPLS报文的转发。
@根据标签查看对应的ILM表,可以得到tunnel id
@根据tunnel id查看对应的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,表明还有下一层标签,继续进行下一层标签转发。


标签操作类型

标签操作类型包括标签压入(Push)、标签交换(Swap)和标签弹出(Pop),它们是标签转发的基本动作。
@Push:当IP报文进入MPLS域时,MPLS边界设备在报文二层首部和IP首部之间插入一个新标签;或者MPLS中间设备根据需要,在标签栈顶增加一个新的标签(即标签嵌套封装)。
@Swap:当报文在MPLS域内转发时,根据标签转发表,用下一跳分配的标签,替换MPLS报文的栈顶标签。
@Pop:当报文离开MPLS域时,将MPLS报文的标签剥掉。
在最后一跳节点,标签已经没有使用价值。这种情况下,可以利用倒数第二跳弹出特性PHP(Penultimate Hop Popping),在倒数第二跳节点处将标签弹出,根据出接口发给最后一跳,不需要查路由表,最后一跳节点直接进行IP转发或者下一层标签转发,减少最后一跳的负担。
默认情况下,设备支持PHP特性,支持PHP的Egress节点分配给倒数第二跳节点的标签值为3。


MPLS路由器上,报文的转发过程

当收到普通IP报文时,查找FIB表,如果Tunnel ID为0x0,则进行普通IP转发;如果查找FIB表,Tunnel ID为非0x0,则进行MPLS转发。
当收到带标签的报文时,查找LFIB表,如果对应的出标签是普通标签,则进行MPLS转发;查找LFIB表,如果对应的出标签是特殊标签,如标签3,则将报文的标签去掉,再查FIB表,进行IP转发。
注意:MPLS网络,既可以进行普通IP转发,也可以进行MPLS转发。


名词术语

在MPLS网络中,路由器的角色分为两种:
        LER(Label Edge Router): 在MPLS网络中,用于标签的压入或弹出,如上图中的RTB,RTD。
       LSR(Label Switched Router):在MPLS网络中,用于标签的交换,如图中的RTC。


根据数据流的方向,LSP的入口LER被称为入节点(Ingress);位于LSP中间的LSR被称为中间节点(Transit);LSP的出口LER被称为出节点(Egress)。
LSP(Label Switched Path):IP报文在MPLS网络中经过的路径称为标签交换路径LSP(Label Switched Path)。LSP是一个单向路径,与数据流的方向一致。
标签分发协议LDP(Label Distribution Protocol):负责标签的分配、标签转发信息表的建立、标签交换路径的建立、拆除等工作。
标签信息表LIB(Label Information Base):由标签分发协议生成,用于管理标签信息。
转发信息表FIB(Forwarding Information Base):从RIB提取必要的路由信息生成,负责普通IP报文的转发。
标签转发信息表LFIB(Label Forwarding Information Base):简称标签转发表,由标签分发协议建立LFIB,负责带MPLS标签报文的转发。


FEC:转发等价类

MPLS作为一种分类转发技术,将具有相同转发处理方式的报文分为一类,称该类报文为一个FEC(Forwarding Equivalent Class)。
FEC的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或VPN等为划分依据的任意组合。
在一条LSP上不同节点被用相同的方式转发的报文(分配成相同的标签)。
最常见的FEC的分类方式就是路由条目,直接点说,匹配同一条路由的所有报文就是一个转发等价类。


MPLS体系结构在这里插入图片描述

控制平面:负责产生和维护路由信息以及标签信息。
转发平面:即数据平面(Data Plane),负责普通IP报文的转发以及带MPLS标签报文的转发。
现在我们使用的是通过路由协议生成路由表,再将路由表下发给转发表,当IP报文进来后真正指导转发的是转发表(FIB)。
标签转发:在控制层面额外的运行LDP协议,LDP协议会根据RIB表生成LIB表,简单的说将路由表中的每条路由进行FEC分类,通过LDP协议为这些FEC(每条路由)产生对应的标签信息;
LDP协议也会生成LFIB表,真正指导标签转发的也是LFIB表。



MPLS的报文结构

在这里插入图片描述

MPLS标签封装在链路层和网络层之间,可以支持任意的链路层协议,MPLS标签的封装结构如图所示。
MPLS标签的长度为4个字节,共分4个字段:
    Label:20bit,表示标签的值域;
    Exp:3bit,用于扩展。现在通常用做QoS,用于标记标签的优先级,当设备发生阻塞时,优先发送优先级高的报文;
   S:1bit,栈底标识。MPLS支持多层标签,即标签嵌套。S值为1时表明后边还有标签,S值为1时表明为最底层标签;
   TTL:8bit,和IP报文中的TTL(Time To Live)意义相同,用来防环的。
   标签空间(Label的20bit)是指标签的取值范围。标签空间划分如下:
         0~15:特殊标签。如标签3,称为隐式空标签,用于倒数第二跳弹出(POP);
        16~1023:静态LSP和静态CR-LSP(Constraint-based Routed Label Switched          Path)共享的标签空间;
        1024及以上:LDP、RSVP-TE(Resource Reservation Protocol-Traffic         Engineering)、MP-BGP(MultiProtocol Border Gateway Protocol)等动态信令协议的标签空间。

LSP的建立方式

在这里插入图片描述

静态LSP:用户通过手工方式为各个转发等价类(路由)分配标签建立转发隧道。
动态LSP:通过LDP动态建立转发隧道。

转发规律:上游的出标签就是下游的入标签
根据LSP的方向,MPLS报文由Ingress发往Egress,则Ingress是Transit的上游节点,Transit是Ingress的下游节点。同理,Transit是Egress上游节点,Egress是Transit的下游节点。

静态LSP

静态LSP的特点
不使用标签发布协议,不需要交互控制报文,资源消耗比较小;
通过静态方式建立的LSP不能根据网络拓扑变化动态调整,需要管理员干预。
静态LSP适用于拓扑结构简单并且稳定的网络。

静态LSP的配置
静态LSP的配置思路
@确定为哪条FEC(路由)创建LSP。
@该LSP的入节点在哪里?出节点在哪里?
ingress 作为入节点,只有出接口
egress 作为出节点,只有入接口

ingress配置
[R1]mpls lsr-id 1.1.1.1 //配置MPLS的lsr-id,推荐用loopback接口的地址,必须配置
[R1]mpls //全局使能MPLS
[R1-mpls]int g0/0/0
[R1-GigabitEthernet0/0/0]mpls //接口使能MPLS
[R1]static-lsp ingress 123 destination 3.3.3.3 32 outgoing-interface GigabitEthernet0/0/0 nexthop 10.1.12.2 out-label 102
destination:必须是路由表中存在的路由,否则静态LSP的状态是down
dis mpls static-lsp //查看静态LSP的信息

动态LSP

通过LDP协议动态产生LSP的默认策略
每台路由器都会为自己非直连主机路由作为入节点产生LSP和作为中间节点产生LSP。
每台路由器都会为自己直连主机路由作为出节点产生LSP。
默认情况下:华为路由器仅为非物理接口主机路由产生LSP,即为/32掩码长度的loopback口路由产生LSP。

LDP协议的工作机制
1、相邻的LDP路由器会建立邻居
接口发送LDP的hello报文,DIP为224.0.0.2,使用UDP的646端口,自动建立并维护邻居关系,默认5s周期性发送,邻居失效时间15s。
2、hello报文中携带传输地址,默认是LSR-ID。
3、建立邻居后,传输地址大的一方向传输地址小的一方发起TCP连接,端口也是646,进行LDP会话的建立,所以双方必须 存在到达对方LSR-ID的路由。
4、发送初始化消息进行参数协商,协商成功后发送keepalive报文,会话建立成功。
5、发送地址消息和标签映射消息,交换标签,构建LSP。
6、LDP的邻居通过hello报文维护,LDP会话通过keepalive报文维护。
7、in table:自己产生的标签,让邻居使用
     out table:邻居产生的标签,我拿来用


LDP邻居的建立

在这里插入图片描述

Address:自己的LSR-ID和使能了LDP协议的接口。作用:收到邻居发来的标签,查看邻居是不是自己的下一跳,是的话,则使用邻居分配的标签,不是的话,就当做备用标签。
Lable Mappig:标签映射,互相为自己满足产生LSP条件的路由产生本地标签,并且通告给邻居。
Notification:发生错误后,发送Notification,对端收到Notification,断开TCP的会话,重新建立会话。


标签的发布方式

在这里插入图片描述

DU(Downstream Unsolicited,下游自主方式):对于一个到达同一目地址报文的分组,LSR无需从上游获得标签请求消息即可进行标签分配与分发。
DoD(Downstream on Demand,下游按需方式):对于一个到达同一目的地址报文的分组,LSR获得标签请求消息之后才进行标签分配与分发。
DU无需等待上游的请求消息,可以直接向邻居分配标签。在网络拓扑发生变化时,采用DU方式可以快速反应为新的拓扑分发标签,收敛时间相对于DoD方式较短。
华为设备默认采用DU的方式发布标签。

MPLS的2个流派
1、基于帧的MPLS(分组网络,IP网络) DU的方式
2、基于信源的MPLS(电路交换网络,ATM) DOD的方式


标签的分配控制方式

在这里插入图片描述

Independent(独立标签分配控制方式):本地LSR可以自主地分配一个标签绑定到某个IP分组,并通告给上游LSR,而无需等待下游的标签。
Ordered(有序标签分配控制方式):只有当该LSR已经具有此IP分组的下一跳的标签(收到下游发来的标签),或者该LSR就是该IP分组的出节点时
(始发路由器),该LSR才可以向上游发送此IP分组的标签。
华为设备默认采用Ordered的方式分配标签。

如图所示拓扑:
采用Independent方式:
如果标签发布方式为DU,且标签分配控制方式为Independent,则RTC(Transit)无需等待下游RTD(Egress)的标签,就会直接向上游RTB分发标签。
如果标签发布方式为DoD,且标签分配控制方式为Independent,则发送标签请求的RTB(Transit)的直连下游RTC(Transit)会直接回应标签,而不必等待来自下游RTD(Egress)的标签。

采用Ordered方式:
如果标签发布方式为DU,且标签分配控制方式为Ordered,则RTC(Transit)只有收到下游RTD(Egress)的标签,才会向上游RTB分发标签。
如果标签发布方式为DoD,且标签分配控制方式为Ordered,则发送标签请求的RTB(Transit)的直连下游RTC(Transit)只有收到下游RTD(Egress)的标签,才会向上游RTB分发标签。



标签的保持方式

Liberal(自由标签保持方式):对于从邻居LSR收到的标签映射,无论邻居LSR是不是自己的下一跳都保留。
Conservative(保守标签保持方式):对于从邻居LSR收到的标签映射,只有当邻居LSR是自己的下一跳时才保留。

当网络拓扑变化引起下一跳邻居改变时:
使用自由标签保持方式,LSR可以直接利用原来非下一跳邻居发来的标签,迅速重建LSP,但需要更多的内存和标签空间。
使用保守标签保持方式,LSR只保留来自下一跳邻居的标签,节省了内存和标签空间,但LSP的重建会比较慢。
华为设备默认采用自由标签保持方式保存标签。


PHP技术

分析数据包到达Egress节点怎么处理?如果MPLS网络中业务量很大,Egress节点的处理方式有何不妥?
始发路由器收到带标签的报文,查看LFIB表,发现out table为null,执行标签弹出操作,并对数据包进行三层处理,查找路由表进行转发。
如果MPLS网络中的业务量很大,则每次数据包在Egress节点都要进行两次处理才能进行正确的路由转发,这样会导致Egress节点的处理压力增加,路由器的处理性能降低。我们希望在Egress节点上只处理一次就能将数据包正确转发,以提高Egress的转发性能,所以提出了PHP技术。
在这里插入图片描述

动态LSP的配置
[R1]mpls lsr-id 1.1.1.1
[R1]mpls
Info: Mpls starting, please wait… OK!
[R1]mpls ldp //使能LDP协议
[R1-mpls-ldp]int g0/0/0
[R1-GigabitEthernet0/0/0]mpls
[R1-GigabitEthernet0/0/0]mpls ldp //接口使能LDP协议
[R1]dis mpls lsp //查看动态LSP信息

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值