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
日志/调试¶
所有错误消息、警告和信息消息都将发送到内核日志。根据您的操作系统发行版,可以通过多种方式读取它。尝试使用命令:dmesg
、logread
,或查看文件/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. debugging
(CONFIG_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/上的可选订阅)
您也可以联系作者
Marek Lindner <marek.lindner@mailbox.org>
Simon Wunderlich <sw@simonwunderlich.de>