ForCES路由器中基于AgentX协议CE端Subagent的研究与实现
2009-02-19
作者:童有成, 黄一春
摘 要: 随着互联网等计算机网络应用领域的迅速扩大,新的一代网络设备更具灵活性、开放性和可扩展性,如何对这些新兴的网络设备进行有效管理,是当前迫切需要解决的问题之一。文章针对ForCES路由器的体系结构提出一种基于AgentX的网络管理方案,并详细论述了基于AgentX协议CE端子代理的设计与实现。
关键词:网络管理; ForCES路由器; AgentX协议
随着互联网等计算机网络应用领域的迅速扩大,不断出现新的需求和变化,这就要求新一代网络设备应具有足够的灵活性,能快速地对新业务、新需求做出响应;要求新一代网络设备应具有足够的开放性,使用户可根据所开放的资源灵活组合,以提供不同的网络需求服务;要求新一代网络设备应具有足够的模块化特性,并通过标准化组织进行标准化,使得每个模块可由不同厂家独立研究开发。转发件FE(Forwarding Element)与控制件CE(Control Element)分离的开放可编程路由器体系结构正是基于这样一个历史背景下提出来的,它满足新一代网络发展所提出的开放性、可扩展性和可编程性的要求。为此,实现对ForCES路由器的有效管理,迫切要求开发一个具有可扩展性的高效率的网络管理系统。本文结合目前的研究项目“ForCES路由器的开发原型”,提出一种基于AgentX协议的网络管理方案,并详细论述了基于AgentX协议CE端子代理设计与实现,最后给出测试结果。
1 ForCES体系结构
转发和控制分离ForCES(Forwarding and Control Seperation)[1]是IETF路由领域(Routing Area)的一个工作组,它专门研究开放编程的IP路由器的体系结构和协议问题,是当前开放可编程网络研究最受关注的研究组织。
ForCES的基本思想是:通过把网络组件的控制模块和转发模块分离来加快网络升级以及新业务的展开。支持网络管理是ForCES结构路由器最基本的要求。
ForCES Framework(RFC3746)中定义了ForCES的体系结构,ForCES的体系结构如图1所示。
在ForCES框架定义中,把一个网络单元NE(Network Element)作为一个独立的管理实体,从外部看,一个NE就相当于网络中的一个路由或者交换设备。由图1可以看出,一个NE由一个或多个CE和一个或多个FE组成,CE和FE间的通信按照ForCES协议的规定来完成,这个连接点称为Fp参考点。
2 ForCES路由器中CE端Subagent的设计与实现
2.1 AgentX协议原理
AgentX[2]工作组定义了标准的可扩展的SNMP代理框架,即AgentX协议。它定义了SNMP代理中的两个不同的实体:主代理(master agent)和子代理(subagent)。AgentX正是用于这两种实体间的通信,它允许多个代理向SNMP管理应用程序透明地提供MIB信息,以便提供易扩展的、动态的对复杂网络系统的管理。其中主代理与子代理分工明确、结构清晰,主要执行的功能如下:
主代理的主要功能:
(1)SNMP引擎:以代理的身份发送和接收SNMP协议报文,对报文进行BER编码或解码,执行SNMP访问控制策略,但几乎不访问管理信息。
(2)AgentX主代理引擎:接收并发送Agent-PDU。
(3)管理注册功能:为子代理创建会话、注册MIB树、OID索引分配及对子代理能力声明的处理。
(4)管理调度功能:把接收到的SNMP报文语义转化为AgentX-PDU,并根据注册的MIB子树判断发送给适合的子代理;把要发送出去的AgentX-PDU转化为SNMP报文交由SNMP引擎发送给管理站。
子代理的主要功能:
(1)AgentX子代理引擎:接收并发送Agent-PDU。
(2)管理申请注册处理功能:向主代理申请会话的创建与撤销、MIB子树的注册与注销、索引分配及能力声明等的处理。
(3)MIB信息处理功能:收集定义在MIB文档中的信息函数;完成MIB对象的访问与设置,并返回相应的AgentX-Response-PDU。
2.2 ForCES路由器网络管理方案
2004年4月RFC3746[3]给出了ForCES框架,指出ForCES路由器必须要支持SNMP管理,又一次指出在连接后阶段,绝大多数的外部管理任务应当通过与CE交互来实现,这样做的目的是使得ForCES路由器对外呈现为一个整体的功能设备。因此,ForCES框架建议SNMP代理由CE来实现,FE则将收到的SNMP消息重定向到负责它们的CE。
根据ForCES对网络管理的需求及其体系结构的特点,提出基于AgentX的网络管理方案,框架如图2所示。整个框架结构主要由三部分组成:SNMP服务器、CE和FE。其中SNMP服务器作为主代理,采用net-snmp的软件包进行二次开发;CE作为子代理采用AgentX++的软件包进行二次开发,MIB分布于各个子代理上,由CE负责维护。SNMP服务器和CE端通过虚接口(VIP)连接,这个虚接口嵌入到Linux的内核中起到接口映射的作用,即FE上的接口与SNMP服务器上的接口是一一对应的关系。此方案中,ForCES协议要为SNMP开辟两条数据通道,第一条是SNMP-PDU传递通道,第二条是MIB取值通道。网络管理者发送SNMP消息给ForCES结构路由器的FE,FE通过ForCES协议重定向到CE,CE通过ForCES结构路由器提供第一条数据通道将此消息转发给主代理。主代理通过标准的协议AgentX与CE上的子代理交互,由子代理通过第二条数据通道获取相应的MIB值,最后由主代理构造SNMP响应消息,由ForCES提供的第一条数据通道转发给管理者,从而完成完整的网络管理功能。
2.3 CE端Subagent功能分析
CE端Subagent的设计主要考虑到收集CE和FE端被管理对象的管理信息,通过主代理响应管理站的查询和更新请求,必要时发送告警信息给管理站。因此,CE端的子代理主要完成以下4大功能:(1)通信功能,包括与主代理的通信和被管理对象之间的通信,向主代理发起AgentX任务,向主代理注册所负责的MIB区域,并要求通信接口简单易扩展;(2)信息获取和管理功能,及时准确地获取CE端和FE端被管理对象的被管理信息,并尽量减少子代理与被管理对象之间的交互,尽量减少影响被管理对象本身的性能,实例化CE和FE的被管理对象,对被管理对象的各个变量执行管理操作;(3)实时查询功能,由于FE每个接口事件的统计信息是动态的,CE维护这样一组动态的信息,必须实时动态更新这组信息才能监控FE上真实的信息,所以不采用FE定时上报CE的机制,而是采用CE根据需要实时询问FE的机制。把FE处每个接口事件的统计信息做成一张表if_table的形式,通过调用do_update( )函数来完成实时动态更新if_table中任意节点的值;(4)日志功能,记录子代理本身的启动、关闭以及状态信息,以便出现问题时能尽快定位错误。
2.4 CE端Subagent体系结构
作为ForCES体系结构中的控制器,CE所担负的责任是能够管理并监控FE的性能(比如FE各个接口的流量信息)和连接状态(比如与CE的连接是否中断)。所以,在ForCES路由器的网络管理系统中,CE端Subagent起着关键性的作用。根据CE端Subagent功能分析,设计体系结构如图3所示,它表示CE端Subagent体系结构和各个模块之间的相互关系,其中VIP是SNMP Server基于Linux内核上的虚接口,它起到端口映射的作用。当网络管理者发送SNMP消息时,FE接收SNMP消息,加上FE 身份证明(FE ID)及其端口号(port ID)后通过TML(Translation Mapping Layer)被重定向到CE,CE去掉两个ID将SNMP转发给主代理,即SNMP服务器,SNMP服务器通过AgentX协议与CE上的子代理通信,若是:(1)取CE MIB,子代理通过“处理CE查询”模块取得或设置相应MIB值;(2)取FE MIB,Subagent还需要通过ForCES协议与FE通信,通过FE处的“配置、查询处理”模块从FE属性中获取或设置相应MIB值。然后,主代理构造相应的SNMP响应消息,通过“SNMP转发”模块,加上FE ID和port ID,再交给FE转发给网络管理者。其子代理主处理流程如图4所示。
3 测试结果
CE端的子代理驻留了所有的MIB,以interfaces组为例,并选取其中的接口输入单播数据包数量(ifInUcastPkts)和接口输出单播数据包数量(ifOutUcastPkts)两个节点来监测FE接口的流量信息,目的是为了验证CE端Subagent模块能否配合ForCES体系结构正常工作。
3.1 测试平台的搭建
前面分析了方案、CE端Subagent的体系结构及其实现机制。这一节主要以实践的方式来验证前面论述的正确性。选择Getif作为该网管系统的SNMP Manager,采用IDX2401型开发板作为转发件FE、通用PC机作为CE控制器和一台通用PC机作为SNMP服务器构建ForCES 路由器,其网络管理的测试平台如图5所示。
3.2 结果分析
下面通过数据来看CE端Subagent在ForCES路由器中是否能正常监测FE接口的信息流量,图6给出了实验测试的结果,其中interfaces.ifTable.ifInUcastPkts.1表示FE端第一个接口输入单播数据包数量,interfaces.ifTable.
ifOutUcastPkts.1表示FE上第一个接口输出单播数据包数量。从图6可以看出CE端Subagent通过ForCES协议实时监控到FE端单播数据包输入、输出情况,从而验证了ForCES路由器中网络管理系统中CE端Subagent功能模块的正确性。
CE端Subagent模块是ForCES路由器网络管理系统的核心,几乎维护所有的MIB。文章提出基于AgentX的网络管理方案,并分析CE端子代理的模块功能,最后以interfaces组为例,选取其中的两个节点进行了验证,实现了向FE实时读取MIB值的机制,为ForCES路由器网络管理系统的实现迈出了重要的一步。
参考文献
[1] DORIA A(co-editor). ForCES protocol specification draftietf-forces-protocol-02.txt.[DB/ OL],http://www.sstanamera.com/~forces/Drafts/draft-ietf-forces-protocol-02.txt, Feb 2005
[2] DANIELE M,WIJNEN B,FRANCISCO E D.Agent extensibility (AgentX) protocol version 1. RFC 2741 [DB/OL], http://www.faqs.org/rfcs/rfc2741.html, Jan.2000.
[3] YANG L, DANTU R. Forwarding and control element separation(ForCES) framework.RFC-3746,April, 2004, http://www.faqs.org/rfcs/rfc3746.html
[4] Network Working Group A. Doria. ForCES protocol specification draft ietf-forces-protocol-02.txt. February 20,2005.http://www.ietf.org/internet-drafts/draft-ietf-forces-protocol-02.
[5] YANG L, HALPERN J, GOPAL R, et al. ForCES forwarding element model draft-ietf-forces-model-04.
August 2005,http://www.ietf.org/internet-drafts/draft-ietfforces-model-04.