自律分散協調システム論 第12回「Peer-to-peer systems」 中村 修 [email protected] クライアントサーバモデル • インターネット上の通信の基本モデル • 2種類のコンピュータ (明確な役割分担) – サーバ : サービスを提供するコンピュータ – クライアント : サービスを受けるコンピュータ クライアント サーバ あるポート番号でクライアン トからの要求を常に 待ち受けているプログラム クライアントプログラム クライアント サーバプログラム 必要なときにサー バプログラムと通 信して要求を送る プログラム クライアントサーバはSingle Point of Failure • ボトルネック – サーバの計算能力 – ネットワーク帯域 アクセスの集中による 回線の飽和 • ボトルネック解消のアプ ローチ – ロードバランサの利用 – キャッシュ/CDNの利用 – P2Pモデルの導入 Server サーバのダウン Clients 例(1/4) : IRCの負荷分散方法 • IRC(Internet Relay Chat) – サーバを分散し連携処理させる手法 • 一つサーバに処理が集中しない – RFC1459 Client 1 Server 1 Server 2 Hi! グループに1,2,3が 加わってる場合 Hi! Server 4 Client 2 Server 3 Hi! Client 3 Server 4にはグループに加 わったクライアントがない ためメッセージはこない Client 4 例(2/4) : ロードバランシング • 同じIPアドレスで複数のサーバが反応 • ラウンドロビン、URLで、重み付け、負荷、コネクション数、 反応速度などで割り振る • 利点 コネクション要求 – CPU負荷を軽減できる • 問題点 – 負荷分散装置が必要 – ログが分割される – メンテナンス負荷は高くなる 負荷分散装置 例(3/4) : DNSラウンドロビン • 同じ名前で複数のサーバが登録されている • 物理的に別の場所で処理 • www.asahi.comなど www.asahi.comどこ? www.asahi.comどこ? Client 2 • 利点 – 回線資源を 分散利用できる • 問題点 – 均等に負荷が 分散されない – 落ちている サーバにも振る – Cacheがあるため タイムラグがある 209.249.129.20だよ 210.80.197.158だよ Client 1 209.249.129.20 Wwwld2.asahi.com 210.80.197.158 Uunet3.asahi.com 例(4/4) : CDNを利用した負荷分散 • Accelia Durasite http://www.accelia.net/japanese/news/12.html – ファイルを広域に分散しネットワーク負荷を分散 • Akamai http://www.akamai.com/ – クライアントに一番近い、最 適なキャッシュを探す – サーバのかわりにキャッシュ がクライアントに応答 Cache Servers キャッシュを拠点に置き アクセスを分散させる Server • 利点 コンテンツの配置 – CPU資源の分散 – 回線資源の分散 Clients P2Pとは? • Peer-To-Peer – Peerとは端末ノードのこと (中継ノードではない) – Peer(端末)とPeer(端末)が 1対1で直接対等な立場で の通信形態 – 代表的なアプリケーション • ファイル共有・交換・配信型 – Napster • コラボレーション型 – Groove • 分散コンピューティング型 – SETI@home • 特徴 – 耐故障性の実現 – 資源分散が可能 – 自由なランデブー コミュニケーションとは? • • • コミュニケーションには主体がある。 P2Pではこれらは対等のものとしてpeerと呼ぶ。 誰かとコミュニケーションをとるためには、まずその主体同士が、 1. 相手を発見・識別する 2. コミュニケーションを開始する 3. コミュニケーションを終了する ……という手順が必要になる 相手の発見と識別 コミュニケーションの開始 コミュニケーションの終了 クライアントサーバ、P2Pモデルの比較 クライアントサーバ ハイブリッドP2P 中心 : Server ピア ピュアP2P 中心 : Server ピア ピア ランデブーも通信も中心で 行う ランデブーを中心で行い、 通信をピア同士で行う ランデブーも通信もピア同 士で行う WWWなどのインターネッ ト上の大部分のアプリ ケーション Napster MSN Messengerなどの 主要IM Gnutella ,Freenet, Winny 身近なP2Pアプリケーション • ファイル共有 – – – – – – – – Napster Gnutella Morpheus WinMX Winny Share GNUnet BitTorrent • ストリーミング – PeerCast – Joost (Skype) • インスタントメッセンジャー – – – – MSNメッセンジャー ICQ、Jabber 3degrees、Skype Groove、Ariel AirOne • 資源分散 – OceanStore – SETI@home – HyperBee • ネットワークゲーム – Diablo – Age of Empire ファイル共有: P2Pモデルの代名詞 • ファイル共有アプリケーション – ファイルの公開・検索・転送を実現する – WWWとの比較(登場人物と役割は?) • 公開:WWWサーバへのアップロード • 検索:検索エンジン • 転送:ブラウザによるページの取得 • 自律的なコミュニケーションとしてどう実現するか – オリジナル・ファイルは各Peerが分散して保有 – ネットワーク上に分散したファイルからの検索 – ファイルの転送 • 中継転送、キャッシュの利用 • 直接転送 P2Pシステムの台頭 • 第1世代P2Pシステム (Hybrid P2P) – Index Server を利用した情報探索 – データの転送はノード間で実行される • 第2世代P2Pシステム (Pure P2P) – Index Serverを必要としない • 第3世代P2Pシステム – さらにキャッシュ機能を有する 第1世代P2P: Hybrid P2P model • 特徴 – ピアの管理・ファイルの管理をIndex Serverが行う • Index Serverは検索・発見のためのインデックスを管理 – 所持ファイルの一覧をサーバに送信 – 検索条件をサーバに送り、結果をもらう – 公開されているファイルをサーバが制御できる – データの送受信はピア間で行う インデックスサーバ ファイルの検索 自分の持つファイルを登録 ファイルを取得 第1世代P2Pの特徴 • 利点 ハイブリッドP2P – サーバ・クライアントモデル におけるサーバへの負荷 集中を分散により軽減でき る • 欠点 中心にインデクッス・ サーバが存在 – Index Serverが負荷集中 点となる ピア インデックスサーバに障害が発 生すると、システム全体が停止 する 例: MSN Messenger サインイン時の通信 ファイルの送受信 メッセージの送受信 サーバ ・セッションの開始 ・コンタクトリスト メッセージ サインイン情報 メッセージ ファイル転送 例: Napster • Napster – Napster社のファイル共有ソフト – 2000年7月に音楽関係団体に提訴をされ、サービス差し止め 第2世代P2P: Pure P2P model • Index Serverを用いないデータ共有 – Index Serverに対する負荷集中の分散 – 耐故障性 • 異常ノードの役割を他ノードが引き継ぎ可能 – 資源分散 • 計算機資源・ネットワーク資源の分散 – ただし,サービス管理が困難となる • Index Serverがあれば,ノード管理・データ管理が可能 P2Pモデルとオーバーレイネットワーク • オーバーレイネットワーク(P2Pネットワーク) – Pure P2P modelを実現するためのネットワーク – 一般にアプリケーション・サービス毎に構築される – ピアが協調することにより自立的に管理・構築される サービスA サービスB トポロジを考慮しないデメリット • IPネットワークのトポロジとの分離 – 自分がピアを張る相手ノードの地理的(ネットワーク的) な接続関係は考慮しない • 実は相手は地球の裏側かも…… – 実際に転送できる帯域が細い! – 返事が返ってくるのが遅い! Pure P2P modelにおけるデータ検索 • インデックスサーバが存在しない – ノード情報を取得するための仕組みが必要 • IPアドレス、URI、ファイル情報 などなど • 情報の検索方式による分類 – Unstructured Overlay Network • Floodingによりデータを見つけ出すモデル • 例:Gnutella, Winny など – Structured Overlay Network • Index Serverの機能をOverlay Networkノードの協調で実現 • Distributed Hash Table Gnutella • 自律的に参加するPeerの集合体 – – – – Index Serverに依存しない P2Pネットワーク上で検索要求を転送(TTLは最大7) 検索者が積極的にファイルを探しに行く ファイルの所持者は受動的 持ってないよ! 持ってないよ! 持ってないよ! 持ってないよ! 持ってないよ! 持ってないよ! Bさん Aさん あのファイルが欲しい… 皆に聞いてみよう! もってるよ! 送るね! Winny • Pure P2P model – Index Serverに依存せず • 堅牢性の実現 – 中継したキャッシュを再公 開 • 高い匿名性 – 間接的な接続により、取得 者には公開元が不明 – 暗号化により、中継者には 通信内容が不明 • Winnyを悪用した犯罪行 為が多発 – 知的所有権を侵害 – 摘発されにくかったが… Winny悪用による逮捕者とそのインパクト • 2003年11月27日に逮捕者がでた段階で日本中の トラフィックは2割減少した http://www.zdnet.co.jp/news/0311/27/nj00_winny.html http://www.mfeed.co.jp/jpnap/fr-traffic.html Winnyの悪用者が逮捕・製作者宅捜索 http://www.asahi.com/national/update/1127/035.html Winny: ネットワーク • ノードの持つネットワーク速度(自己申告)に応じて階層化 より高速 より低速 P2Pの鶏と卵問題 • 何も知らないピアがP2Pネット ワークに参加する • 1つでもP2Pネットワークのノー ドを知らないと参加できない • P2Pネットワークに参加してい ればピアについて認知できる • 中心のないシステムの宿命 オーバレイ ネットワーク どうやってオーバレイ ネットワークに参加? ピア • Winnyでは「初期ノード」の登 録を手動で行うことで解決 ランデブーも通信もピア同 士で行う Winny: 広告と検索 • 公開者がより積極的に広告を行う – 公開者は、ファイルの情報をP2Pネットワークを通じて 隣接するPeerに広告 – 広告された情報と検索要求を各Peerが比較 持ってないよ! 持ってないよ! 持ってないよ! Bさんのファイ ルをAさんが 探してる!! Bさんがあの ファイルを持ってる Bさんがあの ファイルを持ってる Cさん Aさん Bさん あのファイルが欲しい… 皆に聞いてみよう! このファイルを持ってることを 皆に教えてあげよう! 広告 Winny: ファイルの公開 • オリジナルファイルからキーとボディを生成 upload folder キー(ファイルの要約情報) file.ppt ファイルボディ(ファイルの本体) • キーに含まれる情報 – – – – ファイルサイズ 更新時刻 ハッシュ値 ファイルの所在を表すIPアドレス・ポート番号 など • ファイルの公開と同時にキーがネットワーク上を拡散 Winny: ファイルの転送 • Winnyでは中継転送とキャッシュを採用 – 第三者を介在する – 匿名性を実現 • Napster、WinMX、Gnutellaは相手に直接接続 – 公開者と検索者だけ転送が完結 Winny: 中継転送 • 中継転送 – P2Pネットワークでの中間のPeerが転送を中継 – 下の例では検索と広告を合致したCさんが中継転送 – 転送のパフォーマンスを犠牲にすることで、キャッシュを持つ Peerを増やし冗長性を確保 Bさんのファイルを 中継してあげよう! Cさん Aさん Bさん Cさんが持ってたんだね! 私のファイル人気があって 配るのが大変…… Winny: キャッシュ • キャッシュ – ファイルを取得したPeerや、中継転送したPeerがそのファイルの 複製を第三者に自動的に再公開 – 耐故障性の実現(冗長性の確保) – 検索効率の向上 中継したファイルを他の人 にも配って良いよね! Cさん Aさん Bさん このファイルを他の人にも 配ってあげよう! 他の人も配ってくれると 楽で良いね! Winny: 中継転送とキャッシュによる匿名性 • 一度流れたデータを誰も消せないシステム – キャッシュとして多数のPeerに情報が残っている – ソフトの例:Freenet、Winny – 用途の例:P2P掲示板、ファイル共有 • 解決しなければならない問題 – 公開した元の人間の特定 – 法的に問題のあるコンテンツ の転送を知らずに行えない ようにする (ということが必要かもしれない) Bさんのファイルを 中継してあげるね! Aさん Cさん Bさん Cさんが持ってたんだね! 中継したファイルを他の人 にも配って良いよね! Aさん Cさん このファイルを他の人にも 配ってあげよう! 私が最初に公開したと わからなくなる! Bさん Winny: ネットワークの上流と下流 • 能力の高いノードにキーとキャッシュが集まる 高速なノードほど データの流量が多い (処理に負荷がかかるがデータは大漁) キャッシュ キャッシュ キー キー キー キャッシュ キャッシュ キー キャッシュ キャッシュ キー キャッシュ キャッシュ キー より高速 キー キー キー オリジナル ファイル より低速 キー キー オリジナル ファイル キャッシュ 低速なノードほど データの流量が少ない Winny: クラスタリング • 検索嗜好のより近いものでグルーピング – より効率のよい検索が可能となる 嗜好A 嗜好B 嗜好C 全体の輪の中 からファイルを探索 クラスタA クラスタB クラスタC 輪を絞って ファイルを探索 Unstructured Overlay Networkの問題点と解決手法 • Unstructured Overlay Networkの問題点 – ネットワーク負荷の増加 • Floodingを利用するために通信量が増加 – 全てのデータを確実に見つけられない • 検索対象が発見できない可能性がある • いくつかの解決手法 – Structured Overlay Network を利用する – P2Pネットワークの階層化 – アプリケーションの動作を工夫(Winnyの例) Structured Overlay Network • Unstructuredに比べ検索効率が高い – だいたい発見できる(としている) • 検索時のトラフィックの抑制を実現 • Distributed Hash Table (分散ハッシュ表)を利用 – 検索対象の発見を効率化する仕組み • ルーティングによって対象のデータを探索 – 検索対象を複数のノードで分散管理する仕組み • ハッシュ値とハッシュ関数 – 提案されているDHTプロトコル • Chord, CAN, Pastry, Tapestry, Kademlia, etc.. – DHTを実装しているソフトウェア • BitTorrent, Warez P2P, eMule, etc.. ハッシュ値とハッシュ関数 ハッシュ関数ではA≠Bの場合、F(A)≠F(B)が成り立つ Wikipedia, Hash Function, http://en.wikipedia.org/wiki/Hash_table ハッシュテーブルとは • キーと値の組(エントリと呼ぶ)を複数個格納し、キーに対 応する値をすばやく参照するためのデータ構造 Wikipedia, Hash Table, http://en.wikipedia.org/wiki/Hash_table DHTの特徴 • 利点 – flooding検索に対してのネットワーク的負荷軽減 – オブジェクトを漏れなく,かつ高速に探索することが可能 • 数10万ピアぐらいが限界だとされているが、DHTを使うと数10億ピアを探 索範囲とすることが可能となる (Wikipedia: 分散ハッシュテーブル) • 欠点 – 実装が難解 • データの保持,データの分散,データの検索,とキーワードは様々 – データ検索の柔軟性がない • 完全一致探索しか行えない – 正規表現のような複雑な検索をDHTのみで実現することは困難 – これを解決するための研究は複数存在 DHTのアルゴリズム(代表的な例) • Chord – 円状スキップリスト • CAN – N次元トーラス • Kademlia, P-Grid – Binary Tree • Tapestry, Pastry – Plaxton Tree Wikipedia, Hash Table, http://en.wikipedia.org/wiki/Hash_table Chord • Creating Chord Ring N1 K54 SHA-1によるHash結果に基づき m-bitsのハッシュ値をアサイン N56 N8 N51 K10 N14 N48 N21 K24 N42 K38 N32 N38 K30 各担当ノードに配置 Chord • Lookup on Chord Ring(一番簡単なモデル) N1 K54 N56 発見 Lookup(K54) N8 Next Hop N14 Routing Table @ N8 N51 N48 N14 K54を発見するまで 各ノードの経路表により 順番にノードを探索 Next Hop N21 Routing Table @ N14 N21 この方法では データの発見に時間がかかりすぎる N42 N32 N38 Chord • Lookup on Chord Ring(探索の効率化) N1 K54 N51 Finger Table @ N8 Lookup(K54) N56 発見 N8 K54を発見するまで 順番にノードを探索 N14 N48 N21 Finger Tableに基づき N42から探索を開始 N42 N32 N38 N8+1 N14 N8+2 N14 N8+4 N14 N8+8 N21 N8+16 N32 N8+32 N42 近隣ノードについてのノードリスト (経路表とは別に持つ) Kademlia • Creating Kademlia Tree – ハッシュキーを160bitsのハッシュ空間に配置 160bitsのハッシュ空間 11..11 1 1 0 0 1 1 0 1 1 0 1 0 00..00 0 1001 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 Kademlia • Searching Kademlia Tree – ハッシュ空間からXORによりキーを探索 Lookup(1011) 発見 11..11 1011 00..00 1 1 0 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 0 0 1 1 0 1 0 1 0 1 0 Pastry • Example of Routing Table on node 83123456789abcdef0123456789abcdef 一致長 Node0 Node1 NodeD NodeE NodeF 0 0….. 1….. d….. e….. f….. 1 80… 81… 8d … 8e … 8f … 2 830.. self 83d.. 83e.. 83f.. 3 8310. 8311. 831d. 831e. 831f. : : : : : : 831..e0 831..e1 831..ed 831..ee self 32 ・・・ 一致長の桁数の数字がNodeXに従って変化 自身はself Pastry Lookup(d46a) • Searching with Pastry Algorithms 65a1 65a1とd46aのprefix一致長は0 経路表にd13dがあったので、転送 d13dとd46aのprefix一致長は1 一致 0 … 4 … 一致 f 0 0 1 … d 0 e f d13d 1 d421 2 2 3 3 d13d d461とd46aのprefix一致長は3 経路表にd421があったので、転送 一致 0 1 2 … f 0 1 d421 一致 d421とd46aのprefix一致長は2 0 … 6 0 … 2 3 f 経路表にd461があったので、転送 d462 経路表にd462があったので、転送 d462 1 2 3 d461 d461 発見 DHT関連の論文 • Ion Stoica, Robert morris, David Liben-Nowell, David R. Karger, M. Frans Kaashoek, Frank Dabek, and Hari Balakrishnan, Chord: A Scalable Peer-to-Peer Lookup Protocol for Internet Aplications, IEEE/ACM Trans. Networking, Vol.11, No.1, p. 17-32, Feb. 2003. • Sylvia Ratnasamy, Paul Francis, Mark Handley, Richard Karp, and Scott Shenker, A Scalable Content-Addressable Network, In Proc. ACM SIGCOMM 2001, August 2001 • Antony Rowstron and Peter Druschel, Pastry: Scalable, decentraliszed object location and routing for large-scale peer-to-peer systems, Lecture Note in Computer Science, Vol.2218, pp. 329-350, 2001. • Ben Y. Zhao, John Kubiatowicz, and Anthony D. Joseph, Tapestry: An Infrastructure for Fault-tolerant Wide-area Location and Routing, Technical Report UCB/CSD-01-114, Computer Science Division, U. C. Berkeley April 2001, 55 • Petar Maymounkov and David Mazieres, Kademlia: A Peer-to-peer Information System Based on the XOR Metric, In Proceedings of IPTPS02, Cambridge, USA, March2002 Skypeと自律分散協調 ファイル交換でないP2Pソフトウェアの例: Skype • 各ノードの自律性はどのようになっているか? • 何を分散し、何を分散していないか? • 分散しないことによって担保されているのは何 か? • Loginプロセスを中心に考察 Skypeとは? • KaZaaの開発者によって開発されたVoIPクライアント • 音声通話とテキストメッセージングが可能 • MSN/Yahoo IMアプリケーションと以下の点で類似する – – – – 音声通話ができる テキストメッセージングができる カンファレンスができる バディリストを備える • 基本となるプロトコル、技術はまったく異なる SkypeのLook and Feelとできること • できること – 音声通話 – テキスト・メッセージング – ファイル送信 • ユーザ識別子 – Skype ID – 一意性のあるID – バディリストに登録できる • バディリストから選んで – 通話 – チャット – ファイル送信 Skype Network • Skypeの利用するオーバーレイネットワーク • 2種類のノード – Ordinary Hosts • Skypeアプリケーションが導入され、音声通話とテキストメッ セージングに利用 • 普通はこれ – Super Nodes (SN) • • • • Skypeネットワークにordinary hostsが収容される端点 Global IP addressが利用できる 十分なCPU、メモリ、帯域を備える 自動的に選択される Skype Login Server • User namesおよびpasswordを管理 し、ユーザの認証を行う • User nameがSkype名前空間内で 一意であることを保証 • Skypeノードではないものの、Skype ネットワークの重要なエンティティで ある • ordinary hostsはログインの際、 super nodeに接続するだけでなく、 Skype login serverへも接続 Host Cache (HC) • オーバレイネットワークを構成するためにSkype Client (SC)内に記録更新される情報 – Super Node の IP address / port number – 少なくとも1つは利用できるエントリが無いと、動作しない – SCとして2日間動作すると、HCとして最大200エントリまで増え ることが観測されている – Skype Node内のWindows registryに記録される host/peer cacheは目新しい ものではなく、Chordでは、 Finger tableとしてノード発見に 利用されている (参考) Skypeでlistenしているport • connectionダイアログボックスで設定された TCP/UDPポート • これはインストール時にランダムに設定される • 通常のインターネット上のプロトコルのように一定 しない • それ以外に80/TCP (HTTP)および443/TCP (HTTPS)を利用する Buddy Listの利用 • Buddy ListをWindows registry内に保存 • 電子証明および暗号化さ れている • SCにローカルに保存され ているだけで中央には一 切おかれない • ユーザがSCとして異なる マシンを利用した場合、バ ディリストを再構築する必 要がある (参考)Skypeで利用しているCodec • iLBC • iSAC • 未知のコーデックがあるかもしれない • GlobalIPSound – iLBCおよびiSACを実装し、Skypeがパートナーであると彼らの WEBで明言している – SkypeはGlobalIPSoundのcodecを使用しているものと推測さ れる – 測定の結果50-8,000 Hz がSkypeのcodecで利用可能であった – これはwideband codecの特徴として認められる Skypeの暗号化 • 通話とインスタントメッセージングを暗号化 • AES(Advanced Encryption Standard, Rijndel)を 使用と明言 • 256-bit暗号化 • 1.1 x 10^77の鍵を使用可能 • また、AES共通鍵のネゴシエーションに1536 2048 bitのRSAを使用 • ユーザの公開鍵がログイン時に使用されている NAT/Firewall通過 • STUNを利用NAT/Firewallの種類特定し、UDP Hole punchingを 使って通信していると推測 • UDP Hole punchingが使用出来ない場合はスーパーノード越しに 通信 • NAT/Firewall通過のためのサーバは存在しないと推測される • SCは定期的にNAT/Firewallについて調査し、結果をWindows Registry内に保存 UDP Hole punchingとは? 192.168.0.15 133.27.4.20 パケット (1) (2) 133.27.4.20:1234 宛にパケットを送ると到達 203.178.141.25 パケット P2P-friendly NAT パケットのsourceを見ると 133.27.4.20:1234 Skypeの動作は以下に分類できる • • • • • • • startup login user search call establishment tear down media transfer presence messages (参考) Startup • SCのソフトウェアが導入され、初めて動作する際 にSkype server (skype.com)にHTTP 1.1 GETリ クエストを送る – このリクエストには‘installed’というキーワードが含まれ る • 次に、新しいバージョンのSkypeが利用可能かを 判断するためにHTTP 1.1 GETリクエストを送る – このリクエストには‘getlatestversion’というキーワード が含まれる Loginプロセスとは? • 何も知らないピアがオーバレイ ネットワークに参加する • 1つでもオーバレイネットワーク のノードを知らないと参加でき ない • オーバレイネットワークに参加 していればピアについて認知 できる • 鶏と卵 • 中心のないシステムの宿命 オーバレイ ネットワーク どうやってオーバレイ ネットワークに参加? ピア ランデブーも通信もピア同 士で行う Skype Loginの2つの意味 • Skypeネットワークへの参加 – オーバレイネットワークにピアとして参加する – 場合によってはSuper Nodeにもなりうる • SkypeID認証 – Skype IDが一意であることを保証している基盤 – 認証を行う オーバレイネットワークへの参加 • 自分以外のピアおよびバディに対してオンラインになった ことを広告する • NAT/Firewallの背後にいるかどうか、型の判定 • Global IP AddressのSkypeピアを発見する • Host Cache (HC)は1つ以上の有効なエントリがなければ いけない • HCに有効なエントリがない場合、Skypeネットワークに参 加できない • このばあい、login failureとなる Login ServerによるSkype ID認証 • SNにSCが接続すると、SCはUser Name / passwordを 用いてLogin Serverに認証される • Skype User Nameの一意性を保証する役割 • Login Serverは、Skype Networkにおける唯一の中央集 権的なエンティティ • 観測によると – SCはいつも80.160.91.11というIP addressのノードとTCPで通 信していた – これがlogin serverではないかと思われる – DNS(NSレコード)の逆引き • ns14.inet.tele.dk • ns15.inet.tele.dk 実際のLogin Processの流れ • HCを空にしてみる – SC内のキャッシュをクリアした – 1つのエントリを記録させた – このエントリのマシンはSkypeが動作して いない – SCはログインを試みた – HCに無効なエントリしかないので、Skype ネットワークに到達できないが、 – UDPパケットをエントリのマシンに向けて 送ることがわかった • 大体5秒くらい返答がない場合、SCは TCPコネクションを先ほどのエントリに張 ろうとする – これは、HCのIP Addressへ80(HTTP)で の通信を試みる – さらに失敗すると、HCのIP Addressへ 443 (HTTPS port)での通信を試みる – その後大体6秒くらい待つ • login failureとなった後、それら全てのプ ロセスをさらに4回行った Bootstrap Super Nodes • ソフトウェアのインストール後に初めてログインした場合 – – – – 7つのエントリを持っているらしい まれに違うこともあるが大体ここへつなげに行く Bootstrap Super Nodesと呼ぶ 7つ以上のHCで初期化される場合も、この7つは必ず含まれている • 逆引きにより4つのISPにあることが分かる – – – – – – – – IP address:port Reverse lookup result 66.235.180.9:33033 sls-cb10p6.dca2.superb.net 66.235.181.9:33033 ip9.181.susc.suscom.net 80.161.91.25:33033 0x50a15b19.boanxx15.adsl-dhcp.tele.dk 80.160.91.12:33033 0x50a15b0c.albnxx9.adsl-dhcp.tele.dk 64.246.49.60:33033 rs-64-246-49-60.ev1.net 64.246.49.61:33033 rs-64-246-49-61.ev1.net 64.246.48.23:33033 ns2.ev1.net まとめ:Skypeにおける鶏と卵の解決方法 • Skypeネットワークへの参加 – まずは、 Bootstrap Super Nodesをハードコーディングしておき、 Super Nodeのリストをどんどん追加・更新 • SkypeID認証 – Skype IDが一意であることを保証している基盤 – 認証を行うエンティティは世界で1つのLogin Server – 唯一、分散できていない部分 • 議論 – DNSSECのような信頼の伝播ができているわけではない – DoS攻撃があったら? 参考文献 • An Analysis of the Skype Peer-to-Peer Internet Telephony Protocol – Salman A. Baset and Henning Schulzrinne – Department of Computer Science Columbia University, New York NY 10027 – {salman,hgs}@cs.columbia.edu – September 15, 2004 • http://www1.cs.columbia.edu/~library/TRrepository/reports/reports-2004/cucs-039-04.pdf
© Copyright 2024 ExpyDoc