千兆位以太网交换机关于远程网络监控代理的讲解

www.net130.com     日期:2012-5-4    浏览次数:

千兆位以太网交换机关于远程网络监控代理的讲解,对于千兆位以太网交换机RMON代理问题,大家都很感兴趣。在向大家详细介绍如何运用远程网络监控代理之前,首先让大家了解下一般RMON的基本知识,然后比较下面几种方法的优劣。

远程网络监控(RMON)是对SNMP最重要的增强。本文介绍了在Nucleus嵌入式实时操作系统下,一个千兆位以太网交换机RMON代理的实现。在讨论了千兆位以太网交换机网络管理软件的结构基础上,对RMON代理的软硬件平台进行了简单介绍,并对RMON代理的统计、历史、事件、警报四组功能实现的任务流程进行详细讨论。

目前,计算机网络中使用最广泛的网络管理协议是简单网络管理协议SNMP。远程网络监控RMON是对SNMP最重要的增强。它采用典型的客户机/服务器模型,客户端为网络管理者(管理站),RMON代理则扮演服务器的角色。管理站对RMON代理进行数据收集配置;代理收集本网段的数据,并将重要信息和事件报告给管理站。


 

RMON代理的实现有两种方式:

使用一个具有完整的软硬件系统的独立设备作为远程监视器;嵌入到网络中的关键设备如集线器、千兆位以太网交换机中,称为嵌入式代理。嵌入式代理作为系统功能的一部分,使用专用于监视功能的处理器和内存资源。

当前计算机网络的规模越来越大,应用越来越广泛,对于网络可管理性的要求也就越来越高。网络管理者必须对网络的活动有全面、及时的掌握。于是,在网络重要节点布置能够智能地采集数据的RMON代理是非常重要的。现在越来越多的网络设备中加入嵌入式RMON代理模块,用以对网络管理提供强大的支持。以下就千兆位以太网交换机中的嵌入式RMON代理的设计与实现进行讨论。

一、系统接口

本文设计的嵌入式RMON代理是千兆位以太网交换机网络管理软件的一个模块,它需要自下而上分层次地和以下模块协同工作。

◆以太网底层驱动

RMON代理的工作基本上是对网段上数据包的监测。网络底层的工作由端口控制芯片完成,通过底层驱动程序为上层软件提供两种接口:获取数据包和获取以太网统计计数。

◆SNMP,UDP,IP

RMON只是对SNMP的增强,一个基本的SNMP代理及SNMP下的各层协议都是必不可少的。RMON与SNMP通过MIB进行交互,管理站对RMON代理的配置和对代收集的数据的获取都是通过SNMP完成的。当某些异常情况发生时,代理需要主动向管理站报告,因此SNMP还要提供发送SNMP陷阱(Trap)消息的接口。

◆管理信息库

为实现RMON功能,管理信息库应包含MIBII所定义的各个对象。RMON所使用的MIB对象必须是SNMP能够识别的,管理信息库为SNMP和RMON提供读写的接口。

二、底层硬件支持与操作系统

RFC1757定义了RMON的九组功能及相应的MIB结构。本文设计的嵌入式RMON代理实现统计、历史、警报和事件四组功能,是利用Galileo Techniology的千兆位以太网交换端口控制芯片GT-48320A,在嵌入式操作系统Nucleus Plus上开发的。

GT-48320A提供对RMON这基本四组功能的支持,在它的以太网维护有一套32位MIB计数器,对经过该端口的以太网汉量进行统计。这些计数器在GT-48320A的只读寄存Port Counter Block中,地址为0x0100-0x0163。

可以根据地址通过芯片定义的LW-Wire消息向GT-48320A发出读取计数器请求,GT-48320A以Block-Write消息将所请求的计数器值返回。获取计数器值的具体操作由底层驱动程序实现。

GT-48320A提供两种读取数据模式,通过芯片寄存器Global-Control的MIBCrMode位(Global-Control<23>)设定:该位置0时,数据被读取后就被清零;置1时,数据被读取后不清除。考虑到计数器容量的限制,我们采用清零方式。这样,定时读取这些计数器的值,将它们累积起来,就可以得到实现统计、历史、事件、警报四组功能所需的数据。

