はじめに
このドキュメントでは、Cisco IOS XEルータでNATをバイパスし、トラフィック障害を引き起こす可能性のある未変換パケットについて説明します。
背景説明
ソフトウェアバージョン12.2(33)XNDでは、ネットワークアドレス変換(NAT)ゲートキーパーと呼ばれる機能が導入され、デフォルトで有効になっています。NATゲートキーパーは、非NAT対象フローがNAT変換を作成するために過剰なCPUを使用することを防止するように設計されています。これを実現するために、発信元アドレスに基づいて2つの小さなキャッシュ(in2out方向に1つとout2in方向に1つ)が作成されます。各キャッシュエントリは、送信元アドレス、Virtual Routing and Forwarding(VRF)ID、タイマー値(10秒後にエントリを無効にするために使用されます)、およびフレームカウンタで構成されます。キャッシュを構成するテーブルには256個のエントリがあります。NAT が必要なパケットと NAT が不要なパケットが混在する、同じ送信元アドレスからの複数のトラフィック フローが存在している場合は、パケットが NAT されず、無変換のままルータ経由で送信される可能性があります。シスコでは、可能な限り、NAT処理されたフローと非NAT処理されたフローを同じインターフェイス上に置かないようにすることを推奨します。
注:この問題はH.323とは無関係です。
影響を受けるプラットフォーム
- ISR1K
- ISR4K
- ASR1K
- C8200
- C8300
- C8500
バイパスされる NAT のデモ
このセクションでは、NATゲートキーパー機能によりNATをバイパスする方法について説明します。図の詳細を確認します。送信元ルータ、適応型セキュリティアプライアンス(ASA)ファイアウォール、ASR1K、および宛先ルータがあることがわかります。
非NAT対象宛先へのトラフィックフロー
- 送信元:172.17.250.201宛先:198.51.100.11からpingが開始されます。
- 送信元アドレス変換を実行する ASA の内部インターフェイスにパケットが到着します。パケットの送信元は203.0.113.231、宛先は198.51.100.11になります。
- パケットはNAT外部のASR1Kに内部インターフェイスに到着します。NAT変換では宛先アドレスの変換が検出されないため、ゲートキーパー「out」キャッシュには送信元アドレス203.0.113.231が入力されます。
- パケットが宛先に到着します。宛先はインターネット制御メッセージプロトコル(ICMP)パケットを受け入れ、ICMP ECHO応答を返します。これにより、pingが成功します。
同じ送信元からのトラフィックがNAT対象宛先を送信しようとする
- 送信元:送信元:172.17.250.201宛先:198.51.100.9から.pingが開始されます。
- 送信元アドレス変換を実行する ASA の内部インターフェイスにパケットが到着します。パケットの送信元は203.0.113.231、宛先は198.51.100.9になります。
- パケットはNAT外部のASR1Kに内部インターフェイスに到着します。NAT は、最初に送信元と宛先の変換を検索します。アドレスが見つからないため、ゲートキーパーの「out」キャッシュをチェックして、送信元アドレス203.0.113.231を見つけます。パケット変換の必要なしと(誤って)想定し、宛先に向かうルートが存在する場合はパケットを転送し、そうでない場合はパケットをドロップします。どちらの方法でも、パケットは目的の宛先に到達しません。
NAT 対象トラフィックの復元
- 10 秒後に、送信元アドレス 203.0.113.231 のエントリがゲートキーパー アウト キャッシュ内でタイムアウトになります
注:エントリは物理的にはキャッシュ内に存在しますが、有効期限が切れているため使用されません。
- ここで、同じ送信元172.17.250.201がNAT対象宛先198.51.100.9に送信した場合、パケットがASR1Kのout2inインターフェイスに到着しても、変換が見つかりません。ゲートキーパーアウトキャッシュを確認すると、アクティブなエントリが見つからないため、宛先の変換を作成し、パケットが期待どおりに流れます。
- このフローのトラフィックは、非アクティブ状態が原因で変換がタイムアウトしない限り、継続します。その間に、送信元が再び非NAT対象宛先にトラフィックを送信し、それが原因でキャッシュからゲートキーパーに別のエントリが生成される場合、確立されているセッションには影響しませんが、10秒間は、同じ送信元からNAT対象宛先への新しいセッションが失敗します。

