RSVP报文格式

RSVP(Resource Reservation Protocol),资源预留协议,工作在传输层,但不参与应用数据的传送,是一种网络上的控制协议,类似于ICMP。

报文格式

RSVP各类消息都包含一个通用头部,随后是多个可变长度、类型的消息对象。

图1 RSVP消息格式
字段 长度 描述
Vers 4比特 RSVP版本号,当前版本为1。
Flags 4比特 标识位,一般值为0。RFC2961扩展其用来标识是否支持摘要刷新(Srefresh)。如果支持Srefresh,则Flags置为0x01。
Message Type 8比特 表示消息的类别,下面列出一些类别:
  • 1-Path
  • 2-Resv
  • 3-PathErr
  • 4-ResvErr
  • 5-PathTear
  • 6-ResvTear
  • 7-ResvConf
  • 8-DREQ
  • 9-DREP
  • 10-ResvTearConfirm
  • 11-Unassigned
  • 12-Bundle
  • 13-ACK
  • 14-Reserved
  • 15-Srefresh
  • 20-Hello
  • 21-Notify Message
  • 25-Integrity Challenge
  • 26-Integrity Response
  • 66-DSBM_willing
  • 67-I_AM_DSBM
RSVP Checksum 16比特 表示RSVP的校验和,值为消息的补码的反码。如果值为0,表示消息传输过程中不进行检验和检查。
Send TTL 8比特 IPv4的TTL的值,随报文一起发送。当节点接收到RSVP消息时,通过比较Send_TTL和IP首部的TTL值可以计算出该报文在非RSVP域中经过的跳数。
Reserved 8比特 保留。
RSVP Length 16比特 报文总长度,包括公共头及后面的TLV objects,以字节为单位。
Object 变长 消息对象。每个RSVP消息都包含多个对象。不同类型的消息,包含的对象不同。
图2 消息对象格式
字段 长度 描述
Length 16比特 示对象的总长度,以字节为单位。Length必须是4的倍数,最小值为4。
Class Num 8比特 对象的类别:
  • 0:NULL,它的长度至少为4,但是可以是任意4的倍数。NULL对象可以出现在对象序列中的任意位置,它的内容会被接收者忽略掉。
  • 1:SESSION,RSVP会话相关信息,包括:Destination Address、Tunnel ID、Extend Tunnel ID。
  • 2:unassigned
  • 3:RSVP_HOP,发送Path消息的上一跳的出接口地址和接口句柄。
  • 4:INTEGRITY,携带了验证源节点的加密数据,它用于验证这个RSVP消息的内容。
  • 5:TIME_VALUES,包含了消息创建者使用的刷新周期,在每个Path消息和Resv消息中必须存在。
  • 6:ERROR_SPEC,指定了在PathErr、ResvErr消息中的Error,或者在ResvConf消息中的确认。
    • Error Code = 00: 确认
    • Error Code = 01: 准入控制失败
    • Error Code = 02: 策略控制失败
    • Error Code = 03: Resv消息没有路径信息。
    • Error Code = 04: Resv消息没有发送者信息
    • Error Code = 05: 冲突的预留风格
    • Error Code = 06: 不可识别的预留风格
    • Error Code = 07: 冲突的目的端口
    • Error Code = 08:冲突的发送者端口
    • Error Code = 09, 10, 11: (保留)
    • Error Code = 12:服务抢占
    • Error Code = 13: 不可识别的对象Class
    • Error Code = 14: 不可识别的对象C-Type
    • Error Code = 15-19: (保留)
    • Error Code = 20: 为API保留
    • Error Code = 21: 流量控制错误

      Sub-code = 01:服务冲突

      Sub-code = 02:不支持的服务

      Sub-code = 03:不正确的流规范值

      Sub-code = 04:不正确的Tspec值

      Sub-code = 05:不正确的Adspec值

    • Error Code = 22: 流量控制系统错误
    • Error Code = 23: RSVP系统错误
    • Error Code = 24: 路由错误

      Sub-code = 01: 错误的ERO

      Sub-code = 02: 错误的严格显式路径节点

      Sub-code = 03: 错误的松散显式路径节点

      Sub-code = 04: 错误的初始子对象

      Sub-code = 05: 没有到目的地址的可用路由

      Sub-code = 06: 不可接受的标签值

      Sub-code = 07: RRO包含了路由环路

      Sub-code = 08: MPLS正在协商,但是路径上存在不支持MPLS的路由器。

      Sub-code = 09: MPLS标签分配错误

      Sub-code = 10: 不支持的L3PID

    • Error Code = 25: 错误通告

      Sub-code = 01: 超过MTU值的RRO

      Sub-code = 02: RRO通告

      Sub-code = 03: 隧道本地修复

  • 7:SCOPE,携带了一个朝向信息转发方向的发送者主机的显式列表。可能出现在Resv、ResvErr或者ResvTear消息中。
  • 8:STYLE,定义了预留风格和在FLOWSPEC或者FILTER_SPEC对象中没有提及的指定风格的信息。在每个Resv消息中必须存在。
  • 9:FLOWSPEC,指明了数据流的QoS特征,存在于Resv消息中。
  • 10:FILTER_SPEC,发送节点的IP地址和LSP ID,存在于Resv消息中。
  • 11:SENDER_TEMPLATE,指定了发送节点的IP地址和LSP ID,存在于Path消息中。(将会成为Resv消息中的FILTERSPEC对象的内容。)
  • 12:SENDER_TSPEC,指明了数据流的流量特征。存在于Path消息中。(将会成为Resv消息中的FLOWSPEC对象的内容。)
  • 13:ADSPEC,用于收集路径上的实际QoS相关参数,例如,路径带宽估计、最小路径时延、Path MTU。存在于Path消息中。
  • 14:POLICY_DATA,携带了允许一个本地策略模块来决定一个相关的预留是否是可管理的许可的信息。可能出现在Path、Resv、PathErr或者ResvErr消息中。
  • 15:RESV_CONFIRM,预留确认请求,携带了请求预留确认的节点的IP地址。
  • 16: RSVP_LABEL

    表示分配的标签。

  • 19: LABEL_REQUEST

    标识LABEL_REQUEST对象,只在Path消息中携带。

  • 20: EXPLICIT_ROUTE

    ERO(Explicit Route Object)描述LSP经过的路径信息,可以为严格显式路径也可以是松散显式路径。Path消息沿ERO指定的路径转发,不受IGP最短路径约束。

    ERO包含了包含了C-Type=1的子对象:

    1 IPv4前缀

    2 IPv6前缀

    32 AS号

  • 21: ROUTE_RECORD

    RRO(Record Route Object)记录了Path消息实际途经的LSR的列表。RRO可用于收集实际的路径信息,发现路由环路,还可以被复制到下一条Path消息中以实现路由锁定。

    RRO包含了C-Type=1的子对象:

    1 IPv4地址

    2 IPv6地址

    3 标签

  • 22: HELLO

    C_Type = 1: HELLO REQUEST对象

    C_Type = 2 : HELLO ACK对象

  • 207: SESSION_ATTRIBUTE

    指定了建立优先级、保持优先级、预留风格、亲和属性等属性。

C-Type 8比特 对象类型,表示同一类对象中不同的类型。Class_Number与C-Type唯一标识了一个对象。
Object Content 变长 对象内容,可变长度。

报文示例

图3 RSVP Hello消息
图4 RSVP Path消息
图5 RSVP Path Tear消息
图6 RSVP Resv消息
图7 RSVP Resv-Tear消息

参考标准

标准 描述
RFC 2205 Resource ReSerVation Protocol
RFC 2209 Resource ReSerVation Protocol (RSVP) -- Version 1 Message Processing Rules
RFC 3209 RSVP-TE: Extensions to RSVP for LSP Tunnels

本资料收集于互联网
2016 ©