Route Programming (was Re: bgp route-map)
Haesu
haesu at towardex.com
Mon Aug 25 20:12:13 UTC 2003
Hello,
The reason for me to come up with this idea/question was so that IRR information
can be used on a seperate box acting as a "Prefix-list server", which would be
basically a route server that distributes prefixes that should be filtered on
inbound announcements..
It would be great for integration with RPSL perhaps; RtConfig already does it,
but need something that's distributed/dynamic/automated; publishing filtering
information over BGP sounds interesting to me..
-hc
--
Sincerely,
Haesu C.
TowardEX Technologies, Inc.
WWW: http://www.towardex.com
E-mail: haesu at towardex.com
Cell: (978) 394-2867
On Mon, Aug 25, 2003 at 04:02:22PM -0400, Leo Bicknell wrote:
>
> This reminds me of something I've wanted to bring up to the community
> for a long time. I'd like to see a "route programming language" that
> gets implemented in a multi-vendor way. No, I'm not talking about like
> RPSL, but rather, let me give some examples:
>
> 1) Pull out session details via "variables":
>
> route-statement foo {
> if ($route has community(1234:$session{'asn'})) {
> set_asprepend($route, "1234 1234")
> }
> }
>
> 2) Check for the route in other routing tables:
>
> route-statement bar {
> if ($route in ospf) {
> set_localpref($route, 10)
> }
> if ($route in bgp && $route has communty(1234:666))
> drop($route)
> }
> set_localpref($route, 100)
> }
>
> 3) Scan other route tables:
>
> route-statement baz {
> if ($route supernet-in bgp) {
> drop($route);
> }
> }
>
> 4) Other weird stuff:
>
> route-statement hack {
> if ($route = "1.2.3.0/24") {
> announce_route("1.2.3.10/32", "192.168.1.1")
> }
> }
>
> Basically all the data on the box would be made available via global
> variables (eg, session IP, session ASN, bgp version, etc), and all
> dynamic data would have interfaces (eg scan other routing tables,
> acl's, etc). You'd write a "function" which would get passed a
> route object, and act on it. Functions could further pass that
> route on calling other functions (allowing you to create common
> policy).
>
> Sadly, while I can think of many cool things you could do, I know
> little about how to really design a languge. I also have no idea
> how bad other people want this, how hard it would be to get vendors
> to implement, etc. Feel free to add your support, or call me a
> crackpot.
>
> --
> Leo Bicknell - bicknell at ufp.org - CCIE 3440
> PGP keys at http://www.ufp.org/~bicknell/
> Read TMBG List - tmbg-list-request at tmbg.org, www.tmbg.org
More information about the NANOG
mailing list