资源预留协议
资源预留协议(Resource Reservation Protocol,简称RSVP)是一个通过网络进行资源预留的协议,是为实现综合业务网而设计的,其具体定义于RFC 2205。RSVP要求接收者在连接建立之初进行资源预留,它必须支持单播和多播数据流,并具有很好的可伸缩性和强壮性。主机或者路由器可以使用RSVP满足不同应用程序数据流所需的不同的服务质量(QoS)。RSVP定义应用程序如何进行资源预留并在预留的资源不用时如何进行预留资源的删除。RSVP将会使得路径上每个节点都进行资源预留。
RSVP本身不是一个路由协议,而是被设计用于互联现在的和将来的路由协议。
主要特征
- RSVP为每个流请求资源:这是只有一个发送者但可以有一个或多个接收者的流。
- RSVP不是一个路由协议,而是用于互联现在的和将来的路由协议。
- RSVP是由数据流的接收者发起并维护资源预留。
- RSVP维护主机和路由器的软体状态(每个节点上的资源预留都需要周期性的更新),因此支持源自适应网络变化。
- RSVP提供多种预留类型(一组预留选项)并允许将来加入其他类型,进行协议改进,以支持不同的应用程序。
- RSVP传输并维持通信和策略控制参数,这些对于RSVP都是不透明的。
流量说明(flowspec)
RSVP为一个流预留资源。一个流是被目的地址、协议号和目的端口号(可选)确定的。在多协议标签交换中,一个流是被定义为一个标签交换路径(LSP)。对于每个流,虽然RSVP不能理解流服务质量的具体信息,但是RSVP也确认其特别要求的服务质量。flowspec是一个固有的RSVP对象,它定义了业务流所希望的服务质量。RSVP通过路径从应用程序到主机和路由器传输flowspec。然后由系统分析flowspec,从而接受和预留资源。
一个flowspec是由如下组成的:
- 服务类
- 预留说明——定义服务质量
- 传输说明——描述数据流
过滤器说明(filterspec)
过滤器说明(filterspec)定义了一组被flowspec影响的分组。(比如:接受了flowspec确定的服务质量的数据分组)。一个filterspec挑选节点中处理的所有的分组中的一部分。挑选是根据分组的属性进行的。(比如发送者的IP地址和端口)
现在定义的RSVP预留类型有:
- 固定过滤器(Fixed Filter)类型:对特定的流预留资源
- 直接共享(Shared explicit) :对不同的流预留资源,并共享资源
- 通配过滤器(Wildcard Filter)类型:对于没有特别定义的常规类型的流预留资源,所有的流共享资源
一个RSVP请求是由一个流量说明(flowspec)、一个过滤器说明(filterspec)和一对流描述字(flowdescriptor)组成的。节点上每个说明的功能就是当流量说明(flowspec)设置每个节点分组任务调度的参数时,过滤器说明(filterspec)设置每个分组分类的参数。
消息
有两种主要的消息:
路径消息
路径消息被沿着数据路径从发送方主机发送,并记录路径上每个节点的的路径状态。
路径状态包括先前节点的IP地址和一些数据对象:
- sender template(发送方模板)是用于描述发送方数据格式
- sender tspec(数据流的话务描述特征)是用于描述数据流传输特征
- adspec携带广告数据
预留消息
预留消息(resv)是由接收方沿着反向路径发送到发送方。在每个节点上,预留消息的IP目的地址将会改成反向路径上下一节点的地址,同时IP源地址将会改成反向路径上前一节点的地址。预留消息包括流量说明(flowspec)数据对象,这个数据对象上用于确定流需要的资源。
RSVP消息的数据对象可以被按任何顺序进行传输。RSVP消息和其数据对象的所有列表可以在RFC 2205中看到.
操作过程
一个需要按特定服务质量发送数据流的RSVP主机将会传输一个RSVP路径消息,这个路径消息将会沿单播(UniCast)或组播(multicast)路由通过路由协议预先建立的路径传输。如果路径消息到达一个不理解RSVP的路由器,将会将这个消息转发并不对其内容进行分析而且不会为这个流进行资源预留。
当目的路由器接收到路径消息,它将会:
- 按照请求的参数进行资源预留。对此,许可控制和策略控制处理请求参数并通知分组分类以便正确处理选定的数据分组,或者和上层协商如何进行分组处理。
- 向上游转发请求(朝着发送方方向)。在每个节点上,预留消息的流量说明(flowspec)可以由前向节点更改。(例如:在多播流资源预留时,预留请求就可以被合并)
路径上的每个节点都可以接收或者拒绝请求。