-
Notifications
You must be signed in to change notification settings - Fork 35
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
add support for tunneling protocols #147
base: djin/datalink
Are you sure you want to change the base?
Conversation
Codecov Report
@@ Coverage Diff @@
## djin/datalink #147 +/- ##
=================================================
+ Coverage 76.44% 77.32% +0.87%
=================================================
Files 50 54 +4
Lines 5048 5292 +244
=================================================
+ Hits 3859 4092 +233
- Misses 1189 1200 +11
Continue to review full report at Codecov.
|
a9001f4
to
a869ffb
Compare
a869ffb
to
6ab3d83
Compare
Nice. One of the things we're looking to do is to provide an application that has as input ipv4 multicast and as one or more outputs in ipv6 multicast in a DOCSIS Downstream External-PHY Interface (DEPI) tunnel, which uses a layer 2 tunneling protocol to add a session id and sequence number to the multicast ipv6 packet. Sets next header to 115 (L2TP) and sets up the ethernet packet appropriately. We're looking to use DPDK due to performance requirements of this app. |
Yeah, @sbuzzard, this should start getting us on the way there; @drunkirishcoder, you, and I should chat more. |
agree - can do whenever convenient for you guys (in discord or otherwise) |
As a user here, I'd like to throw in that it feels like this might interact with Geneve encapsulation (or maybe not!) and that it'd be neat to have capsule support Geneve formats natively. |
@skeggse yep, the goal of this approach is to allow for an implementation of Geneve possible, it should be pretty similar to GRE. |
Description
Feature support for type safe tunnel protocol modeling. This pattern can be applied to tunnels such as various IP in IP, GRE, and VXLAN etc.
The general design is tunnels can be codified into structs by implementing the
Tunnel
trait. Tunnel is defined by the delivery (outer) protocol and payload (inner) protocol. For exampleGRE
header can be used in many tunneling methods. The specific use of GRE in tunneling any layer-3 packets inside aIPv4
packet is implemented by theIp4Gre
tunnel. Two tunnels can have the same delivery and payload protocols but modify the protocol stack differently, for example bothIp4Gre
andIpIp
can tunnelIPv4
packets inIPv4
.On entry to a tunnel, the payload packet should be constructed first then encapsulated,
on tunnel exit, decap to access and modify the payload again
Type of change
Checklist