1. <strong id="7actg"></strong>
    2. <table id="7actg"></table>

    3. <address id="7actg"></address>
      <address id="7actg"></address>
      1. <object id="7actg"><tt id="7actg"></tt></object>

        一文讀懂什么是SNMP

        共 7559字,需瀏覽 16分鐘

         ·

        2021-05-29 20:20

        關(guān)注「開源Linux」,選擇“設(shè)為星標(biāo)”
        回復(fù)「學(xué)習(xí)」,有我為您特別篩選的學(xué)習(xí)資料~


        簡介

        簡單網(wǎng)絡(luò)管理協(xié)議SNMP(Simple Network Management Protocol)用于網(wǎng)絡(luò)設(shè)備的管理。網(wǎng)絡(luò)設(shè)備種類多種多樣,不同設(shè)備廠商提供的管理接口(如命令行接口)各不相同,這使得網(wǎng)絡(luò)管理變得愈發(fā)復(fù)雜。為解決這一問題,SNMP應(yīng)運而生。SNMP作為廣泛應(yīng)用于TCP/IP網(wǎng)絡(luò)的網(wǎng)絡(luò)管理標(biāo)準(zhǔn)協(xié)議,提供了統(tǒng)一的接口,從而實現(xiàn)了不同種類和廠商的網(wǎng)絡(luò)設(shè)備之間的統(tǒng)一管理。

        SNMP協(xié)議分為三個版本:SNMPv1、SNMPv2cSNMPv3
        @歡迎關(guān)注公眾號:網(wǎng)絡(luò)工程師阿龍
        SNMPv1是SNMP協(xié)議的最初版本,提供最小限度的網(wǎng)絡(luò)管理功能。SNMPv1基于團(tuán)體名認(rèn)證,安全性較差,且返回報文的錯誤碼也較少。

        SNMPv2c也采用團(tuán)體名認(rèn)證。在SNMPv1版本的基礎(chǔ)上引入了GetBulk和Inform操作,支持更多的標(biāo)準(zhǔn)錯誤碼信息,支持更多的數(shù)據(jù)類型(Counter64、Counter32)。

        SNMPv3主要在安全性方面進(jìn)行了增強,提供了基于USM(User Security Module)的認(rèn)證加密和基于VACM(View-based Access Control Model)的訪問控制。SNMPv3版本支持的操作和SNMPv2c版本支持的操作一樣。


        SNMP系統(tǒng)組成


        SNMP系統(tǒng)由網(wǎng)絡(luò)管理系統(tǒng)NMS(Network Management System)、SNMP Agent、被管對象Management object和管理信息庫MIB(Management Information Base)四部分組成。NMS作為整個網(wǎng)絡(luò)的網(wǎng)管中心,對設(shè)備進(jìn)行管理。

        每個被管理設(shè)備中都包含駐留在設(shè)備上的SNMP Agent進(jìn)程、MIB和多個被管對象。NMS通過與運行在被管理設(shè)備上的SNMP Agent交互,由SNMP Agent通過對設(shè)備端的MIB進(jìn)行操作,完成NMS的指令。

        圖1-1 SNMP系統(tǒng)組成

        NMS

        NMS是網(wǎng)絡(luò)中的管理者,是一個采用SNMP協(xié)議對網(wǎng)絡(luò)設(shè)備進(jìn)行管理/監(jiān)視的系統(tǒng),運行在NMS服務(wù)器上。


        NMS可以向設(shè)備上的SNMP Agent發(fā)出請求,查詢或修改一個或多個具體的參數(shù)值。


        NMS可以接收設(shè)備上的SNMP Agent主動發(fā)送的SNMP Traps,以獲知被管理設(shè)備當(dāng)前的狀態(tài)。


        SNMP Agent

        SNMP Agent是被管理設(shè)備中的一個代理進(jìn)程,用于維護(hù)被管理設(shè)備的信息數(shù)據(jù)并響應(yīng)來自NMS的請求,把管理數(shù)據(jù)匯報給發(fā)送請求的NMS。

        SNMP Agent接收到NMS的請求信息后,通過MIB表完成相應(yīng)指令后,并把操作結(jié)果響應(yīng)給NMS。


        當(dāng)設(shè)備發(fā)生故障或者其它事件時,設(shè)備會通過SNMP Agent主動發(fā)送SNMP Traps給NMS,向NMS報告設(shè)備當(dāng)前的狀態(tài)變化。


        Managed Object

        Managed object指被管理對象。每一個設(shè)備可能包含多個被管理對象,被管理對象可以是設(shè)備中的某個硬件,也可以是在硬件、軟件(如路由選擇協(xié)議)上配置的參數(shù)集合。


        MIB

        MIB是一個數(shù)據(jù)庫,指明了被管理設(shè)備所維護(hù)的變量。MIB在數(shù)據(jù)庫中定義了被管理設(shè)備的一系列屬性:對象的名稱、對象的狀態(tài)、對象的訪問權(quán)限和對象的數(shù)據(jù)類型等。MIB也可以看作是NMS和SNMP Agent之間的一個接口,通過這個接口,NMS對被管理設(shè)備所維護(hù)的變量進(jìn)行查詢/設(shè)置操作。


        MIB是以樹狀結(jié)構(gòu)進(jìn)行存儲的,如圖1-2所示。樹的節(jié)點表示被管理對象,它可以用從根開始的一條路徑唯一地識別,這條路徑就稱為OID,如system的OID為1.3.6.1.2.1.1,interfaces的OID為1.3.6.1.2.1.2。


        子樹可以用該子樹根節(jié)點的OID來標(biāo)識。如以private為根節(jié)點的子樹的OID為private的OID——{1.3.6.1.4}。


        圖1-2 OID樹結(jié)構(gòu)


        用戶可以配置MIB視圖來限制NMS能夠訪問的MIB對象。MIB視圖是MIB的子集合,用戶可以將MIB視圖內(nèi)的對象配置為exclude或include。exclude表示當(dāng)前視圖不包含該MIB子樹的所有節(jié)點;include表示當(dāng)前視圖包含該MIB子樹的所有節(jié)點。

        @歡迎關(guān)注公眾號:網(wǎng)絡(luò)工程師阿龍

        SNMP查詢

        SNMP查詢是指NMS主動向SNMP Agent發(fā)送查詢請求,如圖1-3所示。SNMP Agent接收到查詢請求后,通過MIB表完成相應(yīng)指令,并將結(jié)果反饋給NMS。


        SNMP查詢操作有三種:Get、GetNext和GetBulk。SNMPv1版本不支持GetBulk操作。


        Get操作:NMS使用該操作從SNMP Agent中獲取一個或多個參數(shù)值。

        GetNext操作:NMS使用該操作從SNMP Agent中獲取一個或多個參數(shù)的下一個參數(shù)值。

        GetBulk操作:基于GetNext實現(xiàn),相當(dāng)于連續(xù)執(zhí)行多次GetNext操作。在NMS上可以設(shè)置被管理設(shè)備在一次GetBulk報文交互時,執(zhí)行GetNext操作的次數(shù)。


        圖1-3 SNMP查詢操作


        SNMP查詢操作的報文

        SNMPv1和SNMPv2c查詢報文格式如圖1-4所示。SNMPv1和SNMPv2c的報文主要由版本、團(tuán)體名、SNMP PDU組成。各類SNMP操作的報文封裝在SNMP PDU中。


        圖1-4 SNMPv1/SNMPv2c查詢操作報文格式



        報文中的主要字段如下:


        版本:表示SNMP的版本,如果是SNMPv1報文則對應(yīng)字段值為0,SNMPv2c則為1。

        團(tuán)體名:用于在SNMP Agent與NMS之間完成認(rèn)證,字符串形式,用戶可自行定義。團(tuán)體名包括“read”和“write”兩種,執(zhí)行SNMP查詢操作時,采用“read”團(tuán)體名進(jìn)行認(rèn)證;執(zhí)行SNMP設(shè)置操作時,則采用“write”團(tuán)體名進(jìn)行認(rèn)證。

        Request ID:用于匹配請求和響應(yīng),SNMP給每個請求分配全局唯一的ID。

        Non repeaters/Max repetitions:GetBulk操作基于GetNext操作實現(xiàn),相當(dāng)于多次執(zhí)行GetNext操作,這兩個參數(shù)用于設(shè)置執(zhí)行GetNext操作次數(shù)。

        Error status:用于表示在處理請求時出現(xiàn)的狀況。

        Error index:差錯索引。當(dāng)出現(xiàn)異常情況時,提供變量綁定列表(Variable bindings)中導(dǎo)致異常的變量的信息。

        Variable bindings:變量綁定列表,由變量名和變量值對組成。

        通過捕獲報文工具獲取設(shè)備發(fā)送的SNMPv2c版本Get請求報文如圖1-5所示,SNMPv2c版本GetNext請求報文如圖1-6所示。SNMPv2c版本GetBulk請求報文如圖1-7所示。


        圖1-5 SNMPv2c版本Get請求報文


        圖1-6 SNMPv2c版本GetNext請求報文

        圖1-7 SNMPv2c版本GetBulk請求報文

        SNMPv3查詢報文格式如圖1-8所示,SNMPv3報文主要由版本、MsgID、MaxSize、Flags、Security Model、Security Parameters、Context EngineID、Context Name和SNMP PDU組成。SNMPv3報文的SNMP PDU的格式與SNMPv2c的一致。SNMPv3版本的報文可以使用鑒權(quán)機制,會對Context EngineID、Context Name和SNMP PDU進(jìn)行加密。


        圖1-8 SNMPv3報文格式


        報文中的主要字段定義如下:


        版本:表示SNMP的版本,如果是SNMPv3報文則對應(yīng)字段值為3。

        MsgID:請求報文的序列號。

        MaxSize:消息發(fā)送者所能夠容納的消息最大字節(jié),同時也表明了發(fā)送者能夠接收到的最大字節(jié)數(shù)。

        Flags:消息標(biāo)識位,占一個字節(jié),有三個特征位:reportableFlag,privFlag和authFlag。

        reportableFlag=1,在能夠?qū)е翿eport PDU生成的情況下,SNMPv3報文接收方必須向發(fā)送方發(fā)送Report PDU;reportableFlag=0,SNMPv3報文接收方不發(fā)送Report PDU。只有在SNMP PDU部分不能被解密時(比如由于密鑰錯誤導(dǎo)致解密失敗等)才會用到Report。

        privFlag=1,對SNMPv3報文進(jìn)行加密;privFlag=0,不對SNMPv3報文進(jìn)行加密。

        authFlag=1,對SNMPv3報文進(jìn)行鑒權(quán);authFlag=0,不對SNMPv3報文進(jìn)行鑒權(quán)。

        除了privFlag=1,authFlag=0的情況外,其他任意組合都可以,所以在配置SNMPv3的安全級別的時候需要注意:如果用戶組是privacy級別,用戶和告警主機就必須是privacy級別;用戶組是authentication級別,用戶和告警主機可以是privacy或者authentication級別。


        SecurityModel:消息采用的安全模型,發(fā)送方和接收方必須采用相同的安全模型。

        SecurityParameters:安全參數(shù),包含SNMP實體引擎的相關(guān)信息、用戶名、鑒權(quán)參數(shù)、加密參數(shù)等安全信息。

        Context EngineID:SNMP唯一標(biāo)識符,和PDU類型一起決定應(yīng)該發(fā)往哪個應(yīng)用程序。

        Context Name:用于確定Context EngineID對被管理設(shè)備的MIB視圖。


        SNMPv3提供了鑒權(quán)機制,推薦用戶使用SNMPv3版本。通過捕獲報文工具獲取設(shè)備發(fā)送的SNMPv3版本加密的Get請求報文如圖1-9所示,SNMPv3版本不加密的Get請求報文如圖1-10所示。


        圖1-9 SNMPv3版本加密的Get請求報文

        圖1-10 SNMPv3版本不加密Get請求報文

        SNMP查詢操作的工作原理

        不同版本的SNMP查詢操作的工作原理基本一致,唯一的區(qū)別是SNMPv3版本增加了身份驗證和加密處理。下面以SNMPv2c版本的Get操作為例介紹SNMP查詢操作的工作原理。


        假定NMS想要獲取被管理設(shè)備MIB節(jié)點sysContact的值,使用可讀團(tuán)體名為public,過程如下所示:


        NMS:向SNMP Agent發(fā)送Get請求報文。報文中各字段的設(shè)置如下:版本號為所使用的SNMP版本;團(tuán)體名為public;PDU中PDU類型為Get類型,綁定變量填入MIB節(jié)點名sysContact。


        SNMP Agent:首先對報文中攜帶版本號和團(tuán)體名進(jìn)行認(rèn)證,認(rèn)證成功后,SNMP Agent根據(jù)請求查詢MIB中的sysContact節(jié)點,得到sysContact的值并將其封裝到Response報文中的PDU,向NMS發(fā)送響應(yīng);如果查詢不成功,SNMP Agent會向NMS發(fā)送出錯響應(yīng)。


        SNMP設(shè)置

        SNMP設(shè)置是指NMS主動向SNMP Agent發(fā)送對設(shè)備進(jìn)行Set操作的請求,如圖1-11所示。SNMP Agent接收到Set請求后,通過MIB表完成相應(yīng)指令,并將結(jié)果反饋給NMS。


        SNMP設(shè)置操作只有一種Set,NMS使用該操作可設(shè)置SNMP Agent中的一個或多個參數(shù)值。


        圖1-11 SNMP Set操作


        SNMP Set操作的報文

        SNMPv1和SNMPv2c的Set操作報文格式如圖1-12所示。一般情況下,SNMPv3的Set操作信息是經(jīng)過加密封裝在SNMP PDU中,其格式與SNMPv2c的Set操作報文格式一致。


        圖1-12 SNMPv1/SNMPv2c Set操作報文格式


        報文中主要字段的含義如下:


        Request ID:用于匹配請求和響應(yīng),SNMP給每個請求分配全局唯一的ID。

        Error status:用于表示在處理請求時出現(xiàn)的狀況。

        Error index:差錯索引。當(dāng)出現(xiàn)異常情況時,提供變量綁定列表(Variable bindings)中導(dǎo)致異常的變量的信息。

        Variable bindings:變量綁定列表,由變量名和變量值對組成。

        通過捕獲報文工具獲取設(shè)備發(fā)送的SNMPv2c版本Set請求報文如圖1-13所示。


        圖1-13 SNMPv2c版本Set請求報文

        @歡迎關(guān)注公眾號:網(wǎng)絡(luò)工程師阿龍

        SNMP Set操作的工作原理

        不同版本的SNMP Set操作的工作原理基本一致,唯一的區(qū)別是SNMPv3版本增加了身份驗證和加密處理。下面以SNMPv3版本的Set操作為例介紹SNMP Set操作的工作原理。


        假定NMS想要設(shè)置被管理設(shè)備MIB節(jié)點sysName的值為HUAWEI,過程如下所示:


        NMS:向Agent發(fā)送不帶安全參數(shù)的Set請求報文,向SNMP Agent獲取Context EngineID、Context Name和安全參數(shù)(SNMP實體引擎的相關(guān)信息)。

        SNMP Agent:響應(yīng)NMS的請求,并向NMS反饋請求的參數(shù)。

        NMS:再次向SNMP Agent發(fā)送Set請求,報文中各字段的設(shè)置如下:

        版本:SNMPv3

        報文頭數(shù)據(jù):指明采用鑒權(quán)、加密方式。

        安全參數(shù):NMS通過配置的算法計算出鑒權(quán)參數(shù)和加密參數(shù)。將這些參數(shù)和獲取的安全參數(shù)填入相應(yīng)字段。

        PDU:將獲取的Context EngineID和Context Name填入相應(yīng)字段,PDU類型設(shè)置為Set,綁定變量填入MIB節(jié)點名sysName和需要設(shè)置的值HUAWEI,并使用已配置的加密算法對PDU進(jìn)行加密。

        SNMP Agent:首先對報文中攜帶版本號和團(tuán)體名進(jìn)行認(rèn)證,認(rèn)證成功后,SNMP Agent根據(jù)請求設(shè)置管理變量在管理信息庫MIB中對應(yīng)的節(jié)點,設(shè)置成功后向NMS發(fā)送響應(yīng);如果設(shè)置不成功,Agent會向NMS發(fā)送出錯響應(yīng)。

        SNMP Traps

        SNMP Traps是指SNMP Agent主動將設(shè)備產(chǎn)生的告警或事件上報給NMS,以便網(wǎng)絡(luò)管理員及時了解設(shè)備當(dāng)前運行的狀態(tài)。


        SNMP Agent上報SNMP Traps有兩種方式:Trap和Inform。SNMPv1版本不支持Inform。Trap和Inform的區(qū)別在于,SNMP Agent通過Inform向NMS發(fā)送告警或事件后,NMS需要回復(fù)InformResponse進(jìn)行確認(rèn),如圖1-14所示。


        圖1-14 SNMP Traps操作



        SNMP Traps報文格式

        SNMPv1的Trap操作報文格式如圖1-15所示,Trap PDU由PDU type、enterprise、Agent addr、Generic trap、Specific trap、Time stamp和Variable bindings組成。


        圖1-15 SNMPv1版本Trap操作報文格式

        @歡迎關(guān)注公眾號:網(wǎng)絡(luò)工程師阿龍

        報文中的主要字段定義如下:


        enterprise:Trap源(生成Trap的設(shè)備)的類型。

        Agent addr:Trap源的地址。

        Generic trap:通用Trap類型,包括coldStart、warmStart、linkDown、linkUp、authenticationFailure、egpNeighborLoss、enterpriseSpecific。

        Specific trap:企業(yè)私有Trap信息。

        Time stamp:上次重新初始化網(wǎng)絡(luò)實體和產(chǎn)生Trap之間所持續(xù)的時間。

        Variable bindings:變量綁定列表,由變量名和變量值對組成。

        通過捕獲報文工具獲取設(shè)備發(fā)送的SNMPv1版本Trap報文如圖1-16所示。


        圖1-16 SNMPv1版本Trap報文


        SNMPv2c的Trap操作的報文格式和Inform操作的報文格式如圖1-17所示。一般情況下,SNMPv3的Trap操作或inform操作是經(jīng)過加密封裝在SNMP PDU中,其格式與SNMPv2c的Trap操作或inform操作的報文格式一致。


        圖1-17 SNMPv2版本Trap/Inform操作報文格式


        報文中的主要字段定義如下:


        Request ID:用于匹配請求和響應(yīng),SNMP給每個請求分配全局唯一的ID。

        Variable bindings:變量綁定列表,由變量名和變量值對組成。

        通過捕獲報文工具獲取設(shè)備發(fā)送的SNMPv2版本Trap報文如圖1-18所示,SNMPv2版本Inform報文如圖1-19所示。


        圖1-18 SNMPv2版本Trap報文


        圖1-19 SNMPv2版本Inform報文


        SNMP Traps工作原理

        Trap操作工作原理


        Trap不屬于NMS對被管理設(shè)備的基本操作,它是被管理設(shè)備的自發(fā)行為。當(dāng)被管理設(shè)備達(dá)到告警的觸發(fā)條件時,會通過SNMP Agent向NMS發(fā)送Trap消息,告知設(shè)備側(cè)出現(xiàn)的異常情況,便于網(wǎng)絡(luò)管理人員及時處理。例如被管理設(shè)備熱啟動后,SNMP Agent會向NMS發(fā)送warmStart的Trap。


        這種Trap信息是受限制的。只有在設(shè)備端的模塊達(dá)到模塊預(yù)定義的告警觸發(fā)條件時,SNMP Agent才會向管理進(jìn)程報告。這種方法的好處是僅在嚴(yán)重事件發(fā)生時才發(fā)送Trap信息,減少報文交互產(chǎn)生的流量。


        Inform操作工作原理


        Inform操作也是被管理設(shè)備向NMS主動發(fā)送告警。與Trap告警不同的是,被管理設(shè)備發(fā)送Inform告警后,需要NMS進(jìn)行接收確認(rèn)。如果被管理設(shè)備沒有收到確認(rèn)信息則:


        將告警或事件暫時保存在Inform緩存中。

        重復(fù)發(fā)送該告警或事件,直到NMS確認(rèn)收到該告警或者發(fā)送次數(shù)達(dá)到最大重傳次數(shù)。

        被管設(shè)備上會生成相應(yīng)的告警或事件日志。

        由此可知,使用Inform操作會占用較多的系統(tǒng)資源。

        SNMP 端口號

        SNMP報文是普通的UDP報文,協(xié)議中規(guī)定有兩個默認(rèn)端口號:


        端口號161:NMS發(fā)送Get、GetNext、GetBulk和Set操作請求以及SNMP Agent響應(yīng)這些請求操作時,使用該端口號。

        該端口號支持用戶配置,但是需要保證NMS發(fā)送請求報文使用的端口號與SNMP Agent響應(yīng)請求報文使用的端口號要一致。


        端口號162:SNMP Agent向NMS發(fā)送Trap或Inform時,使用該端口號。

        該端口號支持用戶配置,但是需要保證SNMP Agent發(fā)送Trap或Inform的端口號與NMS監(jiān)聽Trap或Inform的端口號要一致。


        來源:公眾號 網(wǎng)絡(luò)工程師阿龍


        關(guān)注「開源Linux」加星標(biāo),提升IT技能

        瀏覽 60
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        評論
        圖片
        表情
        推薦
        點贊
        評論
        收藏
        分享

        手機掃一掃分享

        分享
        舉報
        1. <strong id="7actg"></strong>
        2. <table id="7actg"></table>

        3. <address id="7actg"></address>
          <address id="7actg"></address>
          1. <object id="7actg"><tt id="7actg"></tt></object>
            99热九九这里只有精品10 | 很很日 | 手机在线看片国产在线观看一区二区 | 国产91精品看黄网站 | 国产精品成人AAAA网站女吊丝 | 香蕉乱轮网 | 黄片免费视频大全 | 无遮挡打光屁屁打屁股网站 | 大乳boobs巨大吃奶乳水电影 | 人妻人妇一级精品毛片 |