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

解析MIB文件的API設(shè)計(jì)與應(yīng)用

2018-04-18 11:07:45文全剛傅曉陽
關(guān)鍵詞:定義方法設(shè)計(jì)

林 剛 文全剛 傅曉陽 尹 賀

(吉林大學(xué)珠海學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)系 廣東 珠海 519041)

0 引 言

伴隨著科技的發(fā)展,網(wǎng)絡(luò)及其技術(shù)的應(yīng)用在人們?nèi)粘I钪械谋戎卦絹碓酱蟆W悴怀鰬簦涂梢酝ㄟ^互聯(lián)網(wǎng)輕松完成購物、訂餐、訂房、訂票、預(yù)約車等活動(dòng)。支撐網(wǎng)絡(luò)服務(wù)的硬件設(shè)備是否正常運(yùn)行,在一定程度上影響著現(xiàn)代人的生活質(zhì)量。由此,關(guān)注網(wǎng)絡(luò)管理相關(guān)技術(shù)具有重大意義。概括來說,網(wǎng)絡(luò)管理是管理進(jìn)程(也稱管理站)通過代理進(jìn)程對被管設(shè)備運(yùn)行狀態(tài)的監(jiān)測。TCP/IP網(wǎng)絡(luò)管理協(xié)議標(biāo)準(zhǔn)框架由3個(gè)部分組成,管理信息庫MIB,管理信息結(jié)構(gòu)SMI和簡單網(wǎng)絡(luò)管理協(xié)議SNMP。其中,MIB包含代理進(jìn)程可被查詢和修改的參數(shù),正在被使用的是MIB-II。互聯(lián)網(wǎng)工程部(IETF)于1991年發(fā)布了MIB-II的定義文件RFC(Request For Comments) 1213,用于替代原先在RFC 1156文件中定義的MIB-I;SMI是MIB的公用結(jié)構(gòu)和表示符號(hào);SNMP是管理進(jìn)程和代理進(jìn)程之間的通信協(xié)議,版本有v1、v2和v3[1]。MIB文件的準(zhǔn)確解析,是獲取設(shè)備準(zhǔn)確信息,有效網(wǎng)絡(luò)管理的堅(jiān)實(shí)基礎(chǔ)。本文描述MIB定義文件,分析了幾種有代表性的數(shù)據(jù)類型,設(shè)計(jì)了一套MIB文件解析API,并使用C#實(shí)現(xiàn)了MIB文件的解析。

1 MIB定義文件

1.1 MIB定義文件結(jié)構(gòu)

為了獲取到指定數(shù)據(jù)內(nèi)容,代理進(jìn)程需要知道對應(yīng)的對象標(biāo)識(shí)符OID以及數(shù)據(jù)結(jié)構(gòu)的定義。在MIB定義文件中,這些信息使用抽象語法標(biāo)記ASN.1(Abstract Syntax Notation One)進(jìn)行定義。ASN.1是國際的標(biāo)準(zhǔn)化,與廠家無關(guān),與平臺(tái)無關(guān),與語言無關(guān),使用ASN.1定義的數(shù)據(jù)結(jié)構(gòu),抽象程度高[2]。

下面代碼說明了MIB定義文件內(nèi)容結(jié)構(gòu),節(jié)選自RFC 1213[4],其中“……”表示省略的部分內(nèi)容。

RFC1213-MIB DEFINITIONS ::= BEGIN

IMPORTS

mgmt,NetworkAddress,IpAddress,Counter,Gauge,TimeTicks

FROM RFC1155-SMI

OBJECT-TYPE

FROM RFC-1212;

……

END

MIB定義文件內(nèi)容結(jié)構(gòu)特點(diǎn)如下:

1) 以“xxx DEFINITIONS ::= BEGIN”開頭,以“END”結(jié)尾。

2) 可以引用其他MIB文件中已經(jīng)定義的數(shù)據(jù)類型,語法格式為“IMPORTS ... FROM...”。

3) 數(shù)據(jù)格式的標(biāo)準(zhǔn)定義被包含在“IMPORTS”語句結(jié)束之后,“END”之前的中間部分。

1.2 MIB定義文件中常用數(shù)據(jù)類型

