Datagram Congestion Control Protocol

DCCP(Datagram Congestion Control Protocol:データグラム輻輳制御プロトコル)は、メッセージ指向のトランスポートプロトコルであり、ネットワークにおける輻輳制御を担う重要な役割を果たします。このプロトコルは、信頼性のあるコネクションの確立と切断、ECN(明示的輻輳通知)のサポート、さらに輻輳制御メカニズムと特徴的なネゴシエーションを実装しています。2006年3月にIETFによってRFC 4340として提案され、標準化されました。Linux環境においては、Linuxカーネル2.6.14で最初の実装が導入されて以来、継続的に開発が進められています。

DCCPは、TCP(Transmission Control Protocol)のようなフローベースの考え方を採用していますが、重要な違いとして、データの信頼性や正しい順序での配信を保証しません。また、SCTP(Stream Control Transmission Protocol)のように複数のストリームを通じて順序保証された配信も提供しません。この特性から、DCCPは、タイミングの制約が厳しく、データの信頼性や順序保証がそれほど重要でないアプリケーションに適しています。例えば、リアルタイム性の高いマルチメディア通信や、一定のデータロスが許容されるアプリケーションなどが該当します。従来の環境では、これらのアプリケーションはTCPを使用して信頼性を確保するか、UDPを使用して独自の輻輳制御を実装する必要がありましたが、DCCPはその中間的な選択肢を提供します。

DCCP接続は、データトラフィックに加えて、ACK(acknowledgement)トラフィックを伴います。ACKは、送信されたデータパケットが受信者に正常に届いたかどうか、またパケットがECNでマークされていたかどうかを送信者に通知します。ACKの転送は、輻輳制御メカニズムが要求する信頼性レベル(完全な信頼性も含む)で行われます。これにより、ネットワークの混雑状況に応じてデータ送信の速度を適切に調整することが可能になります。

また、DCCPはオプションとして、TCPのようにバイトIDではなく、パケットIDに対応する48ビットの長いシーケンス番号を使用することができます。この長いシーケンス番号は、コネクションへのDCCP-Resetの挿入など、特定の種類の攻撃から保護することを意図しています。

実装状況について、2008年6月現在、少なくとも2つのDCCP実装が活発に保守開発されています。LinuxカーネルにおけるDCCPの実装は、カーネル2.6.14で最初にコミットされました。この実装に関する情報は、Net:DCCP - The Linux Foundationにて公開されています。また、ポータブルなDCCP実装として、dccp-tpが存在します。

DCCPは、その特性から特定の種類のアプリケーションに適しており、ネットワークプロトコルの選択肢を広げる上で重要な役割を担っています。DCCPは、TCPとUDPの中間的な位置づけとして、リアルタイム性の高いアプリケーションや、柔軟な輻輳制御が求められるシナリオでその真価を発揮します。

関連情報

トランスポートプロトコルの比較
Datagram Transport Layer Security (DTLS)

外部リンク

RFC 4340 - Datagram Congestion Control Protocol
RFC 4341 - Profile for Datagram Congestion Control Protocol (DCCP) Congestion Control ID 2: TCP-like Congestion Control
RFC 4342 - Profile for Datagram Congestion Control Protocol (DCCP) Congestion Control ID 3: TCP-Friendly Rate Control (TFRC)
DCCP page from one of DCCP authors
* DCCP support in Linux

もう一度検索

【記事の利用について】

タイトルと記事文章は、記事のあるページにリンクを張っていただければ、無料で利用できます。
※画像は、利用できませんのでご注意ください。

【リンクついて】

リンクフリーです。