SIP と VoIP NTTPC Communications,Inc. 波多浩昭
SIP を使った簡単な通話 ( とりあえず試してみよう ) 相手 IP アドレスがわかっており ネットワークに接続されているとき INVITE sip:hata@nttpc.co.jp 200 OK SIP 端末 (MSN Messenger) SIP 端末 (YAMAHA ルータ ) SIP アドレス sip : hata@nttpc.co.jp
SIP リクエストメッセージ ファーストラインメソッドとあて先 ヘッダ部 SIP で規定 空行をあけてヘッダと本体を区切る SDP 192.168.0.32 のポート 8002 で RTP の上の G.711 を受信できますよパケットは 30 ミリ秒ごとにでます
SIP リクエストメッセージ SIP リクエストメッセージリザルトコード 192.168.0.10 のポート 41794 で RTP の上の G.711 を受信で OK です SDP
代表的なヘッダ To From Call-ID CSeq Via Contact : あて先のSIP-URL : 発信元のSIP-URL : 1 回 Registerしてから解除するまでの一連のセッションを識別 : 同一 Call-IDで何個目のリクエストかを表示 : 本リクエストに対するレスポンスはここへ送ってほしい旨通知 : 以後 自分に対するリクエストはここへ送ってほしい旨通知 Content-Type : メッセージボティの MIME タイプ ( 例 ) INVITE application/sdp NOTIFY application/xpidftxml application/cpim-pidftxml MESSAGE text/plain
SIP サーバ (P2P の SIP じゃあつまらない ) INVITE To : eri@nttpc.co.jp From : natsumi@nttpc.co.jp 2 nttpc.co.jp サーバ 1 eri 10.10.10.1:5060 REGISTER From : eri@nttpc.co.jp Contact : 10.10.10.1:5060 INVITE To : eri@nttpc.co.jp From : natsumi@nttpc.co.jp 3 sip : natsumi@nttpc.co.jp IP アドレス : 10.10.10.2:5060 sip : eri@nttpc.co.jp IP アドレス : 10.10.10.1:5060
代表的なシーケンス ( 音声通話 ) 代表的なシーケンス ( 音声通話 ) Natsumi Eri INVITE 発信 100 100 Trying Trying 180 180 Ringing Ringing 200 200 OK OK リングバック ACK 音声信号 RTP/ UDP BYE 受話器を置く 200 200 OK OK ベル鳴動 受話器をとる
代表的なシーケンス ( インスタントメッセージ IM) Natsumi Eri キー入力 メッセージ作成 INFORM 200 OK Natsumi が入力中です きぼーん 送信 MESSAGE 200 OK Natsumi からのメッセージです きぼきぼーん
代表的なシーケンス ( プレゼンス ) 代表的なシーケンス ( プレゼンス ) REGISTER REGISTER From:Eri From: Eri Natsumi SIP サーバ 200 OK REGISTER From:Natsumi オンライン 200 200 OK OK SUBSCRIBE SUBSCRIBE To:Natsumi To:Natsumi 200 OK NOTIFY From:Natsumi 200 200 OK OK Eri オンライン Natsumi がオンラインになりました
SIP サーバアーキテクチャと設計概要 こんなかんじでやれば 動くんじゃないかな? SIP サーバ リクエストメッセージレスポンスメッセージ リクエストメッセージレスポンスメッセージ メッセージ分析 状態遷移管理 RDBMS SIP サーバとはなにか? 何かメッセージを受信してそれを入力とする 入力を分析し 適切な出力をメッセージとして送信する --------------------------------- メッセージ分析モジュールメッセージを受けて それが何を意味しているのか解釈する 返送メッセージを適切なメッセージフォーマットに整形し ネットワークに送出する状態遷移管理モジュール受け取った入力から 誰に何を返すべきかを決定する判断エンジン RDBMS モジュール現在どのような状態にあるのか ( 誰が オンライン中で誰が通話中か ) を保持する というわけでつくって動かしてみましたかしてみました クライアントは只でもらえる msn メッセンジャーです
デモ環境 10BASE-T HUB DHCP サーバ SIP サーバ IP 電話 Open BlockSS/Linux1 号機 MSN メッセンジャー MSN メッセンジャー
IP 電話機のインタフェース IP 電話機 SIP サーバ
品質 パケットロス ビットエラーによるパケット廃棄 ( ランダムエラー ) 輻輳によるパケット廃棄 ( バーストエラー ジッタをともなう ) 遅延 音声おくれ ジッタ ( 含パケット逆転 ) 音声とぎれ パケットロスに似ている
ルーティング UA PROXY UA INVITE 200 200 OK OK ACK UA PROXY UA INVITE INVITE 200 200 OK OK 200 200 OK OK ACK ACK INVITE だけ転送するのであとは勝手にやって頂戴 通過するパケットはプロキシに転送してくださいね Via スタック Record-Route INVITE
シミュレーション ~ 網品質をどこまで保証すればよいのだろう網品質をどこまで保証すればよいのだろう ~ LAN シミュレータ Ethernet Ethernet UDP 送信シミュレータ 20ms 毎に 200 バイトのパケットを送りつづける パケットごとに正規分布 N(μ, ) % LAN シミュレータ μ UDP 受信シミュレータ 受信パケットの間隔を測定分散値 N(μ, ) IP フォン IP フォン LAN シミュレータのエラーパラメータ ネットワークの推定値 良好 µ, σ,% µ, σ,% あれ? 変だなこりゃまずい使えない
デモ環境 2 10BASE-T HUB ネットワークシミュレータ Open BlockSS/Linux2 号機 DHCP サーバ SIP サーバ Open BlockSS/Linux1 号機 パソコンから見れば単なる HUB 遅延とパケットロスを発生
本セッションで利用した機材 ソフト ドキュメント類 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.6 もしくは 4.7 だけが SIP 対応 IP 電話機東亜通信工業股分有限公司日本弁事処 045-474-3222
ネットワークシミュレータの動作 基本動作 イーサポートに現れたフレームは MAC アドレスや IP アドレスが何であろうともう一方のインタフェースに送出する オプション動作 フレーム毎にキューに滞留する時間をランダム 正規分布 固定のいずれかで指定できるたまにフレームを廃棄する ( 他方のインタフェースに送らない ) バースト的に廃棄するか ランダムに廃棄するかの指定ができる