MIB定義文件中的使用數(shù)據(jù)類型較多,除了ASN.1定義的原始基本類型INTEGER、OCTET STRING、OBJECT IDENTIFIER和NULL之外,還包含定義類型NetworkAddress、IpAddress、Counter、Gauge、TimeTicks、Opaque,以及構(gòu)造類型SEQUENCE等,在RFC 1155中能找到相關(guān)說明[3]。

下面列出幾種有代表性的數(shù)據(jù)類型,相關(guān)代碼節(jié)選自RFC 1213[4]和RFC 1743[5]。

1) 簡單的OBJECT-TYPE類型定義,用于描述被管理對象[6]。如ifIndex,依附于父對象ifEntry。

ifIndex OBJECT-TYPE

SYNTAX INTEGER

ACCESS read-only

STATUS mandatory

DESCRIPTION

″A unique value for ……

::= { ifEntry 1}

2) SEQUENCE類型定義,如IfEntry類型,ifEntry包含子元素ifIndex,ifDescr等。

ifEntry OBJECT-TYPE

SYNTAX IfEntry

ACCESS not-accessible

STATUS mandatory

DESCRIPTION

″An interface ……

INDEX { ifIndex }

::= { ifTable 1 }

IfEntry ::=

SEQUENCE {

ifIndex

INTEGER,

ifDescr

DisplayString,

……

}

3) 有序列表類型定義,如ifTable是IfEntry有序列表類型。

ifTable OBJECT-TYPE

SYNTAX SEQUENCE OF IfEntry

ACCESS not-accessible

STATUS mandatory

DESCRIPTION

″A list ……

::= { interfaces 2 }

4) MODULE-IDENTITY類型定義,用于描述信息模塊[6],如dot5。

dot5 MODULE-IDENTITY

LAST-UPDATED ″9410231150Z″

ORGANIZATION ″IETF ……

::= { transmission 9 }

5) 使用“OBJECT IDENTIFIER”定義一種對象的標(biāo)識(shí)符值[6],如mib-2。

mib-2 OBJECT IDENTIFIER ::= { mgmt 1 }

1.3 MIB定義文件關(guān)系

使用IMPORTS和EXPORTS語句之后,MIB定義文件不再是孤立的,而是彼此相互關(guān)聯(lián)。在MIB定義文件中,使用EXPORTS語句,導(dǎo)出定義的數(shù)據(jù)類型或者是父OID值,在其他MIB定義文件中,使用IMPORTS語句,導(dǎo)入和使用這些數(shù)據(jù)類型和值。通過分析MIB定義文件中的IMPORTS和EXPORTS語句,可以明確MIB定義文件之間的相互依賴關(guān)系。部分公有RFC文件的定義依賴關(guān)系,如圖1所示。

圖1 MIB定義文件相互依賴圖

圖1中,實(shí)線表示導(dǎo)入或?qū)С龆x的數(shù)據(jù)類型,虛線表示導(dǎo)入或?qū)С鰯?shù)據(jù)值;“CLNS-MIB”被定義在RFC 1238文件中。

2 MIB文件解析API

2.1 MIB文件解析API設(shè)計(jì)

MIB文件的加載和解析是實(shí)現(xiàn)基于SNMP的網(wǎng)管軟件的核心過程[7]。MIB文件解析API的設(shè)計(jì)過程可分為三個(gè)階段,即設(shè)計(jì)類、設(shè)計(jì)接口、實(shí)現(xiàn)接口。

根據(jù)MIB定義文件的特點(diǎn),為數(shù)據(jù)類型設(shè)計(jì)類,一種數(shù)據(jù)類型對應(yīng)一個(gè)類,如圖 2所示。還可以使用其他的方法進(jìn)行類設(shè)計(jì),比如,設(shè)計(jì)一個(gè)通用類,對應(yīng)MIB定義文件中的任何一種數(shù)據(jù)類型。一個(gè)類描述一種數(shù)據(jù)類型的設(shè)計(jì),復(fù)雜度低、簡單實(shí)用、代碼可讀性強(qiáng)。

圖2 MIB定義中常見的數(shù)據(jù)結(jié)構(gòu)類圖

