前の話で、EIGRP の隣との関係を成立させる条件は確認できた。AS 番号、K 値、Hello と hold、直結セグメント。show ip eigrp neighbors を打てば、いま誰と関係が生きているかを読める。
その次に見る画面が、show ip eigrp topology だ。
P 10.2.1.0/24, 1 successors, FD is 4096
via 10.1.1.2 (4096/2816), GigabitEthernet0/0
via 10.1.1.3 (5120/2816), GigabitEthernet0/1
via 10.1.1.4 (6400/5888), GigabitEthernet0/2
同じ宛先に向かう行が、3 つ並んでいる。けれど、一番上の行には 1 successors とある。3 行見えているのに、Successor は 1 本だけだ。では、残りの 2 行は何なのか。すぐ使える予備なのか。それとも、並んでいるだけで予備にはできない経路が混じっているのか。
この違和感は、実務のトラブルシューティングで地味に効いてくる。show ip route eigrp に出るのは、いま実際に転送へ使われている経路だけだ。一方の show ip eigrp topology には、ルーティングテーブルに載る経路に加えて、次に使えるかもしれない候補も並ぶ。だからここを「行がたくさんあるから予備があって大丈夫」と読んでしまうと、隣が落ちた瞬間に実際の動作と説明がずれる。
並んでいるのに、予備にできない経路がある。条件は、隣の RD と自分の FD という 2 つの距離の関係の中にある。


並んでいる経路と、1 successors の数が合わない
show ip eigrp topology の各行の先頭にある P は、Passive 状態を示す。これは「経路が静かに止まっている」という意味ではない。EIGRP がその宛先について手元の情報で計算を終え、安定している、という目印だ。
次に 1 successors を見る。Successor は、その宛先へ実際に転送するときの next hop として選ばれた最良経路で、show ip route eigrp にも反映される。だから 1 successors は、画面に見える行の総数ではない。ルーティングテーブルに書き込まれる側の本数を示している。
ここを混ぜると、読み方が崩れる。
P 10.2.1.0/24, 1 successors, FD is 4096
via 10.1.1.2 (4096/2816), GigabitEthernet0/0
via 10.1.1.3 (5120/2816), GigabitEthernet0/1
2 つの via が並んでいても、Successor は 1 本かもしれない。もう 1 本は、すぐ使える予備の Feasible Successor かもしれないし、表示の種類 (all-links) によっては、Feasibility Condition を満たしていない経路を見ているだけかもしれない。大事なのは、行が見えているだけで「すぐ使える」と読まないことだ。
EIGRP は、隣から受け取った経路を、距離の小さい順にただ棚へ並べるわけではない。ある宛先に対して、まず最良経路の Successor が決まる。そこから先は、同じ宛先へ向かう別の隣が、Feasible Successor として予備にできる条件を満たしているかを見る。条件を満たせば、Successor が失われたときに、追加の問い合わせなしで、手元の情報だけで切り替えられる。条件を満たさなければ、たとえ行が見えていても、予備としては扱わない。
この時点では、まだ式を覚えなくていい。最初に押さえるべきは、show ip eigrp topology の画面には少なくとも 3 種類の読み分けがある、ということだ。P は宛先の状態、1 successors はルーティングテーブルへ行く本数、via ... (CD/RD) は隣ごとの候補を示す。並ぶ情報は同じ宛先を向いていても、役割は同じではない。
ポイント:
show ip eigrp topologyで同じ宛先の行が複数見えても、1 successorsは行数ではなく、転送に使われる Successor の本数を示す。まずここで、見えている候補の数と、すぐ使える経路の数を分けて読む。
考えてみよう
show ip eigrp topology に、同じ宛先で 3 行並んでいたとする。そのうち 1 つは採用される経路 (Successor)。残りの 2 つは、どう分かれるだろうか — どちらも予備になるのか、それとも片方は予備にならないのか?
答えを急がず、§2 の前で 5 秒だけ自分の頭で先に置いてから読み進めてほしい。
1 行を解剖する — (CD/RD) の 2 つの数字
次に、1 行を取り出してみる。EIGRP の topology 出力は、短い文字列のなかに見た目より多くの情報が詰まっている。
P 10.2.1.0/24, 1 successors, FD is 4096
via 10.1.1.2 (4096/2816), GigabitEthernet0/0
宛先は 10.2.1.0/24。via 10.1.1.2 は、その宛先へ向かうときに使う隣 (next hop) のアドレス。最後の GigabitEthernet0/0 は、その隣へ出ていく自分側のインターフェースだ。
本話の核心に直結するのは、FD is 4096 と (4096/2816) の部分だ。
FD is 4096 の FD は Feasible Distance。自分から見た、その宛先までの現在の最短距離を示す。ここでは、自分がいま最良として知っている距離が 4096 だと読む。
一方、(4096/2816) は (CD/RD) の数字ペアとして読む。左の 4096 は Composite Distance、つまりその隣を経由したときに自分から見た合計距離。右の 2816 は Reported Distance、つまり隣が「自分から目的地までは 2816 だ」と報告してきた距離だ。
同じ数字に見えても、向きが違う。左側は自分の側で足し込んだ結果。右側は隣から見た目的地までの値。Feasibility Condition は、この右側の RD と、自分の FD を比べるところから始まる。
ここで Reported Distance という名前が少し長く感じるかもしれない。けれど、画面と対応させれば意味は素直だ。隣がこちらへ報告 (Report) してきた距離だから RD。Feasible Distance も、画面上では FD is 4096 としてそのまま現れる。名前を丸暗記するより、出力のどこに出ているかで覚える方が強い。
RFC 7868 では、Reported Distance は隣が広告する目的地までの距離、Feasible Distance は自分から目的地までの最小の距離として定義されている。本文で使う読み方も、この 2 つに沿っている。難しいのは名前そのものではなく、どちらの視点の距離を見ているかを取り違えないことだ。


