This is an old revision of the document!
FreeBSD Developer Summit: Networking Working Group
We would like to cover the following topics. This is not an exhaustive list and if you feel there is something missing that you want to talk about, contact the session chair and your topic will be included here.
Please send talks, brainstorm topics, or other proposals to the session leaders, LawrenceStewart and GlebSmirnoff.
Agenda
- Protocols
- TCP
- Deferring reassembly to user thread's kernel context (Lawrence)
- MPTCP (Lawrence)
- Deferring mbuf drop on ACK (Scott)
- UI for controlling TCP/stack dynamics (Lawrence, Andre)
- Reworking SACK + integrating with reassembly (Andre)
- Pacing (Lawrence)
- Infrastructure
- Hostcache (Lawrence)
- Interface dangling pointers
- RX pointer in mbufs
Problem: we don't refcount interface per mbuf which can lead to dangling pointers (particularly problematic in subsystems which hold mbufs for some time e.g. dummynet, netgraph) - IOCTLs, rtentries, etc.
- Stack-driver interface (Andre)
- RX/TX IFQ/Multiqueue
- API/advertising hardware offload capabilities (kernel + userland)
- Making ifnet opaque to driver
- Juniper proposal?
- Performance optimisation
- Routing subsystem
- FIB vs RIB
Problem: Trie is too generic - rtentry locking Problem: Per-packet per-rtentry locking kills performance
- Netgraph (Alexander, Gleb)
- Topology locking
Problem: Topology locking hurts performance and doesn't currently protect nodes from all possible config changes which can lead to panic - Hand rolled RW locking
Problem: For nodes that do nothing e.g. ng_tee, atomic inc/dec is too heavy weight, so ideally need a better solution for all nodes
- Fast path cache misses, amount of memory accessed per read/write (Adrian)
- MBUFS
- Ref counting (Gleb, Adrian)
Problem: uint32_t's coming from single zone non contiguous in memory with the mbuf
- Batching
- Multi-(process|thread) accept (Gleb) Problem: Wakeup causes all threads to race and only 1 wins
- Light weight ref counter based on count(9) (Gleb)
- Testing/development
- NSC userspace stack (Lawrence) http://caia.swin.edu.au/urp/incast/tools.html
- Testing @ Netflix (Lawrence)
- Testing @ Orange (Olivier)
- Ownership Identify chunks of code without owners
Results
(Add a list or attach slides detailing the achieved results here.)