セッション記述プロトコル
SDPとは、SIPメッセージを記載する記述ルールのこと。
SDPとは、IP電話(VoIP)の呼制御プロトコル(SIP)や、WebRTCなどのP2P通信で、データのストリーミング形式をすり合わせるためのプロトコル。
WebRTCやP2Pの仕組みを理解するために、SDPの仕様は理解していおきたい。
Session Description Protocol(SDP)は、ストリーミングメディアの初期化パラメータを記述する形式の一つである。
これは、RFC 4566としてIETFによって発行された。SDPは、セッションの告知やセッションへの招待、他のマルチメディアセッションを開始するために必要な情報を記述することを目的としている。
SDPは、Session Announcement Protocol(SAP)の一つのコンポーネントとして始まったが、 ちょうどマルチキャストセッションを記述するスタンドアローンの形式として、RTPやSIPに関連した他の用途が見つけられた。
SDPに関連する用語に以下の5つがあげられる。
- カンファレンス: カンファレンスとは、なんらかのソフトウェアでコミュニケーションを取り合っている二人以上のユーザの組を表す。
- セッション: セッションとは、マルチメディアの送受信者とその間を流れているストリーミングデータのまとまりを指す。
- セッションの告知: セッションの告知とは、セッションの説明をあらかじめユーザーに伝えるためのメカニズムである。
- セッションの宣伝: セッションの告知と同様である。
- セッションの説明: マルチメディアセッションを発見して参加するための、十分な情報を伝えるために定義された形式。
1. WebRTCにおけるSDP
WebRTCでは、SDP(Session Description Protocol) をやりとりすることで通信要件のすり合わせを行います。
WebRTCは「ブラウザさえあればどんなデバイス間でも通信が可能」なのが特徴ですが、その分対応しなければいけないデバイスの数は非常に多くなりますから、デバイス間の差異を吸収し、最適な通話設定をするために、このSDPのやりとりは必須です。例えば、片方のデバイスがVP8とH264という映像コーデックに対応していて、もう片方がH264しか対応していないとします。
この場合、映像はお互いにH264でやり取りする必要がありますよね。1.1 SDPの内容
SDPの内容は、大きく二つの情報が格納されます。
1. 使用可能なメディアの情報(メディア記述部)
2. 通信の情報など(セッション記述部)
これらの情報をSDPという形式でまとめ、通信要件をお互いにやりとりし合うことで、双方が利用可能な設定を選ぶことができます。
SDPは、以下のような hoge=fuga という行の塊で表現されます。
この行を羅列することで、自身が利用可能な音声・映像コーデックや設定を表現するということですね。