-
Notifications
You must be signed in to change notification settings - Fork 125
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: GTP-U tunnel support #1560
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Initial implementation of GTP-U tunnel interface configuration added. Currently VPP 20.01-324 and 20.01-379 are supported only.
- GTPU tunnel src/dst addresses are validated before writing into the kvs - if-else in dump interface call is restructured.
The encapsulated (outer) VRF id can be explicitly set to a different value than the interface VRF id. This allows the tunneled traffic to be routed by a separate FIB table. This is necessary because the VPP gtpu plugin implements a check to verify whether the ingress interface vrf assignment matches the encap vrf id of the tunnel. If not, the packet is dropped. Without a different VRF value, it would not be possible to implement an overlay network with separate routing tables. Dependencies for the GTPU VRF id and multicast interface are added. The VRF id is inherited from the unnumbered interface only if the value is not explicitly set to non-0. This allows the tunnel interface to re-use the IP address of another interface from a different VRF table.
IP address conversion fixed: an IPv4 address was successfully parsed as IPv6 by mistake.
These tests depend on the VPP bugfix bd0a00a45637c1dde533ef6c3798418c2ab15009
This change could affect other interfaces as well, better to revert, even if VPP supports this case. The scenario can be made work with configuring a loopback interface with the desired VRF id and using that interface as the tunnel unnumbered int.
Disable the dump gtpu interface API call in the gtpu integration test with some of the VPP versions that do not include the fix yet.
- updated imports to modules - fixed remaining conflicts - regenerated proto files
Codecov Report
@@ Coverage Diff @@
## dev #1560 +/- ##
==========================================
+ Coverage 53.06% 55.74% +2.68%
==========================================
Files 640 352 -288
Lines 77563 30280 -47283
==========================================
- Hits 41156 16880 -24276
+ Misses 33913 12075 -21838
+ Partials 2494 1325 -1169
|
ondrej-fabry
approved these changes
Nov 4, 2019
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Issue #1546
This pull request adds GTP-U tunnel support to the interface plugin, the related part of the proto file change is as follows. The implementation is based on the VxLan and GRE tunnels.
There is a VPP bug in the dump gtpu interface api, which breaks the functionality currently. With VPP 20.01, the minimal version to use this feature is ligato/vpp-base:20.01-rc0.496-g00b2d74d1. (https://gerrit.fd.io/r/c/vpp/+/22904)
The latest VPP 19.08 docker image already includes the fix. (https://gerrit.fd.io/r/c/vpp/+/23054)