-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Program routes for VXLAN tunnel IPs assigned from /32 or /128 blocks #9698
base: master
Are you sure you want to change the base?
Program routes for VXLAN tunnel IPs assigned from /32 or /128 blocks #9698
Conversation
6231474
to
7e68395
Compare
111f8f4
to
8ae3baf
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Think I might have reached for a bit field and or'ed in the different flags but using a slice is probably ok. (I have a little worry that l3rr might be on the critical path for larger clusters that don't use our IPAM.)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
LGTM
Description
When VXLAN tunnel addresses are assigned from /32 or /128 blocks, the L3 route resolver was masking the REMOTE_WORKLOAD type route with REMOTE_TUNNEL. As a result, the routes weren't being programmed (because we only program routes for REMOTE_TUNNEL if they are borrowed IPs).
This PR modifies the RouteUpdate message to accept multiple types, allowing the L3 route resolver to mark the route with all of the matching types.
The VXLAN data plane now also identifies VXLAN routes that are both REMOTE_TUNNEL and REMOTE_WORKLOAD and programs directly connected routes for them.
This fixes an issue where host <-> pod connectivity was not functional when assigning VXLAN tunnel addresses from /32 or /128 IPAM blocks.
Related issues/PRs
Todos
Release Note
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.