Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
BGPQ3(8)		     System Manager's Manual			BGPQ3(8)

NAME
     bgpq3 -- bgp filtering automation tool

SYNOPSIS
     bgpq3 [-h host[:port]] [-S sources] [-EPz] [-f asn | -F fmt | -G asn -t]
	   [-2346ABbDdJjNnsXU] [-a asn] [-r len] [-R len] [-m max] [-W len]
	   OBJECTS [...] [EXCEPT OBJECTS]

DESCRIPTION
     The  bgpq3  utility used to generate configurations (prefix-lists, extended
     access-lists, policy-statement terms and as-path lists) based on RADB data.

     The options are as follows:

     -2      accept routes  registered	for  as23456  (transition-as)  (default:
	     false)

     -3      assume that your device is asn32-safe.

     -4      generate IPv4 prefix/access-lists (default).

     -6      generate IPv6 prefix/access-lists (IPv4 by default).

     -A      try  to  aggregate prefix-lists as much as possible (not all output
	     formats supported).

     -a asn  specify what asn shall be	denied	in  case  of  empty  prefix-list
	     (OpenBGPD) or included in empty as-list (JunOS).

     -B      generate output in OpenBGPD format (default: Cisco)

     -b      generate output in BIRD format (default: Cisco).

     -d      enable some debugging output.

     -D      use asdot notation for Cisco as-path access-lists.

     -E      generate  extended access-list (Cisco), policy-statement term using
	     route-filters (Juniper), [ip|ipv6]-prefix-list (Nokia)  or  prefix-
	     sets (OpenBGPd).

     -f number
	     generate input as-path access-list (use 0 to not enforce first AS)

     -F fmt  generate output in user-defined format.

     -G number
	     generate output as-path access-list.

     -h host[:port]
	     host running IRRD database (default: whois.radb.net).

     -J      generate config for Juniper (default: Cisco).

     -j      generate output in JSON format (default: Cisco).

     -l name
	     name of generated entry.

     -L limit
	     limit recursion depth when expanding as-sets.

     -m len  maximum  prefix-length  of  accepted prefixes (default: 32 for IPv4
	     and 128 for IPv6).

     -M match
	     extra match conditions for Juniper route-filters.

     -n      generate config for Nokia SR OS MD-CLI (Cisco IOS by default)

     -N      generate config for Nokia SR OS classic CLI (Cisco IOS by default).

     -p      accept routes registered for private ASNs (default: disabled)

     -P      generate prefix-list (default, backward compatibility).

     -r len  allow more specific routes starting with specified masklen too.

     -R len  allow more specific routes up to specified masklen too.

     -s      generate sequence numbers in IOS-style prefix-lists.

     -S sources
	     use specified sources only (recommended: RADB,RIPE,APNIC).

     -t      generate as-sets for OpenBGPD (OpenBSD 6.4+), BIRD  and  JSON  for-
	     mats, as-list-groups for Juniper (JunOS 21+).

     -T      disable pipelining.

     -W len  generate  as-path	strings of no more than len items (use 0 for in-
	     ifinity).

     -U      generate config for Huawei devices (Cisco IOS by default)

     -X      generate config for Cisco IOS XR devices (plain IOS by default).

     -z      generate route-filter-lists (JunOS 16.2+).

     OBJECTS
	     means networks (in prefix format), autonomous systems, as-sets  and
	     route-sets.

     EXCEPT OBJECTS
	     those objects will be excluded from expansion.

