事件簿 その4

ルーターとパソコンとの怒涛のパケット交換の怪
 − WindowsMessenger ビデオチャットがきでないのもこれが原因?−

 

 我が家のインターネット接続環境は、K-Opticomの光ファイバーを引込み、ブロードバンドルーターを通して、WindowsXP(問題のPC)、Windows98、MACの3台を有線LAN接続しています。また、WindowsMessengerを利用するため、ルーターにはUPnP(ユニバーサル・プラグ・アンド・プレイ)対応のファームウェアをインストールしています。

 このうち、WindowsXPをつないだルーターのポートのLink/Ackランプだけが、OS起動直後からほとんど常時、点滅状態になるのです。
 この点滅はWindowsXPのPCとルーターが常時通信していることを示しています。インターネット側と通信している時なら分るのですが、ブラウザ(InternetExploreなど)、メールソフト(OutlookExpressなど)、インスタントメッセンジャー(WindowsMessengerなど)等々のネットワーク系アプリケーションソフトを全く起動していなくても、ランプの点滅は続いているのです。

 これが今回の怪事件です。

 また、これが原因かどうかはわかりませんが、WindowsMessengerの内、音声チャットとビデオチャットが利用できないのです。
 この2つのチャットをしたいがために、UPnP対応のファームウェアをインストールしているのですが、部分的にできたり(相手の映像は見えるが、こちらの映像は相手に映らない。映像は映るが、音声が聞こえない。などなど)、全くできなかったりします。

 以下、調べてみて分ったことを時系列的に記述します。

@ ルータのWAN側(インターネット側)のセッションリスト(通信状況)をみると、「NoSessions」になっていても点滅は続いています。つまり、インターネット側となんら通信していないのに、ルーターとPCの間でパケットのやり取りが常時行われているのです。

A パケットモニタソフトでWindowsXP側のパケットのやり取りをモニターすると、1秒間に約50個ものパケット(EthernetFrame)をルーターとの間でやり取りしているようです。
 ホスト(WindowsXP)からのTCPコネクション接続要求から始まり、ルーターからのFIN/ACK応答まで、あいだに3回のデータ転送(500オクテット(バイト)程度のSOAPメッセージなるもの?)をはさみ、ひとつのTCPコネクションで約10個のパケットのやり取りをし、ポート番号を1つづつ変えながら永遠に繰り返しています。

B「スタートアップ」にある常駐アプリケーションを全て外しても状況は変わりません。

Cルーターの接続ポートを変えても、他のPC(Windows98、MAC)には同様の現象は起きず、WindowsXPだけに特有に起こる現象のようです。

DWinXPのサービスのうち、UPnP関連の設定を変更しても、WindowsXP以外のアプリケーション用サービスを全てはずしても全く改善されません。

