In order to better integrate my blog with my website, better manage comment spam, and reduce my dependence on Google, this blog has moved to In order to avoid broken links I won't be deleting content from here, but no new content will be added, so please update your bookmarks and feeds.

Tuesday, 2 July 2013

All about Data Network Performance #nzes

[This post just covers the first half of the session]

All about Data Network Performance
Alessandra Scicchitano, SWITCH
Domenico Vicinanza, DANTE
James Wix & Sam Russell, REANNZ

1. Networking background - the models and layers
Two major models in networking:
Open Systems Interconnection (more conceptual - to define what you're trying to do) got overtaken by:
TCP/IP - aims at robustness and end-to-end functionality

OSI's layers are Physical (optics/interfaces), Data Link, Network, Transport, Session, Presentation, Application.
TCP/IP runs the world. Layers: Link, Internet, Transport, Application.

2. The tools and what they can do
Ping sends echo request, gets echo reply and tells us roundtrip time

Traceroute sends packets with timeout increasing in increments so as they timeout and are sent back you can see where they're going.

OWAMP - one-way active measurement protocol aka one-way ping - because standard ping doesn't show delay direction. This can handle asymmetry but requires NTP for reliable useful results.

Iperf - commandline, measures bandwidth (TCP) and quality (UDP) of a network path. Client/server architecture (client is sender, server is receiver). Jperf is a java graphical front-end. Most useful to watch in second-intervals. Can send parallel and bidirectional tests.

Nuttcp - can show where dropped packets are.

Bwctl - wrapper for iperf, nuttcp, thrlay. Command line.

UDPmon - sends stream of carefully spaced UDP packets and records set of metrics (timestamps, packets received, lost, arrived in bad order, lost in network; bytes received and bytes/frame rate; elapsed time; time per received packet; receiver data rate and wire rate (Mb/s)). Histogram option to data and paste straight into Excel to create graph.

3. Network transfer
Simple network transfers: Sender sends packet, reciever recieves, receiver sends acknowledgement, sender receives acknowledgement. Wastes lots of time and bandwidth.

Windowing: So send more than one packet at a time and see which stuff arrived and which didn't. With selective acknowledgements can say "Am missing #4 but got the rest so don't resend that." Send enough data to fill the whole pipe. Send it again while waiting for acknowledgements. Amount depends on round trip time. Eg sending 360MB/s with a 280ms latency then BDP = 360x280 = 100.8Mb = 100.8/8MB so need a 12.6MB window

Default OS settings slow you down. To get the best out of REANNZ you need to tune for "elephant" flows (Long Fat Network aka LFN). Tuning your TCP can massively improve performance.