no mpls ip propagate-ttl


設定

・中央がMPLS網:MP-BGPはAS200
・左:AS100
・右:EIGRP接続

前提

iosv-7#trace 192.168.2.1 source gi0/1
Type escape sequence to abort.
Tracing the route to 192.168.2.1
VRF info: (vrf in name/id, vrf out name/id)
  1 57.1.1.5 6 msec 4 msec 2 msec
  2 45.1.1.4 [MPLS: Labels 20/26 Exp 0] 9 msec 11 msec 12 msec
  3 34.1.1.3 [MPLS: Labels 23/26 Exp 0] 15 msec 13 msec 14 msec
  4 12.1.1.1 [MPLS: Label 26 Exp 0] 14 msec 12 msec 10 msec
  5 12.1.1.2 11 msec 17 msec 14 msec
  6 192.168.2.1 14 msec 14 msec 13 msec

tracerouteの仕組み

1)tracerouteを打つ
2)宛先に向けTTL1のICMP echoを出す
3)当然宛先に到着する前にTTLは0になるのでICMP unreachableがTTLが0になった場所から送られてくる
4)unreachableの送信元をメモしつつTTL2のICMP echoを出してunreachableを待つ
5)宛先にたどり着くまでこれを繰り返す

MPLS網を挟んだtracerouteの仕組み

◎IPヘッダのTTLをshimヘッダに移す
- RFCを確認してみると、TTLがshimヘッダにあることがわかる
- 網内ではshimヘッダに移すことで、上記tracerouteのようなlabelを含んだtracerouteの結果を得られることができる

RFC3032: MPLS Label Stack Encoding

no mpls propagate-ttl

forwarded

iosv-1(config)#no mpls ip propagate-ttl forwarded

IPヘッダのTTLをshimヘッダに移さないようにすることで、MPLS網内のルートをtracerouteの結果に載せないようにする。

iosv-7#trace 192.168.2.1 source gi0/1
Type escape sequence to abort.
Tracing the route to 192.168.2.1
VRF info: (vrf in name/id, vrf out name/id)
  1 57.1.1.5 6 msec 5 msec 5 msec
  2 12.1.1.1 [MPLS: Label 26 Exp 0] 13 msec 13 msec 11 msec
  3 12.1.1.2 13 msec 11 msec 14 msec
  4 192.168.2.1 13 msec 11 msec 16 msec

但し、そもそもMPLS網内からtracerouteがスタートすると始めからshimヘッダにTTLが入っているため普通に表示される。

iosv-5#trace 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
1 45.1.1.4 [MPLS: Label 20 Exp 0] 10 msec 7 msec 7 msec
2 34.1.1.3 [MPLS: Label 23 Exp 0] 5 msec 7 msec 8 msec
3 13.1.1.1 10 msec 16 msec * 

local

iosv-1(config)#no mpls ip propagate-ttl local

名前の通り、ローカルから来たttlを制限するためforwardedとは挙動が逆になる。

iosv-7#trace 192.168.2.1 source gi0/1
Type escape sequence to abort.
Tracing the route to 192.168.2.1
VRF info: (vrf in name/id, vrf out name/id)
  1 57.1.1.5 7 msec 4 msec 3 msec
  2 45.1.1.4 [MPLS: Labels 20/26 Exp 0] 13 msec 14 msec 14 msec
  3 34.1.1.3 [MPLS: Labels 23/26 Exp 0] 14 msec 18 msec 15 msec
  4 12.1.1.1 [MPLS: Label 26 Exp 0] 10 msec 11 msec 10 msec
  5 12.1.1.2 12 msec 12 msec 15 msec
  6 192.168.2.1 21 msec 13 msec 17 msec
iosv-5#trace 1.1.1.1
Type escape sequence to abort.
Tracing the route to 1.1.1.1
VRF info: (vrf in name/id, vrf out name/id)
  1 13.1.1.1 8 msec 17 msec *

設定の取り消し

iosv-1(config)#do sh run | i mpls
no mpls ip propagate-ttl forwarded
mpls ldp autoconfig

iosv-1(config)#no no mpls ip propagate-ttl

iosv-1(config)#do sh run | i mpls 
 mpls ldp autoconfig

ややこしいが、mpls ip propagate-ttlと設定すると初期状態に戻る。

参考

CCIE Enterprise Infrastructure Foundation, 2nd Edition

RFC 3032 - MPLS Label Stack Encoding

tracerouteの仕組みなんてCCNA時代に勉強したから正直何も難しくはないんだけど、こういう知ってたもん勝ちみたいなところで点を落とすと萎えそう。

この記事が気に入ったらサポートをしてみませんか?