Eルーターのリセット、最新ファームウェアの再インストール、WindowsXPのServicePack1を再インストールを試みる等の試行錯誤を繰り返した後、次の2つの条件がそろったときににだけ、この不具合が発生することが分りました。
・「プログラムの追加と削除」で表示されるWindowsコンポーネントの内「インターネットゲートウェイデバイスの検出とクライアントの制御」のインストール
・ルーターのファームウェアでのUPnPの有効

 この2つのうちどちらかを切れば、この怒涛のパケット交換は止むには止むのですが、ルーターのUPnPを有効にし、「インターネットゲートウェイデバイスデバイスの検出とクライアントの制御」をインストールしないと、WindowsMessengerのビデオチャットや音声チャットは使えないらしいので、まったく困ったものです。

 おそらく、WindowsXPのUPnPの関連機能がおかしいのでしょう。
 そこで、UPnPについて、素人なりに調べてみましたことを、末尾にまとめておきました。かなり難しいので、ネットワークについての基本的知識のない人やそもそも興味のない人、は読み飛ばしてください。はっきり言って、私もよくわかっていません。
 受け売りです。(*^_^*)

 要するに・・・

 WindowsXPの「ネットワークコンポーネント」にある「インターネットゲートウェイデバイスの検出とデバイスの制御」とは、SSDP なるプロトコルを利用して UPnP 機器(インターネットゲートウェイデバイス:IGD )を検出し、これを SOAP なるプロトコルを使ってコントロールすることみたいです。また、WindowsXP のサービスにある「SSDP Discovery Service」と「UPnP Device Host」もUPnPを動作させるに必要なサービスのようです。
 問題のWindowsXPとルータの間で頻繁にやり取りされるパケットのデータ部が、SOAPメッセージらしきものということは、PCがルータにメッセージを送信した際に何らかの障害が発生したため、それを際限なく再送信しているものと思われます。

 ルーターのメーカーにも問い合わせましたが、メーカー側では同じ環境下で試験しても、パケットの頻繁なやり取りもなく、WinowsMessengerも問題なく使えているので、ルーター側の問題ではなく、こちらのPC内部の問題との回答でした。
 はっきりいって、素人の私にはこれ以上打つ手がなくなりました。
 かくなる上は、WindowsXPの再インストールになるのか、WindowsMessengerをあきらめるのか。せっかく、カメラもマイクも買ったのに・・・(安物だけど)

 ここは、やはり再インストールしかないのか。はぁ〜、めんどっちい。(-_-メ)

 などと言っていても始まらないので、悩んだ末に一大決心し、この前の連休を利用して、WindowsXPの再インストールを決行しました。
 当初のインストール時から、基本的なハードウェア構成はほとんど変えていなかったので、アクティベーションもすんなりと終わり、XPのフルインストール自体は簡単にできたのですが、データやアプリケーションの再インストール、OS各種再設定に非常に時間がかかり、丸二日を要してしまいました。はっきり言って、とっても、とっても、た〜いへんな作業でした。

@データ、各種設定のバックアップ
AXPの再インストール(HDDパーティションのフォーマット、XPインストールとアクティベーション)
BServicePack1のインストールとその他のアップデート

 ここで恐る恐るUPnPを使える状態に設定してみましたが、問題のルータとの怒涛のパケット交換は行われていません。とりあえず、胸をなでおろして先に進みます。

C各種ドライバの再インストールとアップデート
D各種設定のしなおし、アプリケーションの再インストール、データの復旧

 これら全ての作業を完了し、早速、パケットモニターで見てみました。
 WinowsMessengerが起動していない状態では、以下の3つのパケット交換が一定間隔で行われています。とても平和な状態で、あの機関銃のようなパケット交換がウソのようになくなりました。

@ UDPパケット
送信元:ルーター(port:11000番台)
送信先:239.255.255.250(port:1900)
データ長:350octetぐらい
送信間隔:約30分毎
・この通信は、UPnP で使用される SSDP プロトコルがデバイス探索のために発行するマルチキャストパケットです。送信元がルーターになっていますが、WindowsXPの起動直後は、PCが送信元になって同様のパケットを送信しているはずです。

A TCPパケット
送信元:PC(port:11000番台)
送信先:ルーター(port:80)
データ長:500octetぐらい
送信間隔:約5分毎
・これが問題のSOAPメッセージなるもので、不具合時にはこのパケットを1秒間に3〜4回やり取りしていました。通常は5分に一回程度定期的に情報を交換しているようです。

B TCPパケット
送信元:PC(port:1000番台)
送信先:ルーター(port:5432)
データ長:100〜300octetぐらい
送信間隔:約20分毎
・これは何でしょうか?わかりませんが、これもSOAPメッセージの一種なのでしょうか。

 早速、カミさんのチャット仲間にお願いして、ビデオチャットに挑戦しました。WindowsMessengerを起動して、ビデオチャットへの招待と承諾をすると・・・無事に先方の家の中が映し出され、音声も聞こえました。よかった・・・(^o^)丿
 初めてのビデオチャットに家族一同歓喜の叫び声をあげました。
 これにて、一件落着。  しかし、疲れた・・・

 

