-
Notifications
You must be signed in to change notification settings - Fork 298
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
Upstream lwaftr and snabbvmx work from last 6 months #1049
Conversation
'lwaftr query' improvements
Use a fixed amount of memory for reassembling IPv6 fragments, on a ctable. It only allocates once, on initialization, and never frees memory. When the backing table is full, it randomly ejects fragments. Tests include out-of-order reassembly. Bounds checking is done to avoid buffer overflows, regardles of input offsets. This includes a to-memory clone for Igalia's struct packet implementation. This allows IPv6 reassembly to avoid a subtle packet corruption bug on implementations where packet.data is an abstraction rather than a raw buffer.
This requires new tests to only be added to one file, rather than two, helping maintainability.
Normalize the vlan and non-vlan test suite
Merge ipv6 hardening
This is ctables-based, and similar to hardened IPv6 reassembly.
Hardened IPv4 reassembly. All tests pass.
Our codebase now relies on vlan tags being stripped/inserted nearer the edges of the app network.
Remove obsolete l2_size approach
This also includes a facility to regenerate test counter files.
Add a flag to allow monitor all packets in on-a-stick mode
This allows more accurate reporting in cases where apps process the packets before the lwaftr can (and after leaving it), including: a) Fragmentation/reassembly b) Control-plane messages, including ARP/NDP/pinging the lwaftr itself
Use ethernet:ntop and ipv6:ntop
Remove tcpreplay script and use packetblaster --no-loop instead
Define skipped code in SnabbVMX's nexhop test
Snabbvmx ignores vlan settings in .conf file
Remove old benchmarking tools
This replaces our "headroom" mechanism with a sliding struct packet. We also update our virtq changes appropriately, which have not yet landed upstream.
Merge next to lwaftr
Misc. cleanup of the program/lwaftr/ subtree, plus one bugfix
Ingress drop monitor can warn, or warn and flush. Change lwaftr command line argument to take a parameter.
This has the side effect of removing the ingress drop monitor from the NFV; see upstream #1045.
Merge wingo-next
Probably we should document something about packet.prepend mostly being O(1) and the sliding "struct packet" mechanism also.
Thanks to Diego Pino for the feedback.
This also addresses the review comments from upstream #1047, noting that the shm.exists() API changed.
Merge upstream ingress drop
If we are recording ingress drops to a counter, use the right check for the counter's existence. Addresses #1047 (review).
Fix shm.exists() check in ingress drop monitor
Hydra report here: https://hydra.snabb.co/build/739387 |
Hydra's done, I see no significant difference between next and wingo-optimize. Let's ride this train to next! |
Groovy. Code looks good. (Github UI is not much help with a 10KLOC diff but Emacs magit-mode is awesome: makes it really easy to jump back and forth between the "diffstat" list of filenames with +/- lines and the actual changes.) Just waiting for my usual Hydra jobs ( |
AFAIU the hydra jobs don't show a significant change relative to next. WDYT @lukego ? :) |
Merged, thanks! |
Add replacement implementation of Lua IO
Now that #1047 is reviewed I landed it into
wingo-next
. This PR is to mergewingo-next
tonext
. Assigning to @lukego :)