lunedì dic 15, 2008

Un'ottima introduzione al progetto Crossbow

Per festeggiare l'integrazione nella build 105 di Nevada (il kernel di OpenSolaris), ecco un'ottima introduzione del collega Sunay Tripathi al progetto Crossobow, che aggiunge ad OpenSolaris una serie di funzionalità molto interessanti per la virtualizzazione della rete.

venerdì mar 31, 2006

La latenza del TCP/IP e l'algoritmo di Nagle

Le applicazioni che effettuano tante piccole chiamate sincrone via rete (di tipo request/reply) possono generare un traffico composto a sua volta da piccoli pacchetti. Le performance di tali applicazioni dipendono quindi più dalla latenza introdotta nel processare tali pacchetti che dal massimo throughput gestibile dall'architettura fisica utilizzata.

Nell'effettuare un tuning dello stack TCP/IP è importante in questi casi considerare le implicazioni dell'algoritmo di Nagle (dal nome di John Nagle, autore della RFC 896 dove tale algoritmo è definito).

L'utilizzo di piccoli pacchetti è solitamente ritenuto inefficiente dal punto di vista di chi ottimizza una rete. Ciò è particolarmente vero nei punti di raccordo del traffico IP (es. un Internet backbone) e l'algoritmo di Nagle cerca proprio di scoraggiarne l'uso quando il trasporto è TCP.

Gli stack TCP/IP solitamente implementano in modo parametrico la dimensione massima per cui un pacchetto è ritenuto "piccolo" ed è applicato questo algoritmo: ad esempio impostare tale parametro a 1 equivale a disabilitarne l'uso.

L'algoritmo di Nagle indica che lo stack di chi invia non deve trasmettere il prossimo piccolo pacchetto (come definito in precedenza) se è ancora in attesa di ricevere l'ACK di un piccolo pacchetto già inviato.

Di conseguenza chi invia deve accumulare i dati in spedizione fino a che sia soddisfatta una delle due seguenti condizioni:

  • la dimensione dei dati pronti per l'invio ha superato l'MTU
  • è stato ricevuto l'ACK per tutti i piccoli pacchetti in sospeso

Un effetto non gradito di questa ottimizzazione è che le applicazioni che inviano continuamente piccoli pacchetti possono osservare una latenza maggiore di quelle che utilizzano pacchetti con dimensione dell'ordine dell'MTU. In tali casi è possibile testare le performance disabilitando l'uso dell'algoritmo (nelle modalità offerta dalle singole piattaforme) e confrontare i risultati ottenuti con la configurazione precedente per verificare se si ricade in una delle casistiche in cui l'algoritmo peggiori le performance complessive.


About

Un diario digitale sui miei interessi: Internet, Solaris, Java, Fotografia, ecc.

Search

Archives
« aprile 2014
lunmarmergiovensabdom
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    
       
Today