Universal Plug and Play(UPnP)
ユニバーサルプラグアンドプレイ

 そもそも、ユニバーサルプラグアンドプレイ(Universal Plug and Play:UPnP)とは、Microsoftが1999年に提唱し、Universal Plug and Play Forumで標準化が行なわれている、ネットワークに接続されたデバイスのPlug and Playを行なう技術のことです。
 ブローバンドルータが一般家庭に浸透し、WindowsMessengerなどで音声チャットやビデオチャットをブロードバンドルータ越しに行おうとしても、ルータのNAT機能のために利用できなかったのですが、それに対する解決技術として一躍注目を集めたのがUPnPでした。去年の中頃からUPnP対応のルータ及びファ−ムウェアがルータのメーカーから発表され、いまではほぼ標準装備になっています。

 UPnPは,パソコンにプリンターなどの周辺機器を接続するときに動くプラグアンドプレイ(Plug and Play:PnP)をネットワークに拡張したものといえます。UPnP対応機器なら、新しくネットワークにつながったデバイスの自動検出、情報交換、制御などを自動で行ってくれます。例えば、新しく買ったUPnP対応のネットワーク・プリンタをLANに接続すれば、LAN上 のパソコンがそれを検知し、利用者がIPアドレスやサブネット・マスクなどの設定しなくても、そのプリンタを使って印刷できるように、自動的にパソコンをセットアップしてくれるのです。

 UPnPは汎用的なTCP/IPベースのネットワーク技術を組み合わせて構成されており、デバイス情報や制御メッセージ、イベントメッセージなどは、全てXMLで記述されます。また、プロトコルとしては、デバイスの検出にはSSDP(Simple Service Discovery Protocol)ベースの「UPnP Discovery Protocol」が、コントロールメッセージの転送にはSOAP(Simple Object Access Protocol)が、イベントの通知にはGENA(General Event Notification Architecture)が、それぞれ使われます。

 では、UPnP対応機器がLANに接続された時の、具体的なシステム設定の動きについて、順を追ってみてみます。

@ まず、UPnP対応機器がLANにつながったとき、その機器のIPアド レスなどが自動で設定されます。ここでは,DHCP(dynamic host configuration protocol)が使われます。

A DHCPでIPアドレスが割り当てられると、次は、LAN上のほかの機器に自分がLANにつながったことを通知します。トランスポートプロトコルはUDP(user datagram protocol)、ポート番号は1900番、マルチキャスト(送信先IP:239.255.255.250)でLAN上のすべてのUPnP対応機器に、新しく機器がつながったというアナウンスを送ります。上位層のやりとりは、標準化団体であるUPnP Forumが決めた独自仕様の SSDP(simple service discovery protocol)というプロトコルを使います。

B 次に、新しくつながった機器と、すでにつながっていた機器との間で細かな情報をやりとりするフェーズに入ります。このやりとりには、Webサーバーとブラウザの間の通信に使っているHTTP(hypertext transfer protocol)をそのまま利用しています。ただし、メーカー名、機種名、機能、制御のためのコマンド一覧など、HTTPで送るデータのフォーマットには、XML(extensible markup language)を使います。

C このほか、ネットワーク・プリンタで用紙がなくなったときなど、状態が変化したとき(イベントが発生したとき)の通知には、HTTPを拡張した GENA(general event notification architecture)というプロトコ ルが使われます。

D 機器を制御する際にXMLデータのやりとりに使われるのがSOAP(simple object access protocol)というプロトコルです。つまりSOAPとは、Webサービスで使用されるメッセージ(UPnPの場合はXML)のデータフォーマットや、メッセージの処理ルールを定めた通信規約のことです。またSOAP規格に準拠したXML形式のメッセージのことをSOAPメッセージと呼ぶようです。

E UPnPはハードウェア用のプロトコルのため、対応する機器の類型ごとに DCP(Device Control Protocol)を定めなければなりませんが、UPnPでは既に4つのDCPがInternet Gateway Working Committeeにより策定されており、それ以外のデバイスについても順次 DCP の検討作業が進んでいます。Windows XPでは4つのDCPのうち、IGD(Internet Gateway Device)向けのプロトコルをサポートしている。

 このように見てくると,UPnPという新技術は既存技術の寄せ集めであるようです。DHCP、HTTP、XMLなどはすでに名前を聞いたことがありますし、SSDP、GENA、SOAPなど、あまり聞き慣れない技術もありますが、これらも既存技術の延長のようです。