简介
基于SNMP的网络管理应用程序中最常用的标识符之一是接口索引(ifIndex)值。IfIndex是与物理或逻辑接口关联的唯一标识号。对于大多数软件,ifIndex是接口的名称。虽然相关RFC不要求在重新启动后维护特定ifIndex值与其接口之间的对应关系,但设备清单、计费和故障检测等应用程序依赖于此对应关系。
RFC1213(MIB2)定义初始ifIndex,如下所示:
"每个接口都由ifIndex对象的唯一值标识,ifIndex的说明将限制其值,如下所示:其值范围为1和ifNumber的值。每个接口的值必须至少保持恒定,从实体网络管理系统的一次重新初始化到下一次重新初始化。”
但是,根据最新的IETF RFC 2863(接口组MIB),ifIndex定义已更改,以适应允许动态添加或删除网络接口的设备数量的增加。RFC 2863中采用的解决方案是删除ifIndex的值小于ifNumber的值的要求,并保留ifNumber及其当前定义。
先决条件
要求
本文档没有任何特定的前提条件。
使用的组件
有关IOS平台和映像对此功能的大多数最新支持信息,可在功能导航器工具中搜索接口索引持久性。
从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 系列
-
思科12000 GSR系列
注意:对于CatOS设备,如果Index对物理接口和VLAN接口自动保持,但对于EtherChannel接口则不保持。默认情况下,此功能处于打开状态,无法将其关闭。MSFC上的IOS软件不支持ifIndex持久性。Catalyst 6000 IOS(也称为本机模式)支持从12.1(13)E开始的ifIndex持久性。
本文档中的信息都是基于特定实验室环境中的设备创建的。本文档中使用的所有设备最初均采用原始(默认)配置。如果您是在真实网络上操作,请确保您在使用任何命令前已经了解其潜在影响。
规则
有关文档规则的详细信息,请参阅 Cisco 技术提示规则。
使用 ifIndex 持续功能之前的问题
考虑一种情况,即简单监控软件(如MRTG)正在轮询路由器特定串行接口的接口统计信息以访问互联网。
例如,在重新初始化之前,您可以有以下条件:
物理端口 |
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持久性命令([no] snmp ifindex persistence)。应用到接口的命令会自动应用到与该接口关联的所有子接口。
验证 IfIndex 持续
要验证ifIndex是否已正确启用,可以查看nvram中ifIndex表的内容。
Router # dir nvram:ifIndex-table
Directory of nvram:/ifIndex-table
2 -rw- 0 <no date> ifIndex-table
126968 bytes total (114116 bytes free)
如果长度为0,则省略了执行运行的副本,该副本将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.卸下卡,并用几乎相同的卡类型更换。
如果用8端口以太网卡替换4端口以太网卡,则8端口卡上的前4个端口的ifIndex值与4个端口以太网接口相同。其他四个端口接收新的ifIndex值。
-
3.卸下卡并更换为其他卡类型。
安装新卡类型(如新ifDescr)时,将收到新ifIndex值。上一个ifIndex未使用,在ifIndex分配中创建一个差距。
-
4.取出卡并将其放入同一路由器的不同插槽。
将卡放在其他插槽中时,会有新的ifDescr,因此您会收到新的ifIndex值。上一个ifIndex未使用,在ifIndex分配中创建一个差距。
注:必须执行运行starting命令的copy,以保留示例2、3和4的新分配ifIndex值。
相关信息