static default route not always pushed to kernel (2.0.4)

Ondrej Zajicek santiago at crfreenet.org
Tue Apr 30 13:24:52 CEST 2019


On Mon, Apr 29, 2019 at 03:46:09PM +0000, Kenth Eriksson wrote:
> On Mon, 2019-04-29 at 15:42 +0200, Ondrej Zajicek wrote:
> > CAUTION: This email originated from outside of the organization. Do
> > not click links or open attachments unless you recognize the sender
> > and know the content is safe.
> > 
> > 
> > On Mon, Apr 29, 2019 at 01:01:13PM +0000, Kenth Eriksson wrote:
> > > > 'ip' tool, perhaps harder in other cases). It would be great if
> > > > there
> > > > existed sysctl option for default IPv4 route metric.
> > > > 
> > > 
> > > There is no overwrite involed here. The default route in the kernel
> > > here has metric 100. As you said, bird pushes with metric 32 so it
> > > should push again.
> > 
> > Well, i misread your mail. If i understand it correctly, the issue is
> > not that routes are not pushed into kernel, but that they are not
> > pushed into master table. I guess you have two routes for the same
> > network in one static protocol. That is not valid case, although
> > we are missing error checks for that configuration.
> > 
> > You could either use two separate static protocol instances, or you
> > could use this patch:
> > 
> > https://nam03.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgitlab.labs.nic.cz%2Flabs%2Fbird%2Fcommit%2F9861dba5230da539e6ce7d2b6baa4f2631556d09&data=02%7C01%7CKenth.Eriksson%40infinera.com%7C64122b5318634277203a08d6cca89074%7C285643de5f5b4b03a1530ae2dc8aaf77%7C1%7C0%7C636921421691874991&sdata=pdNajX29Hwlbsdk5gfH%2BlYIzQaEidqw4qRuedW2%2BohI%3D&reserved=0
> > 
> 
> That patch did not work for me, still same issue. I had to add DISTANCE
> to the CF_KEYWORDS to make it compile. But is it anything else that is
> required?

Hi

The patch should be more-or-less all that is required, but it is not fully
ready for master branch, so it has a bit awkward behavior. Namely it requires
that preference is specified without '=', like in example i provided:

> >   route 0.0.0.0/0 via 10.210.137.1 { preference 220; };
> >   route 0.0.0.0/0 via 192.168.120.1 { preference 230; };

If you used the same config like without patch (i.e. with 'preference = XXX'),
it would not work.


> I thought two prefixes differing only on metric should be perfectly
> valid? The kernel accepts that, so why would bird not?

Mainly implementation reasons. In BIRD, preference is generally not part
of key, therefore route update for one network could replace a route for
route with different preference (which makes sense with filter-based
dynamic preference).

Traditionally BIRD supported in one routing table one route per network
and protocol instance. With BGP ADD_PATH extension the key was extended
with arbitrary u32 distinguisher, which in BGP case is the path ID value
from BGP ADD_PATH, but most other protocols does not use that. The patch
above uses preference as distinguisher in case of static routes.

-- 
Elen sila lumenn' omentielvo

Ondrej 'Santiago' Zajicek (email: santiago at crfreenet.org)
OpenPGP encrypted e-mails preferred (KeyID 0x11DEADC3, wwwkeys.pgp.net)
"To err is human -- to blame it on a computer is even more so."


More information about the Bird-users mailing list