BSDCan2016 - v1.1.24a

BSDCan 2016
The Technical BSD Conference

Oded Shanoon
Day Talks #1 - 10 June - 2016-06-10
Room DMS 1110
Start time 13:30
Duration 01:00
ID 695
Event type Lecture
Track Hacking
Language used for presentation English

Packet Pacing – Rate Limit per flow (TCP \ UDP)

There is a growing need recently in the networking world for flow based rate limiting. Different use cases (such as video streaming) are implementing Software based rate limiting in order to maintain many connections at the same time. The rate limiting capability prevents bursts or micro bursts and ensures each streams is served with the required bandwidth. Offloading the rate limiting capability to the HW holds a big potential in the form of improved performance saving precious cpu cycles.

During this talk I plan to go over the current solution that Mellanox has to offer. The different flows will be described in details; the control flow which starts from the socket and ends in the driver and NIC, and the transmit flow. The architecture includes changes in sensitive networking areas in the FreeBSD kernel such as the IP stack fast path, so critical decisions and open issues will be reviewed as well.

The Packet Pacing feature traverse through different layers in the kernel and logically binds the upper areas in the network stack (i.e. socket, pcb) to a HW queue. Additionally we need to consider the potential of this feature when looking at basing its 'engine' in the TCP stack and allowing rate limiting to specific connections based on the window size and congestion calculations. As a result of these characteristics the purpose of this talk is both to present the solution and discuss its future.