Back to home page

OSCL-LXR

 
 

    


0001 .. SPDX-License-Identifier: GPL-2.0
0002 
0003 ==========
0004 batman-adv
0005 ==========
0006 
0007 Batman advanced is a new approach to wireless networking which does no longer
0008 operate on the IP basis. Unlike the batman daemon, which exchanges information
0009 using UDP packets and sets routing tables, batman-advanced operates on ISO/OSI
0010 Layer 2 only and uses and routes (or better: bridges) Ethernet Frames. It
0011 emulates a virtual network switch of all nodes participating. Therefore all
0012 nodes appear to be link local, thus all higher operating protocols won't be
0013 affected by any changes within the network. You can run almost any protocol
0014 above batman advanced, prominent examples are: IPv4, IPv6, DHCP, IPX.
0015 
0016 Batman advanced was implemented as a Linux kernel driver to reduce the overhead
0017 to a minimum. It does not depend on any (other) network driver, and can be used
0018 on wifi as well as ethernet lan, vpn, etc ... (anything with ethernet-style
0019 layer 2).
0020 
0021 
0022 Configuration
0023 =============
0024 
0025 Load the batman-adv module into your kernel::
0026 
0027   $ insmod batman-adv.ko
0028 
0029 The module is now waiting for activation. You must add some interfaces on which
0030 batman-adv can operate. The batman-adv soft-interface can be created using the
0031 iproute2 tool ``ip``::
0032 
0033   $ ip link add name bat0 type batadv
0034 
0035 To activate a given interface simply attach it to the ``bat0`` interface::
0036 
0037   $ ip link set dev eth0 master bat0
0038 
0039 Repeat this step for all interfaces you wish to add. Now batman-adv starts
0040 using/broadcasting on this/these interface(s).
0041 
0042 To deactivate an interface you have to detach it from the "bat0" interface::
0043 
0044   $ ip link set dev eth0 nomaster
0045 
0046 The same can also be done using the batctl interface subcommand::
0047 
0048   batctl -m bat0 interface create
0049   batctl -m bat0 interface add -M eth0
0050 
0051 To detach eth0 and destroy bat0::
0052 
0053   batctl -m bat0 interface del -M eth0
0054   batctl -m bat0 interface destroy
0055 
0056 There are additional settings for each batadv mesh interface, vlan and hardif
0057 which can be modified using batctl. Detailed information about this can be found
0058 in its manual.
0059 
0060 For instance, you can check the current originator interval (value
0061 in milliseconds which determines how often batman-adv sends its broadcast
0062 packets)::
0063 
0064   $ batctl -M bat0 orig_interval
0065   1000
0066 
0067 and also change its value::
0068 
0069   $ batctl -M bat0 orig_interval 3000
0070 
0071 In very mobile scenarios, you might want to adjust the originator interval to a
0072 lower value. This will make the mesh more responsive to topology changes, but
0073 will also increase the overhead.
0074 
0075 Information about the current state can be accessed via the batadv generic
0076 netlink family. batctl provides a human readable version via its debug tables
0077 subcommands.
0078 
0079 
0080 Usage
0081 =====
0082 
0083 To make use of your newly created mesh, batman advanced provides a new
0084 interface "bat0" which you should use from this point on. All interfaces added
0085 to batman advanced are not relevant any longer because batman handles them for
0086 you. Basically, one "hands over" the data by using the batman interface and
0087 batman will make sure it reaches its destination.
0088 
0089 The "bat0" interface can be used like any other regular interface. It needs an
0090 IP address which can be either statically configured or dynamically (by using
0091 DHCP or similar services)::
0092 
0093   NodeA: ip link set up dev bat0
0094   NodeA: ip addr add 192.168.0.1/24 dev bat0
0095 
0096   NodeB: ip link set up dev bat0
0097   NodeB: ip addr add 192.168.0.2/24 dev bat0
0098   NodeB: ping 192.168.0.1
0099 
0100 Note: In order to avoid problems remove all IP addresses previously assigned to
0101 interfaces now used by batman advanced, e.g.::
0102 
0103   $ ip addr flush dev eth0
0104 
0105 
0106 Logging/Debugging
0107 =================
0108 
0109 All error messages, warnings and information messages are sent to the kernel
0110 log. Depending on your operating system distribution this can be read in one of
0111 a number of ways. Try using the commands: ``dmesg``, ``logread``, or looking in
0112 the files ``/var/log/kern.log`` or ``/var/log/syslog``. All batman-adv messages
0113 are prefixed with "batman-adv:" So to see just these messages try::
0114 
0115   $ dmesg | grep batman-adv
0116 
0117 When investigating problems with your mesh network, it is sometimes necessary to
0118 see more detailed debug messages. This must be enabled when compiling the
0119 batman-adv module. When building batman-adv as part of the kernel, use "make
0120 menuconfig" and enable the option ``B.A.T.M.A.N. debugging``
0121 (``CONFIG_BATMAN_ADV_DEBUG=y``).
0122 
0123 Those additional debug messages can be accessed using the perf infrastructure::
0124 
0125   $ trace-cmd stream -e batadv:batadv_dbg
0126 
0127 The additional debug output is by default disabled. It can be enabled during
0128 run time::
0129 
0130   $ batctl -m bat0 loglevel routes tt
0131 
0132 will enable debug messages for when routes and translation table entries change.
0133 
0134 Counters for different types of packets entering and leaving the batman-adv
0135 module are available through ethtool::
0136 
0137   $ ethtool --statistics bat0
0138 
0139 
0140 batctl
0141 ======
0142 
0143 As batman advanced operates on layer 2, all hosts participating in the virtual
0144 switch are completely transparent for all protocols above layer 2. Therefore
0145 the common diagnosis tools do not work as expected. To overcome these problems,
0146 batctl was created. At the moment the batctl contains ping, traceroute, tcpdump
0147 and interfaces to the kernel module settings.
0148 
0149 For more information, please see the manpage (``man batctl``).
0150 
0151 batctl is available on https://www.open-mesh.org/
0152 
0153 
0154 Contact
0155 =======
0156 
0157 Please send us comments, experiences, questions, anything :)
0158 
0159 IRC:
0160   #batadv on ircs://irc.hackint.org/
0161 Mailing-list:
0162   b.a.t.m.a.n@open-mesh.org (optional subscription at
0163   https://lists.open-mesh.org/mailman3/postorius/lists/b.a.t.m.a.n.lists.open-mesh.org/)
0164 
0165 You can also contact the Authors:
0166 
0167 * Marek Lindner <mareklindner@neomailbox.ch>
0168 * Simon Wunderlich <sw@simonwunderlich.de>