calico icon indicating copy to clipboard operation
calico copied to clipboard

Felix programs IPIP tunnels

Open mazdakn opened this issue 1 year ago • 2 comments

Description

Currently, it's BIRD that programs routes for IPIP encapsulation, which is unlike VXLAN|Wireguard where Felix programs the routes. This PR enables Felix to programs the IPIP routes as well, and not rely on BIRD anymore. The benefits are:

  • Not needing an extra component (i.e. BIRD) for IPIP encapsulation. Enabling Felix to program IPIP routes and not running BIRD saves some memory/CPU.
  • Allowing to get rid of Calico fork of BIRD (v1.6) which is way old. Instead we can use upstream BIRD.
  • In future, we can also make Felix program no encap routes as well. and get rid of internal BGP mesh.

This PR includes:

  • Adding support to Felix to program IPIP routes.
  • Updating BIRD templates to not export IPIP routes, i.e routes with tunl0 interface.
  • Updating BIRD templates to not program IPIP routes to kernel
  • Introducing a new value of ipip for calico_backend variable to enable IPIP encapsulation without running BIRD. bird value still enables IPIP encapsulation and also start BIRD service.

Related issues/PRs

Todos

  • [x] Tests
  • [ ] Documentation
  • [ ] Release note

Release Note

TBD

Reminder for the reviewer

Make sure that this PR has the correct labels and milestone set.

Every PR needs one docs-* label.

  • docs-pr-required: This change requires a change to the documentation that has not been completed yet.
  • docs-completed: This change has all necessary documentation completed.
  • docs-not-required: This change has no user-facing impact and requires no docs.

Every PR needs one release-note-* label.

  • release-note-required: This PR has user-facing changes. Most PRs should have this label.
  • release-note-not-required: This PR has no user-facing changes.

Other optional labels:

  • cherry-pick-candidate: This PR should be cherry-picked to an earlier release. For bug fixes only.
  • needs-operator-pr: This PR is related to install and requires a corresponding change to the operator.

mazdakn avatar Dec 19 '23 23:12 mazdakn