Si noti come per la funzione sia del tutto irrilevante se la struttura
ritornata contiene indirizzi IPv6 o IPv4, in quanto si fa uso direttamente dei
dati relativi alle strutture degli indirizzi di \struct{addrinfo} che sono
-\textsl{opachi} rispetto all'uso della funzione \func{connect}.
+\index{tipo!opaco} opachi rispetto all'uso della funzione \func{connect}.
\begin{figure}[!htbp]
\footnotesize \centering
contiene i dati che specificano il valore dell'opzione che si vuole passare al
socket, mentre l'ultimo argomento \param{optlen},\footnote{questo argomento è
in realtà sempre di tipo \ctyp{int}, come era nelle \acr{libc4} e
- \acr{libc5}; l'uso di \ctyp{socklen\_t} è stato introdotto da POSIX (valgono
+ \acr{libc5}; l'uso di \type{socklen\_t} è stato introdotto da POSIX (valgono
le stesse considerazioni per l'uso di questo tipo di dato fatte in
sez.~\ref{sec:TCP_func_accept}) ed adottato dalle \acr{glibc}.} è la
dimensione in byte dei dati presenti all'indirizzo indicato da \param{optval}.
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è \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
+ \textit{sysctl}\footnote{cioè \sysctlrelfile{net/core}{wmem\_max} e
+ \sysctlrelfile{net/core}{rmem\_max} in \texttt{/proc/sys/net/core}
+ e \sysctlrelfile{net/ipv4}{tcp\_wmem} e
+ \sysctlrelfile{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 ricezione e trasmissione, per poter
accennato in sez.~\ref{sec:net_tcp}.} dei pacchetti sulla rete.
\item[\const{SIOCSPGRP}] imposta il processo o il \itindex{process~group}
- \textit{process group} a cui inviare i segnali \const{SIGIO} e
- \const{SIGURG} quando viene completata una operazione di I/O asincrono o
+ \textit{process group} a cui inviare i segnali \signal{SIGIO} e
+ \signal{SIGURG} quando viene completata una operazione di I/O asincrono o
arrivano dei dati urgenti \itindex{out-of-band} (\texttt{out-of-band}). Il
terzo argomento deve essere un puntatore ad una variabile di tipo
\type{pid\_t}; un valore positivo indica direttamente il \acr{pid} del
\item[\const{SIOCGPGRP}] legge le impostazioni presenti sul socket
relativamente all'eventuale processo o \itindex{process~group}
- \textit{process group} cui devono essere inviati i segnali \const{SIGIO} e
- \const{SIGURG}. Come per \const{SIOCSPGRP} l'argomento passato deve un
+ \textit{process group} cui devono essere inviati i segnali \signal{SIGIO} e
+ \signal{SIGURG}. Come per \const{SIOCSPGRP} l'argomento passato deve un
puntatore ad una variabile di tipo \type{pid\_t}, con lo stesso significato.
Qualora non sia presente nessuna impostazione verrà restituito un valore
nullo.
\item[\const{FIOASYNC}] Abilita o disabilita la modalità di I/O asincrono sul
socket. Questo significa (vedi sez.~\ref{sec:file_asyncronous_operation})
- che verrà inviato il segnale di \const{SIGIO} (o quanto impostato con
+ che verrà inviato il segnale di \signal{SIGIO} (o quanto impostato con
\const{F\_SETSIG}, vedi sez.~\ref{sec:file_fcntl}) in caso di eventi di I/O
sul socket.
\end{basedescript}
dell'interfaccia su cui si vuole operare (ad esempio \texttt{eth0},
\texttt{ppp0}, ecc.), e si inseriscono (o ricevono) i valori relativi alle
diversa caratteristiche e funzionalità nel secondo campo, che come si può
-notare è definito come una \ctyp{union} proprio in quanto il suo significato
+notare è definito come una \direct{union} proprio in quanto il suo significato
varia a secondo dell'operazione scelta.
Si tenga inoltre presente che alcune di queste operazioni (in particolare
\var{ifc\_req}. Qualora il buffer sia stato allocato come una stringa, il suo
indirizzo potrà essere fornito usando il campo \var{ifc\_buf}.\footnote{si
noti che l'indirizzo del buffer è definito in \struct{ifconf} con una
- \ctyp{union}, questo consente di utilizzare una delle due forme a piacere.}
+ \direct{union}, questo consente di utilizzare una delle due forme a piacere.}
La funzione restituisce nel buffer indicato una serie di strutture
\struct{ifreq} contenenti nel campo \var{ifr\_name} il nome dell'interfaccia e
\texttt{man 7 socket} sono i seguenti:
\begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}}
-\item[\procrelfile{/proc/sys/net/core}{rmem\_default}] imposta la dimensione
+\item[\sysctlrelfile{net/core}{rmem\_default}] imposta la dimensione
di default del buffer di ricezione (cioè per i dati in ingresso) dei socket.
-\item[\procrelfile{/proc/sys/net/core}{rmem\_max}] imposta la dimensione
+\item[\sysctlrelfile{net/core}{rmem\_max}] imposta la dimensione
massima che si può assegnare al buffer di ricezione dei socket attraverso
l'uso dell'opzione \const{SO\_RCVBUF}.
-\item[\procrelfile{/proc/sys/net/core}{wmem\_default}] imposta la dimensione
+\item[\sysctlrelfile{net/core}{wmem\_default}] imposta la dimensione
di default del buffer di trasmissione (cioè per i dati in uscita) dei
socket.
-\item[\procrelfile{/proc/sys/net/core}{wmem\_max}] imposta la dimensione
+\item[\sysctlrelfile{net/core}{wmem\_max}] imposta la dimensione
massima che si può assegnare al buffer di trasmissione 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
+\item[\sysctlrelfile{net/core}{message\_cost},
+ \sysctlrelfile{net/core}{message\_burst}] contengono le impostazioni
del \itindex{bucket~filter} \textit{bucket filter} che controlla l'emissione
di messaggi di avviso da parte del kernel per eventi relativi a problemi
sulla rete, imponendo un limite che consente di prevenire eventuali attacchi
emissione (verranno accettati inizialmente fino ad un massimo di
\texttt{message\_cost/message\_burst} messaggi).
-\item[\procrelfile{/proc/sys/net/core}{netdev\_max\_backlog}] numero massimo
+\item[\sysctlrelfile{net/core}{netdev\_max\_backlog}] numero massimo
di pacchetti che possono essere contenuti nella coda di ingresso generale.
-\item[\procrelfile{/proc/sys/net/core}{optmem\_max}] lunghezza massima dei
+\item[\sysctlrelfile{net/core}{optmem\_max}] lunghezza massima dei
dati ancillari e di controllo (vedi sez.~\ref{sec:net_ancillary_data}).
\end{basedescript}
nel file \texttt{Documentation/networking/ip-sysctl.txt}; la maggior parte di
questi però non è documentato:
\begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}}
-\item[\procrelfile{/proc/sys/net/core}{dev\_weight}] blocco di lavoro
+\item[\sysctlrelfile{net/core}{dev\_weight}] blocco di lavoro
(\textit{work quantum}) dello scheduler di processo dei pacchetti.
% TODO da documentare meglio
-\item[\procrelfile{/proc/sys/net/core}{lo\_cong}] valore per l'occupazione
+\item[\sysctlrelfile{net/core}{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}{mod\_cong}] valore per l'occupazione
+\item[\sysctlrelfile{net/core}{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}{no\_cong}] valore per l'occupazione
+\item[\sysctlrelfile{net/core}{no\_cong}] valore per l'occupazione
della coda di ricezione sotto la quale si considera di non avere
congestione.
-\item[\procrelfile{/proc/sys/net/core}{no\_cong\_thresh}] valore minimo
+\item[\sysctlrelfile{net/core}{no\_cong\_thresh}] valore minimo
(\textit{low water mark}) per il riavvio dei dispositivi congestionati.
- % \item[\procrelfile{/proc/sys/net/core}{netdev\_fastroute}] è presente
+ % \item[\sysctlrelfile{net/core}{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}{somaxconn}] imposta la dimensione
+\item[\sysctlrelfile{net/core}{somaxconn}] imposta la dimensione
massima utilizzabile per il \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.
di manuale accessibile con \texttt{man 7 ip}, sono i seguenti:
\begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}}
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_default\_ttl}] imposta il valore di
+\item[\sysctlrelfile{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
quanto in caso di problemi di routing si allunga inutilmente il numero di
ritrasmissioni.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_forward}] abilita l'inoltro dei
+\item[\sysctlrelfile{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), di default è disabilitato.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_dynaddr}] abilita la riscrittura
+\item[\sysctlrelfile{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
diverso dai precedenti) la si abilità in modalità \textsl{prolissa}; di
default la funzionalità è disabilitata.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_autoconfig}] specifica se
+\item[\sysctlrelfile{net/ipv4}{ip\_autoconfig}] specifica se
l'indirizzo IP è stato configurato automaticamente dal kernel all'avvio
attraverso DHCP, BOOTP o RARP. Riporta un valore logico (0 falso, 1 vero)
accessibile solo in lettura, è inutilizzato nei kernel recenti ed eliminato
a partire dal kernel 2.6.18.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_local\_port\_range}] imposta
+\item[\sysctlrelfile{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 interi separati da spazi,
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}] permette di
+\item[\sysctlrelfile{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
perché disabilitare globalmente il procedimento con questo parametro ha
pesanti ripercussioni in termini di prestazioni di rete.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_always\_defrag}] fa si che tutti i
+\item[\sysctlrelfile{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
precedenti questo comportamento poteva essere solo stabilito un volta per
\itindex{netfilter} \textit{netfilter}, e questo parametro non è più
presente.
-\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_high\_thresh}] indica il limite
+\item[\sysctlrelfile{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}. Prende un valore intero.
-\item[\procrelfile{/proc/sys/net/ipv4}{ipfrag\_low\_thresh}] soglia bassa
+\item[\sysctlrelfile{net/ipv4}{ipfrag\_low\_thresh}] soglia bassa
(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 rende
+\item[\sysctlrelfile{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.
pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti:
\begin{basedescript}{\desclabelwidth{2.2cm}\desclabelstyle{\nextlinelabel}}
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_abort\_on\_overflow}] indica al
+\item[\sysctlrelfile{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
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
+\item[\sysctlrelfile{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
+ con \sysctlrelfile{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
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}] indica la frazione
+\item[\sysctlrelfile{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}
% \item[\texttt{tcp\_bic\_low\_window}]
% \item[\texttt{tcp\_bic\_fast\_convergence}]
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_dsack}] abilita il supporto,
+\item[\sysctlrelfile{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
% mettere riferimento nelle appendici
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_ecn}] abilita il meccanismo della
+\item[\sysctlrelfile{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} \itindex{Explicit~Congestion~Notification} è un
% mettere riferimento nelle appendici
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_fack}] abilita il supporto per il
+\item[\sysctlrelfile{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
+\item[\sysctlrelfile{net/ipv4}{tcp\_fin\_timeout}] specifica il numero
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
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
+\item[\sysctlrelfile{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}] indica il
+\item[\sysctlrelfile{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}] indica il
+\item[\sysctlrelfile{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. Prende un valore intero che di default è 9.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_keepalive\_time}] indica il numero
+\item[\sysctlrelfile{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 è
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
+\item[\sysctlrelfile{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
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
+\item[\sysctlrelfile{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
% TODO verificare la spiegazione di connessione orfana.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_max\_syn\_backlog}] indica la
+\item[\sysctlrelfile{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
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
+\item[\sysctlrelfile{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
prevenire alcuni semplici attacchi di \textit{denial of service}.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_mem}] viene usato dallo stack TCP
+\item[\sysctlrelfile{net/ipv4}{tcp\_mem}] viene usato dallo stack TCP
per gestire le modalità con cui esso utilizzerà la memoria. Prende una
tripletta di valori interi, che indicano un numero di pagine:
ogni altro valore specificato dagli altri limiti del kernel.
\end{itemize*}
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_orphan\_retries}] indica il numero
+\item[\sysctlrelfile{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. Prende un valore
intero che di default è 8.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_reordering}] indica il numero
+\item[\sysctlrelfile{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{sec:tcp_protocol_xxx}) viene usata
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
+\item[\sysctlrelfile{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
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
+\item[\sysctlrelfile{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
aggiornamento della rotta verso la destinazione prima di eseguire ogni
successiva ritrasmissione. Prende un valore intero che di default è 3.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_retries2}] imposta il numero di
+\item[\sysctlrelfile{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}). Prende un
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}] indica al kernel di
+\item[\sysctlrelfile{net/ipv4}{tcp\_rfc1337}] indica al 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
immediatamente senza attendere la conclusione del periodo di
\texttt{TIME\_WAIT}.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}] viene usato dallo stack TCP
+\item[\sysctlrelfile{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:
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\_rmem}) le allocazioni al di sotto di
+ \sysctlrelfile{net/ipv4}{tcp\_rmem}) le allocazioni al di sotto di
questo limite abbiamo comunque successo. Questo valore non viene comunque
ad incidere sulla dimensione del buffer di ricezione di un singolo socket
dichiarata con l'opzione \const{SO\_RCVBUF}.
\item il secondo valore, denominato \textit{default} nelle pagine di
manuale, indica la dimensione di default, in byte, del buffer di ricezione
di un socket TCP. Questo valore sovrascrive il default iniziale impostato
- per tutti i socket con \procfile{/proc/sys/net/core/mem\_default} che vale
+ per tutti i socket con \sysctlfile{net/core/mem\_default} che vale
per qualunque protocollo. Il default è 87380 byte, ridotto a 43689 per
sistemi con poca memoria. Se si desiderano dimensioni più ampie per tutti
i socket si può aumentare questo valore, ma se si vuole che in
corrispondenza aumentino anche le dimensioni usate per la finestra TCP si
deve abilitare il \itindex{TCP~window~scaling} \textit{TCP window scaling}
(di default è abilitato, vedi più avanti
- \procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}).
+ \sysctlrelfile{net/ipv4}{tcp\_window\_scaling}).
\item il terzo valore, denominato \textit{max} nelle pagine di manuale,
indica la dimensione massima in byte del buffer di ricezione di un socket
TCP; il default è 174760 byte, che viene ridotto automaticamente a 87380
per sistemi con poca memoria. Il valore non può comunque eccedere il
limite generale per tutti i socket posto con
- \procfile{/proc/sys/net/core/rmem\_max}. Questo valore non viene ad
+ \sysctlfile{net/core/rmem\_max}. Questo valore non viene ad
incidere sulla dimensione del buffer di ricezione di un singolo socket
dichiarata con l'opzione \const{SO\_RCVBUF}.
\end{itemize}
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_sack}] indica al kernel di
+\item[\sysctlrelfile{net/ipv4}{tcp\_sack}] indica al kernel di
utilizzare il meccanismo del \textit{TCP selective acknowledgement} definito
nell'\href{http://www.ietf.org/rfc/rfc2018.txt}{RFC~2018}. Prende un valore
logico e di default è abilitato.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_stdurg}] indica al kernel di
+\item[\sysctlrelfile{net/ipv4}{tcp\_stdurg}] indica al kernel di
utilizzare l'interpretazione che viene data
dall'\href{http://www.ietf.org/rfc/rfc1122.txt}{RFC~1122} del puntatore dei
\textit{dati urgenti} (vedi sez.~\ref{sec:TCP_urgent_data}) in cui questo
Prende un valore logico e di default è disabilitato, perché abilitarlo può
dar luogo a problemi di interoperabilità.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_synack\_retries}] indica il numero
+\item[\sysctlrelfile{net/ipv4}{tcp\_synack\_retries}] indica il numero
massimo di volte che verrà ritrasmesso il segmento SYN/ACK nella creazione di
una connessione (vedi sez.~\ref{sec:TCP_conn_cre}). Prende un valore intero
ed il valore di default è 5; non si deve superare il valore massimo di 255.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syncookies}] abilita i \textit{TCP
+\item[\sysctlrelfile{net/ipv4}{tcp\_syncookies}] abilita i \textit{TCP
syncookies}.\footnote{per poter usare questa funzionalità è necessario
avere abilitato l'opzione \texttt{CONFIG\_SYN\_COOKIES} nella compilazione
del kernel.} Prende un valore logico, e di default è disabilitato. Questa
con altre funzionalità come le estensioni e può causare problemi per i
client ed il reinoltro dei pacchetti.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syn\_retries}] imposta il numero
+\item[\sysctlrelfile{net/ipv4}{tcp\_syn\_retries}] imposta il numero
di tentativi 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}). Prende un valore
intero che di default è 5; non si deve superare il valore massimo di 255.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_timestamps}] abilita l'uso dei
+\item[\sysctlrelfile{net/ipv4}{tcp\_timestamps}] abilita l'uso dei
\textit{TCP timestamps}, come definiti
nell'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}. Prende un valore
logico e di default è abilitato.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_recycle}] abilita il
+\item[\sysctlrelfile{net/ipv4}{tcp\_tw\_recycle}] abilita il
riutilizzo rapido dei socket in stato \texttt{TIME\_WAIT}. Prende un valore
logico e di default è disabilitato. Non è opportuno abilitare questa opzione
che può causare problemi con il NAT.\footnote{il \textit{Network Address
\textit{netfilter}, per maggiori dettagli si consulti il cap.~2 di
\cite{FwGL}.}
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo
+\item[\sysctlrelfile{net/ipv4}{tcp\_tw\_reuse}] abilita il riutilizzo
dello stato \texttt{TIME\_WAIT} quando questo è sicuro dal punto di vista
del protocollo. Prende un valore logico e di default è disabilitato.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}] un valore
+\item[\sysctlrelfile{net/ipv4}{tcp\_window\_scaling}] un valore
logico, attivo di default, che abilita la funzionalità del
\itindex{TCP~window~scaling} \textit{TCP window scaling} definita
dall'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}. Prende un valore
\itindex{TCP~window~scaling} \textit{TCP window scaling} con l'altro capo
della connessione non viene effettuata.
-%\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_vegas\_cong\_avoid}]
+%\item[\sysctlrelfile{net/ipv4}{tcp\_vegas\_cong\_avoid}]
% TODO: controllare su internet
-%\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_westwood}]
+%\item[\sysctlrelfile{net/ipv4}{tcp\_westwood}]
% TODO: controllare su internet
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_wmem}] viene usato dallo stack TCP
+\item[\sysctlrelfile{net/ipv4}{tcp\_wmem}] viene usato dallo stack TCP
per controllare dinamicamente le dimensioni dei propri buffer di spedizione,
adeguandole in rapporto alla memoria disponibile. Prende una tripletta di
valori interi separati da spazi che indicano delle dimensioni in byte:
\begin{itemize}
\item il primo valore, chiamato \textit{min}, indica la dimensione minima in
byte del buffer di spedizione; il default è 4Kb. Come per l'analogo di
- \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}) viene usato per assicurare
+ \sysctlrelfile{net/ipv4}{tcp\_rmem}) viene usato per assicurare
che anche in situazioni di pressione sulla memoria (vedi
- \procrelfile{/proc/sys/net/ipv4}{tcp\_mem}) le allocazioni al di sotto di
+ \sysctlrelfile{net/ipv4}{tcp\_mem}) le allocazioni al di sotto di
questo limite abbiamo comunque successo. Di nuovo questo valore non viene
ad incidere sulla dimensione del buffer di trasmissione di un singolo
socket dichiarata con l'opzione \const{SO\_SNDBUF}.
\item il secondo valore, denominato \textit{default}, indica la dimensione
di default in byte del buffer di spedizione di un socket TCP. Questo
valore sovrascrive il default iniziale impostato per tutti i tipi di
- socket con \procfile{/proc/sys/net/core/wmem\_default}. Il default è 87380
+ socket con \sysctlfile{net/core/wmem\_default}. Il default è 87380
byte, ridotto a 43689 per sistemi con poca memoria. Si può aumentare
questo valore quando si desiderano dimensioni più ampie del buffer di
trasmissione per i socket TCP, ma come per il precedente
- \procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}) se si vuole che in
+ \sysctlrelfile{net/ipv4}{tcp\_rmem}) se si vuole che in
corrispondenza aumentino anche le dimensioni usate per la finestra TCP si
deve abilitare il \itindex{TCP~window~scaling} \textit{TCP window scaling}
- con \procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}.
+ con \sysctlrelfile{net/ipv4}{tcp\_window\_scaling}.
\item il terzo valore, denominato \textit{max}, indica la dimensione massima
in byte del buffer di spedizione di un socket TCP; il default è 128Kb, che
viene ridotto automaticamente a 64Kb per sistemi con poca memoria. Il
valore non può comunque eccedere il limite generale per tutti i socket
- posto con \procfile{/proc/sys/net/core/wmem\_max}. Questo valore non viene
+ posto con \sysctlfile{net/core/wmem\_max}. Questo valore non viene
ad incidere sulla dimensione del buffer di trasmissione di un singolo
socket dichiarata con l'opzione \const{SO\_SNDBUF}.
\end{itemize}