+\item[\const{TCP\_CONGESTION}] questa opzione permette di impostare quale
+ algoritmo per il controllo della congestione\footnote{il controllo della
+ congestione è un meccanismo previsto dal protocollo TCP (vedi
+ sez.~\ref{sez:tcp_protocol_xxx}) per evitare di trasmettere inutilmente
+ dati quando una connessione è congestionata; un buon algoritmo è
+ fondamentale per il funzionamento del protocollo, dato che i pacchetti
+ persi andrebbero ritrasmessi, per cui inviare un pacchetto su una linea
+ congestionata potrebbe causare facilmente un peggioramento della
+ situazione.} utilizzare per il singolo socket. L'opzione è stata
+ introdotta con il kernel 2.6.13,\footnote{alla data di stesura di queste
+ note (Set. 2006) è pure scarsamente documentata, tanto che non è neanche
+ definita nelle intestazioni delle \acr{glibc} per cui occorre definirla a
+ mano al suo valore che è 13.} e prende come per \param{optval} il
+ puntatore ad un buffer contenente il nome dell'algoritmo di controllo che
+ si vuole usare.
+
+ L'uso di un nome anziché di un valore numerico è dovuto al fatto che gli
+ algoritmi di controllo della congestione sono realizzati attraverso
+ altrettanti moduli del kernel, e possono pertanto essere attivati a
+ richiesta; il nome consente di caricare il rispettivo modulo e di introdurre
+ moduli aggiuntivi che implementino altri meccanismi.
+
+ Per poter disporre di questa funzionalità occorre aver compilato il kernel
+ attivando l'opzione di configurazione generale
+ \texttt{TCP\_CONG\_ADVANCED},\footnote{disponibile come \textit{TCP:
+ advanced congestion control} nel menù \textit{Network->Networking
+ options}, che a sua volta renderà disponibile un ulteriore menù con gli
+ algoritmi presenti.} e poi abilitare i singoli moduli voluti con le varie
+ \texttt{TCP\_CONG\_*} presenti per i vari algoritmi disponibili; un elenco
+ di quelli attualmente supportati nella versione ufficiale del kernel è
+ riportato in tab.~\ref{tab:sock_tcp_congestion_algo}.\footnote{la lista è
+ presa dalla versione 2.6.17.}
+
+
+ Si tenga presente che prima della implementazione modulare alcuni di questi
+ algoritmi erano disponibili soltanto come caratteristiche generali del
+ sistema, attivabili per tutti i socket, questo è ancora possibile con la
+ \textit{sysctl} \texttt{tcp\_congestion\_control} (vedi
+ sez.~\ref{sec:sock_ipv4_sysctl}) che ha sostituito le precedenti
+ \textit{sysctl}.\footnote{riportate anche, alla data di stesura di queste
+ pagine (Set. 2006) nelle pagine di manuale, ma non più presenti.}
+
+ \begin{table}[!htb]
+ \centering
+ \footnotesize
+ \begin{tabular}[c]{|l|l|p{10cm}|}
+ \hline
+ \textbf{Nome}&\textbf{Configurazione}&\textbf{Riferimento} \\
+ \hline
+ \hline
+ reno& -- &algoritmo tradizionale, usato in caso di assenza degli altri.\\
+ \texttt{bic} &\texttt{TCP\_CONG\_BIC} &
+ \href{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm}
+ {\texttt{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm}}.\\
+ \texttt{cubic} &\texttt{TCP\_CONG\_CUBIC} &
+ \href{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm}
+ {\texttt{http://www.csc.ncsu.edu/faculty/rhee/export/bitcp/index.htm}}.\\
+ \texttt{highspeed}&\texttt{TCP\_CONG\_HSTCP} &
+ \href{http://www.icir.org/floyd/hstcp.html}
+ {\texttt{http://www.icir.org/floyd/hstcp.html}}.\\
+ \texttt{htcp} &\texttt{TCP\_CONG\_HTCP} &
+ \href{http://www.hamilton.ie/net/htcp/}
+ {\texttt{http://www.hamilton.ie/net/htcp/}}.\\
+ \texttt{hybla} &\texttt{TCP\_CONG\_HYBLA} &
+ \href{http://www.danielinux.net/projects.html}
+ {\texttt{http://www.danielinux.net/projects.html}}.\\
+ \texttt{scalable}&\texttt{TCP\_CONG\_SCALABLE}&
+ \href{http://www.deneholme.net/tom/scalable/}
+ {\texttt{http://www.deneholme.net/tom/scalable/}}.\\
+ \texttt{vegas} &\texttt{TCP\_CONG\_VEGAS} &
+ \href{http://www.cs.arizona.edu/protocols/}
+ {\texttt{http://www.cs.arizona.edu/protocols/}}.\\
+ \texttt{westwood}&\texttt{TCP\_CONG\_WESTWOOD}&
+ \href{http://www.cs.ucla.edu/NRL/hpi/tcpw/}
+ {\texttt{http://www.cs.ucla.edu/NRL/hpi/tcpw/}}.\\
+% \texttt{}&\texttt{}& .\\
+ \hline
+ \end{tabular}
+ \caption{Gli algoritmi per il controllo della congestione disponibili con
+ Linux con le relative opzioni di configurazione da attivare.}
+ \label{tab:sock_tcp_congestion_algo}
+ \end{table}