1. 程式人生 > >SNMP 原理與實戰詳解

SNMP 原理與實戰詳解

大綱

一、什麼是SNMP

二、SNMP背景

三、SNMP結構概述

四、SNMP支援的網管操作

五、SNMP的實現結構

六、SNMP的技術內容

七、SNMP的發展歷史

八、SNMP的技術術語

九、綜合上述(總結)

十、Net-SNMP詳解

十一、SNMP的MIB詳解

注,實驗環境 CentOS 6.4 x86_64 軟體版本 net-snmp 5.5。(說明:本博文的一些圖片自於開源社群與官方網站並不是所有內容全是原創)

一、什麼是SNMP

SNMP:“簡單網路管理協議”,用於網路管理的協議。SNMP用於網路裝置的管理。SNMP的工作方式:管理員需要向裝置獲取資料,所以SNMP提供了“讀”操作;管理員需要向裝置執行設定操作,所以SNMP提供了“寫”操作;裝置需要在重要狀況改變的時候,向管理員通報事件的發生,所以SNMP提供了“Trap”操作。

二、SNMP背景

SNMP的基本思想:為不同種類的裝置、不同廠家生產的裝置、不同型號的裝置,定義為一個統一的介面和協議,使得管理員可以是使用統一的外觀面對這些需要管理的網路裝置進行管理。通過網路,管理員可以管理位於不同物理空間的裝置,從而大大提高網路管理的效率,簡化網路管理員的工作。

三、SNMP結構概述

SNMP被設計為工作在TCP/IP協議族上。SNMP基於TCP/IP協議工作,對網路中支援SNMP協議的裝置進行管理。所有支援SNMP協議的裝置都提供SNMP這個統一介面,使得管理員可以使用統一的操作進行管理,而不必理會裝置是什麼型別、是哪個廠家生產的。如下圖,

s1

四、SNMP支援的網管操作

對於網路管理,我們面對的資料是裝置的配置、引數、狀態等資訊,面對的操作是讀取和設定;同時,因為網路裝置眾多,為了能及時得到裝置的重要狀態,還要求裝置能主動地彙報重要狀態,這就是報警功能。如下圖,

s2

  • Get:讀取網路裝置的狀態資訊。

  • Set:遠端配置裝置引數。

  • Trap:管理站及時獲取裝置的重要資訊。

五、SNMP的實現結構

在具體實現上,SNMP為管理員提供了一個網管平臺(NMS),又稱為管理站,負責網管命令的發出、資料儲存、及資料分析。被監管的裝置上執行一個SNMP代理(Agent)),代理實現裝置與管理站的SNMP通訊。如下圖,

s3

管理站與代理端通過MIB進行介面統一,MIB定義了裝置中的被管理物件。管理站和代理都實現了相應的MIB物件,使得雙方可以識別對方的資料,實現通訊。管理站向代理申請MIB中定義的資料,代理識別後,將管理裝置提供的相關狀態或引數等資料轉換為MIB定義的格式,應答給管理站,完成一次管理操作。

已有的裝置,只要新加一個SNMP模組就可以實現網路支援。舊的帶擴充套件槽的裝置,只要插入SNMP模組插卡即可支援網路管理。網路上的許多裝置,路由器、交換機等,都可以通過新增一個SNMP網管模組而增加網管功能。伺服器可以通過執行一個網管程序實現。其他服務級的產品也可以通過網管模組實現網路管理,如Oracle、WebLogic都有SNMP程序,執行後就可以通過管理站對這些系統級服務進行管理。

根據管理者和被管理的裝置在網路管理操作中的不同職責,SNMP定義了3種角色。如下圖,

s4

網路管理系統:又稱管理站、NMS。是系統的控制檯,向管理員提供介面以獲取與改變裝置的配置、資訊、狀態、操作等資訊。管理站與Agent進行通訊,執行相應的Set和Get操作,並接收代理髮過來的警報(Trap)。

