助け合いフォーラム

Cisco

CCNP ENCOR(350-401)

ループバックインターフェースを宛先、または送信元とした場合のTTLの変動について。  eBGPのピア設定で疑問に感じたため。

公開日 2023/05/26

タイトルの通り、ループバックインターフェースを宛先、または送信元とした場合のTTLの変動について、教えて頂けないでしょうか?
[routerA]-------------------[routerB]
ルーターA:loopback 5.5.5.5/32 ・fa0/0 192.168.0.5/24
ルーターB:loopback 6.6.6.6/32 ・fa0/0 192.168.0.6/24

上記のようにルーターAとルーターBが直接接続されており、通信できる状態です。
ルーターAからルーターBにパケットを送信する際、送信元をルーターAのループバック、宛先をルーターBのループバックとした時、
TTLがどのタイミングで減少していくのか教えてください。
またそれらの一連の流れを確認できるコマンド等ありましたら教えて頂けると助かります。

以下が私が確認してみた内容です。
ルーターAから拡張tracerouteコマンドで 宛先を6.6.6.6 送信元を5.5.5.5 ttlを1にしたパケットを送信し、それをdebugコマンドで確認したところ、下記のログが表示されました。
*Mar 1 01:21:56.711: ICMP: dst (6.6.6.6) port unreachable sent to 5.5.5.5
*Mar 1 01:21:56.711: IP: tableid=0, s=192.168.0.6 (local), d=5.5.5.5 (FastEthernet0/0), routed via FIB
*Mar 1 01:21:56.711: IP: s=192.168.0.6 (local), d=5.5.5.5 (FastEthernet0/0), len 72, sending
*Mar 1 01:21:56.715: ICMP type=3, code=3

上記ログの1行目を見て頂きたいのですが、内容としては パケットは6.6.6.6に届いているが、利用できないポートが宛先となっている為、エラーメッセージを5.5.5.5宛に返すという内容で合っていますか?
私の認識が正しいのであれば、つまり、5.5.5.5から6.6.6.6まではTTL 1 で疎通可能であるという事でしょうか?
もしTTL 1 で疎通可能なのであれば、なぜeBGPでループバックインターフェース間のピア設定をする際にTTL 2以上にする必要があるのか疑問に感じまして。

目を通していただき有難うございました。回答いただけますと助かります。宜しくお願い致します。

2023/05/27 21:57

もしTTL 1 で疎通可能なのであれば、なぜeBGPでループバックインターフェース間のピア設定をする際にTTL 2以上にする必要があるのか疑問に感じまして。

TTLについて聞きたいのかeBGPピアリング時のTTLをどう設定するのかと、話題が二つあるようなのでコメントの仕方が悩ましいですね。
加えて、どの問題IDに関連するものかがわからないので、解説や参考に疑問の解消ポイントが記載されているかが確認できないのも…

それはそれとして。

単純な話をするとeBGPはデフォルトで「直接接続した相手」とピアを張ることになるので、直接接続していないアドレス(=対向ルータのLoopback)は「TTL=1」以内にいないと言うことでピアリングに失敗するんです。この挙動については以下のドキュメントが参考になるかと思います。
https://community.cisco.com/t5/tkb-%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A4%E3%83%B3%E3%83%95%E3%83%A9-%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/7-19-webcast-quot-%E5%88%9D%E7%B4%9A%E8%80%85%E5%90%91%E3%81%91-bgp%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%A8cisco%E3%83%AB%E3%83%BC%E3%82%BF%E3%81%AE%E5%8B%95%E4%BD%9C-quot-q-a%E3%83%89%E3%82%AD%E3%83%A5%E3%83%A1%E3%83%B3%E3%83%88/ta-p/3163961

TTL=1のパケットを送信しようとするルータは、参照したルートが「C」だったなら、パケットを送信します。それ以外の「S」や「O」を参照したなら、パケットを送信しません。


コメント

c ciscoooo

2023/05/27 22:44

話題を絞り切れず申し訳ありません。回答いただきありがとうございます。 上記ドキュメントで理解できたかと思います。間違っていましたら指摘して頂けると助かります。 つまり、デフォルトでは、eBGPの制御パケットを送信する際、TTL1の場合、参照したルーティングテーブル上でCとなっている場合にしか送信しないという事ですね。 参考書や私が目にしたQ&AにはTTL1だと、制御パケットが対向のルーターに到着した時点で0になりLoopbackには届かない。といった旨の内容が書かれていましたので、もやもやしていました。 最後に教えて頂きたいのですが、パケットが、同一ルーターの物理インターフェースからLoopbackに対して転送される際にTTLが1減る、といった仕組みはありませんよね?あくまで他のルーターに転送された際にのみTTLが1減るという認識で間違いないでしょうか?

c ciscoooo

2023/05/28 07:02

大変参考になりました。正確な情報を教えてくださり、有難うございました。

a arashi1977

2023/05/29 12:13

> つまり、デフォルトでは、eBGPの制御パケットを送信する際、TTL1の場合、参照したルーティングテーブル上でCとなっている場合にしか送信しないという事ですね。 はい、「送信する側が」TTL=1な宛先ではないと判断したら送信しないのです。このチェックを回避するのに使えるのが `disable-connected-check` です。これだと ebgp-multihop 指定しなくても、eBGPピアのLoopbackでもピアリング可能になります。 > 最後に教えて頂きたいのですが、パケットが、同一ルーターの物理インターフェースからLoopbackに対して転送される際にTTLが1減る、といった仕組みはありませんよね? そうですね。考え方としては「パケットを受信したときはそのままの状態」「パケットを転送するときに、TTLを1減らして(パケットの内容を書き換えて)異なるインターフェースから送信する」なのですが、Loopbackは異なるインターフェースと言いつつルータ内部なので、パケットを書き換える必要なく取り扱えるのでTTLは減らないはずです。

c ciscoooo

2023/05/30 22:11

追加の回答をしてくださり有難うございました。とても勉強になりました。

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

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