EXAMPLES
     Generating named juniper prefix-filter for AS20597:
     ~>bgpq3 -Jl eltel AS20597
     policy-options {
     replace:
      prefix-list eltel {
	 81.9.0.0/20;
	 81.9.32.0/20;
	 81.9.96.0/20;
	 81.222.128.0/20;
	 81.222.192.0/18;
	 85.249.8.0/21;
	 85.249.224.0/19;
	 89.112.0.0/19;
	 89.112.4.0/22;
	 89.112.32.0/19;
	 89.112.64.0/19;
	 217.170.64.0/20;
	 217.170.80.0/20;
      }
     }

     For  Cisco we can use aggregation (-A) flag to make this prefix-filter more
     compact:
     ~>bgpq3 -Al eltel AS20597
     no ip prefix-list eltel
     ip prefix-list eltel permit 81.9.0.0/20
     ip prefix-list eltel permit 81.9.32.0/20
     ip prefix-list eltel permit 81.9.96.0/20
     ip prefix-list eltel permit 81.222.128.0/20
     ip prefix-list eltel permit 81.222.192.0/18
     ip prefix-list eltel permit 85.249.8.0/21
     ip prefix-list eltel permit 85.249.224.0/19
     ip prefix-list eltel permit 89.112.0.0/18 ge 19 le 19
     ip prefix-list eltel permit 89.112.4.0/22
     ip prefix-list eltel permit 89.112.64.0/19
     ip prefix-list eltel permit 217.170.64.0/19 ge 20 le 20
     - you see, prefixes 89.112.0.0/19 and 89.112.32.0/19  now	aggregated  into
     single entry 89.112.0.0/18 ge 19 le 19.

     Well, for Juniper we can generate even more interesting policy-options, us-
     ing -M <extra match conditions>, -R <len> and hierarchical names:
     ~>bgpq3 -AJEl eltel/specifics -r 29 -R 32 -M "community blackhole" AS20597
     policy-options {
      policy-statement eltel {
       term specifics {
     replace:
	from {
	 community blackhole;
	 route-filter 81.9.0.0/20 prefix-length-range /29-/32;
	 route-filter 81.9.32.0/20 prefix-length-range /29-/32;
	 route-filter 81.9.96.0/20 prefix-length-range /29-/32;
	 route-filter 81.222.128.0/20 prefix-length-range /29-/32;
	 route-filter 81.222.192.0/18 prefix-length-range /29-/32;
	 route-filter 85.249.8.0/21 prefix-length-range /29-/32;
	 route-filter 85.249.224.0/19 prefix-length-range /29-/32;
	 route-filter 89.112.0.0/17 prefix-length-range /29-/32;
	 route-filter 217.170.64.0/19 prefix-length-range /29-/32;
	}
       }
      }
     }
     generated	policy-option  term  now allows all specifics with prefix-length
     between /29 and /32 for eltel networks if they match with special community
     blackhole (defined elsewhere in configuration).

     Of course, this version supports IPv6 (-6):
     ~>bgpq3 -6l as-retn-6 AS-RETN6
     no ipv6 prefix-list as-retn-6
     ipv6 prefix-list as-retn-6 permit 2001:7fb:fe00::/48
     ipv6 prefix-list as-retn-6 permit 2001:7fb:fe01::/48
     [....]
     and support for ASN 32 is also here
     ~>bgpq3 -J3f 112 AS-SPACENET
     policy-options {
     replace:
      as-path-group NN {
       as-path a0 "^112(112)*$";
       as-path a1 "^112(.)*(1898|5539|8495|8763|8878|12136|12931|15909)$";
       as-path a2 "^112(.)*(21358|23456|23600|24151|25152|31529|34127|34906)$";
       as-path a3 "^112(.)*(35052|41720|43628|44450|196611)$";
      }
     }
     see AS196611 in the end of the list ? That's AS3.3 in 'asplain' notation.

     For non-ASN32 capable routers you should not use switch -3, and the  result
     will be next:
     ~>bgpq3 -f 112 AS-SPACENET
     no ip as-path access-list NN
     ip as-path access-list NN permit ^112(_112)*$
     ip as-path access-list NN permit ^112(_[0-9]+)*_(1898|5539|8495|8763)$
     ip as-path access-list NN permit ^112(_[0-9]+)*_(8878|12136|12931|15909)$
     ip as-path access-list NN permit ^112(_[0-9]+)*_(21358|23456|23600|24151)$
     ip as-path access-list NN permit ^112(_[0-9]+)*_(25152|31529|34127|34906)$
     ip as-path access-list NN permit ^112(_[0-9]+)*_(35052|41720|43628|44450)$

     AS196611  is no more in the list, however, AS23456 (transition AS) would be
     added to list if it were not present.

USER-DEFINED FORMAT
     If you want to generate configuration not for routers, but for  some  other
     programs/systems,	you may use user-defined formatting, like in example be-
     low:
     user@host:~>bgpq3 -F "ipfw add pass all from %n/%l to any\n" as3254
     ipfw add pass all from 62.244.0.0/18 to any
     ipfw add pass all from 91.219.29.0/24 to any
     ipfw add pass all from 91.219.30.0/24 to any
     ipfw add pass all from 193.193.192.0/19 to any

     Recognized format characters: %n - network, %l - mask length, %N  -  object
     name,  %m	- object mask and %i - inversed mask.  Recognized escape charac-
     ters: \n - new line, \t - tabulation.  Please note that no  new  lines  in-
     serted  automatically after each sentence, you have to add them into format
     string manually, elsewhere output will be in one line (sometimes  it  makes
     sense):
     user@host:~>bgpq3 -6F "%n/%l; " as-eltel
     2001:1b00::/32; 2620:4f:8000::/48; 2a04:bac0::/29; 2a05:3a80::/48;

DIAGNOSTICS
     When  everything  is OK, bgpq3 generates access-list to standard output and
     exits with status == 0.  In case of errors they are printed to  stderr  and
     program exits with non-zero status.

SEE ALSO
     http://www.radb.net/	     Routing	       Arbiter		 project
     http://tools.ietf.org/html/draft-michaelson-4byte-as-representation-05  for
     information       on	'asdot'       and      'asplain'      notations.
     http://www.cisco.com/en/US/docs/ios/12_0s/release/ntes/120SNEWF.html#wp3521658
     for information on Cisco implementation of ASN32.

AUTHOR
     Alexandre Snarskii <snar@snar.spb.ru>

FreeBSD ports 15.quarterly	  Oct 27, 2008				BGPQ3(8)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=bgpq3&sektion=8&manpath=FreeBSD+Ports+15.1.quarterly>

home | help