计算机网络管理与安全技术
李 艇
02W1.2.3
第 3章,SNMP通信模型与 RMON规范
3.1 SNMP通信模型
有 4个方面的内容:
? SNMP结构
? 管理模型
? SNMP协议
? SNMP MIB
3.1.1 SNMP结构( SNMP Architecture)
? SNMP结构是管理系统和管理代理之间的管理报
文的规范。
? 由定义团体来进行安全机制 的 管理,只有相同团
体成员之间才能进行通信。
? 一个管理站能够属于多个团体且可管理多个域。
3.1.1 SNMP结构( SNMP Architecture)
SNMP结构具有三个方面的功能:
? 通过管理代理实现的网络功能应该是最简单的;
? 允许有足够的可扩展性 ( 增加新的操作和管理 ) ;
? SNMP结构应独立于具体主机和网关的结构及机制 。
3.1.1 SNMP结构( SNMP Architecture)
? SNMP只用于简单对象的通信并用 ASN.1和
BER(基本编码规则)进行数据传输。
? 基本报文有 set,get和 trap。其中 trap有
三种类型,
1) 一般 trap
2) 特殊 trap
3) 时间戳
一般 trap类别, ( 操作配置 —自陷响应 )
?coldStart
?warmStart
?linkDown
?linkUp
?authenticationFailure
?egpNeighborLoss
?enterpriseSpecific( 属特殊陷入由设备制造商定义 )
3.1.1 SNMP结构( SNMP Architecture)
? 特殊 trap是与设备有关
? 时间戳是在网络实体初始化和陷入产生之间
的时间 。 sysUpTime的值 。
3.1.1 SNMP结构( SNMP Architecture)
3.1.2 管理模型 (The Administrative Model)
? 支持 SNMP应用实体的程序称为协议实体
? SNMP管理者属于管理站的应用实体
? SNMP代理属于网络元素的应用实体
? 这一对实体被称为 SNMP团体。
? SNMP团体名为 community,是一个字符串的形式。
3.1.2 管理模型
SNMP Manager
认证服务
SNMP Manager
认证服务
SNMP Manager
认证服务
认证
认证服务
SNMP Agent
SNMP 团体
报文
3.1.2 管理模型
?图中是多个 SNMP管理者与一个 SNMP代理进行通信, 还
可以进行多对一和多对多的通信 。
?图中发送和接收过程都要进行认证检验, 这可以视为
是一种安全机制 。
?SNMPv1的安全机制很简单, 只是验证团体名 。 属于同
一团体的管理站和被管理站才能互相作用 。
3.1.2 管理模型
1,团体的概念
? SNMP网络管理是一种分布式应用 。 代理控制自己的
MIB,也控制多个管理站对 MIB的访问 。
? 只有授权的管理站才允许访问管理信息库 。
? 其基本思想是:
? l 代理系统可以对不同的团体定义不同的访问
控制策略, 每个团体被赋予唯一的名字 。
? l 管理站只能以认可的团体名行使访问权 。 祥细信息
? l 管理站实体可以用不同的名字对不同的代理
实施不同的访问权限 。 操作-新团体名 lt1-权限
3.1.2 管理模型
2、认证服务
? 认证服务的目的是要保证通信是被授权的 。
? 对于一个 SNMP报文, 认证服务的功能是保证接
收报文来自于这个消息所声称的源 。
? 从管理站到代理的每个报文都包括一个团体名
字 。 这个名字起到密码的作用, 如果发送者知
道这个密码, 报文就被认为是可靠的 。
3.1.2 管理模型
? 团体名以明文的形式传输, 容易被窃取 。 所以
SNMP的安全机制是不安全的 。
? 为此很多 SNMP的实现只允许 Get和 Trap操作, 而
Set的操作被严格的限制 。 即只具有网络监视功
能而限制控制网络设备 。
? 为了加强 SNMP的安全性, 在后来的 SNMP版本中
改进了认证服务 。
复习
3.1.2 管理模型
3、访问策略
? 通过定义团体,代理系统限制只有一些选定的管
理站才能访问它的 MIB。
? 通过使用多个团体,代理可为不同的管理站提供不
同的 MIB访问类别。
? 访问控制有两方面:
? l SNMP MIB 视域( view), MIB中对象的一个子
集,对不同的团体可以定义不同的视域。属
于同一视域的对象不必属于同一子树。
? l 访问模式:集合 {read-only,read-write}的一
个元素。对于一个团体可以定义一种访问模
式。
3.1.2 管理模型
? 一个团体的 MIB视域和访问模式的组合称为 SNMP团
体形象( profile)。
? 它包含代理中对象的一个子集和有关这些对象的访
问模式。
? SNMP访问模式适用于 MIB视域中的所有对象。例如
如果访问模式是 read-only,则具有同一团体形象
的管理站对视域中的所有对象只能以只读方式访问。
? 每个 MIB对象的定义都有 ACCESS子句, 其规定了对象
量的访问属性 。
? 团体形象中又规定了团体成员对对象的访问模式 。
这两种访问限制应该相协调 。
? 即使一个对象的访问属性是 write-only,也允许
SNMP实体读 取该对象, 这取决于具体实现时的考
虑 。
3.1.2 管理模型
表 MIB 访问类别与 SNMP访问模式的关系
MIB访问类别
SNMP访问模式
READ-ONLY READ-WRITE
read-only 可用于 get和 trap操作
read-write 可用于 get和 trap操作 可用于 get,set和 trap操作
write-only 可用于 get和 trap操作, 值与
具体实现有关
可用于 get,set和 trap操作,
对于 get和 trap操作, 值与具
体实现有关
not-
accessible
不能使用
3.1.2 管理模型
? 团体形象是由代理为各个团体定义的。
? SNMP团体和 SNMP团体形象的组合称为 SNMP访问策略。
SNMP代理 SNMP管理站集合 SNMP MIB视域 SNMP访问模式
SNMP团体 SNMP团体形象
SNMP访问策略
SNMP管理概念
SNMP的访问策略 Manager 1 (Community 1)
Manager 2 (Community 2)
Manager3 (Community 1,Community2)
Agent 1 Agent 2Community Profile
1 Community Profile
2
Agent 3 Agent 4
Community Profile
3 Community Profile
4
图 SNMP Access Policy
Community 1
Community 2
3.1.2 管理模型
? 三个网络管理系统,各自有不同的团体域。
? 代理 1和代理 2属于团体 1,而它们却有不同的团体
形象。
? 作为团体 1的一部分的管理站 1可以与代理 1和代理 2
通信
? 但管理站 1不可以与属于团体 2的代理 3和代理 4通信。
管理站 2则可以访问它们,因为管理站 2属于团体 2。
? 管理站 3可以访问团体 1和团体 2,因此可以与所有
代理通信
3.1.2 管理模型
4、委托代理服务
? 通常委托代理是为不支持 SNMP的设备工作的, 团
体形象的概念同样适用于委托代理服务 。
? 有些情况下, 被代理的设备也可能支持 TCP/IP和
SNMP,这时委托代理的作用是为了减少代理的设
备与管理站之间的交互过程 。
? 对于被代理的设备, 委托代理定义并且维护一种
SNMP访问策略 。
3.1.2 管理模型
图为 SNMP对象与非 SNMP对象通过 SNMP管理站进行通信的例子 。
比如 SNMP代理可以是一个具有 TCP/IP协议的 LAN。 而一个
WAN如 X.25网络, 其不具有 Internet模型, 但可以通过委
托代理进行管理并集成到综合管理系统 。
SNMP 管理站
SNMP 代理 委托代理
SNMP团体 非 SNMP团体
图 SNMP代理访问策略
3.1.3 SNMP协议规范( SNMP Protocol Specifications)
1,SNMP PDU格式
Data
SNMP PDUCommunityVersionA H
SNMP PDUUDP H
Transport PDUIP H
Network PDUDLC H
SNMP 报文封装
3.1.3 SNMP协议规范
? SNMP报文 是在 PDU加上团体名、版本号和应用层的头构成
了应用层的 PDU。
? 在其前加上 UDP的头成为了传输层的 PDU。以此类推,构成
每一层的 PDU。
? SNMP协议实体在主机的 161端口被接收。
? tray是在 162端口被接收。
? SNMPv1协议的最大长度为 484个字节。
? SNMP有 5种管理操作,但只有 3种 PDU格式,GetRequest
PDU,GetNextRequest PDU与 SetRequest PDU格式 相同 。
GetResponse PDU
Trap PDU
图 SNMP 报文格 式
CommunityVersion SNMP PDU
变量绑定表0 0Request-idPDU type
SNMP报文
GetRequestPDU,GetNextRequestPDU和 SetRequestPDU
GetResponsePDU
错误状态请求标识PDU type 错误索引 Variable-bindings
TrapPDU
制造商 ID 代理地址 一般陷阱 特殊陷阱 时间戳 变量绑定表PDU type
name1 value1 name2 value2 …… namen valuen
变量绑定表
表 2 SNMP报文域
域 描述
version SNMP版本,RFC1157为版本 1
community 团体名可以用作认证 SNMP报文的口令
request-id 通过给每个请求提供一个唯一的 id,区分不同的请求
error-status 代理在处理管理站的请求时可能出现的各种错误:
noError(0),tooBig(1),noSuchName(2),badValue(3),readOnly(4),genErr(5)
error-index 当 error-status非 0时 error-index指出是列表中的哪个变量引起了错误 。 变
量即管理对象实例
variable-
bindings
一列变量名和相应值
enterprise 产生陷阱的对象的类型;基于 sysObjectID
agent-addr 产生陷阱的对象的地址
generic-trap 一 般陷阱, 其值为,coldStart(0),warmStart(1),linkDown(2),linkup(3),authen-
ticationFailure(4),egpNeighborLoss(5)enterpriseSpecific(6)
specific-trap 更具体地指出陷阱性质的一个代码
time-stamp 在网络实体初始化和陷阱产生之间的时间, 即 sysUpTime的值
3.1.3 SNMP协议规范
2,报文的发送和接收
构造 PDU( ASN.1对象)
加入团体名及源和目的传输地址
构造 SNMP报文 检验并通过认证
把 ASN.1报文按 BER编码
发送给对等实体
图 7 生成和发送 SNMP报文
3.1.3 SNMP协议规范
按 BER解码, 恢复 ASN.1报文
语法分析 ASN.1报文
验证版本号
认证检查
语法分析 PDU
处理 PDU,必要时产生应答
丢弃报文
必要时产生陷入
出错
正确
图 8 接收和处理 SNMP报文
3.1.4 SNMP操作( SNMP Operations)
1,变量绑定
? 所有的 SNMP操作都是访问对象实例 。 ( 叶节点 )
? 可以将一些相同类型的操作 ( get,set,trap) 组合到一
条报文中去 。 管理站可得到代理的某个组中的所有标量
对象的值 。 Getone… sysName.0 sysLocation.0 (mib操作 )
? 它可以只发送一条报文来要求所有的取值, 然后得到一
个列出了所有值的响应 。 Getmany…, ip
? 为了实现多个对象的交换, 所有的 SNMP PDU都包括一个
variable-binding域, 即绑定域 。
? 该域由一系列对象实例的索引组成, 并且带有那些对象
的值 。
3.1.4 SNMP操作
2,检索简单对象
? 检索简单的标量对象值可以用 get操作 ;
? 如果变量绑定表中包含多个变量, 一次还可以检索
多个标量对象的值 ;
? 接收 GetRequest 的 SNMP 实 体 请 求 标 识 相 同 的
GetResponse响应 。
? 如果所有请求的对象值均可以得到, 则给于应答;
只要有一个对象的值得不到, 则可返回下列错误之
一:
3.1.4 SNMP操作
? noSuchName:变量绑定表中的一个对象无法与 MIB
中的任何对象标识符匹配, 或者要检索的对象是一
个子树或表, 没有对象实例生成 。 操作 getone 表对象
? tooBig:响应实体可提供所有要检索的值, 若变
量太多以至一个响应 PDU装不下 。
? genError,响应实体一个对象的值也不能提供时,
变量绑定表中不返回任何值 。
3.1.4 SNMP操作
例 1:若网络管理站想要从代理中检索 udp组中所有简单对象
的取值,管理站可以发送一个 GetRequest PDU,并在检索命令
中直接指明对象实体的标识符:
GetRequest(udpInDatagrams.0,udpNoPorts.0,udpInError.0
,udpOutDatagrams.0)
? 如果代理中该公共体的 MIB视域支持所有的这些对象,则
返回 4个对象的一个 GetRequest PDU:
复习
3.1.4 SNMP操作
例 2,如果代理不支持管理站对 udpNoPorts的访问,则响
应会不同。如发出同样的命令:
GetNextRequest(udpInDatagrams,udpNoPorts,udpInError,ud
pOutDatagram)
? 而得到的响应是:
GetResponse(udpInDatagrams.0=17346,udpInError.0=0,
udpInError.0=0,udpOutDatagrams.0=17090)
? 因为变量名 udpNoPorts和 udpInError的下一个对象实例
都是 udpInError.0=0
? 可见当代理收到一个 Get请求时,如果能检索到所有的
对象实例,则返回请求的每一个值;
? 如果有一个值不能提供,则返回该实例的下一个值。
复习
3.1.4 SNMP操作
3,检索未知对象
? GetNext命令检索变量名指示的下一个对象实例,但是并不
要求变量名是对象标识符或者是实例标识符。
? 如 udpInDatagrams的 实例标识符是 udpInDatagrams.0,而
udpInDatagrams.2并不表示任何对象。若发出
GetNextRequest(udpInDatagrams.2)得到的响应是
GetNextRequest(udpNoPorts.0=2552) getnext操作
? 说明代理没有检查标识符 udpInDatagrams.2的有效性,而
是直接查找下一个有效的标识符,得到 udpInDatagrams.0
后返回了它的下一个对象实例。
3.1.4 SNMP操作
4,检索表对象
GetNext可用于有效地搜索表对象 。
图 9 表对象检索
IfTable(2)
Interfaces(mib-2 2) mib-2=1.3.6.1.2.1
IfNumber(1)
IfEntry(1)
IfIndex(1)
IfDescr(2)
IfType(3)
IfMtu(4)
IfSpeed(5)
复习
3.1.4 SNMP操作
例 3,上图中, 若发出下面的命令, 检索 ifNumber的值 。
GetRequest(1.3.6.1.2.1.2.1.0)
GetResponse(2)
我们知道有两个接口 。 如果我们进一步想要知道每个接口的数
据速率, 则可以用下面的命令检索 if表中的第五个元素:
GetRequest(1.3.6.1.2.1.2.2.1.5.1)
最后的 1是索引项 ifIndex的值 。 得到的响应是:
GetResponse(10000000)
说明第一个接口的数据速率是 10Mb/s。 若要得到第二个接口的
速率可用命令:
GetNextRequest(1.3.6.1.2.1.2.2.1.5.1)
得到的可能是 GetResponse(56000)说明第二个接口的数据速率
为 56kb/s。
操作,getone –v1 IP地址 public 1.3.6.1.2.1.2.1.0
3.1.4 SNMP操作
例 4 若管理站希望能够检索整个表, 但又不知其中
的内容和表中的行数, 则可连续使用 GetNext命令 。
表 3检索表对象
ipRouteDest IpRouteMetric1 ipRouteNextHop
9.1.2.3 3 99.0.0.3
10.0.0.51 5 89.1.1.42
10.0.0.99 5 89.1.1.42
3.1.4 SNMP操作
管理站可发送包含所有列对象名称的 GetNextRequest:
? GetNextRequest(ipRouteDest,ipRouteMetric1,ipRout
eNextHop)
代理将表中的第一行取值返回:
? GetResponse(ipRouteDest.9.1.2.3=9.1.2.3,ipRouteM
etric1.9.1.2.3=3,ipRouteNextHop.9.1.2.3=99.0.0.3)
根据第一行的值可检索下一行:
? GetNextRequest(ipRouteDest.9.1.2.3,ipRouteMetric
1.9.1.2.3,ipRouteNextHop.9.1.2.3)
? GetResponse(ipRouteDest.10.0.0.51=10.0.0.51,ipRo
uteMetric1.10.0.0.51=5,ipRouteNextHop.10.0.0.51=
89.1.1.42)
据此可继续检索第三行 。
3.1.4 SNMP操作
? GetNextRequest(ipRouteDest.10.0.0.51,ipRouteMetric1.
10.0.0.51,ipRouteNextHop.10.0.0.51)
? GetResponse(ipRouteDest.10.0.0.99=10.0.0.99,ipRouteM
etric1.10.0.0.99=5,ipRouteNextHop.10.0.0.99=89.1.1.4
2)
管理站不知道这是表的未尾, 因此继续:
? GetNextRequest(ipRouteDest.10.0.0.99,ipRouteMetric1.
10.0.0.99,ipRouteNextHop.10.0.0.99)
然而表中只有 3行, 因此代理返回 MIB中按字典顺序的下个对象:
? GetResponse(ipRouteMetric1.9.1.2.3=3,ipRouteNextHop.
9.1.2.3=99.0.0.3,ipNetToMediaIfIndex.1.3=1)
? 管理站可以通过响应列表中对象的名称与请求不匹配而得出路由表已以
到达了末端。 Getnext ip路由表最后一行 -级联 —不匹配变量 —表尾
复习
3.1.4 SNMP操作
5,表的更新和删除
? Set命令用于设置或更新变量的值。对于 Set命令的应答
与是 GetResponse,并且要么更新列表中的所有变量,要么
一个也不更新。其错误状态为 tooBig,noSuchname和
genError。
? 若有一个变量的名字和要设置的值在类型、长度或实际值
方面不匹配,则返回错误条件 badValue。
3.1.4 SNMP操作
例 5:在表 3中, 若想改变列对象 ipRouteMetric1的第一个值,
则可发出命令:
SetRequest(ipRouteMetric1.9.1.2.3=7)
得到的应答是:
GetResponse(ipRouteMetric1.9.1.2.3=7)
其效果是该对象的值由 3变成了 7。
setany –v1 IP地址 public ipRouteMetric1.子网地址 (100.100.202.0) –i 2
3.1.4 SNMP操作
例 6 对于表 3若要增加一行,则可用命令:
SetRequest(ipRouteDest.11.3.3.12=11.3.3.12,
ipRouteMetric1.11.3.3.12=7,
ipRouteNextHop.11.3.3.12=91.0.0.5)
Setany …, ipRouteNextHop.100.100.202.0 –a 100.100.202.27 (public rw)
例 7 如果要删除表中的一行,则可以把一个对象的值置为 invalid:
SetRequest(ipRouteType.7.3.5.3=invalid)
得到的响应说明表行确已删除:
GetResponse(ipRouteType.7.3.5.3=invalid)
3.1.4 SNMP操作
6,陷入操作
? coldStart发送实体重新初始化,代理的配置已改变,
通常是由系统失效引起的。
? warmStart发送实体重新初始化,但代理的配置没有
改变,这是正常的重启动过程。
? linkDown链路失效通知,变量绑定表的第一项指明
对应接口表的索引变量及其值。
? linkUP链路启动通知,变量绑定表的第一项指明对
应接口表的索引变量及其值。
? authenticationFailure发送实体收到一个没有通过
认证的报文。
? egpNeighborLoss 相邻的外部路由器失效或关机。
? enterpriseSpecific 由设备制造商定义的陷入条件,
在特殊陷入字段指明具体的陷入类型。
操作:配置 —响应策略 ---trap响应
3.1.5 SNMP功能组( MIB-Ⅱ SNMP Group )
? snmp组包含 SNMP操作和实现的信息。
? 除了组中的最后一个对象,所有的对象都是只读的计数器。
? 对象 snmpEnableAuthenTrap可以由管理站设置,它指示是
否允许代理产生, 认证失效, 陷入。 操作 mib
3.1.6 SNMPv2
SNMP具有一定的局限性,
? 由于轮询的性能限制, SNMP不适合管理很大的网络
? SNMP不适合检索大量数据 。
? SNMP的陷入报文是没有应答的, 可能会丢掉重要的
管理信息 。
? SNMP只提供简单的团体名认证, 安全措施很弱 。
? SNMP并不直接支持向被管理设备发送命令 。
? MIB-Ⅱ 支持的管理对象是很有限的, 不足以完成复
杂 的管理功能 。
? SNMP不支持管理站之间的通信, 而这一点在分布
式网 络管理中是很需要的 。
针对以上 SNMPv1的缺陷, SNMPv2对 SNMP进行了一定
的改进 。 其增强的主要功能有:
? 管理信息结构的扩充;
? 管理站和管理站之间的通信能力;
? 新的协议操作 。
1 SNMPv2系统结构
管理应用程序
依赖于网络的协议
IP
U D P
S N M P
依赖于网络的协议
IP
U D P
S N M P
管理应用程序
依赖于网络的协议
IP
U D P
S N M P
管理应用程序
SNMP管理站 SNMP代理SNMP管理站
SNMPv2与 SNMP系统结构的主要区别
? SNMPv2有 7种报文
? 管理者与管理者之间可以通信 。
SNMPv2提供 3种访问管理信息的方法:
? ? 管理站和代理之间的请求 /响应通信 。
? ? 代理系统到管理站的非确认通信 。
? ? 管理站和管理站之间的请求 /响应通信, 以支
持分布式网络管理 。
2 SNMPv2协议操作
1) SNMPv2报文
? 版本号取值为 0----SNMPv1
取值为 1----SNMPv2。
2) SNMPv2 PDU
? SNMPv2协议数据单元有 3种 PDU格式
? GetRequest,GetNextRequest,SetRequest、
GetBulkRequest,SNMPv2-Trap,Response、
InformRequest
复习
Variable-bindings0 0Request-idPDU type
图 SNMPv2报文 PDU格式
GetRequest,GetNextRequest,SetReques,InfornRequest和 Trap PDU
GetResponsePDU
错误状态请求标识PDU type 错误索引 Variable-bindings
GetBuleRequest PDU
非重复数 N请求标识PDU type 最大后继数 M Variable-bindings
变量绑定表
name1 value1 name2 value2 ------ namen valuen
2 SNMPv2协议操作
(1) GetRequestPDU:
SNMPv2对这种操作的响应方式与 SNMPv1不同之处是允许部分
响应, 对变量绑定表中的各个变量进行处理:
? ? 如果该变量的对象标识符前缀不能与这一请求可访问
的任何变量的对象标识符前缀匹配, 则返回一个错误
值 noSuchObject。
? ? 如果变量名不能与这一请求可访问的任何变量名完全
匹配, 则返回一个错误值 noSuchInstance。
? ? 如果由于任何其他原因而处理失败, 则返回一个错误
状态 genErr。
? ? 如果生成的响应 PDU太大, 则构造一个新的响应 PDU,
其错误状态为 tooBig,错误索引为 0,变量绑定表为
空 。
2 SNMPv2协议操作
(2)GetNextRequestPDU:
其区别于 SNMPv1是改变了响应的原子性 。
? 对变量绑定表中指定的变量在 MIB中查找按照字
典顺序的后继变量, 如果找到, 返回该变量的
名字和值 。
? 如果找不到按照字典顺序的后继变量, 则返回
请求 PDU中的变量名和错误值 endOfMibView.
? 如果出现其他情况使得构造响应 PDU失败, 以
与 GetRequest类似的方式返回错误值 。
2 SNMPv2协议操作
(3) GetBulkRequestPDU:
? 是 SNMPv2对原标准的主要增强, 用于从代理到管
理站传送大量的数据而使所需要的协议交换数目最
小, 尤其是检索表数据的管理信息 。
? 块检索操作, 原理与 GetNextRequest操作相同
? 可以说明多个后继对象实例 。
? 如果请求太大, 代理则返回尽可能多的数据, 而不
是简单地发送一个 tooBig错误消息 。
getmany system tcp
2 SNMPv2协议操作
(4)SetRequestPDU:
? SNMPv2 SetRequestPDU在格式和语义上都和
SNMPv1完全相同, 其操作的基本特性是要么更
新所有的变量, 要么一个都不更新 。 唯一的区
别在于处理响应的方式不同 。
? 使用 较 多的错误代码是 SNMPv2对 SNMP的一大提
高, 使得管理站能了解详细的错误信息, 以便
采取纠正措施 。
2 SNMPv2协议操作
(5) SNMPv2-Trap PDU:
SNMPv2的陷入采用与 Get等操作相同的 PDU格式, 这
与原标准不同 。 但其也是代理发给管理站的非确认
性消息 。
2 SNMPv2协议操作
(6) InformRepuestPDU:
? 由管理站功能实体代表一个应用程序发往另
一个执行管理站功能的 SNMPv2实体, 为得到后
一个应用程序提供的管理信息 。
? 变量绑定表的内容与 SNMPv2-Trap PDU具有相同
的元素 。 但该消息需要应答 。
3 SNMPv2管理信息库
? SNMPv2的管理信息库增加了两个新的 MIB模块,
即安全模块和 SNMPv2模块 。
? SNMPv2又 有三个子模 块,SNMPDomains,
SNMPProxys和 SNMPModules。
? SNMPDomains 扩展了在传输协议之上传送管理
报文的 SNMP标准。
? SNMPProxys的功能是将执行其它协议的系统通
过代理服务映射到 UDP.
internet
{1.3.6.1}
system (1) snmpMIBObjects
(1)
snmpMIBConformance
(2)
snmp (11)……
security
(5)
snmpv2
(6)
directory
(1)
mgmt
(2)
experimental
(3)
private
(4)
snmpdomains
(1)
snmpProxys
(2)
snmpModules
(3)
mib-2
(1) snmpMIB (1)
图 5-12 SNMPV2 Internet 组
3 SNMPv2管理信息库
1) SNMP组
在 SNMPv2中 SNMP组对 MIB-2进行了简化, 删除了
大量的认为不必要的实体 。 同时又增加了一些
新对象 。
1,3,6,30,31,32 snmpGroup
4,5 SnmpCommunity Group
7,23 Not used
2,8-23,24-29 snmpObsoleteGroup
表 4 改进的 SNMP组
实体 OID 描述
snmpInPkts snmp(1) 来自传输层服务提交给 SNMP实体报文的总数
snmpInBadVersions snmp(3) 接收的含有版本错误的报文总数
snmpInBadCommunityNam
es
snmp(4) 接收的含有团体名错误的报文总数
snmpInBadCommunityUse
s
snmp(5) 含有不支持的团体操作的报文总数
snmpInASNParseErrs snmp(6) ASN.1和 BER错误的总数
snmpEnableAuthenTraps snmp(30) 认证失效陷入工作 ( 1), 认证失效陷入不工
作 ( 2)
snmpSilentDrops snmp(31) 由于响报所文太长无法应答面丢弃的请求报
文总数
snmpProxyDrops snmp(32) 由于委托代理传送报文失败无法应答而丢弃
的报文数
3 SNMPv2管理信息库
2) MIB对象组
? 这个新组包含的对象与管理对象的控制有关
? 在 snmpMIBObjects 节 点 下 有 三 个 模 块,
snmpTrap(4),snmpTraps(5)和 snmpSet(6)。
? 子节点 1,2,和 3已经被取消
图 MIB对象组
snmpMIBObjects (snmpMIB1)
snmpTrap (4) snmpSet(6)snmpTraps(5)
snmpTrapOID
(1)
snmpTrapEnterprise
(3)
snmpSetSerialNo(1)
coldStart(1)
warmStart(2)
authenticationFailure(5)
linkUp(4)
linkDown(3)
3 SNMPv2管理信息库
? SnmpTrap组包含了陷入通知和有关制造商对象标
识符的信息 。
? 在 SnmpTraps下的实体是 Snmpv1Traps的扩展 。
? SnmpSerialNo是 SnmpSet仅有的一个对象, 用于
解决 set操作中可能出现的问题 。
? 一是要保证 set操作按照发送的顺序对 MIB进行执

