← 記事一覧

3 つの IGP、1 枚の地図

192 台のルーター、3 つのキャリア、3 つのルーティングプロトコルが単一の画面でどう見えるか

Michel Wijnberg

私にはラボがあります。図面でもなければ、シミュレーターでもありません。本物のプロト コルスタックが動く実機のルーター 192 台であり、私に本気で反論できる相手に対して Osprey を作るために、毎日使っています。

このラボは意図的に扱いにくく作ってあります。何ひとつ共有しない 3 つのキャリアを収容 しています。

テナントASNIGP構成
Harrier-Broadband200OSPFv2 OSPFv3プロトコルごとに 15 エリア、同じ回線上でデュアルスタック
Kestrel-Dynamics100EIGRP、IPv4 + IPv6フラット。EIGRP にエリアがないため
Merlin-Carrier300IS-IS、マルチ AFlevel-2 バックボーンの下に 17 の level-1 エリア

3 つのプロトコル、3 つのアドレス設計、3 つの ASN、3 組の認証情報。共有された IGP は どこにもありません。トポロジーツールに突きつけられるほぼ最悪のケースであり、だからこ そ私はこれを作りました。

Osprey のダッシュボード:3 つのテナントネットワーク、192 台のデバイス、441 本のリンク、50 のエリア
Osprey のダッシュボード:3 つのテナントネットワーク、192 台のデバイス、441 本のリンク、50 のエリア

以下はすべて、この記事を書きながらライブで取得した、そのラボのスクリーンショットです。 作り物はひとつもありません。


絵より先に階層がある理由

たいていのトポロジーツールはキャンバスから始め、構造は後から取って付けます。それは、 同じ物理ルーターが 2 つの異なる答えに同時に、しかも正当に属するまでは機能します。キャ リアネットワークでは、それは日常です。

Osprey はこれを逆にしました。すべてのオブジェクトは明示的な階層にぶら下がります。

Network → Autonomous System → Routing Domain → Protocol Instance → Area → Device

この連鎖は飾りではありません。「どの OSPF プロセスか、どの VRF の中か、どの AS の下 か、どのテナントに属するか」を推測なしで答えられるのはこの連鎖のおかげであり、1 台の デバイスがあるインスタンスでは ABR、別のインスタンスではただの内部ルーターであっても、 モデルが自分で結び目を作らずに済む理由でもあります。

階層サイドバー:OSPF 1 と OSPFv3 1 が並び、それぞれが自分の 15 エリアを持つ
階層サイドバー:OSPF 1 と OSPFv3 1 が並び、それぞれが自分の 15 エリアを持つ

サイドバーが何を示しているかに注目してください。OSPF 1OSPFv3 1 (v6) は別 個のプロトコルインスタンスであり、それぞれが自分の 15 エリア、自分の LSDB、自分の SPF を持っています。両者は同じ物理リンクの上を流れます。しかし、都合のよい「IGP」というひ とつの抽象にまとめられてはいません。本当に同じものではないからです。RFC 5340 は OSPFv3 に独自の LSDB と独自のトポロジーを与えており、そうでないふりをすれば、両者が食 い違った瞬間に誤った答えが出ます。


Harrier-Broadband:OSPF、15 エリア、デュアルスタック

こちらが AS 200 を、エリアで色分けしたものです。

Harrier-Broadband:64 台のルーター、151 本のリンク、30 のエリア、OSPF エリアで色分け
Harrier-Broadband:64 台のルーター、151 本のリンク、30 のエリア、OSPF エリアで色分け

64 台のルーター、151 本のリンク、30 のエリア(OSPFv2 に 15、OSPFv3 に 15)。中央の青 い塊がエリア 0.0.0.0、すなわちバックボーンです。そこからぶら下がる色付きのかたまりは それぞれ、自分の ABR を通じてバックボーンに到達している非バックボーンエリアです。

このサイズならまだ絵として読めます。5 倍の規模になれば読めません。だからこそ、同じト ポロジーをエリア単位に畳むことができます。

エリアクラウド全体表示:バックボーンを囲む 15 のエリアが雲として描かれ、リンク束の本数が付く
エリアクラウド全体表示:バックボーンを囲む 15 のエリアが雲として描かれ、リンク束の本数が付く

雲ひとつがエリア、線 1 本がエリア間隣接の束で、その上に本数()が付き ます。「エリア 19.5.1.0 はバックボーンにどれくらい心もとなくぶら下がっているのか」に答 えるとき、私が実際に使うのはこのビューです。ここでの答えは「4 本のリンクで」であり、隣 にある 2 本しかないエリアとはまったく別のリスクプロファイルです。


Merlin-Carrier:IS-IS、そしてアドレスファミリは本当に効いてくる

AS 300 は IS-IS で動いています。物理的な形は同じ、プロトコルモデルはまったく別物です。

Merlin-Carrier:IS-IS 配下の 64 台のルーター、17 の level-1 エリアと level-2 バックボーン
Merlin-Carrier:IS-IS 配下の 64 台のルーター、17 の level-1 エリアと level-2 バックボーン

IS-IS は多くのツールが静かに転ぶ場所です。IS-IS は「言い方を変えた OSPF」ではないから です。ひとつの IS-IS LSDB は CLNS、IPv4、IPv6 の到達性を同時に運ぶことができ、正しい最 短経路はアドレスファミリごとに決まります。

