1、copyrightActix 2005,Simple Network Management Protocol简单网络管理协议,copyrightActix 2005,SNMP简介SNMP的结构SNMP的功能SNMP与AC的关系SNMP Agent的实现,copyrightActix 2005,SNMP简介,SNMP 是专门设计用于在 IP 网络中管理网络节点(服务器、工作站、路由器、交换机及 AP 等)的一种标准协议,它是一种应用层协议。 SNMP 使网络管理员能够管理网络性能,发现并解决网络问题以及规划网络增长。通过 SNMP 接收告警消息(事件通告),网络管理系统可以获知网络出现问题。,c
2、opyrightActix 2005,SNMP是管理各种基于TCP/IP的网络设的协议。由Agent和NMS(Network Manager System)组成,Agent负责采集和监控各种设备的参数,NMS向Agent发出各种查询或设置请求,Agent根据请求作出相应的处理,并将结果返回给NMS。,router,被管理设备,Agent,NMS,SNMP,switch,ap,copyrightActix 2005,SNMP之NMS,NMS是网络中的管理者,是利用SNMP协议对网络设备进行管理和监视的系统。NMS既可以指一台专门用网络管理的服务器,也可以指某个设备中执行管理功能的一个应用程序。N
3、MS可以向Agent发出请求,查询或修改一个或多个具体的参数值。同时,NMS可以接收Agent主动发送的Trap信息,以获知被管理设备当前的状态。,copyrightActix 2005,SNMP之Agent,Agent是网络设备中的一个应用模块,用于维护被管理设备的信息并响应NMS的请求,把管理数据汇报给发送请求的NMS。Agent接收到NMS的请求信息后,完成查询或修改操作,并把操作结果发送给NMS,完成响应。同时,当设备发生故障或者其他事件(如重启)的时候,Agent会主动发送Trap信息给NMS,通知设备当前的状态变化。,copyrightActix 2005,SNMPv1,SNMPv
4、1定义了五个基本操作(原语)get-request 提取一个或多个参数值get-next-request 提取下一个或多个参数值set-request 设置一个或多个参数值get-response 返回一个或多个参数值trap 发送告警信息前三个操作由NMS发给Agent,后两个操作由Agent发送给NMS。,copyrightActix 2005,SNMP管理进程,SNMP代理进程,get-request,get-response,get-response,get-response,get-next-request,set-request,trap,UDP端口161,UDP端口161,UDP
5、端口161,UDP端口162,copyrightActix 2005,SNMPv2,在v1的基础上又新增了两个基本操作并增加了两个新的MIB:get-bulk-request 可以高效的从代理进程处读取大块的数据,特别适合于读取表格数据inform-request 使一个管理进程向另一个管理进程发出信息新增了SNMPv2 MIB与SNMPv2 M2M MIB,copyrightActix 2005,8,20,版本,共同体,PDU类新,请求ID,错误码,错误索引,Object 1,Value 1,Object 2,Value 2,.,IP首部,UDP首部,公共的SNMP首部,get/set首部,
6、变量绑定,IP数据报,UDP数据报,SNMP数据报,普通SNMP报文Get/Next/SetResponse/v2Trap,版本,团体名称,PDU类型,企业标识,代理IP地址,tarp类型,特定代码,时间戳,对象 1,值 1,.,SNMP有3种报文格式,值得注意的是SNMP报文中各个字段没有固定的长度,v1Trap,copyrightActix 2005,Version,Community,PDU Type,Request ID,Non repeaters,Max repetitions,Object 1,Value 1,Object 2,Value 2,.,Bulk报文,SNMP报文PDU类
7、型及SMI值,copyrightActix 2005,SNMP的结构,基于TCP/IP网络的SNMP包括三个基本部分:管理信息库(Management Information Base),它保存了Agent端所有可以被查询和设置的参数。关于MIB的一套公用结构和表示符号:即SMI (Structure of Management Information),它是ASN.1(Abstract Syntax Notation One)的一个子集。NMS和Agent之间的通信协议,即SNMP。它包括数据报交换的格式(ASN.1)和传输编码(BER)等。,copyrightActix 2005,Agen
8、tA,AgentB,Internet,NMS,SNMP/UDP,SMI,公共MIB,私有MIB,私有MIB,SNMP的结构,UDP,MIB,SNMP协议,SMI,copyrightActix 2005,管理信息库 MIB,任何一个被管理的资源(设备)都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个Agent都有自己的MIB(包括公有和私有的MIB)。MIB也可以看作是NMS和Agent之间的一个接口,通过这个接口,NMS可以对Agent中的每一个被管理对象进行读/写操作,从而达到管理和监控设备的目的
9、。对某个设备的管理可以抽象为对一些OID(Object IDentifier)的管理。,copyrightActix 2005,root,iso(1),org(3),dod(6),internet(1),mgmt(2),mib(1),ccitt(0),join-iso-ccitt(2),directory(1),experimental(3),private(4),system(1),interfaces(2),ip(4),icmp(5),tcp(6),udp(7),enterprises(1),at(3),.,.,.,.,.,.,.,.,1.2.3.6.2.1,公有MIB,私有MIB,mib
10、的树形结构,copyrightActix 2005,system组用于存放设备的商品信息,如设备名称,联系人,设备的位置等。interfaces组用于存放网络接口设备(如网卡,调制解调器,无线设备等)的数据链路层信息。at组提供网络地址转换信息。该表在RFC1156中定义,在MIB-II中以不再使用。ip组用于记录ip层信息,如收到的总ip包数等。MIB中每个节点都有唯一的标识,称为对象标识(Object Identifier)。如system组的OID为:1.3.6.1.2.1.1,同时也可以用名字:iso.org.dod.internet.mgmt.mib.system。叶子节点称为标量,
11、它用实例OID来标识,其表示方法为在对象OID后添加0。公有MIB定义在mib节点下,设备厂商私有MIB定义在interprises节点下,copyrightActix 2005,eth0,lo,eth1,interfaces,系统硬件相关适配层,IP/ICMP,TCP/UDP,应用层,SNMP与AC的关系,SNMP,copyrightActix 2005,SNMP与AP的关系,AP,无线终端,Agent,设备信息采集,AC,NMS,SNMP/UDP,get, set, next, response, trap, bulk, inform(外部接口),底层接口,查询/设置,MIB访问接口,MI
12、B,copyrightActix 2005,SNMP Agent的功能,SNMP的功能接口可分为外部和内部接口:外部接口就是要实现v1和v2中规定的基本操作:get, next, set, response和trap操作 以及bulk操作。内部接口就是要实现mib对象的访问(读/写),用户身份的验证,以及传输编码的转换等功能。,copyrightActix 2005,Get处理流程,copyrightActix 2005,Get-Next处理流程,copyrightActix 2005,Set处理流程,copyrightActix 2005,Trap处理流程,copyrightActix 20
13、05,BER解码,团体名检验,消息处理,BER编码,接收数据,发送数据,BER编码,团体名检验,生成响应,BER解码,发送数据,接收请求,get, next, set, bulk,response, trap,NMS,Agent,产生告警,MIB,mib Access,请求,响应/告警,SNMP处理流程,copyrightActix 2005,数据接收和发送 由于SNMP采用不可靠的UDP来传输数据,为了防止数据报丢失或者延迟,必须采取一定的超时和重传机制。BER编码和解码 SNMP在传输链路上使用BER编码,而消息处理模块只能识别PDU类型的报文,所以在发送和接收数据时都要对报文进行BER编
14、码转换。,copyrightActix 2005,团体名检验 在SNMP中团体名(community)相当于密码和口令的作用,团体名检验可以防止未授权的用户非法访问网络设备。可以修改设备的团体名以提高其安全性。产生告警 Agent监控所有被管理的对象,当网络设备状态改变(如重启或发生故障)时,Agent应主动向指定的NMS发送告警(通告)消息。,copyrightActix 2005,SNMP消息处理流程,对接收到的SNMP报文进行BER解码,检查SNMP报文的版本与共同体,定位OID并创建从SNMP到DPI的映射表,根据PDU类型回调相应SNMP消息处理函数,将处理结果编码成BER格式的re
15、sponse报文,子代理处理完将DPI PDU转换成SNMP PDU并返回给Agent,将SNMP PDU转换成DPI PDU并发送到子代理处理,返回该response报文到发送请求的模块,DPI PDU处理,SNMP请求消息处理(Agent),DPI请求响应处理,copyrightActix 2005,Agent与subAgent关系图,SNMP请求PDU,SNMP响应PDU,PDU转换,PDU转换,subAgent,subAgent,subAgent,subAgent,DPI interface (消息队列和事件驱动),Agent,copyrightActix 2005,Agent与sub
16、Agent的联系,Agent负责与NMS的通信,它接收SNMP请求并返回SNMP响应。子代理实现MIB对象的访问,它向Agent注册并维护一张MIB视图。Agent维护所有已注册的子代理信息,并将其保存到全局注册表中。Agent接收到请求后,根据请求的OID在注册表中查找已经连接并注册的subAgent,然后将请求发送给subAgent处理。,copyrightActix 2005,SNMP Agent模块内分解,copyrightActix 2005,SNMP Agent软件实现流程,copyrightActix 2005,SNMP Agent的实现,Agent应实现两个基本功能:即接收请求
17、并产生响应;发出告警。Agent的主入口函数为SNMPTaskMain进入主函数后首先创建两个消息队列分别用于与Manager和subAgent通信随后调用SNMP_AGT_agent_init对Agent进行初始化初始化完毕后,Agent在事件队列上等待事件,根据事件类型(关机或SNMP_DPI事件)作出处理SNMP Trap的入口函数为AgentTrapTaskMain,copyrightActix 2005,Agent消息处理流程,Agent主要处理两种类型的消息:snmp和dpi。Agent消息处理的主入口函数为SNMP_AGT_snmp_dpi_req_handler,该函数根据接收
18、消息的类型(SNMP消息或DPI消息)回调相应的函数进行处理SNMP消息处理的入口函数为SNMP_AGT_snmp_msg_handler,有三个模块发送SNMP消息:MMI, Manager IF, Unix UDP。根据模块不同调用相应回调函数将SNMP处理结果返回给发送者DPI消息处理的入口函数为SNMP_AGT_dpi_msg_handler,copyrightActix 2005,SNMP消息处理,SNMP消息处理是本Agent的主要任务,在解析报文之前,先必须对其进行BER解码,通过调用SNMP_AGT_DecodePacket实现解码解码完毕后,先对SNMP报文进行校验,包括:版
19、本校验 SNMP_AGT_check_versions共同体校验 SNMP_AGT_check_community校验完毕后,调用SNMP_AGT_classify_objects定位OID,并创建一张从SNMP到DPI的映射表。,copyrightActix 2005,SNMP请求的处理,SNMP请求PDU(tSNMP_NORMAL_PDU )包括get, next, set, bulk四种,每种请求都有相应的处理函数get SNMP_AGT_ProcessGetRequestnext SNMP_AGT_process_getnext_reqset SNMP_AGT_ProcessSetRe
20、questbulk SNMP_AGT_process_getbulk_req调用SNMP_AGT_EncodeGetPacket将请求处理的结果编码成BER格式的response报文,并返回给发送该请求的模块,copyrightActix 2005,Agent与subAgent数据报格式,Agent端请求应答的PDU格式为tSNMP_NORMAL_PDUsubAgent端请求应答的PDU格式为tSNMP_DPI_REQ_RESP_MSG函数SNMP_AGT_send_reqs_rcv_resps将Agent型的请求PDU转换成subAgent型的请求PDU,并将其发往subAgent。subA
21、gent处理请求PDU并生成响应PDU,然后返回给Agent。subAgent对于SNMP的管理者是透明的。,copyrightActix 2005,DPI控制连接消息处理,DPI控制连接(tSNMP_DPI_CONN_CTRL_MSG )类型的消息有五种,每种都有对应的处理函数OPEN: SNMP_AGT_dpi_open_connCLOSE: SNMP_AGT_dpi_close_connREGISTER: SNMP_AGT_dpi_reg_subtree 在已有连接上注册一棵子树UNREGISTER: SNMP_AGT_dpi_unreg_subtree在已有连接上注销一棵子树ARE_YOU_THERE: SNMP_AGT_dpi_ruthere,copyrightActix 2005,MIB访问,用一张全局表(FMAS_BaseOIDTable)保存了每个可供操作的对象(OID)以及对其进行操作的函数(get/test/set)。在访问MIB对象时,只需根据请求OID在全局表中搜索,找到对应的表项,然后根据请求类型回调其操作函数即可。MIB操作函数是与具体设备相关的,即对于不同种类的设备FMAS_BaseOIDTable内的表项内容都不相同。,