代理:Agent是網路管理的代理人,負責管理站和裝置SNMP操作的傳遞。介於管理站和裝置之間,與管理站通訊並相應管理站的請求,從裝置獲取相應的資料,或對裝置進行相應的設定,來響應管理站的請求。代理也需要具有根據裝置的相應狀態使用MIB中定義的Trap向管理站傳送報告的能力。

代理伺服器:Proxy是一種特殊的代理,在不能直接使用SNMP協議的地方,如:異種網路、不同版本的SNMP代理等情況,Proxy代替相關裝置向管理站提供一種外觀,為裝置代理SNMP協議的實現。Proxy做了異種網路或不同版本代理和相應SNMP資料請求的轉換工作。如下圖,

s5

附:管理資訊庫MIB:定義了裝置上可以使用的管理資訊。代理和管理站使用MIB作為統一的資料介面通訊。

六、SNMP的技術內容

如下圖,

s6

七、SNMP的發展歷史

  • 1989年------ SNMPv1

  • 1991年------ RMON(Remote Network Monitoring 遠端網路監視),它擴充了SNMP的功能,包括對LAN的管理及對依附於這些網路的裝置的管理。RMON 沒有修改和增加SNMPv1,只是增加了SNMP監視子網的能力。

  • 1993年------ SNMPv2(SNMPv1的升級版)

  • 1995年------ SNMPv2正式版,其中規定了如何在基於OSI的網路中使用SNMP

  • 1995年------ RMON擴充套件為RMON2

  • 1998年------ SNMPv3,一系列文件定義了SNMP的安全性,並定義了將來改進的總體結構,SNMPv3可以和SNMPv2、SNMPv1一起使用。

八、SNMP的技術術語

  • SNMP:Simple Network Management Protocol(簡單網路管理協議),是一個標準的用於管理基於IP網路上裝置的協議。

  • MIB:Management Information Base(管理資訊庫),定義代理程序中所有可被查詢和修改的引數。

  • SMI:Structure of Management Information(管理資訊結構),SMI定義了SNMP中使用到的ASN.1型別、語法,並定義了SNMP中使用到的型別、巨集、符號等。SMI用於後續協議的描述和MIB的定義。每個版本的SNMP都可能定義自己的SMI。

  • ASN.1:Abstract Syntax Notation One(抽象語法定義)。用於定義語法的正式語言,在SNMP中定義SNMP的協議資料單元PDU和管理物件MIB的格式。SNMP只使用了ASN.1中的一部分,而且使用ASN.1的語言特性定義了一些自定義型別和型別巨集 ,這些組成了SMI。

  • PDU: Protocol Data Unit(協議資料單元),它是網路中傳送的資料包。每一種SNMP操作,物理上都對應一個PDU。

  • NMS: Network Management System,網路管理系統,又名網路管理站,簡稱“管理站”。它是SNMP的總控機,提供統一的使用者介面訪問支援SNMP的裝置,一般提供UI介面,並有統計、分析等功能,是網管系統的總控制檯。NMS是網路管理操作的發起者。

  • Agent: 是SNMP的訪問代理,簡稱“代理”,為裝置提供SNMP能力,負責裝置與NMS的通訊。

  • Proxy: 代理伺服器,對實現不同協議的裝置進行協議轉換,使非IP協議的裝置也能被管理。

  • Trap: 是由裝置主動發出的報警資料,用於提示重要的狀態的改變。

  • BER: Basic Encoding Rule,基本編碼規格。描述如何將ASN.1型別的值編碼為字串的方法。它是ASN.1標準的一部分。BER編碼將資料分成TLV三部分,T為Tag的縮寫,是型別標識;L為Length的縮寫,標識型別的長度;V為Value的縮寫,標識資料內容。按照TLV的順序對資料進行編碼,生成位元組流。SNMP使用BER將SNMP的操作請求和應答編碼後進行傳輸,並用於接收端進行解碼。

九、綜合上述(總結)

1.SNMP現有幾個版本

