RSVP (Resource Reservation Protocol) について
Resource Reservation Protocol(リソース予約プロトコル、略称: RSVP)は、IPネットワーク上で通信品質 (QoS) を保証するためのプロトコルです。具体的には、データ送信前にネットワーク上のリソース(帯域など)を予約することで、安定した通信を実現します。
RSVPの概要
RSVPは、IPやUDPの上位プロトコルとして動作し、通信を行う2つのコンピュータ間で、
CPU、
バッファ、帯域などのリソースを確保します。これにより、QoS(
Quality of Service:通信品質)を保証します。特に、IntServ(Integrated Services:統合サービス)と呼ばれるQoS保証方式で主に利用されます。
データ通信を開始する際、RSVPでは送受信を行うコンピュータ間で制御メッセージをやり取りします。このメッセージによって、通信経路上の
ルーターやスイッチが伝送帯域を確保します。テレビ会議やリアルタイム動画配信など、即時性と連続性が求められるアプリケーションでは、一定量のデータ伝送速度が継続的に必要となるため、RSVPはこのようなシステムのために開発されました。
RSVPという略称は、手紙の末尾に書く「RSVP」(Répondez s'il vous plaît:
フランス語で「ご返信お願いします」)に由来しています。
RSVPの問題点と代替プロトコルの開発
RSVPにはいくつかの問題点があり、それらを解決するための代替プロトコルが提案されてきました。しかし、IETFで標準化されたものはなく、RSVP以上に広く利用されているプロトコルは存在しません。
RSVPの主な問題点は以下の通りです。
受信者が常に最初のメッセージを送信する必要がある
メッセージの伝達に時間がかかる
階層的なネットワーク(DiffServなど)との組み合わせが難しい
これらの問題点を解決するために提案された主なプロトコルは以下の通りです。
ST-II (The Internet Stream Protocol, version 2): RSVPに先立って開発されたプロトコル。RSVPとは異なり、送信者が最初のメッセージを送信します(sender-initiated)。
YESSIR (YEt another Sender Session Internet Reservations): ST-IIと同様に、送信者が最初のメッセージを送るプロトコル。RTCP (Real-time Transport Control Protocol) の拡張として実装されています。
Boomerang: ICMP (
Internet Control Message Protocol) と組み合わせて使用されます。
IETFのNSIS (Next-Step In Signaling) ワーキンググループでは、RSVPの問題点を踏まえ、以下のようなプロトコルを標準化しています。
QoS-NSLP: NSISにおけるシグナリングプロトコルであるNSLP (NSIS Signaling Layer Protocol) の一部として提案されたプロトコルです。RSVPの問題点を解決するために、受信者ではなく送信者が最初のメッセージを送ることができ、メッセージの伝達も高速化されています。また、DiffServなどの階層的なネットワークにも対応しやすいように設計されています。QoS-NSLPでは、QoS仕様記述部分をQSPEC(QoS仕様)テンプレートとして分離しており、様々なQoS保証に対応可能です。
まとめ
RSVPは、IPネットワーク上で通信品質を保証するための重要なプロトコルです。特に、リアルタイム性が求められるアプリケーションでは不可欠な技術と言えるでしょう。しかし、いくつかの問題点も抱えているため、代替プロトコルの開発が進められています。今後のネットワーク技術の発展とともに、RSVPを補完・代替する新しいプロトコルが登場する可能性もあります。
参考資料
RFC 2205 - Resource ReSerVation Protocol (RSVP), IETF
RFC 2210 - The Use of RSVP with IETF Integrated Services, IETF
RFC 2211 - Specification of the Controlled-Load Network Element Service, IETF
RFC 2212 - Specification of Guaranteed Quality of Service, IETF
関連項目
Quality of Service (QoS)
IntServ(イントサーブ)
DiffServ(ディフサーブ)