在学习MPLS之前,应该知道MPLS有两种工作模式。
1, 帧模式-->在第三层分组头(如IP分组头)前加入标签进行转发。
2, 信元模式.--->在ATM LSR组成的MPLS网络中,在控制平面使用MPLS交换VPI/VCI的信息,而不是采用ATM信令进行转发.
1,转发等价类。FEC
如果入口路由器收到分组都到达同一子网的,则这些分组就属于同一类。这是依据FIB中的最长匹配查找决定的。例如,假设在FIB表中有一项目的地址为1.1.1.0/24,下一跳是2.2.2.2.如果我收到了两个IP地址分别是1.1.1.1和1.1.1.2的分组,这两个分组都会转发给同样的下一条,2.2.2.2,那么这个时候这两个报文就属于同一个FEC.
这里可以看到,对于到6.1.1.0/24网段,不管后面的主机位,所分发的标签,20,都是一样的,实际上是由下游路由器对本端的outgoing label分发的20,都是一样的。所以6.1.1.0就是一个等价转发类。
这个和IP层面的路由表是一样的。
对于IP层面,到相同的目的,走一样的路由。
对于MPLS层面,到相同的目的,分发相同的标签,那就是一样的走相同的路径。
2,标签交换.
标签交换有三个过程:
■根据入标签进行查找
■找到分组的出接口和出标签.
■进行标签交换,然后再出接口发送分组.
MPLS体系结构被分为两个独立的单元:控制平面和转发转发,如下图所示:
这里先来说一下控制平面。
■IGP--和在只有IP的网络中的用途相同。如果mpls网络使用了流量工程,IGP会作为链路状态协议,可以是OSPF或者是IS-IS.
■标签分配协议. 有三种协议可以分配标签。
cisco TDP (private protocol)
LDP (standard protocol regarding the RFC)
RSVP 资源预留协议,专门为TE 工作的。
关于转发,传统的IP与MPLS网络转发有什么不同呢?
■IP转发是基于目的的IP地址和FIB的。
■MPLS转发是基于MPLS标签和标签转发信息库(LFIB)的。
■MPLS转发和IP转发都是逐跳转发的,IP转发在每一跳都对分组进行识别分类,而MPLS转发只在入口路由器进行分类,类分号了,就通过FEC进行转发.
PS:如果不使用流量工程TE,那么所有的IGP路由协议都可以使用。但是为了将来的扩展使用,最好使用OSPF或者ISIS来作为IGP,因为MPLS TE只能支持这两种IGP类型。具体原因以后再做详解.
假如说流量是从PE-1 R2到R6的环回10.1.1.2.
那么这个时候控制平面和转发平面的方向是完全相反的。
在R2上面show mpls forwarding-table,从R3到本地分发的标签是18,从R5到R3分发的标签是16, R6没有向R5分发标签,因为R5转发数据报文的时候利用次末节点弹出机制,将标签弹出了,这样R6负责的就是纯IP转发了。
在R2上面:
在R3上面:
在R5上面:
所以这里可以看出,转发层面是从左到右,控制层面的标签分发是从右到左的.
在MPLS转发表中,分为ilm和ftn.
分别是MPLS to MPLS和MPLS to IP.
标签发布的时候,实际发布的内容是标签,IP前缀和掩码长度,这个过程称为标签发布。
下面就来说明一下,标签,是如何发布的。
0-15是保留的标签。
0-IPv4显式空标签。
1-路由器警告标签。
2-IPv6显式空标签
3-隐式空标签。
合法的标签范围是从16开始到2的20次方-1.
即16--1048575.都是合法的标签。
local 的标签是我发给上游路由器的标签。而,outgoing label的标签是下游路由器发给我的标签。
所以转发平面如果是从左到右的话,那么控制平面的标签分发就是反的,是从右往左来进行标签的分发的。
下面有一个例子,
这里如果在R3上面查看mpls 的转发表到10.1.1.2的话。
这里可以看到。outgoing是16,那么实际上是R5的local应该是16,是R5发给R3的16.
对于R3上面的18,local,应该是R2的出标签。
也就是说。R5上面的local是16,R2上面对应10.1.1.2的出标签应该是18.
R3:
对了,R5的local是16,分发给R3.
在R2上面:
R2上面的出outgoing是18.这样就符合标签分发的原理了。