Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
B
babeld
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
babeld
Commits
bba59657
Commit
bba59657
authored
Feb 19, 2011
by
Juliusz Chroboczek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Tweak README for compatibility with markdown.
parent
f0e43a6c
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
30 additions
and
30 deletions
+30
-30
README
README
+30
-30
No files found.
README
View file @
bba59657
Babel
Babel
*****
=====
Babel is a loop-avoiding distance-vector routing protocol roughly
Babel is a loop-avoiding distance-vector routing protocol roughly
based on HSDV and AODV, but with provisions for link cost estimation
based on HSDV and AODV, but with provisions for link cost estimation
...
@@ -7,46 +7,46 @@ and redistribution of routes from other routing protocols.
...
@@ -7,46 +7,46 @@ and redistribution of routes from other routing protocols.
Installation
Installation
************
============
$ make
$ make
$ su -c 'make install'
$ su -c 'make install'
If compiling for OpenWRT, you will probably want to say something like
If compiling for OpenWRT, you will probably want to say something like
$ make CC=mipsel-linux-gcc PLATFORM_DEFINES='-march=mips32'
$ make CC=mipsel-linux-gcc PLATFORM_DEFINES='-march=mips32'
On Mac OS X, you'll need to do
On Mac OS X, you'll need to do
$ make LDLIBS=''
$ make LDLIBS=''
Setting up a network for use with Babel
Setting up a network for use with Babel
***************************************
=======================================
1. Set up every node's interface
1. Set up every node's interface
================================
--------------------------------
On every node, set up the wireless interface:
On every node, set up the wireless interface:
# iwconfig eth1 mode ad-hoc channel 11 essid "my-mesh-network"
# iwconfig eth1 mode ad-hoc channel 11 essid "my-mesh-network"
# ip link set up dev eth1
# ip link set up dev eth1
2. Set up every node's IP addresses
2. Set up every node's IP addresses
===================================
-----------------------------------
You will need to make sure that all of your nodes have a unique IPv6
You will need to make sure that all of your nodes have a unique IPv6
address, and/or a unique IPv4 address.
address, and/or a unique IPv4 address.
On every node, run something like:
On every node, run something like:
# ip addr add 192.168.13.33/32 dev eth1
# ip addr add 192.168.13.33/32 dev eth1
# ip -6 addr add $(generate-ipv6-address -r)/128 dev eth1
# ip -6 addr add $(generate-ipv6-address -r)/128 dev eth1
You will find the generate-ipv6-address utility, which can generate random
You will find the generate-ipv6-address utility, which can generate random
IPv6 addresses according to RFC 4193, on
IPv6 addresses according to RFC 4193, on
http://www.pps.jussieu.fr/~jch/software/files/
http://www.pps.jussieu.fr/~jch/software/files/
A note about tunnels and VPNs
A note about tunnels and VPNs
...
@@ -60,58 +60,58 @@ that it ``couldn't allocate requested address''.
...
@@ -60,58 +60,58 @@ that it ``couldn't allocate requested address''.
The solution is to manually add the link-local address to the
The solution is to manually add the link-local address to the
interface. This can be done by running e.g.
interface. This can be done by running e.g.
# ip -6 addr add $(ahcp-generate-address fe80::) dev gre0
# ip -6 addr add $(ahcp-generate-address fe80::) dev gre0
3. Start the routing daemon
3. Start the routing daemon
===========================
---------------------------
Run Babel on every node, specifying the set of interfaces that it
Run Babel on every node, specifying the set of interfaces that it
should consider:
should consider:
# babeld eth1
# babeld eth1
If your node has multiple interfaces which you want to participate in
If your node has multiple interfaces which you want to participate in
the Babel network, just list them all:
the Babel network, just list them all:
# babeld eth0 eth1 sit1
# babeld eth0 eth1 sit1
4. Setting up an Internet gateway
4. Setting up an Internet gateway
=================================
---------------------------------
If you have one or more Internet gateways on your mesh network, you
If you have one or more Internet gateways on your mesh network, you
will want to set them up so that they redistribute the default route.
will want to set them up so that they redistribute the default route.
Babel will only redistribute routes with an explicit protocol
Babel will only redistribute routes with an explicit protocol
attached, so you must say something like:
attached, so you must say something like:
# ip route add 0.0.0.0/0 via 1.2.3.4 dev eth0 proto static
# ip route add 0.0.0.0/0 via 1.2.3.4 dev eth0 proto static
In order to redistribute all routes, you will say:
In order to redistribute all routes, you will say:
# babeld -C 'redistribute metric 128' eth1
# babeld -C 'redistribute metric 128' eth1
You may also be more selective in the routes you redistribute, for
You may also be more selective in the routes you redistribute, for
instance by specifying the interface over which the route goes out:
instance by specifying the interface over which the route goes out:
# babeld -C 'redistribute if eth0 metric 128' eth1
# babeld -C 'redistribute if eth0 metric 128' eth1
or by constraining the prefix length:
or by constraining the prefix length:
# babeld -C 'redistribute ip ::/0 le 64 metric 128' \
# babeld -C 'redistribute ip ::/0 le 64 metric 128' \
-C 'redistribute ip 0.0.0.0/0 le 28 metric 128' \
-C 'redistribute ip 0.0.0.0/0 le 28 metric 128' \
eth1
eth1
You may also want to constrain which local routes (routes to local
You may also want to constrain which local routes (routes to local
interface addresses) you advertise:
interface addresses) you advertise:
# babeld -C 'redistribute local if eth1' -C 'redistribute local deny' \
# babeld -C 'redistribute local if eth1' -C 'redistribute local deny' \
-C 'redistribute metric 128' \
-C 'redistribute metric 128' \
eth1
eth1
If you find all of this too complicated and error-prone (as I do), you
If you find all of this too complicated and error-prone (as I do), you
may want to consider autoconfiguring your routing domain using AHCP:
may want to consider autoconfiguring your routing domain using AHCP:
http://www.pps.jussieu.fr/~jch/software/ahcp/
http://www.pps.jussieu.fr/~jch/software/ahcp/
Juliusz Chroboczek
--
Juliusz Chroboczek
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment