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

FreeBSD Manual Pages

  
 
  

home | help
BGPD.CONF(5)		      File Formats Manual		  BGPD.CONF(5)

NAME
       bgpd.conf -- BGP	routing	daemon configuration file

DESCRIPTION
       The  bgpd(8) daemon implements the Border Gateway Protocol version 4 as
       described in RFC	4271.

       The bgpd.conf config file is divided into the following main sections:

       "MACROS"
	     Definitions of variables that can be used later, simplifying  the
	     configuration file.

       "GLOBAL CONFIGURATION"
	     Global settings for bgpd(8).

       "SET CONFIGURATION"
	     Various lookup tables are defined in this section.

       "NETWORK	AND FLOWSPEC ANNOUNCEMENTS"
	     Networks  which  should  be  announced by bgpd(8) are set in this
	     section.

       "MPLS VPN CONFIGURATION"
	     The definition and	properties for BGP MPLS	VPNs are set  in  this
	     section.

       "NEIGHBORS AND GROUPS"
	     bgpd(8) establishes sessions with neighbors.  The neighbor	defin-
	     ition and properties are set in this section, as well as grouping
	     neighbors for the ease of configuration.

       "FILTER"
	     Filter rules for incoming and outgoing UPDATES.

       With the	exception of macros, the sections should be grouped and	appear
       in bgpd.conf in the order shown above.

       The  current line can be	extended over multiple lines using a backslash
       (`\').  Comments	can be put anywhere in the  file  using	 a  hash  mark
       (`#'), and extend to the	end of the current line.  Care should be taken
       when commenting out multi-line text: the	comment	is effective until the
       end of the entire block.

       Argument	 names	not beginning with a letter, digit, or underscore must
       be quoted.

       Additional configuration	files can be included with  the	 include  key-
       word, for example:

	     include "/etc/bgpd/bgpd-10.0.0.1.filter"

MACROS
       A  macro	 is  defined with a command of the form	name=value.  The macro
       name can	contain	letters, digits, and underscores and cannot be	a  re-
       served word (for	example, AS, neighbor, or group).  Within unquoted ar-
       guments,	the string $name is later expanded to value.

       For example:

	     peer1="1.2.3.4"
	     neighbor $peer1 {
		     remote-as 65001
	     }

GLOBAL CONFIGURATION
       These settings affect the operation of the bgpd(8) daemon as a whole.

       AS as-number [as-number]
	       Set  the	 local autonomous system number	to as-number.  A fall-
	       back 2-byte AS number may follow	a 4-byte AS number for	neigh-
	       bors  that  do not support 4-byte AS numbers.  The standard and
	       default fallback	AS number is 23456.

	       The AS numbers are assigned by local RIRs, such as:

	       AfriNIC	 for Africa
	       APNIC	 for Asia Pacific
	       ARIN	 for North America and parts of	the Caribbean
	       LACNIC	 for Latin America and the Caribbean
	       RIPE NCC	 for Europe, the Middle	East, and parts	of Asia

	       The AS numbers 64512 - 65534 are	designated  for	 private  use.
	       The AS number 23456 is reserved and should not be used.	4-byte
	       AS numbers may be specified in either the ASPLAIN format:

		     AS	196618

	       or in the older ASDOT format:

		     AS	3.10

       connect-retry seconds
	       Set  the	number of seconds to wait before attempting to re-open
	       a connection.  This timer should	be sufficiently	large in  EBGP
	       configurations.	The default is 120 seconds.

       dump [rib name] (table-v2|table-mp|table) file [interval]
       dump (all|updates) (in|out) file	[interval]
	       Dump  the RIB, a.k.a. the routing information base, or dump on-
	       going BGP activity, in  Multi-threaded  Routing	Toolkit	 (MRT)
	       format.	The file is subject to strftime(3)-expansion.

	       The table-v2 and	table-mp RIB formats store multi-protocol RIBs
	       correctly,  but	the table format does not.  The	latter two are
	       provided	only to	support	third-party tools lacking support  for
	       the  recommended	 table-v2  format.  Dump an alternative	RIB by
	       specifying name.	 Specify an interval in	seconds	 for  periodic
	       RIB dumps.

	       The  following  will  dump the entire RIB table,	at startup and
	       every 5 minutes thereafter, to a	new file:

		     dump table-v2 "/tmp/rib-dump-%H%M"	300

	       Dumps of	ongoing	BGP activity include  all  BGP	state  transi-
	       tions,  and  all	 BGP messages in the specified direction.  Use
	       updates to dump only BGP	UPDATE messages, without state transi-
	       tions.  Specify an interval in seconds to restart  periodically
	       with a new file:

		     dump all in "/tmp/all-in-%H%M" 300

       fib-priority prio
	       Set the routing priority	to prio.  The default is 48.

       fib-update (yes|no)
	       If  set	to  no,	do not update the Forwarding Information Base,
	       a.k.a. the kernel routing table.	 The default is	yes.

       holdtime	seconds
	       Set the announced holdtime in seconds.  This is exchanged  with
	       a  neighbor upon	connection establishment, in the OPEN message,
	       and the shortest	holdtime governs the session.

	       The neighbor session is dropped if the session holdtime	passes
	       without	receipt	 of  a KEEPALIVE or an UPDATE message from the
	       neighbor.  The default is 90 seconds.

       holdtime	min seconds
	       The minimum acceptable holdtime in seconds.  This value must be
	       at least	3.

       listen on address [port port]
	       Specify the local IP address and	optional port for  bgpd(8)  to
	       listen  on.  The	default	is to listen on	all local addresses on
	       the current default routing domain.

       log updates
	       Log sent	and received BGP update	messages.

       nexthop qualify via (bgp|default)
	       If set to bgp, bgpd(8) may verify nexthops  using  BGP  routes.
	       If  set	to  default, bgpd(8) may verify	nexthops using the de-
	       fault route.  By	default	bgpd(8)	uses  only  static  routes  or
	       routes added by other routing daemons, such as ospfd(8).

       rde evaluate (default|all)
	       If  set	to  all, keep evaluating alternative paths in case the
	       selected	path is	filtered out.  By default if a	path  is  fil-
	       tered by	the output filters then	no alternative path is sent to
	       this peer.

       rde med compare (always|strict)
	       If set to always, the MULTI_EXIT_DISC attributes	will always be
	       compared.  The default is strict, where the metric is only com-
	       pared between peers belonging to	the same AS.

       rde rib name [no	evaluate]
       rde rib name [rtable number]
	       Create  an  additional RIB named	name.  The degree to which its
	       routes may be utilized is configurable.	They may  be  excluded
	       from  the  decision process that	selects	usable routes with the
	       no evaluate flag, and this precludes their export to any	kernel
	       routing table.  By default its routes will  be  evaluated,  but
	       not exported to the kernel.  They may be	both evaluated and ex-
	       ported if associated with a given rtable	number,	which must be-
	       long  to	 the routing domain that bgpd(8) was started in.  This
	       table will not be consulted during nexthop verification	unless
	       it  is  the one that bgpd(8) was	started	in.  It	is unnecessary
	       to create Adj-RIB-In and	Loc-RIB, which are  created  automati-
	       cally and used by default.

       rde rib Loc-RIB include filtered
	       Include	filtered  prefixes  in the Loc-RIB.  Filtered prefixes
	       are not eligible	by the decision	process	but can	 be  displayed
	       by bgpctl(8).

       rde route-age (ignore|evaluate)
	       If  set	to evaluate, the route decision	process	will also con-
	       sider the age of	the route in addition to its path  attributes,
	       giving  preference  to the older, typically more	stable,	route.
	       This renders the	decision process  nondeterministic.   The  de-
	       fault is	ignore.

       reject as-set (yes|no)
	       If  set to yes, AS paths	attributes containing AS_SET path seg-
	       ments will be rejected and all  prefixes	 will  be  treated  as
	       withdraws.  The default is yes.

       router-id dotted-quad
	       Set  the	 BGP  router  ID, which	must be	non-zero and should be
	       unique within the AS.  By default, the router ID	is the highest
	       IPv4 address assigned to	the local machine.

		     router-id 10.0.0.1

       rtable number
	       Work with the given kernel routing table	instead	of the default
	       table, which is the one bgpd(8) was started  in.	  For  nexthop
	       verification,  bgpd(8)  will  always consult the	default	table.
	       This is the same	as using the following syntax:

		     rde rib Loc-RIB rtable number

       socket "path" [restricted]
	       Create a	control	socket at path.	 If restricted is specified, a
	       restricted  control  socket  will  be  created.	  By   default
	       /var/run/bgpd.sock.<rdomain>  is	 used  where  <rdomain>	is the
	       routing domain in which bgpd(8) has been	started.  By  default,
	       no restricted socket is created.

       staletime seconds
	       Set  the	 upper	bound  in seconds stale	routes are kept	during
	       graceful	restart.  The default is 180 seconds.

       transparent-as (yes|no)
	       If set to yes, attribute	transparency is	enabled.  AS paths  to
	       EBGP  neighbors are not prepended with the local	AS.  Addition-
	       ally, the MULTI_EXIT_DISC attribute is passed transparently and
	       automatic  filtering  based  on	the   well-known   communities
	       NO_EXPORT,  NO_ADVERTISE,  and NO_EXPORT_SUBCONFED is disabled.
	       The default is no.

SET CONFIGURATION
       bgpd(8) supports	the efficient lookup of	data within  named  sets.   An
       as-set, a prefix-set, and an origin-set store AS	numbers, prefixes, and
       prefixes/source-as pairs, respectively.	Such sets may be referenced by
       filter  rules;  see the "FILTER"	section	for details.  It is more effi-
       cient to	evaluate a set than a long series of rules for filtering  each
       of its members.

       One  single roa-set may be defined, against which bgpd(8) will validate
       the origin of each prefix.  The roa-set and  the	 aspa-set  are	merged
       with the	corresponding tables received via rtr sessions.

       A  set definition can span multiple lines, and an optional comma	is al-
       lowed between elements.	The same set can be defined more than once, in
       this case the definitions are merged into one common set.

       as-set name { as-number ... }
	       An as-set stores	AS numbers, and	can be used with the  AS  spe-
	       cific parameter in "FILTER" rules.

       aspa-set	 {  customer-as	 as-number  [expires  seconds]	provider-as  {
	       as-number ... } ... }
	       The aspa-set holds a  collection	 of  Validated	ASPA  Payloads
	       (VAPs).	 Each as AS_PATH received from an eBGP peer is checked
	       against the aspa-set, and the ASPA Validation  State  (AVS)  is
	       set.   expires can be set to the	seconds	since Epoch until when
	       this VAP	is valid.

		     aspa-set {
			     customer-as 64511 provider-as { 64496 65496 }
			     customer-as 64496 provider-as { 65496 64544 }
		     }

       origin-set name { address/len [maxlen mlen] source-as asn ... }
	       An origin-set stores prefix/source-as pairs, and	can be used to
	       filter on the combination by using the origin-set parameter  in
	       "FILTER"	rules.

		     origin-set	private	{ 10.0.0.0/8 maxlen 24 source-as 64511
					  203.0.113.0/24 source-as 64496 }

       prefix-set name { address/len ... }
	       A  prefix-set  stores network prefixes and can be used in place
	       of the prefix parameter	in  "FILTER"  rules,  and  in  network
	       statements.   A	prefix can be followed by the prefixlen	opera-
	       tors listed for the prefix parameter in the  "PARAMETERS"  sec-
	       tion.

	       The  first  example  below  creates  a  set  of prefixes	called
	       "private", to hold a number of RFC 1918 private network blocks.
	       The second example shows	the use	of prefixlen operators.

		     prefix-set	private	{ 10.0.0.0/8, 172.16.0.0/12,
					  192.168.0.0/16, fc00::/7 }
		     prefix-set	as64496set { 192.0.2.0/24 prefixlen >= 26,
					     2001:db8::/32 or-longer }

       roa-set { address/len [maxlen mlen] source-as asn [expires seconds] ...
	       }
	       The roa-set  holds  a  collection  of  Validated	 ROA  Payloads
	       (VRPs).	 Each  received	prefix is checked against the roa-set,
	       and the Origin Validation State (OVS) is	set.  expires  can  be
	       set to the seconds since	Epoch until when this VRP is valid.

		     roa-set { 192.0.2.0/23 maxlen 24 source-as	64511
			       203.0.113.0/24 source-as	64496 }

       rtr address { ... }
	       The  rtr	 block	specifies a RPKI to Router (RTR) session.  RTR
	       sessions	provide	another	means to load VRP sets	into  bgpd(8).
	       Changes	propagated  via	 the RTR protocol do not need a	config
	       reload and are immediately applied.  The	union of all VRP  sets
	       received	 via  rtr  sessions  and the entries in	the roa-set is
	       used to validate	the origin of routes.  The rtr session proper-
	       ties are	as follows:

	       descr description
		       Add a description.  The description is used in  logging
		       and  status  reports,  but  has	no further meaning for
		       bgpd(8).

	       local-address address
		       Bind to the specific IP address before opening the  TCP
		       connection to the rtr server.

		       min-version  number  Require  a	minimal	RTR version of
		       number.	To ensure that ASPA records  are  synchronised
		       over RTR	a minimal version of 2 is required.

	       port number
		       Specify	the  TCP destination port for the rtr session.
		       If not specified, the default port is 323.

NETWORK	AND FLOWSPEC ANNOUNCEMENTS
       network statements specify the networks that bgpd(8) will  announce  as
       its own.	 An announcement must also be permitted	by the "FILTER"	rules.
       By default bgpd(8) announces no networks.

       network address/prefix [set ...]
	       Announce	the specified prefix as	belonging to our AS.

       network (inet|inet6) connected [set ...]
	       Announce	routes to directly attached networks.

       network prefix-set name [set ...]
	       Announce	all networks in	the prefix-set name.

       network (inet|inet6) priority number [set ...]
	       Announce	routes having the specified priority.

       network (inet|inet6) rtlabel label [set ...]
	       Announce	routes having the specified label.

       network (inet|inet6) static [set	...]
	       Announce	all static routes.

       Each network statement may set default AS path attributes:

	     network 192.168.7.0/24 set	localpref 220

       See also	the "ATTRIBUTE SET" section.

       flowspec	 statements  specify  the flowspec rules that bgpd(8) will an-
       nounce as its own.  By default bgpd(8) announces	no flowspec rules.

       flowspec	(inet|inet6) rule [set ...]
	       Announce	an IPv4	or IPv6	specific flowspec rule	including  the
	       AS path attributes specified by set.

       The following rule parameters can be set.  Most number arguments	in the
       below  rules  can  be  specified	 as a list of ranges enclosed in curly
       brackets	using these operators:

	     =	     (equal, default)
	     !=	     (unequal)
	     <	     (less than)
	     <=	     (less than	or equal)
	     >	     (greater than)
	     >=	     (greater than or equal)
	     -	     (range including boundaries)
	     ><	     (except range)

       `><', and `-' are binary	operators (they	take two arguments).

       from source [port list]
       to dest [port list]
	       This rule applies only to packets with the specified source  or
	       destination addresses and ports.	 Addresses can be specified in
	       CIDR  notation  (matching  netblocks) or	using any to match any
	       address.	 In most cases a to address must be specified  and  be
	       part of the announced networks.

	       Ports  can be specified either by number	or by name.  For exam-
	       ple, port 80 can	be specified as	www.  For a list of  all  port
	       name to number mappings see the file /etc/services.
       flags a/b
	       This rule only applies to TCP packets that have the flags a set
	       out of set b.  Flags not	specified in b are ignored.  The flags
	       are:  (F)IN,  (S)YN,  (R)ST,  (P)USH,  (A)CK, (U)RG, (E)CE, and
	       C(W)R.
       fragment	a/b
	       This rule only applies to fragmented packets  which  match  the
	       specified  flags.   The flags are: (D)on't fragment, (I)s frag-
	       ment, (F)irst fragment, and (L)ast fragment.
       icmp-type type [code code]
       icmp6-type type [code code]
	       This rule only applies to ICMP or ICMP6 packets with the	speci-
	       fied type and code.  Text names for ICMP	types  and  codes  are
	       listed in icmp(4) and icmp6(4).
       length pktlen
	       This  rule  applies  only  to  packets  matching	 the specified
	       pktlen.
       proto protocol
	       This rule applies only to packets  of  this  protocol.	Common
	       protocols are ICMP, ICMP6, TCP, and UDP.	 For a list of all the
	       protocol	name to	number mappings	see the	file /etc/protocols.
       tos string|number
	       This  rule  applies to packets with the specified TOS bits set.
	       string  may  be	one  of	  critical,   inetcontrol,   lowdelay,
	       netcontrol,  throughput,	 reliability,  or  one of the DiffServ
	       Code Points: ef,	af11 ... af43, cs0 ... cs7; number may be  ei-
	       ther a hex or decimal number.

       The action taken	when a flowspec	rules matches depends on extended com-
       munities.   For	example	 to  block  all	 traffic  either ext-community
       flow-rate as-number:0 or	ext-community flow-pps as-number:0 need	to  be
       set.

MPLS VPN CONFIGURATION
       A  vpn  section	configures  a router to	participate in an MPLS Virtual
       Private Network.	 It specifies an mpe(4)	interface to use,  a  descrip-
       tion, and various properties of the VPN:

	     vpn "description" on mpe1 {
		     rd	65002:1
		     import-target rt 65002:42
		     export-target rt 65002:42
		     network 192.168.1/24
	     }

       bgpd(8)	will  not  exchange VPN	routes with a neighbor by default, see
       the "NEIGHBORS AND GROUPS" section.  The	description is used when  log-
       ging but	has no further meaning to bgpd(8).

       The  mpe(4) interface will be used as the outgoing interface for	routes
       to the VPN, and local networks will be announced	with  the  MPLS	 label
       specified on the	interface.  The	interface can provide VPN connectivity
       for  another rdomain by being configured	in that	rdomain.  The required
       rdomain must be configured on the interface  before  bgpd(8)  uses  it.
       Multiple	 VPNs may be connected to a single rdomain, including the rdo-
       main that bgpd(8) is running in.

       An example hostname.if(5) configuration for an mpe(4) interface provid-
       ing connectivity	to rdomain 1:

	     rdomain 1
	     mplslabel 2000
	     inet 192.198.0.1 255.255.255.255
	     up

       The VPN properties are as follows:

       export-target subtype as-number:local
       export-target subtype IP:local
	       Classify	announced networks by tagging them  with  an  extended
	       community of the	given arguments.  The community	subtype	should
	       be  a  route target, rt,	to ensure interoperability.  The argu-
	       ments are further detailed  in  the  "ATTRIBUTE	SET"  section.
	       More than one export-target can be specified.

       fib-update (yes|no)
	       If  set	to  no,	do not update the Forwarding Information Base,
	       a.k.a. the kernel routing table.	 The default is	yes.

       import-target subtype as-number:local
       import-target subtype IP:local
	       The rdomain imports only	those prefixes tagged with an extended
	       community matching an  import-target.   The  community  subtype
	       should  be a route target, rt, to ensure	interoperability.  The
	       arguments are further detailed in the "ATTRIBUTE	SET"  section.
	       More than one import-target can be specified.

       network argument	...
	       Announce	 the  given networks within this VPN; see the "NETWORK
	       ANNOUNCEMENTS" section.

       rd as-number:local
       rd IP:local
	       The Route Distinguisher rd supplies BGP with namespaces to dis-
	       ambiguate VPN prefixes, as these	needn't	 be  globally  unique.
	       Unlike  route  targets, the rd neither identifies the origin of
	       the prefix nor controls into which VPNs the prefix is  distrib-
	       uted.  The as-number or IP of a rd should be set	to a number or
	       IP that was assigned by an appropriate authority, whereas local
	       can be chosen by	the local operator.

NEIGHBORS AND GROUPS
       bgpd(8)	establishes  TCP  connections  to  other  BGP  speakers	called
       neighbors.  A neighbor and its properties are specified by  a  neighbor
       section:

	     neighbor 10.0.0.2 {
		     remote-as 65002
		     descr "a neighbor"
	     }

       Neighbors  placed  within a group section inherit the properties	common
       to that group:

	     group "peering AS65002" {
		     remote-as 65002
		     neighbor 10.0.0.2 {
			     descr "AS65002-p1"
		     }
		     neighbor 10.0.0.3 {
			     descr "AS65002-p2"
		     }
	     }

       An entire network of neighbors may be accommodated by specifying	an ad-
       dress/netmask pair:

	     neighbor 10.0.0.0/8

       This is a template that recognises as a neighbor	 any  connection  from
       within  the  given  network.   Such  neighbors inherit their template's
       properties,  except  for	 their	IP  address.   A  template  may	  omit
       remote-as; bgpd(8) then accepts any AS presented	by the neighbor	in the
       OPEN message.

       The neighbor properties are as follows:

       announce	(IPv4|IPv6) (none|unicast|vpn|flowspec)	[enforce]
       announce	EVPN [enforce]
	       For  the	given address family, control which subsequent address
	       families	are announced  during  the  capabilities  negotiation.
	       Only routes for that address family and subsequent address fam-
	       ilies will be announced and processed.  EVPN does not require a
	       subsequent address family.

	       At  the	moment,	 only none, which disables the announcement of
	       that address family, unicast, vpn, which	allows	the  distribu-
	       tion of BGP MPLS	VPNs, and flowspec, which allows the distribu-
	       tion of Flow Specification Rules, are supported.

	       The  default is unicast for the same address family of the ses-
	       sion.

       announce	add-path recv (yes|no|enforce)
	       If set to yes, the receive add-path  capability	is  announced,
	       which  allows  reception	of multiple paths per prefix.  The de-
	       fault is	no.

       announce	add-path send (no|all) [enforce]
       announce	add-path send (best|ecmp|as-wide-best) [plus  num]  [max  num]
	       [enforce]
	       If  set	to all,	best, ecmp, or as-wide-best, the send add-path
	       capability is announced,	which allows  sending  multiple	 paths
	       per prefix.  The	paths sent depend on which mode	is selected:

	       no	     do	not advertise add-path send capability
	       all	     send all valid paths
	       best	     send the best path
	       ecmp	     send paths	with equal nexthop cost
	       as-wide-best  send  paths where the first 8 checks of the deci-
			     sion process match

	       plus allows the inclusion of additional backup paths and	 works
	       for best, ecmp, and as-wide-best.  max can be used to limit the
	       total  amount  of  paths	sent for ecmp and as-wide-best.	 Right
	       now ecmp	and as-wide-best are equivalent.  The default  is  no.
	       If  add-path send is active then	the setting of rde evaluate is
	       ignored.

       announce	as-4byte (yes|no|enforce)
	       If set to no, the 4-byte	AS capability is not announced and  so
	       native  4-byte  AS support is disabled.	If enforce is set, the
	       session will only be established	if the neighbor	also announces
	       the capability.	The default is yes.

       announce	enhanced refresh (yes|no|enforce)
	       If set to yes, the enhanced route  refresh  capability  is  an-
	       nounced.	  If  enforce  is set, the session will	only be	estab-
	       lished if the neighbor also announces the capability.  The  de-
	       fault is	no.

       announce	extended message (yes|no|enforce)
	       If  set	to  yes, the extended message capability is announced.
	       If negotiated, the default maximum message  size	 is  increased
	       from  4096 to 65535 bytes.  If enforce is set, the session will
	       only be established if the neighbor also	announces the capabil-
	       ity.  The default is no.

       announce	extended nexthop (yes|no|enforce)
	       If set to yes, the extended nexthop encoding capability is  an-
	       nounced.	 If negotiated,	IPv4 unicast and vpn sessions can send
	       paths with a IPv6 nexthop.  If enforce is set, the session will
	       only be established if the neighbor also	announces the capabil-
	       ity.  The default is no.

       announce	graceful notification (yes|no)
	       If  set to yes, the graceful notification extension to graceful
	       restart is announced.  The default  is  no.   announce  refresh
	       must be enabled to enable graceful notifications.

       announce	policy (yes|no|enforce)
	       If  set	to  yes,  add the open policy role capability.	If the
	       role of the neighbor does not correspond	to the	expected  role
	       then  the  session will be closed.  If enforce is set, the ses-
	       sion will only be established if	the  neighbor  also  announces
	       the capability.	The default is no.

       announce	refresh	(yes|no|enforce)
	       If  set	to  no,	the route refresh capability is	not announced.
	       If enforce is set, the session will only	be established if  the
	       neighbor	also announces the capability.	The default is yes.

       announce	restart	(yes|no|enforce)
	       If set to no, the graceful restart capability is	not announced.
	       Currently only the End-of-RIB marker is supported and announced
	       by the restart capability.  If enforce is set, the session will
	       only be established if the neighbor also	announces the capabil-
	       ity.  The default is yes.

       as-override (yes|no)
	       If  set	to  yes,  all occurrences of the neighbor AS in	the AS
	       path will be replaced with the local AS before running the fil-
	       ters.  The Adj-RIB-In still holds the unmodified	AS path.   The
	       default value is	no.

       demote group
	       Increase	 the  carp(4)  demotion	counter	on the given interface
	       group,  usually	carp,  when  the  session  is  not  in	 state
	       ESTABLISHED.  The demotion counter will be increased as soon as
	       bgpd(8)	starts and decreased 60	seconds	after the session went
	       to state	ESTABLISHED.  For neighbors added at runtime, the  de-
	       motion  counter	is  only  increased after the session has been
	       ESTABLISHED at least once before	dropping.

	       For more	information on interface groups, see the group keyword
	       in ifconfig(8).

       depend on interface
	       The neighbor session will be kept in  state  IDLE  as  long  as
	       interface  reports  no  link.   For carp(4) interfaces, no link
	       means that the interface	is currently backup.  This is  primar-
	       ily intended to be used with carp(4) to reduce failover times.

	       The state of the	network	interfaces on the system can be	viewed
	       using the show interfaces command to bgpctl(8).

       descr description
	       Add a description.  The description is used when	logging	neigh-
	       bor  events, in status reports, for specifying neighbors, etc.,
	       but has no further meaning to bgpd(8).

       down [reason]
	       Do not start the	session	when bgpd(8)  comes  up	 but  stay  in
	       IDLE.   If  the	session	 is  cleared  at runtime, after	a down
	       reason was configured at	runtime, the reason is sent as	Admin-
	       istrative Shutdown Communication.  The reason cannot exceed 255
	       octets.

       dump (all|updates) (in|out) file	[interval]
	       Dump  ongoing BGP activity for a	particular neighbor.  See also
	       the dump	setting	in "GLOBAL CONFIGURATION".

       enforce local-as	(yes|no)
	       If set to no, AS	paths will not be checked for AS  loop	detec-
	       tion.   This feature is similar to allowas-in in	some other BGP
	       implementations.	 Since there is	no AS path  loop  check,  this
	       feature	is  dangerous, and requires you	to add filters to pre-
	       vent receiving your own prefixes.  The default value is yes.

       enforce neighbor-as (yes|no)
	       If set to yes, AS paths whose leftmost AS is not	equal  to  the
	       remote  AS  of  the neighbor are	rejected and a NOTIFICATION is
	       sent back.  The default value for IBGP peers  is	 no  otherwise
	       the default is yes.

       export (none|default-route)
	       If  set	to none, no UPDATE messages will be sent to the	neigh-
	       bor.  If	set to default-route, only the default route  will  be
	       announced to the	neighbor.

       holdtime	seconds
	       Set the holdtime	in seconds.  Inherited from the	global config-
	       uration if not given.

       holdtime	min seconds
	       Set the minimal acceptable holdtime.  Inherited from the	global
	       configuration if	not given.

       ipsec (ah|esp) (in|out) spi spi-number authspec [encspec]
	       Enable  IPsec  with  static keying.  There must be at least two
	       ipsec statements	per peer with manual keying,  one  per	direc-
	       tion.  authspec specifies the authentication algorithm and key.
	       It can be

		     sha1 <key>
		     md5 <key>

	       encspec	specifies  the	encryption algorithm and key.  ah does
	       not support encryption.	 With  esp,  encryption	 is  optional.
	       encspec can be

		     3des <key>
		     3des-cbc <key>
		     aes <key>
		     aes-128-cbc <key>

	       Keys  must be given in hexadecimal format.  After changing set-
	       tings, a	session	needs to be reset to use the  new  keys.   The
	       ipsec flows only	work with session using	the default port 179.

       ipsec (ah|esp) ike
	       Enable  IPsec  with dynamic keying.  In this mode, bgpd(8) sets
	       up the flows, and a key management daemon such as isakmpd(8) is
	       responsible for managing	the session keys.  With	isakmpd(8), it
	       is  sufficient  to  copy	 the  peer's  public  key,  found   in
	       /etc/isakmpd/local.pub,	to  the	 local	machine.   It  must be
	       stored in a file	named after the	peer's IP address and must  be
	       stored  in  /etc/isakmpd/pubkeys/ipv4/.	 The  local public key
	       must be copied to the peer in the same way.  As bgpd(8) manages
	       the flows on its	own, it	is sufficient to  restrict  isakmpd(8)
	       to  only	take care of keying by specifying the flags -Ka.  This
	       can be done in rc.conf.local(8).	 After starting	the isakmpd(8)
	       and bgpd(8) daemons on both sides, the session should be	estab-
	       lished.	After changing settings, a session needs to  be	 reset
	       to  use	the  new keys.	The ipsec flows	only work with session
	       using the default port 179.

       local-address address
       no local-address
	       When bgpd(8) initiates the TCP connection to the	neighbor  sys-
	       tem,  it	normally does not bind to a specific IP	address.  If a
	       local-address is	given, bgpd(8) binds to	 this  address	first.
	       no local-address	reverts	back to	the default.

       local-as	as-number [as-number]
	       Set the AS number sent to the remote system.  Used as described
	       above under "GLOBAL CONFIGURATION" option AS.

	       Since there is no AS path loop check, this option is dangerous,
	       and requires you	to add filters to prevent receiving your ASNs.
	       Intended	to be used temporarily,	for migrations to another AS.

       log no  Disable neighbor	specific logging.

       log updates
	       Log received and	sent updates for this neighbor.

       max-prefix number [restart number]
	       Terminate  the  session when the	maximum	number of prefixes re-
	       ceived is exceeded (no such limit is imposed by	default).   If
	       restart	is  specified,	the  session  will  be restarted after
	       number minutes.

       max-prefix number out [restart number]
	       Terminate the session when the maximum number of	prefixes  sent
	       is  exceeded (no	such limit is imposed by default).  If restart
	       is specified, the session will be restarted after  number  min-
	       utes.

       multihop	hops
	       Neighbors not in	the same AS as the local bgpd(8) normally have
	       to  be directly connected to the	local machine.	If this	is not
	       the case, the multihop statement	defines	the maximum  hops  the
	       neighbor	may be away.

       passive
	       Do  not attempt to actively open	a TCP connection to the	neigh-
	       bor system.

       port port
	       Connect to the peer using port instead of the default BGP  port
	       179.

       reject as-set (yes|no)
	       If  set to yes, AS paths	attributes containing AS_SET path seg-
	       ments will be rejected and all  prefixes	 will  be  treated  as
	       withdraws.   The	 default  is  inherited	from the global	reject
	       as-set setting.

       remote-as as-number
	       Set the AS number of the	remote system.

       rde evaluate (default|all)
	       If set to all, keep evaluating alternative paths	 in  case  the
	       selected	 path  is  filtered out.  By default if	a path is fil-
	       tered by	the output filters then	no alternative path is sent to
	       this peer.  The	default	 is  inherited	from  the  global  rde
	       evaluate	setting.

       rib name
	       Bind the	neighbor to the	specified RIB.

       role role
	       Set  the	 local	role for this eBGP session.  Setting a role is
	       required	for ASPA verification, the open	policy role capability
	       and Only-To-Customer (OTC) attribute of RFC 9234.  The role can
	       be one of none, provider, customer, rs, rs-client, or peer.  If
	       the role	is set to none the announce policy will	also  be  dis-
	       abled.	On iBGP	session	the role setting is ignored and	forced
	       to none.

       route-reflector [address]
	       Act as an RFC 4456 route-reflector for this neighbor.   An  op-
	       tional  cluster	ID can be specified; otherwise the BGP ID will
	       be used.

       set attribute ...
	       Set the AS path attributes to  some  default  per  neighbor  or
	       group block:

		     set localpref 300

	       See  also  the "ATTRIBUTE SET" section.	Set parameters are ap-
	       plied  to  the  received	 prefixes;  the	 only  exceptions  are
	       prepend-self,  nexthop  no-modify and nexthop self.  These sets
	       are rewritten into filter rules and can be  viewed  with	 "bgpd
	       -nv".

       staletime seconds
	       Set the upper bound stale time in seconds for graceful restart.
	       Inherited from the global configuration if not given.

       tcp md5sig password secret
       tcp md5sig key secret
	       Enable  TCP MD5 signatures per RFC 2385.	 The shared secret can
	       either be given as a password or	hexadecimal key.

		     tcp md5sig	password mekmitasdigoat
		     tcp md5sig	key deadbeef
	       After changing keys, a session needs to be reset	to use the new
	       keys.

       transparent-as (yes|no)
	       If set to yes, attribute	transparency is	enabled.  See also the
	       transparent-as setting in "GLOBAL CONFIGURATION".  The  default
	       is inherited from the global transparent-as setting.

       ttl-security (yes|no)
	       Enable or disable ttl-security.	When enabled, outgoing packets
	       are  sent using a TTL of	255 and	a check	is made	against	an in-
	       coming packet's TTL.  For directly  connected  peers,  incoming
	       packets	are  required to have a	TTL of 255, ensuring they have
	       not been	routed.	 For multihop peers, incoming packets are  re-
	       quired  to  have	a TTL of 256 minus multihop distance, ensuring
	       they have not passed through more than the expected  number  of
	       hops.  The default is no.

FILTER
       bgpd(8)	filters	 all  BGP UPDATE messages, including its own announce-
       ments, and blocks them by default.  Filter rules	may match on neighbor,
       direction, prefix or AS path attributes.	 Filter	rules may also	modify
       AS path attributes.

       For each	UPDATE processed by the	filter,	the filter rules are evaluated
       in  sequential  order,  from first to last.  The	last matching allow or
       deny rule decides what action is	taken.	The default action is to deny.

       The following actions can be used in the	filter:

       allow	 The UPDATE is passed.

       deny	 The UPDATE is blocked.

       match	 Apply the filter attribute set	without	influencing the	filter
		 decision.

PARAMETERS
       The rule	parameters specify the UPDATES to which	a  rule	 applies.   An
       UPDATE  always  comes  from, or goes to,	one neighbor.  Most parameters
       are optional, but each can appear at most once per rule.	 If a  parame-
       ter  is	specified,  the	rule only applies to packets with matching at-
       tributes.

       as-type [operator] as-number
       as-type as-set name
	       This rule applies only to UPDATES where the  AS	path  matches.
	       The  part  of  the  AS path specified by	the as-type is matched
	       against the as-number or	the as-set name:

	       AS	    (any part)
	       peer-as	    (leftmost AS number)
	       source-as    (rightmost AS number)
	       transit-as   (all but the rightmost AS number)

	       as-number is an AS number  as  explained	 above	under  "GLOBAL
	       CONFIGURATION".	 It  may  be  set to neighbor-as, which	is ex-
	       panded to the current neighbor remote AS	number,	 or  local-as,
	       which is	expanded to the	locally	assigned AS number.

	       When  specifying	 an  as-set  name, the AS path will instead be
	       matched against all the AS numbers in the set.

	       The operator can	be unspecified (this case is identical to  the
	       equality	operator), or one of the numerical operators

		     =	     (equal)
		     !=	     (unequal)
		     -	     (range including boundaries)
		     ><	     (except range)

	       ><  and	- are binary operators (they take two arguments); with
	       these, as-number	cannot be set to neighbor-as.

	       Multiple	 as-number  entries  for  a  given  type  or   as-type
	       as-number entries may also be specified,	separated by commas or
	       whitespace, if enclosed in curly	brackets:

		     deny from any AS {	1, 2, 3	}
		     deny from any { AS	1, source-as 2,	transit-as 3 }
		     deny from any { AS	{ 1, 2,	3 }, source-as 4, transit-as 5 }

       avs (valid | unknown | invalid)
	       This  rule  applies  only  to UPDATES where the ASPA Validation
	       State (AVS) matches.

       community as-number:local
       community name
	       This rule applies only to UPDATES where the community path  at-
	       tribute	is  present and	matches.  Communities are specified as
	       as-number:local,	where as-number	is an AS number	and local is a
	       locally	significant  number  between  zero  and	 65535.	  Both
	       as-number  and local may	be set to `*' to do wildcard matching.
	       Alternatively, well-known communities may be given by name  in-
	       stead  and  include  BLACKHOLE,	GRACEFUL_SHUTDOWN,  NO_EXPORT,
	       NO_ADVERTISE, NO_EXPORT_SUBCONFED, and NO_PEER.	Both as-number
	       and local may be	set to neighbor-as, which is expanded  to  the
	       current	neighbor  remote  AS number, or	local-as, which	is ex-
	       panded to the locally assigned AS number.

       large-community as-number:local:local
	       This rule applies only to UPDATES  where	 the  Large  community
	       path  attribute is present and matches.	Communities are	speci-
	       fied as as-number:local:local, where as-number is an AS	number
	       and  local  is  a  locally  significant number between zero and
	       4294967295.  Both as-number and local may be set	to `*'	to  do
	       wildcard	 matching,  neighbor-as, which is expanded to the cur-
	       rent neighbor remote AS number, or local-as, which is  expanded
	       to the locally assigned AS number.

       ext-community subtype as-number:local
       ext-community subtype IP:local
       ext-community subtype numvalue
       ext-community ovs (valid	| not-found | invalid)
	       This  rule applies only to UPDATES where	the extended community
	       path attribute is present and  matches.	 Extended  Communities
	       are  specified by a subtype and normally	two values, a globally
	       unique part (e.g. the  AS  number)  and	a  local  part.	  Both
	       as-number  and  local  may  be set to neighbor-as, which	is ex-
	       panded to the current neighbor remote AS	number,	 or  local-as,
	       which  is expanded to the locally assigned AS number.  Wildcard
	       matching	is supported for  local,  numvalue  and	 subtype.   If
	       wildcard	 matching  is  used  on	the subtype then numvalue also
	       needs to	be set to `*'.	See also the "ATTRIBUTE	 SET"  section
	       for further information about the encoding.

       (from|to) peer
	       This  rule  applies  only  to UPDATES coming from, or going to,
	       this particular neighbor.  This parameter  must	be  specified.
	       peer is one of the following:

	       any	    Any	neighbor will be matched.
	       ibgp	    All	IBGP neighbors will be matched.
	       ebgp	    All	EBGP neighbors will be matched.
	       address	    Neighbors with this	address	will be	matched.
	       group descr  Neighbors in this group will be matched.
	       AS as-number
			    Neighbors with this	AS will	be matched.

	       Multiple	 peer entries may also be specified, separated by com-
	       mas or whitespace, if enclosed in curly brackets:

		     deny from { 128.251.16.1, 251.128.16.2, group hojo	}

       (inet|inet6)
	       Match only routes in the	IPv4 or	IPv6 address families, respec-
	       tively.	inet is	an alias for "prefix  0.0.0.0/0	 prefixlen  >=
	       0"; inet6 is an alias for "prefix ::/0 prefixlen	>= 0".

       max-as-len len
	       This  rule  applies  only to UPDATES where the AS path has more
	       than len	elements.

       max-as-seq len
	       This rule applies only to UPDATES where a single	AS  number  is
	       repeated	more than len times.

       max-communities|max-large-communities|max-ext-communities num
	       This  rule  applies  only to UPDATES where the Basic, Large, or
	       Extended	Community attribute has	more than num elements.

       nexthop address
	       This rule applies only to UPDATES where the nexthop is equal to
	       address.	 The address can be set	to neighbor in which case  the
	       nexthop	is compared against the	address	of the neighbor.  Nex-
	       thop filtering is not supported on locally  announced  networks
	       and one must take into consideration previous rules overwriting
	       nexthops.

       origin-set name
	       This  rule applies only to UPDATES that match the given origin-
	       set name.

       ovs (valid | not-found |	invalid)
	       This rule applies only to UPDATES where the  Origin  Validation
	       State (OVS) matches.

       prefix address/len
       prefix address/len prefixlen range
       prefix address/len or-longer
       prefix address/len maxlen mlen
	       This rule applies only to UPDATES for the specified prefix.

	       Multiple	 entries  may  be  specified,  separated  by commas or
	       whitespace, if enclosed in curly	brackets:

		     deny from any prefix { 192.168.0.0/16, 10.0.0.0/8 or-longer }

	       Multiple	lists can also be specified, which is useful for macro
	       expansion:

		     good="{ 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 }"
		     bad="{ 224.0.0.0/4	prefixlen >= 4,	240.0.0.0/4 prefixlen >= 4 }"
		     ugly="{ 127.0.0.1/8, 169.254.0.0/16 }"

		     deny from any prefix { $good $bad $ugly }

	       Prefix length ranges are	specified by using these operators:

		     =	     (equal)
		     !=	     (unequal)
		     <	     (less than)
		     <=	     (less than	or equal)
		     >	     (greater than)
		     >=	     (greater than or equal)
		     -	     (range including boundaries)
		     ><	     (except range)

	       >< and -	are binary operators (they take	two  arguments).   For
	       instance, to match all prefix lengths >=	8 and <= 12, and hence
	       the CIDR	netmasks 8, 9, 10, 11 and 12:

		     prefixlen 8-12

	       Or, to match all	prefix lengths < 8 or >	12, and	hence the CIDR
	       netmasks	0-7 and	13-32:

		     prefixlen 8><12

	       This  will  match  all prefixes in the 10.0.0.0/8 netblock with
	       netmasks	longer than 16:

		     prefix 10.0.0.0/8 prefixlen > 16

	       or-longer is a shorthand	for:

		     prefix address/len	prefixlen >= len

	       maxlen mlen is a	shorthand for:

		     prefix address/len	prefixlen <= mlen

       prefix-set name [or-longer]
	       This rule applies only to UPDATES that match the	given  prefix-
	       set name.  With or-longer, the UPDATES will match any prefix in
	       the prefix-set where

		     address/len prefixlen >= len

       quick   If  an  UPDATE  matches	a rule which has the quick option set,
	       this rule is considered the last	matching rule, and  evaluation
	       of subsequent rules is skipped.

       rib name
	       Apply  rule  only  to the specified RIB.	 This only applies for
	       received	updates, so not	for rules using	the to peer parameter.

       set attribute ...
	       All matching rules can set the AS path attributes to  some  de-
	       fault.  The set of every	matching rule is applied, not only the
	       last matching one.  See also the	following section.

ATTRIBUTE SET
       AS path attributes can be modified with set.

       set can be used on network statements, in neighbor or group blocks, and
       on filter rules.	 Attribute sets	can be expressed as lists.

       The following attributes	can be modified:

       community [delete] as-number:local
       community [delete] name
	       Set  or	delete the COMMUNITIES AS path attribute.  Communities
	       are specified as	as-number:local, where as-number is an AS num-
	       ber and local is	a locally significant number between zero  and
	       65535.  Alternately, well-known communities may be specified by
	       name:	  GRACEFUL_SHUTDOWN,	  NO_EXPORT,	 NO_ADVERTISE,
	       NO_EXPORT_SUBCONFED, or NO_PEER.	 For  delete,  both  as-number
	       and local may be	set to `*' to do wildcard matching.

       large-community [delete]	as-number:local:local
       large-community [delete]	name
	       Set  or	delete the Large Communities path attribute.  Communi-
	       ties are	specified as as-number:local:local, where as-number is
	       an AS number and	local is a locally significant number  between
	       zero  and 4294967295.  For delete, both as-number and local may
	       be set to `*' to	do wildcard matching.

       ext-community [delete] subtype as-number:local
       ext-community [delete] subtype IP:local
       ext-community [delete] subtype numvalue
       ext-community [delete] ovs (valid | not-found | invalid)
	       Set or delete the Extended Community AS	path  attribute.   Ex-
	       tended  Communities are specified by a subtype and normally two
	       values, a globally unique part (e.g. the	AS number) and a local
	       part.  The type is selected depending on	the  encoding  of  the
	       global  part.   Two-octet  AS Specific Extended Communities and
	       Four-octet AS Specific  Extended	 Communities  are  encoded  as
	       as-number:local.	  Four-octet encoding is used if the as-number
	       is bigger than 65535 or if the AS_DOT encoding is  used.	  IPv4
	       Address	Specific Extended Communities are encoded as IP:local.
	       Opaque Extended Communities are encoded with a  single  numeric
	       value.  The ovs subtype can only	be set to valid, not-found, or
	       invalid.	 Currently the following subtypes are supported:

		     bdc      BGP Data Collection
		     defgw    Default Gateway
		     esi-lab  ESI Label
		     esi-rt   ES-Import	Route Target
		     l2vid    L2VPN Identifier
		     mac-mob  MAC Mobility
		     odi      OSPF Domain Identifier
		     ort      OSPF Route Type
		     ori      OSPF Router ID
		     ovs      BGP Origin Validation State
		     rt	      Route Target
		     soo      Route Origin / Source of Origin
		     srcas    Source AS
		     vrfri    VRF Route	Import

	       Not  all	 type  and subtype value pairs are allowed by IANA and
	       the parser will ensure that no invalid combination is created.

	       For delete, subtype, numvalue, or local,	may be set to  `*'  to
	       do  wildcard  matching.	 If  wildcard  matching	is used	on the
	       subtype then numvalue also needs	to be set to `*'.

       localpref number
	       Set the LOCAL_PREF AS path attribute.  If number	starts with  a
	       plus  or	 minus	sign, LOCAL_PREF will be adjusted by adding or
	       subtracting number; otherwise it	will be	set  to	 number.   The
	       default is 100.

       med number
       metric number
	       Set  the	 MULTI_EXIT_DISC  AS path attribute.  If number	starts
	       with a plus or minus sign, MULTI_EXIT_DISC will be adjusted  by
	       adding  or  subtracting	number;	 otherwise  it	will be	set to
	       number.

       origin (igp|egp|incomplete)
	       Set the ORIGIN AS path attribute	to mark	 the  source  of  this
	       route  as  being	injected from an igp protocol, an egp protocol
	       or being	an aggregated route.

       nexthop (address|blackhole|reject|self|no-modify)
	       Set the NEXTHOP AS path attribute to a  different  nexthop  ad-
	       dress  or use blackhole or reject routes.  blackhole and	reject
	       only affect the FIB and will not	 alter	the  nexthop  address.
	       self  forces  the  nexthop to be	set to the local interface ad-
	       dress.  If set to no-modify, the	nexthop	attribute is not modi-
	       fied for	EBGP multihop sessions.	 By default EBGP multihop ses-
	       sions use the local interface address.  On other	IBGP  and  di-
	       rectly  connected  EBGP sessions	no-modify is ignored.  The set
	       address is used on IBGP session and on directly connected  EBGP
	       session	if  the	 address is part of the	connected network.  On
	       EBGP multihop session no-modify has to be set to	force the nex-
	       thop to address.

		     set nexthop 192.168.0.1
		     set nexthop blackhole
		     set nexthop reject
		     set nexthop no-modify
		     set nexthop self

       pftable table
	       Add the prefix in the update to the specified pf(4) table,  re-
	       gardless	 of  whether or	not the	path was selected for routing.
	       This option may be useful in building realtime blacklists.

       prepend-neighbor	number
	       Prepend the neighbor's AS number	times to the AS	path.

       prepend-self number
	       Prepend the local AS number times to the	AS path.

       rtlabel label
	       Add the prefix to the kernel routing table with	the  specified
	       label.

       weight number
	       The  weight  is used to tip prefixes with equally long AS paths
	       in one or the other direction.  A prefix	is weighed at  a  very
	       late  stage  in	the decision process.  If number starts	with a
	       plus or minus sign, the weight will be adjusted	by  adding  or
	       subtracting number; otherwise it	will be	set to number.	Weight
	       is  a local non-transitive attribute, and is a bgpd(8)-specific
	       extension.  For prefixes	with equally long  paths,  the	prefix
	       with the	larger weight is selected.

FILES
       /usr/local/etc/bgpd.conf	 bgpd(8) configuration file.

SEE ALSO
       strftime(3),  ipsec(4),	pf(4), rdomain(4), tcp(4), bgpctl(8), bgpd(8),
       ipsecctl(8), isakmpd(8),	rc.conf.local(8)

HISTORY
       The bgpd.conf file format first appeared	in OpenBSD 3.5.

FreeBSD	ports 15.quarterly	 July 7, 2025			  BGPD.CONF(5)

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

home | help