Indicizzati file sotto /proc, ed ulteriore materiale su ''inotify''.
[gapil.git] / sockctrl.tex
index 454aecede20904730553b4a8478a26eabd2918b9..c5bfafc116399574e9ff88cf5e9d0a7be4721558 100644 (file)
@@ -2260,8 +2260,10 @@ tab.~\ref{tab:sock_opt_socklevel} sul significato delle varie opzioni:
   per mantenere dati amministrativi e strutture interne, e solo una parte
   viene usata come buffer per i dati, mentre il valore letto da
   \func{getsockopt} e quello riportato nei vari parametri di
-  \textit{sysctl}\footnote{cioè \texttt{wmem\_max} e \texttt{rmem\_max} in
-    \texttt{/proc/sys/net/core} e \texttt{tcp\_wmem} e \texttt{tcp\_rmem} in
+  \textit{sysctl}\footnote{cioè \procrelfile{/proc/sys/net/core}{wmem\_max} e
+    \procrelfile{/proc/sys/net/core}{rmem\_max} in \texttt{/proc/sys/net/core}
+    e \procrelfile{/proc/sys/net/ipv4}{tcp\_wmem} e
+    \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem} in
     \texttt{/proc/sys/net/ipv4}, vedi sez.~\ref{sec:sock_sysctl}.} indica la
   memoria effettivamente impiegata.  Si tenga presente inoltre che le
   modifiche alle dimensioni dei buffer di ingresso e di uscita, per poter
@@ -3203,7 +3205,7 @@ quantit
   di tentativi di ritrasmissione dei segmenti SYN usati nel
   \itindex{three~way~handshake} \textit{three way handshake} prima che il
   tentativo di connessione venga abortito (si ricordi quanto accennato in
-  sez.\ref{sec:TCP_func_connect}). Sovrascrive per il singolo socket il valore
+  sez.~\ref{sec:TCP_func_connect}). Sovrascrive per il singolo socket il valore
   globale impostato con la \textit{sysctl} \texttt{tcp\_syn\_retries} (vedi
   sez.~\ref{sec:sock_ipv4_sysctl}).  Non vengono accettati valori maggiori di
   255; anche questa opzione non è standard e deve essere evitata se si vuole
@@ -3969,24 +3971,25 @@ socket.  Quelli descritti anche nella pagina di manuale, accessibile con
 \texttt{man 7 socket} sono i seguenti:
 
 \begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
