1引言
EPON是一种采用点到多点结构的单纤双向光接入网技术,它将数据链路层的以太网技术和物理层的PON技术结合在一起,集聚了两者的优点,已经成为目前最具有竞争力的光接入网解决方案[1]。随着EPON技术的成熟,EPON也日趋产品化。本文设计实现了一种基于嵌入式数据库SQLite的EPON网络管理系统,以解决有效管理EPON网络资源的问题。
2基于嵌入式数据库的EPON网络管理方式
完整的EPON网管系统的管理对象是一个或者多个OLT以及若干个ONU,ONU通过光纤连接在OLT上。通常,EPON网管系统采用带内管理方式,因此在EMS(网元管理系统)管理站到OLT和ONU之间不需要增加专用通道。由于EPON的网络拓扑结构是点对多点的方式,因此。EMS管理站通过电缆或者光纤连接到OLT上,即可同时实现对OLT和ONU的管理。
本文设计的EPON网络管理系统负责对EPON系统的OLT设备和ONU设备进行集中管理,提供配置管理、故障管理、性能管理和安全管理功能。同时支持图形界面(Web)和命令行(Telnet)两种模式,其功能框图如图1所示。

与图形化客户端/服务器方式不同的是,采用基于嵌入式数据库的EPON网络管理方式,无需在EMS管理站上安装特定的网管客户端软件,只需通过Web或者Telnet方式即可完成所有的网络维护和管理功能。
(1)web管理方式此模式是全面、完整的图形化管理方式,即向管理员提供包括查询、配置、告警在内的所有网管功能。
◆查询过程 管理员发送查询消息,Web Server进行响应,解析出所要查询的具体信息。通过读取嵌入式数据库,将参数返回给管理界面。
◆配置过程 管理员发送配置请求,Web Server进行响应,将需要修改的具体配置信息写入数据库的临时表。(Central Management模块轮循该临时表,发现新请求后将相应配置信息送给EPON Proxy模块。EPONProxy模块完成与OLT chipsets之间的配置与查询信息交互。配置成功后,EPON Proxy返回成功消息给Central Management模块,Central Management模块修改数据库参数表,同时将临时表的配置状态字段修改为成功标识。Web Server同时轮循临时表的配置状态字段,一旦字段变为成功标识,则将成功消息返回给管理员。
◆告警过程 来自OLT chipsets的告警信息通过EPON Proxy模块送给Central Management模块,Cen-tral Management模块解析具体的告警内容,记录告警日志。若出现严重的告警信息,则通过Web页面通知管理员。
(2)Telnet管理方式此模式提供简单、快速的查询和配置命令。
◆查询过程 管理员登陆Telnet Server,通过CLI(命令行)方式发送查询请求,Telnet Server进行响应,将信息发送给Central Management模块。Central Man-agement模块解析查询信息,读取数据库后返回查询参数。
◆配置过程管理员登陆。Telnel Setver,通过CLI方式发送查询请求,Telnet Server进行响应,将配置信息发送给Central Management模块,Central Manage-ment模块解析参数,通过EPON Proxy模块向OLTchipset发送配置请求。配置成功后,EPON Proxy返回成功消息给Central Management模块,Central Manage-ment模块修改数据库参数表,并将成功消息通过。Tel-net Server返回给管理员。
3主要功能模块实现
如上所述,本文所设计的EPON网络管理系统由嵌入式数据库、EPON管理模块、Web服务器和Telnet服务器等模块构成,其软件环境是内核版本为2.6.19的嵌入式Linux操作系统。通常嵌入式操作系统与系统具体应用集成在一起,例如通用的Telnet服务器模块可以在系统裁减时直接加入,而其它功能模块实现后可以通过交叉编译加载到系统中去。下面主要阐述嵌入式数据库SOLite和EPON管理模块的实现方式。
3.1嵌入式数据库SQLite
嵌入式数据库与其他数据库产品的区别是,前者是程序驱动式,而后者是引擎响应式。嵌入式数据库无须独立运行数据库引擎,由程序直接调用API函数实现对数据的存取操作。
SOLite是由D.Richard Hipp开发出来的用小型C语言库实现的一种强有力的嵌入式关系数据库。SOLite的源代码完全开放,提供了对SQL92的大多数支持:支持多表和索引、事务、视图、触发和一系列的用户接口及驱动。其简单易用,产生的代码较少,访问速度也很快,同时提供了丰富的数据库接口[2]。本系统是一个嵌入式EPON网络管理系统,在实际应用中会产生批量数据需要进行维护管理,如网络端口流量统计等数据信息,因此采用嵌入式数据库SQLite是非常合适的。在实践中,采用版本号为3.3.5的SOLite3嵌入式数据库。
通过对EPON网络管理系统功能要求的分析,本系统需要对OLT设备和ONU设备进行集中管理,具体的功能有逻辑链路的管理配置,端口业务流的管理,OLT上下行带宽配置,共享VLAN的参数设置,IGMP代理管理,链路环回测试及其参数设置。ONU注册管理,以及OLT与ONU基本信息保存等。
根据这些所需管理的配置参数以及所需提供的统计、告警等信息,本文所设计的数据库结构如图2所示。在此数据库中,为OLT与ONU下属各自管理对象的配置信息分别建立表格,即TB_OLT、TB_ONU、TB_OLTPort、TB_OLTQueue、TB_LogicLink、TB_ONU-PortTB_ONUQueue等。其中TB_OLT为主表,该表的Key值为OLT_ID,其他各表则以两个无重复的Key值标识,并且用OLT_ID或者ONU_ID对两张相关联的表格进行连接。另外TB_Stats表和TB_Alarm表用来分别保存各个管理对象的统计信息和告警记录。而TB_CMD表则是EPON管理模块与Web服务器交换命令信息的临时表。

SQLite3提供了109个C语言API函数,能够提供建立表格、查询、修改、插入、删除、排序等最常用的网管数据操作功能。其中有三个最核心的API函数,用来执行SQL和获得数据的函数:sqlite_open ()和sqlite_close()分别是嵌入式数据库文件的打开和关闭,其功能是根据指定的数据文件建立和释放SQLite执行引擎。而sqlite exec()可以执行SQL语句并获得结果,通过编写回调函数callback()可进一步对执行结果进行处理。例如,根据特定的SID查询表格TB_Stats,可以得到OLT设备EPON侧端口的统计信息,如发送的帧、丢弃的帧、延时的帧等,然后调用函数gps printf()来实现端口统计信息的显示功能。
3.2 EPON管理模块
本系统的EPON管理功能由Central Management模块和EPON Proxy模块共同完成。在硬件核心芯片方面,采用了Teknovus公司提供的TK3721芯片,该OLT芯片提供了以UDP通信方式为上层软件提供管理服务的解决方案[3],因此EPON Proxy模块是联系着上层软件和下层硬件之间的桥梁,它有两部分功能:一是为上层软件提供了API函数接口:二是完成对下层硬件的封装。而Central Management模块的功能是通过调用EPON Proxy模块提供的API函数,以实现来自Web Server和Telnet的网络管理命令,同时维护嵌入式数据库。
根据对EPON管理功能的分析,所有网络管理命令的实现过程可概括为消息发送与消息接收两部分,如图3、图4所示流程,发起一个或者多个并行的用户进程与一个后台守护进程进行交互。由于存在多个Web用户或Telnet用户同时发出管理命令的情形,守护进程EPONDaemon必须完成与多个用户进程E-PONClient之间的进程间通信(IPC)。采用UNIX域的套接字,以文件名形式的Socket来标识各个用户进程EPONClient,可以解决此处的进程间通信问题[4],即Socketfd_Client=socket(PF_UNIX,SOCK_DGRAM,0)。而EPON管理模块与OLT芯片之间采用UDP通信方式,由后台守护进程。EPONDaemon负责建立与TK372l进行UDP通信的Socket,即SocketID SendRecv_3721=socket(PF_INET,SOCK_DGRAM,0)。

(1)发送过程消息发送过程按照图3流程完成功能,可以分为命令解析、组帧、发送三个部分:
①命令解析来自Web Server的管理命令需要写入数据库的临时表,由后台守护进程EPONDaemon轮循该临时表,若出现新的管理命令,则从临时表中提取命令号MsgTvpe和参数,查找出对应的处理函数后交给用户进程EPONClient。而来自Telnet的管理命令直接由EPONDaemon查找对应的处理函数。
②组帧用户进程的组帧模块实现了命令消息的实例化,也是将命令参数以特定数据包形式封装的过程。对于每个命令消息的数据包都定义一个对应的消息结构。由两部分组成:Payload域和Header域。将获取的命令参数,一一对应地赋值给Payload域,从而实例化了该消息的Payload域。而Header域具有固定的参数顺序,依次为Type、Correlation Tag和Len。其中Type为命令的类型;CoiTelation Tag用于保存该用户进程实例使用的UNIX域的套接字;Len值为该消息Payload域的长度。最后将两部分拼接成完整的待发送数据包。
③发送守护进程EPONDaemon收到某个用户进程实例送来的命令数据包后,通过UDP套接字发送给指定的OLT芯片,完成相应的网管指令。
(2)接收过程消息接收过程主要是处理来自OLT芯片TK3721的响应消息,以及一些自动上报的告警信息,可以分为守护进程接收、用户进程解帧、数据库维护三个部分,如图4所示。
①守护进程接收模块在与TK3721之间建立UDP套接字后将一直查询消息队列,当队列非空时,由守护进程发起一个子线程recvfrom,以处理该UDP数据包。通过获取数据包Header域中的Tvpe值,可以判断是否为自发消息,并写入日志文件。
②用户进程解帧模块用于处理TK3721芯片返回的:Response消息。该消息数据包的Header域除已有的三个固定参数外,增添了一个Return Code值。若TK3721正确执行了某个网管指令,则Return Code为OK;否则返回的Return Code值为可能的出错原因。在正常情况下,解帧处理函数将解析出与消息结构一致的所有参数值。如果用户进程为Web Server发起的实例,则直接将获取的参数值交给守护进程处理;如果用户进程由Telnet终端发起,则需要将返回信息输出到Shell,同时由守护进程写入数据库。
③数据库维护模块由守护进程EPONDaemon根据解帧模块获取的参数,修改数据库中各配置参数表的相应字段值,同时根据Return Code值改写数据库临时表的执行状态。
4功能调试
本文设计的EPON网络管理系统同时支持命令行与图形界面两种模式的管理功能。图形界面的EPON网络管理功能由嵌入式Web服务器BOA和CGI应用程序加以支持。因篇幅所限,仅将命令行模式的调试结果简单列举如下。
以设置ONU注册参数的一对命令Get/Set Dis-covery Parameters为例,首先将源程序代码经交叉编译后生成的可执行文件加载到嵌入式Linux系统中,并且以超级用户权限启动守护进程EPONDaemon,这样就可以从PC机上以Telnet方式登陆到EPON网络管理系统。
根据Teknovus公司提供的数据手册,缺省的ONU注册参数为注册周期period=1000ms以及注册窗口大小window=16319 KByes。如果要将参数period和window的值分别修改为1600ms和18460KBves,可以按照命令格式“sdispa[period][window][ID_3721]”,在Telnet终端上输入相应的网管命令。OLT返回的Return Code值为OK,则在Telnet终端上显示命令处理成功的返回消息,如图5所示。
为了进一步验证当前ONU注册参数的设定值已修改成功,可以在Telnet终端上用Get Discoveiv Pa-rameters网管命令。如图6所示,ONU注册参数值与先前的设定值完全一致。

5结束语
随着EPON技术的快速发展,对EPON网络资源有效管理的要求越来越高,不仅要实现对OLT和ONU设备进行集中式管理,而且需要提供多种网络管理方式。结合光接人设备和嵌入式系统的特点,本文实现了一种基于嵌入式数据库SOLite的EPON网络管理系统,通过有效选择数据库结构以及完成对OLT芯片功能的二次封装,从而实现了在单板系统中支持图形界面和命令行两种模式下的网络管理功能,进一步拓展了EPON产品的应用前景。 |