JANOG奮闘日記は10月初旬から少しお休みをいただき,これからどんな話をしようかを考えていました。JANOGやインターネットの運用という場面で議論されていることはさまざまですが,そのほとんどが現状のネットワークをどのように維持・運営して皆さんの接続されているインターネットというものを快適に提供するかや,どうやってよりよいサービスを作っていくかということです。その中でも最も頭を痛めるのが,ネットワークの相互接続によって引き起こされる問題です。

 読者の中には,社内ネットワークを運用している方もたくさんおられると思います。社内のネットワークというのは「会社」という一つの組織で閉じられるものですから,その中身のネットワークに問題が起こっても,言ってしまえば社内の問題としてネットワークを拡張したりできるわけです。

 一方,インターネット全体というもの見渡して考えると,基本的には関係の無い組織がどこかのネットワークで中継されたり,直接接続したりして,相互接続しているわけです。このようなネットワークでは他のネットワークで問題が起こったとしても,自分のネットワークからは直接的に問題を解決するような行動が取れません。特に起こっている問題が他のネットワークにも影響を及ぼすような場合は,インターネット全体の問題として各ネットワークが協調して問題を解決しなければ重大な問題を引き起こす可能性があります。

 このような問題はいろいろあるのですが,今回は「経路爆発」という問題を紹介したいと思います。

経路爆発とは何か?

 「経路爆発」という言葉を初めて聞くと,何か突然,どこかの「経路」がドカン!と問題を起こすというイメージがあるかもしれません。ですが,実際はそうでありません。経路爆発は「経路数の急激な増加に関する問題」のことです。

 まず,グラフを見てください。このグラフは,APNICのGeoff Huston氏がメンテナンスしているBGP(border gateway protocol)の経路数の推移を表したグラフです。このグラフはいくつかのISPで観測しているBGPの経路数が描かれています。多いところでは現在で既に27万経路にも及んでいることがわかります。また,経路は指数関数的に増加していることもこのグラフから読み取れます。

 経路が増える要因はいくつかありますが,おおむね下記のような原因が主な理由です。

  1. ARIN,APNIC,JPNICなどのレジストリ(IPアドレスを割り振る管理組織)から新たにアドレスが割り振れらた。
  2. 既に利用しているアドレスを分割してインターネットに広告した。
  3. 既に割り振られているアドレスを下位のネットワークに割り当て,その組織が独自の経路としてインターネットに広告した。

 通常,レジストリから割り振られたアドレスは,その大きさのままインターネットに広告することがベター(そうあるべきだけれども,そうならない事情もあるという意味でベストとはいえません)です。ですから,理想的には1.の理由のみによって経路が増えるはずです。

 ところが実際に運用をする場合には,自分のネットワークに流れ込むトラフィックを調整するために,細かい経路(規模の小さいネットワークのアドレス)を広告してみたり,顧客からのリクエストによって渋々細かい経路を広告してしまったりするわけです。多くの場合,この細かい経路によって経路数が増大します。

 細かい数字を挙げることはできませんが,私が過去から行っている観測では,/24(インターネットの経路の中では相当に細かい経路と言えます)の経路数は,今も昔もインターネット全体の経路の約半分という値で推移を続けています。つまり,/24という大きさの経路だけで現在では約10万から13万経路にも及ぶということになります。

メモリーの上限を超えてしまった経路数

 では,なぜ経路の増大が問題となるのでしょうか? もともとルーターで扱うことができる経路数は,ルーターの仕様で大体の上限が決められています。ほとんどの場合,これはルーターが持つメモリーやフォワーディング・テーブルの大きさに依存して決まります。たとえば,小型のVPNルーターであれば,大体1000経路とか2000経路くらいでしょう。

 インターネットの中核といえるプロバイダのルーターは,これとは比べ物になら無いほどの経路数が扱えるルーターを利用していますが,少し古いルーターになれば,10万経路や20万経路でメモリーを使い尽くしてしまうケースもあります。最近のルーターであれば,30万とかそういうケチなことは言わず100万や200万経路まで視野にいれて作られているものも少なくありません(ただ,やっぱりお高い‥‥)。

 ここで,皆さんの会社にある周りのパソコンを見回してみてください。5年や10年使っているパソコンはありませんか?同じようなことがインターネットに起こっていると思ってよいでしょう。

 10年というのはさすがに極端なので5年前にさかのぼって先ほどのグラフを見てみましょう。ちょうど2000年とか2001年くらいです。このときの実際の経路数は約8万経路です。この時点でルーターを購入することを考えた場合,またはルーターを作ろうとした場合,余裕を見ても20万経路くらいに対応しておけば問題ないでしょう。それどころか,人によっては「そんな広大な空間を使い切ることはない」と確信を持っていたかもしれません。

 このため,多くのルーターは20万経路程度を目標に作成され,それで十分だったわけです。このようなルーターは,当時プロバイダなどでも多く導入されました。ただ,経路数に比較してトラフィックの増大が急激だったため,順次新しいルーターに入れ替えられています。

 しかし,プロバイダと接続するために導入した顧客側のルーター,または顧客接続用ルーターとしても,この規模のルーターが多く導入されました。これらの多くは当時のままということも少なくなく,扱える経路の上限が迫っているというのが実情といえるでしょう。

