亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

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

        林 剛 文全剛 傅曉陽(yáng) 尹 賀

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

        0 引 言

        伴隨著科技的發(fā)展,網(wǎng)絡(luò)及其技術(shù)的應(yīng)用在人們?nèi)粘I钪械谋戎卦絹?lái)越大。足不出戶,就可以通過(guò)互聯(lián)網(wǎng)輕松完成購(gòu)物、訂餐、訂房、訂票、預(yù)約車等活動(dòng)。支撐網(wǎng)絡(luò)服務(wù)的硬件設(shè)備是否正常運(yùn)行,在一定程度上影響著現(xiàn)代人的生活質(zhì)量。由此,關(guān)注網(wǎng)絡(luò)管理相關(guān)技術(shù)具有重大意義。概括來(lái)說(shuō),網(wǎng)絡(luò)管理是管理進(jìn)程(也稱管理站)通過(guò)代理進(jìn)程對(duì)被管設(shè)備運(yùn)行狀態(tài)的監(jiān)測(cè)。TCP/IP網(wǎng)絡(luò)管理協(xié)議標(biāo)準(zhǔn)框架由3個(gè)部分組成,管理信息庫(kù)MIB,管理信息結(jié)構(gòu)SMI和簡(jiǎn)單網(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)程需要知道對(duì)應(yīng)的對(duì)象標(biāo)識(shí)符OID以及數(shù)據(jù)結(jié)構(gòu)的定義。在MIB定義文件中,這些信息使用抽象語(yǔ)法標(biāo)記ASN.1(Abstract Syntax Notation One)進(jìn)行定義。ASN.1是國(guó)際的標(biāo)準(zhǔn)化,與廠家無(wú)關(guān),與平臺(tái)無(wú)關(guān),與語(yǔ)言無(wú)關(guān),使用ASN.1定義的數(shù)據(jù)結(jié)構(gòu),抽象程度高[2]。

        下面代碼說(shuō)明了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ù)類型,語(yǔ)法格式為“IMPORTS ... FROM...”。

        3) 數(shù)據(jù)格式的標(biāo)準(zhǔn)定義被包含在“IMPORTS”語(yǔ)句結(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)說(shuō)明[3]。

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

        1) 簡(jiǎn)單的OBJECT-TYPE類型定義,用于描述被管理對(duì)象[6]。如ifIndex,依附于父對(duì)象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”定義一種對(duì)象的標(biāo)識(shí)符值[6],如mib-2。

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

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

        使用IMPORTS和EXPORTS語(yǔ)句之后,MIB定義文件不再是孤立的,而是彼此相互關(guān)聯(lián)。在MIB定義文件中,使用EXPORTS語(yǔ)句,導(dǎo)出定義的數(shù)據(jù)類型或者是父OID值,在其他MIB定義文件中,使用IMPORTS語(yǔ)句,導(dǎo)入和使用這些數(shù)據(jù)類型和值。通過(guò)分析MIB定義文件中的IMPORTS和EXPORTS語(yǔ)句,可以明確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)管軟件的核心過(guò)程[7]。MIB文件解析API的設(shè)計(jì)過(guò)程可分為三個(gè)階段,即設(shè)計(jì)類、設(shè)計(jì)接口、實(shí)現(xiàn)接口。

        根據(jù)MIB定義文件的特點(diǎn),為數(shù)據(jù)類型設(shè)計(jì)類,一種數(shù)據(jù)類型對(duì)應(yīng)一個(gè)類,如圖 2所示。還可以使用其他的方法進(jìn)行類設(shè)計(jì),比如,設(shè)計(jì)一個(gè)通用類,對(duì)應(yīng)MIB定義文件中的任何一種數(shù)據(jù)類型。一個(gè)類描述一種數(shù)據(jù)類型的設(shè)計(jì),復(fù)雜度低、簡(jiǎn)單實(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是對(duì)應(yīng)的實(shí)現(xiàn)類。IMibDefinitionsDocumentParser是MIB定義文件解析器的接口,MibDefinitionsDocumentParser是對(duì)應(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屬性)一對(duì)多雙向的樹型結(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)前文件對(duì)象的依賴列表中,即在依賴圖中的“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)是對(duì)應(yīng)為“mib-2”對(duì)應(yīng)OID下的27,添加進(jìn)父節(jié)點(diǎn)列表。

        依賴圖的引入,能夠有助于準(zhǔn)確定位缺失的MIB文件,為用戶收集完整的MIB文件提供有效線索。對(duì)缺失的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ù)庫(kù)中,反序列化則是相反過(guò)程;GetErrors方法獲取解析器的錯(cuò)誤信息;GetMibNodeRoot方法獲取MIB樹的根節(jié)點(diǎn),通過(guò)循環(huán)訪問(wèn)MibNode的Children屬性,可以從Root節(jié)點(diǎn)開始深度優(yōu)先或廣度優(yōu)先遍歷MIB樹的所有節(jié)點(diǎn),通過(guò)循環(huán)訪問(wè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)用格式相對(duì)固定,功能靈活。如果將上述代碼中的第一行稍加修改,就可以實(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)信息;或者通過(guò)反序列化文件或者持久化數(shù)據(jù)記錄進(jìn)行MIB樹創(chuàng)建。

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

        3 結(jié) 語(yǔ)

        在前人研究成果的基礎(chǔ)上,提出了基于MIB文件依賴圖的解析MIB文件API的設(shè)計(jì)方法,過(guò)程中采用了面向?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)訪問(wèn);考慮更多的常用場(chǎng)景,豐富接口等。

        [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ù)在嵌入式儀器測(cè)控領(lǐng)域的研究與應(yīng)用[J].計(jì)算機(jī)應(yīng)用與軟件,2014,31(10):329-333.

        [10] 趙燦明,紀(jì)詩(shī)厚,石滾,等.面向以太網(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ì)
        瞞天過(guò)?!律O(shè)計(jì)萌到家
        設(shè)計(jì)秀
        海峽姐妹(2017年7期)2017-07-31 19:08:17
        有種設(shè)計(jì)叫而專
        Coco薇(2017年5期)2017-06-05 08:53:16
        可能是方法不對(duì)
        用對(duì)方法才能瘦
        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é)的重大定義
        山的定義
        日韩在线手机专区av| 69国产成人精品午夜福中文| 亚洲中文字幕国产视频| 男女18禁啪啪无遮挡激烈网站| 国产三级av在线播放| 国精产品一品二品国在线| 国产午夜精品电影久久| 中文字幕人妻少妇美臀| 国产av在线观看一区二区三区 | 久久国产精品国语对白| 喷水白浆视频在线观看| 少妇高潮一区二区三区99| 老外和中国女人毛片免费视频| 国产极品美女高潮抽搐免费网站| 最新国产美女一区二区三区 | 国产区精品一区二区不卡中文| 欧美精品v国产精品v日韩精品| 亚洲av无码日韩精品影片| 亚洲一区欧美二区| 熟女人妻中文字幕一区| 国产色婷婷久久又粗又爽| 区二区三区玖玖玖| 玩弄人妻少妇500系列网址| 国产精品亚洲片夜色在线| 91久久精品国产性色tv| 喷水白浆视频在线观看| 果冻传媒2021精品一区| 国产女高清在线看免费观看| 国产三级精品三级在专区中文| 一区二区三区四区中文字幕av| 中文字幕无码毛片免费看| 97国产免费全部免费观看| 少妇人妻中文字幕在线| 国产一区二区三区亚洲avv| 欧美精品v国产精品v日韩精品| 国产亚洲AV无码一区二区二三区| 亚洲中文字幕一二区精品自拍| 亚洲av无码一区东京热| 丰满多毛少妇做爰视频| 亚洲午夜看片无码| 久久亚洲精品中文字幕蜜潮 |