Skip to content
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

feat: existing Linux VRFs #1768

Merged
merged 2 commits into from
Dec 15, 2020
Merged

feat: existing Linux VRFs #1768

merged 2 commits into from
Dec 15, 2020

Conversation

milanlenco
Copy link
Collaborator

@milanlenco milanlenco commented Dec 4, 2020

This pull requests adds support for the following use-cases related to Linux interfaces and VRFs:

  • Managed interface inside existing (i.e. not managed by the agent) VRF
  • Existing interface inside existing VRF (i.e. agent only waits for this to be configured externally)

These use-cases are very specific but needed for one of our internal projects.

This PR also fixes the issue with '"flapping" link notifications from netlink - i.e. receiving link DOWN for a very short time (<1ms) because something is being configured on the interface. This causes unnecessary re-creation of everything that depends on it.
The solution is to simply delay DOWN notification (unless the interface was fully removed) for a few milliseconds. UP notifications and reactions to removed interfaces (i.e. something that can be triggered by NB txn) is not delayed so that txns execute as fast as possible.

During the making of this PR I have also realized that contexts are ever more needed in descriptor methods (#1569). With them (and some additional work) we will be able to get rid of or at least simplify the derived keys, which are getting really long and their parsing functions are complicated and error prone. For interface addresses and VRFs I had decided to carry all necessary information in the derived values instead of putting them into already complicated keys (e.g. https://github.com/milanlenco/vpp-agent/blob/master/plugins/linux/ifplugin/descriptor/interface.go#L664-L671). But this is only temporary and I plan to start on working on descriptor contexts and getting rid of all the complexity currently associated with derived values.

Btw. it was verified that PR doesn't break any e2e or integration tests for any of the supported VPP versions.

Signed-off-by: Milan Lenco [email protected]

Signed-off-by: Milan Lenco <[email protected]>
tests/e2e/e2e.go Outdated Show resolved Hide resolved
@ondrej-fabry ondrej-fabry merged commit f57938d into ligato:master Dec 15, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants