SNMP嵌入式应用培训_第1页
SNMP嵌入式应用培训_第2页
SNMP嵌入式应用培训_第3页
SNMP嵌入式应用培训_第4页
SNMP嵌入式应用培训_第5页
已阅读5页,还剩35页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Foundations, hospitals, NGOs, and trade and sector associations are the cornerstones of our work. We help innovative non-profits inspire their base.,SNMP嵌入式应用培训,2018/1/17wanghuan,SNMP网络架构由三部分组成:NMS、Agent和MIB,CONTENT,3,SNMP是英文Simple Network Management Protocol的缩写,中文意思是简单网络管理协议。SNMP是一种简单网络管理协议,它属于TCP/IP五层协议中的应用层协议,用于网络管理的协议。SNMP主要用于网络设备的管理。由于SNMP协议简单可靠 ,受到了众多厂商的欢迎,成为了目前最为广泛的网管协议。,4,SNMP协议主要由两大部分构成:SNMP管理站和SNMP代理。SNMP管理站是一个中心节点,负责收集维护各个SNMP元素的信息,并对这些信息进行处理,最后反馈给网络管理员;而SNMP代理是运行在各个被管理的网络节点之上,负责统计该节点的各项信息,并且负责与SNMP管理站交互,接收并执行管理站的命令,上传各种本地的网络信息。,5,SNMP采用UDP协议在管理端和agent之间传输信息。SNMP采用UDP161端口接收和发送请求,162端口接收trap,执行SNMP的设备缺省都必须采用这些端口。SNMP消息全部通过UDP端口161接收,只有Trap信息采用UDP端口162。由于采用UDP协议,不需要在代理和管理站之间保持连接,通信通常会采用超时重传机制。,6,技术优点SNMP具有以下技术优点:基于 TCP/IP 互联网的标准协议,传输层协议一般采用UDP。自动化网络管理。网络管理员可以利用SNMP 平台在网络上的节点检索信息、修改信息、发现故障、完成故障诊断、进行容量规划和生成报告。屏蔽不同设备的物理差异,实现对不同厂商产品的自动化管理。SNMP 只提供最基本的功能集,使得管理任务与被管设备的物理特性和实际网络类型相对独立,从而实现对不同厂商设备的管理。简单的请求应答方式和主动通告方式相结合,并有超时和重传机制。报文种类少,报文格式简单,方便解析,易于实现。SNMPv3 版本提供了认证和加密安全机制(SNMPv1,v2仅使用基于团体名进行报文认证),以及基于用户和视图的访问控制功能,增强了安全性。,SNMP网络架构由三部分组成:NMS、Agent和MIB,CONTENT,8,一套完整的SNMP系统主要包括管理信息库(MIB)管理信息结构(SMI)SNMP报文协议。,9,1.管理信息库MIB任何一个被管理的资源都表示成一个对象,称为被管理的对象。MIB是被管理对象的集合。它定义了被管理对象的一系列属性:对象的名称、对象的访问权限和对象的数据类型等。每个SNMP设备(Agent)都有自己的MIB。MIB也可以看作是NMS(网管系统)和Agent之间的沟通桥梁。它们之间的关系如图所示。,10,MIB文件中的变量使用的名字取自ISO和ITU管理的对象标识符(object identifier)名字空间。它是一种分级树的结构。如图2所示,第一级有三个节点:ccitt、iso、iso-ccitt。低级的对象ID分别由相关组织分配。一个特定对象的标识符可通过由根到该对象的路径获得。一般网络设备取iso节点下的对象内容。如名字空间ip结点下一个名字为ipInReceives的MIB变量被指派数字值3,因而该变量的名字为:ernet.mgmt.mib.ip.ipInReceives相应的数字表示(对象标识符OID,唯一标识一个MIB对象)为:.当网络管理协议在报文中使用MIB变量时,每个变量名后还要加一个后缀,以作为该变量的一个实例。,11,2.管理信息结构(SMI)SMI定义了SNMP框架所用信息的组织、组成和标识,它还为描述MIB对象和描述协议怎样交换信息奠定了基础。SMI定义的数据类型: 简单类型(simple)Integer:整型是-2,147,483,6482,147,483,647的有符号整数octet string:字符串是065535个字节的有序序列OBJECT IDENTIFIER:来自按照ASN.1规则分配的对象标识符集简单结构类型(simple-constructed)SEQUENCE用于列表。这一数据类型与大多数程序设计语言中的“structure”类似。一个SEQUENCE包括0个或更多元素,每一个元素又是另一个ASN.1数据类型SEQUENCE OF type用于表格。这一数据类型与大多数程序设计语言中的“array”类似。一个表格包括0个或更多元素,每一个元素又是另一个ASN.1数据类型。,12,应用类型(application-wide)IpAddress:以网络序表示的IP地址。因为它是一个32位的值,所以定义为4个字节;counter:计数器是一个非负的整数,它递增至最大值,而后回零。在SNMPv1中定义的计数器是32位的,即最大值为4,294,967,295;Gauge:也是一个非负整数,它可以递增或递减,但达到最大值时保持在最大值,最大值为232-1;time ticks:是一个时间单位,表示以0.01秒为单位计算的时间;,13,3.SNMP报文协议SNMP报文结构如下:(编码之前)SNMP共有5种报文,所以其PDU也有5种,14,3.1 SNMP的5种协议数据单元SNMP规定了5种协议数据单元PDU(也就是SNMP报文),用来在管理进程和代理之间的交换。get-request操作:从代理进程处提取一个或多个参数值。get-next-request操作:从代理进程处提取紧跟当前参数值的下一个参数值。set-request操作:设置代理进程的一个或多个参数值。get-response操作:返回的一个或多个参数值。这个操作是由代理进程发出的,它是前面三种操作的响应操作。trap操作:代理进程主动发出的报文,通知管理进程有某些事情发生。 前面的3种request操作是由管理进程向代理进程发出的,后面的2个response操作是代理进程发给管理进程的,为了简化起见,前面3个操作今后叫做get、get-next和set操作。图1描述了SNMP的这5种报文操作。请注意,在代理进程端是用熟知端口161俩接收get或set报文,而在管理进程端是用熟知端口162来接收trap报文。,15,5种报文操作,16,3.2 SNMP报文格式一个SNMP报文共有三个部分组成,即公共SNMP首部、get/set首部、trap首部、变量绑定。详细协议描述在此不做赘述。,17,3.3 基本编码规则(BRE)在具体系统中,我们需要用具体的编码规则将ASN.1语法表示的抽象数据转换成具体的比特流。SNMP使用的编码方法是BER(Basic Encoding Rule)。BER的数据都由三个域构成:标识域(tag)+长度域(length)+值域(value)。3.3.1 标识域(tag)的编码规则 标识域指明数据的类型,占用1个字节,常见的类型有:BOOL(0x01); INT(0x02);OCTSTR(0x04);NULL(0x05);OBJID(0x06);ENUM(0x0A);SEQ(0x30);SETOF(0x31);IPADDR(0x40);COUNTER(0x41);GAUGE(0x42);TIMETICKS(0x43);OPAQUE(0x44)。,18,3.3.2 长度域的编码规则长度域指明值域的长度,不定长,一般为一到三个字节。其格式可分为短格式(后面的值域没有超过127长)和长格式。length=30=1E(30没有超过127,长度域为0001 1110)length=169=81 A9(169超过127,长度域为1000 0001 1010 1001,169是后9位的值,前八位的第一个1表示这是长格式的表示方法,前八位的后七位表示后面有多少个字节表示针对的长度,这里,是000 0001,后面有一个字节表示真正的长度,1010 1001是169,后面的值有169个字节长。) length=1500=82 05 DC(1000 0010 0000 0101 1101 1100,先看第一个字节,表示长格式,后面有2个字节表示长度,这两个字节是0000 0101 1101 1100表示1500),19,3.3.3 值域的编码规则整型Integer的编码integer:=0x02 lengthbyte*(*表示重复)整型数据值域用补码表示,去掉多余的零(正数)或一(负数)。值域最高位为符号位。例:1500=02 02 05 DC 21500=02 02 FA 24,20,3.3.3 值域的编码规则 对象标识ObjectID编码 objectID:=0x06lengthsubidentifier*(1)subidentifier:= leadingbyte* lastbyte(2)leadingbyte:=1 7bitvalue(3)lastbyte:=0 7bitvalue(4)首两个ID被合并为一个字节X*40+Y(5)虽然规则很多,但由于大多数子对象标识在0127,只需按规则(1)、(5)即可;当子对象标识大于127,则按规则(2)、(3)、(4)将其分解为多个字节,最后一个字节的高位为零,其余字节的高位为一。如:.810.1,根据规则(5),首两个子对象标识1.3被合并为2B(1 3 40+3=43);子对象标识810超过127,根据规则(2)、(3)、(4)将其拆分为两个字节86 2A (810=11 0010 1010 = 1000011000101010);整个MIB被编码为:0x06 0x2b 0x06 0x01 0x86 0x2a 0x01。其他类型不做赘述,21,3.3.4 抓包实例分析0000304b02010004067075626c6963a03e02001001480201000201003033300f060b2b0600200102011903020105010500300f060b2b0030060102011903050101010500300f060b00402b060102011903050102010500304b:表示整个snmp报文的编码方式为30,即是SEQUENCE类型表示snmp报文的长度为4b,即为75020100:02表示该字段是INTERGER类型,01表示该字段占用一个字节,00表示版本号为104067075626c6963:04表示该字段为OCTETSTRING类型,06表示该字段的长度,7075626c6963表示“public”a03e:a是该字段的固定值,0表示这是一个get-request报文,3e表示PUD还有62个字节020148:02表示该字段是INTERGER类型,01表示该字段占用一个字节,48表示request-id为72020100:02表示该字段是INTERGER类型,01表示该字段占用一个字节,00表示报文的差错状态为0,22,3.3.4 抓包实例分析0000304b02010004067075626c6963a03e02001001480201000201003033300f060b2b0600200102011903020105010500300f060b2b0030060102011903050101010500300f060b00402b060102011903050102010500020100:02表示该字段是INTERGER类型,01表示该字段占用一个字节,00表示报文的差错索引为03033:30表示编码类型为30,即是SEQUENCE类型,33表示后续“键-值”区域占用51个字节300f060b2b060102011903020105010500:30表示编码类型为30,即是SEQUENCE类型,0f表示该字段共有15个字节,06表示第一个变量为键,0b表示键长为11个字节,2b06010201190302010501表示..,00表示该值的字段的长度为0,即为空300f060b2b060102011903050101010500:同上300f060b2b060102011903050102010500:同上,SNMP网络架构由三部分组成:NMS、Agent和MIB,CONTENT,24,1. DEFINITIONS := BEGINSNMP始终使用ASN.1概念中的描述块(module)来组织ASN.1对象的,ASN.1的描述块是一些相关描述语句的集合,module的结构如下module DEFINITIONS := BEGINlinkagedeclarationsEND2. mibname MODULE-IDENTITY该定义添加了一个公共的标示段来对整个信息描述块进行顶层的文字描述,以加强对管理MIB描述块的文档管理和控制,每个MIB定义中都会有该定义。如:cloudmaster MODULE-IDENTITY,25,3. 对象标识符(OBJECT-IDENTIFIFIER)在ASN.1中,对象标识符类型描述对象的抽象信息,MIB树中的每一个标号是用对象标识符描述的。由于树的各个分支是用数值表示的,所以实际上对象标识符是一个整数数值的序列。它用OBJECT IDENTIFIER来声明,如: myBranch OBJECT IDENTIFIER := parentBranch 10 其中myBranch是一个子树支,它定义在parentBranch树支下,“10”是子树myBranch在父树支parentBranch下的一个唯一对象标识符,即通常所说的OID。在parentBranch树支下,可以定义多个子树支,但子树支的名字和数字(如上的10)不能重复,即必须是唯一的。4.标量(叶子)对象标识符(OBJECT-TYPE Scalar)简单变量在一个树支下,读者可以定义多个子树,也可以定义被管理资源的管理对象,其定义的句法如下:(objectname) OBJECT-TYPESYNTAX (syntax)ACCESS (access)STATUS (status)DESCRIPTION (description) := (parent) (number) ,26,6. 表类型SNMP表是一个特殊类型的声明,表内声明的对象称为列对象,声明如下:(tablename) OBJECT-TYPE-表名SYNTAX SEQUENCE OF (tabletype)STATUS mandatoryDESCRIPTION (description):= (parent) (number) (entryname) OBJECT-TYPESYNTAX (tabletype)ACCESS not-accessibleSTATUS mandatoryDESCRIPTION (description) := (tablename) 1 (tabletype) := SEQUENCE (column1) (column1type), (column2) (column2type), (columnN) (columnNtype) ,27,(tablename)和(entryname)中的ACCESS为not-accessible,这是因为表和行对象没有叶子对象,因此不能被SNMP访问。ASN.1句法中关于定义一个表的规则如下:- 在表名(tablename)的命名中,必须要有一个“Table”关键字,例如定义一 个表对象“myTable”- 在表对象下面的表目(entryname)也须有一个“Entry”关键字,例如 “myEntry”。- (column1)是表的列对象,(column1type)是此列对象的类型 为了加深理解,举个例子如下:myTable OBJECT-TYPEACCESS not-accessibleSTATUS mandatoryDESCRIPTION ” 这是一个表名为myTable的表对象. ”,28,实例:根据智能光分配网络接口协议技术要求-第2部分中的规范编写HT-ENTITY-IODH-MIB.mib,SNMP网络架构由三部分组成:NMS、Agent和MIB,CONTENT,30,基于硬件STM32+W5500硬件板:智能ODN控制板DMU1.开发UDP通信接口:int8_t socket(uint8_t sn, uint8_t protocol, uint16_t port, uint8_t flag);int8_t close(uint8_t sn);int32_t sendto(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t port);int32_t recvfrom(uint8_t sn, uint8_t * buf, uint16_t len, uint8_t * addr, uint16_t *port);2.参考SNMP帧协议和W5500例程来开发SNMP代理端程序程序主要开发内容:SNMP数据包解析;MIB数组及其对应实现函数;,31,MIB在嵌入式中的实现/MIB对象结构体/OID ,数据类型,数据长度,数据,get函数,set函数typedef struct uint8_t oidlen; /OID长度uint8_t oidMAX_OID; /实际查询时除去了实体索引值 int32_t entPhysicalIndex; /OID实体索引uint8_t dataType; /数据类型uint8_t dataLen; /数据长度union uint8_t octetstringMAX_STRING;uint32_t intval; u;void (*getfunction)(void *, uint8_t *, int32_t);void (*setfunction)(void *, uint8_t *, int32_t); dataEntryType;针对entity-mib的拓展,添加entPhysicalIndex项,便于函数参数传递;,32,需要注意的功能:1、对entPhysicalIndex进行解析,同时参照当前DMU配置进行参数判断,如不符合则回复OID_NOT_FOUND;2、根据框、盘、端口在位状态对entPhysicalIndex进行判断,当entPhysicalIndex对应的实体不在位时,回复OID_NOT_FOUND;,33,MIB对象数组dataEntryType snmpData =/ -System MIB-/ SysDescr Entry8, 0x2b, 6, 1, 2, 1, 1, 1, 0, 0,SNMPDTYPE_OCTET_STRING, 30, HT IODH Embedded SNMP Agent,NULL, NULL,34,/ -ENTITY MIB- / entPhysicalDescr 规格描述 11, 0x2b, 6, 1, 2, 1, 47, 1, 1, 1, 1, 2, 0,SNMPDTYPE_OCTET_STRING, 128, ,NULL, NULL, / entPhysicalVendorType 表示实体的类型 11, 0x2b, 6, 1, 2, 1, 4

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论