IPv6向けのプログラムにバグ

 実は、ルート計算のプログラムにバグがあった。IPv6を処理するプログラムのバグである。フレッツ網では、従来のIPv4だけでなく、IPv6用も扱っている。IPv6のルート計算に異常があり、本来は中継側に転送すべきIPパケットを、隣りのIP伝送装置に転送するようになっていた。つまり、同じパケットがたらい回し状態になり、適切なIP伝送装置に転送されないまま迷走し、ネットワークに負荷をかける結果になっていた。

 IPパケットにはTTL(Time to Live)という情報がある。パケットの有効期限を示す数値で、ルーターを介するたびに「1」を引いていき「0」になった時点でそのパケットを廃棄する。フレッツ網内でもこのTTLを利用していたが、廃棄するよりも流れてくるパケットのほうが多ければ、負荷は増していく。

 IP伝送装置は、負荷が処理能力の限界を超えると、転送処理を中止する“自律停止”状態となる。自律停止状態では、流れてくるパケットはそのまま通すようになる。一部のIP伝送装置が機能を停止しても、ネットワークの機能を果たせるようにするための仕組みである。

 待機系のIP伝送装置に切り替わるとまたルーティング情報をやりとりしてルート再計算が始まる。並行してIPv6パケットのたらい回しが続く。そうすると、またIP伝送装置がダウン。また、ルート再計算が始まる・・・。

 このような連鎖的な問題によって、IP伝送装置は次々に自律停止していった。その結果、パケットを処理できるIP伝送装置が存在しなくなり、ネットワークそのものがダウンした。東京23区と神奈川、千葉、埼玉だけは、ネットワークのダウンを免れた。IP伝送装置のソフトウエアが新しいバージョンで、たまたまIPv6パケットのたらい回しを止める機能が盛り込まれていたからだ。

IPv6が予想を超えた?

 IPv6を使うユーザーがそんなに多いのか、なぜいまごろダウンしたのか。NTT東日本では今年2月24日からBフレッツの新規ユーザーにIPv6の割り当てを始めている。しかし、今回の要因は、Windows Vistaにもあるという。VistaはデフォルトでIPv6を使うようになっている。ユーザーがIPv6を使おうと意識していなくても、パソコンを立ち上げると自動的にIPv6で通信を始めるため、IPv6パケットをネットワークに送出する。このIPv6パケットが今回のダウンを引き起こした原因のひとつだという。

 14都道県まで被害が広がったのも、IPv6によるものである。IPv4で同様のことが起こったとしても「県単位など、一定の区域内で被害をとどまったはず」(NTT東日本 ネットワーク事業推進本部設備部IPネットワーク部門長 ブロードバンドネットワークアーキテクチャ部門長の小出利一氏)という。IPv4は、フレッツ網では県単位などで分割して構築、管理しており、なにか問題が発生してもその分割された範囲内でとどまるようになっている。

 しかし、IPv6はまだユーザーが少ないため、17都道県全体をひとつのネットワークとして構築してあった。そのほうが構築や運用のコストが低く済むからである。このため、1台のIP伝送装置のパッケージ交換から始まった負荷増の連鎖が、ネットワーク全体に及んだ。

 NTT東日本では、IPv6パケットのたらい回しをしないように修正し、IPv6ネットワークの分割管理への移行作業を進めている。また、「トラブルを発生させない、トラブル発生時の被害を最少化する、トラブル発生時の復旧までの時間を短縮する--の3本柱で、社内の体制、ベンダーとの連携などの改善を進めている」(NTT東日本の小出氏)。という。

5月23日は、コマンド引数の大文字小文字の間違いで

 大規模なネットワークのトラブルの翌週の5月23日、またトラブルが発生した(関連記事)。NTT東日本のエリアとNTT西日本のエリア間で、ひかり電話がつながらなくなった。

 原因は単純であった(関連記事)。東西間を接続する装置「中継系呼制御サーバー」用のハードディスクを交換。その際、データ設定のコマンドを間違って入力したためにデータが破損し、サーバーがその破損したデータを読み出したところ正常な処理ができずにダウンした。

 間違えたのは、「コマンドの引数」(NTT-ME ネットワークビジネス事業本部ネットワークソリューション事業部IPソリューション部門担当部長の黒田 敦氏)。本来、小文字とするところを大文字にしてしまったのである。そのシステムを提供するベンダーから「大文字を使うと重大な問題が発生する」という連絡は届いていたが、現場の担当者まで伝わっていなかった。

 連絡不徹底など反省すべきことであるが、大文字/小文字を間違えただけで大きな問題につながるとは、そのシステム自体も問題である。そのような“怖い”コマンドは入力できないようにするのがシステム側の役割であろう。

 NTT-MEでは「連絡体制や入力時の確認などの体制を整えるとともに、GUIを使い間違ったコマンドを入力できないようにする」NTT-MEの黒田氏)という。

トラブルは今後も必ず発生する

 5月15日のフレッツ網のダウン、5月23日のひかり電話のNTT東西間不通、いずれもNTT東日本やNTT-MEに責任があることはいうまでもない。

 5月15日のフレッツ網のトラブルは、NTT東日本にとっては運が悪かった結果ともいえる。IPv6パケットのたらい回しは、すべてのIP伝送装置のソフトウエアのバージョンアップが完了すれば回避できた。トラブルが14都道県に及んだのも「IPv6ネットワークの分割を進めようとしていたところ、もう少し遅ければトラブルは特定のエリアだけにとどめられたはず」(NTT東日本の河野氏)というものだ。

 見方を変えれば、今回のトラブルは、パッケージ交換というきっかけで大きな問題として表面化したが、“危ない要因”はもともと存在していた。現在もフレッツ網やひかり電話に表に出ていない“危ない要因”があるかもしれない。しかし、電信電話公社時代に構築、広がってきた電話網や専用線網のように、なにからなにまでNTTがきっちり仕様を決めていたのとは、ネットワークの作り方が大きく異なる。それにフレッツ網などは今後も機能追加などがなされ、そのたびにソフトウエアが変わっていく。

 もちろんトラブルがあってもいいというわけではないが、新しいネットワーク・サービスと付き合う以上「何かが起こる」可能性を常に意識するしかないのだろう。