3 つの IGP、1 枚の地図
192 台のルーター、3 つのキャリア、3 つのルーティングプロトコルが単一の画面でどう見えるか
Michel Wijnberg
私にはラボがあります。図面でもなければ、シミュレーターでもありません。本物のプロト コルスタックが動く実機のルーター 192 台であり、私に本気で反論できる相手に対して Osprey を作るために、毎日使っています。
このラボは意図的に扱いにくく作ってあります。何ひとつ共有しない 3 つのキャリアを収容 しています。
| テナント | ASN | IGP | 構成 |
|---|---|---|---|
| Harrier-Broadband | 200 | OSPFv2 と OSPFv3 | プロトコルごとに 15 エリア、同じ回線上でデュアルスタック |
| Kestrel-Dynamics | 100 | EIGRP、IPv4 + IPv6 | フラット。EIGRP にエリアがないため |
| Merlin-Carrier | 300 | IS-IS、マルチ AF | level-2 バックボーンの下に 17 の level-1 エリア |
3 つのプロトコル、3 つのアドレス設計、3 つの ASN、3 組の認証情報。共有された IGP は どこにもありません。トポロジーツールに突きつけられるほぼ最悪のケースであり、だからこ そ私はこれを作りました。
以下はすべて、この記事を書きながらライブで取得した、そのラボのスクリーンショットです。 作り物はひとつもありません。
絵より先に階層がある理由
たいていのトポロジーツールはキャンバスから始め、構造は後から取って付けます。それは、 同じ物理ルーターが 2 つの異なる答えに同時に、しかも正当に属するまでは機能します。キャ リアネットワークでは、それは日常です。
Osprey はこれを逆にしました。すべてのオブジェクトは明示的な階層にぶら下がります。
Network → Autonomous System → Routing Domain → Protocol Instance → Area → Device
この連鎖は飾りではありません。「どの OSPF プロセスか、どの VRF の中か、どの AS の下 か、どのテナントに属するか」を推測なしで答えられるのはこの連鎖のおかげであり、1 台の デバイスがあるインスタンスでは ABR、別のインスタンスではただの内部ルーターであっても、 モデルが自分で結び目を作らずに済む理由でもあります。
サイドバーが何を示しているかに注目してください。OSPF 1 と OSPFv3 1 (v6) は別 個のプロトコルインスタンスであり、それぞれが自分の 15 エリア、自分の LSDB、自分の SPF を持っています。両者は同じ物理リンクの上を流れます。しかし、都合のよい「IGP」というひ とつの抽象にまとめられてはいません。本当に同じものではないからです。RFC 5340 は OSPFv3 に独自の LSDB と独自のトポロジーを与えており、そうでないふりをすれば、両者が食 い違った瞬間に誤った答えが出ます。
Harrier-Broadband:OSPF、15 エリア、デュアルスタック
こちらが AS 200 を、エリアで色分けしたものです。
64 台のルーター、151 本のリンク、30 のエリア(OSPFv2 に 15、OSPFv3 に 15)。中央の青 い塊がエリア 0.0.0.0、すなわちバックボーンです。そこからぶら下がる色付きのかたまりは それぞれ、自分の ABR を通じてバックボーンに到達している非バックボーンエリアです。
このサイズならまだ絵として読めます。5 倍の規模になれば読めません。だからこそ、同じト ポロジーをエリア単位に畳むことができます。
雲ひとつがエリア、線 1 本がエリア間隣接の束で、その上に本数(4×、8×、2×)が付き
ます。「エリア 19.5.1.0 はバックボーンにどれくらい心もとなくぶら下がっているのか」に答
えるとき、私が実際に使うのはこのビューです。ここでの答えは「4 本のリンクで」であり、隣
にある 2 本しかないエリアとはまったく別のリスクプロファイルです。
Merlin-Carrier:IS-IS、そしてアドレスファミリは本当に効いてくる
AS 300 は IS-IS で動いています。物理的な形は同じ、プロトコルモデルはまったく別物です。
IS-IS は多くのツールが静かに転ぶ場所です。IS-IS は「言い方を変えた OSPF」ではないから です。ひとつの IS-IS LSDB は CLNS、IPv4、IPv6 の到達性を同時に運ぶことができ、正しい最 短経路はアドレスファミリごとに決まります。
そこで Osprey はアドレスファミリごとに計算し、いま見ているのがどれなのかを明示します。
ホップの表を見てください。アドレスファミリが CLNS なので、各ホップは System
ID(0100.6600.8003)と回線で識別されています。IPv4 アドレスではありません。CLNS の
パスでは、それは無意味だからです。セレクタを IPv4 や IPv6 に切り替えれば、同じパスが、
そのファミリが実際に使うアドレッシングで描き直されます。
(このスクリーンショットは、IS-IS におけるホップバイホップのモデル化について、ある告白 もしています。それは後の記事の主題であり、ここに 埋めて済ませるつもりはありません。)
Kestrel-Dynamics:EIGRP、リンクステートデータベースがそもそも存在しない
そして AS 100 です。
色はひとつ。「エリア」は 2 つ。これは描画のバグではありません。EIGRP が自分自身につい て正直であるということです。
EIGRP はディスタンスベクター型のプロトコルで、つなぎ合わせるリンクステートデータベース
も、色分けの根拠になるエリアの概念も持ちません。2 つの項目は単に IPv4 と IPv6 のインス
タンスです。EIGRP は独自の Hello プロトコルでネイバー隣接を確かに形成しますが、その背後
にたどるべきリンクステートデータベースはなく、走らせる SPF もありません。ネイバー同士が
交換するのはディスタンスベクターであって、同期された地図ではないのです。そこで Osprey
は CISCO-EIGRP-MIB から読み取り専用で読み、各ルーターが自分のネイバーについて報告する
内容から隣接グラフを再構成します。このラボでは、それが 580 の生きたネイバー関係になりま
す。
この違いは経路計算まで伝わり、そして目に見えます。
このパスに「合計コスト」はありませんし、最初から存在しえません。EIGRP の複合メトリック はパス全体を表すものであって、単一ホップを表すものではないので、ホップごとのコストを足 し合わせても意味のない数字にしかなりません。代わりに得られるのは、各ルーターが宛先へ 向けて自分で計算した現在の距離が、連鎖に沿って減っていく様子です。712704 → 710144 → 658944 → … → 128256。ルーターに 1 台ずつログインして読み取るのと同じ値です。(DUAL の Feasible Distance はこれとは微妙に異なる量で、そのルートが最後に passive になって以降 の最小値、つまり実行可能性のしきい値です。ホップ表は両者を混同せず、別のものとして扱い ます。)
3 つのプロトコル、本当に異なる 3 つのモデル、3 つの正しい答え。それらを同じものだと言い 張る抽象ではありません。
絵の下にあるもの:LSDB そのもの
キャンバスは表現にすぎません。その下にあるモデルはリンクステートデータベースであり、 Osprey はそれを閲覧可能なまま保っています。
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 はパッシブです。ルーター上のエージェントなし、経路注入なし、パケット転送なし。 それが実際にどう動き、何を代償にしているのかは次の記事で扱いま す。