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)
Mon, Dec 9, 11:18 PM
Unknown Object (File)
Wed, Dec 4, 5:54 AM
Unknown Object (File)
Nov 25 2024, 11:46 AM
Unknown Object (File)
Nov 24 2024, 2:52 AM
Unknown Object (File)
Nov 23 2024, 3:46 PM
Unknown Object (File)
Nov 22 2024, 1:14 PM
Unknown Object (File)
Nov 18 2024, 4:35 PM
Unknown Object (File)
Nov 18 2024, 4:03 PM
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 :-).