では、さっきの問いに戻る。同じ宛先に 3 行あるとして、Successor 以外の 2 行はどう分かれるのか。答えは、左の数字 (CD) の大小だけでは決まらない。右側の RD が、自分の FD より小さいかどうかで決まる。
ポイント:
(CD/RD) の数字ペアは、左が自分から見た距離、右が隣から見た距離を表す。Feasibility Condition の判定でまず見るのは、右側の RD と、上に出ているFD is Xの関係だ。
隣の RD が FD より小さいとき
ここからは数値で見る。なお、この値は説明用の小さな架空値で、実機の composite metric の単位スケールには踏み込まない。
自分から見た現在の Feasible Distance を FD=4096 とする。同じ宛先に対して、3 つの隣から経路が届いている。
P 10.2.1.0/24, 1 successors, FD is 4096
via 隣 A (4096/2816)
via 隣 B (5120/2816)
via 隣 C (6400/5888)
隣 A は (4096/2816)。左の 4096 は、自分から見たこの経路の合計距離。右の 2816 は、隣 A から見た目的地までの距離だ。この合計距離が 3 つの中で最小なので、隣 A が Successor になる。
隣 B は (5120/2816)。左の 5120 だけ見ると、隣 A より遠い。だから Successor にはならない。けれど、注目すべきは右側の RD 2816 で、これは自分の FD 4096 より小さい。隣 B から見た目的地までの距離が、自分の現在の距離より短いということは、隣 B が自分を経由して目的地へ向かっている (ループしている) 可能性はないと判断できる。だから隣 B は、Feasible Successor として予備にできる。
隣 C は (6400/5888)。左の 6400 が遠いだけでなく、右側の RD 5888 も自分の FD 4096 以上になっている。隣 C は「自分から目的地までは 5888 だ」と報告してきている。自分より遠いと言っている隣を次の経路として受け入れると、最悪の場合、その隣の道筋の中に自分が含まれているループの可能性を消しきれない。だから EIGRP は、この経路を Feasible Successor として扱わない。
この判定が Feasibility Condition、略して FC だ。
RD < FD
隣の Reported Distance が、自分の Feasible Distance より小さいこと。RFC 7868 では、FC は隣が loop-free な path を提供しているかを確認する十分条件として説明される。EIGRP は、これを Source Node Condition として使う。式だけ見ると短いが、意味は重い。隣の話だけで経路を組み立てるプロトコルが、ループする可能性を避けるための境界線を、RD と FD の比較に置いている。
距離ベクタ系のプロトコルは、リンクステート系 (OSPF など) のようにネットワーク全体の地図を全員で共有するわけではない。各ルータは、隣が言う距離に、自分からその隣までの距離を足して判断する。全体像が見えないなかで「この隣を選んでも、自分へ戻ってくる遠回りにはならない」と各ルータが独立に確認できる条件が要る。EIGRP では、Diffusing Update Algorithm、つまり DUAL がその設計を支えていて、本話で見ている FC は、その DUAL を手元の出力で読める最小の入口にあたる。
ここまでを、3 つの隣で並べ直す。
- 隣 A: RD=2816、FD=4096 より小さい。最小距離なので Successor。
- 隣 B: RD=2816、FD=4096 より小さい。最小ではないが、Feasible Successor。
- 隣 C: RD=5888、FD=4096 以上。Feasible Successor にはしない。
同じ宛先に 3 行並んでいても、意味は 3 つに分かれる。転送に使う Successor。条件を満たして予備にできる Feasible Successor。条件を満たさないため、同じ扱いにしない経路。冒頭の違和感は、ここで回収される。


