为路由实例配置 SNMP
了解路由实例的 SNMP 支持
Junos OS 使所有路由实例的 SNMP 管理器能够请求和管理与相应路由实例和逻辑系统网络相关的 SNMP 数据。
在 Junos OS 中:
来自默认路由实例和/或逻辑系统的客户端可以访问 MIB 对象,并仅在其所属的路由实例和/或逻辑系统网络上执行 SNMP 操作。
来自默认路由实例的客户端可以访问与所有路由实例和逻辑系统网络相关的信息。
Junos 管理路由实例 (
mgmt_junos
) 是一个特殊实例。来自管理路由实例的客户端会被视为处于默认路由实例中,并且可以访问与所有路由实例和逻辑系统网络相关的信息。
在 Junos OS 8.4 版之前,只有默认路由实例 (inet.0) 中的 SNMP 管理器可以访问 MIB 对象。
随着虚拟专用网络 (VPN) 服务产品的增加,此功能特别适合需要获取特定路由实例的 SNMP 数据的服务提供商(请参阅 图 1)。服务提供商可以将这些信息用于满足自己的管理需求,或导出数据供客户使用。

如果请求中未指定任何路由实例,SNMP 代理将按之前操作:
对于非路由表对象,所有实例都会公开。
对于路由表对象,只会显示那些与默认路由实例关联的对象。
注:实际协议数据单元 (PDU) 仍然通过默认 (inet.0) 路由实例交换,但返回的数据内容受请求 PDU 中指定的路由实例规定。
SNMPv3 管理路由实例
从 Junos OS 19.4R1 开始,您可以在所需的路由实例中配置 SNMPv3 管理接口,以访问与所有路由实例和逻辑系统网络相关的信息,而不特定于入口路由实例。您可以在层级配置管理实例配置语句 [edit snmp v3]
。
优势
SNMPv3 管理路由实例允许来自非默认路由实例的所有 SNMPv3 请求,就像这些请求来自默认路由实例一样。使用 SNMPv3 管理路由实例,您可以访问与所有路由实例和逻辑系统网络相关的信息。
启用管理路由实例
要启用 SNMPv3 管理路由实例:
配置管理实例语句。
[edit]
user@host#set snmp v3 management-routing-instance <routing-instance>
提交配置。
[edit]
user@host#commit
移除管理路由实例
要移除 SNMPv3 管理路由实例:
删除或停用 SNMPv3 管理路由实例语句。
[edit]
user@host#delete snmp v3 management-routing-instance <routing-instance>
您无法在 [edit snmp v3 management-routing-instance <routing-instance>
] 层次结构级别配置 Junos 管理路由实例 (mgmt_junos
),因为默认情况下,mgmt_junos
该实例可以访问所有路由实例。
路由实例支持的 SNMP MIB
表 1 显示了 Junos OS 支持的特定于企业的 MIB 对象,并提供说明,详细说明了在 SNMP 请求中指定路由实例时如何处理这些对象。破折号 (–) 表示该项目不适用。
对象 |
支持类 |
说明/备注 |
---|---|---|
jnx 产品 (1) |
- |
产品对象 ID |
jnx 服务 (2) |
- |
服务 |
jnxMibs (3) jnxBoxAnatomy (1) |
3 类 |
对象仅对默认逻辑系统公开。 |
mpls (2) |
2 类 |
逻辑系统中的所有实例都会公开。数据不会隔离到路由实例级别。 |
ifJnx (3) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxAlarms (4) |
3 类 |
对象仅对默认逻辑系统公开。 |
jnxFirewalls (5) |
4 类 |
数据不会由路由实例隔离。所有实例都公开。 |
jnxDCU (6) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxPingMIB (7) |
3 类 |
对象仅对默认逻辑系统公开。 |
jnxTraceRouteMIB (8) |
3 类 |
对象仅对默认逻辑系统公开。 |
jnxATM (10) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxIpv6(11) |
4 类 |
数据不会由路由实例隔离。所有实例都公开。 |
jnxIpv4(12) |
1 类 |
jnxIpv4AddrTable(1). 只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxRmon (13) |
3 类 |
jnxRmonAlarmTable (1)。对象仅对默认逻辑系统公开。 |
jnxLdp (14) |
2 类 |
jnxLdpTrapVars (1)。逻辑系统中的所有实例都会公开。数据不会隔离到路由实例级别。 |
jnxCos (15) jnxCosIfqStatsTable (1) jnxCosFcTable (2) jnxCosFcIdTable (3) jnxCosQstatTable (4) |
3 类 |
对象仅对默认逻辑系统公开。 |
jnxScu (16) jnxScuStatsTable (1) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxRpf (17) jnxRpfStatsTable (1) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxCfgMgmt (18) |
3 类 |
对象仅对默认逻辑系统公开。 |
jnxPMon (19) jnxPMonFlowTable (1) jnxPMonErrorTable (2) jnxPMonMemoryTable (3) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxSonet (20) jnxSonetAlarmTable (1) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxAtmCos (21) jnxCosAtmVcTable (1) jnxCosAtmScTable (2) jnxCosAtmVcQstatsTable (3) jnxCosAtmTrunkTable (4) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
ipSecFlowMonitorMIB (22) |
- |
- |
jnxMac (23) jnxMacStats (1) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
apsMIB (24) |
3 类 |
对象仅对默认逻辑系统公开。 |
jnxChassisfines (25) |
3 类 |
对象仅对默认逻辑系统公开。 |
jnxVpnMIB (26) |
2 类 |
逻辑系统中的所有实例都会公开。数据不会隔离到路由实例级别。 |
jnxEricesInfoMib(27) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxCollectorMIB (28) |
1 类 |
只会显示属于特定路由实例的逻辑接口(及其父物理接口)。 |
jnxHistory (29) |
- |
- |
jnxSpMIB (32) |
3 类 |
对象仅对默认逻辑系统公开。 |
表 2 显示了 Junos OS 支持的 1 类 MIB 对象(标准和特定于企业的 MIB)。对于 1 类对象,只会显示属于特定路由实例的逻辑接口(及其父物理接口)。
类 |
MIB |
对象 |
---|---|---|
1 类 |
802.3ad.mib |
(dot3adAgg)MIB 对象: dot3adAggTable dot3adAggPortListTable (dot3adAggPort) dot3adAggPortTable dot3adAggPortStatsTable dot3adAggPortDebugTable |
rfc2863a.mib |
ifTable ifXTable ifStackTable |
|
rfc2011a.mib |
ipAddrTable ipNetToMediaTable |
|
rtmib.mib |
ipForward (ipCidrRouteTable) |
|
rfc2665a.mib |
dot3StatsTable dot3ControlTable dot3PauseTable |
|
rfc2495a.mib |
dsx1ConfigTable dsx1CurrentTable dsx1IntervalTable dsx1TotalTable dsx1FarEndCurrentTable dsx1FarEndIntervalTable dsx1FarEndTotalTable dsx1FracTable ... |
|
rfc2496a.mib |
dsx3 (dsx3ConfigTable) |
|
rfc2115a.mib |
frDlcmiTable(以及相关的 MIB 对象) |
|
rfc3592.mib |
sonetMediumTable(以及相关的 MIB 对象) |
|
rfc3020.mib |
mfrMIB mfrBundleTable mfrMibBundleLink 对象 mfrBundleIfDexMappingTable (和相关 MIB 对象) |
|
ospf2mib.mib |
所有对象 |
|
ospf2trap.mib |
所有对象 |
|
bgpmib.mib |
所有对象 |
|
rfc2819a.mib |
示例:etherStatsTable |
|
1 类 |
rfc2863a.mib |
例子: ifXtable ifStackTable |
rfc2665a.mib |
etherMIB |
|
rfc2515a.mib |
atmMIB 对象 例子: atmInterfaceConfTable atmVplTable atmVclTable |
|
rfc2465.mib |
ip-v6mib 例子: ipv6IfTable ipv6AddrPrefixTable ipv6NetToMediaTable ipv6RouteTable |
|
rfc2787a.mib |
vrrp mib |
|
rfc2932.mib |
IPMRouteMIB ipMRouteStdMIB |
|
mroutemib.mib |
ipMRoute1MIBObjects |
|
isismib.mib |
ISISMIB |
|
pimmib.mib |
pimMIB |
|
msdpmib.mib |
msdpmib |
|
jnx-if-extensions.mib |
例子: ifJnxTable ifChassisTable |
|
jnx-dcu.mib |
jnxDCU |
|
jnx-atm.mib |
例子: jnxAtmIfTable jnxAtmVCTable jnxAtmVpTable |
|
jnx-ipv4.mib |
jnxipv4 示例:jnxIpv4AddrTable |
|
jnx-cos.mib |
例子: jnxCosIfq 统计数据表 jnxCosQstatTable |
|
jnx-scu.mib |
示例:jnxScuStatsTable |
|
jnx-rpf.mib |
示例:jnx RpfStatsTable |
|
jnx-pmon.mib |
示例:jnxPMonFlowTable |
|
jnx-sonet.mib |
示例:jnxSonetAlarmTable |
|
1 类 |
jnx-atm-cos.mib |
例子: jnxCosAtmVcTable jnxCosAtmVcScTable jnxCosAtmVcQstatsTable jnxCosAtmTrunkTable |
jnx-mac.mib |
示例:jnxMacStatsTable |
|
jnx-services.mib |
示例:jnxSvcFlowTableAggStatsTable |
|
jnx-coll.mib |
jnxCollectorMIB 例子: jnxCollPicIfTable jnxCollFileEntry |
表 3 显示了 Junos OS 支持的 2 类 MIB 对象(标准和特定于企业的 MIB)。使用 2 类对象,逻辑系统中的所有实例都会公开。数据不会隔离到路由实例级别。
类 |
MIB |
对象 |
---|---|---|
2 类 |
rfc3813.mib |
mplsLsrStdMIB 例子: mplsInterfaceTable mpls中分段表 mplsOut分段表 mplsLabelStackTable mplsXCTable (和相关 MIB 对象) |
igmpmib.mib |
igmpStdMIB 注:
这是 |
|
l3vpnmib.mib |
mplsVpnmib |
|
jnx-mpls.mib |
示例:mplsLspList |
|
jnx-ldp.mib |
jnxLdp 示例:jnxLdp 统计数据表 |
|
jnx-vpn.mib |
jnxVpnMIB |
|
jnx-bgpmib2.mib |
jnxBgpM2Experiment |
表 4 显示了 Junos OS 支持的 3 类 MIB 对象(标准和特定于企业的 MIB)。使用 Class 3 时,仅对默认逻辑系统公开对象。
类 |
MIB |
对象 |
---|---|---|
3 类 |
rfc2819a.mib |
rmon 事件 报警表 日志表 事件表 代理XMIB |
rfc2925a.mib |
pingmib |
|
rfc2925b.mib |
tracerouteMIB |
|
jnxchassis.mib |
jnxBox 分析 |
|
jnx-chassis-alarm.mib |
jnxAlarms 默认情况下,SRX 系列防火墙仅在冗余组 0 (RG0) 的主节点上查询 jnxAlarms mib,而不是在辅助节点上。 |
|
jnx-ping.mib |
jnxPingMIB |
|
jnx-traceroute.mib |
jnxTraceRouteMIB |
|
jnx-rmon.mib |
jnxMonAlarmTable |
|
jnx-cos.mib |
示例:jnxCosFcTable |
|
jnx-cfgmgmt.mib |
示例:jnxCfgMgmt |
|
jnx-sonetaps.mib |
apsMIB 对象 |
|
jnx-sp.mib |
jnxSpMIB |
|
ggsn.mib |
ejnmobileipABmib |
|
rfc1907.mib |
snmpModules |
|
snmpModules |
例子: snmpMIB snmp 框架MIB |
表 5 显示了 Junos OS 支持的 4 类 MIB 对象(标准和特定于企业的 MIB)。使用 4 类对象时,数据不会由路由实例隔离。所有实例都公开。
类 |
MIB |
对象 |
---|---|---|
4 类 |
系统 |
示例:sysORTable |
rfc2011a.mib |
IP(ip默认TTL、ipInceives) Icmp |
|
rfc2012a.mib |
tcp tcpConnTable ipv6TcpConnTable |
|
rfc2013a.mib |
Udp udpTable ipv6UdpTable |
|
rfc2790a.mib |
hrSystem |
|
rfc2287a.mib |
sysApplOBJ |
|
jnx-firewall.mib |
jnx 防火墙 |
|
jnx-ipv6.mib |
jnxIpv6 |
MIB 对象的支持等级
指定路由实例后,所有与路由相关的 MIB 对象都会返回由请求中的路由实例维护的数据。对于所有其他 MIB 对象,根据该路由实例隔离返回的数据。例如,SNMP 代理只会显示分配给该路由实例的接口(例如,逻辑接口 [ifls] 及其相应的物理接口 [ifd])。同样,对接口具有明确附件的对象(例如,地址)也会被隔离。
对于附件不明确的对象(例如,sysApplMIB 中的对象),不会执行任何隔离,并且所有实例都可见。
仅当未指定任何逻辑系统(仅在默认逻辑系统中)时,另一类对象才可见,而不管默认逻辑系统中的路由实例如何。此类别的对象是机箱 MIB 对象、SNMP 组中的对象、RMON 告警、事件和日志组、Ping MIB 对象、配置管理对象和 V3 对象。
总之,为了支持路由实例,MIB 对象属于以下类别之一:
第 1 类 — 根据请求中的路由实例隔离数据。这是分离类中最精细的一种。
2 类 — 根据请求指定的逻辑系统隔离数据。对于属于特定逻辑系统的所有路由实例,都会返回相同的数据。通常,这适用于难以提取路由实例信息或不适用路由实例的路由表对象。
第 3 类 — 仅对默认逻辑系统公开数据。对于属于默认逻辑系统的所有路由实例,都会返回同一组数据。如果指定另一个逻辑系统(非默认系统),则不会返回任何数据。通常,此类适用于在子代理中实现的对象,这些对象不会监视逻辑系统更改,并且仅使用默认上下文(例如,机箱 MIB 对象)注册其对象。
第 4 类 — 数据不会通过路由实例隔离。所有路由实例都会返回相同的数据。通常,这适用于在子代理中实现的对象,这些子代理监视逻辑系统更改,并为每个逻辑系统更改注册或取消注册其所有对象。值不能通过路由实例隔离的对象属于此类。
有关与每个类关联的对象列表,请参阅 路由实例支持的 SNMP MIB 。
路由实例支持的 SNMP 陷阱
您可以限制陷阱接收器接收与它们所属的逻辑系统网络无关的陷阱。为此,请将语句logical-system-trap-filter
[edit snmp]
包含在层次结构级别:
[edit snmp] logical-system-trap-filter;
如果 SNMP 配置中未包含该 logical-system-trap-filter
语句,则所有陷阱都会转发到配置的路由实例目标。但是,即使配置了此语句,与默认路由实例关联的陷阱接收器也将接收所有 SNMP 陷阱。
在 trap 组对象下配置时,应用于路由实例(或属于路由实例的接口)的所有 v1 和 v2c 陷阱均将路由实例名称编码在社区字符串中。该编码与请求 PDU 中的编码相同。
对于在 v3 框架下配置的陷阱,当配置 v3 消息处理模型时,路由实例名称会携带在上下文字段中。对于其他消息处理模型(v1 或 v2c),路由实例名称不会在陷阱消息标头中携带(也不编码在社区字符串中)。
识别路由实例
借助此功能,路由实例可通过 v3 请求中的上下文字段标识,或者通过 v1 或 v2c 请求中的社区字符串进行编码。
在以社区字符串进行编码时,路由实例名称将先出现,并用 @
字符与实际社区字符串分隔。
为了避免与包含该 @
字符的有效社区字符串冲突,仅在典型的社区字符串处理失败时解析社区。例如,如果配置了名为 RI
的路由实例,则在该路由实例上下文中处理包含 RI@public
的 RI
SNMP 请求。访问控制(视图、源地址限制、访问权限等)根据实际社区字符串(字符后 @
的数据集—本例 public
中)应用。但是,如果配置了社区字符串 RI@public
,将根据该社区处理协议数据单元 (PDU),并忽略嵌入式路由实例名称。
逻辑系统执行物理路由器操作的子集,并具有自己独特的路由表、接口、策略和路由实例。在逻辑系统中定义路由实例时,逻辑系统名称必须与路由实例一起使用斜线 ( /
) 进行编码,以分隔两者。例如,如果在逻辑系统中LS
配置路由实例RI
,则必须将该路由实例编码在社区字符串中,为LS/RI@public
。在逻辑系统外部(默认逻辑系统中)配置路由实例时,不需要逻辑系统名称(或 /
字符)。
此外,创建逻辑系统时,始终在逻辑系统中创建一个默认路由实例(命名 default
)。查询该路由实例的数据时应使用此名称(例如 LS/default@public
)。对于 v3 请求,应直接在上下文字段中标识名称 logical system/routing instance 。
要识别虚拟 LAN (VLAN) 生成树实例(MX 系列 5G 通用路由平台上的 VSTP),请指定路由实例名称,后跟双冒号 (::
) 和 VLAN ID。例如,要为全局默认路由实例中的 VLAN 10 识别 VSTP 实例,请包含在 default::10@public
(SNMPv3) 或 community
(SNMPv1 或 v2) 字符串中context
。
通过路由实例启用 SNMP 访问
要使默认路由实例以外的路由实例中的 SNMP 管理器能够访问 SNMP 信息,请将语句 routing-instance-access
包含在 [edit snmp]
层次结构级别:
[edit snmp] routing-instance-access;
如果 SNMP 配置中未包含此语句,则来自默认路由实例以外的路由实例的 SNMP 管理器无法访问 SNMP 信息。此设置适用于任何版本的 SNMP(SNMP v1、v2 或 v3)的请求。
指定 SNMPv1 或 SNMPv2c 社区中的路由实例
将客户端添加到 SNMP 社区时,您可以指定路由实例和客户端信息。要指定客户端所属的路由实例,请在 routing-instance
SNMP 配置中包括语句后跟路由实例名称和客户端信息。
以下示例显示了将路由实例 test-ri 添加到 SNMP 社区社区1 的配置语句。
在层次结构级别指定的 [edit snmp community community-name]
路由实例将被添加到社区中的默认逻辑系统中。
[edit snmp] community community1 { clients { 10.209.152.33/32; } routing-instance test-ri { clients { 10.19.19.1/32; } } }
如果路由实例是在逻辑系统中定义的,请将语句 routing-instance
包含在 [edit snmp community community-name logical-system logical-system-name
] 层次结构级别,如以下示例所示:
[edit snmp] community community1 { clients { 10.209.152.33/32; } logical-system test-LS { routing-instance test-ri { clients { 10.19.19.1/32; } } } }
示例:为路由实例配置接口设置
此示例显示了分配给名为 INFrtd 的路由实例的 802.3ad ae0 接口配置:
[edit chassis] aggregated-devices { ethernet { device-count 5; } } [edit interfaces ae0] vlan-tagging; aggregated-ether-options { minimum-links 2; link-speed 100m; } unit 0 { vlan-id 100; family inet { address 10.1.0.1/24; } } [edit interfaces fe-1/1/0] fastether-options { 802.3ad ae0; } [edit interfaces fe-1/1/1] fastether-options { 802.3ad ae0; } [edit routing-instances] INFrtd { instance-type virtual-router; interface fe-1/1/0.0; interface fe-1/1/1.0; interface fe-1/1/5.0; interface ae0.0; protocols { ospf { area 0.0.0.0 { interface all; } } } }
以下命令 snmpwalk
说明如何从属于 SNMP 社区的 public
路由实例 INFrtd 的路由器 1 和 802.3ae 捆绑接口检索 SNMP 相关信息:
router# snmpwalk -Os router1 INFrtd@public dot3adAggTable dot3adAggMACAddress.59 = 0:90:69:92:93:f0 dot3adAggMACAddress.65 = 0:90:69:92:93:f0 dot3adAggActorSystemPriority.59 = 0 dot3adAggActorSystemPriority.65 = 0 dot3adAggActorSystemID.59 = 0:0:0:0:0:0 dot3adAggActorSystemID.65 = 0:0:0:0:0:0 dot3adAggAggregateOrIndividual.59 = true(1) dot3adAggAggregateOrIndividual.65 = true(1) dot3adAggActorAdminKey.59 = 0 dot3adAggActorAdminKey.65 = 0 dot3adAggActorOperKey.59 = 0 dot3adAggActorOperKey.65 = 0 dot3adAggPartnerSystemID.59 = 0:0:0:0:0:0 dot3adAggPartnerSystemID.65 = 0:0:0:0:0:0 dot3adAggPartnerSystemPriority.59 = 0 dot3adAggPartnerSystemPriority.65 = 0 dot3adAggPartnerOperKey.59 = 0 dot3adAggPartnerOperKey.65 = 0 dot3adAggCollectorMaxDelay.59 = 0 dot3adAggCollectorMaxDelay.65 = 0
为通过路由实例的 SNMP 访问配置访问列表
您可以创建和维护访问列表来管理对 SNMP 信息的访问。访问列表配置允许您允许或拒绝对特定路由实例的客户端的 SNMP 访问,并适用于任何版本的 SNMP 的请求。
以下示例说明如何创建访问列表:
[edit snmp] routing-instance-access { access-list { ri1 restrict; ls1/default; ls1/ri2; ls1*; } }
示例中给出的配置:
限制客户端
ri1
访问 SNMP 信息。允许 、
ls1/ri2
中的ls1/default
客户端以及名称以ls1
首的所有其他路由实例访问 SNMP 信息。
您可以使用通配符 (*) 来表示路由实例名称中的字符串。
您不能限制默认路由实例的 SNMP 管理器访问 SNMP 信息。