adjacency

ospfの動作を確認するときによく、「ネイバーがフルになった」とか、「フルになってネイバーが確立した」とか言う。

コマンドでも show ip ospf neighborなどというのがあって、その結果 init とか full とか表示されている。

私も言っていた。「ネイバーがフルになった」「ネイバーが確立した」と。しかし、この使い方は間違っている。間違っているというのは言いすぎだとしても、不正確である。

まず、fullの状態になった関係は、adjacencyという。読み方はあえてカタカタにすると「アジェーセンシー」である。adjustのように「アジャセンシー」とは読まないようだ。

adjacencyという関係になってもneighborでもあるから、「ネイバーがフルになった」という言い方は、セーフかもしれない。しかし、「フルになったので、ネイバー関係が確立した」と言ったら、完全に間違いである。

うしてそうなるのかというと、二台のルータを対向させてOSPFを設定させた場合は常に、お互いにfullつまりadjacencyの関係になるからだ。だから、ospfが正しく設定されればfullになる、fullにならなければ正しくない、と思い込むのである。

同じリンク上に3台のOSPFルータを作ってみる。それぞれのルータに2台ずつのneigborが存在することになる。1台がDR、もう一台がBDRとなる。DRとは、すべてのneighborが adjacencyの関係になる。BDRともかな?では、4台になったら。このとき、DRでもBDRでもないルータが2台存在することになる。この2台の関係はどうなるか。neighborではある。しかし、adjacencyにはならない。つまり、show ip ospf neighborコマンドを実行した結果が、full にならないのである。(確か 2wayでとまる)そして、それでも neighborの関係なのである。

この状態を見る機会はあまり無いと思う。CCNAとかのためにOSPFを勉強した人では、一つのネットワークに4台のOSPFルータを作ることはまずないだろうから。覚えておいてほしい。状態がfullにならなくてもneighborである場合があるということを。というか、adjacencyの関係の方が特別であるということを。

OSPFのDRというのは、OSPFルータが多数存在する状況で、すべてのルータ同士で経路情報の交換をしなくてよいようにと、考えられた機能である。だから、OSPFルータ同士の関係がneighborなのか、adjacencyなのか、というのは重要な違いであり、「neighborもadjacencyも同じようなもの」ということはできない。また、よくこれらの語を「隣接」とか「近傍」とか訳す人がいるが、これくらいの語は訳さずにそのまま使うべきである。ただでさえ紛らわしい概念が翻訳することでさらに紛らわしくなる。