日経NETWORK 2005.6 『Skype大解剖P51~P65』 by pingpan
みなさん『Skype(スカイプ)』というアプリケーションをご存知でしょうか?ご存知無い方のために簡単に説明させていただきますと、『Skype(スカイプ)』とは、今世界中でもっとも話題になっている無料インターネット電話のこと。国内だろうと海外だろうとSkypeユーザー同士ならホントにタダで電話することができるんです。
ワタクシpingpan、現在遠恋中でして中国に働きに行っている彼女との連絡手段はもっぱら『Skype』利用です。日本-中国でも一切通話料かかないんですよ!!ですので、今の関係を続けられているのも、『Skype』様様かもしれないですね!(笑)
さて、そんな今話題の『Skype』が今月の日経ネットワークの特集に取り上げられていました。
今月の特集を読めば、なぜ数あるインターネット電話の中で『Skype』がこれほどまでに注目をあびているのかがよくわかると思います。
では、『Skype』の機能について簡単に説明してみたいと思います。そもそも『Skype』を使えば何ができるのかといいますと、
1:ファイル転送
2:チャット
3:プレゼンス
4:音声通話
の4つです。
ファイル転送は、特別サーバーを立てなくても簡単にファイル転送できますので、非常に便利です。
チャットは、ユーザーが自由にチャット・ルームを作成できる機能を備えており、最大50人まで同時にチャットができます。
プレゼンスは、自分が他のメンバーに今どのような状態かを通知したりできます。(オンライン、退席中、取り込み中というやつです。)
これら3つは、各種メッセンジャーなども備えていて特別目新しいものではありません。
では、『Skype』が他のメッセンジャーと比べて何が秀でているのかといいますと、4つ目の音声通話なんです。利用したことがある方ならおわかりかと思いますが、なにより音がいいんです。メッセンジャーに付随している音声チャットとは桁違いの音質です。
また、ユーザーがいくら増えてもサービスが重くならず、しかも無料で利用でき、NAT環境でも全く問題なく利用することができます。では、なぜこのようなことが可能なのか、順を追って説明させていただきます。
1:なぜユーザーがいくら増えてもサービス品質が落ちず、しかも無料で利用できるのか?
『Skype』では、呼制御など様々な処理をSkypeユーザーのコンピュータリソースを利用して行っています。
ですので、ユーザーの増加によって『Skype』の提供元であるスカイプ・テクノロジーに(設備投資などの)負担がかかるということが起きないので、無料で提供することができるのです。
具体的な通信方式は次のように行われます。
1:ユーザーがSkypeクライアントを起動する
2:Skypeクライアントが「ログインサーバー」に接続。ここでユーザー認証が行われたり、暗号用の電子証明書の発行を行ったりします。この部分だけはスカイプ・テクノロジーが用意しています。
3:Skypeクライアントが「スーパー・ノード」に接続。「スーパー・ノード」とは、「通話先リスト」を管理しているSkypeクライアントのことで、ある特定の条件を満たしたユーザーのコンピュータから1000台に1台の割合で選ばれる特別なSkypeクライアントのことです。
4:スーパー・ノードから通話先の情報を問い合わせる。
5:問い合わせ情報(発信先のIPアドレスなど)を元に発信先に接続
6:ユーザー同士P2Pで通話。
といった感じです。
「スーパー・ノード」を分散して配置することで、自分が持っていない情報の問い合わせを受けたときは、他の「スーパー・ノード」に問い合わせを行って情報を手に入れます。こうしてSkypeクライアントからの問い合わせを効率的に処理しています。
2:なぜNAT環境やファイアウォールがあっても問題なく接続できるのか?
基本的に、IP電話やメッセンジャーをはじめとするP2PソフトとNAT・ファイアウォールの相性というのはよくありません。とゆーのは、NAT環境では、外からきたパケットは通さないため、最初の接続要求を受けることができずに接続が確立できないからです。
ファイアウォールも、音声パケットを運ぶためのUDPを止めてしまうなどの理由からP2Pソフトにとっては超えるべき壁となることがあります。しかし『Skype』は、NATがあろうがファイアフォールがあろうが、全く問題なく通話することができるのです。
では一体どのような方法でNAT・ファイアウォール越えを実現しているのかといいますと、「スーパー・ノード」が重要な役割を持っています。NAT越えでは、
a:自分と相手のSkypeクライアントのどちらか一方がNAT環境
b:両方がNAT環境
の場合で方式が違うのですが、aの場合は、まず発信側からスーパー・ノードに対して接続要求を送ると、スーパー・ノードが着信側(NAT環境)に発信側情報を通知。そこで、着信側(NAT環境)から発信側にパケットを送れば接続が完了できます。
bの場合は、着信・発信側からスーパー・ノードへ接続を行い、双方のポート情報を調べてもらいます。その情報をもとに、発信・着信側がタイミングを合わしてそれぞれの外側IPアドレスとポート番号あてに音声パケットを送り出します。このように「UDPホール・パンチング」と呼ばれる手法を用いて接続します。
ただし、これが利用できるのは一定の条件(「Cone NAT」)の場合に限られます。では、一定条件を満たさないと接続できないかというと、そーではなくて、P2Pで通信できない場合は、スーパー・ノードが音声を中継することでNAT環境を超えることを可能としています。
一方、ファイアウォールを越えるためには、TCPを使って接続を試みたり、80番ポート(HTTP用)や443番ポート(HTTPS用)を使って接続を試みたりします。以上のようにあの手・この手でNAT環境・ファイアウォールを越えてるんですね!
3:どうして音が良いのか?
これはとてもシンプルな方法で実現しています。項目だけあげますと
a:GIPS社の独自コーデックにより高音域を実現
b:回線の混み具合に応じてコーデックの種類・ビットレートを動的に調整
c:ゆらぎ吸収のバッファの量を動的に調整。
d:音声中継用スーパー・ノードの負荷により動的切り替え
以上のような数ある工夫により携帯電話をもしのぐ音声品質を実現しているわけなんですね!!
まだ、『Skype』を利用していない方は、この機会にヘッドフォンを購入して『Skype』の世界を堪能してみてください!!多くの可能性を秘めた『Skype』。もしかしたら、数年後『Skype』が固定電話の世界を大きく変えてるかもしれませんよ・・・・
※pingpanさん、ありがとうございました。『Skype』の仕組みを知ると面白いですよね。ぼくは、個人的にあの手、この手でNAT、ファイアウォールを越える仕組みに興味があります。(Gene)
日経NETWORKの詳細、購読申し込みはこちら↓