SNMP、syslog與NetFlow的差異:監控能得知的資訊、收集方式、資料形式與協定比較

要維運網路,需要監控設備與通訊的狀態,及早察覺異常並調查原因。SNMP、syslog與NetFlow都是從設備收集資訊的機制,但能得知的資訊不同。SNMP是由管理端(管理者)向設備(代理程式)查詢介面流量、CPU使用率等值,可得知「有多少」。syslog是由設備把鏈路中斷、登入、設定變更等事件,以文字訊息送到記錄用的伺服器,可得知「何時發生了什麼」。NetFlow(以及以它為基礎標準化的IPFIX)以來源與目的地等相同的封包集合(資料流)為單位彙整通訊並送出,可得知「誰與誰通訊了多少」。實際維運時會組合使用三者。

項目SNMPsyslogNetFlow(IPFIX)
能得知的資訊設備的狀態與數量。介面的流量與錯誤數、CPU與記憶體使用率、鏈路的狀態事件。鏈路中斷、登入的成功與失敗、設定變更、錯誤的發生通訊的明細。哪組來源與目的地以哪種協定與連接埠通訊了多少
收集方式管理者以固定間隔查詢(輪詢)。也有由設備通知異常的通知(trap)事件發生時由設備送到伺服器設備彙整資料流,在資料流結束時或每隔一段時間送到收集用伺服器(收集器)
資料的形式MIB中定義的值(計數器與狀態)。以物件識別碼(OID)指定嚴重性(0〜7)、來源種類(facility)、時間與文字訊息每個資料流的記錄。位址、連接埠號碼、協定、封包數、位元組數、開始與結束時間等。欄位以範本決定
時間的精細度成為每個查詢間隔(例如5分鐘)的平均每個事件幾乎立即送達以資料流為單位。持續很久的資料流會每隔一段時間切分送出
無法得知的資訊無法得知是誰的通訊無法得知流量無法得知封包的內容(資料)。也無法得知設備的CPU使用率等
對設備與線路的負載小小。但故障時訊息可能急遽增加較大。在高速鏈路上,有時會使用只檢查部分封包的取樣
標準與連接埠號碼SNMPv3為RFC 3411〜3418。UDP的161號(查詢)與162號(trap)RFC 5424。UDP的514號,使用TLS時為6514號NetFlow v9為RFC 3954(資訊性RFC)。標準化的IPFIX為RFC 7011,連接埠號碼為4739號
安全性v1與v2c的社群名稱以未加密的方式傳送。v3可進行認證與加密以UDP傳送時,既沒有加密也沒有送達確認。可用TLS保護NetFlow v9沒有保護機制。IPFIX可用TLS或DTLS保護
主要用途流量圖表、掌握線路使用率、偵測設備故障調查故障原因、記錄誰做了什麼、資安監控(集中到SIEM)找出大量使用頻寬的終端或應用程式、偵測異常通訊、規劃線路擴充

數值為具代表性的大致參考值,會因世代或產品而異。

適用於什麼情況

SNMP
想以圖表持續觀察線路或設備的使用率時。想立即察覺設備故障或鏈路中斷時,搭配trap使用。
syslog
想把故障或與資安有關的事件連同時間記錄下來、以便事後調查時。為了比對多台設備的日誌,要以NTP校準設備的時鐘。
NetFlow(IPFIX)
線路壅塞時想調查哪些終端或應用程式在使用頻寬,或想找出與平常不同的通訊模式時。

常見問題

如何從SNMP的計數器求出通訊速度?

以固定間隔讀取介面接收或傳送位元組數的計數器,把與上次的差換算為位元,再除以間隔的秒數。例如5分鐘(300秒)內計數器增加 3,750,000,000,則 3.75×10⁹ × 8 ÷ 300 = 1×10⁸ bit/s,平均為100 Mbps。32位元的計數器在約43億時歸零,在高速鏈路上很快就繞一圈,因此使用64位元的計數器。結果是間隔內的平均,看不到短時間的急遽增加。

SNMP的輪詢與trap如何區分使用?

輪詢由管理者以固定間隔讀取值,適合像流量圖表那樣持續記錄變化。trap在鏈路中斷等情況發生時由設備通知,能立即察覺,但以UDP傳送,有時會遺失。也有會確認收到的通知(inform)。多數情況會組合兩者。

syslog訊息的嚴重性是什麼?

RFC 5424以0(Emergency,系統無法使用)到7(Debug,除錯用)共8個等級表示訊息的嚴重性。數字越小越重要,可在各設備上設定把哪個嚴重性以上的訊息送到伺服器。

NetFlow與封包擷取有什麼不同?

封包擷取會記錄封包本身(含內容),能詳細調查,但資料量非常大。NetFlow不記錄封包的內容,只送出每個資料流的封包數、位元組數等摘要,因此能大幅減少資料量,適合觀察長期的趨勢。即使是加密的通訊,也能得知位址、連接埠號碼與流量。

理解度檢測

