简介
基于SNMP的网络管理应用程序中最常用的标识符之一是接口索引(ifIndex)值。IfIndex是与物理或逻辑接口关联的唯一标识号。对于大多数软件,ifIndex是接口的名称。尽管相关RFC不要求特定ifIndex值与其接口之间的对应关系在重新启动后维护,但设备清单、计费和故障检测等应用依赖此对应关系。
RFC1213(MIB2)定义初始ifIndex,如下所示:
"每个接口都由ifIndex对象的唯一值标识,并且ifIndex的说明会限制其值,如下所示:其值范围介于1和ifNumber的值之间。每个接口的值必须保持不变,至少从实体的网络管理系统的一个重新初始化到下一个重新初始化。"
但是,根据最新的IETF RFC 2863(接口组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
-
思科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持久性。
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
使用 ifIndex 持续功能之前的问题
考虑以下情况:简单监控软件(如MRTG)正在轮询进入Internet的路由器特定串行接口的接口统计信息。
例如,在重新初始化之前,您可能有以下条件:
物理端口 |
ifIndex |
以太网端口 |
1 |
令牌环端口 |
2 |
串行端口 |
3 |
因此,管理应用程序正在轮询与串行端口对应的ifIndex 3。
在路由器重新初始化(重新启动、重新加载等)后,情况将更改为类似以下内容:
物理端口 |
ifIndex |
以太网端口 |
3 |
令牌环端口 |
1 |
串行端口 |
2 |
管理应用继续轮询ifIndex 3,它现在与以太网端口对应。因此,如果管理应用未收到陷阱警告(例如,路由器已重新启动),则轮询的统计信息可能完全错误。
ifIndex 持续概述
Cisco IOS版本添加了对ifIndex值的支持,该值可在重新启动后持续存在。接口索引持久性功能通过唯一标识流量和SNMP统计信息的输入和输出接口,在收集和处理网络管理数据时提供更高的准确性。由于接口与已知实体(如ISP客户)相关联,因此接口索引持久性功能可更有效地利用网络管理数据。
IfIndex持久性意味着ifDescr(或ifName)对象值与IF-MIB生成的ifIndex对象值之间的映射在重新启动后会保留。
此功能尤其适用于:
设置 ifIndex 持续值
配置
Router(config)# snmp-server ifindex persist
Router(config-if)# snmp-server ifindex persist
有关配置的详细信息,请参阅SNMP IfIndex Persistence。
限制
不能在子接口上使用特定于接口的ifIndex persistence命令([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,这会将ifIndexes分配复制到nvram。执行此操作后,您将看到以下内容:
Router # dir nvram:ifIndex-table
Directory of nvram:/ifIndex-table
2 -rw- 283 <no date> ifIndex-table
126968 bytes total (114088 bytes free)
文件的格式为:
名称 |
类型 |
描述 |
大小 |
INTEGER32 |
此行的大小 |
ifIndex |
INTEGER32 |
此接口的ifIndex |
enablePersistence |
INTEGER32 |
如果启用了持久性,则为1 |
ifDescr |
八位组字符串 |
接口说明 |
可以将文件复制到ftp服务器并查看二进制文件的内容。但不要编辑该文件:不支持所有更改。在某些平台上,文件可能以压缩格式保存。
在线插入和拆卸
以下是插入和移除以太网卡的示例列表。
-
1.取出一张卡,将其更换为同一类型的卡。
为新卡分配相同的ifIndexes,只要新硬件上的ifDescr与旧硬件匹配
-
2.取出一个卡,将其更换为几乎相同的卡类型。
如果用八端口以太网卡替换四端口以太网卡,则八端口卡上的前四个端口的ifIndex值与四个端口以太网接口的ifIndex值相同。其他四个端口接收新的ifIndex值。
-
3.移除卡,并使用其他类型的卡替换它。
安装新卡类型(如新的ifDescr)时,您将收到新的ifIndex值。上一个ifIndex未使用,并在ifIndex分配中创建一个间隔。
-
4.取出一个卡,将其放入同一路由器的不同插槽中。
将卡放入其他插槽时,将会出现新的ifDescr,因此您将收到新的ifIndex值。上一个ifIndex未使用,并在ifIndex分配中创建一个间隔。
注意:必须执行copy running starting命令以保留新分配的ifIndex值用于示例2、3和4。
相关信息