Un po' di materiale sulle sysctl dei socket, e qualche correzione sulle
authorSimone Piccardi <piccardi@gnulinux.it>
Sun, 26 Feb 2006 20:02:20 +0000 (20:02 +0000)
committerSimone Piccardi <piccardi@gnulinux.it>
Sun, 26 Feb 2006 20:02:20 +0000 (20:02 +0000)
indicizzazioni.

ipc.tex
prochand.tex
sockctrl.tex

diff --git a/ipc.tex b/ipc.tex
index 135bed7e51593ef210559a8fc124e678a8607170..58b80777a58d507b2e5b0d9ac97d644b43244622 100644 (file)
--- a/ipc.tex
+++ b/ipc.tex
@@ -1693,7 +1693,7 @@ indirizzato a lui.
 I semafori non sono meccanismi di intercomunicazione diretta come quelli
 (pipe, fifo e code di messaggi) visti finora, e non consentono di scambiare
 dati fra processi, ma servono piuttosto come meccanismi di sincronizzazione o
-di protezione per le \textsl{sezioni critiche}\index{sezioni~critiche} del
+di protezione per le \textsl{sezioni critiche} \index{sezione~critica} del
 codice (si ricordi quanto detto in sez.~\ref{sec:proc_race_cond}). 
 
 Un semaforo è uno speciale contatore, mantenuto nel kernel, che permette, a
index c92f737f780c1f6e1eb6c8070d35d1722e3b77ce..77fde66866240282070bde592145adfcec005bf4 100644 (file)
@@ -3231,7 +3231,7 @@ file, o nell'accesso a meccanismi di intercomunicazione come la memoria
 condivisa. In questi casi, se non si dispone della possibilità di eseguire
 atomicamente le operazioni necessarie, occorre che quelle parti di codice in
 cui si compiono le operazioni sulle risorse condivise (le cosiddette
-\textsl{sezioni critiche}\index{sezioni~critiche}) del programma, siano
+\textsl{sezioni critiche}\index{sezione~critica}) del programma, siano
 opportunamente protette da meccanismi di sincronizzazione (torneremo su queste
 problematiche di questo tipo in cap.~\ref{cha:IPC}).
 
index 8abb56af36ffc510f5e164a8ae03dcf06364a08c..38722cdb269fe98e8cf069d5f9d5dba962cc546b 100644 (file)
@@ -2817,9 +2817,10 @@ ottenibile rispettivamente dai campi \var{ipi\_addr} e \var{ipi\_ifindex} di
 
 
 \item[\const{IP\_TTL}] L'opzione consente di leggere o impostare il campo
-  \textit{Time to Live} dell'intestazione IP (vedi sez.~\ref{sec:IP_header}).
-  Il campo TTL è di 8 bit e l'opzione richiede che \param{optval} sia un
-  intero, che ne conterrà il valore.
+  \textit{Time to Live} dell'intestazione IP (vedi sez.~\ref{sec:IP_header})
+  per tutti i pacchetti associati al socket.  Il campo TTL è di 8 bit e
+  l'opzione richiede che \param{optval} sia un intero, che ne conterrà il
+  valore.
 
 
 \item[\const{IP\_HDRINCL}] Se abilitata l'utente deve fornire lui stesso
@@ -2936,20 +2937,50 @@ classiche per il controllo delle propriet
 \func{ioctl}. 
 
 
-\subsection{L'uso di \func{fcntl} per i socket}
-\label{sec:sock_fcntl}
+\subsection{L'uso di \func{ioctl} per i socket}
+\label{sec:sock_ioctl}
 
-Abbiamo già trattato l'uso di \func{fcntl} in sez.~\ref{sec:file_fcntl}, dove
+Abbiamo già trattato l'uso di \func{ioctl} in sez.~\ref{sec:file_ioctl}, dove
 però ne abbiamo descritto le funzionalità nell'ambito della sua applicazione a
 file descriptor associati a file normali; tratteremo qui invece il suo uso
 specifico quando la si impiega su file descriptor associati a dei socket. 
 
+Quanto utilizzata con socket generici i valori utilizzabili per il secondo
+argomento della funzione (\param{request}, che indica il tipo di operazione
+richiesta) sono quelli riportati nel seguente elenco, il terzo argomento della
+funzione (quello usato per inviare o ricevere i dati) dipende dalla richiesta
+effettuata, ed è anch'esso illustrato nell'elenco in corrispondenza alla
+relativa richiesta:
+\begin{basedescript}{\desclabelwidth{2.5cm}\desclabelstyle{\nextlinelabel}}
+\item[\const{SIOCGSTAMP}] restituisce una struttura \struct{timeval} con la
+  marca temporale dell'ultimo pacchetto ricevuto sul socket, questa operazione
+  può essere utilizzata per effettuare delle misurazioni precise del tempo di
+  andata e ritorno\footnote{il cosiddetto \itindex{round~trip~time}
+    \textit{round trip time}.} 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
+  arrivano dei dati urgenti. Il terzo argomento deve essere un puntatore ad una
+  variabile di tipo \type{pid\_t}; un valore positivo indica direttamente il
+  \acr{pid} del processo, mentre un valore negativo indica (col valore
+  assoluto) il \textit{process group}. Senxa privilegi di amministratore o la
+  capability \const{CAP\_KILL} si può impostare solo se stessi o il proprio
+  \textit{process group}.
+
+\item[\const{FIOASYNC}] .
+
+
+\item[\const{SIOCGPGRP}] .
+
+\end{basedescript}
 
-\subsection{L'uso di \func{ioctl} per i socket}
-\label{sec:sock_ioctl}
 
-Come per \func{fcntl} abbiamo trattato l'uso di \func{ioctl} in
-sez.~\ref{sec:file_ioctl}, dove ne abbiamo descritto le funzionalità
+\subsection{L'uso di \func{fcntl} per i socket}
+\label{sec:sock_fcntl}
+
+Come per \func{ioctl} abbiamo trattato l'uso di \func{fcntl} in
+sez.~\ref{sec:file_fcntl}, dove ne abbiamo descritto le funzionalità
 nell'ambito dell'applicazione su file normali; tratteremo qui il suo uso
 specifico quando la si impiega su file descriptor associati a dei socket. 
 
@@ -2992,7 +3023,7 @@ 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}}
+\begin{basedescript}{\desclabelwidth{3.2cm}\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
@@ -3003,20 +3034,75 @@ I principali sono:
 \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}] 
-\item[\texttt{message\_burst}] 
-\item[\texttt{netdev\_max\_backlog}] 
-\item[\texttt{optmem\_max}] 
+\item[\texttt{message\_cost}, \texttt{message\_burst}] impostano i valori
+  delle impostazioni del \itindex{bucket~filter} \textit{bucket filter}
+  (rispettivamente flusso a regime e dimensione di picchi di emissione) che
+  limita l'ammontare dei messaggi di avvertimento inviati dal kernel a causa
+  di eventi esterni sulla rete.
+% TODO: spiegare il ucket filter e questa opzione
+\item[\texttt{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:TCP_ancillary_data}).
 \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}}
+\begin{basedescript}{\desclabelwidth{3.2cm}\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. Il valore può
+  essere modificato per il singolo socket con l'opzione
+  \const{IP\_TTL}. Prende un valore intero.
+
+\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}] non documentato
+
+\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 discliplina di ricerca della
   \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
+  \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{}] 
+
+
 \end{basedescript}