-\item[\texttt{rmem\_default}] imposta la dimensione di default del buffer di
-  lettura (cioè per i dati in ingresso) dei socket.
-\item[\texttt{rmem\_max}] imposta la dimensione massima che si può assegnare al
-  buffer di ingresso dei socket attraverso l'uso dell'opzione
-  \const{SO\_RCVBUF}.
-\item[\texttt{wmem\_default}] imposta la dimensione di default del buffer di
-  scrittura (cioè per i dati in uscita) dei socket.
-\item[\texttt{wmem\_max}] imposta la dimensione massima che si può assegnare al
-  buffer di uscita dei socket attraverso l'uso dell'opzione
-  \const{SO\_SNDBUF}.
-\item[\texttt{message\_cost}, \texttt{message\_burst}] contengono le
-  impostazioni del \itindex{bucket~filter} \textit{bucket filter} che
-  controlla l'emissione di messaggi di avviso da parte kernel per eventi
-  relativi a problemi sulla rete, imponendo un limite che consente di
-  prevenire eventuali attacchi di \itindex{Denial~of~Service~(DoS)}
-  \textit{Denial of Service} usando i log.\footnote{senza questo limite un
-    attaccante potrebbe inviare ad arte un traffico che generi
-    intenzionalmente messaggi di errore, per saturare il sistema dei log.}
+\item[\procrelfile{/proc/sys/net/core}{rmem\_default}] imposta la dimensione
+  di default del buffer di lettura (cioè per i dati in ingresso) dei socket.
+\item[\procrelfile{/proc/sys/net/core}{rmem\_max}] imposta la dimensione
+  massima che si può assegnare al buffer di ingresso dei socket attraverso
+  l'uso dell'opzione \const{SO\_RCVBUF}.
+\item[\procrelfile{/proc/sys/net/core}{wmem\_default}] imposta la dimensione
+  di default del buffer di scrittura (cioè per i dati in uscita) dei socket.
+\item[\procrelfile{/proc/sys/net/core}{wmem\_max}] imposta la dimensione
+  massima che si può assegnare al buffer di uscita dei socket attraverso l'uso
+  dell'opzione \const{SO\_SNDBUF}.
+\item[\procrelfile{/proc/sys/net/core}{message\_cost},
+  \procrelfile{/proc/sys/net/core}{message\_burst}] contengono le impostazioni
+  del \itindex{bucket~filter} \textit{bucket filter} che controlla l'emissione
+  di messaggi di avviso da parte kernel per eventi relativi a problemi sulla
+  rete, imponendo un limite che consente di prevenire eventuali attacchi di
+  \itindex{Denial~of~Service~(DoS)} \textit{Denial of Service} usando i
+  log.\footnote{senza questo limite un attaccante potrebbe inviare ad arte un
+    traffico che generi intenzionalmente messaggi di errore, per saturare il
+    sistema dei log.}
 
   Il \itindex{bucket~filter} \textit{bucket filter} è un algoritmo generico
   che permette di impostare dei limiti di flusso su una quantità\footnote{uno
@@ -4009,11 +4012,11 @@ socket.  Quelli descritti anche nella pagina di manuale, accessibile con
   emissione (verranno accettati inizialmente fino ad un massimo di
   \texttt{message\_cost/message\_burst} messaggi).
 
-\item[\texttt{netdev\_max\_backlog}] numero massimo di pacchetti che possono
-  essere contenuti nella coda di ingresso generale.
+\item[\procrelfile{/proc/sys/net/core}{netdev\_max\_backlog}] numero massimo
+  di pacchetti che possono essere contenuti nella coda di ingresso generale.
 
-\item[\texttt{optmem\_max}] lunghezza massima dei dati ancillari e di
-  controllo (vedi sez.~\ref{sec:net_ancillary_data}).
+\item[\procrelfile{/proc/sys/net/core}{optmem\_max}] lunghezza massima dei
+  dati ancillari e di controllo (vedi sez.~\ref{sec:net_ancillary_data}).
 \end{basedescript}
 
 Oltre a questi nella directory \texttt{/proc/sys/net/core} si trovano altri
@@ -4021,30 +4024,34 @@ file, la cui documentazione dovrebbe essere mantenuta nei sorgenti del kernel,
 nel file \texttt{Documentation/networking/ip-sysctl.txt}; la maggior parte di
 questi però non è documentato:
 \begin{basedescript}{\desclabelwidth{3.0cm}\desclabelstyle{\nextlinelabel}}
-\item[\texttt{dev\_weight}] blocco di lavoro (\textit{work quantum}) dello
-  scheduler di processo dei pacchetti. 
+\item[\procrelfile{/proc/sys/net/core}{dev\_weight}] blocco di lavoro
+  (\textit{work quantum}) dello scheduler di processo dei pacchetti.
 
 % TODO da documentare meglio
 
-\item[\texttt{lo\_cong}] valore per l'occupazione della coda di ricezione
-  sotto la quale si considera di avere una bassa congestione.
+\item[\procrelfile{/proc/sys/net/core}{lo\_cong}] valore per l'occupazione
+  della coda di ricezione sotto la quale si considera di avere una bassa
+  congestione.
 
-\item[\texttt{mod\_cong}] valore per l'occupazione della coda di ricezione
-  sotto la quale si considera di avere una congestione moderata.
+\item[\procrelfile{/proc/sys/net/core}{mod\_cong}] valore per l'occupazione
+  della coda di ricezione sotto la quale si considera di avere una congestione
+  moderata.
 
-\item[\texttt{no\_cong}] valore per l'occupazione della coda di ricezione
-  sotto la quale si si considera di non avere congestione.
+\item[\procrelfile{/proc/sys/net/core}{no\_cong}] valore per l'occupazione
+  della coda di ricezione sotto la quale si si considera di non avere
+  congestione.
 
-\item[\texttt{no\_cong\_thresh}] valore minimo (\textit{low water mark}) per
-  il riavvio dei dispositivi congestionati.
+\item[\procrelfile{/proc/sys/net/core}{no\_cong\_thresh}] valore minimo
+  (\textit{low water mark}) per il riavvio dei dispositivi congestionati.
 
-%\item[\texttt{netdev\_fastroute}] è presente soltanto quando si è compilato il
-%  kernel con l'apposita opzione di ottimizzazione per l'uso come router (.
+  % \item[\procrelfile{/proc/sys/net/core}{netdev\_fastroute}] è presente
+  %   soltanto quando si è compilato il kernel con l'apposita opzione di
+  %   ottimizzazione per l'uso come router.
 
-\item[\texttt{somaxconn}] imposta la dimensione massima del \textit{backlog}
-  della funzione \func{listen} (vedi sez.~\ref{sec:TCP_func_listen}), e
-  corrisponde al valore della costante \const{SOMAXCONN}; il suo valore di
-  default è 128.
+\item[\procrelfile{/proc/sys/net/core}{somaxconn}] imposta la dimensione
+  massima del \textit{backlog} della funzione \func{listen} (vedi
+  sez.~\ref{sec:TCP_func_listen}), e corrisponde al valore della costante
+  \const{SOMAXCONN}; il suo valore di default è 128.
 
 \end{basedescript}
 
@@ -4063,70 +4070,72 @@ protocollo IP in quanto tale, descritti anche nella pagina di manuale
 accessibile con \texttt{man 7 ip}, sono i seguenti:
 \begin{basedescript}{\desclabelwidth{3.5cm}\desclabelstyle{\nextlinelabel}}
 
-\item[\texttt{ip\_default\_ttl}] imposta il valore di default per il campo TTL
-  (vedi sez.~\ref{sec:IP_header}) di tutti i pacchetti uscenti, stabilendo
-  così il numero massimo di router che i pacchetti possono attraversare. Il
-  valore può essere modificato anche per il singolo socket con l'opzione
-  \const{IP\_TTL}.  Prende un valore intero, ma dato che il campo citato è di
-  8 bit hanno senso solo valori fra 0 e 255. Il valore di default è 64, e non
-  ci normalmente non c'è nessuna necessità di modificarlo,\footnote{l'unico
-    motivo sarebbe per raggiungere macchine estremamente ``{lontane}'' in
-    termini di \textit{hop}, ma è praticamente } aumentare il valore è una
-  pratica poco gentile, in quanto in caso di problemi di routing si allunga
-  inutilmente il numero di ritrasmissioni.
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_default\_ttl}] imposta il valore di
+  default per il campo TTL (vedi sez.~\ref{sec:IP_header}) di tutti i
+  pacchetti uscenti, stabilendo così il numero massimo di router che i
+  pacchetti possono attraversare. Il valore può essere modificato anche per il
+  singolo socket con l'opzione \const{IP\_TTL}.  Prende un valore intero, ma
+  dato che il campo citato è di 8 bit hanno senso solo valori fra 0 e 255. Il
+  valore di default è 64, e non ci normalmente non c'è nessuna necessità di
+  modificarlo,\footnote{l'unico motivo sarebbe per raggiungere macchine
+    estremamente ``{lontane}'' in termini di \textit{hop}, ma è praticamente }
+  aumentare il valore è una pratica poco gentile, in quanto in caso di
+  problemi di routing si allunga inutilmente il numero di ritrasmissioni.
   
 
-\item[\texttt{ip\_forward}] abilita l'inoltro dei pacchetti da una interfaccia
-  ad un altra, e può essere impostato anche per la singola interfaccia. Prende
-  un valore logico (0 disabilita, diverso da zero abilita).
-
-\item[\texttt{ip\_dynaddr}] Abilita la riscrittura automatica degli indirizzi
-  associati ad un socket quando una interfaccia cambia indirizzo. Viene usato
-  per le interfacce usate nei collegamenti in dial-up, il cui indirizzo IP
-  viene assegnato dinamicamente dal provider, e può essere modificato. Un
-  valore nullo disabilita la funzionalità, con 1 la si abilita, con 2 la si
-  abilità in modalità \textsl{prolissa}.
-
-\item[\texttt{ip\_autoconfig}] Specifica se l'indirizzo IP è stato configurato
-  automaticamente via DHCP, BOOTP o RARP.
-
-\item[\texttt{ip\_local\_port\_range}] imposta l'intervallo dei valori usati
-  per l'assegnazione delle porte effimere, permette cioè di modificare i
-  valori illustrati in fig.~\ref{fig:TCP_port_alloc}; prende due valori
-  numerici, che indicano gli estremi dell'intervallo. Si abbia cura di non
-  definire un intervallo che si sovrappone a quello delle porte usate per il
-  \itindex{masquerading} \textit{masquerading}, il kernel può gestire la
-  sovrapposizione, ma si avrà una perdita di prestazioni. Si imposti sempre un
-  valore iniziale maggiore di 1024 (o meglio ancora di 4096) per evitare
-  conflitti con le porte usate dai servizi noti.
-
-\item[\texttt{ip\_no\_pmtu\_disc}] imposta la disciplina di ricerca della
-  \itindex{Maximum~Transfer~Unit} \textit{Path MTU} (vedi
-  sez.~\ref{sec:net_lim_dim} e sez.~\ref{sec:sock_ipv4_options}).
-
-\item[\texttt{ipfrag\_high\_thresh}] 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
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_forward}] abilita l'inoltro dei
+  pacchetti da una interfaccia ad un altra, e può essere impostato anche per
+  la singola interfaccia. Prende un valore logico (0 disabilita, diverso da
+  zero abilita).
+
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_dynaddr}] Abilita la riscrittura
+  automatica degli indirizzi associati ad un socket quando una interfaccia
+  cambia indirizzo. Viene usato per le interfacce usate nei collegamenti in
+  dial-up, il cui indirizzo IP viene assegnato dinamicamente dal provider, e
+  può essere modificato. Un valore nullo disabilita la funzionalità, con 1 la
+  si abilita, con 2 la si abilità in modalità \textsl{prolissa}.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_autoconfig}] Specifica se
+  l'indirizzo IP è stato configurato automaticamente via DHCP, BOOTP o RARP.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_local\_port\_range}] imposta
+  l'intervallo dei valori usati per l'assegnazione delle porte effimere,
+  permette cioè di modificare i valori illustrati in
+  fig.~\ref{fig:TCP_port_alloc}; prende due valori numerici, che indicano gli
+  estremi dell'intervallo. Si abbia cura di non definire un intervallo che si
+  sovrappone a quello delle porte usate per il \itindex{masquerading}
+  \textit{masquerading}, il kernel può gestire la sovrapposizione, ma si avrà
+  una perdita di prestazioni. Si imposti sempre un valore iniziale maggiore di
+  1024 (o meglio ancora di 4096) per evitare conflitti con le porte usate dai
+  servizi noti.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_no\_pmtu\_disc}] imposta la
+  disciplina di ricerca della \itindex{Maximum~Transfer~Unit} \textit{Path
+    MTU} (vedi sez.~\ref{sec:net_lim_dim} e sez.~\ref{sec:sock_ipv4_options}).
+
+\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_high\_thresh}] 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}.
 
