[運用] 仕事に使うSkype 第2回 Skypeの通話を実現するネットワークの仕組み デジタルアドバンテージ 島田 広道 |
前回は、仕事で使ううえでSkypeに何ができるのか、どんな機能が利用できるのか、そしてSkypeのセキュリティについて説明した。低コストで自由度の高いコミュニケーション手段としてSkypeは確かに便利そうだ。ただ、社内システムを預かる管理者としては、仕組みのよく分からないものを導入するのはためらわれるところだ。それに、導入にあたって既存システム側に何か変更が必要なのかどうかも気になる。
そこで今回は、Skypeのインストールに進む前に、Skypeのシステムで特に重要な役割を担うネットワークの仕組みについて、簡単に説明したい。またSkypeを社内システムで利用するのに必要なネットワーク設定についても説明する。
Skypeが構成するネットワークの仕組み
システム管理者が慣れている社内システムのネットワークに比べ、Skypeのネットワークの仕組みはある意味「異質」である。まずはSkypeのネットワークのベースである「PtoP」から説明し、次に実際のSkypeのネットワーク構成についても簡単にまとめる。
■P2Pネットワークを採用
SkypeはPtoP(Peer to Peer)というネットワーク技術をベースに開発されている。PtoPとは簡単にいえば、ネットワークを構成する通信ノードがそれぞれ(ほとんど)対等な役割を持ち、それらが相互に接続されているようなシステムである。これは、クライアント/サーバ型のシステムと対比されることが多い。例えばクライアント/サーバ型システムであるファイル・サーバとそのクライアントの場合、クライアントからの要求に応じてファイルを送信したり逆に保存したりするのはファイル・サーバだけである。クライアント側がほかのクライアント(あるいはサーバ)に対してファイルを提供したりすることはない。明らかに各ノードの役割が異なっている。
これに対してPtoPでは、いずれのノードもクライアントとサーバ双方の役割を担う。あるノードが別のノードからのファイルを受け取って保存したかと思えば、そのノードもこれまた別のノードにファイルを保存してもらう、といった具合にクライアント/サーバという明確な区別がなく、それぞれの役割は対等である。
クライアント/サーバ型システム(上)とPtoP型システム(下)の比較 |
クライアント/サーバ型システムの場合、システム全体を統括するサーバとそれに接続してサービスを受けるクライアント、といったように明らかに各ノードの役割が異なる。一方、PtoP型システムでは、ほぼ同じ役割を持ったノード同士が対等に接続してシステムを構成する。 |
こうしたネットワーク構造ゆえに、PtoPでは特定のノードに負荷が集中しにくく、ボトルネックが生じにくいので、大規模なネットワークを構築しやすいというメリットがある。クライアント/サーバ型システムだと、クライアント数やデータ容量が増えるにつれて、サーバやそこまでの経路に負荷が集中してボトルネックとなり、全体の性能を押し下げてしまうことがある。だがPtoPの場合は、ノード同士の役割が対等なので処理を分散しやすく、特定のノードへの負荷集中を抑えられる。
さらにPtoPは、ネットワーク・トラブルに強いという特徴も持っている。クライアント/サーバ型だと、サーバが故障したりサーバとクライアント間をつなぐ経路が切断されたりすると、サーバからのサービスはすぐ停止してしまう(それを防ぐためにサーバとその周辺機器の耐障害性を高める技術が存在するわけだが)。だがPtoPでは、ネットワーク中のある経路が切断されたり、あるノードが動作不能に陥ったりしても、別の経路やノードで代替して、システム全体としてみれば大規模な障害を起こすことなく、処理を続行できるようになっている。具体的には、データ(ファイル)を複数のノードに重複して保存したり、ノード間を複数の経路で接続したりしている。
■実際のSkypeのネットワーク構成
さて実際のSkypeのネットワークだが、理想的なPtoPとは若干の違いが見られる。まずSkypeのユーザー登録やログイン時のユーザー認証などを担当する専用のサーバが少数ながら存在する。これらのサーバの負荷はそう多くないし、セキュリティやユーザー管理のためには、PtoPで分散管理する必要はないからだ。これに対して通話時の通信やノード間のルーティングといった、いわばSkypeネットワークの中核機能はサーバではなくPtoPの各ノードが担当する。
またPtoPではノード同士が対等と述べたが、Skypeのノードは完全に対等ではなく、役割の異なる3種類のノード、「通常ノード」「スーパーノード」「リレー・ノード」が存在する。ただしいずれもSkypeアプリケーションを実行する、通常のコンピュータである。
■通常ノード
ユーザーがコンピュータ(例えばクライアントPC)上でSkypeアプリケーションを起動すると、Skypeのログイン用サーバで認証を受けた後、最初は「通常ノード」としてSkypeネットワークに参加することになる。そしてスーパーノードに依頼して通信相手を見つけ、その後さらに、見つかった相手と今度は直接接続を確立するか、もしくはリレー・ノードで中継してもらって、音声やビデオ通話などを行う。
すべてのノードは最初に通常ノードとして通信/通話処理などを行うが、状況によっては、ごく一部のノードが次のスーパーノードやリレー・ノードに昇格することがある。これらのノードでは通常の役割に加えて、Skypeネットワークを管理するための裏方的な役割「も」担当する。
■スーパーノード
「スーパーノード」は、通常ノードとしての機能のほかに、Skypeに参加しているノードの情報を記録したり、探索したりする機能も担当する。クライアントがSkypeネットワークに参加すると、自分自身の情報(Skypeユーザー名やIPアドレス、ポート番号、ログイン状態など)をSkypeネットワークに登録するが、この動的なノード情報は実際にはスーパーノードで管理されている(登録された情報は負荷分散や耐障害性向上のためにほかのスーパーノードへもコピーされる)。そしてクライアントが通信を開始しようとしたときに、その依頼を受けて通信相手を検索するほか、自分のデータベース内に見つからなければほかのスーパーノードに依頼して検索したり、スーパーノードのリストを随時クライアントに送ったり、といったことも行う。
■リレー・ノード
スーパーノードに依頼して通信相手のIPアドレスやポート番号(およびログオン状態や登録されているスーパーノードの情報など)が分かれば、Skypeクライアントは、次は直接その相手と通信路を確立しようとする。だが相手との間にあるNATやファイアウォールによって、この試行が失敗することがままある。その場合、Skypeは「リレー・ノード」を使って通信を中継する。リレー・ノードは、企業内LANのようなユーザーのネットワークの外側に位置し、直接通信できないノード同士の間に入って通信の橋渡しを担う。あくまでも「中継」であり、中継対象のノード間でやり取りされる通信内容をリレー・ノード自身が傍聴したりすることはできない。
重要なのは、リレー・ノードで中継すると直接通信を確立したときより通話品質は悪化しがちという点である。つまり、リレー・ノードを必要としないようにノード間の直接通信を確立できる方が望ましいということだ(そのための条件については後で説明する)。
■ノードの割り当ては自動
どのSkypeアプリケーションにどのノードが割り当てられるかは、Skypeによって自動的に決定されるため、ユーザーが何か特に設定する必要はない。スーパーノードやリレー・ノードの選択基準は、基本的にはグローバルIPアドレスを持っていて(つまりインターネットにNATなしで直接接続されていること)、メモリやCPUパワーに余裕があり、稼働時間が長いノード(長く安定的に稼働しているノード)の中から動的に選択される。システムの状態やネットワークの混雑度/遅延時間などが変わると通常ノードに戻ることもある。スーパーノードやリレー・ノードの情報は随時ほかのスーパーノードへ知らされるし、クライアントへも通知される(Skypeクライアントはこの情報を使って以後スーパーノードへ接続するほか、キャッシュした情報に基づいて次回起動時にスーパーノードへ接続する)。なお、スーパーノードを割り当てたくないPCに対しては、次のコラムのようなグループ・ポリシーや、レジストリなど手動で設定することで禁止できる。
【コラム】グループ・ポリシーによるSkypeの設定 | |||
SkypeのWebサイトで配布されているSkype管理用のADMファイルを利用すると、例えばスーパーノードの割り当てを禁止するといったSkypeの設定をグループ・ポリシーで実行できる。Active Directory管理下のPCにインストールされたSkypeであれば、いちいち手動で設定して回らなくても、ネットワーク経由で複数のSkypeクライアントに同じ設定を反映できる。 設定可能な項目としては、機能(例えばファイル送信機能)のオン/オフやネットワーク関連の設定(通信ポートの選択やUDPの禁止など)、更新の自動チェックの禁止などが用意されている。
|
Skypeを利用するのに必要なネットワーク設定
このようにSkypeはPtoPの技術を応用して、インターネット上で良好な通話品質を実現する「打たれ強い」ネットワークを構築する。しかし、ノード間の通信が阻害されると、通話できなくなったり通話品質が下がったりすることは容易に想像できる。そこで、ノード間の正常な通信を実現するには、どのような設定や条件が必要なのか、確認しよう。
Skypeを利用するには、Skypeアプリケーションとインターネットとの間で、次のいずれかの通信ポート(宛先ポート)への発信を開放する必要がある:
- 1024〜65535/tcp(ポート番号は相手先ノードの初期設定によって変わる)、または
- 80/tcp、443/tcp
|
もしファイアウォールで上記ポートをブロックしている場合は、いずれかを開放する必要がある(1.の方が推奨)。とはいえ、どちらのポートもほかのネットワーク・アプリケーションでもよく利用されるため、よほど厳密なセキュリティ・ポリシーを適用している企業でなければ、これらのポートは利用できるだろう。SkypeをインストールしたPCでWindowsファイアウォールを利用する場合は、ポート番号ではなく、発信元プログラム(Skype.exe)に対するフィルタ・ルールを利用するのがよい。またプロキシ・サーバ(HTTPプロキシもしくはSOCKSプロキシ)を導入していて2.がブロックされている環境では、Skypeアプリケーションからプロキシを介してインターネットに接続するようにSkypeの設定を変更してもよい。
一方、インターネット側からSkypeアプリケーションへの着信ポートについては、Skypeがインストールされる際に自動で決定されたランダムなポート番号(1024以上)が利用される。もしそのポートが利用できない場合は(デフォルトで)80番ポートか443番ポートで代替する、といった具合にSkypeが自動的に通信を確立しようとする。そのため、多くの場合、着信ポートに関しては設定を変える必要はないだろう。
また一般的にはNATを越えて着信しなければならないネットワーク環境の方が多いが、Skypeがいくつかの手法から自動的に最適なものを選択して通信路を確立してくれるため、やはり設定の必要はない。ただ、NATの設定を変更するとSkypeの通信パフォーマンスを向上できる場合があるので、興味があれば次の管理者向け技術文書(Skype IT Administrators Guide)の「2.2.2 NAT configuration」のセクションを参照するとよいだろう。この文書はSkypeを社内システムに導入・運用するにあたって大変有用なので、システム管理者は目を通しておくことをお勧めしたい。
- Skype IT Administrators Guide[英語PDF](Skype)
そのほか、次のSkypeサポート文書も管理者に役立つネットワーク関連の情報が記されているので、読んでおくとよいだろう。
- Skypeを使用するには、どのポートを開放する必要がありますか?(Skype)
- プロキシサーバを介してSkypeに接続できますか?(Skype)
- Skypeを再インストールまたはアップグレードした後で、Windowsファイアウォールの設定を更新する方法を教えてください。(Skype)
- Skypeの通話は中継されていますか?(Skype)
- 通話音質が悪くて困っています。どうすればよいですか?(Skype)
◆
次回からは、Skypeを実際にWindowsやスマートフォンにインストールしたり、実用的に使えるように設定したりするための方法や注意点について説明していく。
「 Windows 運用 」 |
- Azure Web Appsの中を「コンソール」や「シェル」でのぞいてみる (2017/7/27)
AzureのWeb Appsはどのような仕組みで動いているのか、オンプレミスのWindows OSと何が違うのか、などをちょっと探訪してみよう - Azure Storage ExplorerでStorageを手軽に操作する (2017/7/24)
エクスプローラのような感覚でAzure Storageにアクセスできる無償ツール「Azure Storage Explorer」。いざというときに使えるよう、事前にセットアップしておこう - Win 10でキーボード配列が誤認識された場合の対処 (2017/7/21)
キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。英語キーボードが日本語配列として認識された場合などは、正しいキー配列に設定し直そう - Azure Web AppsでWordPressをインストールしてみる (2017/7/20)
これまでのIaaSに続き、Azureの大きな特徴といえるPaaSサービス、Azure App Serviceを試してみた! まずはWordPressをインストールしてみる
|
|