? 二是防止多个管理站对 MIB进行并发操作, 从而
保证数据库的一致性和精确性 。
3 SNMPv2管理信息库
3) Snmpv2一致性声明 ( Conformance Statements)
一致性是对具体实现的限制, 是具体实现必须达到的
最小级别 。 在一致性声明中规定了四个宏:
? OBJECT-GROUP( 对象组宏 )
? NOTIFICATION-GROUP( 通知组宏 )
? MODULE-COMPLIANCE( 模块依从性宏 )
? AGENT-CAPABILITIES( 代理能力宏 )
3 SNMPv2管理信息库
4)接口组
? MIB-Ⅱ 定义的接口组经过一段时间的使用, 发现有很
多缺陷 。 RFC1573分析了原来的接口组没有提供的功能
和其他不足之处 并 对 MIB-Ⅱ 接口组做了一些小的修改,
? 重新规定 ifIndex用于区分接口子层而不再代表一个接
口 。
? 不再限制 ifIndex的取值必须在 1到 ifNumber之间 。 允许
动态地增加 /删除网络接口 。
? 废除了 ifInNUcastPkts,ifOutNUPkts和 ifOutQLen这些
用处不大的变量 。
? ifSpecific也被废除了, 其作用由 ifType代替 。
3 SNMPv2管理信息库
RFC1573还对接口组增加了 4个新表
ifRcvAddressTable(4)
ifMIBObjects (snmpMIB1)
ifXTable (1) ifTestTable(3)ifStackTable(2)
图 接口组新表
3 SNMPv2管理信息库
(1) 接口扩展表 ifXTable
变量 ifName表示接口名, 表中可能有代表不同子层的多个行属
于同一接口, 它们具有同一接口名 。
(2)接口堆栈表
接口堆栈表说明接口表中属于同一物理接口的各个行之间的
关系,
(3)接口测试表
接口测试表的作用是由管理站指示代理系统测试接口的故障 。
该表的一行代表一个接口测试 。
(4) 接收地址表
接收地址表包含每个接口对应的各种地址 ( 广播地址, 组播
地址和单地址 ) 。
3.2 RMON 远程网络监视
3.2.1 RMON的基本概念
? 网络管理人员利用 MIB-Ⅱ 只能获取单个设备的
本地管理信息, 如进出某个设备的分组数等,
而不能获知整个网络的通信情况 。
? RMON规范是对 SNMP标准基本体系 (SMI,MIB、
SNMP)最重要的扩充 。
? 是简单网络管理向互联网管理过渡的重要一步 。
? 定义的远程监视 MIB是对 MIB-Ⅱ 的补充 。
? 在不改变 SNMP协议的条件下增强了网络管理的
功能 。
复习
1 网络监视器
? 网络监视器( Monitor):通常用于监视整个网
络通信情况的设备。 也称 网络分析器
( Analyzer)、探测器( Probe)等。
? 工作方式,是监视器通过监听方式在 LAN上运行,
观察 LAN上出现的每个分组,并进行统计和总结,
给管理人员提供重要的信息 。
1 网络监视器
? 监视器可以存储全部或部分的分组以供以后分析
使用, 并根据分组类型进行过滤以及捕获特殊的
分组 。
? 一般每个子网都需要一个监视器, 这个监视器可
以是一个单独的设备, 也可以是运行监视器软件
的工作站和服务器等 。
? 为了有效地进行网络管理, 每个子网的监视器需
要与中央网络管理站通信, 也称远程监视器 。
2 RMON的设计目标
? L 离线操作:在不受管理站查询的情况下, 监视器也要
持续地收集子网故障, 性能和配置方面的信息, 统计和积
累数据 。
l 主动监视:监视器可以周期地运行诊断程序, 给管
理站提供诊断故障信息 。
? l 问题检测和报告:观察网络资源的消耗情况, 记录随
时出现的异常条件, 并在出现错误条件时通知管理站 。
? l 提供增值数据:监视器可以分析 收集到的子网数据,
从而减轻了管理站的计算任务 。
? l 多管理站操作:一个互联网可能有多个管理站, 监视
器可以配置成并发工作, 为不同的管理站提供不同的信息 。
?在网络管理信息的通信中, 需要建立公共的语法和语义
的标准才能使用 RMON设备 。
?其使用的语法是 ASN.1
?对象类型是由 RMON的管理信息结构 SMIv2定义 。
?RMON MIB定义 RMON的功能组已经开发了三个阶段 。
RMON1是为 Ethernet 而开发的 。
RMON1的 Token ring是作为 RMON1的扩展在 1993年开
发的 。 但只是针对数据链路层上提供参数 。
RMON2被开发并发布于 1997年 1月, 可提供网络层以上的
参数信息 。
?RMON规范定义了 RMON MIB,是 MIB-Ⅱ 下的第 16个子树 。
3.2.2 RMON的 SMI和 MIB
rmon
(mib-2 16)
rmonConformance (20)
probeConfig(19)
usrHistory(18)
a1Matrix (17)
a1Host(16)
n1Matrix(15)
n1Host (14)
addressMap (13)
protocoIDist(12)
protocoIDir (11)
statistics (1)
history (2)
alarm (3)
host (4)
hostTopN (5)
matrix (6)
ifilter (7)
capture(8)
event (9)
tokenRing (10)
图 RMON功能组
R
M
O
N1
R
M
O
N2
RMON1 Extension
3.2.3 RMON的表管理
? 在 SNMPv1的管理框架中,对增加或删除表中行的
操作过程是不明确的 。
? RMON规范包含一组文本约定和过程化规则以提供
明晰而规律的行增加和行删除操作 。
3.2.3 RMON的表管理
1,表结构
在 RMON规范中增加了两种新的数据类型,
? OwnerString:是为了增强规范的可读性 。
在每一个可读 /写的 RMON表中都有一个对
象, 其类型为 OwnerString,其值为表行
所有人或创建者的名字, 对象以 Owner结
尾 。
? EntryStatus:其值表示行的状态, 对象
名以 Status结尾, 用于行的生成, 修改和
删除 。 RMON MIB 表操作
表结构由控制表和数据表两部分组成:
?控制表定义数据表的结构 。
?数据表用于存储数据 。
3.2.3 RMON的表管理
rmlControlTable
rmlControlIndex rmlControlParameter rmlControlOwner rmlControlStatus
1 5 monitor valid
2 26 manager alpha valid
3 19 manager beta valid
rmlDataTable
rmlDataControlIndex rmlDataIndex rmlDataValue
1 1 46
2 1 96
2 2 35
2 3 77
2 4 93
2 5 86
3 1 92
3 2 26
3.2.3 RMON的表管理
? rmlControlIndex:唯一地标识 rmlControlTable中
的一个控制行,该控制行定义了 rmlDataTable中一
个数据行集合。集合中的数据行由 rmlControlTable
的相应行控制。
l rmlControlParameter:其控制参数用于控制行控制
的所有数据行。
? rmlControlOwner:该控制行的所有者 。
? rmlControlStatus:该控制行的状态 。
3.2.3 RMON的表管理
? 数据表由 rmlControlIndex和 rmlDataIndex共同
索引 。
? rmlDataControlIndex的值与控制行的索引值
rmlControlIndex相同 。
? rmlDataIndex的值唯一地指定数据行集合中的
某一行 。
? 控制表的第一行的所有者是 monitor,按照约定
这是指代理本身 。
3.2.3 RMON的表管理
2,增加行
管理站利用 set命令在 RMON表中增加新行, 并遵循下列规则 。
? l 如果新行的索引值与表中其他行的索引值不冲突, 则
代理产生一个新行, 其状态对象的值为 createRequest(2)。
? l 新 行 产 生 后, 由 代 理 把 状 态 对 象 的 值 置 为
underCreation(3)。
? l 在管理站创建完其配置所需的所有行之前, 这些行应
一直处于 underCreation(3)状态, 直到管理站把每一新创
建行的状态对象值设置为 valid(1)。
? l 如果其它管理站试图以 createRequest(2)状态创建一
个新行, 而该行已经存在, 就会返回一个错误信息 。
? 管理站也可以将一个已存在的行的状态对象的值由 invalid
改写为 valid,恢复旧行的作用也等于产生了一个新行 。
? 如果有多个请求要创建同样的概念行, 只有最早接收到的
请求会成功, 其余的管理站将会收到错误信息 。
3.2.3 RMON的表管理
3,行更改与删除
? 只有行的所有者才能发出 SetRequestPDU,通
过将其状态对象值设置为 invalid,该行就可
被删除 。
? 在设置为无效之后, 用 SetRequestPDU赋予行
中其他对象新的参数值来进行修改 。
3.2.4 RMON1组及其功能
? RMON1在数据链路层可完成许多功能。 图 2
? 远程被监视的网络为 Ethernet和 Token Ring。
? 采集的数据可作为 5种功能设置的输入,有 3种监
视器是对通信量的统计。
? 主机与会话统计组处理与主机有关的通信数据和
某种参数最大的 N台主机的通信数据以及主机之间
的会话。
? 历史控制表控制从不同网络采集的数据。各个模
块的输出以图表的形式呈现给网络管理者以供其
用网络管理系统对网络进行分析。
Token Ring Statistics
Token Ring
Statistics
Token Ring
History
History
Control
Ethernet Statistics
Ethernet
Statistics
Ethernet
History
History
Control
Host and Conversation Statistics
Host
Statistics
hostTopN
Statistics
Matrix
Statistics
Data
Gathering NetworkManager






