IP Tuning
( Bandwidth × DelayProduct ) == ( BDP ) = Bandwidth * RTTLatency
aka "optimum ( send and receive TCP/IP ) buffer size"
aka "TCP window size"
aka maximum number of packets in transit ( in flight ) between transmitter and receiver
RTTLatency ( round trip latency ) is the number you get from ping
To tune your gigE ( tcp/ip ) network ( of everything connected on the network )
( aka: parameters affecting network performance )
use a wan-simulator to test some of these conditions
adjust your tcp transmit buffer size
adjust your tcp receive buffer size
adjust your kernel's ethernet queue size
adjust your MTU ( 1500 or 9000 or ??? )
adjust your bandwidth ( traffic shaping ? )
adjust your MSS ( maximum segment size )
change the operating system and/or device drivers if needed
if possible, minimize/adjust your (ping) round trip latency
if possible, minimize/adjust your collisions
if possible, minimize/adjust your packet jitter
if possible, minimize/adjust your packet loss
if possible, minimize/adjust your packet corruptions
Your network performance will be highly dependent upon
your method of injecting test conditions
your method of measuring and monitoring the "effects"
your servers, clients, gateways, firewalls and network topology
( ethernet cables, switches/hubs, nic cards, ethernet drivers,
linux vs freebsd vs microsoft vs .. )
your ability to tune the network for performance
( speed vs thruput vs reliability vs costs vs time vs ?? )
Tuning
TCP (config) Analyzer
BDP calculator
BDP
Latency
TCP optimizer
TCP calculator
resources
tutorial
thruput vs loss
jitter
Tools
TCP Tuning
TCP Tuning resources
TCP Tuning Tutorial ( local copy )
see page 4, pg 5, pg 15
tcp wan performance
TCP Tuning
Optimal buffer size = bandwidth * ping(RTT)
given ping shows 50ms,
Optimal buffer size = 100Mbit/sec * 0.050sec * 1/8 == 625 KBytes
Watch out for default and maximum ( tcp ) send and receive buffer sizes
setting buffer sizes too big or too small will adversely affect your network performance
NIC driver limits on queue buffer sizes
OS limits on queue buffer sizes
use setsockopt to get around OS buffer limits of 256MB setsockopt
tcp tuning
tcp tuning doesn't help copying across the network with ssh/scp
Tuning different OSs
Tuning different OSs ( local copy )
tuning linux
tuning freebsd
tuning solaris
tuning windows
tuning Mac OSX
Trouble-Shooting gigE networks
trouble shooting with tcpdump + tcptrace
netstat -s to see if there are a lot of TCP retransmissions
full duplex or half duplex
check for half-duplex vs full-duplex
window size
Projects
iperf-1.7.0 ( Mar 2003 )
given ping shows 42ms delays,
BDP for DS3 ( T3 ) == 45 Mbit/sec * 0.042 ms * 1/8 == 230 KByte
Network Performance Measurement Tools ( NPMT )
10GigE
MTU
tcp tune ( local copy )
congestion avoidance
iperf patches
DCCP = Datagram Congestion Control Protocol
congestion ( local copy )
gigaTCP
tcpar - TCP Armonk
TCP over WAN Performance Tuning and Troubleshooting
Effective Evaluation of TCP
jumbo frames
GigE