P2P SIP 解説 2005/9/3 吉澤 http://muziyoshiz.jp/ 1
自己紹介 無印吉澤 http://muziyoshiz.jp/ 2
P2P と SIP P2P(Peer-to-Peer) Peer = 仲間 同等の人 中央サーバの機能を 個人の PC に分散する技術 Napster, Gnutella 等のファイル共有ソフトで注目 SIP(Session Initiation Protocol) IP 電話 (VoIP) を実現する標準プロトコルの 1 つ SIP サーバがアドレス登録 呼び出しの機能を提供 P2P SIP SIP サーバの機能を分散し 拡張性 耐障害性を向上 オープンなプロトコル 既存の SIP 技術を流用可能 3
目次 1 IP 電話プロトコル SIP 2 P2P 技術 DHT 3 P2P SIPの技術解説 4 今後の課題と可能性 4
目次 1 IP 電話プロトコル SIP 2 P2P 技術 DHT 3 P2P SIPの技術解説 4 今後の課題と可能性 5
SIP(Session Initiation Protocol) IETF(Internet Engineering Task Force) が標準化 単純で 拡張性の高い IP 電話プロトコル HTTPに似たテキストベースの呼制御メッセージ セッション確立の手順が単純 2 セッション確立 ( 相手の呼び出し ) SIP サーバ (Registrar, Proxy) IP Network 1 アドレス情報の登録 ( ログイン ) SIP UA (User Agent) データ ( 音声 動画など ) SIP UA 6
SIP サーバの機能 1 アドレス情報の登録 ( ログイン ) Location Service 登録 ユーザ名 sip:iwata@example.com アドレス情報 192.0.2.1 SIP サーバ REGISTER SIP UA (yoshiz) 200 SIP UA (iwata) ユーザ名 (sip:iwata@example.com) アドレス情報 (192.0.2.1) 7
SIP サーバの機能 2 セッション確立 ( 相手の呼び出し ) Location Service ユーザ名 sip:iwata@example.com アドレス情報 192.0.2.1 ユーザ名 SIPサーバ INVITE To:iwata アドレス情報 INVITE To:iwata SIP UA (yoshiz) データ ( 音声など ) SIP UA (iwata) データ通信に使うアドレス メディア種別 ( 音声 動画 ) コーデック 8
SIP の基本シーケンス セッション確立時 SIP UA(yoshiz) INVITE To:iwata 100Trying SIP サーバ ユーザ名 sip:iwata@... アドレス情報 192.0.2.1 INVITE To:iwata SIP UA(iwata) 180Ringing 180Ringing 200OK ACK 200OK ACK データ ( 音声 動画など ) 9
SIP の基本シーケンス セッション終了時 SIP UA(yoshiz) SIP サーバ SIP UA(iwata) データ ( 音声 動画など ) BYE 200OK BYE 200OK 10
目次 1 2 IP 電話プロトコル SIP P2P 技術 DHT 3 P2P SIP の技術解説 4 今後の課題と可能性 11
初期の P2P 技術 Hybrid P2P (ex. Napster) Search Server Peer Peer Peer Peer Transfer サーバが単一障害点 (Single Point of Failure) Pure P2P (ex. Gnutella, Freenet, Winny) Search (Flooding) Peer Transfer Peer Peer Peer Peer Peer ノード数が増加すると 検索メッセージ数が急増 Peer 検索がどれくらいで終わるか保証できない 12
DHT(Distributed Hash Table) DHT (ex. Chord, CAN, Pastry, Tapestry などのアルゴリズム ) search Peer Peer Peer Peer Transfer Peer Peer Peer Peer ノード数が増加しても 検索メッセージ数は急増しない コンテンツが存在しない場合 それが明確に分かる 平均探索数は DHT アルゴリズムに依存例 :Chord の場合は O(logN) (N はノード数 ) 13
DHT の特徴 特徴 1 ハッシュ関数を用いて ノードとコンテンツを対応付け ハッシュ関数文字列などのデータを与えると 決まった範囲の値を返す関数 ( 例 :SHA-1 は 返り値が 160 ビットなので 0~ 2 160-1 の範囲 ) 192.0.2.1 192.0.2.2 ノード ノード コンテンツ Skype の仕組み.pdf SHA-1 (192.0.2.1) SHA-1 (192.0.2.2) SHA-1 ( Skype の仕組み.pdf ) 近いもの同士を対応付け 0 2 160-1 14
DHT の特徴 特徴 2 局所的な知識を持つノードが協調動作して探索 ( 近くの情報は細かく 遠くの情報はおおざっぱに ) 例 :192.0.2.1 のノードがファイル名 Skype の仕組み.pdf を検索 SHA-1 (192.0.2.1) ノード Skypeの仕組み.pdf のハッシュ値を計算 192.0.2.2 知ってる中で一番近そうな人に聞く ノード コンテンツ SHA-1 ( Skype の仕組み.pdf ) 0 2 160-1 15
DHT の特徴 特徴 2 ハッシュ値とノードの関係を表すテーブルを管理局所的な知識を持つノードが協調動作して探索 分散ハッシュテーブル ( 近くの情報は細かく 遠くの情報はおおざっぱに 検索結果はコンテンツ or その位置情報 ) 名前が厳密に一致していないと検索失敗 例 :192.0.2.1 のノードがファイル名 Skype の仕組み.pdf を検索 SHA-1 (192.0.2.1) ノード Skypeの仕組み.pdf のハッシュ値を計算 192.0.2.2 知ってる中で一番近そうな人に聞く ノード コンテンツ SHA-1 ( Skype の仕組み.pdf ) 0 2 160-1 16
DHT の特徴 特徴 3 ノードの参加 離脱時に コンテンツの引き継ぎと近隣ノードのハッシュテーブル更新が必要 参加 ノード ノード ノード 0 SHA-1 (192.0.2.1) SHA-1 (192.0.2.99) 0 SHA-1 (192.0.2.1) 離脱 17
SIP と DHT SIP(VoIP) に必要なのは 単純な名前解決 リアルタイム通信のため 名前解決の速度が重要 DHT は SIP の Location Service に適している SIP サーバ (Registrar, Proxy) IP Network ユーザ名 sip:yoshiz@example.com 名前 アドレス情報 192.0.2.1 コンテンツの位置情報 SIP UA SIP UA 18
目次 1 2 IP 電話プロトコル SIP P2P 技術 DHT 3 P2P SIP の技術解説 4 今後の課題と可能性 19
P2P SIP に関する提案 P2P SIP のモデル P2P over SIP D. A. Bryan(College of William and Mary) K. Singh and H. Schlzrinne(Columbia University) SIP using P2P A. Johnstons(MCI) 最初の論文は 2003 年 12 月 (P2P over SIP の提案 ) 2005 年初頭から IETF の SIPPING WG で議論が活発化 20
P2P SIP のモデル P2P over SIP SIP using P2P P2P SIP overlay network P2P network INVITE INVITE ユーザ名 アドレス情報 INVITE SIP UA SIP UA SIP UA SIP UA SIP メッセージを用いて P2P プロトコルを実装 Chord over SIP の提案あり SIP の Location Service のみ P2P プロトコルで置き換え 21
Chord 一次元座標をリングにした 比較的単純な DHT ハッシュ関数は SHA-1(Secure Hash Algorithm 1) を使用 2001 年に発表 ( 同時期に CAN,Pastry,Tapestry も ) ハッシュ値が自ノードより小さいコンテンツを管理 2 0, 2 1,..., 2 m-1 だけ先の座標を管理しているノードを事前に調べておく (m はハッシュ値のビット数 ) finger table 2 160-1 0 22
P2P over SIP の動作 1 P2P(Chord) ネットワークへの参加 ( ハッシュ値が 0~15 の範囲の動作例 ) 0 11~14 の範囲をノード 14 に任せる 14 12 10 UA 13 より先を知っているのはノード 3 8 2 6 4 UA UA (2)302 (4)200 (3)REGISTER (1)REGISTER ( ノード登録 ) UA ノード 3 へたらい回し (REDIRECT) 192.0.2.4 Hash(192.0.2.4) = 14 23
P2P over SIP の動作 2 アドレス情報の登録 sip:yoshiz@example.com Hash(sip:yoshiz@...) = 4 14 UA 0 (1)REGISTER (2)302 ( ノード 5 へ ) 2 UA 12 4 4 10 UA (3)REGISTER (4)200 8 6 UA ユーザ名 sip:yoshiz@... アドレス情報 192.0.2.4 24
P2P over SIP の動作 3 セッションの確立 ( ノード 10 から sip:yoshiz@example.com を呼び出し ) 14 UA 0 (1)INVITE 2 UA 12 (2)302 ( ノード 5 へ ) 4 4 UA 10 (3)INVITE 8 UA 6 (4)302 (192.0.2.4 へ ) ユーザ名 sip:yoshiz@... アドレス情報 192.0.2.4 25
P2P over SIP の動作 3 セッションの確立 ( ノード 10 から sip:yoshiz@example.com を呼び出し ) データ ( 音声 動画など ) 14 UA 0 2 UA 12 (5)INVITE (6)200 (7)ACK 4 4 UA 10 8 6 UA ユーザ名 sip:yokota@... アドレス情報 192.0.2.4 26
SIP using P2P 具体的な提案はまだ P2P over SIP を推奨しない理由 SIP 独自である このような Location Service は SIP 以外にも応用できる REGISTER 本来の意味と違う REGISTER は本来 Registrar と SIP UA の間でのみ使われる REGISTER のリダイレクトは一般的でない (REGISTER の中継を許すことによるセキュリティの問題 ) SIP によるメッセージ転送はオーバヘッドが高い テキストメッセージ トランザクション状態の管理 27
その他の提案 Industrial-Strength P2P SIP(Nimcat Networks) P2P SIP への要求 既存の VoIP と同等のサービスを提供するために必要な機能 異機種ネットワークのサポート 不在端末への呼び出し (call forwarding, voicemail) ネットワークを複数のゾーンに分割 ネットワーク管理機能の提供 セキュリティ P2P Layer と SIP Layer は分離すべき 28
目次 1 2 IP 電話プロトコル SIP P2P 技術 DHT 3 P2P SIP の技術解説 4 今後の課題と可能性 29
P2P SIP の課題 技術的な課題 ユーザ名の一意性 セキュリティ NAT 越え ビジネス的な課題 P2P SIP の適用先 30
ユーザ名の一意性 同じ名前のユーザが複数存在する可能性 ユーザ名の割り当て ユーザ名 (SIP URI) の重複を防ぐためには 名前空間を管理する権威 (Naming Authority) が必要 ユーザ名の認証 ログイン時に そのユーザ名を使う権利があるかどうかを認証するための認証機関 (Certificate Authority) が必要 ログイン後も 他ユーザへの成りすましを防ぐ仕組み 31
セキュリティ メッセージ (DHT, SIP) の経路上に悪意あるノード DoS 攻撃 メッセージを破棄 または正しくないノードへ転送 成りすまし メディアデータ ( 音声 動画など ) の盗聴 通信履歴の監視 (call forwarding 含む ) voicemail の覗き見 SPIT(Spam over Internet Telephony) 32
セキュリティ ( 対策案 ) DoS 攻撃 悪意あるノードを排除する仕組みを持つ DHT アルゴリズム ( リアルタイム通信に適した評判システム ) 任意の座標に侵入できないハッシュ値の計算方法 成りすまし メディアデータの盗聴 voicemail の覗き見 1 回目の通話で自己署名証明書を配布 ( 例 :SSH) S/MIME SRTP 等で暗号化 通信履歴の監視 Freenet のような匿名化技術でメッセージの送信者を隠す (?) SPIT(Spam over Internet Telephony) ホワイトリスト ブラックリスト ユーザ名を頻繁に変えられる環境では対処が難しい 33
NAT 越え Skype のように 他のピアを NAT 越えに使う技術は IETF では提案されていない (SIP P2P SIP) 標準の NAT 越え技術 UPnP(Universal Plug and Play) STUN(Simple Traversal of UDP through NATs) TURN(Traversal Using Relay NAT) ICE(Interactive Connectivity Establishment) P2P 通信を試みて ダメならサーバによるパケット中継 Google Talk はこのあたりの技術を併用? 34
SIP における NAT 越え 専用機器を利用 SIP ALG(Application Level Gateway) SBC(Session Border Controller) NAT の影響を吸収 SBC IP Network SIP サーバ SIP メッセージ SIP UA NAT データ ( 音声 動画など ) SIP UA 35
P2P SIP の適用先 小規模ネットワーク ( 家庭内 中小企業 ) サーバが不要 ネットワークに電話機を挿すだけで自動設定 大規模ネットワーク ( テロ 災害時 ) 中央サーバと分断された際に アドホックネットワークを構築 非常時だけの利用で普及する? SIP 機器に組み込み? 大規模ネットワーク ( コンシューマ向け ) Skype, Google Talk(with Gizmo) 等と競争? 36
企業向け P2P VoIP 製品 Nimcat Networks NimX: 組み込み P2P VoIP ソフトウェア NimX を採用した電話機 (Aastra Technologies Ltd.) ネットワーク管理ソフトを無償配布している ボイスメールの通知ソフト nimx システムを Web ブラウザから管理するソフト Popular Telephony PeerioBiz:P2P VoIP ソフトウェア 過去 Peerio GNUP(VoIP ソフトに電話番号 ) で少し話題に Teledex( サービス業向け PBX ベンダ ) と戦略的提携関係を結んで製品開発 (2005.3) 37
P2P SIP の可能性 P2P SIP の標準化 63th IETF peer-to-peer SIP adhoc meeting(2005.8) WG 化は未定だが P2P SIP の ML が作られ 次回 (11 月 ) の IETF に向けて議論を進める 実用的な P2P VoIP をオープンなプロトコルで再現 Naming Authority や Certificate Authority を持った P2P VoIP の実現方法には まだ不明な点が多い Skype: ログイン時にサーバが認証 企業向け P2P VoIP: 証明書ベースで周囲のピアが認証 (?) ビジネス面は不明だが 研究としては有意義 38
まとめ SIP に P2P 技術 ( 特に DHT) を適用して サーバをなくす試みが注目を集めている P2P SIP SIP のユーザ名 -IP アドレス解決 (Location Service) を DHT で実装することで拡張性を実現 P2P over SIP モデルのプロトタイプ実装が存在する (Chord という DHT を利用 ) P2P VoIPは有用だが 内部動作はまだ不明な点が多く オープンな研究はこれから 39