問題の例
- pingが発信元ルータから開始されます。発信元:172.17.250.201宛先:198.51.100.9。繰り返し回数2回のpingを繰り返し発行します[FLOW1]。
- ASR1KによってNAT変換されていない別の宛先に対してpingを実行します。送信元:172.17.250.201宛先:198.51.100.11 [FLOW2]。
- 198.51.100.9にさらにパケットを送信[FLOW1]。このフローの最初のいくつかのパケットは、宛先ルータのアクセスリスト照合で確認されるようにNATをバイパスします。
source#ping 198.51.100.9 source lo1 rep 2
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 198.51.100.9, timeout is 2 seconds:
Packet sent with a source address of 172.17.250.201
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 1/1/1 ms
source#ping 198.51.100.9 source lo1 rep 2
Type escape sequence to abort.
Sending 2, 100-byte ICMP Echos to 198.51.100.9, timeout is 2 seconds:
Packet sent with a source address of 172.17.250.201
!!
Success rate is 100 percent (2/2), round-trip min/avg/max = 1/1/1 ms
source#ping 198.51.100.11 source lo1 rep 200000
Type escape sequence to abort.
Sending 200000, 100-byte ICMP Echos to 198.51.100.11, timeout is 2 seconds:
Packet sent with a source address of 172.17.250.201
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!.
Success rate is 99 percent (3007/3008), round-trip min/avg/max = 1/1/16 ms
source#ping 198.51.100.9 source lo1 rep 10
Type escape sequence to abort.
Sending 10, 100-byte ICMP Echos to 198.51.100.9, timeout is 2 seconds:
Packet sent with a source address of 172.17.250.201
...!!!!!!!
Success rate is 70 percent (7/10), round-trip min/avg/max = 1/1/1 ms
source#
宛先ルータ上のACLの一致は、失敗して変換されなかった3つのパケットを示します。
Router2#show access-list 199
Extended IP access list 199
10 permit udp host 172.17.250.201 host 198.51.100.9
20 permit udp host 172.17.250.201 host 10.212.26.73
30 permit udp host 203.0.113.231 host 198.51.100.9
40 permit udp host 203.0.113.231 host 10.212.26.73 (4 matches)
50 permit icmp host 172.17.250.201 host 198.51.100.9
60 permit icmp host 172.17.250.201 host 10.212.26.73
70 permit icmp host 203.0.113.231 host 198.51.100.9 (3 matches) <<<<<<<
80 permit icmp host 203.0.113.231 host 10.212.26.73 (42 matches)
90 permit udp any any log (2 matches)
100 permit icmp any any log (4193 matches)
110 permit ip any any (5 matches)
Router2#
ASR1Kでは、ゲートキーパーキャッシュエントリを確認できます。
PRIMARY#show platform hardware qfp active feature nat datapath gatein
Gatekeeper on
sip 203.0.113.231 vrf 0 cnt 1 ts 0x17ba3f idx 74
sip 10.203.249.226 vrf 0 cnt 0 ts 0x36bab6 idx 218
sip 10.203.249.221 vrf 0 cnt 1 ts 0x367ab4 idx 229
PRIMARY#show platform hardware qfp active feature nat datapath gateout
Gatekeeper on
sip 198.51.100.11 vrf 0 cnt 1 ts 0x36db07 idx 60
sip 10.203.249.225 vrf 0 cnt 0 ts 0x36bb7a idx 217
sip 10.203.249.222 vrf 0 cnt 1 ts 0x367b7c idx 230
回避策と修正
ほとんどの環境では、NAT ゲートキーパー機能は正常に動作し、問題は発生しません。ただし、この問題が発生した場合は、いくつかの解決方法があります。
解決策 1
推奨されるオプションは、Cisco IOS® XEを、ゲートキーパー機能拡張を含むバージョンにアップグレードすることです。
Cisco Bug ID CSCun06260 XE3.13ゲートキーパーの強化
この機能拡張により、NATゲートキーパーが送信元アドレスと宛先アドレスをキャッシュできるようになり、キャッシュサイズが設定可能になります。拡張モードをオンにするには、次のコマンドを使用してキャッシュサイズを増やす必要があります。また、キャッシュをモニタして、サイズを増やす必要があるかどうかを確認することもできます。
PRIMARY(config)#ip nat settings gatekeeper-size 1024
PRIMARY(config)#end
拡張モードを確認するには、次のコマンドをチェックします。
PRIMARY#show platform hardware qfp active feature nat datapath gatein
Gatekeeper on
sip 10.203.249.221 dip 10.203.249.222 vrf 0 ts 0x5c437 idx 631
PRIMARY#show platform hardware qfp active feature nat datapath gateout
Gatekeeper on
sip 10.203.249.225 dip 10.203.249.226 vrf 0 ts 0x5eddf idx 631
PRIMARY#show platform hardware qfp active feature nat datapath gatein active
Gatekeeper on
ext mode Size 1024, Hits 2, Miss 4, Aged 0 Added 4 Active 1
PRIMARY#show platform hardware qfp active feature nat datapath gateout active
Gatekeeper on
ext mode Size 1024, Hits 0, Miss 1, Aged 1 Added 2 Active 0
解決策 2
Cisco Bug ID CSCun06260の修正が実施されていないリリースでは、ゲートキーパー機能をオフにするしか方法はありません。唯一の悪影響は、NAT非対応トラフィックのパフォーマンスがわずかに低下し、Quantum Flow Processor(QFP)のCPU使用率が高くなることです。
PRIMARY(config)#no ip nat service gatekeeper
PRIMARY(config)#end
PRIMARY#PRIMARY#Sh platform hardware qfp active feature nat datapath gatein
Gatekeeper off
PRIMARY#
QFP使用率は、次のコマンドを使用してモニタできます。
show platform hardware qfp active data utilization summary
show platform hardware qfp active data utilization qfp 0
解決策 3
NAT パケットと非 NAT パケットが同じインターフェイスに到着しないようにトラフィック フローを分離します。
要約
NAT Gatekeeperコマンドは、非NAT対象フローに対するルータのパフォーマンスを向上させるために導入されました。状況によっては、同じ送信元からNATパケットと非NATパケットが混在して到着した場合に、この機能が問題を引き起こす可能性があります。解決策は、強化されたゲートキーパー機能を使用するか、それが不可能な場合はゲートキーパー機能を無効にすることです。
参考資料
ゲートキーパーをオフにできるソフトウェア変更:
- Cisco Bug ID CSCty67184:ASR1k NAT CLI – ゲートキーパーのオン/オフ
- Cisco Bug ID CSCth23984: NATゲートキーパー機能をオン/オフにするためのCLI機能の追加
NAT ゲートキーパーの強化: