Cloudflare 發布了 xdpcap,一個基於 XDP 子系統的流量分析器

雲耀公司 呈現 開放項目 xdpcap,其中正在開發類似於tcpdump的網路封包分析器,建立在該子系統的基礎上 XDP (eXpress 資料路徑)。 專案程式碼是用Go編寫的 分發者 在 BSD 許可下。 該項目還 準備好了 用於從 Go 應用程式綁定 eBPF 流量處理程序的庫。

xdpcap 實用程式與 tcpdump/libpcap 過濾表達式相容,並允許您在相同硬體上處理大量流量。 Xdpcap 也可以用於在常規 tcpdump 不適用的環境中進行調試,例如使用 Linux 核心 XDP 子系統的過濾、DoS 保護和負載平衡系統,該子系統在封包被 Linux 核心網路堆疊 (tcpdump沒有看到XDP處理程序丟棄的資料包)。

透過使用 eBPF 和 XDP 子系統實現高效能。 eBPF 是內建在 Linux 核心中的字節碼解釋器,可讓您建立傳入/傳出資料包的高效能處理程序,並決定轉發或丟棄它們。 使用 JIT 編譯器,eBPF 字節碼可即時轉換為機器指令,並以本機程式碼的效能執行。 XDP(eXpress Data Path)子系統補充了 eBPF,能夠在網路驅動程式層級運行 BPF 程序,支援直接存取 DMA 封包緩衝區,並在網路堆疊分配 skbuff 緩衝區之前的階段工作。

與 tcpdump 一樣,xdpcap 實用程式首先使用標準 libpcap 函式庫將進階流量過濾規則轉換為經典 BPF 表示形式 (cBPF),然後使用編譯器將它們轉換為 eBPF 例程的形式 CBFC,使用 LLVM/Clang 開發。 在輸出中,流量資訊以標準 pcap 格式儲存,這允許您使用 xdpcap 中準備的流量轉儲,以便在 tcpdump 和其他現有流量分析器中進行後續研究。 例如,要捕獲 DNS 流量信息,您可以運行“xdpcap /path/to/hook capture.pcap 'ip 和 udp port 53′”,然後使用捕獲,而不是使用“tcpdump ip and udp port 53”命令.pcap 文件,例如使用命令“tcpdump -r”或在Wireshark 中。

來源: opennet.ru

添加評論