【詳報】NTT東がフレッツ障害の原因報告,旧ソフト搭載のルーターが経路再計算しきれず | 日経 xTECH(クロステック)

これが一番詳しい説明が書かれている記事かな。正直NTT自身の発表資料は何が言いたいのかよくわからんかった。
障害の原因なんて後から見れば「こんなことで?」というのがほとんど。同業者の人は罵倒したいの1/3ぐらいで、残りは笑えないのと明日は我が身なのではないだろうか。
3秒で2000ルータがダウン、NTT東フレッツ障害の原因は − @ITBGP云々というのはこちら記事にしか言及がなかった。NTT自身の発表資料に言及がないので、記者会見での発言から引いたのかな。

時系列

日本語の文章で説明されているためにわかり難いが、列挙すると以下のような感じだろうか。

  1. 蔵前の局舎内のルータに障害発生
  2. 当該ルータのパッケージ交換のため、予備系に切り替え
  3. 予備系への経路更新情報がiBGPで同一ルーティングドメインに伝搬
  4. メモリ不足などにより一部のルータハングアップ
  5. 停止したルータに関連する経路を隣接ルータが更新、その情報が伝搬
  6. 最初の更新と合わせて更にメモリ不足となったルータが多数発生
  7. 関東圏のルータを除きNTT東日本管区のルータの半数がダウン
  8. ハングアップしたルータを順次上げ直して復旧

ルータの台数

4000台とあるけど、これはNTT東日本管内のフレッツ網でiBGPによる経路交換をやっているルータ全部の台数だろうか。iBGPで運用されている網としてはそれなりに大きな方だと思う。まさかこの台数をフルメッシュでピアを張っているわけはないと思われるので、BGP confederationなりRoute Reflectorなりを使っているだろう。前者ならばAS境界である程度の被害拡大が防げたと思うのでやはりRRだろうか。
フレッツ網はノード数が多いので、OSPFではスケールし切らなかったのかもしれない。NTT Communicationsの吉田さんが書かれたAPNICでの資料(PDF)にもOCNでの経験が書かれており、外部経路が大きくなりすぎたためOSPFではスケールしなくなったのでiBGPで運ぶように変えたとある。スケーラビリティという点ではBGPが一番良いしね。
うちのIP網が世界一だと豪語している大手ISPさんもCRS-1をいっぱい買っていることから各都道府県レベルにフルルートを持ったルータを設置していると思われる。
いかんせんこの規模をBGPを運用しているのは国内で数社しかないので、オペレータとメーカ共に経験値がたまらない。

経路数

事故発生当時1万5000経路あって、その経路数を1万3000まで削減することで事態を収拾したとある。これはインターネットで使われるフルルートと比べると一桁以上小さい数字だ。インターネットの経路数の推移はBGP Routing Table Analysis Reportsなどが調査している。これによると20万は余裕で超えている。
10万を超えたあたりのときに256MBでは入らなくなったねぇ、という話があった。閉域網とはいえこの程度の経路数で倒れるのはちょっと変。メモリを喰うような他の機能を多用しているにしろ、ちょっと弱すぎるのではないかと思った。何とは言わないけど、全然需要のないプロトコルを政治的理由のためにサービスするため小さいメモリーを圧迫してしまっていたりしていないだろうか。

性能見積り

インターネットでは今回ぐらいの経路のフラップは常時発生している。が、このような障害にはもちろんならない。BGPはもともと耐障害性を考慮されて設計されたプロトコルだし、インターネットで使われているルータは多少の経路変動ぐらいでは落ちない程度には余裕のある装置でないと日々の変動だけで死んでしまう。
フレッツはインターネットの足回りとして使われてはいるものの、所詮は閉域網だ。不確定要素が山のようにあるインターネットと同程度の性能についての余剰を持つような余裕はないのかもしれない。しかし、今回は単なる機器交換のための経路操作で落ちたようなので、これは明らかに性能の見積りミスだろう。
「(メモリ残容量とか)SNMPの息吹を感じていれば、事前に気配があったはず」ほんと後知恵ですが、この辺の値は監視していなかったのかな。

復旧手順

順次上げ直して復旧したようだけど、これは格好悪いけどありがち。
ようは各ルータで経路が収束するのを待ちながら順次上げていけば、今回のようなドミノ現象にはならんわけで。

OSのバージョン不統一

東京近郊のフレッツ網では新しめのOSと機器を使っていたから今回は被害がなかったとのこと。これって古いOSに多くの経路を食わせると問題があるってことを認識してたんじゃないかなと思う。
ハードウェアであるルーティングエンジンの性能不足を認識しつつ買ってもらえないのは現場レベルではどうしようもない部分もあるけど、ソフトウェア的に解決する問題だったのなら「あるいは」という思いが拭えない。
後始末として、あと10日で残る2000台のルータのバージョンアップですか。1日200台か、ご愁傷さまですとか。現在もギリギリの運用が続いているのならば、勢いよくバタバタと倒しつつOS入れ替えもできないし、まさに地獄のスケジューリング。

影響とか

NTTさんがこうやって社会的にインパクトのある事故をちょいちょいやってくれると、キャリアリタンダンシーとかの条件がRFPでちゃんと検討されるようになるのかななどと呑気なことを考えつつ。