[Babel-users] not routing

Michael Grant mgrant at grant.org
Fri Nov 6 21:23:17 UTC 2009


hmm, thanks for the hack (I have not tested it yet).

I would prefer if we could find some globally accepted solution...somehow.

What if you used the logic to check only in the table babel was
started with (the -t arg)?  For example, using -t 42, If a viable
route exists in table 42, don't create another default route, however,
if there is no default route in table 42, it is ok to add one.  That
way, if babeld was run using the main table (the default when you
don't supply -t), the behavior would be unchanged.

If you find that disturbing, perhaps adding another option flag, a
"scope" flag which restricts babeld to looking at routes within a
certain scope, that scope could be global (like it is now), or only
within it's table (the 'main' table or the one defined with -t).

Here, if we look at this another way, babeld is being handed a route
which it is throwing away (or not using) because it thinks there is
already a viable route.  Shouldn't this decision be left to the
routing policy db?

What would happen if you put all routes that came in into the routing
table except those which cause a routing loop?

Michael

On Fri, Nov 6, 2009 at 20:15, Juliusz Chroboczek
<Juliusz.Chroboczek at pps.jussieu.fr> wrote:
>> Except babeld on B is not inserting a default route to A until the
>> adsl line on A goes away.  And it withdrawls it when the line comes
>> back up.
>
> Yep.
>
> I'm stuck -- I don't see a solution to this case.  In fact, I believe
> that a theoretically sound solution to your problem doesn't even exist.
>
> Work-around: try this on your slow node:
>
> diff -rN -u old-babeld/route.c new-babeld/route.c
> --- old-babeld/route.c  2009-11-06 20:15:21.524004826 +0100
> +++ new-babeld/route.c  2009-11-06 20:15:21.536979906 +0100
> @@ -519,8 +519,14 @@
>     if(!route_feasible(route))
>         return;
>
> +#define HORRIBLE_HACK_FOR_MICHAEL
> +
> +#ifdef HORRIBLE_HACK_FOR_MICHAEL
> +#warning Using horrible hack for Michael.
> +#else
>     if(find_xroute(route->src->prefix, route->src->plen))
>        return;
> +#endif
>
>     installed = find_installed_route(route->src->prefix,
>     route->src->plen);
>
>



More information about the Babel-users mailing list