Qualche nota sulle opzioni dei socket IPv4 e sulle sysctl
[gapil.git] / sockctrl.tex
index fe1a12c099dac0486cfac3bededeef6147e6ca82..5d978e04436e168c60722e62202c298271fdbe50 100644 (file)
@@ -40,7 +40,7 @@ La risoluzione dei nomi 
 internet invece che per numero IP attraverso il relativo \textsl{nome a
   dominio}.\footnote{non staremo ad entrare nei dettagli della definizione di
   cosa è un nome a dominio, dandolo per noto, una introduzione alla
-  problematica si trova in \cite{AGL} (cap. 9) mentre per una trattazione
+  problematica si trova in \cite{AGL} (cap.~9) mentre per una trattazione
   approfondita di tutte le problematiche relative al DNS si può fare
   riferimento a \cite{DNSbind}.} In realtà per DNS si intendono spesso i
 server che forniscono su internet questo servizio, mentre nel nostro caso
@@ -147,7 +147,7 @@ tab.~\ref{tab:sys_NSS_classes}.
                        (\acr{uid}, ecc.).\\  
     \texttt{group}    & corrispondenze fra nome del gruppo e proprietà dello 
                         stesso.\\  
-    \texttt{aliases}  & alias per la posta elettronica\\ 
+    \texttt{aliases}  & alias per la posta elettronica.\\ 
     \texttt{ethers}   & corrispondenze fra numero IP e MAC address della
                         scheda di rete.\\ 
     \texttt{hosts}    & corrispondenze fra nome a dominio e numero IP.\\ 
@@ -2804,10 +2804,12 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di
   pacchetti.  Il campo TOS è di 8 bit e l'opzione richiede per \param{optval}
   un intero che ne contiene il valore. Sono definite anche alcune costanti che
   definiscono alcuni valori standardizzati per il \textit{Type of Service},
-  riportate in tab.~\ref{tab:IP_TOS_values}. Si ricordi che la priorità dei
-  pacchetti può essere impostata anche in maniera indipendente dal protocollo
-  utilizzando l'opzione \const{SO\_PRIORITY} illustrata in
-  sez.~\ref{sec:sock_generic_options}. 
+  riportate in tab.~\ref{tab:IP_TOS_values}, il valore di default usato da
+  Linux è \const{IPTOS\_LOWDELAY}, ma esso può essere modificato con le
+  funzionalità del cosiddetto \textit{Advanced Routing}. Si ricordi che la
+  priorità dei pacchetti può essere impostata anche in maniera indipendente
+  dal protocollo utilizzando l'opzione \const{SO\_PRIORITY} illustrata in
+  sez.~\ref{sec:sock_generic_options}.
 
 
 \item[\const{IP\_TTL}] L'opzione consente di leggere o impostare il campo
@@ -2826,16 +2828,24 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di
 
 
 \item[\const{IP\_RECVERR}] Questa è una opzione introdotta con i kernel della
-  serie 2.2.x, ed è specifica di Linux.
+  serie 2.2.x, ed è specifica di Linux. Essa permette di usufruire di un
+  meccanismo affidabile per ottenere un maggior numero di informazioni in caso
+  di errori. Se l'opzione è abilitata tutti gli errori generati su un socket
+  vengono memorizzati su una coda, dalla quale poi possono essere letti con
+  \func{recvmsg} (torneremo su questo in sez.~\ref{sec:TCP_ancillary_data}).
+  L'opzione richiede per \param{optval} un intero usato come valore logico;
+  l'opzione non è applicabile a socket di tipo \const{SOCK\_STREAM}.
 
 \item[\const{IP\_MTU\_DISCOVER}] Questa è una opzione introdotta con i kernel
