キャンセル
次の結果を表示 
次の代わりに検索 
もしかして: 
cancel
告知

JTAC-Mid-Career-Recruitment-2021.3

CSC-campaign.JPG

 

IOS-XR: mpls ip-ttl-propagate を無効にしても、traceroute で MPLS 網側のアドレスが表示される

993
閲覧回数
5
いいね!
0
コメント

 

概要

mpls ip-ttl-propagate について

・mpls ip-ttl-propagate は IP Header 内の TTL Field と MPLS Header 内の TTL Field 間で、その値についての伝搬を制御する機能となります。

・IOS XR での Default の挙動は IP パケットが IP 網から MPLS 網内に入る際には IP Header 内の TTL 値が MPLS Header 内 の TTL 値に引き継がれ、MPLS 網内では hop を通過する毎に MPLS TTL 値が減少し MPLS 網内を抜ける際には、その MPLS TTL 値を IP Header 内の TTL 値へと引き継がれます。この機能を disable とした場合は、MPLS TTL 値を 255 として、MPLS 網内を通過する毎に MPLS TTL 値は減少しますが、網内を抜ける際にはこの値は引き継がれません。

・この機能は、traceroute による MPLS 網内のアドレス情報を表示させない用途として主に使用されています。

Default Disable
ttl.png ttl_disable.png

  

ネットワーク構成

 topo.png

 

上記構成において PE 側 にて mpls  ip-ttl-propagate を disable に設定しているにも関わらず、

CE1 から CE4 に向けて traceroute を実施した際に網側のアドレスが表示されます。

CE1

RP/0/RSP0/CPU0:CE1#traceroute 4.4.4.4

Type escape sequence to abort.
Tracing the route to 4.4.4.4

1 172.0.12.2 0 msec 0 msec 0 msec
2 10.0.23.3 [MPLS: Label 16005 Exp 0] 0 msec 0 msec 0 msec
3 172.0.34.4 0 msec * 0 msec

 

PE3

RP/0/RSP0/CPU0:PE3(config)#do sho run | i mpls
Building configuration...
mpls ldp
mpls ip-ttl-propagate disable

 

IOS-XR では icmp time exceeded packet を作成して送信する際に ingress 側の interface 情報が参照されます。

そのため、traceroute では 'mpls ip-ttl-propagate disable' を設定していても、mpls 網内のアドレス が CE 側

からの traceroute の結果に表示されますが、これは期待された動作となります。

この icmp  packet の response を適切な source にするコマンドが 'icmp ipv4 source vrf ' となります。

 

動作確認

 

PE3

PE3 にて 'icmp ipv4 source vrf' を設定していない場合の 'debug icmp ipv4' の出力結果

<snip>
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: Punt reason: TTL Expired
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: normal pak: type: 11, code: 0, mtu: 0, df: 0, ttl: 1
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: ip_offset: 4
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: ip_lib_mpls_ipv4_rx_punt_pak: badpak ip hdr: src=<172.0.12.1>,dst=<4.4.4.4>,frag_off=0x0
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: Creating icmp time exceed pkt
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: icmp time exceed pkt i/f 0x800
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: orig ssz: 50,ip_offset: 4,icmp_size: 168,stacksz: 4, mpls_off: 0
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: pak_client_add_tail 122
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: ip_lib_mpls_ipv4_rx_punt_pak: ip_icmp hdr: src=<10.0.23.3>,dst=<172.0.12.1>,frag_off=0x0
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: Freeing icmp pkt
RP/0/RSP0/CPU0:Nov 29 09:30:47.550 : ipv4_io[264]: ip_lib_mpls_ipv4_rx_punt_pak: sending icmp packet to: src=<10.0.23.3>,dst=<172.0.12.1>

 

'icmp ipv4 source vrf' を有効にした場合

RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: Punt reason: TTL Expired
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: normal pak: type: 11, code: 0, mtu: 0, df: 0, ttl: 1
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: ip_offset: 4
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: ip_lib_mpls_ipv4_rx_punt_pak: badpak ip hdr: src=<172.0.12.1>,dst=<4.4.4.4>,frag_off=0x0
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: Creating icmp time exceed pkt
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: icmp time exceed pkt i/f 0x800
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: orig ssz: 50,ip_offset: 4,icmp_size: 168,stacksz: 4, mpls_off: 0
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: pak_client_add_tail 122
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: ip_lib_mpls_ipv4_rx_punt_pak: ip_icmp hdr: src=<172.0.34.3>,dst=<172.0.12.1>,frag_off=0x0
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: Freeing icmp pkt
RP/0/RSP0/CPU0:Nov 29 09:41:45.364 : ipv4_io[264]: ip_lib_mpls_ipv4_rx_punt_pak: sending icmp packet to: src=<172.0.34.3>,dst=<172.0.12.1>

 

関連情報