SNMP简介
一、网络性能测量的五项指标
可用性(availability)
响应时间(response time)
网络利用率(network utilization)
网络吞吐量(network throughput)
网络带宽容量(network bandwidth capacity)
1. 可用性
测试网络性能的第一步是确定网络是否正常工作,最简单的方法是使用ping命令。通过向远端的机器发送icmp echo request,并等待接收icmp echo reply来判断远端的机器是否连通,网络是否正常工作。
Ping命令有非常丰富的命令选项,比如-c可以指定发送echo request的个数,-s可以指定每次发送的ping包大小。
网络设备内部一般有多个缓冲池,不同的缓冲池使用不同的缓冲区大小,分别用来处理不同大小的分组(packet)。例如交换机中通常具有三种类型的包缓冲:一类针对小的分组,一类针对中等大小的分组,还有一类针对大的分组。为了测试这样的网络设备,测试工具必须要具有发送不同大小分组的能力。Ping命令的-s就可以使用在这种场合。
2. 响应时间
Ping命令的echo request/reply一次往返所花费时间就是响应时间。有很多因素会影响到响应时间,如网段的负荷,网络主机的负荷,广播风暴,工作不正常的网络设备等等。
在网络工作正常时,记录下正常的响应时间。当用户抱怨网络的反应时间慢时,就可以将现在的响应时间与正常的响应时间对比,如果两者差值的波动很大,就能说明网络设备存在故障。
3. 网络利用率
网络利用率是指网络被使用的时间占总时间(即被使用的时间+空闲的时间)的比例。比如,Ethernet虽然是共享的,但同时却只能有一个报文在传输。因此在任一时刻,Ethernet或者是100%的利用率,或者是0%的利用率。
计算一个网段的网络利用率相对比较容易,但是确定一个网络的利用率就比较复杂。因此,网络测试工具一般使用网络吞吐量和网络带宽容量来确定网络中两个节点之间的性能。
4. 网络吞吐量
网络吞吐量是指在某个时刻,在网络中的两个节点之间,提供给网络应用的剩余带宽。
网络吞吐量可以帮组寻找网络路径中的瓶颈。比如,即使client和server都被分别连接到各自的100MEthernet上,但是如果这两个100M的Ethernet被10M的Ethernet连接起来,那么10M的Ethernet就是网络的瓶颈。
网络吞吐量非常依赖于当前的网络负载情况。因此,为了得到正确的网络吞吐量,最好在不同时间(一天中的不同时刻,或者一周中不同的天)分别进行测试,只有这样才能得到对网络吞吐量的全面认识。
有些网络应用程序在开发过程的测试中能够正常运行,但是到实际的网络环境中却无法正常工作(由于没有足够的网络吞吐量)。这是因为测试只是在空闲的网络环境中,没有考虑到实际的网络环境中还存在着其它的各种网络流量。所以,网络吞吐量定义为剩余带宽是有实际意义的。
5. 网络带宽容量
与网络吞吐量不同,网络带宽容量指的是在网络的两个节点之间的最大可用带宽。这是由组成网络的设备的能力所决定的。
测试网络带宽容量有两个困难之处:在网络存在其它网络流量的时候,如何得知网络的最大可用带宽;在测试过程中,如何对现有的网络流量不造成影响。网络测试工具一般采用packet pairs和packet trains技术来克服这样的困难。
收集网络性能数据的方式
当确定了网络性能的测试指标以后,就需要使用网络测试工具收集相应的性能数据,分别有几个从网络获取数据的方式:
1. 通过snmp协议直接到网络设备中获取,如net-snmp工具
2. 侦听相关的网络性能数据,典型的工具是tcpdump
二、网络管理协议
随着网络的不断发展,规模增大,复杂性增加,简单的网络管理技术已不能适应网络迅速发展的要求。以往的网络管理系统往往是厂商在自己的网络系统中开发的专用系统,很难对其他厂商的网络系统、通信设备软件等进行管理,这种状况很不适应网络异构互联的发展趋势。20世纪80年代初期Internet的出现和发展使人们进一步意识到了这一点。研究开发者们迅速展开了对网络管理的研究,并提出了多种网络管理方案,包括HEMS、SGMP、CMIS/CMIP等。
IAB最初制订的关于Internet管理的发展策略,其初衷是采用跳MP作为暂时的Internet管理解决方案,并在适当的时候转向CMIS/CMIP。SGMP是在NYSERNET和SURANET上开发应用的网络管理工具,而CMIS/CMIP是20世纪80年代中期国际标准化组织(ISO)和CCITT联合制订的网络管理标准。同时,IAB还分别成立了相应的工作组,对这些方案进行适当的修改,使它们更适于Internet的管理。这些工作组随后相应推出了SNMP(Simple NetWork Management Protoc011988)和CMOT(CMIP/CMIS Over TCP/IPl989)等网络管理协议,下面进行简单介绍。
1.SNMP
简单网络管理协议(SNMP)的前身是1987年发布的简单网关监控协议(SGMP)。SGMP给出了监控网关(OSI第三层路由器)的直接手段,SNMP则是在其基础上发展而来。最初,SNMP是作为一种可提供最小网络管理功能的临时方法开发的,它具有以下两个优点:
(1)与SNMP相关的管理信息结构(SMI)以及管理信息库(MIB)非常简单,从而能够迅速、简便地实现;
(2)SNMP是建立在SGMP基础上的,而对于SGMP,人们积累了大量的操作经验。
SNMP经历了两次版本升级,现在的最新版本是SNMPv3。在前两个版本中SNMP功能都得到了极大的增强,而在最新的版本中,SNMP在安全性方面有了很大的改善,SNMP缺乏安全性的弱点正逐渐得到克服。
2.CMIS/CMIP
公共管理信息服务/公共管理信息协议(CMIS/CMIP)是哦OSI提供的网络管理协议簇。CMIS定义了每个网络组成部分提供的网络管理服务,这些服务在本质上是很普通的,CMIP则是实现CMIS服务的协议。
OSI网络协议旨在为所有设备在ISO参考模型的每一层提供一个公共网络结构,而CMIS/CMIP正是这样一个用于所有网络设备的完整网络管理协议簇。
出于通用性的考虑,CMlS/CMIP的功能与结构跟别MP很不相同,SNMP是按照简单和易于实现的原则设计的,而CMIS/CMIP则能够提供支持一个完整网络管理方案所需的功能。
CMIS/CMIP的整体结构是建立在使用ISO网络参考模型的基础上的,网络管理应用进程使用ISO参考模型中的应用层。也在这层上,公共管理信息服务单元(CMISE)提供了应用程序使用CMIP协议的接口。同时该层还包括了两个ISO应用协议:联系控制服务元素(ACSE)和远程操作服务元素(RpSE),其中ACSE在应用程序之间建立和关闭联系,而ROSE则处理应用之间的请求/响应交互。另外,值得注意的是OSI没有在应用层之下特别为网络管理定义协议。
3.CMOT
公共管理信息服务与协议(CMOT)是在TCP/IP协议簇上实现CMIS服务,这是一种过渡性的解决方案,直到OSI网络管理协议被广泛采用。
CMIS使用的应用协议并没有根据CMOT而修改,CMOT仍然依赖于CMISE、ACSE和ROSE协议,这和CMIS/CMIP是一样的。但是,CMOT并没有直接使用参考模型中表示层实现,而是要求在表示层中使用另外一个协议--轻量表示协议(LPP),该协提供了目前最普通的两种传输层协议--TCP和UDP的接口。
CMOT的一个致命弱点在于它是一个过渡性的方案,而没有人会把注意力集中在一个短期方案上。相反,许多重要厂商都加入了SNMP潮流并在其中投入了大量资源。事实上,虽然存在CMOT的定义,但该协议已经很长时间没有得到任何发展了。
4.LMMP
局域网个人管理协议(LMMP)试图为LAN环境提供一个网络管理方案。LMMP以前被称为IEEE802逻辑链路控制上的公共管理信息服务与协议(CMOL)。由于该协议直接位于IEEE802逻辑链路层(LLC)上,它可以不依赖于任何特定的网络层协议进行网络传输。
由于不要求任何网络层协议,LMMP比CMIS/CMIP或CMOT都易于实现,然而没有网络层提供路由信息,LMMP信息不能跨越路由器,从而限制了它只能在局域网中发展。但是,跨越局域网传输局限的LMMP信息转换代理可能会克服这一问题。
三 简单网络管理协议(SNMP)
简单网络管理协议(SNMP)是最早提出的网络管理协议之一,它一推出就得到了广泛的应用和支持,特别是很快得到了数百家厂商的支持,其中包括IBM,HP,SUN等大公司和厂商。目前SNMP已成为网络管理领域中事实上的工业标准,并被广泛支持和应用,大多数网络管理系统和平台都是基于SNMP的。
一、SNMP概述
SNMP的前身是简单网关监控协议(SGMP),用来对通信线路进行管理。随后,人们对SGMP进行了很大的修改,特别是加入了符合Internet定义的SMI和MIB:体系结构,改进后的协议就是著名的SNMP。SNMP的目标是管理互联网Internet上众多厂家生产的软硬件平台,因此SNMP受Internet标准网络管理框架的影响也很大。现在SNMP已经出到第三个版本的协议,其功能较以前已经大大地加强和改进了。
SNMP的体系结构是围绕着以下四个概念和目标进行设计的:保持管理代理(agent)的软件成本尽可能低;最大限度地保持远程管理的功能,以便充分利用Internet的网络资源;体系结构必须有扩充的余地;保持SNMP的独立性,不依赖于具体的计算机、网关和网络传输协议。在最近的改进中,又加入了保证SNMP体系本身安全性的目标。
另外,SNMP中提供了四类管理操作:get操作用来提取特定的网络管理信息;get-next操作通过遍历活动来提供强大的管理信息提取能力;set操作用来对管理信息进行控制(修改、设置);trap操作用来报告重要的事件。
二、SNMF管理控制框架与实现
1.SNMP管理控制框架
SNMP定义了管理进程(manager)和管理代理(agent)之间的关系,这个关系称为共同体(community)。描述共同体的语义是非常复杂的,但其句法却很简单。位于网络管理工作站(运行管理进程)上和各网络元素上利用SNMP相互通信对网络进行管理的软件统统称为SNMP应用实体。若干个应用实体和SNMP组合起来形成一个共同体,不同的共同体之间用名字来区分,共同体的名字则必须符合Internet的层次结构命名规则,由无保留意义的字符串组成。此外,一个SNMP应用实体可以加入多个共同体。
SNMP的应用实体对Internet管理信息库中的管理对象进行操作。一个SNMP应用实体可操作的管理对象子集称为SNMP MIB授权范围。SNMP应用实体对授权范围内管理对象的访问仍然还有进一步的访问控制限制,比如只读、可读写等。SNMP体系结构中要求对每个共同体都规定其授权范围及其对每个对象的访问方式。记录这些定义的文件称为“共同体定义文件”。
SNMP的报文总是源自每个应用实体,报文中包括该应用实体所在的共同体的名字。这种报文在SNMP中称为“有身份标志的报文”,共同体名字是在管理进程和管理代理之间交换管理信息报文时使用的。管理信息报文中包括以下两部分内容:
(1)共同体名,加上发送方的一些标识信息(附加信息),用以验证发送方确实是共同体中的成员,共同体实际上就是用来实现管理应用实体之间身份鉴别的;
(2)数据,这是两个管理应用实体之间真正需要交换的信息。
在第三版本前的SNMP中只是实现了简单的身份鉴别,接收方仅凭共同体名来判定收发双方是否在同一个共同体中,而前面提到的附加倍息尚未应用。接收方在验明发送报文的管理代理或管理进程的身份后要对其访问权限进行检查。访问权限检查涉及到以下因素:
(1)一个共同体内各成员可以对哪些对象进行读写等管理操作,这些可读写对象称为该共同体的“授权对象”(在授权范围内);
(2)共同体成员对授权范围内每个对象定义了访问模式:只读或可读写;
(3)规定授权范围内每个管理对象(类)可进行的操作(包括get,get-next,set和trap);
(4)管理信息库(MIB)对每个对象的访问方式限制(如MIB中可以规定哪些对象只能读而不能写等)。
管理代理通过上述预先定义的访问模式和权限来决定共同体中其他成员要求的管理对象访问(操作)是否允许。共同体概念同样适用于转换代理(Proxy agent),只不过转换代理中包含的对象主要是其他设备的内容。
2.SNMP实现方式为了提供遍历管理信息库的手段,SNMP在其MIB中采用了树状命名方法对每个管理对象实例命名。每个对象实例的名字都由对象类名字加上一个后缀构成。对象类的名字是不会相互重复的,因而不同对象类的对象实例之间也少有重名的危险。
在共同体的定义中一般要规定该共同体授权的管理对象范围,相应地也就规定了哪些对象实例是该共同体的“管辖范围”,据此,共同体的定义可以想象为一个多叉树,以词典序提供了遍历所有管理对象实例的手段。有了这个手段,SNMP就可以使用get-next操作符,顺序地从一个对象找到下一个对象。get-next(object-instance)操作返回的结果是一个对象实例标识符及其相关信息,该对象实例在上面的多叉树中紧排在指定标识符;bject-instance对象的后面。这种手段的优点在于,即使不知道管理对象实例的具体名字,管理系统也能逐个地找到它,并提取到它的有关信息。遍历所有管理对象的过程可以从第一个对象实例开始(这个实例一定要给出),然后逐次使用get-next,直到返回一个差错(表示不存在的管理对象实例)结束(完成遍历)。
由于信息是以表格形式(一种数据结构)存放的,在SNMP的管理概念中,把所有表格都视为子树,其中一张表格(及其名字)是相应子树的根节点,每个列是根下面的子节点,一列中的每个行则是该列节点下面的子节点,并且是子树的叶节点,如下图所示。因此,按照前面的子树遍历思路,对表格的遍历是先访问第一列的所有元素,再访问第二列的所有元素……,直到最后一个元素。若试图得到最后一个元素的“下一个”元素,则返回差错标记。
SNMP树形表格结构示意图
SNMP中各种管理信息大多以表格形式存在,一个表格对应一个对象类,每个元素对应于该类的一个对象实例。那么,管理信息表对象中单个元素(对象实例)的操作可以用前面提到的get-next方法,也可以用后面将介绍的get/set等操作。下面主要介绍表格内一行信息的整体操作。
(1)增加一行:通过SNMP只用一次set操作就可在一个表格中增加一行。操作中的每个变量都对应于待增加行中的一个列元素,包括对象实例标识符。如果一个表格中有8列,则set操作中必须给出8个操作数,分别对应8个列中的相应元素。
(2)删除一行:删除一行也可以通过SNMP调用一次set操作完成,并且比增加一行还简单。删除一行只需要用set操作将该行中的任意一个元素(对象实例)设置成“非法”即可。但该操作有一个例外:地址翻译组对象中有一个特殊的表(地址变换表),该表中未定义一个元素的“非法”条件。因此,SNMP中采用的办法是将该表中的地址设置成空串,而空字符串将被视为非法元素。
至于删除一行时,表中的一行元素是否真的在表中消失,则与每个设备(管理代理)的具体实现有关。因此,网络管理操作中,运行管理进程可能从管理代理中得到“非法”数据,即已经删除的不再使用的元素的内容,因此管理进程必须能通过各数据字段的内容来判断数据的合法性。
三 、SNMP的工作原理
RFC1157描述了SNMP中所用的代理/管理站模型。一个SNMP代理是这样的一个软件,它能够回答来自SNMP管理站如网络管理系统的关于MIB中定义信息的各种查询,一个提供MIB的信息给管理站的网络设备都有一个SNMP代理。要使这种代理/管理站模式能够正常工作,代理和管理站必须使用同样的语言。SNMP代理和管理站通过标准消息通信,这些消息中的每一个都是一个单个的包。由此,SNMP使用UDP(用户数据报协议)作为第4层即传输层协议。UDP使用无连接的服务,因此SNMP不需要依靠在代理和管理站之间保持连接来传输消息。SNMP有5种消息类型:
·Get-Request
·Get-Response
·Get-Next-Request
·Set-Request
·Trap
前面的3个操作是由管理进程向代理进程发出的。后面两个是代理进程发给管理进程的 图2描述了这5种操作。
SNMP体系结构
- 所有在应用层下的TCP/IP层都有它自己的SNMP结构
- 硬件制造商可以在它的产品中实现了相应的管理结构
- 从下图可以看到有许多MIB,但服务器只有一台
服务器处理过程
- 基站发送的请求仅有两种类型,取值和赋值
- 一个请求可以进行多个操作
总结:
SNMP是一种易于实现的基本的网络管理工具,它能够满足短期的管理要求。因为基于OSI的管理协议现在进展缓慢,所以它起到了一个重要的补充作用。SNMP协议提供了用于定义网络信息和框架和用于交换信息的协议标准。SNMP模型引入了管理器和代理的概念,管理器指的是以人类管理员身份负责所有网络(或部分网络)的软件。代理指的被管理设备中的软件,它用以完成管理器所需要进行的局部管理和应急通知管理器的功能。
本文所用的缩略语如下:
ISO
(International Standardization Organization)国际标准化组织
OSI(Open System
Interconnection)开放系统互连
SNMP
(Simple Network Management Protocol)简单网络管理协议
SGMP(Simple Gateway
Monitoring Protocol)简单网关监控协议
MIB
(Management Information Base)管理信息库
CMIS/CMIP(Common Management Information
Service/Protocol)公共管理信息服务/协议
RMON
(Remote MONitoring)远程监控
IETF(Internet Engineering
Task Force)因特网工程任务组
QoS
(Quality of Service)服务质量
SLA(Subscriber Line
Administration)用户线路管理