Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?

 
 

MPLS 和 RSVP 概述

MPLS 提供了一种独立于路由表来设计网络流量模式的机制。MPLS 为网络数据包分配短标签,描述如何通过网络转发这些数据包。MPLS 独立于任何路由协议,可用于单播数据包。

在传统的第 3 级转发范式中,当数据包从一个路由器传输到下一个路由器时,会在每个跃点做出独立的转发决策。将分析 IP 网络层标头,并根据此分析和路由表中的信息选择下一跃点。在 MPLS 环境中,数据包标头分析仅在数据包进入 MPLS 云时执行一次。然后将数据包分配给流,该流由 标签标识,标签是数据包前面的短(20 位)固定长度值。标签用作标签转发表的查找索引。对于每个标签,此表存储转发信息。您可以将其他信息与标签相关联,例如服务等级 (CoS) 值,该标签可用于确定数据包转发的优先级。

沿 LSP 传输的数据包由标签标识,标签是 0 到 1,048,575 范围内的 20 位无符号整数。对于入口路由器上的推送标签,此范围内的任何标签均不受限制。对于传输静态 LSP 上的传入标签,标签值限制为 1,000,000 到 1,048,575。

在 MX 系列、PTX 系列和 T 系列路由器上,熵和流标签的值限制为 16 到 1,048,575。

在 Junos OS 中,标签值按路由器分配。显示输出仅显示标签(例如 01024)。组播数据包的标签与单播数据包的标签无关。目前,Junos OS 不支持组播标签。

标签由下游路由器相对于数据包流分配。接收标记数据包的路由器(下一跃点路由器)负责分配传入标签。如果收到的数据包包含无法识别(未分配)的标签,则会被丢弃。对于无法识别的标签,路由器不会尝试解开标签包装以分析网络层标头,也不会生成互联网控制消息协议 (ICMP) 目标无法访问消息。

一个数据包可以携带许多标签,这些标签组织为后进先出的堆栈。这称为 标签堆栈。在特定路由器上,有关如何转发标记数据包的决定完全基于堆栈顶部的标签。

图 1 显示了单个标签的编码。编码显示在数据链路层标头之后,但显示在任何网络层标头之前。

图1:标签编码 Label Encoding

图 2 说明了服务等级位(也称为 EXP 或实验位)的用途。位 20 和 21 指定队列号。位 22 是数据包丢失优先级 (PLP) 位,用于指定随机早期检测 (RED) 丢弃配置文件。

图 2:服务等级位 Class-of-Service Bits

回复概述

RSVP 是网络主机和路由器都使用的资源预留设置协议。主机使用 RSVP 从网络请求特定应用程序流的特定 服务等级 (CoS)。路由器使用 RSVP 将 CoS 请求传递到数据路径上的所有路由器。RSVP 还可以维护和刷新所请求的 CoS 应用程序流的状态。

RSVP 将应用程序流视为单工连接。也就是说,CoS 请求仅沿一个方向传输 — 从发送方到接收方。RSVP 是一种使用 IP 作为其网络层的传输层协议。但是,RSVP 不会传输应用程序流。相反,它更像是一种互联网控制协议,类似于互联网控制消息协议(ICMP)和互联网组管理协议(IGMP)。RSVP 在 Junos OS 中作为单独的软件进程运行,不在数据包转发路径中。

RSVP 不是路由协议,而是设计用于与当前和未来的单播和组播路由协议配合使用。路由协议负责选择要用于转发数据包的路由,RSVP 查询本地路由表以获取路由。RSVP 仅确保沿数据路径传输的数据包的 CoS。

应用程序流中的接收方从发送方请求首选 CoS。为此,接收方代表本地应用程序发出 RSVP CoS 请求。请求以与数据路径相反的方向传播到所有路由器,朝向发送方。在此过程中,RSVP 请求可能会被合并,从而在有大量接收方时生成一个可以很好地扩展的协议。

由于应用程序流中的接收方数量可能会发生变化,并且传递路径流可能会在应用程序流的生命周期内发生变化,因此 RSVP 在其设计中采用软状态方法,随着时间的推移逐步创建和删除路由器和主机中的协议状态。RSVP 会定期发送刷新消息以保持其状态并从偶尔丢失的消息中恢复。如果没有刷新消息,RSVP 状态会自动超时并被删除。