TCP/IP 協定與 Internet 網路:第十六章 SNMP 網路管理協定  上一頁   下一頁

 

翻轉工作室:粘添壽

 

16-3 SNMP 協定

16-3-1 SNMP 協定堆疊

16-2 SNMP 網路管理的通訊協定堆疊,在傳輸層使用非連接方式的『使用者電報傳輸』(User Datagram Protocol, UDP,連接到 UDP 161 埠口上,也就是說,SNMP Manager SNMP Agent 之間是透過 UDP 161 埠口通訊。但 SNMP Manager 是利用 UDP 162 埠口來接收 Agent 所傳送過來的 Trap 訊息。資料表現層為管理物件資料的表示法,SNMP 使用標準化的『抽象語意表示法』(Abstract Syntax Notation - One, ASN-1來編碼,使不同廠商之間的網路設備可以互相管理,亦是,在 SNMP Manager SNMP Agent 之間所傳遞的訊息都以 ASN-1 格式包裝(請參考 16-4 節),才能達到異質電腦設備之間的網路管理。

16-2 SNMP 通訊協定之堆疊架構

16-3-2 SNMP 協定資料單元

16-3 顯示 SNMPv1 SNMP v2 協定資料單元的格式,基本上,SMNP 訊息是透過 UDP 封包包裝,而以 IP 封包傳送,兩個版本在訊息標頭(SNMP Header)上都是一樣,但兩個版本的 SNMP PDUProtocol Data Unit)會依照各種命令而不相同。一般在 SNMPv2 的環境裡無法直接使用 SNMPv1 的訊息格式,以及從事於管理工作,必須透過一個管理代理者的處理,這在 RFC 2089 中有詳細規範。以下說明各訊息欄位之功能:

(A) 訊息標頭(Message Header

訊息標頭包含兩個欄位(圖 16-3 (a)):

版本(Version):表示該 SNMP 封包的版本,0 表示 SNMPv11 表示 SNMPv2

共同體(Community):表示某一管理群組織的共同體名稱,一般內定值為 Public

(B) SNMPv1 一般協定資料單元

SNMPv1 的一般『協定資料單元』(Protocol Data Unit, PDU包含有:GetGetNextResponse Set PDU 格式,它們的 PDU 格式都是相同,如圖 16-3 (b) 所示,各欄位功能如下:

PDU Type表示本 PDU 的命令型態:

0 Get-Request

1 Get-Next-Request

2 Set Request

3 Get-Response

Request ID SNMP Manager 下達某一命令,都會針對每一命令編碼一個 Request ID(隨機變數),SNMP Agent 回應時,再針對哪一個 Request ID 回應訊息。

Error StatusSet-Response PDU存放發生錯誤訊息。如果 SNMP Manager 所下達的命令無法達成時,便依照錯誤狀態回應給 SNMP Manager。其它命令(SetGetGetNext)沒有使用此欄位。

Error IndexSet-Response PDU 存放錯誤發生的索引位置,表示錯誤是發生在後面可變連結(Variable Bindings)上哪一位置上的管理物件。

管理物件:每一管理物件以《物件名稱,數值》(Object-n, Value-n來表示,可串接不定長度(依照 UDP 封包長度而定)。如果是 Get GetNext 命令將不理會物件的數值(Value),如果是 Set 命令表示設定物件的數值,而 Response 表示回應物件的數值內容。

16-3 SNMPv1 SNMPv2 訊息格式

(C) SNMPv1 Trap 協定資料單元

16-3 (c) 顯示 SNMPv1 Trap PDU 格式,其中 PDU Type = 4,管理物件的表示也和一般 PDU 相同,其餘各欄位功能如下:

Enterprise標示所產生 Trap 的管理物件型態。

Agent Address提供 Trap 管理物件的 SNMP Agent 位址。

Generic Trap Type一般 Trap 型態。

Specific Trap Code Trap 型態中的一個特殊編碼。

Time Stamp表示所發生 Trap 的時間戳記。

(D) SNMPv2 一般協定資料單元

16-3 (d) 顯示 SNMPv2 一般資料協定單元(PDU)的訊息格式,它可能是 GetGetNextSetResponseInform Trap 命令,其中除了 PDU Type 欄位和 SNMPv1 不同外,其它欄位都相同,PDU Type 表示如下:

0 Get-Request

1 Get-Next-Request

2 Set Request

3 Get-Response

4 不使用(為了避開 SNMPv1

5 Get-Bulk-Request(不同的 PDU 格式)

6 Inform-Request

7 SNMPv2 Trap

(E) Get-Bulk-Request 協定資料單元

16-3 (d) GetBulk PDU 格式,其中 PDU Type = 5,其它各欄位功能如下:

Request ID一個隨機變數的號碼,表示本訊息的編號,SNMP Agent 回應時,可標明依照哪一個要求回應訊訊息。

Non-repeaters描述本要求訊息中後面可變連結(Variable Binding)中物件事項(Object Instances)不要超過一次擷取資料的數量。

Max-repetitions定義最大可以重複擷取的次數,而這些管理物件未在 Non-repeater 上被註明不可重複擷取。

SNMPv1 協定只有定義五種錯誤訊息(Error Status),到了 SNMPv2 增加了 13 種錯誤訊息,主要是由 Response PDU 回應要求時,顯示管理訊息存取錯誤的狀態,我們由訊息名稱大略可以了解它的功能:

noError(0)正常動作,沒有錯誤。

tooBig(1)給變數的數值太長。

noSuchName(2)沒有此變數名稱。(與 Proxy 相容)

badValue(3)給變數數值錯誤。(與 Proxy 相容)

readOnly(4)該變數只能讀取不可寫入。(與 Proxy 相容)

GenErr(5)一般性的錯誤。

noAccess(6)表示該變數是不可存取的。

wrongLength(8)長度錯誤。

wrongEncoding(9)編碼錯誤。

wrongValue(9)給變數的數值錯誤。

noCreation(11)該變數是不可開啟的。

inconsistentValue(12)數值資料型態不一致性錯誤。

resourceUnavailabe(13)資源無效。

commitFailed(14)確認失敗。

undoFailed(15)重複執行失敗。

authorizationError(16)認證錯誤。

notWritable(17)該變數不可寫入。

inconsistentName(18)名稱不一制性的錯誤。

 

 

<GOTOP>