Zero-Copy TCP/IP mit Gigabit Ethernet

Michel Müller

Diploma Thesis Winter 1998/99
Supervisors: Ch. Kurmann, Prof. T. Stricker
Institute for Computer Systems, ETH Zürich


The speed of gigabit network technologies reaches the copy bandwidth of modern PC memory systems. Because the actual TCP-stack copies the data from kernel- to userspace, the tcp-throughput is not satisfactory.

This diploma thesis describes a zero-copy implementation of the TCP/IP stack for Linux. To achive zero-copy, memory mapping and copy on write (COW) is used. Because of the limited maximum transfer unit (MTU) of Gigabit Ethernet, IP fragmentation on device driver level is used as a workaround.

The basic elements of TCP/IP, the virtual memory system of Linux and the socket interface are described in the first chapter. A comparison of the different zero-copy schemes is also part of this chapter. The second chapter describes the necessary changes in the Linux kernel and the gigbit ethernet device driver.


The TCP throughput has been increased from 40 MB/s to over 60 MB/s on two Pentium II systems with 350 Mhz CPU-clock. This zero-copy implementation is compatible with the socket interface. The only limitation concerns the buffers of the user process. They must be page aligned and a multiple of the pagesize. Some problems of checksumming and synchronisation in a cluster are still open.

Papers on that subject see: Homepage of Christian Kurmann

[ CS-Department | Up ]
ETH Zürich: Department of Computer Science
Comments to Christian Kurmann <>
March 1999