そこで Osprey はアドレスファミリごとに計算し、いま見ているのがどれなのかを明示します。

アドレスファミリセレクタを CLNS にした IS-IS パス。System ID と回線が表示されている
アドレスファミリセレクタを CLNS にした IS-IS パス。System ID と回線が表示されている

ホップの表を見てください。アドレスファミリが CLNS なので、各ホップは System ID0100.6600.8003)と回線で識別されています。IPv4 アドレスではありません。CLNS の パスでは、それは無意味だからです。セレクタを IPv4 や IPv6 に切り替えれば、同じパスが、 そのファミリが実際に使うアドレッシングで描き直されます。

(このスクリーンショットは、IS-IS におけるホップバイホップのモデル化について、ある告白 もしています。それは後の記事の主題であり、ここに 埋めて済ませるつもりはありません。)


Kestrel-Dynamics:EIGRP、リンクステートデータベースがそもそも存在しない

そして AS 100 です。

Kestrel-Dynamics:EIGRP 配下の 64 台のルーター。EIGRP にエリアがないため色はひとつ
Kestrel-Dynamics:EIGRP 配下の 64 台のルーター。EIGRP にエリアがないため色はひとつ

色はひとつ。「エリア」は 2 つ。これは描画のバグではありません。EIGRP が自分自身につい て正直であるということです。

EIGRP はディスタンスベクター型のプロトコルで、つなぎ合わせるリンクステートデータベース も、色分けの根拠になるエリアの概念も持ちません。2 つの項目は単に IPv4 と IPv6 のインス タンスです。EIGRP は独自の Hello プロトコルでネイバー隣接を確かに形成しますが、その背後 にたどるべきリンクステートデータベースはなく、走らせる SPF もありません。ネイバー同士が 交換するのはディスタンスベクターであって、同期された地図ではないのです。そこで Osprey は CISCO-EIGRP-MIB から読み取り専用で読み、各ルーターが自分のネイバーについて報告する 内容から隣接グラフを再構成します。このラボでは、それが 580 の生きたネイバー関係になりま す。

この違いは経路計算まで伝わり、そして目に見えます。

ホップごとに Metric 列が減っていく EIGRP パス
ホップごとに Metric 列が減っていく EIGRP パス

このパスに「合計コスト」はありませんし、最初から存在しえません。EIGRP の複合メトリック はパス全体を表すものであって、単一ホップを表すものではないので、ホップごとのコストを足 し合わせても意味のない数字にしかなりません。代わりに得られるのは、各ルーターが宛先へ 向けて自分で計算した現在の距離が、連鎖に沿って減っていく様子です。712704 → 710144 → 658944 → … → 128256。ルーターに 1 台ずつログインして読み取るのと同じ値です。(DUAL の Feasible Distance はこれとは微妙に異なる量で、そのルートが最後に passive になって以降 の最小値、つまり実行可能性のしきい値です。ホップ表は両者を混同せず、別のものとして扱い ます。)

3 つのプロトコル、本当に異なる 3 つのモデル、3 つの正しい答え。それらを同じものだと言い 張る抽象ではありません。


絵の下にあるもの:LSDB そのもの

キャンバスは表現にすぎません。その下にあるモデルはリンクステートデータベースであり、 Osprey はそれを閲覧可能なまま保っています。

LSDB ブラウザ:再構成された 13,382 件の LSA を LSA タイプ別に分類
LSDB ブラウザ:再構成された 13,382 件の LSA を LSA タイプ別に分類

13,382 件の LSA を、タイプ別に分類しています。Router (1)、Network (2)、Summary (3)、 ASBR (4)、External (5)、NSSA (7)。ABR と ASBR のフラグは命名規則からではなく、LSA その ものから導いています。

タイトルの下の行をよく読んでください。

13382 LSAs reconstructed (LSAge, SeqNo, Checksum not available)

これらの LSA は SNMP ウォークから再構成したものであり、プロトコル隣接を通じて受信したも のではありません。OSPF MIB を SNMP でウォークすれば LSA の中身は得られますが、ライブの ヘッダーフィールドは得られません。そこで Osprey は中身を表示したうえで、3 つのフィール ドが欠けていることをはっきり述べます。データに見えてしまうゼロの列を 3 つ描くのではなく。

小さなことです。同時に、設計思想のすべてが 1 行に凝縮されたものでもあり、その画面に並ぶ 残り 13,382 個の数字を私が信用できる理由でもあります。


要点

地図は製品ではありません。モデルが製品です。

プロトコルもアドレス設計も ASN も共有しない 3 つのキャリアが、どれひとつ最小公倍数的な 平板さに潰されることなく、ひとつのツールに収まっています。OSPF はエリアと 2 つの LSDB を保ち、IS-IS はレベルとアドレスファミリを保ち、EIGRP は DUAL の距離と、リンクス テートデータベースが完全に存在しないという事実を保ちます。

本当に違うところでは、製品も違えます。知りようがないところでは、そう言います。


Osprey はパッシブです。ルーター上のエージェントなし、経路注入なし、パケット転送なし。 それが実際にどう動き、何を代償にしているのかは次の記事で扱いま す。

Osprey は自社運用型のネットワーク可視化・エンジニアリング基盤です。32 台まで無料でお試しいただけます。他の記事を読むこともできます。