本文件提供 SNMP 陷阱的簡介,其中說明 SNMP 陷阱的使用方式,以及 SNMP 陷阱在資料網路管理中扮演的角色。
SNMP陷阱使代理能夠通過未經請求的SNMP消息將重大事件通知管理站。
在此圖中,左側的設定顯示了一個網路管理系統,用於輪詢資訊並獲得響應。右側的設定顯示一個代理,該代理將未經請求的陷阱或非同步陷阱傳送到網路管理系統(NMS)。
本文件沒有特定需求。
本文件所述內容不限於特定軟體和硬體版本。
如需文件慣例的詳細資訊,請參閱思科技術提示慣例。
SNMPv1(簡單網路管理協定)和SNMPv2c,以及相關的管理資訊庫(MIB),鼓勵陷阱定向通知。
陷阱導向通知的思想是,如果管理員負責大量裝置,並且每台裝置都有大量對象,則管理員從每台裝置上的每個對象輪詢或請求資訊是不切實際的。解決方案是讓受管裝置上的每個代理在不請求的情況下通知管理器。它通過傳送稱為事件陷阱的消息來實現這一點。
在管理器收到事件後,它會顯示它,並且可以選擇根據事件採取措施。例如,管理器可以直接輪詢代理,或輪詢其他關聯的裝置代理,以便更好地瞭解事件。
陷阱導向型通知通過消除無用的SNMP請求,可顯著節省網路和代理資源。但是,無法完全消除SNMP輪詢。發現和拓撲更改需要SNMP請求。此外,如果裝置出現災難性中斷,受管裝置代理無法傳送陷阱。
RFC 1157中定義了SNMPv1陷阱,包括以下欄位:
Enterprise — 標識生成陷阱的受管對象的型別。
Agent address — 提供生成陷阱的受管對象的地址。
通用陷阱類型(Generic trap type) — 表示多種通用陷阱型別之一。
特定陷阱代碼(Specific trap code) — 表示許多特定陷阱代碼之一。
Time stamp — 提供從上次網路重新初始化到生成陷阱之間經過的時間。
變數綁定 — 包含PDU的陷阱的資料欄位。每個變數繫結將特定MIB對象例項與其當前值相關聯。
標準通用陷阱為:coldStart、warmStart、linkDown、linkUp、authenticationFailure、egpNeighborLoss。對於通用SNMPv1陷阱,Enterprise欄位包含傳送陷阱的裝置的sysObjectID 。對於供應商特定的陷阱,一般陷阱類型欄位設定為enterpriseSpecific(6)。 思科以非傳統方式實施其自己的特定陷阱。Cisco沒有將Enterprise陷阱欄位仍保留為sysObjectID ,也沒有使用Specific trap code來標識所有Cisco裝置支援的所有特定陷阱,而是使用各種陷阱Enterprise和Specific trap code欄位實施陷阱標識。您可以從SNMP物件導覽器看到實際值 。此外,Cisco通過新增更多繫結變數 ,重新定義了CISCO-GENERAL-TRAPS MIB中的某些通用陷阱。對於這些陷阱,Generic trap type保持相同,且不設定為enterpriseSpecific(6)。
在SNMPv2c中,陷阱定義為NOTIFICATION,其格式與SNMPv1不同。它具有以下引數:
sysUpTime — 這與SNMPv1陷阱中的時間戳相同。
snmpTrapOID — 陷阱標識欄位。對於一般陷阱,值在RFC 1907中定義,對於供應商特定陷阱snmpTrapOID,基本上是SNMPv1 Enterprise引數和兩個附加子識別符號「0」和SNMPv1 Specific trap code引數的串聯。
VarBindList — 這是變數繫結的清單。
為了讓管理系統瞭解代理向其傳送的陷阱,管理系統必須知道對象識別符號(OID)所定義的內容。因此,它必須載入該陷阱的MIB。這樣可以提供正確的OID資訊,以便網路管理系統能夠瞭解傳送到它的陷阱。
有關特定MIB中Cisco裝置支援的陷阱,請參閱Cisco SNMP Object Navigator 。這將列出特定MIB可用的陷阱。為了接收這些陷阱之一,您的Cisco IOS®軟體版本必須支援列出的MIB。要瞭解您的Cisco裝置支援哪些MIB,請訪問www.cisco.com/go/mibs 。必須將MIB載入到網路管理系統中。這通常稱為編譯。有關NMS平台上的MIB編譯的資訊,請參閱《網路管理系統》(例如,HP OpenView或NetView)使用手冊。另請參閱SNMP:有關MIB和MIB編譯器以及載入MIB的常見問題。
此外,裝置不會向網路管理系統傳送陷阱,除非其配置為這樣做。裝置必須知道它應該傳送陷阱。陷阱目標通常由IP地址定義,但如果裝置設定為查詢域名系統(DNS)伺服器,則它可以是主機名。在更高版本的Cisco IOS軟體中,裝置管理員可以選擇他們希望傳送哪些陷阱。有關如何為SNMP配置Cisco裝置以及如何傳送陷阱的資訊,請參閱相應裝置配置指南和基本撥號NMS實施指南、Cisco IOS SNMP支援陷阱以及如何配置它們以及如何支援和配置Cisco CatalystOS SNMP陷阱。
注意:管理器通常在UDP埠號162上接收SNMP通知(TRAP和INFORM)。
本節包含由Cisco IOS傳送的陷阱的一些示例,與debug snmp packet一起使用。
SNMPv1通用陷阱,由Cisco重新定義:
Nov 21 07:44:17: %LINK-3-UPDOWN: Interface Loopback1, changed state to up 4d23h: SNMP: Queuing packet to 172.17.246.162 4d23h: SNMP: V1 Trap, ent products.45, addr 172.17.246.9, gentrap 3, spectrap 0 ifEntry.1.23 = 23 ifEntry.2.23 = Loopback1 ifEntry.3.23 = 24 lifEntry.20.23 = up
此輸出顯示CISCO-GENERAL-TRAPS MIB的Cisco重新定義的linkUp陷阱,其中包含四個繫結變數。它具有以下欄位:
Enterprise = products.45(sysObjectID of the device sending trap,在本例中為c7507路由器)
通用陷阱類型= 3(linkUp)
特定陷阱代碼= 0
SNMPv1 Cisco特定陷阱:
4d23h: SNMP: Queuing packet to 172.17.246.162 4d23h: SNMP: V1 Trap, ent ciscoSyslogMIB.2, addr 172.17.246.9, gentrap 6, spectrap 1 clogHistoryEntry.2.954 = LINK clogHistoryEntry.3.954 = 4 clogHistoryEntry.4.954 = UPDOWN clogHistoryEntry.5.954 = Interface Loopback1, changed state to up clogHistoryEntry.6.954 = 43021184
此輸出顯示了來自CISCO-SYSLOG-MIB的Cisco特定的clogMessageGenerated陷阱 ,其中包含五個繫結變數。它具有以下欄位:
Enterprise = clogMessageGenerated陷阱的企業值
通用陷阱類型= 6(企業特定)
特定陷阱代碼= 1(clogMessageGenerated的特定陷阱代碼)
SNMPv2c Cisco特定陷阱:
4d23h: SNMP: Queuing packet to 172.17.246.162 4d23h: SNMP: V2 Trap, reqid 2, errstat 0, erridx 0 sysUpTime.0 = 43053404 snmpTrapOID.0 = clogHistoryEntry.2.958 = SYS clogHistoryEntry.3.958 = 6 clogHistoryEntry.4.958 = CONFIG_I clogHistoryEntry.5.958 = Configured from console by vty0 (10.10.10.10) clogHistoryEntry.6.958 = 43053403
此輸出顯示來自CISCO-CONFIG-MAN-MIB的Cisco特定的ciscoConfigManEvent SNMPv2c通知 ,包含三個繫結變數:
如果對裝置配置進行了任何更改,則可以使用此陷阱。最後兩個元件的值會判斷是否已發出show命令,或是已接觸組態。
6506E#term mon 6506E#debug snmp packet SNMP packet debugging is on 6506E#sh run Building configuration... ... 6506E# 19:24:18: SNMP: Queuing packet to 10.198.28.80 19:24:18: SNMP: V2 Trap, reqid 2, errstat 0, erridx 0 sysUpTime.0 = 6981747 snmpTrapOID.0 = ciscoConfigManMIB.2.0.1 ccmHistoryEventEntry.3.100 = 1 !--- 1 -> commandLine. Executed via CLI. ccmHistoryEventEntry.4.100 = 3 !--- 3 -> running ccmHistoryEventEntry.5.100 = 2 !--- 2 -> commandSource. Show command was executed.
6506E#term mon 6506E#debug snmp packet SNMP packet debugging is on 6506E#conf t Enter configuration commands, one per line. End with CNTL/Z. 6506E(config)#exit 22:57:37: SNMP: Queuing packet to 10.198.28.80 22:57:37: SNMP: V2 Trap, reqid 2, errstat 0, erridx 0 sysUpTime.0 = 8261709 snmpTrapOID.0 = ciscoConfigManMIB.2.0.1 ccmHistoryEventEntry.3.108 = 1 !--- 1 -> commandLine. Executed via CLI. ccmHistoryEventEntry.4.108 = 2 !--- 2 -> commandSource ccmHistoryEventEntry.5.108 = 3 !--- 3 -> running. Change was destined to the running configuration.