SIPとVoIP NTTPC Communications,Inc. 波多 浩昭 JANOG12 Jul.2003 SIPを使った簡単な通話(とりあえず試してみよう) SIPを使った簡単な通話(とりあえず試してみよう) 相手IPアドレスがわかっており、 ネットワークに接続されているとき INVITE sip:[email protected] 200 OK SIP端末 (MSN Messenger) JANOG12 Jul.2003 SIP端末 (YAMAHAルータ) SIPアドレス sip : [email protected] SIPリクエストメッセージ SIPリクエストメッセージ ファーストラインメソッドとあて先 INVITE sip:[email protected] SIP/2.0 CallCall-ID:238bcID:[email protected] From:1001<sip:[email protected]>;tag=176866 To:sip:[email protected] CSeq:100 INVITE ヘッダ部 SIPで規定 Via:SIP/2.0/UDP 192.168.0.32 Contact:1001<sip:[email protected]> ContentContent-Type:application/sdp Type:application/sdp ContentContent -Length:110 空行をあけてヘッダと本体を区切る v=0..o=1001 0 0 IN IP4 192.168.0.32 s=s= - SDP c=IN IP4 192.168.0.32 t=0 0 m=audio 8002 RTP/AVP 0 a=ptime ptime:30 a= ptime :30 JANOG12 Jul.2003 192.168.0.32のポート8002で RTPの上のG.711を受信できますよ パケットは30ミリ秒ごとにでます SIPリクエストメッセージ SIPリクエストメッセージ 200 OK リザルトコード Via: SIP/2.0/UDP 192.168.0.1:5060;branch=z9hG4bK135 Via: SIP/2.0/UDP 192.168.0.32:5060 From: <sip:[email protected]>;tag=176866 To: <sip:[email protected]>;tag=b8b9ba94<sip:[email protected]>;tag=b8b9ba94-ea53ea53-4ed24ed2-84b984b9-6e9d730c605d CallCall-ID: [email protected] CSeq: 100 INVITE RecordRecord-Route: <sip:[email protected]:5060> Contact: <sip:192.168.0.10:9063> UserUser-Agent: Windows RTC/1.0 ContentContent-Type: application/sdp application/sdp ContentContent-Length: 154 v=0 o=hata o=hata 0 0 IN IP4 192.168.0.10 s=s=c=IN IP4 192.168.0.10 b=CT:1000 t=0 0 m=audio 41794 RTP/AVP 0 a=rtpmap a=rtpmap:0 rtpmap:0 PCMU/8000 JANOG12 Jul.2003 SDP 192.168.0.10のポート41794で RTPの上のG.711を受信でOKです 代表的なヘッダ 代表的なヘッダ To : あて先のSIP-URL From : 発信元のSIP-URL Call-ID : 1回Registerしてから解除するまでの一連のセッションを識別 CSeq : 同一Call-IDで何個目のリクエストかを表示 Via : 本リクエストに対するレスポンスはここへ送ってほしい旨通知 Contact : 以後、自分に対するリクエストはここへ送ってほしい旨通知 Content-Type : メッセージボティのMIMEタイプ (例) INVITE application/SDP NOTIFY application/xpidftxml application/cpim-pidftxml MESSAGE text/plain JANOG12 Jul.2003 SIPサーバ(P2PのSIPじゃあつまらない) SIPサーバ(P2PのSIPじゃあつまらない) nttpc.co.jpサーバ ① REGISTER From : [email protected] Contact : 10.10.10.1:5060 INVITE To : [email protected] From : [email protected] eri ② 10.10.10.1:5060 ③ INVITE To : [email protected] From : [email protected] sip : [email protected] IPアドレス アドレス : 10.10.10.2:5060 JANOG12 Jul.2003 sip : [email protected] IPアドレス アドレス : 10.10.10.1:5060 代表的なシーケンス(音声通話) 代表的なシーケンス(音声通話) Natsumi 発信 Eri INVITE 0 Trying 100 180 Ringing 200 OK リングバック ACK 音声信号 RTP/ UDP 受話器を置く BYE 200 OK JANOG12 Jul.2003 ベル鳴動 受話器をとる 代表的なシーケンス(インスタントメッセージ IM) 代表的なシーケンス(インスタントメッセージ IM) Natsumi キー入力 メッセージ作成 Eri INFORM 200 OK Natsumi が 入力中です 入力中です きぼー きぼーん 送信 MESSAGE 200 OK JANOG12 Jul.2003 Natsumi からの メッセージです メッセージです 「きぼー きぼーん」 代表的なシーケンス(プレゼンス) 代表的なシーケンス(プレゼンス) SIPサーバ Natsumi REGISTER :Eri From:E Eri オンライン 200 OK オンライン REGISTER From:Nats umi 200 OK JANOG12 Jul.2003 SUBSCRIBE To:Natsumi 200 OK NOTIFY From:Nats umi 200 OK Natsumi がオン ラインになりました ラインになりました SIPサーバアーキテクチャと設計概要 SIPサーバアーキテクチャと設計概要 こんなかんじでやれば、 こんなかんじでやれば、動くんじゃないかな? くんじゃないかな? SIPサーバ リクエストメッセージ レスポンスメッセージ リクエストメッセージ レスポンスメッセージ RDBMS メッセージ分析 状態遷移管理 SIPサーバとはなにか? 何かメッセージを受信してそれを入力とする。 入力を分析し、適切な出力をメッセージとして送信する。 --------------------------------- メッセージ分析モジュール メッセージを受けて、それが何を意味しているのか解釈する。 返送メッセージを適切なメッセージフォーマットに整形し、ネットワークに送出する 状態遷移管理モジュール 受け取った入力から、誰に何を返すべきかを決定する判断エンジン RDBMSモジュール 現在どのような状態にあるのか(誰が、オンライン中で誰が通話中か)を保持する というわけでつくって動 というわけでつくって動かしてみました。 かしてみました。 クライアントは メッセンジャーです クライアントは只でもらえるmsnメッセンジャー でもらえる メッセンジャーです JANOG12 Jul.2003 デモ環境 デモ環境 10BASE-T HUB DHCPサーバ SIPサーバ Open BlockSS/Linux1号機 IP電話 MSNメッセンジャー MSNメッセンジャー JANOG12 Jul.2003 IP電話機のインタフェース IP電話機 SIPサーバ JANOG12 Jul.2003 品質 品質 パケットロス ビットエラーによるパケット廃棄(ランダムエラー) 輻輳によるパケット廃棄(バーストエラー、ジッタをともなう) 遅延 音声おくれ ジッタ(含パケット逆転) 音声とぎれ パケットロスに似ている JANOG12 Jul.2003 ルーティング ルーティング UA PROXY INVITE UA INVITE INVITEだけ転送するので あとは勝手にやって頂戴 200 OK ACK PROXY UA INVITE 200 OK ACK JANOG12 Jul.2003 UA INVITE 200 OK ACK 通過するパケットはプロキシ に転送してくださいね。 ・Viaスタック ・Record-Route シミュレーション シミュレーション ~網品質をどこまで保証すればよいのだろう~ ~網品質をどこまで保証すればよいのだろう~ LANシミュレータ Ethernet Ethernet 20ms毎に200バイトの パケットを送りつづける 受信パケットの間隔を測定 分散値σ’を算出 パケットごとに正規分布 N(μ, σ)秒の遅れを挿入する ある率%でパケット廃棄 UDP送信 シミュレータ LANシミュレータ σとσ’の対応表をつくる UDP受信 シミュレータ μ N(μ, σ)の遅れを挿入する IPフォン IPフォン 良好 あれ?変だな こりゃまずい 使えない JANOG12 Jul.2003 LANシミュレータの エラーパラメータ ネットワークの 推定値 µ, σ,% µ, σ,% デモ環境2 デモ環境2 10BASE-T HUB DHCPサーバ SIPサーバ ネットワーク シミュレータ Open BlockSS/Linux2号機 Open BlockSS/Linux1号機 パソコンから見れば 単なるHUB 遅延とパケットロスを発生 JANOG12 Jul.2003 本セッションで利用した機材・ソフト・ドキュメント類 本セッションで利用した機材・ソフト・ドキュメント類 SIPサーバ サーバ http://www.hata.cc/hata/sipd20030707.tar.gz イーサネットシミュレータ http://www.hata.cc/hata/linee.tar.gz イーサネットシミュレータの イーサネットシミュレータの詳細解説 詳細解説 (PC-View) http://www.pc-view.net/Column/030110/index.html 揺らぎ測定 らぎ測定ツール 測定ツール http://www.hata.cc/hata/netest.tar.gz MSNメッセンジャー メッセンジャー Version4 4.6もしくは4 対応 もしくは4.7だけがSIP対応 だけが IP電話機 電話機 東亜通信工業股分有限公司 日本弁事処 日本弁事処 045-474-3222 JANOG12 Jul.2003 ネットワークシミュレータの動作 ネットワークシミュレータの動作 基本動作 イーサポートに現れたフレームはMACアドレスやIPアドレスが何であろうと もう一方のインタフェースに送出する オプション動作 フレーム毎にキューに滞留する時間をランダム、正規分布、固定のいずれか で指定できる たまにフレームを廃棄する(他方のインタフェースに送らない)。バースト的に廃棄 するか、ランダムに廃棄するかの指定ができる JANOG12 Jul.2003
© Copyright 2024 Paperzz