Tuesday, May 17, 2022

[Surftrace] 開源項目Surftrace,基於libbpf的ftrace加強版

 Surftrace 是由系統運維SIG 推出的一個ftrace 封裝器和開發編譯平台,讓用戶既能基於libbpf 快速構建工程進行開發,也能作為ftrace 的封裝器進行trace 命令編寫。

Surftrace 在網絡層面的增強,使得用戶只需要有相關的網絡基礎和一定的內核知識儲備,就可以用較低編碼工作量達到精準追踪網絡報文在Linux 內核的完整處理過程。適合用於追踪Linux 內核協議棧代碼、定位深層次網絡問題。

Sunday, May 15, 2022

Tuesday, May 10, 2022

[RedisGraph] 初探 RedisGraph

前陣子因為交接別人的應用程式,有幸(被迫)接觸到RedisGraph這個東西,為了能讓自己快速上手這玩意,便做了一些小研究。

甚麼是RedisGraph?

RedisGraph 在 Redis 上實現了一種高效能記憶體圖資料庫。該專案作為 Redis 模組開源提供,支援 openCyper 查詢語言,可完成圖的建立、查詢、條件匹配等操作。為支援高效的圖搜尋操作,RedisGraph 底層實現了一種稱為 Hexastore 的三元組儲存結構。

Friday, May 6, 2022

Thursday, May 5, 2022

[網路科普] Linux cooked-mode capture (SLL)

之前用GoPacket去抓device name 為 "any" device interface (Pseudo-device that captures on all interfaces),"any"可以透過 tcpdump -D 查看到:

"any"這個device interface可以抓到經過所有interfaces的封包,部分程式碼如下:

Tuesday, May 3, 2022

[Golang] 用 Golang 使用 Raw Socket v.s. libpcap 兩者優劣比較

前陣子花了一些時間在找一種方式,可以透過寫程式的方式抓取進出於任何device interfaces on Linux主機上的封包,目前主要是有這兩大作法: Raw Socket v.s. libpcap

Monday, May 2, 2022

[Golang] 檢查IP 是否在特定範圍內的簡單範例

檢查IP 是否在特定範圍內,的最快方法是什麼?例如,給定範圍192.168.1.1至192.168.10.254,如何檢查給定的輸入IP是否在該範圍內?以下是簡單範例:

Wednesday, April 20, 2022

[Golang] 一個簡單範例使用gopacket去解析LLDP封包內容

因為工作上需要查看主機上所收到任何的LLDP封包,故在網上搜尋了一下資料與範例程式碼,組成下列一個簡單範例。

本程式會找出所有在此本機上的Net Devices ( Interface ),並依序收集封包,一旦發現有LLDP則會列印相關資訊在console上。