NGN時代の重要プロトコル
Session Initiation Protocol(SIP)
概要資料
2008年3月31日初版
日本電気株式会社
2
目次
• SIPとは • SIPは双方向のプロトコル • SIP URIの書き方 • SIPのトランスポートプロトコル • SIPのメッセージ構造 • SIPのリクエストメソッドとレスポンスコード • SDP • ダイアログ・セッション・メディア • トランザクション • SIPネットワークの構成(SIPサーバなし) • SIPネットワークの構成(SIPレジストラサーバ) • SIPネットワークの構成(SIPリダイレクトサーバ) • SIPネットワークの構成(SIPプロキシサーバ) • プロキシ経由のメッセージの流れ1 • プロキシ経由のメッセージの流れ2 • プロキシサーバの種類 • SIPタイマ • SIPのアドレス解決 • 参考文献 ©NEC Corporation 20083
SIPとは
SIPは、IPネットワーク上でマルチメディアセッションを開始
/ 変更
/ 終了するため
のアプリケーション層のシグナリングプロトコル
•シンプルなプロトコル構造、HTTP 1.1ライクなテキストの メッセージ •メディアに依存しない •リクエスト・レスポンス型で双方向(Push型を実現) •保留、転送、会議、コールウェイティング(キャッチホン)などのさまざまな電話機能 •相手の現在の在席状態(プレゼンス)を把握可能 •インスタントメッセージのやり取りをリアルタイムに実現 できること 特徴 多くの製品がSIPに対応 •IP電話機 •携帯電話(FOMA N902iLなど) •インスタントメッセンジャー(Windows Messengerなど)•ソフトフォン(NEC DtermSP30,フリーソフト X-Liteなど)
普及状況
NGN(Next Generation Network)では、SIPが呼制御プロトコルとして利用される SIP関連規約の標準化が進んでいる SIPに関係するプロトコル アプリケーション層 トランスポート層 ネットワーク層 RTP IP UDP TCP RTCP 映像・音声 コーデック 映像・音声 アプリ 呼・端末制御 SCTP TLS SIP SDP 参考文献[003]より ©NEC Corporation 2008
4
SIPは双方向のプロトコル
SIPネットワークは、
ユーザエージェント(UA)
と
SIPサーバ
で構成される
ユーザ
B
ユーザ
A
ユーザ
B
ユーザ
A
UAC
UAS
UAC
UAS
話したい
いいですよ
さようなら
はい、さようなら
UAは簡単にはSIP端末のこと。UAは以下の機能を持つ。 • ユーザエージェントクライアント(UAC) リクエストを送信する • ユーザエージェントサーバ(UAS) レスポンスを返す●
Aさんから電話を掛ける
●
Aさんから電話を掛ける
●
Bさんが電話を切る
●
Bさんが電話を切る
SIPは双方向プロトコルであり、UAは、UAC,UASの二つの役目を行う
SIP
SIP
会話が終了
©NEC Corporation 20085
SIP URIの書き方
sip:<ユーザ識別子>:<パスワード>@<ホスト>:<ポート番号>;<URIパラメータ>?<ヘッダ・フィールド> 宛先ホスト上 のユーザ名 平文なので 使用は推奨 されていない 宛先ホストの FQDN(推 奨)*かIPアド レス 宛先ホスト 上のポート番 号。デフォル トは SIP(5060)、 SIPS(5061) トランスポー トプロトコル の指定などsip:[email protected]
例 ここが”sips”の場合、ト ランスポートプロトコルは 「TLS」となる tel URIの場合 tel:+81-11-123-4567 *FQDN:フルドメイン名付きホスト名 ©NEC Corporation 20086
SIPのトランスポートプロトコル
利用目的に応じてプロトコルが決まる
SIPを暗号化したいTLS(つまりSSL)
SCTP
YES NO YESTCP
IP層でフラグメント化される ほどメッセージが大きい? YESUDP
NO マルチストリームなどのTCP 以上の機能を使いたい NO こちらは サポート必須 SIP規約上、 サポートは 任意 ©NEC Corporation 20087
SIPのメッセージ構造
SIPは、HTTPと同様にテキストベースであり、非常にシンプルな構造
SIP/2.0 200 OK To: sip:[email protected]:5060 Content-Length: 0 Contact: <sip:[email protected]:5060;transport=udp;wlsscid=1ae3fd44d3cdfe> CSeq: 1 INVITE Call-ID: xyzzy50c3d7b40200d6b8efa5d48ad09fbf3b(8bd35e318117584004e425ba7051b7b4:192.168.0.160)@192.168.0.160 Via: SIP/2.0/UDP 192.168.0.160:5060;wlsscid=1ae3fd44d3cdfe;branch=z9hG4bK8f9b17fe6a647f820fa35cb67f4a716a From: <sip:192.168.0.160:5060>;tag=75f1ad39Max-Forwards: 70
INVITE sip:[email protected]:5060 SIP/2.0
空行 [データがない場合もある] 開始行 メッセージヘッダ メッセージボディ v=0 o=TestUser 29690723 29698822 IN IP4 192.168.0.13 s=X-Lite c=IN IP4 192.168.0.13 以降略………
Via: SIP/2.0/UDP 192.168.0.160:5060;wlsscid=1ae3fd44d3cdfe;branch=z9hG4bK8f9b17fe6a647f820fa35cb67f4a716a From: <sip:192.168.0.160:5060>;tag=75f1ad39 To: <sip:[email protected]:5060>;tag=2065010947 Contact: <sip:[email protected]:5060> Call-ID: xyzzy50c3d7b40200d6b8efa5d48ad09fbf3b(8bd35e318117584004e425ba7051b7b4:192.168.0.160)@192.168.0.160 CSeq: 1 INVITE Content-Type: application/sdp Server: X-Lite release 1105x Content-Length: 309 空行 レスポンスメッセージ例 開始行 メッセージヘッダ メッセージボディ UAC UAS OK UAC UAS INVITE リクエストメッセージ例 ここにSDPが記述さ れている ©NEC Corporation 2008
8
SIPのリクエストメソッドとレスポンスコード
新たなRFCによりリクエストメソッドおよびレスポンスコードが追加されている
リクエストメッセージ INVITE セッション確立 RFC 3261 ACK INVITEに対する最終レスポンスの受信確認 ↑ BYE セッション終了 ↑ CANCEL 確立途中のセッションのキャンセル ↑ REGISTER 所在の登録 ↑ OPTIONS 相手の能力問い合わせ ↑ INFO セッション制御情報の送信 RFC 2976 UPDATE セッション情報の更新 RFC 3311 SUBSCRIBE イベントの送信要求 RFC 3265 NOTIFY イベント状態の通知 RFC 3265 PRACK 暫定応答用 RFC 3262 MESSAGE インスタントメッセージなどのテキスト送信 RFC 3428 REFER 第三者へのコンタクト要求 RFC 3515 PUBLISH UAへのイベント状態配信 RFC 3903 主なレスポンスコード 100 Trying RFC3261 200 OK ↑ 302 Moved Temporarily ↑500 Server Internal Error ↑
9
SDP
•
Session Description Protocol(SDP)は、セッションを定義するための情報交換規則
•
UA間にセッションを確立するとき、UACからのINVITEリクエストのメッセージボディに記述
される。また、UASからの200 OKメッセージのメッセージボディにも記述される
v=0 o=TestUser 28972475 28972537 IN IP4 192.111.22.33 s=X-Lite c=IN IP4 192.168.0.13 t=0 0 m=audio 8000 RTP/AVP 0 8 3 98 97 101 a=rtpmap:0 pcmu/8000 a=rtpmap:8 pcma/8000 a=rtpmap:3 gsm/8000 a=rtpmap:98 iLBC/8000 a=rtpmap:97 speex/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-15 a=sendrecv SDP例 バージョン セッション開始者と識別情報 セッション名 コネクション情報 開始・終了時刻 メディア種別・プロトコル メディア属性 SIPの方で制御す るのでいつも0 ここではRTPの属性 フォーマット固有 パラメータ SDPは、SIPに依存していないので、SIP以外でも使用できる。また、SIPも、SDP以外の セッション記述方法を使用することを許容している ©NEC Corporation 200810
ダイアログ・セッション・メディア
•UAとUAの関連付け。プロキシサーバなど中継するUAは関係しない •SDPにより結びついたUAとUAの関連付け。1ダイアログは1つのセッションが関連付けされる •UA間で送受信さえる音声や映像 •1セッションは複数のメディアを管理することができる。メディアのないセッションは通常はない SIPレイヤ SIPレイヤ ダイアログ セッションレイヤ セッションレイヤ メディアレイヤ メディアレイヤ セッション 映像メディア 音声メディア ダイアログ セッション 映像メディア 音声メディア SIP SDP RTP RTP UA UA SIP/2.0 200 OK v=0 o=TestUser 29690723 29698822 IN IP4 192.168.0.13 s=X-Lite c=IN IP4 192.168.0.13 t=0 0 m=audio 8000 RTP/AVP 0 8 3 98 97 101 a=rtpmap:0 pcmu/8000 以降略………Via: SIP/2.0/UDP 192.168.0.160:5060;wlsscid=1ae3fd44d3cdfe; From: <sip:192.168.0.160:5060>;tag=75f1ad39
To: <sip:[email protected]:5060>;tag=2065010947
Contact: <sip:[email protected]:5060>
Call-ID: xyzzy50c3d7b40200d6b8efa5d48ad09fbf3b(8bd35e31811
CSeq: 1 INVITE
Content-Type: application/sdp Server: X-Lite release 1105x Content-Length: 309 空行 レスポンスメッセージ例 ダイアログ セッション メディア 参考文献[011]より ©NEC Corporation 2008
11
トランザクション
SIPサーバ
(ステートレスプロキシサーバ)
UAC SIPサーバ(ステートフルプロキシサーバ) UAS
INVITE OK
トランザクション
トランザクション
INVITE OK ステートレスプロキシは、リクエスト・レスポンスを 次に送るだけで再送処理などを行わないため、ト ランザクションの関連付けに影響しない•
一対のUAまたはSIP(ステートレスプロキシサーバ以外)の間の関連付け
•
リクエスト-レスポンスで1トランザクション
©NEC Corporation 200812
SIPネットワークの構成(SIPサーバなし)
発信 INVITE 応答 ユーザA ユーザB RTP もしもし はいはい OK ① ② ③ 帯域制御やマルチメディアデータ のハンドリングなどは、SIPの役目 ではない。 それらにはRTPなどを使用する ダイアログ・セッション 開始のコマンド ©NEC Corporation 200813
SIPネットワークの構成(SIPレジストラサーバ)
① REGISTER 私のアドレスは ***.***.**.**です。 REGISTER ①’ 私のアドレスは ***.***.**.**です。 ロケーションサーバ ここの通信方法をSIPでは規定しない。 例えばLDAPを使用することができる ユーザA ユーザB SIP URI SIP URI コンタクトアドレスコンタクトアドレス SIP URI SIP URI コンタクトアドレスコンタクトアドレス SIP URI SIP URI コンタクトアドレスコンタクトアドレス ・・・・・・REGISTER sip:reg.abc.necst.nec.co.jpSIP/2.0
Via: SIP/2.0/UDP 192.168.0.13:5060;rport;branch=z9hG4bK4……….. From: TestUser <sip:[email protected]>;tag=833195397 To: TestUser <sip:[email protected]>
Contact: "TestUser" <sip:[email protected]:5060>
Call-ID: [email protected] CSeq: 9525 REGISTER
Expires: 1800 Max-Forwards: 70
User-Agent: X-Lite release 1105x Content-Length: 0 宛先となるレジストラサーバ 登録するURI コンタクトアドレス リクエストメッセージ例 SIPサーバ (レジストラサーバ) ©NEC Corporation 2008
14
SIPネットワークの構成(SIPリダイレクトサーバ)
① SIPサーバ1 (プロキシサーバ) SIPサーバ2 (リダイレクトサーバ) abc.necst.nec.co.jp SIPサーバ3 (プロキシサーバ) newoffice.necst.nec.co.jp ② ③ ④ ⑥ ユーザBは、サーバ2が 知っているはずなので呼 び出し いやいや、 ユーザBはサー バ3が知ってま すよ ユーザA ユーザB RTP もしもし はいはい ⑤ INVITE sip:[email protected] INVITEsip:[email protected] 302 Moved Temporary
Contact: sip:[email protected] INVITE sip:[email protected] SIP URI SIP URI コンタクトアドレスコンタクトアドレス ロケーションサーバ ② ロケーションサーバに問い合わ せ、ユーザBの移動先を調べ る ⑦ INVITE sip:[email protected] .jp ©NEC Corporation 2008
15
SIPネットワークの構成(SIPプロキシサーバ)
SIPサーバ (プロキシサーバ) 発信 応答 ユーザA ユーザB RTP もしもし はいはい ① ② ③ ④ ⑤ 200 OK 200 OK 応答 INVITE 発信 INVITE UAC UAS ©NEC Corporation 200816
プロキシ経由のメッセージの流れ1
RTP もしもし はいはい SIPサーバ A (プロキシサーバ) 200 OK 100 Trying INVITE INVITE SIPサーバ B (プロキシサーバ) INVITE 180 Ringing 100 Trying 180 Ringing 200 OK 180 Ringing 200 OK ACK BYE 200 OK 相手の呼び 出し音 プルルル!•
SIPサーバがRecord-Routeフィールドデータを設定しない場合
INVITE完了後、UACから送られるメッセージは、SIPサーバで中継しない Record-Routeフィールドは、経由したプロキシの情報を示す。 プロキシサーバがRecord-Routeに自分を設定するかどうかは任意SIPメッセージヘッダのRecord-Routeフィールドの有無により流れが異なる
©NEC Corporation 200817
プロキシ経由のメッセージの流れ2
RTP もしもし はいはい SIPサーバ A (プロキシサーバ) 200 OK INVITE SIPサーバ B (プロキシサーバ) 200 OK•
SIPサーバがRecord-Routeフィールドデータを設定した場合
INVITE Record-Route SIPサーバA INVITE SIPサーバA SIPサーバB 200 OK ACK BYE BYE ACK Route SIPサーバB Route SIPサーバA BYE 200 OK 200 OK 200 OKRecord-Routeフィールドに自分を設定しないプロキシサーバは、ACKやBYEを
受け取れないので、後述するコール・ステートフル・プロキシになることができない
ACK SIPサーバBINVITE完了後も、UACから送られるメッセージは、SIPサーバで中継する
©NEC Corporation 200818
プロキシサーバの種類
トランザクションの状態を管理する。実際には、リクエストの情報を保持し、リクエストの分岐(フォー ク)や暫定レスポンスの送信を行うことができる。 トランザクション・ステートフル・プロキシ 受け取ったリクエストやレスポンスを送信先に中継するだけ。暫定メッセージの送信や再送信は行わ ない。ステートフルに比べて負荷が軽い。大規模向き。 ダイアログの状態を管理する。つまり、誰と誰が会話中かを管理できる。 SIPサーバ トランザクション・ステートレス・プロキシ コール・ステートフル・プロキシ さらに 高機能だと SIPサーバ フォーク 暫定レスポンス ©NEC Corporation 200819
SIPタイマ
コールステートフルプロキシの場合、定期的なダイアログの存在確認と、確認
失敗時の自動的ダイアログクローズの処理が必要
SIPサーバ (プロキシサーバ) UA UA INVITE INVITE OK OK ACK ACK 障害発生 障害発生 BYEが来ないの で通話中のまま と思ってしまう SIPサーバ (プロキシサーバ) UA UA INVITE Supported: timer Session-Expires: 1800 INVITE Supported: timer Session-Expires: 1800 OK OK ACK ACK 障害発生 Session-Expiresを経過しても、 INVITEかUPDATEが来ないの で、セッションを破棄 •UAがタイマをサポートしていないとき •UAがタイマをサポートしているとき INVITE Supported: timer Session-Expires: 1800 INVITE Supported: timer Session-Expires: 1800 タイマリセット BYE BYE BYE BYE タイムアウト! 障害発生 参考文献[011]より ©NEC Corporation 200820
SIPのアドレス解決
UAやSIPサーバは、他ドメインのSIPプロキシサーバのIPアドレス、トランスポート
プロトコル、ポート番号をDNSサーバから取得する必要がある
SIPサーバ群 (プロキシサーバ) SIPサーバ群 (プロキシサーバ) ドメインA ドメインB SIP Trapezoid(台形) UAC UAS 他ドメインのどこに転送するかを、リクエスト時と、レスポンス の再送時に調べる必要がある DNSサーバ DNSに同一サーバ名で複数のSIPサーバを登録することで、 負荷分散 ©NEC Corporation 200821
参考文献
•[002] 通信系・情報系サービスを融合する「SIP Servlet」 (@IT)
http://www.atmarkit.co.jp/fjava/kaisetsu/j2eewatch09/j2eewatch09.html
•[001] JSR 116: SIP Servlet API (Java Community Process) http://jcp.org/en/jsr/detail?id=116 Webサイト •[011] 澤田 拓也, 池田 徹, 木下 岳人, 西澤 哲夫, 川島 倫央,”実践SIP詳解テキスト”, リックテレコム, 2005 •[010] 千村 保文,村田 利文,”改訂版SIP教科書”, インプレス , 2004 書籍 •[003] SIP入門 ~プロトコル概要からSIPの適用、将来像まで~(JPNIC) http://www.nic.ad.jp/ja/materials/iw/2003/proceedings/T9.pdf ソフトフロント 阪口氏作成 •[004] ソフトフロント:テクノロジトップ http://www.softfront.co.jp/tech/sip.html ©NEC Corporation 2008
22
■ お問合わせ先
日本電気株式会社 第二システムソフトウェア事業部
Tel
: 03-3456-4321
Email : [email protected]
■ 製品ホームページ
http://www.nec.co.jp/WebOTX/
■ お問合わせ先
日本電気株式会社 第二システムソフトウェア事業部
Tel
: 03-3456-4321
Email : [email protected]
■ 製品ホームページ
http://www.nec.co.jp/WebOTX/
信頼性、柔軟性、サポート
3つの安心でお客様のシステムを支えます!!
Leading-edge technologies and time-proven quality for your evolving-business.