[Babel-users] able to ping to neighbor but no entry in routing table
Dave Taht
dave.taht at gmail.com
Wed Mar 26 20:35:59 UTC 2014
On Wed, Mar 26, 2014 at 9:43 AM, Harshal Vora <harshal at amideeptech.com> wrote:
> Hi Gabriel,
>
> If I understood correctly, we should use addresses with netmask
> 255.255.255.255
> But with this netmask, each device will think that it is the only IP in the
> adhoc network and it will not be able to ping or ssh into any other device
> that we expect to take part in the adhoc network (even if they have the same
> SSID). Basically there will be no adhoc network.
Let me give an example of a complex, existing babel managed network,
and comment ip route's output:
Topology is
internet gw: 172.26.3.1
| | |
|
wifi AP gw my gw 172.26.4.1
a couple other gws
|
Wifi clients on 172.26.2.0/24
default via 172.26.4.1 dev eth0 proto 42 onlink
I get a default route via babel. In openwrt I disable getting the
default route via dhcp.
10.53.0.1 via 172.26.4.1 dev eth0 proto 42 onlink
10.53.0.2 via 172.26.4.1 dev eth0 proto 42 onlink
10.53.0.3 via 172.26.4.1 dev eth0 proto 42 onlink
10.53.0.4 via 172.26.4.1 dev eth0 proto 42 onlink
10.53.0.5 via 172.26.4.1 dev eth0 proto 42 onlink
10.53.0.6 via 172.26.4.1 dev eth0 proto 42 onlink
10.53.0.7 via 172.26.4.1 dev eth0 proto 42 onlink
These are all virtuals on a box elsewhere.
67.180.229.17 via 172.26.4.1 dev eth0 proto 42 onlink
This is the default destination box
169.254.0.0/16 dev eth0 scope link metric 1000
This ended up there due to booting before my router was booted.
172.26.0.64/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.0.65 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.0.96/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.0.97 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.0.128/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.0.129 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.0.160/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.0.161 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.0.224 via 172.26.4.1 dev eth0 proto 42 onlink
I honestly forget what box this is! It's in the house somewhere.
172.26.1.3 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.2.0/24 via 172.26.4.1 dev eth0 proto 42 onlink
This is the wifi AP that most of the house uses.
172.26.3.0/27 via 172.26.4.1 dev eth0 proto 42 onlink
Default ethernet address range of /27 for all interfaces in cerowrt
172.26.3.1 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.9 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.13 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.18 via 172.26.4.1 dev eth0 proto 42 onlink
These are babel running routers hanging off the main network.
172.26.3.64/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.65 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.96/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.97 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.128/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.129 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.160/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.3.161 via 172.26.4.1 dev eth0 proto 42 onlink
Cerowrt has 6 interfaces by default, each with their own /27 subrange.
They distribute addresses via dhcp for non-babel using clients
and the babel using clients have things like default route fetching
turned off for dhcp, and I used to use AHCP a lot before hncp came about.
172.26.3.224 via 172.26.4.1 dev eth0 proto 42 onlink
This is the meshy adhoc interface on the cerowrt boxes, controlled by ahcp,
with a 255.255.255.255 netmask. AHCP serves up a /27 worth of addresses
in this range to ahcp using routers...
And it's the same address on both the 2.4ghz and 5ghz radios
basically distinguished internally as 172.26.3.224%gw01 and
172.26.3.224%gw11
172.26.4.0/27 dev eth0 proto kernel scope link src 172.26.4.20
172.26.4.1 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.4.64/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.4.65 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.4.128/27 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.4.129 via 172.26.4.1 dev eth0 proto 42 onlink
172.26.4.224 via 172.26.4.1 dev eth0 proto 42 onlink
The cerowrt router I'm on now.
192.122.209.0/24 via 172.26.4.1 dev eth0 proto 42 onlink
192.122.209.39 via 172.26.4.1 dev eth0 proto 42 onlink
192.122.209.89 via 172.26.4.1 dev eth0 proto 42 onlink
192.122.209.135 via 172.26.4.1 dev eth0 proto 42 onlink
The internal IP address range of armory.com where this is all located.
There are three routers cross connecting it to the private ip space,
thus avoiding nat internally. Getting the public ip space to work
right along with the private has been a pita...
The view from the main router is different of course:
root at comcast-gw:~# ip route
default via 67.180.228.1 dev ge00 proto static
supplied by dhcp, this is the only default route you should have
in the system.
10.53.0.1 via 172.26.3.9 dev se00 proto babel onlink
10.53.0.2 via 172.26.3.9 dev se00 proto babel onlink
10.53.0.3 via 172.26.3.9 dev se00 proto babel onlink
10.53.0.4 via 172.26.3.9 dev se00 proto babel onlink
10.53.0.5 via 172.26.3.9 dev se00 proto babel onlink
10.53.0.6 via 172.26.3.9 dev se00 proto babel onlink
10.53.0.7 via 172.26.3.9 dev se00 proto babel onlink
The virtuals on a given box.
67.180.228.0/22 dev ge00 proto kernel scope link src 67.180.229.17
My upstream from comcast subnet.
172.26.0.64/27 via 172.26.3.13 dev se00 proto babel onlink
172.26.0.65 via 172.26.3.13 dev se00 proto babel onlink
172.26.0.96/27 via 172.26.3.13 dev se00 proto babel onlink
172.26.0.97 via 172.26.3.13 dev se00 proto babel onlink
172.26.0.128/27 via 172.26.3.13 dev se00 proto babel onlink
172.26.0.129 via 172.26.3.13 dev se00 proto babel onlink
172.26.0.160/27 via 172.26.3.13 dev se00 proto babel onlink
172.26.0.161 via 172.26.3.13 dev se00 proto babel onlink
172.26.0.224 via 172.26.3.13 dev se00 proto babel onlink
I still have no idea where this router is...
172.26.1.3 via 172.26.3.12 dev se00 proto babel onlink
172.26.2.0/24 via 172.26.3.12 dev se00 proto babel onlink
The AP
172.26.3.0/27 dev se00 proto kernel scope link src 172.26.3.1
172.26.3.9 via 172.26.3.9 dev se00 proto babel onlink
172.26.3.13 via 172.26.3.13 dev se00 proto babel onlink
172.26.3.18 via 172.26.3.18 dev se00 proto babel onlink
172.26.3.64/27 dev sw00 proto kernel scope link src 172.26.3.65
172.26.3.96/27 dev sw10 proto kernel scope link src 172.26.3.97
172.26.3.128/27 dev gw00 proto kernel scope link src 172.26.3.129
172.26.3.160/27 dev gw10 proto kernel scope link src 172.26.3.161
The main router's network and interfaces.
172.26.4.0/27 via 172.26.3.18 dev se00 proto babel onlink
172.26.4.1 via 172.26.3.18 dev se00 proto babel onlink
172.26.4.20 via 172.26.3.18 dev se00 proto babel onlink
one box on this network runs babel, the rest just fit in the /27s
One bug I've encountered with many kernels is not falling
back to the /27 match if there is not a /32 match.
Another bug I've encountered in many devices (e.g. printers)
is that they don't respond to an icmp redirect when there are p2p devices
on the same wire. They only want to talk to the default gw.
172.26.4.64/27 via 172.26.3.18 dev se00 proto babel onlink
172.26.4.65 via 172.26.3.18 dev se00 proto babel onlink
172.26.4.128/27 via 172.26.3.18 dev se00 proto babel onlink
172.26.4.129 via 172.26.3.18 dev se00 proto babel onlink
172.26.4.224 via 172.26.3.18 dev se00 proto babel onlink
My box.
192.122.209.0/24 via 172.26.3.13 dev se00 proto babel onlink
192.122.209.39 via 172.26.3.9 dev se00 proto babel onlink
192.122.209.89 via 172.26.3.13 dev se00 proto babel onlink
192.122.209.135 via 172.26.3.9 dev se00 proto babel onlink
Ahah. it's coming back to me now, the public subnet is
broken into two halves, one part always goes out the dsl
line, the other the natted comcast line.
You can find the babeld configuration files for cerowrt in openwrt format here:
https://github.com/dtaht/cerofiles-3.10/blob/cerowrt-3.10/files/etc/config/babeld
Please note that I've never been happy about exporting all the /27
routes by default, I'd rather
roll them up into a single /24 per device... and will gladly take
improvements to these....
>
> How does babeld work in this case?
>
> ------------------------------
> We use the following commands to start babeld
>
> Command to start babeld on master:
>
> start-stop-daemon --start --pidfile /var/run/babeld.pid --exec
> /usr/local/bin/babeld -- -C 'redistribute metric 128' -C 'redistribute proto
> 3 allow' -d 3 -L /var/log/babeld.log -D -I /var/run/babeld.pid -r -g 33123
> wlan0
>
> 'redistribute proto 3 allow' is used to distribute routes generated for the
> ethernet interface.
>
> Command to start babeld on slaves
>
>
> start-stop-daemon --start --pidfile /var/run/babeld.pid --exec
> /usr/local/bin/babeld -- -d 3 -L /var/log/babeld.log -D -I
> /var/run/babeld.pid -r -g 33123 wlan0
> ---------------------------
>
> Does this mean that any device that now wants to be a part of this network
> will have to compulsorily run babeld?
> Also since we are redistributing routes only on the master, other slaves
> will get only routes distributed by the master?
>
> For ex.
> If we have master A and slave B and C such that B is in proximity of A and C
> is in proximity of B but not A
> A --- B --- C
> | |
> -------x------
>
>
> Will C get routes from A ?
>
> Regards,
>
>
>
> On 03/22/2014 10:54 PM, Gabriel Kerneis wrote:
>>
>> On Sat, Mar 22, 2014 at 08:18:14PM +0530, Harshal Vora wrote:
>>>
>>> We checked that we are able to ping from the master to the slave
>>> (because of the proximity and because they are on the same adhoc
>>> network)
>>> 10.0.0.0/24 metric 128 (exported)
>>> 192.168.1.0/24 metric 128 (exported)
>>
>> I have no idea where your problem comes from, but it is common in mesh
>> networks to set your addresses with a /32 prefix (or /128 for IPv6). The
>> reason is precisely to avoid those hard-to-debug behaviours where you do
>> not know whether you can reach another host thanks to a correctly
>> installed route, or thanks to the default route for your prefix and
>> random proximity.
>>
>> Best,
>
>
>
> _______________________________________________
> Babel-users mailing list
> Babel-users at lists.alioth.debian.org
> http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users
--
Dave Täht
Fixing bufferbloat with cerowrt: http://www.teklibre.com/cerowrt/subscribe.html
More information about the Babel-users
mailing list