← 記事一覧

データベースのないプロトコル

三種類の「何もない」。加わるべきデータベースがない、誰も実装していないデータベース、そして答えはあるが入力のないテーブル。

Michel Wijnberg

前の 2 本は、リンクステートプロトコルに慎重に加わる話でした。経路にならずに入り、亡霊を残さずに 出る。どちらも、加わるべき何かが存在することを前提にしています。

今回は、それが存在しない場合の話です。そしてそれらは同じケースではありません。三つあり、三つとも 本当に異なる仕方で行き詰まります。


その一: データベースが存在しない

EIGRP は高度なディスタンスベクタープロトコルです。隣接同士が到達性と距離の情報を交換しますが、 共有のリンクステートデータベースは保持しません。すべてのルーターが持つ同期されたコピーが存在 しないので、同期する相手 がありません。前の 2 本にあった「加わる」という手はここには存在しま せん。加わるべきものが最初から作られていないからです。

存在するのは各ルーター自身の見え方です。その隣接と、自分が計算した距離つきの宛先トポロジテーブル。 それを SNMP 経由で CISCO-EIGRP-MIB から 1 台ずつ読み取り、隣接グラフは各ルーターが自分の隣接に ついて語ることから組み立て直されます。

読み取るのではなく、組み立て直すのです。ネットワークの誰もその絵を持っていません。全員に尋ねて 答えを合わせて初めて存在するものであり、これは LSDB を読むのとは別の認識論的立場です。結果として できるグラフが同じに見えるとしても、そこは正直に言っておく価値があります。


自分が誰かを言おうとしない隣人

そこで具体的な問題が一つ。これがなかなか良い問題です。

EIGRP の隣接エントリは隣接のアドレスを教えてくれます。IPv6 ではそのアドレスは リンクローカル であり、リンクローカルアドレスはリンク上のインタフェースを識別します。デバイスを識別しません。 ネットワークの正反対の端にいる 2 台のルーターが、何の衝突もなく同じリンクローカルアドレスを持ち えます。スコープがリンクだからです。

つまり隣接テーブルは 向こうに何かがいる とは言い、それが何かを言うことは拒みます。

解決はまったく別の層から来ます。そのデバイスについてすでに発見済みの LLDP と CDP の隣接を、 インタフェースで索引したものです。EIGRP 隣接のインタフェースを、同じインタフェース上の L2 隣接と 突き合わせれば、向こう端にいるのがどのデバイスかが分かります。

つまり Osprey における EIGRP の辺は、その下では二つの独立した観測が一致したものです。ルーティング プロトコルが隣接の存在を言い、リンク層が向こう端にいるのが誰かを言う。L2 データが欠けているとき、 その隣接は 未解決 のままです。アドレス体系から推測もしませんし、命名から推論もしませんし、 サブネットで突き合わせもしません。デバイスに帰属させられない辺は、辺になりません。


その二: テーブルには答えがあるが入力がない

EIGRP のトポロジテーブルは、二つ目の「何もない」が住む場所であり、製品に拒否を生じさせたのは これです。

このテーブルにはアクセス可能な列が 12 本あります。それらは合わせて DUAL の距離を運びます。 実行可能距離、現在の計算距離、サクセサが報告した距離、加えてサクセサ数とネクストホップの状態。 それは各ルーターがいま何を信じているかを見せるには十分で、このブログの第 1 回 が示しているのはまさにそれです。各ルーター自身の数値が、鎖に沿って減っていく様子です。

新しい何かを計算するには足りません。

仮定の変更後にメトリックを再計算するには、報告された距離がそこから導かれた構成要素と、その背後の インタフェース状態が要ります。それらはルーター上にあります。e-ams1-cr1 に show ip eigrp topology 10.64.0.0/15 を尋ねれば、そのプレフィックスについて最小帯域、総遅延、 信頼度、負荷、MTU、ホップ数を印字します。だから私はそれらが存在すると推論ではなく知っているのです。

それらは読んでいる MIB テーブルにはありません。12 本の列は DUAL が決めた結果を運びます。ルーターは DUAL がそれを決めた材料のほうを持ったまま、ここには公開しません。

だから Osprey は拒否します。EIGRP ドメインでの障害シミュレーションを頼めば、新しい鎖を投影する ことを断り、理由を述べます。DUAL の再収束は予測できない、なぜなら読み取っているテーブルは距離を 運んでおり、再計算が必要とするメトリック構成要素を運んでいないから、と。

その拒否について、拒否そのものより重いことが二つあります。

それはプロトコルではなく、私たちが読んでいるものに限定されています。 メッセージは、これが データ収集の天井であって EIGRP の性質ではないと述べるように書かれています。将来どこか別の場所から 構成要素を読むエンリッチャーができれば、それは解けるからです。「EIGRP はシミュレートできない」と 言う製品は、二度と尋ねるなと静かに告げているのであり、それは「いまは入力を収集していない」とは 別の、はるかに悪い言明です。

