1、第5章远程网络监视 第5章 远程网络监视5.1 RMON的基本概念的基本概念 5.2 RMON的管理信息库的管理信息库 5.3 RMON2管理信息库管理信息库 5.4 RMON2的应用的应用 习题习题 第5章远程网络监视 5.1 RMON的基本概念的基本概念 MIB-2能提供的只是关于单个设备的管理信息,例如进出某个设备的分组数或字节数,而不能提供整个网络的通信情况。通常用于监视整个网络通信情况的设备叫做网络监视器(Monitor)或网络分析器(Analyzer)、探测器(Probe)等。监视器观察LAN上出现的每个分组,并进行统计和总结,给管理人员提供重要的管理信息,例如出错统计数据(残缺分
2、组数冲突次数)、性能统计数据(每秒钟提交的分组数分组大小的分布情况)等。监视器还能存储部分分组,供以后分析用。监视器也根据分组类型进行过滤并捕获特殊的分组。通常每个子网配置一个监视器并与中央管理站通信,因此也称其为远程监视器。远程网络监视的配置如图5.1所示。第5章远程网络监视 图5.1 远程网络监视的配置 第5章远程网络监视 5.1.1 远程网络监视的目标远程网络监视的目标RMON定义了远程网络监视的管理信息库,以及管理站与远程监视器之间的接口。一般来说,RMON的目标就是监视子网范围内的通信,从而减少管理站和被管理系统之间的通信负担。更具体地说,RMON有下列目标:离线操作。必要时管理站可
3、以停止对监视器的轮询,有限的轮询可以节省网络带宽和通信费用。即使不受管理站查询,监视器也要持续不断地收集子网故障、性能和配置方面的信息,统计和积累数据,以便管理站查询时提供请求的管理信息。另外,在网络出现异常情况时监视器要及时报告管理站。第5章远程网络监视 主动监视。如果监视器有足够的资源,通信负载也容许,监视器可以连续地或周期地运行诊断程序,收集并记录网络性能参数,在子网出现失效时通知管理站,给管理站提供有用的诊断信息。问题检测和报告。如果主动监视消耗网络资源太多,监视器也可以被动地获取网络数据。可以配置监视器,使其连续观察网络资源的消耗情况,记录随时出现的异常条件(例如网络拥塞),并在出现
4、错误时通知管理站。第5章远程网络监视 提供增值数据。监控器可以分析收集到的子网数据,从而减轻了管理站的计算任务。例如监视器可以分析子网的通信情况,计算出哪些主机通信最多,哪些主机出错最多等。这些数据的收集和计算由监视器来做,比由远处的管理站来做更有效。多管理站操作。一个互联网可能有多个管理站,这样可以提高可靠性,或者分布地实现各种不同的管理功能。监视器可以配置得能够并发地工作,为不同的管理站提供不同的信息。不是每一个监视器都能实现所有这些目标,但是RMON规范提供了实现这些目标的基础结构。第5章远程网络监视 5.1.2 表管理原理表管理原理1.表结构表结构在RMON规范中增加了两种新的数据类型
5、,以ASN.1表示如下:OwnerString:=DisplayString,EntryStatus:=INTEGERvalid(1),createRequest(2),underCreation(3),invalid(4)在RFC 1212规定的管理对象宏定义中,DisplayString被定义为长255个字节的OCTET STRING类型,这里又给这个类型赋予另外一个名字OwnerString,从而赋予了新的语义。RFC 1757把这些定义叫做文本约定(Textual Convention),其用意是增强规范的可读性。第5章远程网络监视 图5.2 RMON表的定义 第5章远程网络监视 rm
6、1ControlIndex:惟一地标识rm1ControlTable中的一个控制行,该控制行定义了rm1DataTable中一个数据行集合。集合中的数据行由rm1ControlTable的相应行控制。rm1ControlParameter:这个控制参数应用于控制行控制的所有数据行。通常表有多个控制参数,而这个简单的表只有一个参数。rm1ControlOwner:该控制行的主人或所有者。rm1ControlStatus:该控制行的状态。第5章远程网络监视 数据表由rm1DataControlIndex和rm1DataIndex共同索引。Rm1DataControlIndex的值与控制行的索引值r
7、m1ControlIndex相同,而rm1DataIndex的值唯一地指定了数据行集合中的某一行。图5.3给出了这种表的一个实例。图中的控制表有3行,因而定义了数据表的3个数据行集合,例如数据表中所有rm1DataControlIndex的值为2的行都由控制表的第2行控制,数据表中所有rmlDataControlIndex的值为3的行都由控制表的第3行控制。控制表第1行的所有者是monitor,按照约定这是指代理本身。第5章远程网络监视 图5.3 RMON表的实例 rm1ControlTablerm1ControlIndexrm1ControlOwnerrm1ControlParameter
8、rm1ControlStatus12352619monitormanager alphamanager betavalidvalidvalid12222233112345124696357793869226rm1DataControlIndexrm1DataTablerm1DataIndexrm1DataValue第5章远程网络监视 2.2.增加行增加行管理站用Set命令在RMON表中增加新行,并遵循下列规则:管理站用SetRequest生成一个新行,如果新行的索引值与表中其他行的索引值不冲突,则代理产生一个新行,其状态对象的值为createRequest(2)。新行产生后,由代理把状态对象的
9、值置为underCrteation(3)。对于管理站没有设置新值的列对象,代理可以置为默认值,或者让新行维持这种不完整、不一致状态,这取决于具体的实现。第5章远程网络监视 新行的状态值保持为underCreation(3),直到管理站产生了所有要生成的新行。这时由管理站置每一新行状态对象的值为valid(1)。如果管理站要生成的新行已经存在,则返回一个错误。以上算法的效果就是,在多个管理站请求产生同一概念行时,仅最先到达的请求成功,其他请求失败。另外,管理站也可以把一个已存在的行的状态对象的值由invalid改写为valid,恢复旧行的作用,这等于产生了一个新行。第5章远程网络监视 3.3.删
10、除行删除行只有行的所有者才能发出SetRequest PDU,把行状态对象的值置为invalid(4),这样就删除了行。这是否意味着物理删除取决于具体的实现。第5章远程网络监视 4.4.修改行修改行首先置行状态对象的值为invalid(4),然后用SetRequest PDU改变行中其他对象的值。图5.4给出了行状态的变化情况,图中的实线是管理站的作用,虚线是代理的作用。第5章远程网络监视 图5.4 行状态的转换 createRequest不存在underCreatevalidinvalid第5章远程网络监视 5.1.3 5.1.3 多管理站访问多管理站访问RMON监视器应允许多个管理站并发地
11、访问。当多个管理站访问时可能出现下列问题:多个管理站对资源的并发访问可能超过监视器的能力。一个管理站可能长时间占用监视器资源,使得其他站得不到访问。占用监视器资源的管理站可能崩溃,然而没有释放资源。RMON控制表中的列对象Owner规定了表行的所属关系。所属关系有以下用法,可以解决多个管理站并发访问的问题:第5章远程网络监视 管理站能认得自己所属的资源,也知道自己不再需要的资源。网络操作员可以知道管理站占有的资源,并决定是否释放这些资源。一个被授权的网络操作员可以单方面地决定是否释放其他操作员保有的资源的问题。如果管理站经过了重启动过程,则它应该首先释放不再使用的资源。第5章远程网络监视 5.
12、2 RMON的管理信息库的管理信息库 RMON规范定义了管理信息库RMON MIB,它是MIB-2下面的第16个子树。RMON MIB分为10组,如图5.5所示。存储在每一组中的信息都是监视器从一个或几个子网中统计和收集的数据。这10个功能组都是任选的,但实现时有下列连带关系:实现警报组时必须实现事件组。实现最高N台主机组时必须实现主机组。实现捕获组时必须实现过滤组。第5章远程网络监视 图5.5 RMON MIB子树 第5章远程网络监视 5.2.1 5.2.1 以太网的统计信息以太网的统计信息1.1.统计组统计组统计组提供一个表,该表每一行表示一个子网的统计信息。其中的大部分对象是计数器,记录
13、监视器从子网上收集到的各种不同状态的分组数。统计组的所有对象表示在图5.6中,其中两个不是计数器类型的变量解释如下。第5章远程网络监视 图5.6 RMON统计组 第5章远程网络监视 etherStatsIndex(1):整数类型,表项索引,每一表项对应一个子网接口。etherStatsDataSource(2):类型为对象标识符,表示监视器接收数据的子网接口。这个对象的值实际上是MIB-2接口组中的变量ifIndex的实例。例如,若该表项对应1号接口,则etherStatsDataSource的值是ifIndex.1,这样就把统计表与MIB-2接口组联系起来了。图5.6中的对准错误是指非整数字
14、节的分组。第5章远程网络监视 这 个 组 只 有 3 个 变 量 是 可 读/写 的,即etherStatsDropEvents、etherStatsOwer和etherStatsStatus。为这3个变量设置不同的值,监视器就可以从不同的子网接口收集同样的信息。显然,这些子网必须是以太网。把统计组与MIB-2接口组比较后会发现,有些数据是重复的。但是统计组提供的信息分类更详细,而且是针对以太网特点设计的。把统计组与dot3统计表比较后发现,也有些数据是相同的,但是统计的角度不一样。dot3统计表收集单个系统的信息,而统计组收集的是关于整个子网的统计数据。第5章远程网络监视 2.2.历史组历史
15、组历史组存储的是以固定间隔取样所获得的子网数据。该组由历史控制表和历史数据表组成。控制表定义被取样的子网接口编号、取样间隔大小以及每次取样数据的多少,而数据表则用于存储取样期间获得的各种数据。这个表的细节画在图5.7中,并加上了注释。第5章远程网络监视 图5.7 RMON历史组 history(rmon 2)historyControlTable(1)etherHistoryTable(2)historyControlTable(1)historyControlEntry(1)historyControlIndex(1)索引historyControlDataSource(2)被采样接口编号h
16、istoryControlBucketsRequested(3)请求的吊桶数(默认值为50)historyControlBucketsGranted(4)实际得到的吊桶数historyControlInterval(5)采样间隔长度(默认值为1800秒)historyControlOwner(6)historyControlStatus(7)etherHistoryTble(2)etherHistoryEntry(1)etherHistoryIndex(1)索引,与historyControlIndex相同etherHistorySampleIndex(2)索引,惟一标识一个样品etherHi
17、storyIntervalStart(3)采样开始时sysUpTime的值etherHistoryDrapEvents(4)因资源不足而丢弃的分组数etherHistoryOctets(5)接收到的字节总数etherHistoryPkts(6)接收到的分组总数etherHistoryBroadcastPkts(7)接收到的广播分组数etherHistoryMulticastPkts(8)接收到的组播分组数etherHistoryCRCAlignErrors(9)接收到的CRC出错或有对准错误的分组数etherHistoryUndersizePkts(10)不足64字节的分组数etherHist
18、oryOversizePkts(11)大于1518字节的分组数etherHistoryFragments(12)不足64字节且CRC出错或有对准错误的分组数etherHistoryJabbers(13)大于1518字节且CRC出错或有对准错误的分组数etherHistoryCollisions(14)冲突次数etherHistoryUtilization(15)表示子网利用率第5章远程网络监视 历史控制表(History Control Table)定义的变量historyControlInterval表示取样间隔长度,取值范围为13600秒,默认值为1800秒。变量historyContro
19、lBucketsGranted表示可存储的样品数,默认值为50。如果都取默认值,则每1800秒(30分钟)取样一次,每个样品记录在数据表的一行中,只保留最近的50行。第5章远程网络监视 数据表中包含与以太网统计表类似的计数器,提供关于各种分组的计数信息。与统计表的区别是这个表提供一定时间间隔之内的统计结果,这样可以进行一些与时间有关的分析,例如可以计算子网利用率变量etherHistoryUtilization。如果计算出取样间隔(Interval)期间收到的分组数Packets和字节数Octets,则子网利用率可计算如下:710Interval8Octets64)(96PacketsnUti
20、lizatio其中107表示数据速率为10 Mb/s。以太网的帧间隔为96比特,帧前导字段64比特,因此每个帧有96+64比特的开销。第5章远程网络监视 历史组控制表和数据表的关系参见图5.8。控制表每一行有一个惟一的索引值,而各行的变量historyControlDataSource和historyControlInterval的组合值都不相同。这意味着对一个子网可以定义多个取样功能,但每个功能的取样区间应不同。例如RMON规范建议,对每个被监视的接口至少应有两个控制行,一个行定义30秒的取样周期,另一个行定义30分钟的取样周期。短周期用于检测突发的通信事件,而长周期用于监视接口的稳定状态。
21、第5章远程网络监视 图5.8 历史组控制表与数据表的关系 第5章远程网络监视 从图5.8可以看出,对应第i个(1iK)控制行有Bi个数据行,这里Bi是控制变量historyControlBucketsGranted的值。一般来说,变量historyControlBucketsGranted的值由监视器根据资源情况分配,但应与管理站请求的值historyControlBucketsRequested相同或接近。每一个数据行(也叫做吊桶Bucket)保存一次取样中得到的数据,这些数据与统计表中的数据有关。例如,历史表中的数据etherHistoryPkts等于统计表中的数据etherStatsPk
22、ts在取样间隔结束时的值减去取样间隔开始时的值之差,如图5.9所示。第5章远程网络监视 图5.9 etherHistoryPkts的值 第5章远程网络监视 当每一个取样间隔开始时,监视器就在历史数据表中产生一行,行索引etherHistoryIndex与对应控制行的historyControlIndex相同,而etherHistorySampleIndex的值则加1。当etherHistorySampleIndex的值增至与historyControlBucketsGranted的值相等时,这一组数据行就当作循环使用的缓冲区,丢弃最老的数据行,保留historyControlBucketsGr
23、anted个最新的数据行。例如图5.8中,第一组已丢弃了X个老数据行,第二组则丢弃了Y个老数据行。第5章远程网络监视 3.3.主机组主机组 主机组收集新出现的主机信息,其内容与接口组相同,参见图5.10。监视器观察子网上传送的分组,根据源地址和目标地址了解网上活动的主机,为每一个新出现(启动)的主机建立并维护一组统计数据。每一个控制行对应一个子网接口,而每一个数据行对应一个子网上的一个主机。这样主机表hostTable的总行数为 kiiNN其中:Ni 为控制表第i行hostControlTableSize的值;k为控制表的行数;N为主机表的行数;i为控制表索引hostControlIndex的
24、值。第5章远程网络监视 图5.10 RMON主机组 第5章远程网络监视 例如在图5.11中,监视器有两个子网接口(k=2)。子网X与接口1相连(对应的 hostControlIndex值=1),有3台主机,因此该行的hostControlTableSize的值为3(N1=3);子网Y与接口 2 相 连,有 两 台 主 机,因 此 对 应 子 网 Y 的 值 是hostControlIndex=2,N2=2。主机数据表hostTable的每一行由主机MAC地址hostAddress和接口号hostIndex共同索引,记录各个主机的通信统计信息。第5章远程网络监视 图5.11 RMON计数器配置例
25、第5章远程网络监视 主机控制表配置好以后,监视器就开始检查各个子网上出现的分组。如果发现有新的源地址出现,就在主机数据表中增加一行,并且把hostControlTableSize的值增加1。理想的情况是监视器能够保存接口上发现的所有主机的数据,但监视器的资源有限,有时不得不按先进先出的顺序循环使用已建立的数据行。当一个新行加入时,同一接口的一个老行被删除,与同一接口有关的行变量hostCreationOrder的值减1,而新行的hostCreationOrder值为Ni。第5章远程网络监视 主机时间表hostTimeTable与hostTable内容相同,但是以发现时间hostTimeCrea
26、tion Order排序的,而不是以主机的MAC排序的。这个表有两种重要应用:如果管理站知道表的大小和行的大小,就可以用最有效的方式把有关的管理信息装入SNMP的Get和GetNext PDU中,这样检索起来更快捷、方便。由于该表是以hostTimeCreationOrder按由小到大的顺序排列的,因而应答的先后顺序不会影响检索的结果。第5章远程网络监视 这个表的结构方便了管理站找出某个接口上最新出现的主机,而不必查阅整个表。主机组的两个数据表实际上是同一个表的两个不同的逻辑视图,并不要求监视器实现两个数据重复的表。另外,这一组的信息与MIB-2的接口组是相同的,但是这个组的实现也许更有效,因
27、为暂时不工作的主机并不占用监视器资源。第5章远程网络监视 4.4.最高最高N N台主机组台主机组这一组记录某种参数最大的N台主机的有关信息,这些信息的来源是主机组。在一个取样间隔中为一个子网上的一个主机组变量收集到的数据集合叫做一个报告。可见,报告是针对某个主机组变量的,是那个变量在取样间隔中的变化率。最高N台主机组提供的是一个子网上某种变量变化率最大的N台主机的信息。这个组包含一个控制表和一个数据表,画在了图5.12中,并加上了注释。第5章远程网络监视 图5.12 RMON最高N台主机组 hostTopN(rmon 5)hostTopNControlTable(1)hostTopNTable
28、(2)hostTopNControlTable(1)hostTopNControlEntry(1)hostTopNTimeRemaining(4)采样剩余时间(秒)hostTopNTable(1)hostTopNEntry(1)hostTopNControlIndex(1)对应一个接口的索引hostTopNHostIndex(2)匹配主机控制表的索引项hostTopNRateBase(3)要采样的变量hostTopNDutation(5)采样间隔(秒)hostTopNRequestedSize(6)请求的N值hostTopNGrantedSize(7)实际N值hostTopNStartTime
29、(8)开始采样的时间hostTopNOwner(9)hostTopNStatus(10)hostTopNReport(1)与控制表索引相同hostTopNIndex(2)表示惟一的主机hostTopNAddress(3)主机MAC地址hostTopNRate(4)采样区间内采样变量变化的数量第5章远程网络监视 变量hostTopNRateBase为整数类型,可取下列值之一:INTEGER hostTopNInPkts(1),hostTopNOutPkts(2),hostTopNInOctets(3),hostTopNOutOctets(4),hostTopNOutErrors(5),hostT
30、opNOutBroadcastPkts(6),hostTopNOutMulticastPkts(7)第5章远程网络监视 hostTopNRateBase定义了要采样的变量,实际上就是主机组中统计的7个变量之一。数据表变量hostTopNRate记录的是上述变量的变化率。报告准备过程如下:开始时管理站生成一个控制行,定义一个新的报告,指示监视器计算一个主机组变量在取样间隔结束和开始时的值之差。取样间隔长度(秒)存储在变量hostTopNDutation和 hostTopNTime Remaining中。在取样开始后,hostTopNDutation保持不变,而hostTopNTimeRemain
31、ing递减,记录采样剩余时间。当剩余时间减到0时,监视器计算最后结果,产生N个数据行的报告。报告由变量hostTopNIndex索引,N个主机以计算的变量值递减的顺序排列。报告产生后管理站以只读方式访问。如果管理站需要产生新报告,则可以把变量hostTopNTimeRemaining置为与hostTopNDutation的值一样,这样原来的报告被删除,又开始产生新的报告。第5章远程网络监视 5.5.矩阵组矩阵组 这个组记录子网中一对主机之间的通信量,信息以矩阵的形式存储。矩阵组表示在图5.13中,并加上了注释。第5章远程网络监视 图5.13 RMON矩阵组 第5章远程网络监视 矩阵组由3个表组
32、成。控制表的一行指明发现主机对会话的子网接口,其中的变量 matrixControlTableSize定义了数据表的行数,而变量 matrixControlLastDeleteTime说明数据表行被删除的时间,与MIB-2的变量sysUpTime相同。如果没有删除行,matrixControlLastDeleteTime的值为0。数据表分成源到目标(SD)和目标到源(DS)两个表,它们的行之间的逻辑关系表示在图5.14中。SD表首先由matrixSDIndex索引,然后由源地址索引,最后由目标地址索引。而DS表首先由matrixDSIndex索引,然后由目标地址索引,最后由源地址索引。第5章远
33、程网络监视 如果监视器在某个接口上发现了一对主机会话,则在SD表中记录两行,每行表示一个方向的通信。DS表也包含同样的两行信息,但是索引的顺序不同。这样,管理站可以检索到一个主机向其他主机发送的信息,也容易检索到其他主机向某一个主机发送的信息。如果监视器发现了一个会话,但是控制表定义的数据行已用完,则监视器需要删除现有的行。标准规定首先删除最近最少使用的行。第5章远程网络监视 图5.14 matrixSDTable表行和matrixDSTable表行之间的逻辑关系 第5章远程网络监视 5.2.2 报警报警RMON报警组定义了一组有关网络性能的门限值,超过门限值时向控制台产生报警事件。显然,这一
34、组必须和事件组同时实现。报警组由一个表组成(见图5.15),该表的一行定义了一种报警:监视的变量采样区间和门限值。第5章远程网络监视 图5.15 RMON报警组 第5章远程网络监视 采样类型分为两种:absoluteValue(1)表示采样值直接与门限值比较;deltaValue(2)表示连续两次的采样值相减后与门限值比较,所以比较的是变化率,叫做增量报警。关于行生效后是否产生报警,alarmStartupAlarm的取值有下面3种。risingAlarm(1):该行生效后第一个采样值上升门限(RisingThreshold),产生警报;fallingAlarm(2):该行生效后第一个采样值下
35、降门限(FallingThreshold),产生警报;risingOrFallingAlarm(3):该行生效后第一个采样值上升门限,或者下降门限,产生警报。第5章远程网络监视 报警组定义了下面的报警机制:(1)如果行生效后的第一个采样值上升门限,而后来的一个采样值变得上升门限时,产生一个上升警报。(2)如果行生效后的第一个采样值上升门限,且alarmStartupAlarm=1 or 3,则产生一个上升警报。(3)如果行生效后的第一个采样值上升门限,且alarmStartupAlarm=2,则当采样值落回上升门限后又变得上升门限时,产生一个上升警报。(4)产生一个上升警报后,除非采样值落回上
36、升门限到达下降门限,并且再一次到达上升门限,将不再产生上升警报。第5章远程网络监视 图5.16 报警示例 第5章远程网络监视 关于增量报警方式(采样类型为deltaValue),RMON规范建议每个周期应采样两次,把最近两次采样值的和与门限比较,这样可以避免漏报超过门限的情况。试看下面的例子:时间(秒)0 10 20 观察的值 0 19 32 增量值 0 19 13如果上升门限是20,则不报警。但是按双重采样规则,每5秒观察一次,则有:时间(秒)0 5 10 15 20 观察的值 0 10 19 30 32 增量值 0 10 9 11 2可见在15秒时连续两次取样的和是20,已达到报警门限,应
37、产生一个报警事件。第5章远程网络监视 5.2.3 过滤和通道过滤和通道过滤组提供一种手段,使得监视器可以观察接口上的分组,通过过滤选择出某种指定的特殊分组。这个组定义了两种过滤器:数据过滤器按位模式匹配,即要求分组的一部分匹配或不匹配指定的位模式;而状态过滤器按状态匹配,即要求分组具有特定的错误状态(有效、CRC错误等)。各种过滤器可以用逻辑运算(AND、OR等)来组合,形成复杂的测试模式。一组过滤器的组合叫做通道(channel)。可以对通过通道测试的分组计数,也可以配置通道使得通过的分组产生事件(由事件组定义),或者使得通过的分组被捕获(由捕获组定义)。通道的过滤逻辑是相当复杂的,下面首先
38、举例说明过滤逻辑。第5章远程网络监视 1.过滤逻辑过滤逻辑我们定义与测试有关的变量:input 被过滤的输入分组 filterPktData 用于测试的位模式 filterPktDataMask 要测试的有关位的掩码 filterPktDataNotMask 指示进行匹配测试或不匹配测试 第5章远程网络监视 下面分步骤进行由简单到复杂的位模式配位测试。(1)测试输入分组是否匹配位模式,这需要进行逐位异或:if(inputfilterPktData=0)filterResult=match;(2)测试输入分组是否不匹配位模式,这也需要逐位异或:if(inputfilterPktData!=0)f
39、ilterResult=mismatch;(3)测试输入分组中的某些位是否匹配位模式,逐位异或后与掩码逐位进行逻辑与运算(掩码中对应要测试的位是1,其余为0):if(inputfilterPktData)&filterPktDataMask=0)filterResult=match;else filterResult=mismatch;第5章远程网络监视(4)测试输入分组中是否某些位匹配测试模式,而另一些位不匹配测试模式。这里要用到变量filterPktDataNotMask。该变量有些位是0,表示这些位要求匹配;有些位是1,表示这些位要求不匹配:relevant_bits_different
40、=(inputfilterPktData)&filterPktDataMask;if(relevant_bits_different&filterPktDataNotMask)=0)filterResult=successful_ match;第5章远程网络监视 作为一个例子,假定我们希望过滤出的以太网分组的目标地址为0 xA5,而源地址不是0 xBB。由于以太网地址是48位,而且前48位是目标地址,后48位是源地址,所以有关变量设置如下:filterPktDataOffset=0 filterPktData=0 x0000000000A50000000000BBfilterPktDataMa
41、sk=0 xFFFFFFFFFFFFFFFFFFFFFFFFfilterPktDataNotMask=0 x000000000000FFFFFFFFFFFF 其中变量filterPktDataOffset表示分组中要测试部分距分组头的距离(其值为0,表示从头开始测试)。第5章远程网络监视 状态过滤逻辑是类似的。每一种错误条件是一个整数值,并且是2的幂。为了得到状态模式,只要把各个错误条件的值相加,这样就把状态模式转换成了位模式。例如,以太网有下面的错误条件:0 分组大于1518字节 1 分组小于64字节 2 分组存在CRC错误或对准错误如果一个分组错误状态值为6,则它有后两种错误。第5章远程网
42、络监视 2.通道操作通道操作通道由一组过滤器定义,被测试的分组要通过通道中有关过滤器的检查。分组是否被通道接受,取决于通道配置中的一个变量:channelAcceptType:=INTEGERacceptMatched(1),acceptFailed(2)如果该变量的值为1,则分组数据和分组状态至少要与一个过滤器匹配,则分组被接受;如果该变量的值为2,则分组数据和分组状态与每一个过滤器都不匹配,则分组被接受。对于channelAcceptType=1的情况,可以用图5.17说明。第5章远程网络监视 图5.17 通道变量channelAcceptType=1的例子 第5章远程网络监视 与通道操作
43、有关的变量是:channelAcceptType 其值和过滤器集合决定是否接受分组;channelMatches (计数器)对接受的分组计数;channelDataControl 控制通道开/关;channelEventStatus 当分组匹配时该变量指示通道是否产生事件,是否被捕获;channelEventIndex 产生的事件的索引。第5章远程网络监视 根据这些变量的值,通道操作逻辑如下(result=1表示分组通过检查,result=0表示分组没有通过检查):if(result=1)&(channelAcceptType=acceptMatched)|(result=0)&(channe
44、lAcceptType=acceptFailed)channelMatches=channelMatches+1;if(channelDataControl=ON)if(channelEventStatus!=eventFired)&(channelEventIndex!=0)generateEvent();if (channelEventStatus=eventReady)channelEventStatus=eventFired;第5章远程网络监视 3.过滤组结构过滤组结构过滤组由两个控制表组成(见图5.18)。过滤表filterTable定义了一组过滤器,通道表channelTable定
45、义由若干过滤器组成的通道。过滤组每一行定义一对数据过滤器和状态过滤器,变量filterChannelIndex说明该过滤器所属的通道。通道组每一行定义一个通道。通道组的有关变量解释如下。channelDataControl:通道开关,控制通道是否工作,可取值on(1)/off(2)。channelTurnOnEventIndex:指向事件组的一个事件,该事件生成时把有关的channelDataControl变量的值由on 变off。当这个变量为0时,不指向任何事件。第5章远程网络监视 channelTurnOffEventIndex:指向事件组的一个事件,该事件生成时把有关的channelDa
46、taControl变量的值由off变 on。当这个变量为0时,不指向任何事件。channelEventIndex:指向事件组的一个事件,当分组通过测试时产生该事件。当这个变量为0时,不指向任何事件。channelEventStatus:事件状态,可取下列值eventReady(1)分组匹配时产生事件,然后值变为eventFired(2)eventFired(2)分组匹配时不产生事件eventAlwaysReady 每一个分组匹配时都产生事件 第5章远程网络监视 图5.18 RMON过滤组 第5章远程网络监视 5.2.4 包捕获和事件记录包捕获和事件记录1.包捕获组包捕获组包捕获组建立一组缓冲区
47、,用于存储从通道中捕获的分组。这个组由控制表和数据表组成,如图5.19所示。第5章远程网络监视 图5.19 RMON包捕获组 第5章远程网络监视 图5.19 RMON包捕获组变量bufferControlFullStatus表示缓冲区是否用完,可以取两个值:spaceAvailable(1)表示尚有存储空间,full(2)表示存储空间已占满。变量bufferControlFullAction表示缓冲区的两种不同用法,取值lockWhenFull(1)表示缓冲区用完时不再接受新的分组,取值wrapWhenFull(2)表示缓冲区作为先进先出队列循环使用。第5章远程网络监视 还有一组参数说明分组在
48、捕获缓冲区中如何存储,以及SNMPGet和GetNext如何从捕获缓冲区提取数据:bufferControlCaptureSliceSize(CS)每个分组可存入缓冲区中的最大字节数 bufferControlDownloadSliceSize(DS)缓冲区中每个分组可以被单个SNMP PDU检索的最大字节数 bufferControlDownloadOffset(DO)SNMP从缓冲区取得的第一个字节距分组头的位移 captureBufferPacketLength(PL)被接收的分组的长度 captureBufferPacketData 存储的分组数据 第5章远程网络监视 设PDL是cap
49、tureBufferPacketData的长度,则下面的关系成立:PDL=MIN(PL,CS)显然,存储在捕获缓冲区中的分组数据既不能大于分组的实际长度,也不能大于缓冲区容许的最大长度。当CS大时,分组可全部进入缓冲区;当PL大时,只有一个分组片存储在缓冲区中。无论是整个分组还是分组片,在缓冲区中都是以字节串(OCTET STRING)的形式存储的。如果这个字节串大于SNMP报文长度,检索时就只能装入一部分。标准提供了两个变量(DO和DS)帮助管理站分次分段检索捕获缓冲区中的数据。变量DO和DS都是可读/写的。通常管理站先设置DO=0,DS=100,可以读出缓冲区的前100个字节。当然管理站也
50、可以得到PL和分组的错误状态。如果有必要,再置DO=100,再检索分组的下一部分。第5章远程网络监视 2.事件组事件组 事件组的作用是管理事件。事件是由MIB中其他地方的条件触发的,事件也能触发其他地方的作用。产生事件的条件在RMON其他组定义,例如报警组和过滤组都有指向事件组的索引项。事件还能使得这个功能组存储有关信息,甚至引起代理进程发送陷入消息。事件组的对象表示在图5.20中。该组分为两个表:事件(event)表和log表,前者定义事件的作用,后者记录事件出现的顺序和时间。事件表中的变量eventType表示事件类型,可以取4个值:none(1)表示非以下3种情况,log(2)表示这类事