logo SBA

ETD

Archivio digitale delle tesi discusse presso l’Università di Pisa

Tesi etd-02022014-114643


Tipo di tesi
Tesi di laurea magistrale
Autore
GARZARELLA, STEFANO
URN
etd-02022014-114643
Titolo
Ottimizzazione del network stack di FreeBSD per reti ad alta velocità
Dipartimento
INGEGNERIA DELL'INFORMAZIONE
Corso di studi
INGEGNERIA INFORMATICA
Relatori
relatore Rizzo, Luigi
relatore Lettieri, Giuseppe
Parole chiave
  • GRO
  • GSO
  • IP
  • kernel
  • LRO
  • offload
  • segmentation
  • TCP
  • TSO
  • UDP
Data inizio appello
27/02/2014
Consultabilità
Completa
Riassunto
The use of large frames makes network communication much less demanding for the CPU. Yet, backward compatibility and slow links requires the use of 1500 byte or smaller frames.
Modern NICs with hardware TCP segmentation offloading (TSO) address this problem. It works by queuing up large segments and letting the NIC split them into separate packets. However, a generic software version (GSO) provided by the OS has reason to exist, for use on paths with no suitable hardware, such as between virtual machines or with older or buggy NICs.
In this thesis we present our work to add GSO to FreeBSD.
Our implementation, depending on CPU speed, shows up to 90% speedup compared to segmentation done in the TCP stack, saturating a 10 Gbit link at 2 GHz with no HW support (only checksum offload).



L’utilizzo di grandi pacchetti rende la comunicazioni di rete molto meno impegnativa per la CPU. Nonostante questo, la retrocompatibilità e la presenza di link lenti, richiede l’utilizzo di pacchetti grandi al più 1500 bytes.
Le moderne schede di rete risolvono questo problema offrendo un
meccanismo hardware chiamato TCP Segmentation Offload (TSO) che consente al network stack di generare pacchetti di grandi dimensioni che verranno successivamente segmentati dalla scheda in funzione dell’MTU (Maximum Transmission Unit). Tuttavia, una versione software generica (GSO - Generic Segmentation Offload) fornita dal sistema operativo ha ragione di esistere per quelle situazioni in cui l’hardware non offre supporto, come ad esempio nella comunicazione tra macchine virtuali oppure se il TSO hardware presenta dei malfunzionamenti o semplicemente non è implementato nella scheda di rete.
In questa tesi presentiamo il nostro lavoro per aggiungere il supporto al GSO in FreeBSD. L’implementazione che abbiamo realizzato permette, in funzione della frequenza di clock della CPU, di raggiungere uno speedup fino al 90% rispetto alla segmentazione effettuata nel network stack senza supporto hardware (ad eccezione del calcolo della checksum). Inoltre con frequenze da 2 GHz in su riusciamo a saturare completamente un link 10 Gbit.
File