基于 TCP/IP 的網絡管理包括兩部分:網絡管理站 (manager) 和被管理的網絡單元(被管裝置)。這些被管裝置的共同點就是都運作 TCP/IP 協定。管理程序和代理程序之間的通信有兩種方式,一種是管理程序向代理程序送出請求,詢問參數值,另一種方式是代理程序主動向管理程序報告某些重要的事件。
基于 TCP/IP 的網絡管理包含 3 個組成部分:
( 1 ) 一個管理資訊庫( MIB )。管理資訊庫包含所有代理程序的所有可被查詢和修改的參數。
( 2 ) 關于 MIB 的公用結構和表示符号,叫做管理資訊結構 SMI 。例如: SMI 定義計數器是一個非負整數,它的計數範圍是 0-4294967295 ,當達到最大值後,又從 0 開始。
( 3 ) 管理程序和代理程序之間的通信協定,叫做簡單網絡管理協定 SNMP 。 SNMP 包括資料交換的格式等,主要采用 UDP 協定。
1 、協定: SNMP 定義了 5 種封包:
( 1 ) get-request 操作:從代理程序處提取一個或多個參數值。
( 2 ) get-next-request 操作:從代理程序處提取一個或多個參數的下一個參數值。
( 3 ) set-request 操作:設定代理程序的一個或多個參數值。
( 4 ) get-response 操作:由代理程序發出的一個或多個參數值。它是 3 種的響應操作。
( 5 ) trap 操作:代理程序主動發出的封包,通知管理程序由事情發生。
前面 3 個操作是由管理程序向代理程序發出的,後兩個是代理程序發給管理程序的。
說明: ◆ 前 4 種操作是簡單的請求-應答方式,由于采用 UDP 協定,是以一定要有逾時和重傳機制。
◆ 管理程序采用 UDP 的 161 端口,代理程序使用 UDP 的 162 端口,是以一個系統可以同時為管理程序和代理程序。
◆ 下面是 UDP 資料報 5 種操作的 SNMP 封包:
IP 首部 | UDP 首部 | 版本 0 | 共同體 | PDU 類型( 0 - 3 ) | 請求辨別 | 差錯狀态( 0 - 5 ) | 差錯索引 | 名稱 | 值 | ... |
PDU 類型 4 | 企業 | 代理位址 | Trap 類型( 0 - 6 ) | 特定代碼 | 時間戳 |
(1) SNMP 封包的長度取決域變量的類型和值。
(2) 版本字段為 0 ,表示為 SNMP V1 。
(3) PDU 為協定資料單元,即分組。
PDU 類型 | |
Get-request | |
1 | Get-next-request |
2 | Get-response |
3 | Set-request |
4 | Trap |
(4) 共同體為一個字元串,這是管理程序和代理程序之間的密碼,是明文格式,預設為 public 。
(5) 對于 get 、 get-next 和 set 操作,請求辨別由管理程序設定,然後由代理程序在 get-response 中傳回。這個字段的作用是使客戶程序(目前是管理程序)能夠将伺服器程序(即代理程序)發出的響應和客戶程序發出的查詢進行比對。這個字段允許管理程序對一個或多個代理程序發出多個請求,并且從傳回的應答中分類。
(6) 差錯狀态字段是一個整數,由代理程序設定,指明有錯誤發生。
差錯狀态 | 描述 | |
NoError | 沒有錯誤 | |
TooBig | 代理程序無法把響應放在一個 SNMP 消息中發送 | |
NoSuchName | 操作一個不存在的變量 | |
BadValue | Set 操作的值或文法有錯誤 | |
ReadOnly | 管理程序試圖改變一個隻讀變量 | |
5 | genErr | 其他錯誤 |
(7) 在 get 、 get-next 和 set 的請求資料報中,包含變量名稱和變量值的表,對于 get 和 get-next 操作,變量值部分被忽略。
2 、 管理資訊結構 SMI
(1) INTEGER :有些整形變量沒有範圍限制,有些整形變量定義為特殊的數值。
(2) OCTER STRING : 0 或多個 8 位位元組,每個位元組值在 0 - 255 之間。
(3) DisplayString : 0 或多個 8 位位元組,每個位元組必須是 ASCII 碼,所有該類型的變量不能超過 255 個字元。
(4) OBJECT IDENTIFIER :
(5) NULL :相關變量還沒有值。
(6) IPAddress : 4 位元組的 OCTER STRING ,以網絡序表示的 IP 位址,每個位元組代表 IP 位址的一個字段。
(7) PhyAddress : OCTER STRING 類型,代表實體位址。
(8) Counter :非負整數,範圍為 0 - 4294976295 ,達到最大後從 0 開始。
(9) Gauge :非負整數,範圍為 0 - 4294976295 ,或增或減,達到最大值後鎖定,直到複位。
(10) TimeTicks :時間計數器,以 0.01 秒遞增,但是不同的變量可以有不同的遞增幅度,是以定義該類變量時必須指定遞增幅度。
(11) SEQUENCE :類似于結構,包括 0 個或多個元素。
(12) SEQUENCE OF :向量,其所有元素具有相同的類型。
3 、 對象辨別符
對象辨別是一種資料類型,它指明一種授權命名的對象。對象辨別是一個整數序列,以點分隔。這些整數構成一個樹型結構,類似于 DNS 和檔案系統。對象辨別從頂部開始,頂部沒有辨別,以 root 表示。所有的 MIB 變量都從 1.3.6.1.2.1 這個辨別開始。樹上的每個節點還有文字名,例如 1.3.6.1.2.1 就和 iso.org.dod.internet.memt.mib 對應。
4 、 管理資訊庫 MIB
管理資訊庫就是所有代理程序包含的,并且能夠被管理程序進行查詢和設定的資訊的集合。 UDP 組中包含幾個變量和一個表格。變量為: udpInDatagram(1) 、 udpNoPorts(2) 、 udpInErrors(3) 、 udpOutDatagram(4) ,表格為 udpTable(5) 。
資料類型 | R/W | ||
udpInDatagram | Counter | R | UDP 資料報輸入數 |
udpNoPorts | 沒有發送到有效端口的 UDP 資料報個數 | ||
udpInErrors | 接收到的有錯誤的 UDP 資料報個數 | ||
udpOutDatagram | UDP 資料報輸出數 |
在 udpTable 中有 2 個變量:
UDP 監聽表,索引= <udpLocalAddress>.<udpLocalPort> | |||
udpLocalAddress | IpAddress | 監聽程序的本地 IP 位址, 0.0.0.0 代表接收任何接口的資料報 | |
udpLocalPort | [0..65535] | 監聽程序的本地端口号 |
5 、 執行個體辨別
對 MIB 變量進行操作,必須對 MIB 的每個變量進行辨別。隻有葉子節點是可操作的 SNMP 沒法處理表格的一整行或一整列。
( 1 ) 簡單變量:
對于簡單變量的處理是通過在其對象辨別後面添加 ".0" 處理。例如對象辨別是 1.3.6.1.2.1.7.1 ,則執行個體辨別是 1.3.6.1.2.1.7.1.0 。
( 2 ) 表格
每個 MIB 中的索引都包含一個以上的索引。對于 UDP 監聽表來說, MIB 定義了包含兩個變量的聯合索引。假定 UDP 監聽表中有 3 行具體成員:
0 . 0 . 0 . 0 67
0 . 0 . 0 . 0 161
0 . 0 . 0 . 0 520
這表明系統将從端口 67 、 161 和 520 接收來自任何接口的 UDP 資料報。這三行資料處理後為:
行 | 對象辨別 | 簡稱 | |
1.3.6.1.2.1.7.5.1.1.0.0.0.0.67 1.3.6.1.2.1.7.5.1.2.0.0.0.0.67 | UdpLocalAddress.0.0.0.0.67 UdpLocalPort.0.0.0.67 | 0.0.0.0 67 | |
1.3.6.1.2.1.7.5.1.1.0.0.0.0. 161 1.3.6.1.2.1.7.5.1.2.0.0.0.0. 161 | UdpLocalAddress.0.0.0.0. 161 UdpLocalPort.0.0.0. 161 | 161 | |
1.3.6.1.2.1.7.5.1.1.0.0.0.0. 520 1.3.6.1.2.1.7.5.1.2.0.0.0.0. 520 | UdpLocalAddress.0.0.0.0. 520 UdpLocalPort.0.0.0. 520 | 520 |
( 3 ) 字典式排序
MIB 中按照對象辨別進行排序有一個隐含規則, MIB 表格是根據其對象辨別按照字典的順序進行排序的。上面表格排序後如下所示:
1.3.6.1.2.1.7.5.1.1.0.0.0.0.161 1.3.6.1.2.1.7.5.1.1.0.0.0.0.520 | UdpLocalAddress.0.0.0.0.161 UdpLocalAddress.0.0.0.0.520 | 0.0.0.0 | |
1.3.6.1.2.1.7.5.1.2.0.0.0.0. 67 | UdpLocalPort.0.0.0. 67 UdpLocalPort.0.0.0. 161 | 67 161 |
在表格中,一個給定變量的所有執行個體都在下個變量的所有執行個體之前顯示。這意味表格的操作順序是先行後列的。
表格中對行的排序和表格中索引的值有關。
6 、 管理資訊庫 MIB ( 2 )
( 1 ) system 組:
system 組包含 7 個變量,沒有表格,分别是: sysDescr 、 sysObjectID 、 sysUpTime 、 sysContact 、 sysName 、 sysLocation 、 sysServices 。
( 2 ) interface 組
interface 組隻定義了一個簡單變量,是系統的接口數量。該組還有一個表格變量,有 22 列。
( 3 ) at 組
at 組是位址轉換組,在該組中僅有一個由 3 列組成的表格變量。
( 4 ) ip 組
ip 組定義了很多簡單變量和 3 個表格變量(位址表、路由表、位址轉換表)。
( 5 ) icmp 組
icmp 組包含 4 個普通計數器變量( ICMP 封包的輸出和輸入數量以及 ICMP 差錯封包的輸入和輸出數量)和 22 個其他 ICMP 封包數量的計數器, 11 個輸出計數器, 11 個輸入計數器。
( 6 ) tcp 組
tcp 組包含 14 個簡單變量,主要為 TCP 狀态。還包含 1 個表格變量,即 TCP 連接配接表。
7 、 Trap :
一共有 6 中 trap PDU 的格式,第 7 中類型是供應商自己定義的特殊類型。