转载:http://hi.baidu.com/chgel/blog/item/c24ea82707f4490b918f9def.html
MPLS 基本概念

1、转发等价类
FEC
MPLS 作为一种分类转发技术,将具有相同转发处理方式的分组归为一类,称为FEC(Forwarding Equivalence Class,转发等价类)。相同FEC 的分组在MPLS 网络中将获得完全相同的处理。FEC 的划分方式非常灵活,可以是以源地址、目的地址、源端口、目的端口、协议类型或××× 等为划分依据的任意组合。在传统的采用最长匹配算法的IP 转发中,到同一个目的地址的所有报文就是一个FEC,但是FEC 是不能汇聚的。
通常一条路由对应一个FEC。

2. 标签 (label)
标签是一个长度固定、只具有本地意义的标识符,用于唯一标识一个分组所属的FEC。在某些情况下,例如要进行负载分担,对应一个FEC 可能会有多个标签,但是一个标签只能代表一个FEC。标签由报文的头部所携带,不包含拓扑信息,只具有局部意义。标签的长度为4 个字节(32bits),封装结构如图所示。
标签共有4 个域:
Label:标签值字段,长度为20bits,用于转发的指针;
Exp:3bits,用于QoS;
S:1bit,用于标识该标签是否是栈底标签,值为1 时表明为最底层标签。主要应用于MPLS 标签的多重嵌套;
TTL:8bits,和IP 分组中的TTL(Time To Live,生存时间)意义相同。

标签与ATM 的VPI/VCI 以及Frame Relay 的DLCI 类似,是一种连接标识符。如果链路层协议具有标签域,如ATM 的VPI/VCI 或Frame Relay 的DLCI,则标签封装在这些域中(Cell Mode);如果不支持,则标签封装在链路层和IP 层之间的一个垫层中(Frame Mode)。这样,标签能够被任意的链路层所支持。

3. 标签交换路由器 LSR
LSR(Label Switching Router,标签交换路由器)是MPLS 网络中的基本元素.

4. 标签交换路径 LSP
一个转发等价类(FEC)在MPLS网络中经过的路径称为LSP(Label Switched Path,标签交换路径)。LSP 在功能上与ATM 和帧中继(Frame Relay)的虚电路相同,是从MPLS 网络的入口到出口的一个单向路径。LSP 中的每个节点由LSR 组成。
对于一条FEC来说,沿途所有的设备都必须具有相同的路由(前缀和掩码必须完全相同)才可以建成一条LSP。也就是说在MPLS域不能实施路由汇聚。

5. 标签分发协议 LDP
LDP(Label Distribution Protocol,标签分发协议)是MPLS 的控制协议,它相当于传统网络中的信令协议,负责FEC 的分类、标签的分配以及LSP 的建立和维护等一系列操作。LPD有消息报分,有邻居的维护、发现机制,也有一套算法。

标签的分发方式:

DOD模式 :downstream on demand 下游按需方式
DU模式:downstream unsolicited 下游自主方式

标签的控制方式

有序方式(Odered):除非LSR是路由的始发节点,否则LSR必须等收到下一跳的标记映射才能向上游发出标记映射。
独立方式(Independent):LSR可以向上游发出标记映射,而不必等待来自LSR下一跳的标记映射消息。

标签的保留方式:

保守方式(Conservative retention mode):只保留来自下一跳邻居的标签,丢弃所有非下一跳邻居发来的标签。
自由方式(Liberal retention mode):保留来自邻居的所有发送来的标签

一般采用: DU+有序+自由

6、LSR
Label Switching Router,LSR是MPLS的网络的核心交换机,它提供标签交换和标签分发功能。

7、LER
Label Switching Edge Router,在MPLS的网络边缘,进入到MPLS网络的流量由LER分为不同的FEC,并为这些FEC请求相应的标签。它提供流量分类和标签的映射、标签的移除功能。分为Ingress 和egress。

8、倒数第二跳弹出(PHP /Penultimate Hop Popping)
Egress LSR本应变MPLS转发为IP路由查找,但是他收到的仍旧是含有标签的MPLS报文,按照常规,这个报文应该送交MPLS模块处理,而此时MPLS模块不需要标签转发,能做的只是去掉标签,然后送交IP层。其实对于Egress LSR,处理MPLS报文是没有意义的。最好能够保证他直接收到的就是IP报文。这就需要在ELSR的上游(倒数第二跳)就把标签给弹出来。但关键问题是:上游设备如何知道自己是倒数第二跳呢?其实很简单,在倒数第一跳为其分配标签时做一下特殊说明即可(分配一个特殊的标签3)。