BGP障害

そういえば本日、BGPで経路障害があったようですね。

客先に出てたり、パタパタしてたので先輩が話してるのを横でチラッと聞いただけですが、チェコISPがやらかした模様。
http://yebo-blog.blogspot.com/2009/02/blog-post_17.html

インターネットの世界はBGPで繋がっています。1カ所でも危ない設定をつっこめば全世界が影響を受けるわけです。とても神経質で気をつかわなければならないものです。

業界特有の表現かもしれませんが、よく稼働率を99.999%の小数点以下を取って「トリプルナイン」だとか更に一つ9を足して99.9999%を「クワッドナイン」だとか言った表現を耳にします。この表現からもわかるように、もはや99%以上の稼働は当たり前でその下何桁まで9を増やせるかというのが命題なわけです。数字にしてしまえば大した事のないものかもしれませんが、たとえ100にするとこが不可能であろうと、我々インフラエンジニアはこの9を一つでも増やす事に心血を注ぐべきだということなのです。また、その努力を行うだけの価値があるほどに「インターネット」は人にとって様々なものを与えてくれる存在になったのだと思います。

残念ながら普段BGPオペレーションを行うことはありませんが、インターネットの口につながる機材の物理的な交換作業などは行うので、本当に気をつけないといけないなと改めて感じました。

ちなみにバックボーンをつなぐ10Gが刺さるようなクラスの機材は価格が1000万単位なので、運ぶだけでも別の意味で気をつけないと非常に怖かったりします w

追記

先輩に現象を聞いたので勉強としてまとめてみたいと思います。
今日の晩に書けたらいいな・・・。


ということで追記です。
どんなことが起こったか箇条書きしてみると

  • チェコのとあるプロバイダが非常に長いASパスを流してしまった。
  • 一部のIOSは異常に長いASパスを受けるとフラッピング(切れたりつながったり)するといった挙動をするため、動作が不安定になる機器が現れた。
  • 一定のASパス長を超えたものは破棄(正確には自分のBGPテーブルにくわえないだけで広報はする模様。要は右から左に受け流す...てな感じ?)する設定(bgp maxas-limit)の設定を行っていた機器は影響を受けなかった。

といった感じみたいです。残念ながらBGPは1回入れてみたことがあるだけで本当にやってみたレベルの知識しかないので、なぜチェコの人がそんな事をしたのかも含め調べたり、見聞きしたことをまとめておきます。

ASパスはダイナミックルーティングでいうところの「メトリック(コスト)」にあたるものです。つまり複数経路がある場合にどの経路を優先するかを決めるための値ですね。ASパスはAS番号を経路順に並べて表現するようで以下のような特徴があるようです。

  • ASパスが短い経路を優先する
  • ループを防ぐために自AS番号を含むパスは廃棄する


例えば図の用に「AS1」から「AS4」への経路を考えた場合「AS2」を通る経路と「AS3」を通る経路が考えられる。この場合「AS4」に聞こえるパスは

  • AS2, AS1
  • AS3, AS1

のようになります。経路長が同じ場合はコミュニティID?が低い方を優先するらしいのですが、意図的に経路を片方に向けるために同じAS番号を複数回記述するといったことが出来るらしいです。具体的に述べると「AS1」が「AS2」「AS3」にASパスを伝えるときに

  • 「AS2」には「AS1」を2回
  • 「AS3」には「AS1」を1回

それぞれ伝えるといった動作をすると。「AS4」に聞こえるパスは

  • AS2, AS1, AS1
  • AS3, AS1

といった具合になります。すると「AS4」ではASパスの短い「AS3」を通るルートを選択することになります。
チェコISPが意図したところはまさしくこれらしく、どうしても使いたくない経路をを指定するためにアホみたいに長いASパスを記述した(正確には255だったかな?)らしいです。結果、みんなに迷惑かけちゃったわけですね。まーミスはどうしても起きてしまうものだとは思いますが、さすがにちょっとやり方がワイルド過ぎたみたいですね。


現象としてはなかなか珍しいらしく、先輩方も「不謹慎だけど、現象としてはおもしろいし勉強になる」と言っていました。

手元にあるCCNPの教科書にBGPの話が載っているみたいなので今週はBGPの辺りを少し読んでみようかなと思います。