SNMP共有v1,v2,v3這三個版本:

  • v1和v2都具有基本的讀、寫MIB功能。

  • v2增加了警報、批量資料獲取、管理站和管理站通訊能力。

  • v3在v2的基礎上增加了USM,使用加密的資料和使用者驗證技術,提高了安全性。

  • 另外,RMON是SNMP的一個重要擴充套件,為SNMP增加了子網流量、統計、分析能力。現有兩個版本: Rmon:提供了OSI七層網路結構中網路層和資料鏈路層監視能力。Rmon2:提供了OSI七層網路結構中網路層之上各層的監視能力。

2.ASN.1、BER、SMI、MIB、PDU的關係

s7

  • ASN.1:高階的資料描述語言。描述資料的型別、結構、組織、及編碼方法。包括符號和語法兩部分。SNMP使用ASN.1描述PDU和管理學物件資訊庫MIB。

  • BER:ASN.1的基本編碼規則。描述具體的ASN.1物件如何編碼為位元流在網路上傳輸。SNMP使用BER作為編碼方案,資料首先先經過BER編碼,再經由傳輸層協議(一邊是UDP)發往接收方。接收方在SNMP埠上收到PDU後,經過BER解碼後,得到具體的SNMP操作資料。

  • SMI:是SNMP的描述方法。規定了使用ASN.1子型別、符號。ASN.1功能強大,但SNMP只用到了其中很小一部分,對於這一部分內容的描述,限定了範圍,即為SMI。SMI規定了使用到的ASN.1型別、巨集、符號等。SMI是ASN.1的一個子集和超集。

  • MIB:是SNMP中使用到的管理資訊庫。定義了資料格式、型別、順序、意義等,使用SMI中定義的型別和ASN.1中的基本型別對物件進行描述,是一個使用SMI描述的管理資訊庫。每一類關心的事件都有一組MIB,比如網路介面有一顆MIB樹,TCP有一顆MIB樹,UDP也有一顆MIB樹。

  • PDU:是SNMP的協議資料單元。PDU是基本的通訊格式,使用ASN.1描述,使用BER編碼,通過傳輸層協議傳送。

3.比較規範的SNMP背景

SNMP作為一種過渡技術以其簡單易用的特性被廣泛使用,使用的網路產品提供對SNMP的支援。SNMP還擴充套件了具有遠端管理功能的RMON,使得管理人員可以對整個子網進行管理,而不是對整個子網內的裝置進行管理。

十、Net-SNMP

1.net-snmp簡介

使用net-snmp作為學習SNMP的工具,搭建一個net-snmp環境。Net-snmp是一個開源的SNMP專案。最新版本為:5.7.2。net-snmp支援snmpv1、snmpv2、snmpv3,支援基於IPv4和IPv6的SNMP應用程式。

  • Net-snmp提供完整的API用於SNMP應用程式開發,包括C和Perl的API 。

  • 一個功能強大且可擴充套件的SNMP代理:snmpd開發者可以開發動態模組擴充套件snmpd,net-snmp內建擴充套件子代理與主代理的通訊協議。

  • 提供眾多命令列工具檢查和使用SNMP協議

  • 一個圖形化的MIB瀏覽工具

  • 一個Trap接收程序,用於接收和顯示Trap,並將Trap記錄到日誌檔案中。

2.net-snmp的安裝與配置

官方網站: http://www.net-snmp.org/download.html,net-snmp被很多商業化的Linux包含,但是大多數的Linux使用net-snmp的主代理實現Linux的SNMP支援。

3.支援的平臺

net-snmp可以在BSD UNIX、Linux、Windows等作業系統上編譯執行。Windows下可以安裝一個VMWare虛擬機器軟體,新建一個虛擬機器,在虛擬機器上安裝Linux用來學習。

4.實驗環境

  • 作業系統,CentOS 6.4 X86_64

  • 軟體版本,net-snmp 5.5

5.同步時間

1[[email protected] ~]# ntpdate 202.120.2.101

6.安裝yum源

12[[email protected] ~]# rpm -ivh http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm[[email protected] ~]# rpm -ivh http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.3-1.el6.rf.x86_64.rpm

