usualmente utilizzata per ricevere il codice di errore, come accennato in
sez.~\ref{sec:TCP_sock_select}, quando si sta osservando il socket con una
\func{select} che ritorna a causa dello stesso.
-\end{basedescript}
+
+\item[\const{SO\_ATTACH\_FILTER}] questa opzione permette di agganciare ad un
+ socket un filtro di pacchetti che consente di selezionare quali pacchetti,
+ fra tutti quelli ricevuti, verranno letti. Viene usato pincipalmente con i
+ socket di tipo \const{PF\_PACKET} con la libreria \texttt{libpcap} per
+ implementare programmi di cattura dei pacchetti, torneremo su questo in
+ sez.~\ref{sec:packet_socket}.
+
+\item[\const{SO\_DETACH\_FILTER}] consente di distaccare un filtro
+ precedentemente aggiunto ad un socket.
% TODO documentare SO_ATTACH_FILTER e SO_DETACH_FILTER
+% riferimenti http://www.rcpt.to/lsfcc/lsf.html
+% Documentation/networking/filter.txt
+
+
+\end{basedescript}
\subsection{L'uso delle principali opzioni dei socket}
ricerca è disabilitata ed è responsabilità del programma creare pacchetti di
dimensioni appropriate e ritrasmettere eventuali pacchetti persi. Se
l'opzione viene abilitata, il kernel si incaricherà di tenere traccia
- automaticamente della \textit{Path MTU} verso ciascuna destinazione, e
- rifiuterà immediatamente la trasmissione di pacchetti di dimensioni maggiori
- della MTU con un errore di \errval{EMSGSIZE}.\footnote{in caso contrario la
- trasmissione del pacchetto sarebbe effettuata, ottenendo o un fallimento
- successivo della trasmissione, o la frammentazione dello stesso.}
+ automaticamente della \itindex{Maximum~Transfer~Unit} \textit{Path MTU}
+ verso ciascuna destinazione, e rifiuterà immediatamente la trasmissione di
+ pacchetti di dimensioni maggiori della MTU con un errore di
+ \errval{EMSGSIZE}.\footnote{in caso contrario la trasmissione del pacchetto
+ sarebbe effettuata, ottenendo o un fallimento successivo della
+ trasmissione, o la frammentazione dello stesso.}
\item[\const{IP\_MTU}] Permette di leggere il valore della \textit{Path MTU}
di percorso del socket. L'opzione richiede per \param{optval} un intero che
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.
-
+ valore di default è 64, e normalmente non c'è nessuna necessità di
+ modificarlo.\footnote{l'unico motivo sarebbe per raggiungere macchine
+ estremamente ``{lontane}'' in termini di \textit{hop}, ma è praticamente
+ impossible trovarne.} 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\_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).
+ zero abilita), di default è disabilitato.
-\item[\procrelfile{/proc/sys/net/ipv4}{ip\_dynaddr}] Abilita la riscrittura
+\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}.
+ può essere modificato. Prende un valore intero, con 0 si disabilita la
+ funzionalità, con 1 la si abilita, con 2 (o con qualunque altro valore
+ 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
- l'indirizzo IP è stato configurato automaticamente via DHCP, BOOTP o RARP.
+\item[\procrelfile{/proc/sys/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
l'intervallo dei valori usati per l'assegnazione delle porte effimere,
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[\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
+ 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
+ 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
+ stessa MTU.} mal configurate è opportuno correggere le configurazioni,
+ 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
+ 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
+ tutte in fase di compilazione del kernel con l'opzione
+ \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}.
\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
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
+\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
% \item[\texttt{tcp\_bic\_low\_window}]
% \item[\texttt{tcp\_bic\_fast\_convergence}]
-\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
+\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
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.}
+ che consente di diminuire il numero di pacchetti scambiati.} Di default è
+ abilitato.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_ecn}] Abilita il meccanismo della
- \textit{Explicit Congestion Notification} (in breve ECN) nelle connessioni
- TCP. Questo è un meccanismo (è descritto in dettaglio
+\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
-
+ diminuire l'emissione di pacchetti (in modo da non aumentare la
+ congestione). Di default è disabilitato.
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.\\
+ alla sua attivazione e scartano i relativi pacchetti, bloccando
+ completamente il traffico.\\
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_fack}] è un valore logico che
abilita il supporto per il \textit{TCP Forward Acknowledgement}, un
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_rmem}]
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_sack}]
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_sack}] un valore logico che indica
+ al kernel di utilizzare il meccanismo del \textit{TCP selective
+ aknowledment} definito
+ nell'\href{http://www.ietf.org/rfc/rfc2018.txt}{RFC~2018}; di default è
+ abilitato.
+
\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[\procrelfile{/proc/sys/net/ipv4}{tcp\_synack\_retries}] un valore intero
+ che indica il numero massimo di volte che verrà ritasmesso il segmento
+ SYN/ACK nella creazione di una connessione (vedi
+ sez.~\ref{sec:TCP_conn_cre}). Il valore di default è 5, e non si deve
+ superare il valore massimo di 255.
+
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syncookies}] un valore logico
+ che abilita i \textit{TCP syncookies},\footnote{per poter usare quasta
+ funzionalità è necessario avere abilitato l'opzione
+ \texttt{CONFIG\_SYN\_COOKIES} nella compilazione del kernel.} di default è
+ disabilitato.
\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_syn\_retries}] imposta il numero
di tentativi (il default è 5) di ritrasmissione dei pacchetti SYN di inizio
(si ricordi quanto illustrato in sez.~\ref{sec:TCP_func_connect}). Il valore
non deve superare 255.
-\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_timestamps}]
+\item[\procrelfile{/proc/sys/net/ipv4}{tcp\_timestamps}] un valore logico che
+ attiva l'uso dei \textit{TCP timestamps}, definiti
+ nell'\href{http://www.ietf.org/rfc/rfc1323.txt}{RFC~1323}. Di default è
+ abilitato.
+
\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[\procrelfile{/proc/sys/net/ipv4}{tcp\_window\_scaling}]
\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