Event
Generation
Alarm
Generation
Token Ring Statistics
Packet
Filtering
Channel
Filtering
Packet
Capture
图 2 RMON1组及其功能
3.2.4 RMON1组及其功能
?分组和信道过滤后的输出可能产生报警和
事件的消息 。
?数据采集的输出也可直接产生报警 。
?过滤组的输出可以存储在分组捕获中为管
理者提供进一步的分析 。
表 3 RMON1 MIB组和表
组名 OID 功能描述 表
Statistics Rmon 1 提供链路层的统
计信息
etherStatsTable,
etherStats2Table
History Rmon 2 收集周期性的统
计信息
historyControlTable,
etherHistoryTable
historyControl2Table,
etherHistory2TableAlarm Rmon 3 用于定义取样间
隔和报警门限 alarmTable
Host Rmon 4 关于一台主机的
通信统计数据
hostControl2Table,hostControl2
Table
hostTable,hostTimeTable,hostCo
ntrolTableHostTop N Rmon 5 某种参数最大的 N
台主机的统计数

hostTopNControlTable
Matrix Rmon 6 一对主机之间的
通信统计数据
matrixControlTable,matrixSD
Table
matrixDSTable,matrixControl
2Table
Filter Rmon 7 对分组进行过滤
的信息
filterTable,filter2Table,ch
annelTable
channel2Table
Packet
capture
Rmon 8 捕获特殊分组的
信息
BufferControlTable,captureB
ufferTable
Event Rmon 9 控制事件和通知
的产生
eventTable
Token ring Rmon 10 关于令牌环网的
配置和统计信息
见表 2-22
3.2.4 RMON1组及其功能
? 前 9个是用于 Ethernet LAN的公共数据 。
? 第 10组是扩展到 Token Ring LAN。 并且多数功能
组都有一个或多个表 。
? 10个组分为三种类型:
1,统计类:统计组, 历史组, 主机组, 最高 N台主
机组和矩阵组 (见图 ) 。
2,事件报告类:具有网络事件报告的功能 。 它们是警
报组和事件组
3 过滤类:对按照标准选择的输入报文和捕获为将来
分析用的数据进行过滤 。 它们是过滤组和包捕获
组 。
3.2.4 RMON1组及其功能
? etherStats2Table等带有, 2”的表是在 RMON2标
准发展期间创建的附加的表,也是 RMON1的增强
版。
3.2.5 RMON2 管理信息库
?前面介绍的 RMON MIB只能存储 MAC层管理信息 。
?1997年发表了两篇 RFC即 RMON2。
?RMON2代理可读取封装在网络层之上的报头 ( 如
IP协议, TCP协议 ) 。
?RMON2只是原 RMON1的简单扩充, 添加了一些新
组 。
3.2.5 RMON2 管理信息库
? l 协议目录组 ( protocoIDir),提供表示各种网络
协议的标准化方法, 管理站可以了解监视器所在的子网上
运行什么协议 。
? l 协议分布组 ( protocoIDist),提供每个协议产
生的通信统计数据, 如发送了多少分组, 多少字节等 。
? l 地址映射组 ( addressMap),建立网络层地址 ( IP
地址 ) 与 MAC地址的映射关系 。 这些信息在发现网络设备,
建立网络拓朴结构时有用 。
? l 网络层主机组 (nlHost):收集网上主机的信息, 与
RMON1不同的是其基于网络层地址发现主机而不是基于 MAC
地址 。 管理员可以超越路由器看到子网之外的 IP主机 。
3.2.5 RMON2 管理信息库
? l 网络层矩阵组 ( nlMatrix),记录主机对 ( 源 /目标 )
之间的通信情况,
? l 应用层主机组 ( alHost),对应每个主机的每个应用
协议 ( 指第三层之上的协议 ) 在 alHost表中有一个表项, 记
录有关主机发送 /接收的分组 /字节数等 。
? l 应用层矩阵组 ( alMatrix),统计一对应用层协议之
间的各种通信情况, 以及某种选定的参数 ( 例如交换机的分
组数 /字节数 ), 最大的 ( TopN) 等一对应用层协议之间的
通信情况 。
? l 用户历史组 ( usrHistory), 按照用户定义的参数,
周期地收集统计数据 。 可以研究系统中的任何计数器, 例如
关于路由器到路由器之间的连接情况的计数器 。
? 监视器配置组 ( probeConfig), 定义了监视器的标准参数
集合, 这样可以提高管理站和监视器之间的互操作性, 使得
管理站可以远程配置不同制造商的监视器 。
目标地址
M(i,1) M(i,2) M(i,3) …… M(i,Ni)
M(i,1) -- R R R
M(i,2) R -- R R
M(i,3) R R -- R



M(i,Ni) R R R --



习题
3-1/2/3/5/7