1、第8章 远程网络监视,8.1 RMON的目标 8.2 对远程监视器的控制 8.3 多管理者支持 8.4 表管理 8.5 RMON MIB 8.6 实际问题,8.1 RMON的目标,RMON的规范主要是一个MIB定义,它定义了标准网络监视功能以及在管理控制台和远程监视器之间的通信接口。RMON提供了一个有效而且高效的方法,它可以在降低其他代理和管理站负载的情况下监视子网的行为。在RFC 1271中列出了RMON的设计目标: 脱线操作:由网络管理器来限制或停止一个监视器的轮询是可取而且是必要的,有限制的查询可以节约通信开支。如果通信失败或管理器发生错误,查询可能会终止。,下一页,8.1 RMON的
2、目标, 抢先监视:如果有充足的资源,并且认为其行为不会有很大的破坏性,监视器可以不断地对网络进行诊断并记录网络性能状况。 问题检测和汇报:抢先监视主动地探测网络将消耗多网络资源去检测错误和异常情况。 增值数据:网络监视器可以分析在其子网中收集的数据,从而减轻管理站的负担。 多管理者支持:一个互联网可以配置多个管理站,以获得可靠性和执行不同功能或管理同一组织的不同部分。,返 回,上一页,8.2 对远程监视器的控制,远程监视器的实现有两种方式: 使用一个专用设备来实现远程监视器。 把它作为系统功能的一部分,该系统有专用于监视功能的处理器和内存资源。有了这些专用资源,远程监视器可以执行比一个只支持M
3、IB II的代理更复杂、更广泛的功能。,下一页,8.2 对远程监视器的控制,8.2.1 配置 一般情况下,需要对远程监视器进行数据搜索配置,指明要收集的数据类型和形式。RMON MIB容纳它的方法如下: MIB被组织成几个功能组,在每一组内,可能有一个或多个控制表和一个或多个数据表。 这样,监视器所执行的功能由控制表中各行的设置定义,例如,一个控制表可能包含指明要收集数据的来源、数据类型及收集时间的对象。,下一页,上一页,8.2 对远程监视器的控制,为了修改控制表中的一个参数,需要首先使该控制项(行)失效,这将导致该行及数据表中与之关联的行被删除。然后,管理站可以使用更改过的参数创建一个新的控
4、制行。 可以用同样机制使一特定的数据收集功能失效。当控制表中的一行被删除以后,其数据表中与之相关联的行也被删去。这样,被这些行占用的资源就回收了。,下一页,上一页,8.2 对远程监视器的控制,8.2.2 动作发动 SNMP没有提供向代理发布命令以执行某个动作的特殊机制,SNMP的唯一功能就是读取和设置MIB视图内对象的值。然而,利用SNMP的Set操作发布命令也是可能的。可用对象来代表一个命令,这样当该对象被设为一个特定值时,一个特定动作就会被执行。 在RMON MIB中包括许多这种对象,一般情况下,这些对象代表状态;当管理站改变其状态(通过改变对象的值)时,一个动作就会被执行。,返 回,上一
5、页,8.3 多管理者支持,RMON代理可以接受多个管理站的管理,任何时候如果某一个资源允许并发访问,就会有冲撞和产生意外结果的可能。在共享RMON代理的情况下,有下列问题需要考虑: 并发资源请求会超过监视器提供这些资源的能力。 管理站可能捕捉并保持监视器资源很长一段时间,从而阻止这些资源用于其他管理站执行其所需的管理功能。 资源会被分配给某一管理站,这一管理站由于崩溃而无法释放资源。,下一页,8.3 多管理者支持,通过所有者标号,管理站可实现下列功能: 管理站可以识别它所有的不再使用的资源。 如果管理站经过了重新启动,它可以识别其在过去预定的资源,并释放它不再需要的那些部分。 RMON规范建议
6、所有者标号包含一个或多个如下元素:IP地址、管理站名称、网络管理者的名字、地址或电话号码。,下一页,上一页,8.3 多管理者支持,如果有多个网络管理者具有访问一个控制表的权力,可通过共享取得较高的效率。当一管理站希望使用监视器的某一功能时,它应首先扫描与之相关的控制表,看该功能,或与之相近的功能,是否已被另一管理站定义。 通常情况下,监视器在初始化时被配置成具有一组默认的功能,定义这些功能的控制行由监视器所有。按照约定,其所有关系标号被设置成以“monitor”开头的字符串,这样,与所定义功能相关联的资源就由监视器自己所有。,返 回,上一页,8.4 表管理,8.4.1 文本约定 在RMON规范
7、中,定义了两个新的数据类型,用ASN.1表示,其定义如下: OwnerString : = DisplayString EntryStatus : = INTEGER valid (1),createRequest (2),underCreation (3),invalid (4),下一页,8.4 表管理,8.4.2 行增加 管理站利用SNMP把一行加入一个RMON表中,是通过与第6章中所描述的同一方式完成的。也就是说,发出一个SetRequest PDU,它包括表的多个列对象标识符。 当一个代理接收到一个这样的请求时,它必须检查请求参数设置,看它们在给定限制下是否是被允许的。 RMON MI
8、B支持由多个管理站引起的并发表增加企图所带来的问题的处理机制。如果两个或多个管理站都试图用同样的参数(包括索引参数)创建一个新行,就会发生问题。,下一页,上一页,8.4 表管理,这由下面几步组成: 如果管理站试图创建一个新行,并且索引对象值不存在,就以createRequest(2)为状态对象值开始创建一个新行。 创建操作完成后,代理把状态对象值设置成underCreation(3)。,下一页,上一页,8.4 表管理, 在管理站创建完其配置所需的所有行之前,这些行应一直处于underCreation(3)状态,直至管理站把每一新创建行的状态对象值设置为valid(1)。 如果其他管理站试图以C
9、reateRequest(2)状态创建一个新行,而该行已经存在,就会返回错误信息。,下一页,上一页,8.4 表管理,8.4.3 行更改和删除 通过把其状态对象值设置为无效,一行就可被删除。行的所有者可以通过发出一个合适的 SetRequest PDU删除该行。 正如前面提及的那样,一行可以通过首先使之变成无效,然后赋予新的参数值来修改。,返 回,上一页,8.5 RMON MIB,RMON规范的大部分是RMON管理信息库的定义。这一MIB现已被吸收进MIB II,其子树标识符是16。 RMON MIB允许你在MAC层监视通信量,然而,RMON2 MIB使你可以上升到协议栈,在网络和应用层查看正在
10、发生什么。 你还可以为该协议和不同网络地址之间的应用层对话生成顶层的N个报表。 那么,除了可能跟踪网络用户访问的Web站点之外,这些怎样提供其他帮助呢?管理一个网络的关键是理解它。,下一页,8.5 RMON MIB,8.5.1 RMON MIB的结构 RMON MIB分为9组,如图8-1所示。 统计(Statistics):维护代理监视的每一子网的基本使用和错误统计。 历史(history):记录从统计组可得到的信息的周期性统计样本。 警报(alarm):允许管理控制台人员为RMON代理记录的任何计数或整数设置采样间隔和报警阈值。,下一页,上一页,8.5 RMON MIB, 主机(host):
11、包含关于连接到子网上的主机的各种流量的计数。 最高 N台主机(hostTopN):包含排序后的主机统计,该报告基于host表中的一些参数生成列表,并从中选出最高的N台主机。 矩阵(matrix):以矩阵形式显示出错和使用信息,这样操作员就可以检索任何一对网络地址信息。,下一页,上一页,8.5 RMON MIB, 过滤(filter):允许监视器观测与一过滤器相匹配的数据包。监视器可以捕获所有通过过滤器的数据包,或者简单地记下基于这些数据包的统计。 包捕获(packet capture):控制数据被发往管理控制台的方式。 事件(event):一个关于由RMON代理产生的所有事件的表。,下一页,上
12、一页,8.5 RMON MIB,8.5.2 统计组 该组由一个表(如图8-2所示)组成,每一个监视接口(子网)对应一项。统计用计数器的形式表示,在一个有效行创建时其值从0开始。 etherStatsIndex:该行的整数索引。 etherStatsDataSource:标识作为该行数据来源的接口,也就是以太子网。 etherStatsDropEvents:由于缺少资源而引起监视器丢弃数据包事件的计数。,下一页,上一页,8.5 RMON MIB,8.5.3 历史组 历史组用于定义一个或多个监视器接口的采样功能,它由两个表(如图8-3所示)组成:一个是historyControlTable(历史控
13、制表),它详细说明了接口及其采样功能;另一个是etherHistoryTable(以太历史表),用于记录数据。后者是针对以太网的媒体专有表。,下一页,上一页,8.5 RMON MIB,historyControlTable包括下列对象 historyControlIndex:专门识别历史控制表中一行的整数,这一整数也用于识别etherHistoryTable中相对应的行。 historyControlDataSource:指定作为该行定义的采样的数据源的接口,也就是子网。 historyConrolBucketsRequested:请求的离散采样间隔的数目,在这段时间里,数据被存储在与该项相关
14、的媒体特定数据表中。,下一页,上一页,8.5 RMON MIB,historyControlBucketsGranted:离散采样间隔的实际数目,数据是在这段时间内被存储的。 historyControlInterval:对每一存储桶,数据被采样的间隔,以秒为单位。 etherHistoryTable包括下面这些对象: etherHistoryIndex:etherHistoryTable通过该索引与相应historyControlTable行对应,该索引的特定数值标识的数据项是historyControlIndex的同一数值标识的控制项的采样数据。,下一页,上一页,8.5 RMON MIB,
15、etherHistorySampleIndex:与 historyControlTable同一行相关联的数据项有多个,这些数据项通过该索引识别。 etherHistoryIntervalStart:该采样间隔开始时的sysUpTime值。 historyControlTable的每一行都有一个唯一的 historyControlIndex值。任何两行都不会有相同的historyControlDataSource和 historyControlInterval组合值。,返 回,上一页,8.5 RMON MIB,8.5.4 警报组 警报组用于为网络性能定义一组阈值。如果阈值在相应的方向上被越过,监
16、视器就会产生警报并把警报发往中心控制台。 警报组定义了一种机制,用于防止相对较小的警报反复产生。产生上升警报(rising alarm)事件的规则如下: 在此行成为有效行后,如果第一次采样的值 在上升警报事件产生以后,直到采样值下降到低于上升阈值,并且达到下降阈值,然后重新到达上升阈值的时候,才会产生另一次这样的事件。,下一页,上一页,8.5 RMON MIB,8.5.5 主机组 主机组用于收集有关局域网上特定主机的统计。监视器通过观测数据包中的源和目的MAC地址,获知在局域网上新的主机的情况。对于监视器知道的每一个主机,都维持有一组统计。 主机组由三张表组成:一个控制表(hostContro
17、lTable)和两个数据表(hostTable、hostTimeTable)。,下一页,上一页,8.5 RMON MIB,控制表hostControlTable由以下对象组成: hostControlIndex(主机控制索引):在hostControlTable中,唯一地识别一行的整数。 hostControlDataSource(主机控制数据源):指定作为由该行定义的数据项的数据源的接口,即子网。 hostControlTableSize(主机控制表大小):在hostTable中与此行相关联的行的数目,也是与此行相关联的hostTimeTable中的行的数目。它是一个由监视器设置的只读对象。
18、,下一页,上一页,8.5 RMON MIB,hostControlLastDeleteTime(主机控制最后删除时间):当与此行相关联的hostTable中有一项被删除时,该对象就被设置为当时的sysUpTime值。 hostControlTable和数据表hostTable的关系十分明了,对于hostControlTable中的每一行所指定的一个接口,hostTable对于在此接口上发现的每一个MAC地址都包含一行。 hostTable中的其余对象用于收集进出各个已发现主机的流量的基本统计。,下一页,上一页,8.5 RMON MIB,在hostControlTable中定义了一个新行以后,监
19、视器就开始获取相应接口上的MAC地址。 hostTimeTable包含有与hostTable完全相同的信息,一行对一行,但是hostTimeTable是用创建顺序而不是如后者那样用主机的MAC地址进行索引的。这一数据表有两个重要用途: 在hostTimeTable中与某一给定接口相关联的部分可能很大。 hostTimeTable的组织结构也支持管理站有效地发现一个特定接口的新行,而无需下载整个表。,下一页,上一页,8.5 RMON MIB,8.5.6 最高N台主机组 hostTopN组用于维持对子网上一组主机的统计,这些主机在用某种参数作比较时,位于列表的最高处。例如,可以为在一特定天内传送数
20、据量最大的前10台主机维护一个列表。 该组产生的统计是从主机组的数据来的。在一个采样间隔内,在一个接口上收集的关于一个对象的一组统计被称作一个报告。 hostTopNControlIndex(控制索引):hostTopNControlTable中唯一地标识一行的整数。,下一页,上一页,8.5 RMON MIB,HostTopNHostIndex(主机索引):该值与一个hostControlIndex和一个hostIndex值相匹配。 HostTopNRateBase(速率基础):从hostTable的七个变量中指定一个,作为比较的基础。 hostTopNTable包括下列对象: hostTop
21、NRequest(主机最高N报告):该索引的特定值标识该项报告是关于控制表中哪一项的(由与该对象相同的hostTopNControlIndex值标识)。,下一页,上一页,8.5 RMON MIB,hostTopNIndex(主机最高N索引):在所有与该报告相关联的数据行中唯一地识别该行的索引。每一行代表一个唯一的主机。 HostTopNAddress(主机最高N地址):该主机的MAC地址。 hostTopNRate(主机最高 N速率):在该采样间隔期间,所选中变量的变化量。 准备报告的过程如下:最开始的时候,管理站在控制表中创建一行来指定一个新的报告。,下一页,上一页,8.5 RMON MIB
22、,8.5.7 矩阵组 矩阵组用于记录关于子网上两个主机之间流量的信息,该信息以矩阵形式存储起来。这种组织方法对于检索特定主机之间的流量信息十分有用,例如,用于找出哪些设备对服务器的使用最多。 矩阵组由三个表组成:一个控制表加上两个数据表。,下一页,上一页,8.5 RMON MIB,控制表matrixControlTable由下列对象组成: matrixControlIndex(索引):唯一地识别matrixControlTable中一行的整数。 matrixControlDataSource(数据源):指定作为该行数据源的接口,即子网。 MatrixControlTableSize(大小):在
23、matrixSDTable和marixDSTable中与该行相关联的行的个数,该对象是由监视器设置的只读对象。,下一页,上一页,8.5 RMON MIB,matrixControlLastDeletTime(上次删除时间):和该行相关的一个项从matrixSDTable和matrixDSTable中最后一次被删除时的sysUpTime值。 matrixSDTable用于存储从一特定源主机到一系列目的主机的流量的统计。该表由以下几个对象组成: matrixSDSourceAddress:源MAC地址。 matrixSDDestAddress:目的MAC地址。 matrixSDIndex(索引):
24、该索引指出这一项是关于控制表中的哪一项(具有相同的matrixControlIndex值的控制项)。,下一页,上一页,8.5 RMON MIB,8.5.8 过滤组 过滤组提供了一种方式,通过此方式,管理站可以指导监视器去观测某一特定接口(也就是某一特定子网)上的选定数据包。该组定义的基础是两种类型的过滤器:一种是数据过渡器;另一种是状态过滤器。 数据过滤器使监视器可以根据数据包的位模式(匹配或不匹配)来隔离观测到的数据包;状态过滤器则使得监视器可以根据数据包的状态(有效、CRC错误等)来隔离观测到的数据包。,下一页,上一页,8.5 RMON MIB,在检查过滤组的结构之前,先阐述一些过滤逻辑和
25、通道逻辑的细节。 1. 过滤逻辑 在过滤逻辑的最低层,单个数据过滤器或状态过滤器定义了对于一个数据包的过滤特征。 对于一进来的数据包,需要对此数据包一部分的位模式进行测试。数据包的这一特定部分位于从数据包开始到长为filterPktDataOffset处。对此数据包执行如下操作:,下一页,上一页,8.5 RMON MIB, 测试1:作为第一步测试,数据包必须足够长,这样才能在位移后的数据包内有不少于filterPkt的位数,否则,该数据包在此过滤测试中失败。 测试2:filterPktDataNotMask中每一个设成0值的位,都指示了一个特定位置,在此位置上,数据包部分的相关位和filter
26、PktData相匹配。 测试3:filterPktDataNotMask中每一个设成1值的位,也都指示了一个特定位置,在此位置上,数据包部分的相关位应该与filterPktData不相匹配。,下一页,上一页,8.5 RMON MIB,2. 通道定义 通道由一组过滤定义而成。对于每一观测到的数据包和每一个通道,数据包穿过此通道定义的每一个过滤。 3. 通道操作 channelAcceptType(通道接受类型)的值和这个通道的各个过滤,决定了一给定数据包是否被一通道接受。 4. 过滤组结构 过滤组由两个控制表组成。channelTable的每一行都定义了一个唯一的通道。,下一页,上一页,8.5
27、RMON MIB,8.5.9 包捕获组 包捕获组可用来建立从过滤组的一个通道中捕获数据包的方案。它由两张表组成: bufferControlTable(缓冲控制表),指明缓冲功能的细节;captureBufferTable(捕获缓冲表),用于缓冲数据。 bufferControlTable控制表的每行都定义了一个缓冲,用于捕获和存储来自通道的数据包。,下一页,上一页,8.5 RMON MIB,8.5.10 事件组 事件组支持事件的定义。事件可以由位于MIB别处的条件所触发,而事件又可以触发在MIB其他地方所定义的动作。事件还可以使得信息记录于此组中,并使得监视器发出SNMP陷阱消息。 事件组由
28、一个控制表和一个数据表组成,控制表eventTable包含着事件定义。该表的每一行都包含着一些参数,这些参数描述了在某些条件得到满足时要产生的一个事件。,返 回,上一页,8.6 实际问题,8.6.1 事件捕获过载 RMON的内容是如此的丰富,以致如果网络管理人员配置不当,会产生很大的危险性,很可能会使监视器、管理站和监视器之间的网络以及管理站过载。 最极端的例子是,用户通过配置让管理站在一个定义的通道内检索每一个数据包,或者每一个数据包的头部。如果网络是中等程度的忙碌,这就可能给一个或多个受影响的子网以很大压力。,下一页,8.6 实际问题,一个比较好的替代方法是,在监视器上完成尽可能多的分析,
29、然后把更集中的结果发给管理站。 如果能很好地利用的话,RMON的数据包捕获特色是很有用的。例如,如果监视器在互联网上检测到一个有问题的区域,而且有可能根据猜测把矛头集中于少量的节点或一个特定协议。 虽然管理站可以发出RMON请求,但需要注意涉及的折中问题。复杂过滤可以允许监视器捕获并报告有限数量的数据,这样就可以避免网络过载。,下一页,上一页,8.6 实际问题,8.6.2 硬件平台 当然,每一个用作RMON监视器的平台,都必须支持SNMP。另外,实现所有RMON功能的逻辑,这一点是值得考虑的,也要加上去。平台的选择是很广泛的。 是选择专用平台还是选择非专用平台,取决于给定子网的大小和复杂程度。对于通信量相对较小且不需要100%使用的子网,非专用平台就足够了,且节省费用。,返 回,上一页,图8-1 远程网络监视 (RMON)MIB,返 回,图8-2 RMON统计组,返 回,图8-3 RMON历史组,返 回,