SNMP 接口过滤
通过配置 SNMP 接口过滤器,可以对发现过程从设备检索到的 SNMP 数据进行过滤。 您只能通过命令行配置 SNMP 接口过滤器。
进行 SNMP 接口过滤的原因
有时,设备或设备类返回了过多的 MIB 数据。 例如,如果虚拟设备有许多接口,那么发现这些接口可能要花费较长时间。 为了提高发现此类设备的速度,您可以使用 SNMP 接口过滤器减少 SNMP 帮助程序所检索的接口数。
SNMP 接口过滤的工作方式
当发现代理程序, Perl 脚本或 SNMP MIB 浏览器 请求 SNMP 信息时, SNMP 帮助程序从网络设备检索信息。 SNMP 接口过滤器定义了 SNMP 帮助程序要在 MIB 表中检索的行。 SNMP 帮助程序检索的信息是不使用过滤器时所返回信息的子集,并将其发送给请求获取 SNMP 信息的进程。 SNMP 接口过滤器还可以定义 SNMP 帮助程序将不会检索的整个表。
SNMP 接口过滤器仅应用于要对 MIB 表进行完全遍历的请求。 对于针对 MIB 表中特定接口发出的 SNMP Get 或 GetNext 请求,不会进行过滤。
过滤器所要应用于的设备在设备过滤器中定义。 如果定义了设备过滤器,那么将先根据该设备过滤器对所有要获取设备 SNMP 信息的请求进行检查。 然后,仅对通过该过滤器的设备执行检查以进行接口过滤。
此过滤器可以按表中的多行执行过滤。 第一次访问经过过滤的表时,将对该表中的一列或多列进行遍历。 所有要求对该表进行 SNMP 遍历的后续请求都仅返回与此过滤器匹配的接口。
使用从属过滤器包括多个表
您还可以定义从属过滤器。 如果对表 A 定义了 SNMP 接口过滤器 Filter 1,那么可以对表 B 定义从属过滤器 Filter 2。这样,还将检索表 B 中与同一接口相关的 SNMP 信息。
要定义从属过滤器,除了要对表 A 定义过滤器以外,还必须满足下列一个或多个条件:
- 表 A 和表 B 具有等同的索引。
- 表 A 的索引是表 B 中的值。
如果表 A 与表 B 具有完全相同的索引,那么您不需要定义从属过滤器。 系统将根据您对表 A 定义的过滤器自动检索表 B 中的信息。
何时可以使用 SNMP 接口过滤
只能对所有以 ifIndex 作为键的 SNMP MIB 表进行 SNMP 接口过滤。 例如,通过按 ifTable 或 ifXTable 进行过滤,可以按 ifType 和 ifDescr 之类的值进行过滤。
以下示例摘录显示了 NCHOME/precision/mibs/RFC1213.mib 文件中 ipAddrTable 的定义:
-- the IP address table
-- The IP address table contains this entity's IP addressing
-- information.
ipAddrTable OBJECT-TYPE
SYNTAX SEQUENCE OF IpAddrEntry
ACCESS not-accessible
STATUS mandatory
DESCRIPTION
"The table of addressing information relevant to
this entity's IP addresses."
::= { ip 20 }
语法“SEQUENCE OF”将对象定义为表。 您可以通过搜索此字符串确定 MIB 中定义了哪些表。 以下示例显示 UNIX 上运行的搜索的输出:
% grep 'SEQUENCE OF' RFC1213.mib
SYNTAX SEQUENCE OF IfEntry
SYNTAX SEQUENCE OF AtEntry
SYNTAX SEQUENCE OF IpAddrEntry
SYNTAX SEQUENCE OF IpRouteEntry
SYNTAX SEQUENCE OF IpNetToMediaEntry
SYNTAX SEQUENCE OF TcpConnEntry
SYNTAX SEQUENCE OF UdpEntry
SYNTAX SEQUENCE OF EgpNeighEntry