-\item[\texttt{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}.
-
-\item[\texttt{ip\_always\_defrag}] se abilitato (prende un intero come valore
-  logico) tutti i pacchetti IP frammentati saranno riassemblati, anche in caso
-  in successivo immediato inoltro.\footnote{introdotto con il kernel 2.2.13,
-    nelle versioni precedenti questo comportamento poteva essere solo in fase
-    di compilazione del kernel con l'opzione
-    \texttt{CONFIG\_IP\_ALWAYS\_DEFRAG}.}
-
-\item[\texttt{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}{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}.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{ip\_always\_defrag}] se abilitato
+  (prende un intero come valore logico) tutti i pacchetti IP frammentati
+  saranno riassemblati, anche in caso in successivo immediato
+  inoltro.\footnote{introdotto con il kernel 2.2.13, nelle versioni precedenti
+    questo comportamento poteva essere solo in fase di compilazione del kernel
+    con l'opzione \texttt{CONFIG\_IP\_ALWAYS\_DEFRAG}.}
+
+\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[\texttt{neigh/*}] La directory contiene i valori 
 % TODO trattare neigh/* nella parte su arp, da capire dove sarà.
@@ -4137,30 +4146,31 @@ caratteristiche specifiche del protocollo TCP, elencati anche nella rispettiva
 pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 \begin{basedescript}{\desclabelwidth{3.9cm}\desclabelstyle{\nextlinelabel}}
 
-\item[\texttt{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[\texttt{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}] è 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
   $\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.
 
-\item[\texttt{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
+\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.
 
@@ -4170,70 +4180,73 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
 % \item[\texttt{tcp\_bic\_low\_window}] 
 % \item[\texttt{tcp\_bic\_fast\_convergence}] 
 
-\item[\texttt{tcp\_dsack}] Abilita il supporto definito
-  nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884} per il
+\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
   \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.}
 
-\item[\texttt{tcp\_ecn}] Abilita il meccanismo della \textit{Explicit
-    Congestion Notification} (o ECN) definito
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_ecn}] Abilita il meccanismo della
+  \textit{Explicit Congestion Notification} (o ECN) definito
   nell'\href{http://www.ietf.org/rfc/rfc2884.txt}{RFC~2884}. 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
   scartano i relativi pacchetti.\\
 
-\item[\texttt{tcp\_fack}] è un valore logico che abilita il supporto per il
-  \textit{TCP Forward Acknowledgement}. Di default è abilitato.
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_fack}] è un valore logico che
+  abilita il supporto per il \textit{TCP Forward Acknowledgement}. Di default
+  è abilitato.
 % TODO documentare o descrivere che cos'è il TCP Forward Acknowledgement
 
-\item[\texttt{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[\texttt{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 è disabilitato.
-
-
-\item[\texttt{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
+\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 è
+  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[\texttt{tcp\_keepalive\_probes}] 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\_probes}] 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[\texttt{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
+\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[\texttt{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[\texttt{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
+\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ò
@@ -4243,11 +4256,11 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
   \texttt{NR\_FILE}, e viene aggiustato a seconda della memoria disponibile.
 % TODO verificare la spiegazione di connessione orfana
 
-\item[\texttt{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}] 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}).
 
   Quando questo valore è superato il kernel scarterà immediatamente ogni
   ulteriore richiesta di connessione. Il valore di default (che è 256) viene
@@ -4260,19 +4273,20 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
     sia $\mathtt{tcp\_max\_syn\_backlog} \ge \mathtt{16*TCP\_SYNQ\_HSIZE}$,
     per poi ricompilare il kernel.}
 
-\item[\texttt{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.
+\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.
   
 
-\item[\texttt{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}] 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.
 
   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
@@ -4284,62 +4298,64 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
   valore specificato dagli altri limiti del kernel.
 
 
-\item[\texttt{tcp\_orphan\_retries}] 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.
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_orphan\_retries}] 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.
 
-\item[\texttt{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 \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.
+\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
+  \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.
 
-\item[\texttt{tcp\_retrans\_collapse}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retrans\_collapse}]
 
-\item[\texttt{tcp\_retries1}] imposta il massimo numero di volte che
-  protocollo tenterà la ritrasmissione si un pacchetto su una connessione
-  stabilita prima di fare ricorso ad ulteriori sforzi che 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.
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retries1}] imposta il massimo
+  numero di volte che protocollo tenterà la ritrasmissione si un pacchetto su
+  una connessione stabilita prima di fare ricorso ad ulteriori sforzi che
+  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.
 
-\item[\texttt{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 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\_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
+  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[\texttt{tcp\_rfc1337}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rfc1337}] 
 
-\item[\texttt{tcp\_rmem}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}] 
 
 
-\item[\texttt{tcp\_sack}] 
-\item[\texttt{tcp\_stdurg}] 
-\item[\texttt{tcp\_synack\_retries}] 
-\item[\texttt{tcp\_syncookies}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_sack}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_stdurg}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_synack\_retries}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syncookies}] 
 
-\item[\texttt{tcp\_syn\_retries}] imposta il numero di tentativi (il default è
-  5) di ritrasmissione dei pacchetti SYN di inizio connessione del
-  \itindex{three~way~handshake} \textit{three way handshake} (si ricordi
-  quanto illustrato in sez.\ref{sec:TCP_func_connect}). Il valore non deve
-  superare 255. 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syn\_retries}] imposta il numero
+  di tentativi (il default è 5) di ritrasmissione dei pacchetti SYN di inizio
+  connessione del \itindex{three~way~handshake} \textit{three way handshake}
+  (si ricordi quanto illustrato in sez.~\ref{sec:TCP_func_connect}). Il valore
+  non deve superare 255.
 
-\item[\texttt{tcp\_timestamps}] 
-\item[\texttt{tcp\_tw\_recycle}] 
-\item[\texttt{tcp\_tw\_reuse}] 
-\item[\texttt{tcp\_window\_scaling}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_timestamps}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_recycle}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_reuse}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}] 
 
 
-\item[\texttt{tcp\_vegas\_cong\_avoid}] 
-\item[\texttt{tcp\_westwood}] 
-\item[\texttt{tcp\_wmem}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_vegas\_cong\_avoid}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_westwood}] 
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_wmem}] 
 \end{basedescript}
 
 % LocalWords:  socket sez dotted decimal resolver Domain Name Service cap DNS