ST OS20平台上的SNMP代理端的开发
2011-08-10周腾,陈建
周 腾,陈 建
(中山大学 信息科学与技术学院,广东 广州 510006)
责任编辑:任健男
1 开发背景
随着Internet的普及和有线数字电视的推广,越来越多的家庭正在享受着高科技带来的便利生活。有线数字机顶盒用户数量庞大,虽然家庭网络的拓扑结构比较简单,但用户一般不具备专业的操作技能,并且目前的机顶盒不支持对电视频道和互动应用进行实时监控,所以亟需开发基于现行平台的网络管理软件。
简单网络管理协议(SNMP)[1-3]是当下比较成熟的网络管理协议,从20世纪90年代初提出至今已经过近20年的发展,得到了众多网络产品提供商的支持。SNMP协议使用UDP进行通信,降低了连接建立和拆除的代价。
本文将着重讨论意法半导体有限公司(STMicro⁃electronics)的OS20/OS21平台上SNMP的实现。OS20/OS21是ST公司推出的基于ST芯片的开源的、免费的、轻量级的实时嵌入式操作系统,目前主要用于使用ST芯片的机顶盒中。
虽然现在有很多现成的成熟的SNMP Agent的开源软件,如net-snmp,但是ST芯片的处理能力不强,整个平台的资源相对紧缺,并且OS20操作系统移植但又不完全移植于Linux操作系统,所以必须从最底层开始,以最少的资源消耗方式开发SNMP的代理端。
2 SNMP的报文格式
SNMP有SNMPv1,SNMPv2和SNMPv3三个版本,本文使用SNMPv1进行代理端的开发,SNMPv2和SNMPv3的原理与SNMPv1类似。
SNMP使用基本编码规则(BER)对传输的内容进行编码[1]。BER的基本规则是通过将数据表示为标记(Tag)、长度(Length)及内容(Value),如图1所示。

图1 BER的组成
其中,标识的最高两位用表示ASN.1所定义的变量类别,有UNIVERSAL,APPLICATION,CONTEXT和PRIVATE四种;一位用于区分该变量是否为结构类型;……
