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

Upstream lwaftr and snabbvmx work from last 6 months #1049

Merged
merged 425 commits into from
Oct 22, 2016
Merged

Upstream lwaftr and snabbvmx work from last 6 months #1049

merged 425 commits into from
Oct 22, 2016

Conversation

wingo
Copy link
Contributor

@wingo wingo commented Oct 21, 2016

Now that #1047 is reviewed I landed it into wingo-next. This PR is to merge wingo-next to next. Assigning to @lukego :)

dpino and others added 30 commits August 18, 2016 10:52
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
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
dpino and others added 21 commits October 17, 2016 19:20
Remove tcpreplay script and use packetblaster --no-loop instead
Define skipped code in SnabbVMX's nexhop test
Snabbvmx ignores vlan settings in .conf file
This replaces our "headroom" mechanism with a sliding struct packet.  We
also update our virtq changes appropriately, which have not yet landed
upstream.
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.
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.
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
@wingo
Copy link
Contributor Author

wingo commented Oct 21, 2016

Hydra report here: https://hydra.snabb.co/build/739387
Relevant diff will be between next and wingo-optimize, though the comparison to master is interesting as well. I expect no performance change; in this case I'm just using Hydra mostly for its CI purposes.

@wingo
Copy link
Contributor Author

wingo commented Oct 21, 2016

Hydra's done, I see no significant difference between next and wingo-optimize. Let's ride this train to next!

@lukego
Copy link
Member

lukego commented Oct 21, 2016

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 (lukego/next-tributary and lukego/next-tributary-murren, evaluations 4108 and 4017) to confirm. Shouldn't be long.

@wingo
Copy link
Contributor Author

wingo commented Oct 21, 2016

AFAIU the hydra jobs don't show a significant change relative to next. WDYT @lukego ? :)

@lukego lukego merged commit 258a6d1 into next Oct 22, 2016
lukego added a commit that referenced this pull request Oct 22, 2016
@lukego
Copy link
Member

lukego commented Oct 22, 2016

Merged, thanks!

dpino pushed a commit to dpino/snabb that referenced this pull request May 4, 2018
Add replacement implementation of Lua IO
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

5 participants