BATMAN-ADV


官网——http://www.open-mesh.org/projects/batman-adv/wiki/Doc-overview


How to get a mesh network up and running, how to configure the many features of B.A.T.M.A.N. Advanced, and how to shoot down your troubles.


Getting started


Features


Troubleshooting


Developer Information / Advanced Features


Protocol Documentation


Who uses B.A.T.M.A.N. Advanced?

++++++++++++++++++++++++++++++++++++++

http://www.open-mesh.org/projects/batman-adv/wiki/Wiki

B.A.T.M.A.N. advanced (often referenced as batman-adv) is an implementation of the B.A.T.M.A.N. routing protocol in form of a linux kernel module operating on layer 2. The rest of this document will explain the conceptual details and their implications. If you are looking for explanations how to use the module, please consult our quick start guide.


Layer 2

Most other wireless routing protocol implementations (e.g. the batman daemon) operate on layer 3 which means they exchange routing information by sending UDP packets and bring their routing decision into effect by manipulating the kernel routing table. Batman-adv operates entirely on ISO/OSI Layer 2 - not only the routing information is transported using raw ethernet frames but also the data traffic is handled by batman-adv. It encapsulates and forwards all traffic until it reaches the destination, hence emulating a virtual network switch of all nodes participating. Therefore all nodes appear to be link local and are unaware of the network's topology as well as unaffected by any network changes.

This design bears some interesting characteristics:
  • network-layer agnostic - you can run whatever you wish on top of batman-adv: IPv4, IPv6, DHCP, IPX ..
  • nodes can participate in a mesh without having an IP
  • easy integration of non-mesh (mobile) clients (no manual HNA fiddling required)
  • roaming of non-mesh clients
  • optimizing the data flow through the mesh (e.g. interface alternating, multicast, forward error correction, etc)
  • running protocols relying on broadcast/multicast over the mesh and non-mesh clients (Windows neighborhood, mDNS, streaming, etc)

A kernel module

A layer 2 routing protocol also has to handle the data traffic because usually one can't route/forward ethernet packets. Processing packets in userland is very expensive in terms of CPU cycles, as each packet has to be read() and write() to the kernel and back, which limits the sustainable bandwidth especially on low-end devices. To have good support for these devices as well, we implemented batman-adv as a kernel driver. It introduces a negligible packet processing overhead even under a high load.


batctl

To still have a handy tool to configure & debug the batman-adv kernel module, the batctl tool was developed. It offers a convenient interface to all the module's settings as well as status information. It also contains a layer 2 version of ping, traceroute and tcpdump, since the virtual network switch is completely transparent for all protocols above layer 2.



++++++++++++++++++++++++++++++++++++++

https://www.kernel.org/doc/Documentation/networking/batman-adv.txt
BATMAN-ADV
----------

Batman  advanced  is  a new approach to wireless networking which
does no longer operate on the IP basis. Unlike the batman daemon,
which  exchanges  information  using UDP packets and sets routing
tables, batman-advanced operates on ISO/OSI Layer 2 only and uses
and  routes  (or  better: bridges) Ethernet Frames. It emulates a
virtual network switch of all nodes participating.  Therefore all
nodes  appear  to be link local, thus all higher operating proto-
cols won't be affected by any changes within the network. You can
run almost any protocol above batman advanced, prominent examples
are: IPv4, IPv6, DHCP, IPX.

Batman advanced was implemented as a Linux kernel driver  to  re-
duce the overhead to a minimum. It does not depend on any (other)
network driver, and can be used on wifi as well as ethernet  lan,
vpn,  etc ... (anything with ethernet-style layer 2).


CONFIGURATION
-------------

Load the batman-adv module into your kernel:

# insmod batman-adv.ko

The  module  is now waiting for activation. You must add some in-
terfaces on which batman can operate. After  loading  the  module
batman  advanced  will scan your systems interfaces to search for
compatible interfaces. Once found, it will create  subfolders  in
the /sys directories of each supported interface, e.g.

# ls /sys/class/net/eth0/batman_adv/
# iface_status  mesh_iface

If an interface does not have the "batman_adv" subfolder it prob-
ably is not supported. Not supported  interfaces  are:  loopback,
non-ethernet and batman's own interfaces.

Note:  After the module was loaded it will continuously watch for
new interfaces to verify the compatibility. There is no  need  to
reload the module if you plug your USB wifi adapter into your ma-
chine after batman advanced was initially loaded.

To activate a  given  interface  simply  write  "bat0"  into  its
"mesh_iface" file inside the batman_adv subfolder:

# echo bat0 > /sys/class/net/eth0/batman_adv/mesh_iface

Repeat  this step for all interfaces you wish to add.  Now batman
starts using/broadcasting on this/these interface(s).

By reading the "iface_status" file you can check its status:

# cat /sys/class/net/eth0/batman_adv/iface_status
# active

To deactivate an interface you have  to  write  "none"  into  its
"mesh_iface" file:

# echo none > /sys/class/net/eth0/batman_adv/mesh_iface


