助け合いフォーラム

Cisco

CCNP ENARSI(300-410)
問題ID : 26311
問題を開く
以下のネットワークではPC4が他のPCと通信できない。 PC4と他のPCを通信できるようにするにはどうすればよいか。

この問題はプレミアムコンテンツです。

上に戻る

経路学習の順序について

公開日 2023/10/18

▼当該問題の別の方の質問
https://mondai.ping-t.com/g/posts/1075

上記はこの問題についての別の方のQ&Aですが、その中で回答者さまが以下のように経路学習が行われると回答しています。

①RCが「192.168.51.0/24」の経路情報をRBへOSPFで送信する(RBが学習する情報のAD値はOSPFの110)
②RBが①で学習した「192.168.51.0/24」の経路情報をRAのEIGRPへ再配送する(RAが学習する情報のAD値は外部EIGRPの170)
③RAが②で学習した「192.168.51.0/24」の経路情報をRCのEIGRPへ送信する(RCが学習する情報のAD値は95)
この説明は、この問題の設定において "ループが発生する原因となっている" 経路学習の順について説明しています。
(各ルータは各方面から経路情報を受信しており、この順だけで経路が学習されているわけではありません)

では、下記の順序で経路学習した場合はどうなるのでしょうか。(★行が上記との差分です。)

①RCが「192.168.51.0/24」の経路情報をRBへOSPFで送信する(RBが学習する情報のAD値はOSPFの110)
★RCが「192.168.51.0/24」の経路情報をRAへEIGRPで送信する(RAが学習する情報のAD値はEIGRPの170)
②RBが①で学習した「192.168.51.0/24」の経路情報をRAのEIGRPへ再配送する(RAが学習する情報のAD値は外部EIGRPの170)

上記の後、RAはどのような挙動になるのでしょうか?
既にRAは★で192.168.51.0/24、AD値170、メトリック1000000 1 255 1 1500で学習している状態ですよね。
そこに②で完全同一の経路が再配送されると思いまして。
ご教授のほどよろしくおねがいします。

2023/10/18 13:41

EIGRPではもともとルーティングループを回避するためのメカニズムとしてスプリットホライズンが備わっています。
スプリットホライズンは「ルートを学習したインターフェイスから同じルートをアドバタイズしない」というものです。

この問題でループが発生している状況では、RCはRAからEIGRPで「192.168.51.0/24」の経路情報を学習しているので、スプリットホライズンが発動してRCからRAに「192.168.51.0/24」の経路情報は送られないというようなことが起こっていると考えられます。
なので、nishina_dnsさんがおっしゃっている「★RCが「192.168.51.0/24」の経路情報をRAへEIGRPで送信する」の動作はスプリットホライズンで回避されているということになります。
解説の2つ目の図にあるRAのtracerouteの結果を見ると、RAは192.168.51.100へRBを経由して到達しようとしていることがわかりますので、RCを経由するルートはRAのルーティングテーブルに載っていないはずです。(これはスプリットホライズンによってRCを経由するルートは学習できていないからです。)
スプリットホライズンの参考情報です。
Enhanced Interior Gateway Routing Protocol の理解および使用

ちなみにもし、RAがRCとRBの両方から等コストで宛先が同じ経路情報を受信していたとしたら、EIGRPでは等コストロードバランシングが行われるので、ルーティングテーブルには2つのパスが載ります。
ルーティングテーブルに2つのパスが載っていたら、tracerouteの結果は両方のパスを使っていることがわかるような結果になると思います。

ルーティングループは、ルータやプロトコルの起動タイミング、ネットワークの収束タイミングなどによって、同じ構成でも発生する場合としない場合があったりして結構複雑です。
以前の質問の回答でも記載してますが、この説明はあくまでもこの問題の設定において "ループが発生する原因となっている" 経路学習の順について説明しているという点を忘れないでくださいね。


コメント

n nishina_dns

2023/10/18 19:20

