How the prefix sets are implemented?

3.listas@adminlinux.com.br listas at adminlinux.com.br
Mon Feb 25 15:00:34 CET 2013


Hi,

To filter the routes that my router gets in my BGP session, I 
implemented a filter like this:
filter ebgp_in
prefix set IMPORT_BLACKLIST;
{
   IMPORT_BLACKLIST = [
     0.0.0.0/8+,
     10.0.0.0/8+,
     14.0.0.0/8+,
     24.0.0.0/8+,
     39.0.0.0/8+,
     127.0.0.0/8+,
     128.0.0.0/16+,
     169.254.0.0/16+,
     172.16.0.0/12+,
     191.255.0.0/16+,
     192.0.0.0/24+,
     192.0.2.0/24+,
     192.88.99.0/24+,
     # Disabled only in the testing environment
     #192.168.0.0/16+,
     198.18.0.0/15+,
     223.255.255.0/24+,
     224.0.0.0/4+,
     240.0.0.0/4+
   ];
   if net ~ IMPORT_BLACKLIST then {
     printn "Discarding received route to ";
     print net;
     reject;
   }
   accept;
}
filter ebgp_out {
   if source = RTS_STATIC then {
     bgp_med = BGP_MED;
     accept;
   }
   reject;
}
protocol bgp eBGP {
   description "eBGP";
   local as 65000;
   source address 192.168.101.1;
   neighbor 192.168.100.1 as 65111;
   multihop 2;
   default bgp_local_pref 200;
   export filter ebgp_out;
   import filter ebgp_in;
}

As you can see, I use the variable "prefix set IMPORT_BLACKLIST" to 
store a blacklist.  My doubt is about the implementation of the type 
"set". Which data structure is used in the implementation of the "set" 
type (linked list, tree, hash ...)?

Thanks
-- 
Thiago Henrique
www.adminlinux.com.br



More information about the Bird-users mailing list