IP : IP アドレッシング サービス

NAT ルータにてCEF enable 時にパケットが50% ロスする場合のトラブルシューティング

2007 年 10 月 24 日 - 日本オリジナル版
その他のバージョン: PDFpdf | フィードバック

概要

このドキュメントでは NAT ルータにて CEF を enable にした際にパケットが50% ロスする場合の発生原因とソリューションについて解説します。

前提条件

要件

次の項目に関する知識があることが推奨されます。

  • NAT の基礎知識
  • CEF の基礎知識

使用するコンポーネント

このドキュメントは、特定のソフトウェアやハードウェアのバージョンに限定されるものではありません。


表記法

ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。

障害内容

ip nat outside source static 設定時、inside 側から outside 側向けのパケットは、destination address を NAT 変換します。その際、まず、NAT 変換前の destination address を元に、ルーティングし、その後 NAT の処理が行われます。下記設定にある static route は、このように NAT 変換前の destination address を出力インターフェイスまでルーティングさせるために必要になります。

下記設定の場合、inside 側から outside 側へのパケットのため、NAT ルータ(R2) は、ip route 3.3.3.3 255.255.255.0 の static route を参照し、E1/0 へパケットをルーティングし、その後 destination address を3.3.3.3 から23.1.1.3 へ変換してパケットを送出します。

本ドキュメントでは、この設定において、ルーティングの方式に CEF を使用する場合、inside 側から outside 側へのパケットが50% の割合でドロップする事象について説明しています。

ルーティングの方式に CEF を使用する場合

※ 画像をクリックすると、大きく表示されます。popup_icon

R2#sh ip route
     3.0.0.0/24 is subnetted, 1 subnets
S       3.3.3.0 is directly connected, Ethernet1/0
     23.0.0.0/24 is subnetted, 1 subnets
C       23.1.1.0 is directly connected, Ethernet1/0
     12.0.0.0/24 is subnetted, 1 subnets
C       12.1.1.0 is directly connected, Ethernet0/0

R2#sh ip nat translations Pro Inside global Inside local Outside local Outside global --- --- --- 3.3.3.3 23.1.1.3 --- 12.1.1.1 12.1.1.1 3.3.3.3 23.1.1.3
R2#sh ip cef 3.3.3.3 3.3.3.0/24, version 15, epoch 0, attached 0 packets, 0 bytes via Ethernet1/0, 0 dependencies valid glean adjacency

解説と解決策

解説

NAT 変換前のパケットを出力インターフェイスへルーティングさせる方式として CEF を使用する場合、destination address 3.3.3.3 の adjacency が解決されません(glean adjacency)。この場合、CEF はパケットを CPU に punt し、次の switching-path で ルーティングが行なわれます(詳細は、『How to Verify Cisco Express Forwarding Switching』をご参照ください)。
punt 処理には閾値が設けられております。具体的には、2秒に1パケットの割合で punt 処理を行います。これは、大量のパケットが punt されることによる CPU への負荷を軽減することを目的としています。ルータから Ping(timeout=2秒)を行なうと、上記 punt 閾値により、50% のパケットロスが発生します。


解決策

解決策1

static route において Next Hop を使用する
  設定例) ip route 3.3.3.0 255.255.255.0 Ethernet1/0 23.1.1.3

static route にて Next Hop address が設定されている場合、下記の通り CEF にても Next hop が決定しており、Adjacency が解決されているため、punt 処理は行われず、本事象は発生しません。

R2#sho ip route
     3.0.0.0/24 is subnetted, 1 subnets
S       3.3.3.0 [1/0] via 23.1.1.3, Ethernet1/0
     23.0.0.0/24 is subnetted, 1 subnets
C       23.1.1.0 is directly connected, Ethernet1/0
     12.0.0.0/24 is subnetted, 1 subnets
C       12.1.1.0 is directly connected, Ethernet0/0

R2#sho ip cef 3.3.3.3 3.3.3.0/24, version 12, epoch 0, cached adjacency 23.1.1.3 0 packets, 0 bytes via 23.1.1.3, Ethernet1/0, 0 dependencies next hop 23.1.1.3, Ethernet1/0 valid cached adjacency

解決策2

NAT に add-route オプションを設定する
  設定例) ip nat outside source static 23.1.1.3 3.3.3.3 add-route

この add-route option を設定すると、指定した NAT に応じた static route が動的に作成され、ルーティングテーブルにインストールされます。このため、CEF での Next Hop が決定されることで Adjacency が解決され、3.3.3.3/32宛のパケットは punt 処理の対象とはならず、本事象は発生しません。

Updated:Oct 24, 2007 Document ID:502102007