除了常見的數(shù)據(jù)類型之外,解析MIB定義文件和構(gòu)建MIB樹還需要設(shè)計(jì)IMibNode接口和MibNode類,用于存儲(chǔ)MIB樹的節(jié)點(diǎn)信息,以及兩個(gè)核心接口和實(shí)現(xiàn)類,如圖3和圖4所示。

圖3 IMibNode接口和MibNode類圖

圖4 MIB定義文件解析接口和實(shí)現(xiàn)類圖

IMibNode的AddChild方法用于往當(dāng)前節(jié)點(diǎn)中添加子節(jié)點(diǎn)。IMibDefinitionsDocument是MIB定義文件的接口,MibDefinitionsDocument是對應(yīng)的實(shí)現(xiàn)類。IMibDefinitionsDocumentParser是MIB定義文件解析器的接口,MibDefinitionsDocumentParser是對應(yīng)的實(shí)現(xiàn)類。整個(gè)API中,最核心的方法是解析器中的Parse,其主要算法如下:

步驟1遍歷需要解析的所有MIB文件IMPORTS部分,構(gòu)建依賴圖。其數(shù)據(jù)結(jié)構(gòu)可采用多路徑樹[8]、雙親樹表示法[9]、孩子鏈表法等。本文采用C#實(shí)現(xiàn)了面向?qū)ο蟮碾p親(Parent屬性)、孩子(Children屬性)一對多雙向的樹型結(jié)構(gòu),方便根、葉子和中間節(jié)點(diǎn)的遍歷。

1) 解析文件定義名稱,比如從“RFC1213-MIB DEFINITIONS ::= BEGIN”中解析出“RFC1213-MIB”。

2) 根據(jù)IMPORTS的內(nèi)容,解析依賴關(guān)系,逐步形成依賴圖。比如從“IMPORTS ... FROM RFC1155-SMI”解析出“RFC1155-SMI”,添加進(jìn)當(dāng)前文件對象的依賴列表中,即在依賴圖中的“RFC1155-SMI”應(yīng)該優(yōu)先于當(dāng)前文檔被解析。

步驟2基于第1步生成的依賴圖,按照順序,深度優(yōu)先或者廣度優(yōu)先遍歷MIB文件的其他部分,解析每個(gè)文件的內(nèi)容,構(gòu)建MIB樹。包括MODULE-IDENTITY,OBJECT-TYPE,Sequence類型等。比如從“application MODULE-IDENTITY ... ::= { mib-2 27 }”中解析出“application”父節(jié)點(diǎn)是對應(yīng)為“mib-2”對應(yīng)OID下的27,添加進(jìn)父節(jié)點(diǎn)列表。

依賴圖的引入,能夠有助于準(zhǔn)確定位缺失的MIB文件,為用戶收集完整的MIB文件提供有效線索。對缺失的MIB文件默認(rèn)不分析,提高M(jìn)IB樹的構(gòu)建效率,此時(shí)的MIB樹與RFC 1155定義的未標(biāo)記根(unlabeled root)嚴(yán)格保持一致。使用兩次遍歷,第一次構(gòu)建依賴圖,第二次構(gòu)建MIB樹。其優(yōu)點(diǎn)是分層清晰,便于理解。在構(gòu)建MIB樹時(shí),按照已經(jīng)生成的依賴圖,從根節(jié)點(diǎn)出發(fā),依次往葉子節(jié)點(diǎn)方向進(jìn)行構(gòu)建,避免了復(fù)雜的遞歸調(diào)用。構(gòu)建MIB樹中當(dāng)前元素時(shí),其父節(jié)點(diǎn)已經(jīng)被解析,且被標(biāo)識(shí),所以能高效、準(zhǔn)確地定位到父節(jié)點(diǎn),即除數(shù)據(jù)類型自身解析外,幾乎不需要花費(fèi)更多額外代價(jià)去處理節(jié)點(diǎn)的關(guān)聯(lián)關(guān)系。

