毫秒級網絡監控(網絡示波器)

2021-01-07 蘿蔔頭實驗室

網絡監控的工具很多,但沒有找到精確到毫秒/微秒級別的,於是自己做了一個。這個工具可以查看/調試網絡活動的內部細節,比如網絡流量的波動,多網卡網絡活動的時序。最快可以精確到0.4ms的採樣周期。

比如下圖是一次下載開始時的網絡活動細節。

圖:一次下載開始時的網絡活動

原理

在Linux下,統計網絡活動的工具有很多。比如:最常用的ifconfig 就可以顯示指定接口的收/發的數據(字節數和包的數目),以及丟包數,錯誤數等。

類似的工具還有:

ip -s link:側重於接口的統計netstat -s:側重於協議的統計ethtool -S:也是接接口統計

當然,proc文件系統裡也有,甚至中斷的統計值也有:

/proc/net/dev/proc/softirqs: 包括網絡收發相關的中斷計數

用下面的命令,就可以用「實時的」方式查看網絡收發數據的狀況了。當然,不是那麼直觀。

watch -n 0.1 cat "/proc/net/dev | grep enp"

為了達到最快的速度,我們需要使用源頭的數據。

源頭在 /sys/class/net/(nic)/statistics 目錄,因為這個目錄裡的文件是單一的,一個文件對應於一個計數項。

圖:網絡狀態計數器

現在我們可以用 watch 假裝實時地觀察感興趣的計數器了。

/sys/class/net/enp1s0/statistics$ watch -n 0.1 cat rx_bytes tx_bytes

實現及特性

對上面的計數器定時採樣,就可以得到網絡活動的波動。主要有下面一些選項:

採樣周期採樣總時長觸發條件:什麼情況下開始採樣網絡接口:對哪些網絡接口進行採樣計數器:對哪些計數器進行採樣,比如收到的字節數,發送的包的數目等

下面是這個工具的命令行選項及運行示意。

圖:netmon命令行使用及示例

數據輸出為CSV文件。為了方便,時間戳已使用相對時間(以採樣開始作為時間0點),數據也使用相對值(即每個周期的數據增量)。

輸出的CSV文件可以用Excel顯示為圖表。為了方便,用pandas寫了幾行腳本生成圖表,在python notebook裡運行。

圖:多網卡監控示例

最後的圖表也可以用累加方式顯示。看哪種更直觀。

圖:監控數據累加顯示

性能

最初是用Python寫的採樣程序,採樣周期只能到大約2ms,如果採樣的計數器較多,可能只能到20ms.

最後還是改用C++,採樣周期可以到20μs. 但是,作業系統對計數器的更新頻率遠沒有這麼高,估計是400μs的樣子。也許內核裡可以設置這個更新頻率?沒有深究,因為0.4ms的採樣周期已經足夠用了。

觸發

因為不可能無限地採樣,所以什麼時候開始採樣,是比較重要的一個環節。模仿示波器的思路,增加了對觸發條件的支持。

觸發的條件是:當採樣的數據超過某個閾值才開始採樣。比如採樣的計數器是 rx_bytes, 閾值是 8000, 採樣周期是1ms,則表示:在1ms內收到的數據超過8000位元組,即開始採樣。

對於多網卡/多計數器,則有一個聚合函數來處理這些計數器:

min: 表示所有計數器中最小的值,要超過閾值。其實就是說:所有計數器都要超過閾值,才開始採樣。max: 任一計數器超過閾值,即開始採樣。avg: 計數器的平均值超過閾值,即開始採樣。sum: 計數器的總和超過閾值,即開始採樣。first/last: 按照命令行中的輸入順序,第一個/最後一個計數器超過閾值,開始採樣。

結語

在Linux系統中,/sys/class/net/(nic)/statistics 目錄包含了各種網絡狀態的計數器。對它們進行採樣,可以實現毫秒級的網絡監控,可用於診斷/調優網絡活動細節及時序。

這個工具實現了命令行下的採樣,包含多種觸發採樣條件,最高有效採樣周期達0.4ms(受限於作業系統的網絡狀態更新頻率)。另外提供了腳本對數據進行可視化。總體上相當於一個簡易的「網絡示波器」。

代碼:https://github.com/loblab/netmon

