MPLS
MPLS (Multi-Protocol Label Switching、多协议标签交换) 是一种在 IP 骨干网上利用标签来指导数据报文高速转发的协议
IP 路由与 MPLS 转发对比:
– 将查找庞大的 IP 路由表转化为简洁的标签交换,显著减少指导报文转发的时间
– 当报文进入 MPLS 区域之后,只需在位于边缘的入、出节点解析 IP 报文头,封装或解封装标签,而在中间的所有节点上都无需解析 IP 报文头,只进行标签交换,进一步节约了转发报文的处理时间
FEC
MPLS 是一种分类转发技术,它将具有相同转发处理方式的数据分组归为一类,称为 FEC (Forwarding Equivalence Class,转发等价类)。MPLS 对相同 FEC 的数据分组采取完全相同的处理方式
FEC 的划分方式非常灵活,可以是源地址、目的地址、源端口、目的端口、协议种类、业务类型等要素的任意组合。例如,在采用最长匹配算法的IP路由转发中,去往同一个目的地址的所有报文就是一个 FEC
MPLS 标签
- Label : 标签值字段,标识一个 FEC
- EXP : 用于扩展,通常用做 CoS (Class of Service)
- S : 栈底标识。MPLS 支持多层标签,值为 1 时表示为最底层标签
- TTL : 和 IP 协议中的 TTL 意义相同,用来防止环路
Label :
- 0~15 : 特殊标签
- 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) 等动态信令协议的标签空间
标签封装位置
MPLS 标签封装在链路层和网络层之间,能够被任意的链路层协议所支持
MPLS 标签栈 (Label stack) 也称为 MPLS 多层标签。靠近二层首部的标签称为栈顶标签或外层标签;靠近 IP首部的标签称为栈底标签,或内层标签。MPLS 标签栈按后进先出 (Last In First Out) 方式组织标签,从栈顶开始处理标签
标签操作过程
- Push : 指当 IP 报文进入 MPLS 域时,MPLS 边界设备在报文二层首部和 IP 首部之间插入一个新标签;或者 MPLS 中间设备根据需要,在标签栈顶增加一个新的标签 (即标签嵌套封装)
- Swap : 当报文在 MPLS 域内转发时,根据标签转发表,用下一跳分配的标签,替换 MPLS 报文的栈顶标签
- Pop : 当报文离开 MPLS 域时,将 MPLS 报文的标签去掉;或者 MPLS 倒数第二跳的节点处去掉栈顶标签,减少标签栈中的标签数目
LSP
LSP (Label Switched Path,标签交换路径) 是指属于同一 FEC 的报文 (即封装了 MPLS 标签的报文) 在 MPLS 域内转发所经过的路径
- Ingress (入节点),一条 LSP 只能有一个 Ingress。Ingress 的主要功能是给 IP 报文压入一个新的 MPLS 标签,将其封装成 MPLS 报文
- Transit (中间节点),一条 LSP 可能有 0 个或多个 Transit。Transit 的主要功能是查找标签转发信息表,通过标签交换完成 MPLS 报文的转发
- Egress (出节点),一条 LSP 只能有一个 Egress。Egress 的主要功能是弹出标签,恢复成原来的报文进行相应的转发
在最后一跳节点,标签已经没有使用价值。这种情况下,可以利用倒数第二跳弹出特性 PHP (Penultimate Hop Popping),在倒数第二跳节点处将标签弹出,减少最后一跳的负担。最后一跳节点直接进行 IP 转发或者下一层标签转发
默认情况下,设备支持 PHP 特性,支持 PHP 的 Egress 节点分配给倒数第二跳节点的标签值为 3
静态 LSP : 管理员通过手工为各个 FEC 分配标签而建立的 LSP。手工分配标签需要遵循的原则是:上游 LSR 出方向的标签的值等于下游 LSR 入方向的标签值
动态 LSP : 各 LSR 通过标签发布协议动态的生成和发布标签而建立的 LSP,下游 LSR 向上游 LSR 发送标签时需要依赖 IP 路由。MPLS 支持多种标签发布协议,例如 : LDP (Label Distribution Protocol)、RSVP-TE (Resource Reservation Protocol Traffic Engineering) 和 MP-BGP (Multiprotocol Border Gateway Protocol)
MPLS 网络结构
在 MPLS 网络中,任何两个 LER 之间都可以建立 LSP,用来转发进入 MPLS 域的报文,中间可途径若干个 Core LSR。因此,一条 LSP 的 Ingress 和 Egress 都是 LER,而 Transit 是 Core LSR
- 支持 MPLS 功能的网络设备称为 LSR (Label Switching Router,标签交换路由器),它是 MPLS 网络的基本组成单元。由一系列连续的 LSR 构成的网络区域称为 MPLS 域
- MPLS 域内部的 LSR 称为 Core LSR,如果一个 LSR 的相邻节点都运行 MPLS,则该 LSR 就是 Core LSR
- 位于 MPLS 域边缘、连接其它网络的 LSR 称为 LER (Label Edge Router,标签边缘路由器),如果一个 LSR 有一个或多个不运行 MPLS 的相邻节点,那么该 LSR 就是 LER