Agent技术文档

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Agent技术文档

(一)背景知识

在开发Agent软件之前,需熟悉以下内容:

(1)SNMP协议,MIB,ASN.1 SNMP子集,BER编码规则;

(2)UDP协议,无连接Socket编程;

(3)ATM UNI,AAL5;

(4)VxWorks的多任务机制和消息队列机制,及两者的编程;

(5)WRS WindNet软件包的使用和扩展;

(6)Tornado系列开发和调试工具。

以上内容可参阅下述资料:

(1)SNMP,MIB:RFC1155,RFC1157,RFC1122,RFC1213;

(2)ASN.1,BER:X.680,X.690;

(3)有关ATM的书籍,A TM Forum ILMI 4.0;

(4)VxWorks Programmer’s Guide:

Chapter 2:Basic OS

Chapter 5:Network

(5)WindNet SNMPv1/v2c全本

(6)Tornado User’s Guide全本

(7)GNU ToolKit:

The GNU Binary Utilities:ar,ld,nm

GNU Make

(8)编程中若遇到函数调用之类的问题,可参阅

VxWorks 5.3.1 Reference Manual

(9)有关消息队列的介绍另可参考崔健同学的技术文挡。

(二)A gent简述

根据该接入设备的总体设计,网络管理分为用户侧和网络侧两级来进行。每一级的网络管理模块都基于Client/Server 结构,Manager作为Client ,以请求的形式向被管对象的Agent(以下简称Agent)发送命令;Agent作为Server,根据接收到的请求完成相应的操作,并将结果以响应的形式发回给Manager。这两者之间的通信遵循简单网络管理协议(SNMP)。

另外,根据A TM Forum 制订的规范,用户侧和网络侧的Agent作为ATM 接口管理实体(IME),两者之间也必须建立起实时对等的通信,每一方都必须实现Manager和Agent 的双重功能,既可以以Manager的身份向对方发送请求,也可以以Agent的身份接收和处理对方的请求。两个对等IME之间的通信遵循A TM Forum 的ILMI 规范(Integrated Local Management Interface Specification)。而ILMI 也是基于SNMP 协议之上的。

综上所述,网络管理信息系统SNMP Agent主要将实现以下功能:

(1)接收和处理来自对应Manager的请求(通过UDP端口);

(2)两级Agent之间的ILMI 消息传递(通过一个特定的VPI/VCI和AAL5层);

(3)为实现上述功能而必需的与交换、信令和业务模块之间的消息传递。

图一、二显示了响应实体之间的关系及其协议栈。

上述(3)的功能通过操作系统(采用了实时操作系统VxWorks)提供的内部通信机制(如消息队列)来实现。而SNMP Agent的实现则采用了Wind River System 公司所提供的WindNet 软件包。

由于WindNet 只实现了Agent的功能,为了建立起ILMI 通信,还必须自己实现Manager的功能。

图二

(三)程序及其编译过程的描述

本人编写的程序分成两部分,分放在两个目录下(之所以这样做只是为了尽可能保留WindNet的目录结构):

$(ATMNET_BASE)/

$(WIND_BASE)/target/src/snmpv1/

(1) 程序结构

下图列出了各主要程序之间的依赖关系。上层依赖下层,或者说,位于下层的程序被上层的程序所调用。

下图是Agent 各任务间的数据流图:

(2)$(ATMNET_BASE)/

下的程序描述

除了MIB Method Routines (见“$(WIND_BASE)/target/src/snmpv1/下的程序描述”)以外,所有自己编写的C 源程序均存放在本目录下,而头文件则放在一级子目录h/下。另外在一级子目录apps/下则存放了在SUN 主机上可执行的Manager 程序。下面逐一介绍。

图三

图四

Makefile

用来编译和更新网管Agent的程序。

anmadLib.c

Agent的ILMI数据包处理程序,它可能调用snmpMgrLib.c中的SNMP解码程序。anmaGlobals.c

Agent范围内的全局变量的定义。

anmaIoLib.c

Agent与其他软件模块的消息接口处理程序。

anmaMain.c

在嵌入VxWorks时,Agent软件的唯一入口函数在本文件中定义。anmInfoLib.c

作为ATM Private MIB的信息源,为后者的Method Routines所调用。

ilmiFsm.c

ILMI 有限状态机的实现。

ilmiInfoLib.c

作为ILMI MIBs的信息源,为后者的Method Routines所调用。

snmpMgrLib.c

为实现Manager功能所编写的例程,主要提供SNMP BER编码和解码函数。其中在解码过程中,如果识别出是Get,Get-next或Set的PDU,说明是对端Manager 发过来的数据包,则递交给WindNet的snmpdPktProcess()处理;对于Get-response 和Trap的PDU,说明是本地Manager发出请求后得到的响应,则继续全权处理。

请同时参阅anmadLib.c。

一级子目录h/:

anmaAll.h

Agent范围内类型和常量的定义,如与其他软件模块通信时所用消息队列的属性和消息的结构,等。

anmaConfig.h

设备配置文件,如设备是node还是user等等。

anmadLib.h

对anmadLib.c中定义的非局部函数的声明。

anmaIoLib.h

对anmaIoLib.c中定义的非局部函数的声明。

anmInfoLib.h

对anmInfoLib.c中定义的非局部函数的声明。

anmPrivMib.h

ATM Private MIB结构类型的定义,类似于$(WIND_BASE)/target/h/snmp/m2Lib.h。atms_api.h

由交换模块实现的API的声明。这些API主要由网管Agent调用,以完成Manager 请求的涉及到交换的操作。

ilmiFsm.h

有关ILMI FSM的类型和常量定义。

ilmiInfoLib.h

对ilmiInfoLib.c中定义的非局部函数的声明。

相关文档
最新文档