selctive route download
Neil McKee
neil.mckee at inmon.com
Mon Jul 18 19:13:32 CEST 2016
The following example also uses multiple tables, but instead of using
a filter an additional BGP session is used to inject the selected
routes.
In this case the prefixes carrying the most traffic, recalculated every second.
http://blog.sflow.com/2016/07/internet-router-using-merchant-silicon.html
Neil
On Sun, Jun 26, 2016 at 2:50 AM, Tim Weippert <weiti at weiti.org> wrote:
> Hi,
>
>
> On Fri, Jun 24, 2016 at 05:42:28PM +0000, Harish Venkatraman wrote:
>> Hi,
>>
>>
>> Can someone help me in selective route download using bird?. I did not see any specific configs.
>
> Note really sure if i understand it correctly, you want to be selective what routes get installed from an protocol like bgp into the kernel/master table?
>
>> Secondly I don't want the routes learnt by bgp peers to be installed in the kernel but only routes that are stored in a file through some application to be downloaded to the kernel how do i do it?. The file can have both prefixes and next-hops or just prefixes?
>>
>> Any help is much appreciated.
>
> I would start with an BGP Peering writing to an own Routing Table and then use Pipes with filters to only install wanted routes. The Second part with an
> File can be with an include and specific formatting of that file to be an function.
>
> Just an example:
>
> # Import/Export all to kernel from master table
> protocol kernel {
> scan time 20;
> import all;
> export all;
> }
>
> table PEER_TABLE; # Define BGP Peer Table
>
> protocol bgp PEER {
> table PEER_TABLE; # All learned Routes from this protocol will be in this table, not the master/kernel
> igp table master; # Use master for IGP Routes to find peers
> [ .. bgp options .. ];
> }
>
> include "/etc/bird/selective_routes";
>
> protocol pipe PEER_KERNEL {
> table PEER_TABLE;
> peer table master;
> import none; # No routes from kernel/master in BGP Table
> export filter {
> if ( selected_net() ) then {
> accept;
> } else {
> reject;
> }
> };
> }
>
> In the include File, define an function which will return true/false for the configured prefixes:
>
> function selected_net() {
> return net ~ [
>
> 1.1.1.0/24, # Prefix to be exported to kernel
> 10.0.0.0/8{21,28}, # Prefix to be exported to kernel (only /21-28 from 10.0.0.0/8 range)
> 192.168.0.0/23+ # All Prefixes within 192.168.0.0/23 and smaller masks
>
> ];
> }
>
> if you change the include file, just reconfigure bird throught birdc or similar (birdc 'configure').
>
> #> birdc 'configure'
> BIRD 1.6.0 ready.
> Reading configuration from /etc/bird/bird.conf
> Reconfigured
>
> HTH,
> tim
>
> --
> Tim Weippert
> http://weiti.org - weiti at weiti.org
> GPG Fingerprint - E704 7303 6FF0 8393 ADB1 398E 67F2 94AE 5995 7DD8
More information about the Bird-users
mailing list