7.檢視一下net-snmp相關軟體包

123456789[[email protected] ~]# yum list all | grep net-snmp*net-snmp.x86_64             1:5.5-44.el6_4.4        updatesnet-snmp-devel.i686           1:5.5-44.el6_4.4        updatesnet-snmp-devel.x86_64          1:5.5-44.el6_4.4        updatesnet-snmp-libs.i686            1:5.5-44.el6_4.4        updatesnet-snmp-libs.x86_64           1:5.5-44.el6_4.4        updatesnet-snmp-perl.x86_64           1:5.5-44.el6_4.4        updatesnet-snmp-python.x86_64          1:5.5-44.el6_4.4        updatesnet-snmp-utils.x86_64          1:5.5-44.el6_4.4        updates

注,有兩個重要的安裝,net-snmp.x86_64 、net-snmp-utils.x86_64 一個是net-snmp軟體包,另一個是snmp的工具包。下面我們來安裝一下,

1

相關推薦

SNMP 原理實戰

大綱一、什麼是SNMP二、SNMP背景三、SNMP結構概述四、SNMP支援的網管操作五、SNMP的實現結構六、SNMP的技術內容七、SNMP的發展歷史八、SNMP的技術術語九、綜合上述(總結)十、Net-SNMP詳解十一、SNMP的MIB詳解注,實驗環境 CentOS 6.4

FTS資料庫優化(Android)原理應用(1)

在Android的官方開發文件上,有建議在使用文字類的資料庫全文搜尋(full-text search)時,使用FTS優化查詢速度。有關FTS的介紹文章不多,本文調研整理一下有關知識,供在Android上使用FTS之前參考。 1.什麼是FTS? FTS,即full te

PHP反射機制原理用法

本文例項講述了PHP反射機制原理與用法。分享給大家供大家參考,具體如下: 反射 面向物件程式設計中物件被賦予了自省的能力,而這個自省的過程就是反射。 反射,直觀理解就是根據到達地找到出發地和來源。比如,一個光禿禿的物件,我們可以僅僅通過這個物件就能知道它所屬的類、擁有哪些方

資料庫連線池的原理實現()

資料庫連線池類的設計 類1:資料庫連線池類DBconnctionPool 屬性: inuserd 當前正在使用的連線數(int 型別) maxConn 最大的連線數(int 型別) minConn 最小的連線數(int 型別) poolName 連線池的名稱(String 型別) ArrayList free

Java執行緒池原理例項

Wiki 採用new Thread的方式產生多執行緒,可能有以下一些問題:  執行緒的建立和銷燬開銷很大,尤其是有些執行緒的存在時間較短;  執行緒的建立和銷燬過程中伴隨著CPU線上程間的切換,開銷很大; 執行緒池的優點有:  減少了

Java 高併發第三階段實戰---Java併發包深入解析使用

汪文君高併發程式設計第三階段01講 AtomicInteger多執行緒下測試講解. 汪文君高併發程式設計第三階段02講 AtomicInteger API詳解,以及CAS演算法詳細介紹. 汪文君高併發程式設計第三階段03講 利用CAS構造一個TryLock自定義顯式鎖. 汪文君高併發程式設計第三階段04講 利

MySQL傳統複製GTID複製原理及操作

mysql複製在業界裡有叫:mysql同步,ab複製等。專業名稱就是叫:複製 複製是單向的,只能從master複製到slave上,延時基本上是毫秒級別的。 一組複製結構中可以有多個slave,對於master一般場景推薦只有一個。 master使用者寫入資料,生成event記到binary log中 sla

Android驅動開發移植實戰pdf

下載地址:網盤下載Android憑藉其開源性、優異的使用者體驗和極為方便的開發方式,贏得了廣大使用者和開發者的青睞,目前已經發展成為市場佔有率很高的智慧手機作業系統。  《Android驅動開發與移植實戰詳解》分為18章,依次講解了Android系統的基本知識, Linux核

新書《Nginx實戰:基於Lua語言的配置、開發架構》開始發售

