05.08.2014 Views

An Investigation into Transport Protocols and Data Transport ...

An Investigation into Transport Protocols and Data Transport ...

An Investigation into Transport Protocols and Data Transport ...

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

5.1. TCP Hardware Requirements 79<br />

Goodput (mbit/sec)<br />

1000<br />

100<br />

Socket Buffers From CERN (Switzerl<strong>and</strong>) to RAL (Engl<strong>and</strong>)<br />

Mean<br />

Median<br />

Minimum<br />

Maximum<br />

Theory<br />

10<br />

10 100 1000 10000<br />

Socket Buffer Size (KBytes)<br />

Figure 5.1: Effect of limiting the socket buffer size on TCP goodput.<br />

The typical socket buffer memory size for Linux <strong>and</strong> BSD systems is set<br />

to 64KB. Depending on the latency <strong>and</strong> stable throughput of the TCP path,<br />

one can see that TCP would perform abysmally over the example link <strong>and</strong><br />

that the throughput would be capped so that the TCP window fits within<br />

the 64KB.<br />

To address this problem, grid <strong>and</strong> network researchers continue to manually<br />

optimise socket buffer sizes to keep the network pipe full, <strong>and</strong> thus<br />

achieve increases of transport throughput by many orders of magnitude.<br />

The amount of memory allocated to each TCP connection on Unix systems<br />

can be changed using the st<strong>and</strong>ard Unix setsockopt() [Ste98] call.<br />

However, under Linux systems, the kernel also imposes a limit on the maximum<br />

size of the socket buffer memory that can be allocated for each connection.<br />

As such system administrator privileges are often required to alter<br />

this limit such that userspace applications such as FTP can utilise large(r)<br />

socket buffer sizes.<br />

This is achieved using the st<strong>and</strong>ard sysctl variables<br />

net.core.rmem_max <strong>and</strong> net.core.wmem_max for the read <strong>and</strong> write socket<br />

buffers respectively. Similarly, the default allocated socket buffer memory

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!