Mpls 是多协议标签转发( multiple protocol label switch )的缩写, mpls 来源于快速转发需求,早期查找路由转发时,使用最优匹配查找,查找的效率较低。使用 MPLS 转发只需要根据标签转发,可以有效提升转发性能。

mpls的基本原理是基于某些原则划分fec,为fec分配标签,这些等价转发类可以是路由,可以是接口,也可以是下一跳等等。分配了标签之后,报文在网络上通过标签快速转发。另一方面,标签转发形成了天然的隧道。

MPLS形成的标签位于二层和三层之间,Mpls形成的标签格式如图所示:

Label:标签值,20bit,是标签转发表的关键索引

Exp:用于QoS3bit,作用类似于Ethernet802.1p

S :栈底标志,1bit,当有多层标签嵌套时,表示最内层标签

TTL :存活时间,8bit,和IPTTL功能类似,每经过一次标签转发,TTL减一

MPLS标签是可以嵌套的。理论上可以无穷嵌套,在实际应用中可能会形成4层标签嵌套。

随着专门的芯片处理器诞生,路由转发也能够达到线速,MPLS的快速转发功能随之失去了光泽,但是MPLS协议并没有退出网络的舞台,mpls所形成的隧道却被发扬光大,多个标签嵌套的功能为L2×××L3×××提供的一种很好的解决方案。而且转发的高可靠性满足了运营商环境的高可靠性的需求。因而得到了广泛的应用。

        mpls有几种基本标签分发协议,分别是ldp协议,bgp协议,rsvp协议。rsvp协议非常复杂,支持隧道备份,支持te frr,支持mpls tp双向隧道,支持1:1 保护和1+1保护。在某些特殊的场景中,还会形成ldp over te的情况。

mpls 自身提供了一系列的故障诊断机制,包括lsp pingtracert lsppw pingmpls oamdmlm检测。

mpls有完整的qos方案,内容主要涉及dscpexp的相互映射,mpls ttlip ttl的值相互传递方案。

mpls的应用很广泛,主要是l2***l3***l2***有多种类型,vpwsvpls,本地ccc,远程cccsvcvll inter workingpbbspbevi属于l2***范畴,但是公网并不使用mpls隧道。l3***有很多类型的组网,包括A类跨域,B类跨域,C类跨域,CtoC,分层,嵌套,CE双归属。

mpls协议做到了协议和转发分开。这体现在两个方面,一方面协议报文处理结果形成转发信息库,由转发信息库来指导报文报文转发。另一方面,对于转发性能要求较高的环境,往往会使用专门的网络处理器芯片转发报文,而协议报文都是在通用CPU上处理的,这也导致了协议和转发分开。

MPLS转发网络中存在两种不同的角色:

LSR:标签交换路由器,具有标签交换和标签转发能力的路由器,根据报文携带的标签转发报文。

LER:标签边缘路由器,位于MPLS网络的边缘。负责将进入MPLS网络的报文根据FEC映射到LSP上,将离开MPLS网络的报文去掉标签还原成普通的三层报文。

MPLS基本的转发流程:

INGRESS LER接收IP报文,根据IP报文信息对应的等价转发类,映射到某条LSP上,为IP报文打上特定的标签并转发到LSP的出接口。

LSR上接收带标签的报文,根据标签查找标签转发表,交换标签并转发到LSP的出接口。

EGRESS LER接收带标签的报文,将标签剥除,然后根据IP层携带的DIP查找路由信息表转发到学习到路由的接口。

性能较好的交换机和路由器,转发通过网络处理器芯片实现,网络处理器的流程和软件流程并不一致,表项也不一致,需要LSP表项转换成芯片能够识别的表项,下发相应的处理器硬件表项,根据转发要求和标签栈不同,需要下发不同硬件表项组合来实现平台的功能组合。这是驱动的主要工作。