聯網 服務 ffffff 部分 follow 多個 item 開始 新書 新書《Nginx實戰:基於Lua語言的配置、開發與架構詳解》開始發售https://item.jd.com/12487157.html#none  《Nginx實戰:基於Lua語言的配置、開發與架構詳

【Spring】Spring MVC原理及配置

進行 return sub sca scrip uil 線程安全 松耦合 必須 1.Spring MVC概述: Spring MVC是Spring提供的一個強大而靈活的web框架。借助於註解,Spring MVC提供了幾乎是POJO的開發模式,使得控制器的開發和測試更加簡

Javascript中的applycall

選項 this 模式 div sun fun object 面向 傳遞     JavaScript中有一個call和apply方法,其作用基本相同,但也有略微的區別。  一、方法定義   1、call 方法   語法:call([thisObj[,arg1[, arg2[

Spark-Sql之DataFrame實戰

集合 case 編程方式 優化 所表 register 操作數 print ava 1、DataFrame簡介: 在Spark中,DataFrame是一種以RDD為基礎的分布式數據據集,類似於傳統數據庫聽二維表格,DataFrame帶有Schema元信息,即DataFram

letconst

沒有 而在 不能 解析 引入 cti lar 語言 reference 在ES6中,js首次引入了塊級作用域的概念,而什麽是塊級作用域? 眾所就知,在js當中存在預解析的概念,就是變量提升。並且只存在全局作用域和私有作用域。在全局定義的變量就是全局變量,而在函數內部定義的

MySQL5.6 數據庫主從(Master/Slave)同步安裝配置

inux bind 主從配置 希望 master 強調 數據庫主從 ria 配置文件 目錄(?)[+] 安裝環境 操作系統 :CentOS 6.5 數據庫版本:MySQL 5.6.27 主機A:192.168.1.1 (Master) 主機B:192.168.

Js中JSON.stringify()JSON.parse()eval()及使用案例

div 網絡 blog 處理 ive asc 還要 ava 不同 JSON(JavaScript Object Notation)是一種輕量級的數據交換格式。因為采用獨立於語言的文本格式,也使用了類似於C語言家族的習慣,擁有了這些特性使使JSON稱為理想的數據交換語言,作用

Linux vmstat命令實戰

上下文切換 span 一次 過多 sta log 讀取文件 負載 監控 vmstat命令是最常見的Linux/Unix監控工具,可以展現給定時間間隔的服務器的狀態值,包括服務器的CPU使用率,內存使用,虛擬內存交換情況,IO讀寫情況。這個命令是我查看Linux/Unix最喜

AngularJS 過濾排序及實例代碼

highlight 進行 angularjs ngs key 管道命令 個數 變量 數據 這篇文章主要介紹了AngularJS 過濾與排序,實現查詢過濾以及排序的功能。 通過這篇文章可以了解到   1、 angularjs的過濾器   2、 ng-repeat的使用方法

lucene、lucene.NET詳細使用優化[轉]

構造 bitset 更多 隱患 .net wrapper 屬性設置 似的 擔心 1 lucene簡介1.1 什麽是luceneLucene是一個全文搜索框架,而不是應用產品。因此它並不像www.baidu.com 或者google Desktop那麽拿來就能用,它只是提供了

《深入淺出MyBatis技術原理實戰》——7. 插件

看到了 5.1 com htm html 而不是 sig stat str 在第6章討論了四大運行對象的運行過程,在Configuration對象的創建方法裏我們看到了MyBatis用責任鏈去封裝它們。 7.1 插件接口 在MyBatis中使用插件,我們必須使用接口Inte

搭建nfs共享存儲服務之二nfs服務端配置語法及配置實戰

linux1.1.NFS服務端配置文件路徑為: /etc/exports,並且默認為空,需要用戶自行配置。/etc/exports文件配置格式為:NFS共享的目錄 NFS客戶端地址1(參數1,參數2...)客戶端地址2(參數1,參數2)1.NFS共享的目錄:為NFS服務端要共享的實際目錄,要用絕對路徑,如(/