以SNMP每5分鐘(300秒)讀取一次路由器介面之接收位元組數的64位元計數器,上一次為 1,200,000,000,這一次為 4,950,000,000。這5分鐘的平均接收速度最接近下列何者?

  1. A12.5 Mbps
  2. B100 Mbps
  3. C500 Mbps
查看答案與解析

正確答案:B. 100 Mbps

5分鐘內接收的量為 4,950,000,000 − 1,200,000,000 = 3,750,000,000 位元組,換算為位元是 3.75×10⁹ × 8 = 3×10¹⁰ 位元。除以300秒得到 1×10⁸ bit/s,也就是100 Mbps。在SNMP中,管理端(管理者)向設備上的代理程式查詢MIB的值,像這樣由計數器的差求出流量並繪製成圖表。32位元的計數器在 2^32 ≈ 4.29×10⁹ 位元組時歸0,在100 Mbps下約344秒就會繞一圈,因此高速介面使用64位元的計數器。

想針對通過路由器的通訊,以通訊的集合為單位統計並調查哪些來源與目的地的組合(位址、連接埠號碼、協定)的通訊占了多少位元組數。使用的機制最適當的是下列何者?

  1. ASNMP
  2. Bsyslog
  3. CNetFlow(IPFIX)
查看答案與解析

正確答案:C. NetFlow(IPFIX)

NetFlow與以它為基礎標準化的IPFIX,會以來源與目的地之位址、連接埠號碼、協定相同的封包集合(資料流,flow)為單位,記錄封包數、位元組數、時間等,並送到收集用的伺服器。用於調查哪些終端或應用程式在使用頻寬,以及有無異常的通訊。SNMP是查詢設備各介面之流量、CPU使用率等值,或讓設備通知異常(trap)的協定,無法得知是誰的通訊。syslog是把鏈路中斷、登入等事件,以文字訊息送到記錄用伺服器的機制。

下列關於UDP特徵的敘述,何者正確?

  1. A不建立連線,也不控制重傳與順序,因此標頭小,傳送前也不需等待
  2. B會建立連線,重傳未送達的資料,並在接收端整理順序
  3. C不使用IP位址,只用MAC位址把資料送到目的地終端
查看答案與解析

正確答案:A. 不建立連線,也不控制重傳與順序,因此標頭小,傳送前也不需等待

UDP是在IP之上只加入連接埠號碼與簡單錯誤偵測(檢查碼)的輕量協定,標頭為8位元組(TCP在無選項時為20位元組)。它沒有建立連線的程序,也不確認是否送達、不重傳,因此用於寧可少量遺失也不要延遲的語音通話與直播影像,以及只需一次查詢與回應的DNS等。若需要可靠性,則由應用程式端補足。例如HTTP/3使用的QUIC,就是在UDP之上實作重傳與加密。建立連線、重傳、控制順序是TCP的工作。

前往網路設計與維運的練習題

相關名詞的解說

SNMP(簡易網路管理協定)
Simple Network Management Protocol的縮寫。用來監視與管理路由器、交換器等設備狀態的協定。管理端(管理者)向設備上的代理程式查詢以MIB定義的值(介面流量的計數器、CPU使用率等),設備則以trap通知異常。流量是以固定間隔讀取計數器的值,再由其差值求出。建議使用可進行驗證與加密的SNMPv3。
UDP(使用者資料包協定)
User Datagram Protocol的縮寫。傳輸層的非連線型協定。標頭為8位元組,只有連接埠號碼、長度與檢查和。不建立連線,也不做確認應答、重傳與順序控制,因此延遲小。用於DNS查詢、語音與視訊通話、線上遊戲、DHCP、QUIC等。
連接埠號碼
TCP與UDP用來區分通訊要給終端上哪一個應用程式的0~65535編號。HTTP的80、HTTPS的443、DNS的53等0~1023的編號稱為知名連接埠。
封包
把通訊要傳送的資料切成一定大小以下,並加上寫有目的地等控制資訊之標頭的單位。能讓許多通訊共用一條線路(封包交換),發生錯誤時也只需重送該部分。依階層不同,常把IP的單位稱為封包、TCP稱為區段、乙太網路稱為訊框。PCI Express與晶片上網路也會把資料做成封包傳送。
路由器
在不同網路之間轉送封包的網路層(第3層)設備。把收到的封包之目的地IP位址與路由表比對,決定下一個要交給的路由器(下一跳)與輸出介面後送出。家用路由器還整合了NAPT、DHCP伺服器與防火牆等功能。
資安事件管理(SIEM)
把防火牆、伺服器、EDR、雲端服務、驗證基礎設施等的日誌集中到一處,統一格式與時間,以組合多個事件的規則(關聯分析)偵測疑似攻擊並以警示呈現的機制。也用於調查時搜尋日誌,以及依法規要求長期保存日誌。它是資安監控中心(SOC)分析人員用於監控的核心工具之一。
TLS
Transport Layer Security(傳輸層安全性協定)。進行通訊加密、竄改偵測,以及以憑證驗證伺服器的協定。HTTPS是以TLS保護的HTTP。

相關的比較