999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

ST OS20平臺上的SNMP代理端的開發

2011-08-10 04:43:38騰,陳
電視技術 2011年1期
關鍵詞:定義

周 騰,陳 建

(中山大學 信息科學與技術學院,廣東 廣州 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四種;一位用于區分該變量是否為結構類型;接下來五位指出了類型的標志號,通用類型的標志號 有 INTEGER,OCTET STRING,NULL,OBJECT IDENTIFIER,SEQUENCE和SEQUENCE OF五種。

SNMP的報文是使用了BER編碼的二進制數據流,有嚴格的層次結構,如圖2所示。整個SNMP報文是一個經過BER編碼的SEQUENCE類型,其中包含了三個部分:第一部分是一個經過BER編碼的IN?TEGER,代表SNMP報文的版本號;第二個部分是經過BER編碼的OCTET STRING代表該SNMP報文的團體名;第三個部分是通過BER編碼SNMP的協議數據單元[2]。在SNMP的協議數據單元(PDU)中,第一個字段是經過BER編碼的Request-id,接下來兩個字段是關于錯誤標識的,第三個字段就是各個OID經過BER編碼后的值。

圖2 SNMP協議的報文格式

3 管理信息庫定義

在SNMP中,使用管理信息庫(MIB)對被管設備的各個參數或指標進行定義。MIB以ASN.1語言及一些SNMP定義的擴展宏進行定義,使用類似于Internet域名系統的樹狀結構對被管設備進行管理[3-6]。

依據機頂盒的管理需求,本文將機頂盒SNMP的管理信息庫定義如圖3所示。在DVBMib的結點下面定義了DVBSystemInfo結點用于獲取機頂盒的基本信息,如制造商的名稱、機頂盒的位置等。DVBDevice結點定義了機頂盒上的軟硬件信息,如CPU、內存、閃存、操作系統內核及軟件版本等。DVBWorkSta結點定義了機頂盒的工作狀態,如CPU、內存、交換分區的使用情況,系統進程、電視節目、互動點播等的工作狀態。在DVBErrInfo結點上定義了相關的錯誤信息,以便運營商對差錯情況進行監控。

4 SNMP代理的實現

在上述工作的基礎上,該協議的協議棧可以使用分層的結構實現。根據IEEE定義的SNMP的基本類型,可以用Type類作為所有類型的父類,由Type類派生出SNMP的簡單的類型,如Null,Integer,OctetString和ObjectIdentifier等子類。另外,Structure類型也是由Type所派生,作為所有結構類型的父類,如Sequence,RequestPdu和ResponseP?du等子類。為了防止應用程序在構造這些類型的時候失敗而異常退出,這些類的構造只能做最簡單的事情,構建一個編碼的內容為空的Type對像或通過復制已有的編碼的內容構建一個Type對象。

該系統中使用SnmpMessage類作為請求報文類Request和響應報文類Response的基類。在SNMPMes?sage類中定義了SNMP的Version,Community,Request ID,Error Status,Error Index和 Variable Bindings等字段。SnmpMessage定義如圖4所示。

在該系統中將一次接受SNMP的請求和相應請求定義為一個會話,使用Session類抽象該會話的交互過程。Session類的對象以一個SnmpSocket對象為參數創建,在Session類中實現了ReceiveRequest,ProcessRequest和SendResponse等方法,用于SNMP的交互過程。

圖3 OS20/OS21機頂盒SNMP的MIB定義(截圖)

圖4 SnmpMessage定義

SnmpSocket類封裝了一些系統相關的網絡套接字的調用,包括了多路IO復用Select模型,還有網絡數據的接收(Receive)和發送(Send)方法。

FunctionRegister類定義為一個單件,在應用程序啟動之時完成唯一的靜態對象的初始化,在該對象的初始化中完成獲取系統相關信息的函數的注冊。該類的構造函數,拷貝構造函數和賦值操作符必須聲明為私有,以防止在使用中被非法篡改。FunctionRegister定義如圖5所示。整個系統的類圖如圖6所示。

圖5 FunctionRegister定義

圖6 系統類圖(截圖)

5 結論

文本SNMP代理端的開發與實現,并以net-snmp的軟件包為例,測試服務端和SNMP代理交互過程的實現。將上述的MIB庫配置到SNMP的服務端之后,啟動SNMP的守護進程,通過刷新system組的列表,在客戶端上得到了如圖7所示的請求數據包。

圖7 數據報

第1個下劃線段(3038),整個信息是個ASN.1的序列類型。根據編碼規則,前兩個字節分別指明了ASN.1的類型和長度。字節30即BER編碼中的標識,代表接下來是一個SEQUENCE結構,第2個字節38即BER編碼中的長度,代表接下來有56個字節(byte)的內容。第2個下劃線段是(020101),02標識了后面的內容為一個INTEGER,01指出這個INTEGER的長度為一個字節,最后的01為該INTEGER的值,代表的是該請求的SNMP版本號(version)為1。第3個下滑線段(04067075626c 6963),是一個OCTET STRING,長度為 6,表示該 SNMP報文的 Community,值為“pub?lic”。接下來是SNMP數據包的第2個組件PDU,由(a22b)可知它是結構類型GetResponse-PDU的編碼,2b是它的長度,即接下來內容的長度。第5個下劃線段(020427 cb bc 79)是GetResponse-PDU的第一個組件(Request-ID)的數據編碼,是個整數類型,長度為4,值為667663481。第6、第7個下劃線段分別編碼了PDU的第2個組件(error-status)和第 3個組件(er?ror-index),2個整數類型都被置為0,所以他們的TLV都為020100。第8個下劃線段(301d),Tag字節為30表明該部件是一個結構類型。其長度為1d,十進制為29,是剩余的全部字節,說明了該組件是PDU的最后一個組件,變量綁定列表。變量綁定類表是由多個OID和value組成的鍵值對構成。第9個下劃線段就是說明接下來是個<oid,value>的對象。第10段是OID的編碼,它是OBJECT IDENTIFI?ER類型,長度為8,值為1.3.6.1.2.1.1.1.0。第11個段<oid,value>對象的 value部分的編碼,是 OCTET STRING類型,長度為0f,值為“Wireless-Router”。經上面的分析,已經將一個完整的SNMP的GetResponse包的BER編碼進行了剖析。為了更為直觀地說明問題,用圖8表示出GetResponse包的BER結構。

圖8 SNMP數據包的編碼結構

[1]武孟軍,徐龑,任相臣.Visual C++開發基于SNMP的網絡管理軟件[M].北京:人民郵電出版社,2007:27-37.

[2]李江明.SNMP簡單網絡管理協議[M].北京:電子工業出版社,2007:41-60.

[3]BLACK U.Network management standards:SNMP,CMIP,TMN ,MIBs,and object libraries[M].New York:McGraw-Hill,1995.

[4]FEIT S M.SNMP:a guide to network management[M].New York :McGraw-Hill,1995.

[5]STALLINGS W.SNMP網絡管理[M].胡成松,汪凱,譯.北京:中國電力出版社,2001.

[6]郭軍.網絡管理[M].北京:北京郵電大學出版社,2003.

猜你喜歡
定義
以愛之名,定義成長
活用定義巧解統計概率解答題
例談橢圓的定義及其應用
題在書外 根在書中——圓錐曲線第三定義在教材和高考中的滲透
永遠不要用“起點”定義自己
海峽姐妹(2020年9期)2021-01-04 01:35:44
嚴昊:不定義終點 一直在路上
華人時刊(2020年13期)2020-09-25 08:21:32
定義“風格”
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
有壹手——重新定義快修連鎖
修辭學的重大定義
當代修辭學(2014年3期)2014-01-21 02:30:44
主站蜘蛛池模板: 日韩乱码免费一区二区三区| 国产网友愉拍精品视频| 波多野结衣视频一区二区| 92午夜福利影院一区二区三区| 久久久久久久蜜桃| 91在线日韩在线播放| 中文精品久久久久国产网址 | 日a本亚洲中文在线观看| 国产69囗曝护士吞精在线视频| 54pao国产成人免费视频| 夜夜操国产| 亚洲h视频在线| lhav亚洲精品| 欧美国产日本高清不卡| 国产精品久久自在自2021| 日韩欧美中文字幕在线精品| 亚洲国产高清精品线久久| 国产视频入口| 性69交片免费看| 中文字幕不卡免费高清视频| 中文字幕亚洲精品2页| 色婷婷狠狠干| 欧洲成人在线观看| 国产精品嫩草影院视频| 国产精品色婷婷在线观看| 一级福利视频| 福利在线免费视频| 国产不卡一级毛片视频| 人妻一区二区三区无码精品一区| 国产麻豆精品久久一二三| 制服丝袜一区| 精品久久综合1区2区3区激情| 日韩精品中文字幕一区三区| 国产在线视频福利资源站| 亚洲中文无码h在线观看 | 噜噜噜久久| 免费毛片视频| 亚洲成人动漫在线观看| 国产精品欧美在线观看| 波多野结衣无码AV在线| 亚洲欧洲日韩综合| 国产精品漂亮美女在线观看| 毛片手机在线看| 国产精品欧美日本韩免费一区二区三区不卡 | 欧美综合中文字幕久久| 欧美翘臀一区二区三区| 日本福利视频网站| 少妇精品在线| 国产91线观看| 国产欧美日韩资源在线观看 | 凹凸国产熟女精品视频| 人妻一区二区三区无码精品一区| 国产精品思思热在线| 无码乱人伦一区二区亚洲一| 免费国产在线精品一区| 女人18毛片一级毛片在线 | 亚洲第一网站男人都懂| 久久国产V一级毛多内射| 久久国产精品嫖妓| 99精品国产自在现线观看| 亚洲午夜综合网| 999国内精品视频免费| 日韩成人免费网站| 国产人妖视频一区在线观看| 高清久久精品亚洲日韩Av| 精品成人一区二区三区电影| 亚洲无码在线午夜电影| 久久久久人妻精品一区三寸蜜桃| 日本精品一在线观看视频| 亚洲天堂在线视频| 熟女日韩精品2区| 欧美在线导航| 中文精品久久久久国产网址 | 99国产精品国产高清一区二区| 婷婷五月在线| 国产高清国内精品福利| 在线观看国产小视频| 成人免费午间影院在线观看| 中文字幕在线看| 制服丝袜国产精品| 亚洲人精品亚洲人成在线| 思思99热精品在线|