相關焦點

  • 科學家們正努力解決「高ping戰士」問題|突破網絡毫秒級延遲障礙
    最終,網絡電話(VoIP)技術取代了電路交換網絡,現在供應商正在淘汰最後一批電路交換機。VoIP取得成功後,延遲進一步降低,我們也進入了幾十毫秒延遲範圍的時代。低於1毫秒的延遲將為人們長期以來一直尋找的應用程式開闢新類別。觸覺交流(或稱傳遞觸覺)便是其中之一。想像一下用指尖平衡鉛筆。當你看到鉛筆開始傾斜,然後移動手指保持它的平衡,這兩者之間的反應時間以毫秒為單位。
  • 5G 的網絡延遲時間1毫秒,是怎麼做到的?
    用戶面時延,是指我們平時使用手機發送數據的時間延遲,區別於控制面時延:手機註冊網絡或者狀態轉換經過的信令流程所花費的時間。另外,1毫秒指的是無線網絡空中接口的雙向延遲時間。,到1毫秒要走過怎樣的路?無線網絡的傳輸介質是時間和頻率資源,終端在分配的時間和頻率上發送相應的數據,在通信的世界裡,時間的單位很短很短,一個LTE幀是10毫秒,可以分為10個子幀,每個子幀1毫秒,這就是網絡最小可以調度的時間單位:1毫秒。1個子幀還可以分為兩個時隙,每個時隙還可以分為7個符號,至此,終於分完。
  • 清華大學去年底已開始6G試驗 網絡延遲或從毫秒級降到微秒級
    6G(圖源網)   6G時代我們將身處一個怎樣的世界?
  • 羅德與施瓦茨和TSNSystems合作為汽車乙太網提供納秒級的精確延遲...
    隨著雷達、雷射雷達和相機傳感器應用於汽車,大量的傳感器數據需要在幾毫秒內完成傳輸和處理,因此汽車乙太網的時間敏感性變得非常重要。測試與測量專家羅德與施瓦茨公司和時間敏感網絡專家TSN Systems公司成功攜手,基於汽車乙太網100BASE-T1對車內網絡實現精確定時測量。
  • 慧眼視訊監控攝像機網絡攝像頭,遠程網絡攝像機
    隨著銀行安防監控水平的不斷提高,監控設備數量和信息量也在急劇增加,管理難度不斷增大,以往的現場設備控制跟不上安防監控的發展趨勢,傳統的監控方式也難以及時快速的對監控信息進行分析處理,自動化水平低。因此,通過建一個高度集成的集中管理平臺, 實現對前端設備的遠程控制、 對監控信息的遠程調用與分析, 以及對監控設備的運維管理,成為銀行安防監控工作的新要求。
  • 預算內的示波器|鼎陽科技發布SDS1104X-U超級螢光示波器
    2020年9月16日,深圳市鼎陽科技股份有限公司發布SDS1104X-U超級螢光示波器。該示波器為4通道機型,具有100 MHz帶寬和1 GSa/s採樣率;支持多種測量、數學運算及串行解碼功能,是一款高性能經濟型通用示波器,廣泛應用於研發、教學、維修、生產、DIY等領域。
  • 利用自動化運維監控系統zabbix對網絡系統的監控簡介
    受今年疫情的影響,公司預算削減的特別嚴重,原本計劃要做的生產管理信息系統都沒有辦法實施,更不要說問老闆要錢做機房伺服器和網絡設備的監控系統了,聽說zabbix是開源又好用的伺服器監控系統,就自己搭建了一臺,用起來感覺非常好。
  • 華為OTN網絡推進公共安全視頻監控聯網邁向新時代
    視頻監控「大聯網」的建設首先將聯通各個資源節點,橫向聯通公安、各委辦局及社會視頻資源,縱向聯通市、省,形成全國一張國家級的視頻聯網;其次,對聯網的視頻資源進行深度開發應用,最終實現「全域覆蓋、全網共享、全時可用、全程可控」。傳輸網絡作為視頻監控「大聯網」的基礎平臺,是視頻資源聯網共享的關鍵。
  • NTP網絡時鐘協議對計算機網絡的重要性
    隨著不斷增加的分散式計算和我們對網絡的依賴性的加強,不準確的電腦時間對於網絡結構以及其中的應用程式的安全性會產生較大的影響,尤其是那些對沒有實現網絡同步而導致的問題比較敏感的網絡指令或應用程式。1、網絡指令要得到最佳的網絡表現(performance),就得向系統提供時間同步信息。千萬不要等到出了問題才認識到時間同步的重要性。如果沒有時間同步,網絡指令是無法正常運行的。
  • 網絡安全問題頻發?推薦使用快快網絡高防伺服器
    在企業遭受網絡DDOS攻擊、CC攻擊的時候,高防伺服器能對這些攻擊進行防禦,保障伺服器能正常使用。而普通伺服器是不具備這樣功能的,一旦遭受網絡攻擊,伺服器就會面臨癱瘓,無法訪問。2、 流量牽引技術高防伺服器除開防禦流量攻擊以外,還有另外一種功能就是具備流量牽引技術。
  • 如何將常規監控網絡攝像頭轉網際網路直播?
    隨著網絡直播應用生態的越發完善,你會發現,很多傳統監控升級為網際網路直播的應用越來越多。那麼,如何將常規監控攝像頭轉為網際網路直播?傳統視頻監控具體如何轉換為網絡直播呢?千視視頻網關解決方案,可以給您滿意答案。
  • Fortinet收購網絡監控和修復創新公司Panopta
    Panopta 基於 SaaS的混合基礎設施監控和診斷平臺可通過自動化 NetSec Ops 進一步確保 Fortinet 客戶網絡的高性能和安全性。Panopta 基於雲的解決方案可就任何部署中的所有服務、網絡設備和應用提供一個完整的視圖,無論是容器、雲、本地部署還是混合部署。Fortinet Security Fabric 與 Panopta 可擴展的網絡監控和診斷平臺相結合,可助力 Fortinet 為企業或服務提供商提供全面的網絡和安全運營管理解決方案。
  • 運維工程師必備的18個網絡帶寬監控常用命令
    【51CTO活動】8.26 帶你深度了解清華大學、搜狗基於算法的IT運維實踐與探索 本文介紹了一些可以用來監控網絡使用情況的Linux命令行工具。這些工具可以監控通過網絡接口傳輸的數據,並測量目前哪些數據所傳輸的速度。
  • 基於Windows CE的嵌入式網絡監控系統的設計與實現
    本文引用地址:http://www.eepw.com.cn/article/257886.htm  本文介紹的布光監控系統採用數位化分布嵌入式控制系統實現布光任務。在布光系統中採用基於Windows CE的嵌入式網絡監控系統。
  • 網絡監控攝像頭怎麼回放,監控攝像頭回放視頻的兩種方式
    很多地方都安裝了監控攝像頭,有的網絡攝像頭在記錄視頻之外還可以實現聲音的同步保存。這樣在回放視頻的時候也可以聽見當時的聲音。很多人雖然安裝攝像頭,但對於攝像頭怎麼回放並不是很了解,今天我們來說下監控攝像頭的回放方法。
  • 羅德與施瓦茨示波器與Marvell車載交換機實現寬帶測試
    【通信產業網訊】先進駕駛輔助系統的發展為車載網絡構架設計開闢了新途徑。如今的汽車內至少集成了上百個ECU,使得當前的網絡架構已達到容量極限。為此,汽車工業開始專注域/區域控制器架構,以簡化網絡設計並實現最大化性能。
  • 單蹤示波器和雙蹤示波器有什麼區別
    打開APP 單蹤示波器和雙蹤示波器有什麼區別 發表於 2018-01-16 11:16:22 示波器是利用電子示波管的特性,將人眼無法直接觀測的交變電信號轉換成圖像
  • 監控安裝必看,網絡攝像機系統如何選擇交換機?
    在監控系統中如何選擇交換機,關於交換機的選擇問題一直是很多朋友的困擾,那麼今天我們就用案例來了解大型監控如何選擇交換機。 攝像機碼流 影響清晰度的因素,通常是視頻傳輸的碼流設定(包含了編碼發送及接收設備的編解碼能力等),這是前端攝象機的性能,與網絡無關。..... 通常用戶認為清晰度不高,認為是網絡原因造成的想法實際是個誤區。
  • 示波器的觸發_示波器的九大常用觸發
    打開APP 示波器的觸發_示波器的九大常用觸發 發表於 2018-01-16 17:25:27 示波器與為了使掃描信號與被測信號同步
  • 洈水假日酒店 | 思創MS5000系列為其打造網絡全覆蓋
    要求整個項目的無線網絡要有穩定的承載能力,能實現無死角全覆蓋,讓每一個區域的終端均可高速上網,不卡頓緩衝,滿足用戶穩定的接入,高速上網;且客戶跨樓層、跨功能區移動時,漫遊要做到無感知切換。酒店的總機房位於一層的東側。為滿足網絡後期升級拓展,我們在123間客房、8間麻將房、5間會議室、1個宴會廳、1個大堂做了網線預留。