-  della serie 2.2.x, ed è specifica di Linux.
+  della serie 2.2.x, ed è specifica di Linux.  L'opzione permette di scrivere
+  o leggere le impostazioni usante nella determinazione della \textit{Maximum
+    Tranfer Unit} (vedi sez.~\ref{sec:net_lim_dim}) per il socket.
 
 \item[\const{IP\_MTU}] Permette di leggere il valore della \textit{Maximum
-    Tranfer Unit} di percorso (vedi sez.~\ref{sec:net_lim_dim}) del socket.
-  L'opzione richiede per \param{optval} un intero che conterrà il valore della
-  MTU in byte.  Questa è una opzione introdotta con i kernel della serie
-  2.2.x, ed è specifica di Linux.
+    Tranfer Unit} di percorso del socket.  L'opzione richiede per
+  \param{optval} un intero che conterrà il valore della MTU in byte.  Questa è
+  una opzione introdotta con i kernel della serie 2.2.x, ed è specifica di
+  Linux.
 
 \item[\const{IP\_ROUTER\_ALERT}] Questa è una opzione introdotta con i kernel
   della serie 2.2.x, ed è specifica di Linux.
@@ -2906,10 +2916,11 @@ specifico quando la si impiega su file descriptor associati a dei socket.
 Come ultimo argomento di questa sezione tratteremo l'uso della funzione
 \func{sysctl} (che è stata introdotta nelle sue funzionalità generiche in
 sez.~\ref{sec:sys_sysctl}) per quanto riguarda le sue capacità di effettuare
-impostazioni relative a proprietà generali dei socket (di tutti quelli di un
-certo tipo o di tutti quelli che usano un certo protocollo) rispetto alle
-funzioni viste finora che consentono di controllare quelle di un singolo
-socket. 
+impostazioni relative alle proprietà dei socket. La differenza nell'uso di
+\func{sysctl} rispetto alle funzioni viste finora è che esse consentono di
+controllare le proprietà di un singolo socket, mentre con \func{sysctl} si
+impostano proprietà (o valori di default) validi a livello dell'intero
+sistema.
 
 Le opzioni disponibili per le proprietà della rete sono riportate nella
 gerarchia dei valori impostabili con \func{sysctl}, sotto il nodo
@@ -2917,7 +2928,8 @@ gerarchia dei valori impostabili con \func{sysctl}, sotto il nodo
 \texttt{/proc}, sotto \texttt{/proc/sys/net}. In genere sotto questa directory
 compaiono le sottodirectory (corrispondenti ad altrettanti sottonodi per
 \func{sysctl}) relative ai vari protocolli e tipi di interfacce su cui è
-possibile intervenire; un contenuto tipico è il seguente:
+possibile intervenire per effettuare impostazioni; un contenuto tipico di
+questa directory è il seguente:
 \begin{verbatim}
 /proc/sys/net/
 |-- core
@@ -2928,11 +2940,13 @@ possibile intervenire; un contenuto tipico 
 |-- token-ring
 `-- unix
 \end{verbatim}
+e sono presenti varie centinaia di diversi parametri; nel nostro caso ci
+limiteremo a vedere quelli più significativi.
 
-
-Nella directory \texttt{/proc/sys/net/core} sono disponibili le opzioni
-generiche dei socket, descritte anche nella rispettiva pagina di
-manuale.\footnote{quella accessibile con \texttt{man 7 socket}.} Queste sono:
+Nella directory \texttt{/proc/sys/net/core} sono disponibili i parametri
+generici validi per tutti i socket, quelli descritti anche nella rispettiva
+pagina di manuale.\footnote{quella accessibile con \texttt{man 7 socket}.}
+I principali sono:
 
 \begin{basedescript}{\desclabelwidth{3cm}\desclabelstyle{\nextlinelabel}}
 \item[\texttt{rmem\_default}] imposta la dimensione di default del buffer di
@@ -2951,6 +2965,17 @@ manuale.\footnote{quella accessibile con \texttt{man 7 socket}.} Queste sono:
 \item[\texttt{optmem\_max}] 
 \end{basedescript}
 
+Nella directory \texttt{/proc/sys/net/ipv4} sono disponibili i parametri per i
+socket IPv4, descritti anche nella rispettiva pagina di
+manuale.\footnote{quella accessibile con \texttt{man 7 ip}.} I principali
+sono:
+\begin{basedescript}{\desclabelwidth{3cm}\desclabelstyle{\nextlinelabel}}
+\item[\texttt{ip_no_pmtu_disc}] imposta la discliplina di ricerca della
+  \textit{Path MTU} (vedi sez.~\ref{sec:net_lim_dim} e
+  sez.~\ref{sec:sock_ipv4_options}).
+\end{basedescript}
+
+
 
 %%% Local Variables: 
 %%% mode: latex