メモリーが足りなくなってルーターが再起動することも

 ルーターが扱える経路数が限界を超えたとき一体何が起こるのでしょうか。ルーターで上限の経路数を超えた場合,経路を保持するメモリーの領域が無くなるため,マシな場合で上限を超えて新しく受けた経路は無視されます。ところが,最悪な場合はルーターがリブート(再起動)します。深刻な問題は,ルーターのリブート,またはBGP接続の再起動です。順を追って考えてみましょう。

 例えば,ルーターで経路を格納するメモリーが溢れ,ルーターがリブートしたとします。このリブートによって,そのルーターが接続していたBGPのセッションは全て切断されます。そのルーターを経由して接続していたネットワークは,ルーターがリブートしてBGP接続が復旧するまでインターネットへ接続できなくなります。

 BGPセッションの切断は,そのBGPセッションから受けていた経路の消失を意味しますから,消失した経路が全世界に向けて一斉に広告されます。経路の広告によって,世界中のルーターでその経路に関するベストパス(最適経路)の再計算がおこなわれます。この再計算は,多くの場合,そのネットワークから遠ければ遠いほど影響が少ないのですが,接続元のプロバイダや隣接するプロバイダでは転送先が変更になるほどの影響を受ける可能性があります。

 次に,メモリー溢れによってリブートしたルーターが再起動され,BGPが再接続され,今度は接続されたネットワークの経路が全世界に広告されます。世界中のルーターは再びそのネットワークを有効とするために経路の再計算を行うことになり,この時点で接続先のネットワークは復旧します。

 ここで終われば幸せですが,経路数が減ったわけではありません。再び接続元のルーターはメモリーが溢れます。あとは最初からの繰り返しとなり,永遠と経路の広告と消失という動作,ネットワークの切断と復旧という動作がくりかえされることになります。これがいわゆる「経路フラップ」というもので,経路数の増大によって,経路フラップが世界中の多くのルーターで起こる可能性があることを示唆しています。

一番効果的な対策はルーターの切り替え

 このような経路フラップは,インターネットを不安定なものにしてしまうため,運用者としては対策を取らなくてはなりません。一番有効なのが,取り扱う経路数が十分にあるルーターへの切り替えです。しかし,100万経路という膨大な経路数を扱うルーターはそれほど安いものでは無いため,すぐに切り替えることは難しいといえます。そこで,経路数を減らすという対策が必要になります。

 経路数を減らす方法を見ていく前に,一番最初の経路数が増大する要因にもう一度戻りましょう。経路数が増える原因の多くは,レジストリから割り振られた経路を細かくしたり,細かく切り出した経路を広告したりすることです。そこで,経路数の問題を抱えるネットワークでは,上位のプロバイダなどと協議しながら,これら細かく切り出された経路をアグリゲート(集約)するなどして経路数を減らします。

 例えば,192.168.4.0/24と192.168.5/24という2つの経路は192.168.4.0/23という一つの経路に集約できます。具体的にはもう少し多くの経路を集約したりします。もちろん,集約してしまうことでトラフィック・エンジニアリング(トラフィックを運用者の意図どおりに調整すること)に影響が出たりすることも考えられます。このため,一概に全て集約してしまえばよいというわけではないため,慎重に行う必要があります。

 ただし,経路集約は根本的な対策にはなりません。やはり,十分な経路数を扱うことができるルーターへの切り替えが一番の対策となります。

 BGPを使わずにインターネットに接続されている方々にとってそれほど影響があるお話ではありませんが,BGPを使っている方は自分のネットワークでの経路数とそのキャパシティについてこの機会に一度確認しておいてはいかがでしょうか?

■近藤 邦昭(こんどう くにあき)

日本ネットワーク・オペレーターズ・グループ(JANOG)の会長。1970年北海道生まれ。神奈川工科大学・情報工学科修了。1992年に某ソフトハウスに入社。主に通信系ソフトウエアの設計・開発に従事。1995年,株式会社ドリーム・トレイン・インターネットに入社し,バックボーン・ネットワークの設計を行う。1997年,株式会社インターネットイニシアティブに入社,BGP4の監視・運用ツールの作成,新規プロトコル開発を行う。2002年,株式会社インテック・ネットコアに入社。2006年には独立,現在に至る。