Route reflectors

BGP route reflectors are useful in large scale deployments, to reduce the number of BGP connections that are needed for correct and complete route propagation. Calico includes optional route reflector function in the calico/node image, which is enabled by provisioning the spec.bgp.routeReflectorClusterID field of the relevant node resource.

Some of the existing Calico nodes in a cluster can be enabled to behave as route reflectors (simultaneously with their function as workload hosts).

To run a standalone route reflector outside the cluster, you can also use the calico/node image. Use calicoctl node run to run a calico/node container, then modify the relevant node resource similarly as in the in-cluster case.

Note: The only difference between the ‘in-cluster’ and ‘standalone’ cases is that, in the ‘standalone’ case, the orchestrator is somehow instructed not to schedule any workloads onto the standalone route reflector nodes.

Of course there are many other ways to set up and run a non-Calico route reflector outside the cluster. You then need to configure some or all of the Calico nodes to peer with that route reflector.

In addition the non-Calico route reflector may need configuration to accept peerings from the Calico nodes, but in general that is outside the scope of this documentation. For example, if you installed BIRD to be your route reflector, you would need to configure BGP peerings like the following for each Calico node that you expect to connect to it.

protocol bgp <node_shortname> {
  description "<node_ip>";
  local as <as_number>;
  neighbor <node_ip> as <as_number>;
  rr client;
  graceful restart;
  import all;
  export all;

Note: Previous Calico releases offered the calico/routereflector image for the standalone route reflector use case. However calico/routereflector since Calico v3.0 has not supported route reflector clustering, and is now no longer offered at all. calico/node fully supports route reflector clustering.