ポイント: FC は
RD < FDという短い式だが、見ているものは単なる大小ではない。隣が報告してきた距離が、自分の現在の距離より小さいときだけ、その隣は自分を含まない道筋を持っていると判断でき、Feasible Successor として予備にできる。
Successor / Feasible Successor / 除外を RD < FD で区別する
もう一度、冒頭の画面へ戻る。
P 10.2.1.0/24, 1 successors, FD is 4096
via 10.1.1.2 (4096/2816), GigabitEthernet0/0
via 10.1.1.3 (5120/2816), GigabitEthernet0/1
via 10.1.1.4 (6400/5888), GigabitEthernet0/2
最初に見たときは、3 行あるのに 1 successors という表示が引っかかった。いまなら、同じ画面を順に読み解ける。
まず、P を見る。これは Passive 状態。少なくともこの宛先について、手元の情報で計算が終わり、安定して読める状態にある。
次に、1 successors を見る。Successor は 1 本。show ip route eigrp に出て、実際の転送に使われる側もその 1 本だ。
次に、FD is 4096 を見る。自分が基準としている、その宛先までの最短距離が 4096 だ。
最後に、各 via 行の (CD/RD) の数字ペア を見る。右側の RD を取り出し、自分の FD と比べる。2816 は 4096 より小さい。5888 は 4096 以上。ここで、Feasible Successor として予備にできる経路と、同じ扱いにしない経路が分かれる。
この読み方を持っていると、show ip eigrp topology はただの候補一覧ではなくなる。Successor、Feasible Successor、FC を満たさない経路の境界を、自分の目で引ける画面になる。隣が落ちたときに「手元に Feasible Successor がある」と言えるのか、「今見えている行だけではそう言えない」のかを、出力の数字から説明できる。
ここで show ip route eigrp との役割も分かれる。show ip route eigrp は、いま実際に転送へ使われている経路を見る窓。show ip eigrp topology は、その裏で控えている Successor と Feasible Successor の候補を読む窓。両方を見ると、いま転送に出ている経路と、次に使えるかもしれない手元の候補とを、分けて言える。
そして、最後に残しておく境界がある。Feasible Successor が手元にあるときは、Successor が失われても、EIGRP はすでに条件を満たした経路を持っている。けれど、手元にない場合は、同じ読み方では終わらない。そこには、別の段取りがある。本話では、その名前や細部には入らない。
明日 show ip eigrp topology を見るなら、最初の 4 点だけでいい。
Pを見る。N successorsを見る。FD is Xを見る。(CD/RD) の数字ペアの右側を、自分の FD と比べる。
この 4 点で、画面の違和感はかなり減る。行が並んでいることと、Feasible Successor として予備にできることは別物だと、自分の言葉で切り分けられる。
ポイント:
show ip eigrp topologyは、行数を数える画面ではなく、Successor と Feasible Successor の境界を読む画面だ。P、N successors、FD is X、(CD/RD) の数字ペアを順に見れば、RD と FD の関係から、予備にできる経路とできない経路を分けられる。
次に show ip eigrp topology を開いたとき、まず (CD/RD) の右側に目が行けばいい。隣の RD は、自分の FD より小さいか。その 1 問だけで、単なる候補の羅列に見えていた画面の読み方は変わる。
Feasible Successor が手元にないときの段取りは、ここではまだ残しておく。いま持ち帰るのは、並んでいる行の奥にある、RD と FD の関係を読む目だ。