[toc:faq]
背景
ASR1000シリーズ、ISR4000シリーズなどのIOS-XE ルータにて、NAT 変換にて断続的にパケットがドロップする事象が報告されています。
この事象は、NAT Gatekeeper キャッシュの影響で発生していて、IOS-XE NATの実装動作となっています。
NAT Gatekeeperについて
NAT Gatekeeper は、IOS XE RL4 / 12.(33)XND以降のバージョンで、デフォルトでenable となっています。
Ciscoルータでは、内部から外部(IN to OUT)へのNATは、ルーティング後に NATが実行されますが、
外部から内部(OUT to IN)へのNATは、ルーティングの前にNATが実行されます。
このため、OUT to INへのNAT処理は、すべてのパケットに対し、NAT宛(NATed)、非NAT宛(non-NATed) を識別する必要があります。
また、sub-interface / vlan 等複数のインタフェース上で、NAT が実行され、大量にnon-NATedパケットが発生する環境の場合、OUT to INへのNAT 処理にCPUが消費され、スパイクされてしまう懸念がでてきます。
NAT Gatekeeper は、上記、状況でのCPUを保護する目的があり、non-NATedパケットに対し、IN to OUT、OUT to IN方向のsource address に対し、small cacheを持つ機能となっています。
NAT Gatekeeper概要図
事象例
定量のNAT トラフィックを流し続けたとき、non-NATed パケットが流れることで、Gatekeeper のキャッシュが上限に達し、リセットのタイミングで、フローが定期的に10秒の断が発生する状況となります。
下記事例として、http GET をClient-Server 間でNATトラフィックを流しつづける状況を作り、トラフィックモニターの結果、下記グラフのように定期的に10秒間の断が発生する状況となります。
NAT Gatekeeperキャッシュの有無の確認
下記、コマンドを使用することで、どのsource IP アドレスにより、NAT Gatekeeperキャッシュが作られているか確認することができます。
- show platform hardware qfp active feature nat datapath gatein
- show platform hardware qfp active feature nat datapath gateout
PRIMARY#show platform hardware qfp active feature nat datapath gateout
Gatekeeper on
sip x.x.x.x vrf 0 cnt 1 ts 0x36db07 idx 60
ワークアラウンド
NAT Gatekeeperの設定を下記のいずれかのように変更することにより、上記状況は回避できます。
Solution -1
NAT Gatekeeper extended mode の使用
PRIMARY(config)#ip nat settings gatekeeper-size 1024
PRIMARY(config)#end
Solution-2
NAT Gatekeeper機能の無効化
PRIMARY(config)#no ip nat service gatekeeper
PRIMARY(config)#end
PRIMARY#Sh platform hardware qfp active feature nat datapath gatein
Gatekeeper off
PRIMARY#
NAT Gatekeeper の無効化により、QFP の使用率が上昇する可能性があります。
下記のコマンドにより上昇状況を確認し、無効化を実施してください。
show platform hardware qfp active data utilization summary
show platform hardware qfp active data utilization qfp 0
Solution-3
NATed / non-NATedパケットが同一インターフェース上に流れないようにする