Page MenuHomeFreeBSD

Implement L2 lookup caching for TCP and UDP
ClosedPublic

Authored by karels on May 8 2016, 5:49 PM.
Tags
None
Referenced Files
Unknown Object (File)
Fri, Apr 26, 6:03 AM
Unknown Object (File)
Mar 20 2024, 3:27 PM
Unknown Object (File)
Mar 20 2024, 3:13 PM
Unknown Object (File)
Jan 20 2024, 11:24 AM
Unknown Object (File)
Jan 12 2024, 12:51 PM
Unknown Object (File)
Jan 4 2024, 7:29 AM
Unknown Object (File)
Dec 26 2023, 2:46 AM
Unknown Object (File)
Dec 26 2023, 2:46 AM
Subscribers

Details

Summary

This change re-adds L2 caching for TCP and UDP, as originally added in D4306
but removed due to other changes in the system. Restore the llentry pointer
to the "struct route", and use it to cache the L2 lookup (ARP or ND6) as
appropriate.

Test Plan

This change is based on production code in Sidewinder, aka McAfee Firewall
Enterprise. Testing has included changing of MAC addresses on neighboring
systems and verifying that connections continue to work.

Diff Detail

Repository
rS FreeBSD src repository - subversion
Lint
Lint Not Applicable
Unit
Tests Not Applicable

Event Timeline

karels retitled this revision from to Implement L2 lookup caching for TCP and UDP.
karels updated this object.
karels edited the test plan for this revision. (Show Details)
karels added reviewers: gnn, bz, jtl.

Hello? Is anyone looking at this?

Update to current HEAD; fix to work with flowtable

gnn edited edge metadata.

I've tested this in a two host test using iperf. https://github.com/gvnn3/netperf/tree/master/VANILLA/Tests/iperf-twohost-nooffload

and not seen any issues on 10G Chelsio hardware.

This revision is now accepted and ready to land.Jun 2 2016, 2:18 AM
This revision was automatically updated to reflect the committed changes.

Just came across this commit tracing other problems ...

head/sys/netinet6/in6_pcb.c
836

Question (post commit review :) Why is this inp_route and not inp_route6? I know the heads of them are identical and it's a union, yet ... for clarity if nothing else?

853

Same here, inp_route6?

You are right, inp_route6 would be better. I'm sure I copied and pasted, then didn't make as many changes as I should have. I will happily approve a review to make that change if you test that it compiles :-).