Repository : ssh://git@open-mesh.org/doc
On branches: backup-redmine/2017-07-13,master
commit e0a6bc45f425f39e04c9ba4fa76408f4746e79e0 Author: Marek Lindner mareklindner@neomailbox.ch Date: Sat Dec 19 12:18:14 2009 +0000
doc: batman-adv/Quick-start-guide
e0a6bc45f425f39e04c9ba4fa76408f4746e79e0 batman-adv/Quick-start-guide.textile | 43 ++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 17 deletions(-)
diff --git a/batman-adv/Quick-start-guide.textile b/batman-adv/Quick-start-guide.textile index ccdd1b45..d4180513 100644 --- a/batman-adv/Quick-start-guide.textile +++ b/batman-adv/Quick-start-guide.textile @@ -1,21 +1,29 @@ -This page shall show a couple of easy examples of how to use and setup a mesh network with B.A.T.M.A.N.-Advanced. I'm assuming, that you have installed the tool 'batctl' which allows a more intuitive configuration, though everything can be done by writing things to '/proc/net/batman-adv/...' as well without having to install batctl.
-= Overview = -== Declaring interfaces for B.A.T.M.A.N. == -Usually you are giving B.A.T.M.A.N. a couple of devices over which you want to build the mesh network. This can be either wifi devices like wlanX or athX but also common ethernet devices, usually ethX. B.A.T.M.A.N.-Adv is not limited to a certain interface type, therefore you can use any interface you can find with 'ifconfig' (even pan0 for bluetooth if you like B.A.T.M.A.N. more than the normal, build-in 'mesh-protocol' of bluetooth :) ). Those interfaces can be added by using += B.A.T.M.A.N. Advanced quick start guide = + +This page shall show a couple of easy examples of how to use and setup a mesh network with B.A.T.M.A.N.-Advanced (further referenced as batman-adv). It is assumed, the tool 'batctl' was installed which allows a more intuitive configuration, though everything can be configured by accessing '/proc/net/batman-adv/...' directly without the need of installing batctl. + +=== Adding interfaces === +In the first configuraton step you need to tell batman-adv which interfaces it should use to build the mesh network. This can be either wifi devices like wlanX or athX but also common ethernet devices, usually ethX. batman-adv is not limited to a certain interface type, therefore you can use any interface you can find with 'ifconfig' (even pan0 for bluetooth if you like B.A.T.M.A.N. more than the normal, build-in 'mesh-protocol' of bluetooth :-) ). Those interfaces can be added by using {{{ batctl if eth0 }}} -for example. Make sure, this interface is up and running ('ifconfig eth0 up') and that B.A.T.M.A.N.-Adv has no trouble with it; 'batctl if' should say that this interface is active. +for example. Make sure, this interface is up and running ('ifconfig eth0 up') and use the command +{{{ +batctl if +}}} +to verify its status. Check the system log for hints in case it does not behave as you expect.
-Despite being up, those interfaces that have been added with 'batctl if ifname' don't need any ip-address configured as BATMAN-Adv is operating on layer 2 (which is a common mistake by people who are more familiar with the 'old' batmand or olsrd)! Those interfaces can be seen similar to bridge-interfaces - you just shouldn't (have to) use those plain interfaces for routing anymore. +Despite being up, those interfaces that have been added using batctl don't need any ip-address configured as batman-adv is operating on layer 2 (which is a common mistake by people who are more familiar with the 'old' batmand or other layer 3 routing protcols)! Those interfaces are bridge-interfaces - you just shouldn't (have to) use those plain interfaces for routing anymore.
-== bat0 == -So where are we going to send data packets to if not to those interfaces we had given B.A.T.M.A.N.-Adv? That's where the virtual bat0 interface created by B.A.T.M.A.N. is getting into the game. Usually you are going to assign IP adresses to this one - either manually or via dhcpv4 / avahi autoconfiguration / dhcpv6 / ipv6 autoconfiguration. Any packet that enters this interface will be examined by the B.A.T.M.A.N.-Adv kernel module for its destination mac-adress and will be forwarded with the help of B.A.T.M.A.N.'s routing voodoo then, so that finally, magically it pops out at the right destination's bat0 interface :). +=== bat0 === +So where are we going to send data packets to if not to those interfaces we have given batman-adv? That's where the virtual bat0 interface (created by batman-adv) is getting into the game. Usually you are going to assign IP adresses to this one - either manually or via dhcpv4 / avahi autoconfiguration / dhcpv6 / ipv6 autoconfiguration. Any packet that enters this interface will be examined by the batman-adv kernel module for its destination mac-adress and will be forwarded with the help of B.A.T.M.A.N.'s routing voodoo then, so that finally, magically it pops out at the right destination's bat0 interface :).
-= Examples = -== Laptop-to-Laptop Mesh Network with == -On all laptops, install B.A.T.M.A.N.-Adv and enter the following commands: +=== Examples === + +'''simple mesh network'''[[BR]] + +On all nodes, install batman-adv, load the module and enter the following commands: {{{ iwconfig wlan0 mode ad-hoc essid my-mesh-network ap 02:12:34:56:78:9A channel 1 }}} @@ -24,12 +32,13 @@ batctl if wlan0 ifconfig wlan0 up ifconfig bat0 up }}} -You can now use the automatically assigned IPv6 link-local adresses on bat0 (usually starting with fe80::...), modern operating systems should support this. Or you can assign IP adresses manually on all those nodes (i.e. 'ifconfig bat0 192.168.123.x/24') or one of the laptops in range has to have a DHCP server running on the bat0 interface. As B.A.T.M.A.N.-Adv is operating on layer 2, even dhcp-messages can be send over the mesh network. +You can now use the automatically assigned IPv6 link-local adresses on bat0 (usually starting with fe80::...), modern operating systems should support this. Or you can assign IPv4 adresses manually on all those nodes (i.e. 'ifconfig bat0 192.168.123.x/24') or one of the laptops in range has to have a DHCP server running on the bat0 interface. As batman-adv is operating on layer 2, even dhcp-messages can be send over the mesh network. + +'''mixing non-B.A.T.M.A.N./non-wifi PCs with batman-adv'''[[BR]]
-== non-BATMAN/non-wifi PCs with Wifi Mesh Access Points == -If you have a couple of computers that are not able to / where you don't want run B.A.T.M.A.N.-Adv on, you will have to have a couple of nodes that are able to do so and will be advertising and giving those computers access to the mesh network. Any device running Linux (a laptop, a wifi-router, a pc with a wifi card, ...) can be setup to work as a mesh entry point. The extra step you have to do to provide those other computers access is setting up a bridge over bat0 and the interface those 'dumb' machines are connected to. Let's say eth0 is the interface on a mesh access point where those non-batman, non-wifi computers are connected to and wlan0 is the interface on a mesh access point through which we want to build the mesh network. +If you have a couple of computers that you don't want to run batman-adv on but you still want make use of the mesh network, you will need to configure an entry point for them on a node running batman-adv. Any device running Linux (a notebook, a wifi-router, a pc with a wifi card, ...) can be setup to work as a mesh entry point. In addition to the usual mesh setup steps mentioned above it is necessary to configure a bridge over bat0 and the interface those 'non-B.A.T.M.A.N.' machines are connected to. Let's say eth0 is the interface on a mesh access point where those non-batman, non-wifi computers are connected to and wlan0 is the interface on a mesh access point through which we want to build the mesh network.
-On each mesh access point, install B.A.T.M.A.N.-Adv first and enter the following commands: +On each mesh access point, install batman-adv first, load the module and enter the following commands: {{{ iwconfig wlan0 mode ad-hoc essid my-mesh-network ap 02:12:34:56:78:9A channel 1 }}} @@ -45,6 +54,6 @@ ifconfig eth0 up ifconfig bat0 up ifconfig mesh-bridge up }}} -From now on you won't want to use eth0, wlan0 or bat0 for any routing anymore, instead you are usually just using the new bridge interface 'mesh-bridge'. Any packet our mesh access point receives over eth0 will be forwarded to bat0 because of the bridge. B.A.T.M.A.N.-Adv is having a look at this packet then again and will forward it according to the destination's mac address. +From now on you won't want to use eth0, wlan0 or bat0 for any routing anymore, instead you are just using the new bridge interface 'mesh-bridge'. Any packet our mesh access point receives over eth0 will be forwarded to bat0 because of the bridge. batman-adv will forward it through the mesh according to the destination's mac address.
-''(How does B.A.T.M.A.N.-Adv know where it has to send a data packet of an external computer, that is not using B.A.T.M.A.N., to another computer that is not using B.A.T.M.A.N. either? It is automatically listening on bat0 and will notice any host mac adress on this interface - which can be the direct mac adress of bat0 but also from hosts that get bridged into this network. Those host's mac addresses will then be announced to other B.A.T.M.A.N. nodes in the mesh network automatically - so called HNA messages - so that every B.A.T.M.A.N. node is going to know behind which other B.A.T.M.A.N. node it can find which mac addresses.)'' \ No newline at end of file +''(How does batman-adv know where it has to send a data packet of an external computer, that is not using B.A.T.M.A.N., to another computer that is not using B.A.T.M.A.N. either? It is automatically listening on bat0 and will keep track any host mac address passing this interface. Those host's mac addresses will then be announced to other B.A.T.M.A.N. nodes in the mesh network automatically - so called HNA messages - so that every B.A.T.M.A.N. node is going to know behind which other B.A.T.M.A.N. node it can find which mac addresses.)''