SIP
音声通話や映像会議などのセッションを開始・変更・終了するためのアプリケーション層プロトコル。通信条件の記述にはSDP、メディアの転送にはRTPなどを組み合わせる。
イマシルちゃんの解説
電話では、声を届ける前に「相手を呼び出す」「出てもらう」という段取りがあるよね。
話し終わったら、通話を終える連絡も必要なんだ。
その段取りを伝える連絡係と、声を運ぶ係を分けて考えてみよう。
連絡係を通る道と、声が通る道は、いつも同じとは限らないんだよ。
この解説はわかりやすかったですか?
より深い解説
呼制御の役割
SIPはRFC 3261を基本仕様とする。通話などの成立に必要なシグナリングを扱い、メディアの内容そのものを運ぶことは主な役割ではない。UDPやTCPの上で利用でき、TLSによる保護も使える。
端末とサーバ
| 要素 | 役割 |
|---|---|
| ユーザエージェント | 要求を送ったり応答したりする端末側の機能 |
| SIPプロキシ | SIPの要求を適切な相手へ中継する |
| レジストラ | 利用者の識別先と現在の連絡先の対応を受け付ける |
ここでの中継機能はSIPの信号を扱うものであり、Web閲覧用のHTTPプロキシと同一のプロトコルではない。利用者の識別子と、端末が実際に接続している場所を分けることで、連絡先の変更に対応できる。
主な要求
| メソッド | 用途 |
|---|---|
| INVITE | セッションへの参加を求める。既存の通信条件の変更にも使う |
| ACK | INVITEへの最終応答を確認する |
| BYE | 確立済みのセッションを終了する |
| CANCEL | まだ完了していない要求の処理を取り消す |
| REGISTER | 現在の連絡先を登録する |
| OPTIONS | 相手の対応能力を問い合わせる |
「呼出し中の取消し」と「成立した通話の終了」は異なる操作である。登録を行っただけで、相手との通話が始まるわけでもない。
通話が成立する流れ
典型的な成功例では、発信側が開始要求を送り、着信側が呼出し中などの暫定応答を返す。相手が応答すると200 OKが返り、発信側が受諾を確認する要求を送る。途中の応答や認証要求は構成によって異なる。
成功応答の前後でSDPを交換し、使うコーデックやメディアの受信先などを合意する。RTPで運ぶ音声は、必ずしもSIPの中継サーバを通らない。メディア中継装置を用いる構成もある。
通信障害を切り分ける
| 現象 | 確認する観点 |
|---|---|
| 相手を呼び出せない | 名前解決、登録情報、信号の経路、認証 |
| 呼び出せるが音が出ない | SDPの接続先、NATの変換、メディアの許可ルール |
| 音が片方向だけ届く | 両方向のアドレス・ポートと経路 |
| 音が途切れる | パケット損失、ジッタ、遅延、帯域 |
TCPにも接続確立時の確認応答があるが、同名の語だけで同じ層の処理と考えてはいけない。SIPの要求と応答は、アプリケーションとして通話を制御する。
保護する範囲
信号をTLSで保護しても、音声が自動的に暗号化されるわけではない。メディアの保護にはSRTPなどを用いる。信号、音声、認証情報のそれぞれについて、どの区間を守るかを確認する。