Buffer overflow (telecomunicazioni)
# Buffer overflow (telecomunicazioni)

In telecomunicazioni con il termine buffer overflow si fa riferimento ad una condizione in cui il buffer di un apparato di comunicazione diviene saturo di dati informativi. Esso tipicamente si verifica quando la velocità con cui i dati pervengono ad un nodo supera (temporaneamente o permanentemente) la capacità trasmissiva del nodo stesso. In questo caso, non è detto che l'overflow rappresenti un errore di programmazione. Infatti, in molte reti di telecomunicazioni risulta impossibile conoscere a priori lo stato di tutti i nodi costituenti il sistema di comunicazione e, pertanto, l'evento di buffer overflow viene considerato fisiologico. Ad ogni modo, per ovviare alla perdita di dati che ne consegue, sono usualmente adottati protocolli di rete in grado di recuperare i dati persi a mezzo di ritrasmissione degli stessi (si veda ad esempio il problema del controllo della congestione in TCP).

## Descrizione

In particolare, in una rete di telecomunicazioni a commutazione di pacchetto, i buffer rappresentano memorie in cui memorizzare temporanemante i pacchetti dati in attesa di essere inoltrati su una o più porta di uscita. Infatti, ciascun nodo è tipicamente interconnesso ad un certo numero di nodi limitrofi attraverso uno o più collegamenti (o canali di comunicazione, o link), in funzione della topologia di rete.

I canali di comunicazione sono caratterizzati da una massima capacità di trasmissione, che limita la quantità di dati che nell'unità di tempo può transitare attraverso essi, e sono tipicamente alimentati da un buffer che contiene i dati in attesa di essere trasmessi. In generale, i nodi sono in grado di scambiarsi messaggi sulla base di un approccio di tipo store and forward ma non possono conoscere in anticipo quale sarà il traffico complessivamente smaltito nelle varie porzioni della rete. Questo implica che possono verificarsi delle saturazioni della capacità di alcuni link che comportano un accrescimento della quantità di dati contenuta nei relativi buffer di trasmissione, sino al raggiungimento della massima dimensione del buffer stesso. Un evento di questo tipo prende il nome di buffer oveflow.

Un buffer overflow comporta in primo luogo una perdiata di dati e, secondariamente, un incremento delle latenze di accodamento. Infatti, quando un buffer si riempie, crescono di conseguenza i ritardi di accodamento. Questo effetto può risultare particolarmente dannoso per le applicazioni multimediali in tempo reale e/o interattive quali ad esempio, VoIP, videoconferenze e streaming.

