Type-3 LSAを利用したマルチエリア構成
OSPFで一般的に使用されるLSAのうちType-1とType-2の役割については、この連載の第12回で説明しました。今回は、Type-3 LSAを利用したマルチエリア構成について考えてみます。
一般的な教科書によると
- OSPFで大規模ネットワークを構築する際には、エリアを階層化する
- エリアの境界に位置するルータを「ABR(Area Border Router)と呼ぶ
- ABRがType-3 LSA(またはNetwork Summary LSAと呼ぶ)を発行する
- 全てのエリアはバックボーンエリア(Area 0)のみと接続する
といったようなことが書かれていますね。
まず、なぜ大規模ネットワークではマルチエリアにする必要があるかというと、OSPF(というかリンクステート型のプロトコル)は基本的に大規模向けではないからです。OSPFが経路選択のために使用するダイクストラアルゴリズムの計算量は、ノードやリンクの数に応じて増加するという特徴があり、ネットワークが大規模になるとCPUに過大な負荷がかかりやすくなります。このような理由から、リンクステートの考え方で経路選択を行う範囲を1つのエリアとして、そのエリアを階層的に積み上げることによってスケーラビリティを確保しようと考えたのです。このとき、エリアをまたがる経路情報を通知するために使用されるのが、Type-3 LSAです。
どのような動きになるのか、順を追って見てみましょう。
図1の例のネットワークには、3つのエリアがあります。まず、それぞれのエリア内でLSAをフラッディングして経路計算を行います。
以前この連載でも書いたように、LSAに含まれる情報は、直接接続しているネットワークや隣接するルータへのメトリック情報であり、全てのルータが発行するLSAを集めることによって、全体の地図を作ることができるわけです。これがリンクステート型と言われる所以ですね。
この時点では、各エリアの内部だけで経路情報が作られていますので、上図の例で言えば、Net.Aの情報はR1,R2,R3だけが持っていて、Net.Bの情報はR3,R4,R5だけが持っている状態になります。
次に、エリアの境界に位置するABRが、他エリアの情報をType-3 LSAとしてフラッディングします。
これによって、全ルータで全ネットワークへの経路情報を得ることができます。
ここで注目していただきたいのは、「この動作はリンクステート型ではない」ということです。例では、R3はNet.Aと直接つながっていないため、エリア内の経路計算によって得た経路情報(ルーティングテーブル)に基づいて、Type-3 LSAの中にNet.Aへのメトリック情報を記載し発行している、ということになります。
さらにR5も、R3からもらったType-3 LSAの情報に基づいて自身のルーティングテーブルを作り、そこからエリア2へフラッディングするType-3 LSAを作っています。このように、ルーティングテーブルの情報を「伝言ゲーム」のように伝えていく考え方は、ディスタンスベクターそのものですよね(第11回「ディスタンスベクターとリンクステート」参照)。そう考えると、OSPFマルチエリアに関する特徴が一気に理解できませんか?
たとえば、OSPFでは、エリアの中で経路を集約したりフィルタリングすることは原則としてできませんが、マルチエリアではABRで経路の集約・フィルタリングが可能です。エリアの中では全ルータが同じLSAを受け取って同じ地図を作るのがリンクステート型の動作原理であり、経路を途中で操作することはできません。しかし、エリアをまたがる部分はディスタンスベクター型、つまり伝言ゲームなので隣のルータを「だます」ことが簡単であり、RIPやEIGRPと同じように経路の集約・フィルタリングが可能です。
それから、マルチエリアでは、全てのエリアはバックボーンエリア(Area 0)と接続しなければいけない、というルールがありますね。これは、バックボーンを中心としたスター構造を強制的に作らせているのです。エリア間のルーティングはディスタンスベクター型で動作するのですから、エリアをループ状に接続してしまうと、当然ながら「ルーティングループ」が生じます。
それを防ぐためにスプリットホライズンやらポインズンリバースやらの機能を入れるのが面倒だったのかどうかは知りませんが、全てのエリアをバックボーンと接続し、それ以外のエリアを直接接続させない、というルールを適用することで、絶対にループができないようにしているわけです。
ハイブリッドと呼ぶべきは・・・
ここまで読んでいただくと、冒頭の問題で私の思う正解を「②か④」とした理由がわかっていただけたかと思います。
シスコ的には、リンクステートとディスタンスベクターの両方のメリットを兼ね備えたEIGRPを「ハイブリッド」と呼ばせたいのでしょうが、私としてはEIGRPは「改良されたディスタンスベクター」という感じがします。たとえば、ハイブリッド自動車はガソリンエンジンと電気モーターという異なる動力源を組み合わせているから「ハイブリッド」なのであり、電気自動車なみに環境性能の良いガソリンエンジンを作ったとしても、それは「改良されたガソンリンエンジン」であって、ハイブリッドと呼ぶのは不自然だと思います。
リンクステートとディスタンスベクターの2つの方式を組み合わせて動作しているOSPFこそ、ハイブリッドと呼ぶにふさわしいルーティングプロトコルではないでしょうか。