元バンドマンITエンジニアの語り場

技術とか趣味とか日々の至福と鬱憤とか

ルート再配布について検証した話

こんばんは。

 

本日はルート再配布(Route Redistribution)について簡単な確認をしたお話をしようかと思います。

 

f:id:Mickey6:20181029232947j:plain

 

何を確認したかと言うと、わたくし大変恥ずかしながら、異なるルーティングプロトコルで学習した経路は明示的に再配布をしないと別のルーティングプロトコルに渡せないという誤った認識を持っていたので、そんなことないよね〜という確認を自宅のショボいネットワーク環境で実証した、という次第です。

 

もっと噛み砕くと、IGPからBGPへのルート再配布をする際、再配布したい経路情報はredistributeコマンドでIGP→BGPに渡すのがルールで、BGPのnetwork行に再配布対象経路を記述したところで他ASにアドバタイズされないんだ、と思っていたのです。

 

(あらかじめ言っておきますが、ここではBGPとはなんぞや、とかルート再配布に関する細かな説明をする気は一切ございませんのでご承知おきください)

 

ちゃんと調べればそんなことはどこにも書いてないんですけど、勘違いって恐ろしい。。

仕事で恥かく前に気づいてマジで良かった。。

 

ってことで今回はこんな構成で確認を。

 

f:id:Mickey6:20181029235842p:plain

 

AS2内のRT-blueで、Static①で学習したセグメントBの経路をBGPでAS1に再配布するという簡単な構成。

L3にはセグメントAへの経路をStaticでルーティングさせて二台のPC間での疎通確認をするというもの。

 

 

①ルート再配布をしない場合

まずはRT-blueでルート再配布にかかる定義を設定しない場合。

 RT-redはセグメントBへの経路を知るすべがないので、PC①からPC②へのpingは通らない。PC②からPC①については上記構成では到達性があるが、戻りの経路がないので、ICMP echo replyが返って来ずタイムアウトする。

 

確認するまでもないが、RT-redのRouting Tableを見てもセグメントBへの経路情報を持っていないことがわかる。

(192.168.2.0 /24とRT-blueのループバックはBGPで学習していることもわかる)

f:id:Mickey6:20181030223009p:plain

 

②ルート再配布をした場合

次にRT-blueにてstatic①で学習したセグメントBの情報をredistrubuteコマンドでBGPへ再配布する場合。

 

RT-blueのBGPの定義を見ると、"redistribute static"という記述がある。

Route-mapでもっと柔軟に対象経路を選別することができるが、ここではシンプルに。

f:id:Mickey6:20181030223643p:plain

 

RT-blueのBGPテーブルを確認。

f:id:Mickey6:20181030224809p:plain

セグメントAとセグメントBの経路情報を持っていることが確認できます。

 

PC①からPC②への疎通を確認できました。

f:id:Mickey6:20181030230814p:plain

 

③network行に記述した場合

ここからが僕の勘違いしていたこと、

redistributeコマンドで明示的に他ルーティングプロトコルで学習した経路を再配布するのではなく、BGPのnetwork行にBGPでアドバタイズしたいセグメントを記述する方法。

 

つまりこういうこと。

f:id:Mickey6:20181030231146p:plain

設定を見ればわかるように、"redistribute static"の記述がない代わりに"network 172.17.1.0 〜"でセグメントBをアドバタイズしている。

 

これが有効なんだ〜。。と。

RT-blueが直接知らない経路でもnetworkでアドバタイズはできる。

他ASからセグメントB宛てのトラフィックが発信された場合、RT-blueまでは到達するが、そこから先はRT-blueが対象セグメントへの経路を知っているかどうかに依存するということか。

 

当然この設定でも二台のPCが相互に疎通確認することができました。

 

 という訳でルート再配布について簡易検証した結果でした〜

これからも精励致します!