ngn時代の重要プロトコル session initiation … 目次 • sipとは •...
TRANSCRIPT
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 2008
3
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
UDPTCP
RTCP
映像・音声コーデック
映像・音声アプリ
呼・端末制御
SCTP
TLS
SIP
SDP
参考文献[003]より
©
NEC Corporation 2008
4
SIPは双方向のプロトコルSIPネットワークは、ユーザエージェント(UA)とSIPサーバで構成される
ユーザBユーザA
ユーザBユーザA
UAC UAS
UACUAS
話したい
いいですよ
さようなら
はい、さようなら
UAは簡単にはSIP端末のこと。UAは以下の機能を持つ。• ユーザエージェントクライアント(UAC)
リクエストを送信する• ユーザエージェントサーバ(UAS) レスポンスを返す
●Aさんから電話を掛ける●Aさんから電話を掛ける
●Bさんが電話を切る●Bさんが電話を切る
SIPは双方向プロトコルであり、UAは、UAC,UASの二つの役目を行う
SIP
SIP
会話が終了
©
NEC Corporation 2008
5
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 2008
6
SIPのトランスポートプロトコル利用目的に応じてプロトコルが決まる
SIPを暗号化したい TLS(つまりSSL)
SCTP
YES
NO
YES
TCPIP層でフラグメント化される
ほどメッセージが大きい?
YES
UDPNO
マルチストリームなどのTCP
以上の機能を使いたい
NOこちらは
サポート必須
SIP規約上、
サポートは
任意
©
NEC Corporation 2008
7
SIPのメッセージ構造SIPは、HTTPと同様にテキストベースであり、非常にシンプルな構造
SIP/2.0 200 OK
To: sip:[email protected]:5060Content-Length: 0Contact: <sip:[email protected]:5060;transport=udp;wlsscid=1ae3fd44d3cdfe>CSeq: 1 INVITECall-ID: xyzzy50c3d7b40200d6b8efa5d48ad09fbf3b(8bd35e318117584004e425ba7051b7b4:192.168.0.160)@192.168.0.160Via: SIP/2.0/UDP 192.168.0.160:5060;wlsscid=1ae3fd44d3cdfe;branch=z9hG4bK8f9b17fe6a647f820fa35cb67f4a716aFrom: <sip:192.168.0.160:5060>;tag=75f1ad39Max-Forwards: 70
INVITE sip:[email protected]:5060 SIP/2.0
空行
[データがない場合もある]
開始行
メッセージヘッダ
メッセージボディ
v=0o=TestUser 29690723 29698822 IN IP4 192.168.0.13s=X-Litec=IN IP4 192.168.0.13以降略…………………………
Via: SIP/2.0/UDP 192.168.0.160:5060;wlsscid=1ae3fd44d3cdfe;branch=z9hG4bK8f9b17fe6a647f820fa35cb67f4a716aFrom: <sip:192.168.0.160:5060>;tag=75f1ad39To: <sip:[email protected]:5060>;tag=2065010947Contact: <sip:[email protected]:5060>Call-ID: xyzzy50c3d7b40200d6b8efa5d48ad09fbf3b(8bd35e318117584004e425ba7051b7b4:192.168.0.160)@192.168.0.160CSeq: 1 INVITEContent-Type: application/sdpServer: X-Lite release 1105xContent-Length: 309
空行
レスポンスメッセージ例
開始行
メッセージヘッダ
メッセージボディ
UAC UAS
OKUAC 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 ↑
©
NEC Corporation 2008
9
SDP•
Session Description Protocol(SDP)は、セッションを定義するための情報交換規則
•
UA間にセッションを確立するとき、UACからのINVITEリクエストのメッセージボディに記述
される。また、UASからの200 OKメッセージのメッセージボディにも記述される
v=0o=TestUser 28972475 28972537 IN IP4 192.111.22.33s=X-Litec=IN IP4 192.168.0.13t=0 0m=audio 8000 RTP/AVP 0 8 3 98 97 101a=rtpmap:0 pcmu/8000a=rtpmap:8 pcma/8000a=rtpmap:3 gsm/8000a=rtpmap:98 iLBC/8000a=rtpmap:97 speex/8000a=rtpmap:101 telephone-event/8000a=fmtp:101 0-15a=sendrecv
SDP例
バージョンセッション開始者と識別情報セッション名コネクション情報開始・終了時刻メディア種別・プロトコルメディア属性
SIPの方で制御す
るのでいつも0
ここではRTPの属性
フォーマット固有パラメータ
SDPは、SIPに依存していないので、SIP以外でも使用できる。また、SIPも、SDP以外の
セッション記述方法を使用することを許容している
©
NEC Corporation 2008
10
ダイアログ・セッション・メディア
•UAとUAの関連付け。プロキシサーバなど中継するUAは関係しない
•SDPにより結びついたUAとUAの関連付け。1ダイアログは1つのセッションが関連付けされる
•UA間で送受信さえる音声や映像•1セッションは複数のメディアを管理することができる。メディアのないセッションは通常はない
SIPレイヤ
SIPレイヤ ダイアログ
セッションレイヤ
セッションレイヤ
メディアレイヤ
メディアレイヤ
セッション
映像メディア
音声メディア
ダイアログ
セッション
映像メディア
音声メディア
SIP
SDP
RTP
RTP
UA UASIP/2.0 200 OK
v=0o=TestUser 29690723 29698822 IN IP4 192.168.0.13s=X-Litec=IN IP4 192.168.0.13t=0 0m=audio 8000 RTP/AVP 0 8 3 98 97 101a=rtpmap:0 pcmu/8000以降略…………………………
Via: SIP/2.0/UDP 192.168.0.160:5060;wlsscid=1ae3fd44d3cdfe;From: <sip:192.168.0.160:5060>;tag=75f1ad39To: <sip:[email protected]:5060>;tag=2065010947Contact: <sip:[email protected]:5060>Call-ID: xyzzy50c3d7b40200d6b8efa5d48ad09fbf3b(8bd35e31811CSeq: 1 INVITEContent-Type: application/sdpServer: X-Lite release 1105xContent-Length: 309
空行
レスポンスメッセージ例
ダイアログ
セッション
メディア
参考文献[011]より
©
NEC Corporation 2008
11
トランザクション
SIPサーバ
(ステートレスプロキシサーバ)UAC UASSIPサーバ
(ステートフルプロキシサーバ)
INVITE
OK
トランザクション トランザクション
INVITE
OK
ステートレスプロキシは、リクエスト・レスポンスを
次に送るだけで再送処理などを行わないため、ト
ランザクションの関連付けに影響しない
•
一対のUAまたはSIP(ステートレスプロキシサーバ以外)の間の関連付け
•
リクエスト-レスポンスで1トランザクション
©
NEC Corporation 2008
12
SIPネットワークの構成(SIPサーバなし)
発信
INVITE
応答
ユーザA ユーザB
RTPもしもし
はいはい
OK
①
②
③
帯域制御やマルチメディアデータ
のハンドリングなどは、SIPの役目
ではない。それらにはRTPなどを使用する
ダイアログ・セッション
開始のコマンド
©
NEC Corporation 2008
13
SIPネットワークの構成(SIPレジストラサーバ)
① REGISTER私のアドレスは
***.***.**.**です。
REGISTER①’
私のアドレスは
***.***.**.**です。
ロケーションサーバ
ここの通信方法をSIPでは規定しない。例えばLDAPを使用することができる
ユーザA ユーザB
SIP URISIP URIコンタクトアドレス
コンタクトアドレス
SIP URISIP URIコンタクトアドレス
コンタクトアドレス
SIP URISIP URIコンタクトアドレス
コンタクトアドレス
・・・・・・
REGISTER sip:reg.abc.necst.nec.co.jp
SIP/2.0Via: SIP/2.0/UDP 192.168.0.13:5060;rport;branch=z9hG4bK4………..From: TestUser <sip:[email protected]>;tag=833195397To: TestUser <sip:[email protected]>Contact: "TestUser" <sip:[email protected]:5060>Call-ID: [email protected]: 9525 REGISTERExpires: 1800Max-Forwards: 70User-Agent: X-Lite release 1105xContent-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もしもし
はいはい
⑤
INVITEsip:[email protected]
INVITEsip:[email protected] 302 Moved Temporary
Contact: sip:[email protected]
INVITEsip:[email protected]
SIP URISIP URIコンタクトアドレス
コンタクトアドレス
ロケーションサーバ
②
ロケーションサーバに問い合わ
せ、ユーザBの移動先を調べ
る
⑦
INVITEsip:[email protected]
.jp
©
NEC Corporation 2008
15
SIPネットワークの構成(SIPプロキシサーバ)
SIPサーバ
(プロキシサーバ)
発信
応答
ユーザAユーザB
RTPもしもし
はいはい
① ②
③④
⑤
200 OK200 OK 応答
INVITE INVITE発信
UAC UAS
©
NEC Corporation 2008
16
プロキシ経由のメッセージの流れ1
RTPもしもし はいはい
SIPサーバ A(プロキシサーバ)
200 OK
100 Trying
INVITE INVITE
SIPサーバ B(プロキシサーバ)
INVITE
180 Ringing
100 Trying
180 Ringing200 OK
180 Ringing200 OK
ACK
BYE200 OK
相手の呼び
出し音
プルルル!
•SIPサーバがRecord-Routeフィールドデータを設定しない場合
INVITE完了後、UACから送られるメッセージは、SIPサーバで中継しない
Record-Routeフィールドは、経由したプロキシの情報を示す。プロキシサーバがRecord-Routeに自分を設定するかどうかは任意
SIPメッセージヘッダのRecord-Routeフィールドの有無により流れが異なる
©
NEC Corporation 2008
17
プロキシ経由のメッセージの流れ2
RTPもしもし はいはい
SIPサーバ A(プロキシサーバ)
200 OK
INVITE
SIPサーバ B (プロキシサーバ)
200 OK
•SIPサーバがRecord-Routeフィールドデータを設定した場合
INVITERecord-RouteSIPサーバA
INVITE
SIPサーバA
SIPサーバB200 OK
ACKBYE
BYE
ACK
RouteSIPサーバB
RouteSIPサーバA
BYE
200 OK
200 OK
200 OK
Record-Routeフィールドに自分を設定しないプロキシサーバは、ACKやBYEを
受け取れないので、後述するコール・ステートフル・プロキシになることができない
ACKSIPサーバB
INVITE完了後も、UACから送られるメッセージは、SIPサーバで中継する
©
NEC Corporation 2008
18
プロキシサーバの種類
トランザクションの状態を管理する。実際には、リクエストの情報を保持し、リクエストの分岐(フォー
ク)や暫定レスポンスの送信を行うことができる。
トランザクション・ステートフル・プロキシ
受け取ったリクエストやレスポンスを送信先に中継するだけ。暫定メッセージの送信や再送信は行わ
ない。ステートフルに比べて負荷が軽い。大規模向き。
ダイアログの状態を管理する。つまり、誰と誰が会話中かを管理できる。
SIPサーバ
トランザクション・ステートレス・プロキシ
コール・ステートフル・プロキシ
さらに高機能だと
SIPサーバ
フォーク
暫定レスポンス
©
NEC Corporation 2008
19
SIPタイマ
コールステートフルプロキシの場合、定期的なダイアログの存在確認と、確認
失敗時の自動的ダイアログクローズの処理が必要
SIPサーバ
(プロキシサーバ)UA UA
INVITEINVITE
OKOK
ACKACK
障害発生 障害発生
BYEが来ないの
で通話中のまま
と思ってしまう
SIPサーバ
(プロキシサーバ)
UA UA
INVITESupported: timerSession-Expires: 1800
INVITESupported: timerSession-Expires: 1800
OKOKACK
ACK
障害発生
Session-Expiresを経過しても、
INVITEかUPDATEが来ないの
で、セッションを破棄
•UAがタイマをサポートしていないとき •UAがタイマをサポートしているとき
INVITESupported: timerSession-Expires: 1800
INVITESupported: timerSession-Expires: 1800
タイマリセット
BYE BYE
BYE BYEタイムアウト!
障害発生
参考文献[011]より
©
NEC Corporation 2008
20
SIPのアドレス解決
UAやSIPサーバは、他ドメインのSIPプロキシサーバのIPアドレス、トランスポート
プロトコル、ポート番号をDNSサーバから取得する必要がある
SIPサーバ群
(プロキシサーバ)
SIPサーバ群
(プロキシサーバ)
ドメインA ドメインB
SIP Trapezoid(台形)UAC UAS
他ドメインのどこに転送するかを、リクエスト時と、レスポンス
の再送時に調べる必要がある
DNSサーバ
DNSに同一サーバ名で複数のSIPサーバを登録することで、
負荷分散
©
NEC Corporation 2008
21
参考文献
•[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.
©
NEC Corporation 2008
©
NEC Corporation 2008