batman-adv

Batman advanced是一種新的無線網路方法,它不再基於IP操作。與batman守護程式使用UDP資料包交換資訊並設定路由表不同,batman-advanced僅在ISO/OSI第2層上執行,並使用和路由(或更好:橋接)乙太網幀。它模擬所有參與節點的虛擬網路交換機。因此,所有節點都顯示為鏈路本地,因此所有更高操作協議都不會受到網路中任何更改的影響。您幾乎可以在batman advanced之上執行任何協議,突出的例子有:IPv4、IPv6、DHCP、IPX。

Batman advanced被實現為Linux核心驅動程式,以最大限度地減少開銷。它不依賴於任何(其他)網路驅動程式,並且可以在wifi以及乙太網lan、vpn等上使用(任何具有乙太網風格第2層的東西)。

配置

將batman-adv模組載入到您的核心中

$ insmod batman-adv.ko

該模組現在正在等待啟用。您必須新增一些batman-adv可以在其上執行的介面。batman-adv mesh介面可以使用iproute2工具ip建立

$ ip link add name bat0 type batadv

要啟用給定的介面,只需將其附加到bat0介面

$ ip link set dev eth0 master bat0

為您希望新增的所有介面重複此步驟。現在,batman-adv開始在此/這些介面上使用/廣播。

要停用介面,您必須將其從“bat0”介面分離

$ ip link set dev eth0 nomaster

也可以使用batctl介面子命令來完成相同的操作

batctl -m bat0 interface create
batctl -m bat0 interface add -M eth0

分離eth0並銷燬bat0

batctl -m bat0 interface del -M eth0
batctl -m bat0 interface destroy

每個batadv mesh介面、vlan和hardif都有其他設定,可以使用batctl修改。有關此的詳細資訊可以在其手冊中找到。

例如,您可以檢查當前的發起者間隔(以毫秒為單位的值,它決定了batman-adv傳送其廣播資料包的頻率)

$ batctl -M bat0 orig_interval
1000

並更改其值

$ batctl -M bat0 orig_interval 3000

在非常移動的場景中,您可能希望將發起者間隔調整為較低的值。這將使mesh對拓撲變化更加敏感,但也會增加開銷。

有關當前狀態的資訊可以透過batadv通用netlink系列訪問。batctl透過其調試表子命令提供人類可讀的版本。

用法

為了使用您新建立的mesh,batman advanced提供了一個新的介面“bat0”,您應該從現在開始使用它。新增到batman advanced的所有介面都不再相關,因為batman為您處理它們。基本上,透過使用batman介面“移交”資料,batman將確保資料到達其目的地。

“bat0”介面可以像任何其他常規介面一樣使用。它需要一個IP地址,該地址可以靜態配置或動態配置(透過使用DHCP或類似服務)

NodeA: ip link set up dev bat0
NodeA: ip addr add 192.168.0.1/24 dev bat0

NodeB: ip link set up dev bat0
NodeB: ip addr add 192.168.0.2/24 dev bat0
NodeB: ping 192.168.0.1

注意:為了避免問題,請刪除之前分配給現在由batman advanced使用的介面的所有IP地址,例如

$ ip addr flush dev eth0

日誌/除錯

所有錯誤訊息、警告和資訊訊息都將傳送到核心日誌。根據您的作業系統發行版,可以透過多種方式讀取它。嘗試使用命令:dmesglogread,或檢視檔案/var/log/kern.log/var/log/syslog。所有batman-adv訊息都以“batman-adv:”為字首。因此,要僅檢視這些訊息,請嘗試

$ dmesg | grep batman-adv

在調查mesh網路的問題時,有時需要檢視更詳細的除錯訊息。必須在編譯batman-adv模組時啟用此功能。將batman-adv作為核心的一部分構建時,請使用“make menuconfig”並啟用選項B.A.T.M.A.N. debuggingCONFIG_BATMAN_ADV_DEBUG=y)。

可以使用perf基礎架構訪問這些額外的除錯訊息

$ trace-cmd stream -e batadv:batadv_dbg

預設情況下,停用額外的除錯輸出。可以在執行時啟用它

$ batctl -m bat0 loglevel routes tt

將啟用有關路由和轉換表條目更改的除錯訊息。

透過ethtool可以獲得進入和離開batman-adv模組的不同型別的資料包的計數器

$ ethtool --statistics bat0

batctl

由於batman advanced在第2層上執行,因此參與虛擬交換機的所有主機對於高於第2層的所有協議都是完全透明的。因此,常見的診斷工具無法按預期工作。為了克服這些問題,建立了batctl。目前,batctl包含ping、traceroute、tcpdump和核心模組設定的介面。

有關更多資訊,請參見手冊頁(man batctl)。

batctl可在https://www.open-mesh.org/上找到

聯絡方式

請給我們傳送評論、經驗、問題,任何內容:)

IRC

ircs://irc.hackint.org/上的#batadv

郵件列表

b.a.t.m.a.n@lists.open-mesh.org(在https://lists.open-mesh.org/mailman3/postorius/lists/b.a.t.m.a.n.lists.open-mesh.org/上的可選訂閱)

您也可以聯絡作者