Nucleus Plus是专门为嵌入式系统的开发而设计的多任务实时操作系统。除提供具有抢先机制的任务调度外,Nucleus Plus还提供任务间通信、任务同步、定时和内存管理。Nucleus Plus通常作为一个C的库,在它上面开发的实时应用程序与该库链接,生成的对象下载到目标主机中成为嵌入式系统。 

从软件开发的角度来看,Nucleus Plus减少了任务的相互依赖,增强了模块性,缩短了开发时间,十分适合作为嵌入式RMON代理的操作系统平台。RMON代理的各组功能由若干Nucleus任务构成。各任务及其需要使用的系统资源,如事件组和消息队列等都在应用程序初始化时创建。

三、RMON各组功能的实现

◆统计组

统计组的功能是维护代理监视的每一子网的基本统计信息,需要定时获取端口芯片寄存器的统计计数值。因此,统计组需用使用一个定时器和一个Nucleus事件组。定时器周期为读寄存器的周期。定时器计时到期时,执行定时器完成函数,使用系统函数NU-Set-Events()向事件组发送一个事件,通知统计任务开始对这一周期的数据进行采集。

统计组任务执行以下操作:

在任务初始化时,要将寄存器Global-Control置0,并执行一次对所有计数器的读操作以将它们清零。任务初始化时还要创建所需的定时器,创建定时器的系统函数为NU-CreateTimer()。然后循环执行千兆位以太网交换机以下操作:
◆调用系统的NU-Retrieve-Events()函数,从事件组接收事件。如果没有事件,任务将阻塞于该操作。
◆读取MIB统计表每一行的etherStatsDataSource值,获知要监视哪些端口。
◆调用底层驱动接口函数,读入所需的被监视端口寄存器中MIB计数器的值。
◆将数据累加写入MIB相应的统计组变量中。

由于GT-48320A的MIB计数器为32位,因此统计以太网流量的计数器只能统计232字节,即32Gbit。对于一个千兆位端口,若端口流量达到1Gbit/s,该计数器在32秒后就会溢出。因此可以将读取MIB计数器的间隔缺省值取为30秒。

◆历史组

历史组的功能是周期性地对以太网一个或多个端口的统计样本进行采样,得到各时间段内的网络信息,并将这些历史统计保存起来。RFC1757中定义历史组的MIB,由两个表组成:历史控制表,其每一行定义一个对特定端口以特定采样间隔进行采样的功能;历史数据表,其用于记录采样得到的数据,每一样本被收集后,储存于历史数据表新的一行中。

历史数据表采用环行桶结构,当已经保存的历史数据的行数达到最大值后,新的数据将覆盖最老的一行。在具体实现中,管理站通过SNMP在历史控制表中设置所需的历史采样功能,RMON代理要做的工作便是根据历史控制表完成统计数据的采样,并将结果保存于历史数据表中。使用如下数据结构的链表作为历史参数表,保存已定义的每一历史统计任务的有关信息。
struct HISTORY-TEMP
{
struct HISTORY-TEMP * next;
UNSIGNED history-indes; / * 该历史序号 * /
UNSIGNED sample-indes; / * 上次采样序号 * /
UNWIGNED buckets-requested; / * 该历史请求保存多少行采样 * /
UNSIGNED time-start; / * 记录采样间隔开始时间(秒) * /
UNSIGNED octets; / * 记录采样间隔开始时的统计数据 * /
UNSIGNED pkts;
UNSIGNED broadcastpkts;
UNSIGNED multicastpkts;
UNSIGNED crcerror;
UNSIGNED undersizepkts;
UNSIGNED oversizepkts;
UNSIGNED fragment;
UNSIGNED jabbers;
UNSIGNED collisions;
UNSIGNED timer; / * 该历史所用定时器 * /

本新闻共3页,当前在第1页  1  2  3  

分享道
相关新闻