Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 02 Mar 2004 12:27:52 +0300
From:      Vladimir Grebenschikov <vova@express.ru>
To:        Gleb Smirnoff <glebius@cell.sick.ru>, freebsd-net <net@freebsd.org>
Subject:   Re: My planned work on networking stack
Message-ID:  <1078219671.1054.26.camel@localhost>
In-Reply-To: <20040302082625.GE22985@cell.sick.ru>
References:  <4043B6BA.B847F081@freebsd.org> <200403011507.52238.wes@softweyr.com> <20040302031625.GA4061@scylla.towardex.com> <20040302042957.GH3841@saboteur.dek.spc.org> <20040302082625.GE22985@cell.sick.ru>

next in thread | previous in thread | raw e-mail | index | archive | help
On =D7=D4, 2004-03-02 at 11:26 +0300, Gleb Smirnoff wrote:

Hi

>   Currently I'm working on my Netflow implementation, and I have faced th=
e
> following problem: I've already got global routing in my routing table, b=
ut it
> lacks AS (Autonomous System) information. The routing daemon (zebra in my=
 case)
> already knows ASes, but this informations is lost when routing informatio=
n is
> injected into kernel. It'll be nice to add AS path to struct rtentry.
>   Seems like there is no problem with extending struct rtentry, but injec=
ting
> this info from userland requires changes to routing API. I see two ways o=
f
> implementing it:

What for you need have as-path in FIB (forwarding information base) ?

If you are going to do as-path policy routing then , I think, it is
invalid solution, because on next step you will import community-list
into FIB, and etc.

IMHO, Better solution will be ability to refer from route entry some
additional route information block, and then (on phase of routing
decision) examine this block by loadable routing decisions modules.

So, any 3rd-party software (like zebra) will install it's own
routing decisions module(s) and supply additional routing information
blocks (not stored in rtentry).

Anyway kernel still should have ability to add more then one entry for
single prefix to FIB.

>   1) Simply add new field into struct rt_msghdr, and bump RTM_VERSION. I =
have
>      done this, it works. But I don't like it, since RTM_VERSION has chan=
ged.
>   2) Create new sockaddr, called sockaddr_aspath. Define RTAX_ASPATH, inc=
rease
>      RTAX_MAX. Pass this sockaddr_aspath in rti_info[] array of a routing=
 message
>      into kernel. Unparse it in the kernel, fill in new field of struct r=
tentry.
>=20
> While I haven't yet started working on 2), I'd be very glad to hear comme=
nts
> from FreeBSD developers. Thanks in advance.
>=20
> --=20
> Totus tuus, Glebius.
> GLEBIUS-RIPN GLEB-RIPE



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1078219671.1054.26.camel>