Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/ericvh...
[pandora-kernel.git] / drivers / staging / batman-adv / README
1 [state: 03-05-2010]
2
3 BATMAN-ADV
4 ----------
5
6 Batman  advanced  is  a new approach to wireless networking which
7 does no longer operate on the IP basis. Unlike the batman daemon,
8 which  exchanges  information  using UDP packets and sets routing
9 tables, batman-advanced operates on ISO/OSI Layer 2 only and uses
10 and  routes  (or  better: bridges) Ethernet Frames. It emulates a
11 virtual network switch of all nodes participating.  Therefore all
12 nodes  appear  to be link local, thus all higher operating proto-
13 cols won't be affected by any changes within the network. You can
14 run almost any protocol above batman advanced, prominent examples
15 are: IPv4, IPv6, DHCP, IPX.
16
17 Batman advanced was implemented as a Linux kernel driver  to  re-
18 duce the overhead to a minimum. It does not depend on any (other)
19 network driver, and can be used on wifi as well as ethernet  lan,
20 vpn,  etc ... (anything with ethernet-style layer 2).
21
22 CONFIGURATION
23 -------------
24
25 Load the batman-adv module into your kernel:
26
27 # insmod batman-adv.ko
28
29 The  module  is now waiting for activation. You must add some in-
30 terfaces on which batman can operate. After  loading  the  module
31 batman  advanced  will scan your systems interfaces to search for
32 compatible interfaces. Once found, it will create  subfolders  in
33 the /sys directories of each supported interface, e.g.
34
35 # ls /sys/class/net/eth0/batman_adv/
36 # iface_status  mesh_iface
37
38 If an interface does not have the "batman_adv" subfolder it prob-
39 ably is not supported. Not supported  interfaces  are:  loopback,
40 non-ethernet and batman's own interfaces.
41
42 Note:  After the module was loaded it will continuously watch for
43 new interfaces to verify the compatibility. There is no  need  to
44 reload the module if you plug your USB wifi adapter into your ma-
45 chine after batman advanced was initially loaded.
46
47 To activate a  given  interface  simply  write  "bat0"  into  its
48 "mesh_iface" file inside the batman_adv subfolder:
49
50 # echo bat0 > /sys/class/net/eth0/batman_adv/mesh_iface
51
52 Repeat  this step for all interfaces you wish to add.  Now batman
53 starts using/broadcasting on this/these interface(s).
54
55 By reading the "iface_status" file you can check its status:
56
57 # cat /sys/class/net/eth0/batman_adv/iface_status
58 # active
59
60 To deactivate an interface you have  to  write  "none"  into  its
61 "mesh_iface" file:
62
63 # echo none > /sys/class/net/eth0/batman_adv/mesh_iface
64
65
66 All  mesh  wide  settings  can be found in batman's own interface
67 folder:
68
69 #  ls  /sys/class/net/bat0/mesh/
70 #  aggregate_ogm   originators        transtable_global  vis_mode
71 #  orig_interval   transtable_local   vis_data
72
73
74 Some of the files contain all sort of status information  regard-
75 ing  the  mesh  network.  For  example, you can view the table of
76 originators (mesh participants) with:
77
78 # cat /sys/class/net/bat0/mesh/originators
79
80 Other files allow to change batman's behaviour to better fit your
81 requirements.  For instance, you can check the current originator
82 interval (value in milliseconds which determines how often batman
83 sends its broadcast packets):
84
85 # cat /sys/class/net/bat0/mesh/orig_interval
86 # status: 1000
87
88 and also change its value:
89
90 # echo 3000 > /sys/class/net/bat0/mesh/orig_interval
91
92 In very mobile scenarios, you might want to adjust the originator
93 interval to a lower value. This will make the mesh  more  respon-
94 sive to topology changes, but will also increase the overhead.
95
96
97 USAGE
98 -----
99
100 To  make use of your newly created mesh, batman advanced provides
101 a new interface "bat0" which you should use from this  point  on.
102 All  interfaces  added  to  batman  advanced are not relevant any
103 longer because batman handles them for you. Basically, one "hands
104 over" the data by using the batman interface and batman will make
105 sure it reaches its destination.
106
107 The "bat0" interface can be used like any  other  regular  inter-
108 face.  It needs an IP address which can be either statically con-
109 figured or dynamically (by using DHCP or similar services):
110
111 # NodeA: ifconfig bat0 192.168.0.1
112 # NodeB: ifconfig bat0 192.168.0.2
113 # NodeB: ping 192.168.0.1
114
115 Note:  In  order to avoid problems remove all IP addresses previ-
116 ously assigned to interfaces now used by batman advanced, e.g.
117
118 # ifconfig eth0 0.0.0.0
119
120
121 VISUALIZATION
122 -------------
123
124 If you want topology visualization, at least one mesh  node  must
125 be configured as VIS-server:
126
127 # echo "server" > /sys/class/net/bat0/mesh/vis_mode
128
129 Each  node  is  either configured as "server" or as "client" (de-
130 fault: "client").  Clients send their topology data to the server
131 next to them, and server synchronize with other servers. If there
132 is no server configured (default) within the  mesh,  no  topology
133 information   will  be  transmitted.  With  these  "synchronizing
134 servers", there can be 1 or more vis servers sharing the same (or
135 at least very similar) data.
136
137 When  configured  as  server,  you can get a topology snapshot of
138 your mesh:
139
140 # cat /sys/class/net/bat0/mesh/vis_data
141
142 This raw output is intended to be easily parsable and convertable
143 with  other tools. Have a look at the batctl README if you want a
144 vis output in dot or json format for instance and how those  out-
145 puts could then be visualised in an image.
146
147 The raw format consists of comma separated values per entry where
148 each entry is giving information about a  certain  source  inter-
149 face.  Each  entry can/has to have the following values:
150 -> "mac" - mac address of an originator's source interface
151            (each line begins with it)
152 -> "TQ mac  value"  -  src mac's link quality towards mac address
153                        of a neighbor originator's interface which
154                        is being used for routing
155 -> "HNA mac" - HNA announced by source mac
156 -> "PRIMARY" - this  is a primary interface
157 -> "SEC mac" - secondary mac address of source
158                (requires preceding PRIMARY)
159
160 The TQ value has a range from 4 to 255 with 255 being  the  best.
161 The HNA entries are showing which hosts are connected to the mesh
162 via bat0 or being bridged into the mesh network.  The PRIMARY/SEC
163 values are only applied on primary interfaces
164
165
166 LOGGING/DEBUGGING
167 -----------------
168
169 All error messages, warnings and information messages are sent to
170 the kernel log. Depending on your operating  system  distribution
171 this  can  be read in one of a number of ways. Try using the com-
172 mands: dmesg, logread, or looking in the files  /var/log/kern.log
173 or  /var/log/syslog.  All  batman-adv  messages are prefixed with
174 "batman-adv:" So to see just these messages try
175
176 # dmesg | grep batman-adv
177
178 When investigating problems with your mesh network  it  is  some-
179 times  necessary  to see more detail debug messages. This must be
180 enabled when compiling the batman-adv module. When building  bat-
181 man-adv  as  part of kernel, use "make menuconfig" and enable the
182 option "B.A.T.M.A.N. debugging".
183
184 The additional debug output is by default disabled. It can be en-
185 abled  either  at kernel modules load time or during run time. To
186 enable debug output at module load time, add the module parameter
187 debug=<value>.  <value> can take one of four values.
188
189 0 - All  debug  output  disabled
190 1 - Enable messages related to routing / flooding / broadcasting
191 2 - Enable route or hna added / changed / deleted
192 3 - Enable all messages
193
194 e.g.
195
196 # modprobe batman-adv debug=2
197
198 will load the module and enable debug messages for when routes or
199 HNAs change.
200
201 The debug output can also be changed at runtime  using  the  file
202 /sys/module/batman-adv/parameters/debug. e.g.
203
204 # echo 2 > /sys/module/batman-adv/parameters/debug
205
206 enables debug messages for when routes or HNAs
207
208 The  debug  output  is sent to the kernel logs. So try dmesg, lo-
209 gread, etc to see the debug messages.
210
211
212 BATCTL
213 ------
214
215 As batman advanced operates on layer 2 all hosts participating in
216 the  virtual switch are completely transparent for all  protocols
217 above layer 2. Therefore the common diagnosis tools do  not  work
218 as  expected.  To  overcome these problems batctl was created. At
219 the  moment the  batctl contains ping,  traceroute,  tcpdump  and
220 interfaces to the kernel module settings.
221
222 For more information, please see the manpage (man batctl).
223
224 batctl is available on http://www.open-mesh.org/
225
226
227 CONTACT
228 -------
229
230 Please send us comments, experiences, questions, anything :)
231
232 IRC:            #batman   on   irc.freenode.org
233 Mailing-list:   b.a.t.m.a.n@open-mesh.net (optional  subscription
234           at https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n)
235
236 You can also contact the Authors:
237
238 Marek  Lindner  <lindner_marek@yahoo.de>
239 Simon  Wunderlich  <siwu@hrz.tu-chemnitz.de>
240