TCP Development

David S. Miller

davem@redhat.com

Areas of Work

Congestion control algorithms

Westwood+

Vegas

BIC TCP

Receive buffer moderation

Stream socket abstraction (acme)

Global TCP memory management

Congestion Control

Vegas

Tries to curtail sending rate before congestion occurs.

Does this using a bandwidth estimate

Oscillates sending rate slightly in order to keep testing the available bandwidth

Reno flows obtain more bandwidth

Vegas performs poorly in the presence of reverse-direction traffic

Congestion Control

Westwood+

Estimates packet rate using ACKs

BW estimate goes through low-pass filter

Same filter as sender RTT estimate uses

After timeout or 3 dup acks, estimate is used to calculate congestion window and slow start threshold

Congestion Control

BIC TCP

Tries to eliminate rtt unfairness of Scalable TCP and HS-TCP algorithms.

Employs additive increase and binary search increase.

Large CWND: Large increment for linear RTT fairness and good scalability

Small CWND: Binary search increase for TCP friendliness

Receive Buffer Moderation

Based upon work by John Heffner

Receive buffer serves two purposes:

Flow control

Absorbing depth of network path

Receiver side RTT estimation

Window scaling issues

Ties into global memory management work also by John

Window Scaling

Too many buggy devices out there

Cisco IOS can corrupt SACK block sequence numbers when scaling used

Older versions of tcp-window-tracking patch in netfilter patch-o-matic has buggy window scaling code, packages.gentoo.org runs a buggy version of this thing.

Aparently some ADSL devices corrupt the window scale TCP option when port forwarding. Still under investigation.

Stream Socket Abstraction

Ask Arnaldo :-)

Commonize non-TCP specific code

Parameterize or function pointer the rest

Improvements to one area benefit all stream socket stacks

Global Memory Management

More John Heffner work

In existing code global pool is charged at packet allocation time

In new code global pool is charged for the entire send/receive buffer size at socket creation and buffer size changes.

Fairness and DoS issues being investigated.

With Friends Like This Who Needs Enemies?

Stephen Hemminger

John Heffner and Mathis at PSC

Alexey Kuznetsov

Arnaldo Carvalho de Melo

2004-07-09T17:38:56