IMibDefinitionsDocumentParser中的AddFile方法是往解析器中增加MIB定義文件;Serialize和Deserialize是序列化和反序列化操作,序列化將當(dāng)前節(jié)點(diǎn)(包括所有子節(jié)點(diǎn)信息)輸出到指定文件或者數(shù)據(jù)庫中,反序列化則是相反過程;GetErrors方法獲取解析器的錯(cuò)誤信息;GetMibNodeRoot方法獲取MIB樹的根節(jié)點(diǎn),通過循環(huán)訪問MibNode的Children屬性,可以從Root節(jié)點(diǎn)開始深度優(yōu)先或廣度優(yōu)先遍歷MIB樹的所有節(jié)點(diǎn),通過循環(huán)訪問MibNode的Parent屬性,可以直達(dá)Root節(jié)點(diǎn),且只有一條路徑。

2.2 MIB文件解析API應(yīng)用

MIB文件解析API接口設(shè)計(jì)數(shù)目并不多,其應(yīng)用十分方便。連續(xù)調(diào)用AddFile方法往解析器中增加完全部相關(guān)MIB文件之后,調(diào)用Parse方法進(jìn)行解析,調(diào)用GetMibNodeRoot方法獲取解析得到的完整MIB樹,調(diào)用Serialize方法將MIB樹序列化到指定文件。相關(guān)代碼片段如下:

var p = new MibDefinitionsDocumentParser();

p.AddFile(fileName1);

……

p.AddFile(xxx);

p.Parse();

mibNode = p.GetMibNodeRoot();

p.Serialize(outFileName);

MIB文件解析API接口的應(yīng)用格式相對固定,功能靈活。如果將上述代碼中的第一行稍加修改,就可以實(shí)現(xiàn)在解析得到的MIB樹基礎(chǔ)上,進(jìn)一步解析其他MIB文件。修改代碼如下:

var p = new MibDefinitionsDocumentParser(mibNode);

使用解析MIB文件的API的應(yīng)用程序,在創(chuàng)建MIB樹時(shí),可以按照需要選擇合適的方法,或者創(chuàng)建完整的MIB樹;或者基于現(xiàn)有MIB樹添加更多節(jié)點(diǎn)信息;或者通過反序列化文件或者持久化數(shù)據(jù)記錄進(jìn)行MIB樹創(chuàng)建。

利用解析得到的MIB樹,根據(jù)特定節(jié)點(diǎn)OID信息,并獲取其值,可以實(shí)現(xiàn)對支持SNMP的網(wǎng)絡(luò)設(shè)備進(jìn)行故障跟蹤和準(zhǔn)確定位[10],包括調(diào)制解調(diào)器、路由器、交換機(jī)、服務(wù)器、工作站、打印機(jī)等[11]。

3 結(jié) 語

在前人研究成果的基礎(chǔ)上,提出了基于MIB文件依賴圖的解析MIB文件API的設(shè)計(jì)方法,過程中采用了面向?qū)ο蟮慕涌凇㈩悺?shí)現(xiàn)三步設(shè)計(jì)方法,并在實(shí)際項(xiàng)目中得到了應(yīng)用,為有效的網(wǎng)絡(luò)管理奠定基礎(chǔ)。今后,可以為API引入并行算法,提高性能;標(biāo)準(zhǔn)化持久化文件和數(shù)據(jù)記錄格式,完善API應(yīng)用的多點(diǎn)訪問;考慮更多的常用場景,豐富接口等。

[1] Stevens W Richar.TCP/IP詳解卷1:協(xié)議[M].范建華,胥光輝,張濤,等譯.北京:機(jī)械工業(yè)出版社,2014.

[2] Larmouth John.ASN.1 Complete[M].Massachusetts:Morgan Kaufmann Publishers,1999.

[3] Rose M,McCloghrie K.RFC 1155-1990:Structure and Identification of Management Information for TCP/IP-based Internets[S].1990:1-13.

[4] McCloghrie K,Rose M.RFC 1213-1991:Management Information Base for Network Management of TCP/IP-based internets:MIB-II[S].1991:12-67.

[5] McCloghrie K,Decker E.RFC 1743-1994:IEEE 802.5 MIB using SMIv2[S].1994:4-5.

[6] McCloghrie K,Perkins D,Schoenwaelder J.RFC 2578-1999:Structure of Management Information Version 2 (SMIv2)[S].1999:2-19.

[7] 龔尚福,劉二恩,馮健.基于SNMP的MIB樹結(jié)構(gòu)研究與實(shí)現(xiàn)[J].計(jì)算機(jī)應(yīng)用與軟件,2013,30(12):163-166.

