BGP configuration

3 MINUTE READ

A BGP configuration resource (BGPConfiguration) represents BGP specific configuration options for the cluster or a specific node.

For calicoctl commands that specify a resource type on the CLI, the following aliases are supported (all case insensitive): bgpconfiguration, bgpconfig, bgpconfigurations, bgpconfigs.

Sample YAML

apiVersion: projectcalico.org/v3
kind: BGPConfiguration
metadata:
  name: default
spec:
  logSeverityScreen: Info
  nodeToNodeMeshEnabled: true
  asNumber: 63400
  serviceClusterIPs:
  - cidr: 10.96.0.0/12
  serviceExternalIPs:
  - cidr: 104.244.42.129/32
  - cidr: 172.217.3.0/24
  listenPort: 178
  communities:
  - name: bgp-large-community
    value: 63400:300:100
  prefixAdvertisements:
  - cidr: 172.218.4.0/26
    communities:
    - bgp-large-community
    - 63400:120

BGP configuration definition

Metadata

Field Description Accepted Values Schema
name Unique name to describe this resource instance. Required. Alphanumeric string with optional ., _, or -. string
  • The resource with the name default has a specific meaning - this contains the BGP global default configuration.
  • The resources with the name node.<nodename> contain the node-specific overrides, and will be applied to the node <nodename>. When deleting a node the BGPConfiguration resource associated with the node will also be deleted.

Spec

Field Description Accepted Values Schema Default
logSeverityScreen Global log level Debug, Info, Warning, Error, Fatal string Info
nodeToNodeMeshEnabled Full BGP node-to-node mesh. Only valid on the global default BGPConfiguration. true, false string true
asNumber The default local AS Number that Calico should use when speaking with BGP peers. Only valid on the global default BGPConfiguration; to set a per-node override, use the bgp field on the Node resource. A valid AS Number, may be specified in dotted notation. integer/string 64512
serviceClusterIPs The CIDR blocks for Kubernetes Service Cluster IPs to be advertised over BGP. Only valid on the global default BGPConfiguration: will be ignored otherwise. A list of valid IPv4 CIDR blocks. List of cidr: XXX.XXX.XXX.XXX/XX values. Empty List
serviceExternalIPs The CIDR blocks for Kubernetes Service External IPs to be advertised over BGP. Kubernetes Service External IPs will only be advertised if they are within one of these blocks. Only valid on the global default BGPConfiguration: will be ignored otherwise. A list of valid IPv4 CIDR blocks. List of cidr: XXX.XXX.XXX.XXX/XX values. Empty List
listenPort The port where BGP protocol should listen. A valid port number. integer 179
communities List of BGP community names and their values, communities are not advertised unless they are used in prefixAdvertisements.   List of communities  
prefixAdvertisements List of per-prefix advertisement properties, like BGP communities.   List of prefixAdvertisements  

communities

Field Description Accepted Values Schema
name Name or identifier for the community. This should be used in prefixAdvertisements to advertise the community value.   string
value Standard or large BGP community value. For standard community, value should be in aa:nn format, where both aa and nn are 16 bit integers.
For large community, value should be aa:nn:mm format, where aa, nn and mm are all 32 bit integers.
Where aa is an AS Number, nn and mm are per-AS identifier.
string

prefixAdvertisements

Field Description Accepted Values Schema
cidr CIDR for which properties should be advertised. cidr: XXX.XXX.XXX.XXX/XX string
communities BGP communities to be advertised. Communities can be list of either community names already defined in communities or community value of format aa:nn or aa:nn:mm.
For standard community, value should be in aa:nn format, where both aa and nn are 16 bit integers.
For large community, value should be aa:nn:mm format, where aa, nn and mm are all 32 bit integers.
Where aa is an AS Number, nn and mm are per-AS identifier.
List of string

Supported operations

Datastore type Create Delete Delete (Global default) Update Get/List Notes
etcdv3 Yes Yes No Yes Yes  
Kubernetes API server Yes Yes No Yes Yes