<br><br><div class="gmail_quote">On Sun, May 12, 2013 at 5:50 AM, Leen Besselink <span dir="ltr"><<a href="mailto:leen@consolejunkie.net" target="_blank">leen@consolejunkie.net</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
Hi,<br>
<div><div class="h5"><br>
On Sun, May 05, 2013 at 06:53:50PM +0100, Robert Bradley wrote:<br>
> On 05/05/13 16:59, Juliusz Chroboczek wrote:<br>
> >>Robert bradley has been working on making atomic route updates work<br>
> >>and possibly better route cache flushing.<br>
> >[...]<br>
> >>get the patchset from: git://<a href="http://github.com/rb12345/babeld.git" target="_blank">github.com/rb12345/babeld.git</a><br>
> >While it hasn't rained yet, I've looked at the code.<br>
> ><br>
> >1. The commit "Atomic route modification in kernel_netlink" contains<br>
> >both the atomic route modification code and code for flushing the<br>
> >routing cache.  I'd like the two to be separated.  (I can do that if<br>
> >you want, Robert, and leave your name as the original author of the<br>
> >commit.)<br>
><br>
> Yes, that's fine.  I think that the cache-flushing part may not be<br>
> needed anyway.<br>
><br>
> >4. Is the cache flushing still needed with Baptiste's patch?  I'd<br>
> >rather not be tweaking /proc files at runtime.<br>
> ><br>
> >-- Juliusz<br>
><br>
> I think the cache flushing is a misunderstanding on my part.  I<br>
> added the cache flushing since<br>
> <a href="http://linux-ip.net/html/linux-ip.html" target="_blank">http://linux-ip.net/html/linux-ip.html</a> and<br>
> <a href="http://lartc.org/howto/lartc.rpdb.html" target="_blank">http://lartc.org/howto/lartc.rpdb.html</a> appeared to imply it might be<br>
> needed after local route updates.  Looking at the iproute2 manpages<br>
> closely though, it appears that it is only needed if source-policy<br>
> rules ("ip rule" equivalents) are involved.  Without source-policy<br>
> rules, cache flushing looks to be completely unnecessary.<br>
><br>
> The only interaction between this and Baptiste's patch is that the<br>
> emptier caches mean it has fewer routes to filter out.<br>
><br>
<br>
</div></div>Today I had some time to play with this code and 1.4.0.<br>
<br>
In my simple/stupid/silly ? test case it performed worse.<br>
<br>
The Babel 1.4.0 running on Ubuntu 13.04 / Linux 3.8.0 generic amd64 can<br>
detect when 2 way communication is not possible.<br>
<br>
But the one at <a href="https://github.com/rb12345/babeld" target="_blank">https://github.com/rb12345/babeld</a> does not do this.<br>
<br>
It will just keep sending traffic to a gateway that can't receive any traffic.<br>
<br>
I looked if there is any other change between 1.4.0 and the other code and there<br>
was one, but it didn't improve things.<br>
<br>
___<br>
<br>
Ignore IPv6 routing cache on linux<br>
<br>
Recent linux kernels (roughly 3.x) keep a routing cache for IPv6: each<br>
time a host is contacted, a temporary /128 route is added. These<br>
routes are visible using "ip -6 route show cache".<br>
<br>
Asking babeld to redistribute all IPv6 routes known to the host, using<br>
"redistribute ip ::/0", causes it to announce and de-announce these<br>
/128 routes frequently, leading other nodes to mark them as<br>
unreachable (thus preventing communication with the host described by<br>
the /128 route, even though less specific routes are available).<br>
<br>
<a href="https://github.com/jech/babeld/commit/73d8f6621425c624864e63df98c7e49893da09a3" target="_blank">https://github.com/jech/babeld/commit/73d8f6621425c624864e63df98c7e49893da09a3</a><br>
<br>
___<br>
<br>
My test-case is:<br>
<br>
I create 2 VMs with 2 NICs eth1 and eth2 (eth0 is the 3rd NIC for SSH) and connect them to 2 networks.<br>
<br>
Then I run these commands:<br>
<br>
(i'm impatient so my intervals are really low)<br>
<br>
On both VMs:<br>
<br>
ifconfig eth1 up<br>
ifconfig eth2 up<br>
./babeld - -u -d 1 -H 0.3 -C redistribute proto 4 eth1 eth2<br>
<br>
(proto 4 is static)<br>
<br>
on VM1:<br>
ip -6 addr add 2001:200::1/64 dev lo<br>
ping6 -i 0.1 -n 2001:200::2<br>
<br>
on VM2:<br>
ip -6 addr add 2001:200::2/64 dev lo<br>
<br>
Then with tcpdump I check on what interface traffic is coming in.<br>
<br>
If it's eth2 I drop incoming traffic on eth2:<br>
<br>
ip6tables -I INPUT -i eth2 -j DROP<br>
<br>
It detects it as a failed 2-way communication and the routes in the VMs change to reflect that.<br>
<br>
Then I run:<br>
<br>
iptables -F INPUT #flush all<br>
ip6tables -I INPUT -i eth1 -j DROP<br>
<br>
Again it detects it as a failed 2-way communication and the routes in the VMs change to reflect that.<br></blockquote><div><br>There is a behavior I have seen multiple times, where I end up with many routes "stuck" going to localhost. It happens very rarely, and when it happens the box that is stuck is often hard to get to...<br>
<br>A recent Linux patch brute forced a fix to some localhost behavior where it was reproducable , but I'm not sure if it addressed the full potential extent of the issue. Gaze upon it at:<br><br><a href="https://kernel.googlesource.com/pub/scm/linux/kernel/git/linusw/linux-pinctrl/+/25fb6ca4ed9cad72f14f61629b68dc03c0d9713f">https://kernel.googlesource.com/pub/scm/linux/kernel/git/linusw/linux-pinctrl/+/25fb6ca4ed9cad72f14f61629b68dc03c0d9713f</a><br>
<br><br><br> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br>
I hope this is useful to you.<br>
<br>
Have a nice weekend,<br>
        Leen.<br>
<div class="HOEnZb"><div class="h5"><br>
> --<br>
> Robert Bradley<br>
><br>
><br>
> _______________________________________________<br>
> Babel-users mailing list<br>
> <a href="mailto:Babel-users@lists.alioth.debian.org">Babel-users@lists.alioth.debian.org</a><br>
> <a href="http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users" target="_blank">http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users</a><br>
<br>
_______________________________________________<br>
Babel-users mailing list<br>
<a href="mailto:Babel-users@lists.alioth.debian.org">Babel-users@lists.alioth.debian.org</a><br>
<a href="http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users" target="_blank">http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/babel-users</a><br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Dave Täht<br><br>Fixing bufferbloat with cerowrt: <a href="http://www.teklibre.com/cerowrt/subscribe.html" target="_blank">http://www.teklibre.com/cerowrt/subscribe.html</a>