Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
S
sroamd
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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
nexedi
sroamd
Commits
901816b6
Commit
901816b6
authored
Jul 14, 2019
by
Juliusz Chroboczek
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Add README.
parent
b7f7d0c7
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
78 additions
and
0 deletions
+78
-0
README
README
+78
-0
No files found.
README
0 → 100644
View file @
901816b6
Sroamd -- the Simple Roaming Daemon
===================================
Sroamd makes it possible to seamlessly roam between IP links (e.g. WiFi
access points) with no changes to clients. There is no central controller,
and no tunnelling is involved.
The daemon implements a custom DHCPv4 server, an IPv4 RA server and
a custom peer-to-peer flooding algorithm. It depends on hostapd for
link-layer configuration, and a routing protocol able to efficiently deal
with host routes (for example Babel).
Usage
-----
Your routers need to all belong to a single routing domain (typically
a single Babel domain with no internal firewalling), but the nodes running
sroamd do not need to be neighbours. In the following, we assume that
your nodes run Babel over eth0 and use wlan0 as the roaming interface. We
also assume that you use 2001:db8:4444::/48 and 192.168.44/24 as the
prefixes used for roaming hosts.
### Set up the link layer
Run hostapd on the wlan0 interface. Your `/etc/hostapd/hostapd.conf`
should say something like
interface=wlan0
ssid=sroam
wpa=2
wpa_passphrase=topsecret
wpa_pairwise=CCMP
### Set up the IP layer
All of your roaming interfaces must have the same IPv4 address, and they
should have the same IPv6 link-local address.
ip addr flush dev wlan0
ip addr add 192.168.44.1/24 dev wlan0
ip -6 addr flush dev wlan0
ip -6 addr add fe80::44/64 dev wlan0
### Run Babel, redistributing routes to roaming clients
Your routing daemon must be configured to redistribute routes with
protocol 44. If using babeld, you could say
babeld -C 'redistribute proto 44 allow' eth0
If you're running BIRD, you're on your own.
### Run sroamd
You need to specify:
* the network prefixes used for roaming (`-P`);
* the nameserver(s) announced over DHCPv4 and RA (`-N`);
* the local UDP port used by the flooding algorithm (`-f`);
* the address and port of two or three remote peers (`-F`) (optional);
* the local address of the DHCPv4 server (`-a`) (optional);
* the set of interfaces used for roaming.
In our example, you could say:
sroamd -P 2001:db8:4444::/48 -P 192.168.44.0/24 \
-f 4444 -F [2001:db8:4444::1234]:4444 \
-N 2001:db8:1234::42 -N 10.0.0.42 -a 192.168.44.1 \
wlan0
The flooding algorithm relies on normal unicast traffic, so the sroamd
instances need not be neighbours. There is no automatic peer discovery,
you must specify enough remote peer addresses to make sure your network
remains connected even when some of them crash.
### Find the bugs
This is experimental software. Things will break.
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