\item[\procrelfile{/proc/sys/net/ipv4}{ip\_no\_pmtu\_disc}] permette di
disabilitare per i socket \const{SOCK\_STREAM} la ricerca automatica della
\itindex{Maximum~Transfer~Unit} \textit{Path MTU} (vedi
- sez.~\ref{sec:net_lim_dim} e sez.~\ref{sec:sock_ipv4_options}); prende un
+ sez.~\ref{sec:net_lim_dim} e sez.~\ref{sec:sock_ipv4_options}). Prende un
valore logico, e di default è disabilitato (cioè la ricerca viene eseguita).
In genere si abilita questo parametro quando per qualche motivo il
procedimento del \itindex{Maximum~Transfer~Unit} \textit{Path MTU discovery}
- fallisce; dato che questo può avveniera a causa di router\footnote{ad
+ fallisce; dato che questo può avvenire a causa di router\footnote{ad
esempio se si scartano tutti i pacchetti ICMP, il problema è affrontato
anche in sez.~1.4.4 di \cite{FwGL}.} o interfacce\footnote{ad esempio se i
due capi di un collegamento \textit{point-to-point} non si accordano sulla
\item[\procrelfile{/proc/sys/net/ipv4}{ip\_always\_defrag}] fa si che tutti i
pacchetti IP frammentati siano riassemblati, anche in caso in successivo
- immediato inoltro;\footnote{introdotto con il kernel 2.2.13, nelle versioni
+ immediato inoltro.\footnote{introdotto con il kernel 2.2.13, nelle versioni
precedenti questo comportamento poteva essere solo stabilito un volta per
tutte in fase di compilazione del kernel con l'opzione
- \texttt{CONFIG\_IP\_ALWAYS\_DEFRAG}.} prende un valore logico e di default
+ \texttt{CONFIG\_IP\_ALWAYS\_DEFRAG}.} Prende un valore logico e di default
è disabilitato. Con i kernel dalla serie 2.4 in poi la deframmentazione viene
attivata automaticamente quando si utilizza il sistema del netfilter, e
questo parametro non è più presente.
\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_high\_thresh}] indica il limite
massimo (espresso in numero di byte) sui pacchetti IP frammentati presenti
in coda; quando questo valore viene raggiunta la coda viene ripulita fino al
- valore \texttt{ipfrag\_low\_thresh}.
+ valore \texttt{ipfrag\_low\_thresh}. Prende un valore intero.
\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_low\_thresh}] soglia bassa
- (specificata in byte) cui viene riportata la coda dei pacchetti IP
- frammentati quando si raggiunge il valore \texttt{ipfrag\_high\_thresh}.
+ (specificata in byte) a cui viene riportata la coda dei pacchetti IP
+ frammentati quando si raggiunge il valore massimo dato da
+ \texttt{ipfrag\_high\_thresh}. Prende un valore intero.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_nonlocal\_bind}] se abilitato
- (prende un intero come valore logico) è possibile che una applicazione possa
- collegarsi (con \func{bind} su un indirizzo non locale. Questo può risultare
- utile per applicazioni particolari (come gli \textit{sniffer}) che hanno la
- necessità di ricevere pacchetti anche non diretti agli indirizzi presenti
- sulla macchina, ad esempio per intercettare il traffico per uno specifico
- indirizzo che si vuole tenere sotto controllo.
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_nonlocal\_bind}] se abilitato rende
+ possibile ad una applicazione eseguire \func{bind} anche su un indirizzo che
+ non è presente su nessuna interfaccia locale. Prende un valore logico e di
+ default è disabilitato.
+
+ Questo può risultare utile per applicazioni particolari (come gli
+ \textit{sniffer}) che hanno la necessità di ricevere pacchetti anche non
+ diretti agli indirizzi presenti sulla macchina, ad esempio per intercettare
+ il traffico per uno specifico indirizzo che si vuole tenere sotto
+ controllo. Il suo uso però può creare problemi ad alcune applicazioni.
% \item[\texttt{neigh/*}] La directory contiene i valori
% TODO trattare neigh/* nella parte su arp, da capire dove sarà.
+
\end{basedescript}
I file di \texttt{/proc/sys/net/ipv4} che invece fanno riferimento alle
pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
\begin{basedescript}{\desclabelwidth{3.9cm}\desclabelstyle{\nextlinelabel}}
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_abort\_on\_overflow}] Un valore
- logico (disabilitato di default) che indica di azzerare le connessioni
- quando il programma che le riceve è troppo lento ed incapace di accettarle.
- Questo consente di recuperare le connessioni se si è avuto un eccesso dovuto
- ad un qualche picco di traffico, ma ovviamente va a discapito dei client che
- interrogano il server. Pertanto è da abilitare soltanto quando si è sicuri
- che non è possibile ottimizzare il server in modo che sia in grado di
- accettare connessioni più rapidamente.
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_adv\_win\_scale}] questa variabile
- intera indica al kernel quanto spazio all'interno del buffer associato ad un
- socket (quello impostato con \texttt{tcp\_rmem}) deve essere utilizzato per
- la finestra del protocollo TCP (quello che costituisce la
- \itindex{advertised~window} \textit{advertised window} annunciata all'altro
- capo del socket) e quello che viene usato come buffer applicativo per
- isolare la rete dalle latenze dell'applicazione. Il valore viene calcolato
- secondo la formula $\texttt{buffer}/2^\texttt{tcp\_adv\_win\_scale}$ se
- positivo o con
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_abort\_on\_overflow}] indica al
+ kernel di azzerare le connessioni quando il programma che le riceve è troppo
+ lento ed incapace di accettarle. Prende un valore logico ed è disabilitato
+ di default. Questo consente di recuperare le connessioni se si è avuto un
+ eccesso dovuto ad un qualche picco di traffico, ma ovviamente va a discapito
+ dei client che interrogano il server. Pertanto è da abilitare soltanto
+ quando si è sicuri che non è possibile ottimizzare il server in modo che sia
+ in grado di accettare connessioni più rapidamente.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_adv\_win\_scale}] indica al kernel
+ quale frazione del buffer associato ad un socket\footnote{quello impostato
+ con \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}.} deve essere utilizzata
+ per la finestra del protocollo TCP\footnote{in sostanza il valore che
+ costituisce la \itindex{advertised~window} \textit{advertised window}
+ annunciata all'altro capo del socket.} e quale come buffer applicativo per
+ isolare la rete dalle latenze dell'applicazione. Prende un valore intero
+ che determina la suddetta frazione secondo la formula
+ $\texttt{buffer}/2^\texttt{tcp\_adv\_win\_scale}$ se positivo o con
$\texttt{buffer}-\texttt{buffer}/2^\texttt{tcp\_adv\_win\_scale}$ se
- negativo. Il valore di default è 2 che significa che al buffer
- dell'applicazione viene riservato un quarto del totale.
+ negativo. Il default è 2 che significa che al buffer dell'applicazione
+ viene riservato un quarto del totale.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_app\_win}] il valore indica quanti
- byte della finestra TCP vengono riservati per la bufferizzazione, valore è
- il massimo fra la \itindex{Maximum~Segment~Size} MSS e
- $\texttt{window}/2^\texttt{tcp\_app\_win}$. Un valore nullo significa che
- non viene riservato nessuno spazio; il default è 31.
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_app\_win}] indica la frazione
+ della finestra TCP che viene riservata per gestire l'overhaed dovuto alla
+ bufferizzazione. Prende un valore valore intero che consente di calcolare la
+ dimensione in byte come il massimo fra la \itindex{Maximum~Segment~Size}
+ MSS e $\texttt{window}/2^\texttt{tcp\_app\_win}$. Un valore nullo significa
+ che non viene riservato nessuno spazio; il valore di default è 31.
% vecchi, presumibilmente usati quando gli algoritmi di congestione non erano
% modularizzabili
% \item[\texttt{tcp\_bic\_low\_window}]
% \item[\texttt{tcp\_bic\_fast\_convergence}]
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_dsack}] Un valore logico che
- abilita il supporto, definito
- nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884}, per il
- \textit{Duplicate SACK}.\footnote{si indica con SACK (\textit{Selective
- Acknowledgement}) un'opzione TCP, definita
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_dsack}] abilita il supporto,
+ definito nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884}, per il
+ cosiddetto \textit{Duplicate SACK}.\footnote{si indica con SACK
+ (\textit{Selective Acknowledgement}) un'opzione TCP, definita
nell'\href{http://www.ietf.org/rfc/rfc2018.txt}{RFC~2018}, usata per dare
un \textit{acknowledgement} unico su blocchi di pacchetti non contigui,
- che consente di diminuire il numero di pacchetti scambiati.} Di default è
- abilitato.
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_ecn}] Un valore logico che abilita
- il meccanismo della \textit{Explicit Congestion Notification} (in breve ECN)
- nelle connessioni TCP. Questo è un meccanismo (è descritto in dettaglio
- nell'\href{http://www.ietf.org/rfc/rfc3168.txt}{RFC~3168} mentre gli effetti
- sulle prestazioni del suo utilizzo sono documentate
- nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884} ) che consente di
- notificare quando una rotta o una rete è congestionata da un eccesso di
- traffico, si può così essere avvisati e cercare rotte alternative oppure
- diminuire l'emissione di pacchetti (in modo da non aumentare la
- congestione). Di default è disabilitato.
+ che consente di diminuire il numero di pacchetti scambiati.} Prende un
+ valore logico e di default è abilitato.
+% TODO documentare o descrivere che cos'è il Duplicate SACK o
+% mettere riferimento nelle appendici
+
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_ecn}] abilita il meccanismo della
+ \textit{Explicit Congestion Notification} (in breve ECN) nelle connessioni
+ TCP. Prende valore logico che di default è disabilitato. La \textit{Explicit
+ Congestion Notification} \index{Explicit~Congestion~Notification} è un
+ meccanismo che consente di notificare quando una rotta o una rete è
+ congestionata da un eccesso di traffico,\footnote{il meccanismo è descritto
+ in dettaglio nell'\href{http://www.ietf.org/rfc/rfc3168.txt}{RFC~3168}
+ mentre gli effetti sulle prestazioni del suo utilizzo sono documentate
+ nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884}.} si può così
+ essere avvisati e cercare rotte alternative oppure diminuire l'emissione di
+ pacchetti (in modo da non aumentare la congestione).
Si tenga presente che se si abilita questa opzione si possono avere dei
malfunzionamenti apparentemente casuali dipendenti dalla destinazione,
dovuti al fatto che alcuni vecchi router non supportano il meccanismo ed
- alla sua attivazione e scartano i relativi pacchetti, bloccando
- completamente il traffico.\\
+ alla sua attivazione scartano i relativi pacchetti, bloccando completamente
+ il traffico.
+% TODO documentare o descrivere che cos'è l'Explicit Congestion Notification o
+% mettere riferimento nelle appendici
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_fack}] è un valore logico che
- abilita il supporto per il \textit{TCP Forward Acknowledgement}, un
- algoritmo per il controllo della congestione del traffico. Di default è
- abilitato.
-% TODO documentare o descrivere che cos'è il TCP Forward Acknowledgement
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_fack}] abilita il supporto per il
+ \textit{TCP Forward Acknowledgement}, un algoritmo per il controllo della
+ congestione del traffico. Prende un valore logico e di default è abilitato.
+
+% TODO documentare o descrivere che cos'è il TCP Forward Acknowledgement o
+% mettere riferimento nelle appendici
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_fin\_timeout}] specifica il numero
- di secondi (il default è 60\footnote{nei kernel della serie 2.2.x era invece
- di 120 secondi.}) da passare in stato \texttt{FIN\_WAIT2} nell'attesa
- delle ricezione del pacchetto FIN conclusivo, passati quali il socket viene
- comunque chiuso forzatamente. L'uso di questa opzione realizza quella che
- in sostanza è una violazione delle specifiche del protocollo TCP, ma è utile
- per fronteggiare alcuni attacchi di \itindex{Denial~of~Service~(DoS)}
- \textit{Denial of Service}.
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_frto}] è un valore logico che
- abilita il supporto per l'algoritmo F-RTO, un algoritmo usato per la
- ritrasmissione dei timeout del protocollo TCP, che diventa molto utile per
- le reti wireless dove la perdita di pacchetti è usualmente dovuta a delle
- interferenze radio, piuttosto che alla congestione dei router. Di default è
+ di secondi da passare in stato \texttt{FIN\_WAIT2} nell'attesa delle
+ ricezione del pacchetto FIN conclusivo, passati quali il socket viene
+ comunque chiuso forzatamente. Prende un valore intero che indica i secondi
+ e di default è 60.\footnote{nei kernel della serie 2.2.x era il valore
+ utilizzato era invece di 120 secondi.}) L'uso di questa opzione realizza
+ quella che in sostanza è una violazione delle specifiche del protocollo TCP,
+ ma è utile per fronteggiare alcuni attacchi di
+ \itindex{Denial~of~Service~(DoS)} \textit{Denial of Service}.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_frto}] abilita il supporto per
+ l'algoritmo F-RTO, un algoritmo usato per la ritrasmissione dei timeout del
+ protocollo TCP, che diventa molto utile per le reti wireless dove la perdita
+ di pacchetti è usualmente dovuta a delle interferenze radio, piuttosto che
+ alla congestione dei router. Prende un valore logico e di default è
disabilitato.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_intvl}] il numero di
- secondi che deve trascorrere fra l'emissione di due successivi pacchetti di
- test quando è abilitata la funzionalità del \textit{keepalive} (vedi
- sez.~\ref{sec:sock_options_main}). Il valore di default è 75.
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_intvl}] indica il
+ numero di secondi che deve trascorrere fra l'emissione di due successivi
+ pacchetti di test quando è abilitata la funzionalità del \textit{keepalive}
+ (vedi sez.~\ref{sec:sock_options_main}). Prende un valore intero che di
+ default è 75.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_probes}] il massimo
- numero pacchetti di \textit{keepalive} (vedi
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_probes}] indica il
+ massimo numero pacchetti di \textit{keepalive} (vedi
sez.~\ref{sec:sock_options_main}) che devono essere inviati senza ricevere
risposta prima che il kernel decida che la connessione è caduta e la
- termini. Il valore di default è 9.
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_time}] il numero di
- secondi che devono passare senza traffico sulla connessione prima che il
- kernel, qualora si sia utilizzata l'opzione \const{SO\_KEEPALIVE} (vedi
- sez.~\ref{sec:sock_options_main}), inizi ad inviare pacchetti di pacchetti
- di \textit{keepalive}. Il default è 7200, pari a due ore.
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_low\_latency}] un valore logico
- che indica allo stack TCP del kernel di ottimizzare il comportamento per
- ottenere tempi di latenza più bassi a scapito di valori più alti per
- l'utilizzo della banda. Di default è disabilitato in quanto un maggior
- utilizzo della banda è preferito, ma esistono applicazioni particolari in
- cui la riduzione della latenza è più importante (ad esempio i cluster di
- calcolo parallelo) in cui lo si può abilitare.
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_orphans}] il numero massimo
- di socket TCP ``\textsl{orfani}'' (vale a dire non associati a nessun file
- descriptor) consentito nel sistema.\footnote{trattasi in genere delle
- connessioni relative a socket chiusi che non hanno completato il processo
- di chiusura.} Quando il limite viene ecceduto la connessione orfana viene
- resettata e viene stampato un avvertimento. Questo limite viene usato per
- contrastare alcuni elementari attacchi di \textit{denial of service}.
- Diminuire il valore non è mai raccomandato, in certe condizioni di rete può
- essere opportuno aumentarlo, ma si deve tenere conto del fatto che ciascuna
- connessione orfana può consumare fino a 64K di memoria del kernel. Il valore
- di default viene impostato inizialmente al valore del parametro del kernel
- \texttt{NR\_FILE}, e viene aggiustato a seconda della memoria disponibile.
+ termini. Prende un valore intero che di default è 9.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_time}] indica il numero
+ di secondi che devono passare senza traffico sulla connessione prima che il
+ kernel inizi ad inviare pacchetti di pacchetti di
+ \textit{keepalive}.\footnote{ha effetto solo per i socket per cui si è
+ impostata l'opzione \const{SO\_KEEPALIVE} (vedi
+ sez.~\ref{sec:sock_options_main}.} Prende un valore intero che di default
+ è 7200, pari a due ore.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_low\_latency}] indica allo stack
+ TCP del kernel di ottimizzare il comportamento per ottenere tempi di latenza
+ più bassi a scapito di valori più alti per l'utilizzo della banda. Prende un
+ valore logico che di default è disabilitato in quanto un maggior utilizzo
+ della banda è preferito, ma esistono applicazioni particolari in cui la
+ riduzione della latenza è più importante (ad esempio per i cluster di
+ calcolo parallelo) nelle quali lo si può abilitare.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_orphans}] indica il numero
+ massimo di socket TCP ``\textsl{orfani}'' (vale a dire non associati a
+ nessun file descriptor) consentito nel sistema.\footnote{trattasi in genere
+ delle connessioni relative a socket chiusi che non hanno completato il
+ processo di chiusura.} Quando il limite viene ecceduto la connessione
+ orfana viene resettata e viene stampato un avvertimento. Questo limite viene
+ usato per contrastare alcuni elementari attacchi di \textit{denial of
+ service}. Diminuire il valore non è mai raccomandato, in certe condizioni
+ di rete può essere opportuno aumentarlo, ma si deve tenere conto del fatto
+ che ciascuna connessione orfana può consumare fino a 64K di memoria del
+ kernel. Prende un valore intero, il valore di default viene impostato
+ inizialmente al valore del parametro del kernel \texttt{NR\_FILE}, e viene
+ aggiustato a seconda della memoria disponibile.
% TODO verificare la spiegazione di connessione orfana
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_syn\_backlog}] un numero
- intero che indica la lunghezza della coda delle connessioni incomplete, cioè
- delle connessioni per le quali si è ricevuto un SYN di richiesta ma non
- l'ACK finale del \itindex{three~way~handshake} \textit{three way handshake}
- (si riveda quanto illustrato in sez.~\ref{sec:TCP_func_listen}).
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_syn\_backlog}] indica la
+ lunghezza della coda delle connessioni incomplete, cioè delle connessioni
+ per le quali si è ricevuto un SYN di richiesta ma non l'ACK finale del
+ \itindex{three~way~handshake} \textit{three way handshake} (si riveda quanto
+ illustrato in sez.~\ref{sec:TCP_func_listen}).
Quando questo valore è superato il kernel scarterà immediatamente ogni
- ulteriore richiesta di connessione. Il valore di default (che è 256) viene
- automaticamente portato a 1024 qualora nel sistema ci sia sufficiente
- memoria (se maggiore di 128Mb) e ridotto a 128 qualora la memoria sia poca
- (inferiore a 32Mb).\footnote{si raccomanda, qualora si voglia aumentare il
- valore oltre 1024, di seguire la procedura citata nella pagina di manuale
- di TCP, e modificare il valore della costante \texttt{TCP\_SYNQ\_HSIZE}
- nel file \texttt{include/net/tcp.h} dei sorgenti del kernel, in modo che
- sia $\mathtt{tcp\_max\_syn\_backlog} \ge \mathtt{16*TCP\_SYNQ\_HSIZE}$,
- per poi ricompilare il kernel.}
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_tw\_buckets}] questo valore
- indica il numero massimo di socket in stato \texttt{TIME\_WAIT} consentito
- nel sistema; viene impostato per prevenire semplici attacchi di
- \textit{denial of service} ed inizializzato di default ad un valore del
- parametro \texttt{NR\_FILE}, per poi essere aggiustato a seconda della
- memoria presente. Se il valore viene superato il socket viene chiuso con la
- stampa di un avviso.
+ ulteriore richiesta di connessione. Prende un valore intero; il default, che
+ è 256, viene automaticamente portato a 1024 qualora nel sistema ci sia
+ sufficiente memoria (se maggiore di 128Mb) e ridotto a 128 qualora la
+ memoria sia poca (inferiore a 32Mb).\footnote{si raccomanda, qualora si
+ voglia aumentare il valore oltre 1024, di seguire la procedura citata
+ nella pagina di manuale di TCP, e modificare il valore della costante
+ \texttt{TCP\_SYNQ\_HSIZE} nel file \texttt{include/net/tcp.h} dei sorgenti
+ del kernel, in modo che sia $\mathtt{tcp\_max\_syn\_backlog} \ge
+ \mathtt{16*TCP\_SYNQ\_HSIZE}$, per poi ricompilare il kernel.}
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_tw\_buckets}] indica il
+ numero massimo di socket in stato \texttt{TIME\_WAIT} consentito nel
+ sistema. Prende un valore intero di default è impostato al doppio del valore
+ del parametro \texttt{NR\_FILE}, ma che viene aggiustato automaticamente a
+ seconda della memoria presente. Se il valore viene superato il socket viene
+ chiuso con la stampa di un avviso; l'uso di questa funzionalità consente di
+ prevenire alcuni semplici attacchi di \textit{denial of service}.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_mem}] una tripletta di valori
- usati dallo stack TCP per controllare il proprio uso della memoria. Il primo
- valore, chiamato \textit{low} nelle pagine di manuale, indica il numero di
- pagine allocate sotto il quale non viene usato nessun meccanismo di
- regolazione dell'uso della memoria.
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_mem}] prende una tripletta di
+ valori interi usati dallo stack TCP per controllare il proprio uso della
+ memoria. Il primo valore, chiamato \textit{low} nelle pagine di manuale,
+ indica il numero di pagine allocate sotto il quale non viene usato nessun
+ meccanismo di regolazione dell'uso della memoria.
Il secondo valore, chiamato \textit{pressure} indica il numero di pagine
allocate passato il quale lo stack TCP inizia a moderare il suo consumo di
valore specificato dagli altri limiti del kernel.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_orphan\_retries}] il numero
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_orphan\_retries}] indica il numero
massimo di volte che si esegue un tentativo di controllo sull'altro capo di
- una connessione che è stata già chiusa dalla nostra parte. Il valore di
- default è 8 volte.
+ una connessione che è stata già chiusa dalla nostra parte. Prende un valore
+ intero che di default è 8.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_reordering}] il numero massimo di
- volte che un pacchetto può essere riordinato nel flusso di dati, prima che
- lo stack TCP assuma che è andato perso e si ponga nello stato di
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_reordering}] indica il numero
+ massimo di volte che un pacchetto può essere riordinato nel flusso di dati,
+ prima che lo stack TCP assuma che è andato perso e si ponga nello stato di
\textit{slow start} (si veda sez.~\ref{sez:tcp_protocol_xxx}) viene usata
questa metrica di riconoscimento dei riordinamenti per evitare inutili
- ritrasmissioni provocate dal riordinamento. Non è opportuno modificare
- questo valore dal default che è 3.
+ ritrasmissioni provocate dal riordinamento. Prende un valore intero che di
+ default che è 3, e che non è opportuno modificare.
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retrans\_collapse}] in caso di
pacchetti persi durante una connessione, per ottimizzare l'uso della banda
il kernel cerca di eseguire la ritrasmissione inviando pacchetti della
massima dimensione possibile; in sostanza dati che in precedenza erano stati
trasmessi su pacchetti diversi possono essere ritrasmessi riuniti su un solo
- pacchetto (o su un numero minore di pacchetti di dimensione maggiore).
+ pacchetto (o su un numero minore di pacchetti di dimensione
+ maggiore). Prende un valore logico e di default è abilitato.
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retries1}] imposta il massimo
numero di volte che protocollo tenterà la ritrasmissione si un pacchetto su
coinvolgano anche il livello di rete. Passato questo numero di
ritrasmissioni verrà fatto eseguire al livello di rete un tentativo di
aggiornamento della rotta verso la destinazione prima di eseguire ogni
- successiva ritrasmissione.
+ successiva ritrasmissione. Prende un valore intero che di default è 3.
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retries2}] imposta il numero di
tentativi di ritrasmissione di un pacchetto inviato su una connessione già
stabilita per il quale non si sia ricevuto una risposta di ACK (si veda
- anche quanto illustrato in sez.~\ref{sec:TCP_server_crash}). Il valore
- default è 15, che significa un tempo variabile fra 13 e 30 minuti; questo
- non corrisponde a quanto richiesto
+ anche quanto illustrato in sez.~\ref{sec:TCP_server_crash}). Prende un
+ valore intero che di default è 15, il che comporta un tempo variabile fra 13
+ e 30 minuti; questo non corrisponde a quanto richiesto
nell'\href{http://www.ietf.org/rfc/rfc1122.txt}{RFC~1122} dove è indicato un
massimo di 100 secondi, che però è un valore considerato troppo basso.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rfc1337}] un valore logico che
- indica allo stack TCP del kernel di abilitare il comportamento richiesto
- nell'\href{http://www.ietf.org/rfc/rfc1337.txt}{RFC~1337}; di default è
- disabilitato, il che significa che alla ricezione di un segmento RST in stao
- \texttt{TIME\_WAIT} il socket viene chiuso immediatamente senza attendere la
- conclusione del periodo di \texttt{TIME\_WAIT}.
-
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}]
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rfc1337}] indica allo stack TCP
+ del kernel di abilitare il comportamento richiesto
+ nell'\href{http://www.ietf.org/rfc/rfc1337.txt}{RFC~1337}. Prende un valore
+ logico e di default è disabilitato, il che significa che alla ricezione di
+ un segmento RST in stato \texttt{TIME\_WAIT} il socket viene chiuso
+ immediatamente senza attendere la conclusione del periodo di
+ \texttt{TIME\_WAIT}.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}] viene usato dallo stack TCP
+ per controllare dinamicamente le dimensioni dei propri buffer di ricezione,
+ anche in rapporto alla memoria disponibile. Prende una tripletta di valori
+ interi separati da spazi che indicano delle dimensioni in byte.
+
+ Il primo valore, chiamato \textit{min} nelle pagine di manuale, indica la
+ dimensione minima del buffer di ricezione; e di default vale 4Kb, ma in
+ sistemi con poca memoria viene automaticamente ridotto a \const{PAGE\_SIZE}.
+ Questo valore viene usato per assicurare che anche in situazioni di
+ pressione sulla memoria (vedi quanto detto per
+ \procrelfile{/proc/sys/net/ipv4}{tcp\_mem}) le allocazioni al di sotto di
+ questo limite abbiamo comunque successo.\footnote{e non ha a che fare con la
+ dimensione del buffer di lettura di un socket dichiarata con l'opzione
+ \const{SO\_RCVBUF}.}
+
+ Il secondo valore, denominato \textit{default} nelle pagine di manuale,
+ indica la dimensione di default del buffer di ricezione di un socket TCP.
+ Questo valore sovrascrive il default iniziale impostato con
+ \procfile{/proc/sys/net/core/mem\_default} che vale per qualunque
+ protocollo.
+
+ Il terzo valore, denominato \textit{max} nelle pagine di manuale
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_sack}] un valore logico che indica