>ルーティングループは、ルータやプロトコルの起動タイミング、ネットワークの収束タイミングなどによって、同じ構成でも発生する場合としない場合があったりして結構複雑です。 すみません、大前提が覆りそうなので念のための確認です。 問題文に「以下のネットワークではPC4が他のPCと通信できない。」とあることから自分の認識では、 この問題の通りにネットワーク機器を設定したら「"絶対"にループが発生する」と思っていたのですが、 そうではなく、問題の通りの設定でもループが発生しないパターンもある、ということでよろしいでしょうか?

この返信に対して
コメントを記入できます

2023/10/19 11:31

問題文に「以下のネットワークではPC4が他のPCと通信できない。」とあることから自分の認識では、
この問題の通りにネットワーク機器を設定したら「"絶対"にループが発生する」と思っていたのですが、

解説にも"ルーティングループが発生する危険性があります。"と書いてあるので、ループ発生の可能性はあり得ますが、絶対に発生するかどうかは別という感じかなと思います。
発生するかどうかは各ルータやプロセスの起動タイミングとかによって変わってきます。
複数のルーティングプロトコルを使用しているとプロトコルによって収束時間も異なる(OSPFやEIGRPに比べてRIPの収束時間は遅い)ので、このあたりもネットワークが不安定になる要因になったりします。
この問題では、もしタイミング的にうまいこといってループが発生しないパターンがあったとしても、このネットワーク構成でループが発生しうる原因は「distance eigrp 90 95」が設定されている点だからこの部分をフィルタリングした方が良いよねって感じですかね。
(問題文は「PC4が他のPCと通信できない。」となっているので、ループが発生しているパターンで問われているのは明らかですが)

もし最初はループが発生しないパターンで動作していても、運用中に何かしら障害が発生してルータやプロセスやインターフェースのダウン、再起動などを機にルーティングアップデートでループが発生するパターンでルーティングテーブルが更新されるかもしれません。

そうではなく、問題の通りの設定でもループが発生しないパターンもある、ということでよろしいでしょうか?

RCがもとは自分が発信した192.168.51.0の経路情報をRAやRBから受け取らなければループは発生しないはずなので、192.168.51.0の経路情報がRA-RB-RC間でループしないパターンは以下のような場合が考えられると思います。
・RA-RC間のEIGRPでスプリットホライズンの働きによって、ネクストホップがRAとなる192.168.51.0の経路情報をRCが受信しない
 (RAはRCをネクストホップとする192.168.51.0の経路情報を受信しています)
・RA-RB間のEIGRPでスプリットホライズンの働きによって、ネクストホップがRAとなる192.168.51.0の経路情報をRBが受信しない
 (RAはRBをネクストホップとする192.168.51.0の経路情報を受信しています)
・RB-RC間のOSPFでネクストホップがRBとなる192.168.51.0の経路情報をRCが受信しない
 (OSPFではスプリットホライズンが働くわけではありませんが、LSDB、SPFアルゴリズムによってループが発生しないようになってます。RBはRCをネクストホップとする192.168.51.0の経路情報を受信しています)
このような状況になれば、RCは192.168.51.0の経路情報をRAやRBからは学習せずにRDからRIPで学習するので、RA-RB-RCのトライアングルでループすることはなくなるはずだと思います。
なので結局、RA→RCとRC→RA(またはRA→RBとRB→RA)のどっちが先に192.168.51.0の経路情報を学習して、どっちがスプリットホライズンで伝播されないようになるかのタイミングの問題なんじゃないでしょうか。

参考になりそうなサイトです↓
IOSルーティング編<第1回> 再配布の基礎
第32回再配布(3) ルーティングループ


コメント

n nishina_dns

2023/10/19 12:35

ご回答ありがとうございました。 絶対ループが発生するという前提で経路学習の順序のパターンを考えていたので混乱していました。 本件クローズさせていただきます。

この返信に対して
コメントを記入できます

この投稿に対して返信しませんか?