SNMP (Simple Network Management Protocol) 起源於 SGMP (Simple Gateway Monitoring Protocol),引入 SMI (Structure of Management Information) 與 MIB (Management Information Base) 架構,成為 RFC 1157 (v1)、RFC 1901-1908 (v2c)、RFC 3411-3418 (v3) 標準。v2c 社群字串明文、v3 支援認證/加密 (USM) + 存取控制 (VACM),現代環境強制建議 v3。
| 操作 | 方向 | 用途 | 類比 |
|---|---|---|---|
| GetRequest | Manager → Agent | 讀取單一/多個標量物件 | 查詢 CPU 使用率 |
| GetNextRequest | Manager → Agent | 依詞典序遍歷 MIB 樹,發現未知物件 | 列印介面表、路由表 |
| GetBulkRequest (v2c+) | Manager → Agent | 高效批量獲取大量表格資料 (非重複 GetNext) | 大表格輪詢 |
| SetRequest | Manager → Agent | 寫入/修改可寫物件 (需寫權限) | 關閉介面、修改 VLAN、設定陷阱目標 |
| Trap/Inform (v2c+) | Agent → Manager | 主動通報事件 (Link Down/CPU 過溫/配置變更) | 告警推送 |
| Response | Agent → Manager | 回應 Get/Set,攜帶資料或錯誤碼 | 應答 |
1.3.6.1.2.1 (mib-2 標準)、1.3.6.1.4.1 (企業私有)。每個物件實例 = 物件類 OID + 索引後綴。
例:ifDescr (介面描述) OID 1.3.6.1.2.1.2.2.1.2,介面 1 實例 .1,介面 2 實例 .2。
GetNext 從指定 OID 找「詞典序下一個」實例,依序走訪整棵樹/子樹/表格。

單次 SetRequest 攜帶該列所有欄位 (Column) 的 OID+值,包含索引欄位。
例:8 欄表格 → 8 個變數綁定。
RowStatus 物件 (RFC 2579) 控制列狀態:createAndGo(4)、createAndWait(5)、destroy(6)。
SetRequest 將該列任一欄位 (通常是 RowStatus) 設為 destroy(6) 或 invalid。
特例:Address Translation Table (舊式) 無 RowStatus,設索引鍵為空字串視為刪除。
注意:Agent 實作決定列是否物理移除或標記失效,Manager 須能辨識「非法/已刪除」資料。
snmpget, snmpwalk, snmptable, snmpset, snmptrapd (Net-SNMP)。snmpsim、pySNMP 建立模擬 Agent 開發測試。掌握 SNMP 架構與操作,讓網管從「看圖說故事」進化為「資料驅動自動化運維」!