いつ発火するかについて厳密です。 シミュレートする変更が純粋な削除であり、削除される対象が観測 された鎖の上にないと証明できるなら、実際の鎖はそのまま示され、この障害はそれに触れないという注記 がつきます。どこか他所で容量を取り去っても、それを使っていなかったディスタンスベクター経路が良く なることはありません。しかしコスト変更や新しいリンクはどこからでも経路を引き寄せうるので、そちらは 常に「触れる」と数えます。エンジンは必要なところで拒否し、一律には拒否しません。その差こそが拒否の 価値のすべてです。


その三: データベースは規格のなかにだけ存在する

三つ目の「何もない」がいちばん歯がゆい。誰のバグでもないからです。

IS-IS には標準 MIB があります。RFC 4444、.1.3.6.1.2.1.138 です。Osprey の SNMP 探索はその木を 先に 探り、.1.3.6.1.4.1.9.10.118 の Cisco の木にはそのあとでしか落ちません。二つの OID 群は ベース相対の列レイアウトを共有し、MIB が本当に異なるところ、すなわちサーキット列が 1 本ずれる ところだけが違います。隣接の列は同一です。設計は意図してベンダ中立です。

その標準の経路は、実機に対して一度も証明されていません。

ユニットテストがないという意味ではありません。テストはあります。私たちが到達できるどのデバイスも Cisco の木しか実装していないからです。ラボのルーターに標準の .138 の木を探ると No Such Object が返ります。ベンダ中立のコード経路はフィクスチャによってのみ動かされており、それ以外では動いて いません。私はこの一文を、誰かに発見させるより自分で書くほうを選びます。

そして Arista がそれを、教訓的なやり方で悪化させました。サービスポッドの vEOS-lab 4.29.2F を探る と、標準の .138 の木は No Such Object を返し、Cisco の .9.10.118 の木も同じ でした。 どちらもなし。このデバイスは IS-IS を完璧に喋るのに、それについて尋ねられる SNMP の木がいっさい 存在しないのです。

同じエージェントは OSPF-MIB を問題なく提供し、LLDP-MIB も提供し、OSPF が設定されれば OSPF の木を 動的に登録します。ですからそれらのノードについての誠実な答えは「IS-IS 探索が失敗した」ではなく、 まして空のトポロジでもありません。このデバイスにはこの質問ができない です。結果としてポッドの リーフは代わりに OSPF で探索されます。

これを市場についての主張に変えるつもりはありません。ベンダ 2 社は調査ではないからです。言えること は限定的ですが、それでも有用です。私たちがテストできたすべてのデバイスにおいて、標準 MIB は実装 されておらず、Cisco のエンタープライズ MIB だけがそのデータを露出する唯一の木でした。到達できる 何ものも実装していない標準は、約束を築ける標準ではありません。

EIGRP のネットワークで開いた Reports メニュー。LSDB Browser、Neighbor Table、Inter-Area Routes、External Routes はいずれもグレーアウトしており、IGP Prefixes と BGP 系のレポート、そして独立した EIGRP Topology の項目だけが選べる
EIGRP のネットワークで開いた Reports メニュー。LSDB Browser、Neighbor Table、Inter-Area Routes、External Routes はいずれもグレーアウトしており、IGP Prefixes と BGP 系のレポート、そして独立した EIGRP Topology の項目だけが選べる

このメニューが、この記事の正直な要約です。4 つのレポートがここで開けないのは、存在しない データベースを読むものだからで、グレーアウトした項目はそれぞれ、空の表を開く代わりに、 マウスを載せると理由を返します。EIGRP には代わりに独自の項目があります。答えられることが 別の問いだからです。


三種類の「何もない」

並べて置きます。これらを同一に扱う製品は、少なくとも二つについて嘘をついているからです。

何が欠けているか誘惑代わりに何をするか
加わるべきデータベースがないトポロジ情報源をでっち上げる各ルーター自身の見え方から再構成し、そうラベルする
答えではなく入力が欠けている既定の帯域と遅延を仮定するシミュレーションを拒否し、天井は自分たち側だと名指す
MIB そのものがない空のトポロジを返すこのデバイスには尋ねられないと述べ、提供されている木を使う

真ん中の列を読んでください。どれも、データが本当にあったときに得られる画面とまったく同じ画面を 生みます。それが穴を埋めることの問題のすべてです。出力には、自分のどの部分が観測されたものかを あなたに伝える手段がありません。


要点

このシリーズの最初の 2 本は、他人のプロトコルのなかで注意深い客であることの話でした。今回は、 そもそも入れてもらえない部屋の話です。

そこで良い客であるとは、別のことを意味します。入る道を見つけることではなく、どの扉が施錠されて いたかを正確に述べることです。未解決の EIGRP の辺、断るシミュレーション、尋ねられないデバイス。 三つの拒否、それぞれが自分の原因を名指しており、どれも答えの装いをしていません。


このシリーズの次回にして最終回: 尋ねられるのを待つのではなく自分から来る唯一の情報源と、それが あなたの信じてよいことを変える二つの道筋。ポーリングではなくプッシュ。

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