[8] 周劍,張曉彤,王沁.SNMP協(xié)議動(dòng)態(tài)MIB結(jié)構(gòu)與高效查找算法[J].計(jì)算機(jī)工程,2008,34(2):171-174.

[9] 張姣,李宥謀,何萌,等.SNMP網(wǎng)管技術(shù)在嵌入式儀器測控領(lǐng)域的研究與應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(10):329-333.

[10] 趙燦明,紀(jì)詩厚,石滾,等.面向以太網(wǎng)的網(wǎng)絡(luò)故障自動(dòng)實(shí)時(shí)發(fā)現(xiàn)與定位方法[J].計(jì)算機(jī)應(yīng)用與軟件,2016,33(9):101-105.

[11] SNMP wiki[EB/OL].[2017-4-7].https://en.wikipedia.org/wiki/Simple_Network_Management_Protocol.

猜你喜歡
定義方法設(shè)計(jì)
瞞天過海——仿生設(shè)計(jì)萌到家
設(shè)計(jì)秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
有種設(shè)計(jì)叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
用對方法才能瘦
Coco薇(2016年2期)2016-03-22 02:42:52
成功的定義
山東青年(2016年1期)2016-02-28 14:25:25
四大方法 教你不再“坐以待病”!
Coco薇(2015年1期)2015-08-13 02:47:34
捕魚
修辭學(xué)的重大定義
山的定義
設(shè)計(jì)之味
舒適廣告(2008年9期)2008-09-22 10:02:48
主站蜘蛛池模板: 久久无码高潮喷水| 91视频免费观看网站| 国产精品女在线观看| 一级做a爰片久久免费| 国产福利微拍精品一区二区| 丁香亚洲综合五月天婷婷| 欧美一区二区三区香蕉视| 国产精品永久久久久| 亚洲精品动漫在线观看| 99在线观看免费视频| 免费又爽又刺激高潮网址| 免费毛片在线| a级毛片毛片免费观看久潮| 国产欧美另类| 国产一区亚洲一区| 在线亚洲精品自拍| 亚洲三级影院| 孕妇高潮太爽了在线观看免费| 亚洲精品波多野结衣| 伊人五月丁香综合AⅤ| 最新日韩AV网址在线观看| 国产午夜无码片在线观看网站| 无码国内精品人妻少妇蜜桃视频| 欧美精品在线免费| 91在线激情在线观看| 国产成在线观看免费视频| 婷婷色一区二区三区| 欧美成人区| 欧美日本激情| 久久人与动人物A级毛片| 国产区在线观看视频| 亚洲69视频| 欧洲成人在线观看| 日韩毛片视频| 亚洲成av人无码综合在线观看| 爽爽影院十八禁在线观看| 国产精品第页| 2020精品极品国产色在线观看| 天天色综网| 亚洲毛片网站| 久久精品国产999大香线焦| 尤物成AV人片在线观看| 日韩精品无码免费一区二区三区 | 久久综合色88| 亚洲欧洲日韩国产综合在线二区| 一级毛片免费高清视频| 精品成人一区二区三区电影| 亚洲精品国偷自产在线91正片| 久久久久亚洲Av片无码观看| 天天躁夜夜躁狠狠躁躁88| 99久久国产综合精品女同| 国产第一福利影院| 天堂在线www网亚洲| 91无码网站| 欧美v在线| 一本大道香蕉高清久久| 黄色成年视频| 国产高清免费午夜在线视频| 亚洲女人在线| 国产福利小视频高清在线观看| 久草视频精品| 91久久天天躁狠狠躁夜夜| 九一九色国产| 色精品视频| 国产青青草视频| 久久亚洲国产视频| 国产在线观看第二页| a毛片在线免费观看| 国产无码高清视频不卡| 免费a级毛片18以上观看精品| 久久综合色播五月男人的天堂| 色135综合网| 欧美日韩国产系列在线观看| 成年看免费观看视频拍拍| 国产视频大全| 91小视频版在线观看www| 精品乱码久久久久久久| 欧美在线视频a| 伊人狠狠丁香婷婷综合色| 国产毛片高清一级国语| 2020最新国产精品视频| 老色鬼欧美精品|