All  mesh  wide  settings  can be found in batman's own interface
folder:

# ls /sys/class/net/bat0/mesh/
#aggregated_ogms        distributed_arp_table  gw_sel_class    orig_interval
#ap_isolation           fragmentation          hop_penalty     routing_algo
#bonding                gw_bandwidth           isolation_mark  vlan0
#bridge_loop_avoidance  gw_mode                log_level

There is a special folder for debugging information:

# ls /sys/kernel/debug/batman_adv/bat0/
# bla_backbone_table  log                 transtable_global
# bla_claim_table     originators         transtable_local
# gateways            socket

Some of the files contain all sort of status information  regard-
ing  the  mesh  network.  For  example, you can view the table of
originators (mesh participants) with:

# cat /sys/kernel/debug/batman_adv/bat0/originators

Other files allow to change batman's behaviour to better fit your
requirements.  For instance, you can check the current originator
interval (value in milliseconds which determines how often batman
sends its broadcast packets):

# cat /sys/class/net/bat0/mesh/orig_interval
# 1000

and also change its value:

# echo 3000 > /sys/class/net/bat0/mesh/orig_interval

In very mobile scenarios, you might want to adjust the originator
interval to a lower value. This will make the mesh  more  respon-
sive to topology changes, but will also increase the overhead.


USAGE
-----

To  make use of your newly created mesh, batman advanced provides
a new interface "bat0" which you should use from this  point  on.
All  interfaces  added  to  batman  advanced are not relevant any
longer because batman handles them for you. Basically, one "hands
over" the data by using the batman interface and batman will make
sure it reaches its destination.

The "bat0" interface can be used like any  other  regular  inter-
face.  It needs an IP address which can be either statically con-
figured or dynamically (by using DHCP or similar services):

# NodeA: ifconfig bat0 192.168.0.1
# NodeB: ifconfig bat0 192.168.0.2
# NodeB: ping 192.168.0.1

Note:  In  order to avoid problems remove all IP addresses previ-
ously assigned to interfaces now used by batman advanced, e.g.

# ifconfig eth0 0.0.0.0


LOGGING/DEBUGGING
-----------------

All error messages, warnings and information messages are sent to
the kernel log. Depending on your operating  system  distribution
this  can  be read in one of a number of ways. Try using the com-
mands: dmesg, logread, or looking in the files  /var/log/kern.log
or  /var/log/syslog.  All  batman-adv  messages are prefixed with
"batman-adv:" So to see just these messages try

# dmesg | grep batman-adv

When investigating problems with your mesh network  it  is  some-
times  necessary  to see more detail debug messages. This must be
enabled when compiling the batman-adv module. When building  bat-
man-adv  as  part of kernel, use "make menuconfig" and enable the
option "B.A.T.M.A.N. debugging".

Those additional  debug messages can be accessed  using a special
file in debugfs

# cat /sys/kernel/debug/batman_adv/bat0/log

The additional debug output is by default disabled. It can be en-
abled  during run time. Following log_levels are defined:

0 - All  debug  output  disabled
1 - Enable messages related to routing / flooding / broadcasting
2 - Enable messages related to route added / changed / deleted
4 - Enable messages related to translation table operations
8 - Enable messages related to bridge loop avoidance
16 - Enable messaged related to DAT, ARP snooping and parsing
31 - Enable all messages

The debug output can be changed at runtime  using  the  file
/sys/class/net/bat0/mesh/log_level. e.g.

# echo 6 > /sys/class/net/bat0/mesh/log_level

will enable debug messages for when routes change.

Counters for different types of packets entering and leaving the
batman-adv module are available through ethtool:

# ethtool --statistics bat0


BATCTL
------

As batman advanced operates on layer 2 all hosts participating in
the  virtual switch are completely transparent for all  protocols
above layer 2. Therefore the common diagnosis tools do  not  work
as  expected.  To  overcome these problems batctl was created. At
the  moment the  batctl contains ping,  traceroute,  tcpdump  and
interfaces to the kernel module settings.

For more information, please see the manpage (man batctl).

batctl is available on http://www.open-mesh.org/


CONTACT
-------

Please send us comments, experiences, questions, anything :)

IRC:            #batman   on   irc.freenode.org
Mailing-list:   b.a.t.m.a.n@open-mesh.org (optional  subscription
          at https://lists.open-mesh.org/mm/listinfo/b.a.t.m.a.n)

You can also contact the Authors:

Marek  Lindner  
Simon  Wunderlich  
<script>window._bd_share_config={"common":{"bdSnsKey":{},"bdText":"","bdMini":"2","bdMiniList":false,"bdPic":"","bdStyle":"0","bdSize":"16"},"share":{}};with(document)0[(getElementsByTagName('head')[0]||body).appendChild(createElement('script')).src='http://bdimg.share.baidu.com/static/api/js/share.js?v=89860593.js?cdnversion='+~(-new Date()/36e5)];</script>
阅读(345) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~
评论热议
  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值