概要
SNMP ベースのネットワーク管理アプリケーションで最も一般的に使用される ID の 1 つは、インターフェイス インデックス(ifIndex)値です。ifIndex は、物理または論理インターフェイスに関連する一意の識別番号です。ほとんどのソフトウェアでは、ifIndex がインターフェイスの名前になります。関連する RFC では、特定の ifIndex 値とそのインターフェイスの間の一致がリブート後も維持されることを要求していませんが、デバイスのインベントリ、請求、障害検出などのアプリケーションは、この一致に依存しています。
RFC1213(MIB2)では、初期の ifIndex に関して次のように定義されています。
"各インターフェイスはifIndexオブジェクトの一意の値で識別され、ifIndexの説明は値を次のように制限します。1 から ifNumber の値までがその値の範囲になります。各インターフェイスの値は、少なくともエンティティのネットワーク管理システムが一度初期化されてから次に初期化されるまでの間は保持される必要があります。」
ただし、最新の IETF RFC 2863(The Interfaces Group MIB)によると、ifIndex の定義はネットワーク インターフェイスの動的な追加と削除を可能にするためのデバイス数の増加に対応するように変更されています。RFC 2863 で採用されたソリューションは、ifIndex の値を ifNumber の値より低くするという要件を削除し、ifNumber を現在の定義で保持することでした。
前提条件
要件
このドキュメントに関しては個別の前提条件はありません。
使用するコンポーネント
IOS プラットフォームおよびイメージにおけるこの機能の最新のサポート状況については、Feature Navigator Tool で Interface Index Persistence を検索してください。
この機能のサポートは、次のプラットフォームにおいて Cisco IOS リリース 12.1(5)T から開始されました(その後、Cisco IOS リリース 12.2 に導入されました)。
-
Cisco 800 シリーズ
-
Cisco 1400 シリーズ
-
Cisco 1600 シリーズ(1600R シリーズを含む)
-
Cisco 1700 シリーズ
-
Cisco 2500 シリーズ
-
Cisco 2600 シリーズ
-
Cisco 2800 シリーズ
-
Cisco 3600 シリーズ(Cisco 3620、3640、3660 を含む)
-
Cisco 3800 シリーズ
-
Cisco 4500 シリーズ
-
Cisco AS5300
-
Cisco AS5400
-
Cisco AS5800
-
Cisco 7100 シリーズ
-
Cisco 7200 シリーズ(Cisco 7202、7204、7206 を含む)
-
Cisco 7500 シリーズ(Cisco RSP7000 を含む)
Cisco IOS リリース 12.0S では、インターフェイス インデックス パーシステンスのサポートは次のプラットフォームにおいて Cisco IOS リリース 12.0(11)S から開始されました。
-
Cisco 7200 シリーズ
-
Cisco 7500 シリーズ
-
Cisco 12000 GSRファミリ
注:CatOSデバイスの場合、ifIndexは物理インターフェイスとVLANインターフェイスでは自動的に保持されますが、EtherChannelインターフェイスでは保持されません。この機能はデフォルトでオンになっており、オフにすることはできません。MSFC の IOS ソフトウェアでは ifIndex パーシステンスはサポートされていません。Catalyst 6000 IOS(ネイティブ モードとも呼ばれます)は 12.1(13)E から ifIndex パーシステンスをサポートしています。
このマニュアルの情報は、特定のラボ環境に置かれたデバイスに基づいて作成されました。このドキュメントで使用するすべてのデバイスは、初期(デフォルト)設定の状態から起動しています。実稼動中のネットワークで作業をしている場合、実際にコマンドを使用する前に、その潜在的な影響について理解しておく必要があります。
表記法
ドキュメント表記の詳細は、『シスコ テクニカル ティップスの表記法』を参照してください。
ifIndex 持続機能以前の問題
インターネットに接続されたルータ固有のシリアル インターフェイスの統計情報が(MRTG などの)シンプルな監視ソフトウェアによってポーリングされている状況について考えます。
例として、再初期化の前には次のような状態が想定されます。
物理ポート |
ifIndex |
イーサネット ポート |
1 |
トークンリング ポート |
0 |
シリアル ポート |
3 |
したがって、管理アプリケーションはシリアル ポートに対応する ifIndex 3 にポーリングしていることになります。
ルータの再初期化(リブート、リロードなど)が実行されると、これらの状態は次のように変化します。
物理ポート |
ifIndex |
イーサネット ポート |
3 |
トークンリング ポート |
1 |
シリアル ポート |
0 |
管理アプリケーションは引き続き ifIndex 3 にポーリングしていますが、現在このインデックスはイーサネット ポートに対応しています。したがって、ルータがリブートされたことなどがトラップによって管理アプリケーションに警告されない場合、ポーリングされた統計情報は完全に間違っている可能性があります。
ifIndex 持続の概要
Cisco IOS リリースでは、リブート後も保持可能な ifIndex 値のサポートが追加されています。インターフェイス インデックス パーシステンス機能を利用すると、トラフィック フローや SNMP 統計情報の入力インターフェイスと出力インターフェイスを一意に識別できるので、ネットワーク管理データを収集して処理するときの精度が大幅に向上します。インターフェイス インデックス パーシステンス機能では各インターフェイスが(ISP カスタマーなどの)既知のエンティティに関連付けられるので、ネットワーク管理データをさらに有効に活用できます。
IfIndex パーシステンス機能を利用すると、IF-MIB によって生成された ifDescr(または ifName)オブジェクト値と ifIndex オブジェクト値の間のマッピングがリブート後も保持されます。
この機能は特に次の点で便利です。
-
SNMP:インターフェイス カウンタの監視
-
Netflow:インターフェイスの ifIndex のレポート
-
RMON:インターフェイスごとのイベントとアラーム
-
EXPRESSION/EVENT MIB:インターフェイス カウンタに基づく新しい MIB 変数の作成
ifIndex 持続値の操作
コンフィギュレーション
Router(config)# snmp-server ifindex persist
Router(config-if)# snmp-server ifindex persist
設定の詳細については、「SNMP IfIndex Persistence」を参照してください。
制約事項
インターフェイス固有の ifIndex パーシステンス コマンド([no] snmp ifindex persistence)をサブインターフェイスに対して使用することはできません。インターフェイスに適用されたコマンドは、そのインターフェイスに関連付けられているすべてのサブインターフェイスにも自動的に適用されます。
IfIndex 持続の確認
ifIndex が正しく有効になっていることを確認するには、nvram の ifIndex-table の内容を確認します。
Router # dir nvram:ifIndex-table
Directory of nvram:/ifIndex-table
2 -rw- 0 <no date> ifIndex-table
126968 bytes total (114116 bytes free)
長さが 0 と表示されている場合は、copy running starting がまだ実行されていないことを示しています(このコマンドは nvram に ifIndex の割り当てをコピーします)。このコマンドを実行した後は、次のように表示されます。
Router # dir nvram:ifIndex-table
Directory of nvram:/ifIndex-table
2 -rw- 283 <no date> ifIndex-table
126968 bytes total (114088 bytes free)
ファイルの形式は、次のとおりです。
[名前(Name)] |
Type |
説明 |
サイズ |
INTEGER32 |
この行のサイズ |
ifIndex |
INTEGER32 |
このインターフェイスの ifIndex |
enablePersistence |
INTEGER32 |
パーシステンスが有効になっている場合は 1 |
ifDescr |
OCTET STRING |
インターフェイスの説明 |
このファイルを FTP サーバにコピーしてバイナリ ファイルの内容を表示することはできますが、ただし、このファイルは編集しないでください。すべての変更はサポートされていません。一部のプラットフォームでは、このファイルが圧縮された形式で保存される場合があります。
ホットスワップ
イーサネット カードを挿入または取り外す場合の例を次に示します。
-
1.カードを取り外し、同じカードタイプに交換します。
新しいハードウェアのifDescrが古いカードと一致する限り、同じifIndexesが新しいカードに割り当てられます
-
2.カードを取り外し、ほぼ同じカードタイプに交換します。
4 ポート搭載のイーサネット カードを 8 ポート搭載のイーサネット カードと交換した場合、8 ポート搭載カードの最初の 4 つのポートに 4 ポート搭載イーサネット カードのインターフェイスと同じ ifIndex 値が割り当てられます。残り 4 つのポートには新しい ifIndex 値が割り当てられます。
-
3.カードを取り外し、別のカードタイプに交換します。
新しいタイプのカード(新しい ifDescr を持つカードなど)を取り付けると、新しい ifIndex 値が割り当てられます。以前の ifIndex は使用されないので、ifIndex の割り当てに差異が生じます。
-
4.カードを取り外し、同じルータの別のスロットに装着します。
別のスロットにカードを取り付けると、新しい ifDescr になるので、新しい ifIndex 値が割り当てられます。以前の ifIndex は使用されないので、ifIndex の割り当てに差異が生じます。
注:copy running startingコマンドを実行すると、例2、3、4の新しく割り当てられたifIndex値が保持されます。
関連情報