X-Git-Url: https://gapil.gnulinux.it/gitweb/?a=blobdiff_plain;f=sockctrl.tex;h=f69597ffc504d8912d1662a3ebe1582c2fa23a46;hb=bf30b22885daaa31ef38bec56eccfb7bf33f5bd1;hp=a1490ade0640bf06b4e330eca2fed241ead24a3e;hpb=b8a79028184003289dc1c92fdcfab416b130ce20;p=gapil.git diff --git a/sockctrl.tex b/sockctrl.tex index a1490ad..f69597f 100644 --- a/sockctrl.tex +++ b/sockctrl.tex @@ -2777,7 +2777,7 @@ seguente elenco: particolare è possibile conoscere l'interfaccia su cui è stato ricevuto un pacchetto (nel campo \var{ipi\_ifindex}),\footnote{in questo campo viene restituito il valore numerico dell'indice dell'interfaccia, - sec.~\ref{sec:sock_ioctl_netdevice}.} l'indirizzo locale da esso + sez.~\ref{sec:sock_ioctl_netdevice}.} l'indirizzo locale da esso utilizzato (nel campo \var{ipi\_spec\_dst}) e l'indirizzo remoto dello stesso (nel campo \var{ipi\_addr}). @@ -3770,7 +3770,7 @@ fig.~\ref{fig:netdevice_ifconf_struct}. \end{figure} Per eseguire questa operazione occorrerà allocare preventivamente un buffer di -contentente un vettore di strutture \struct{ifreq}. La dimensione (in byte) di +contenente un vettore di strutture \struct{ifreq}. La dimensione (in byte) di questo buffer deve essere specificata nel campo \var{ifc\_len} di \struct{ifconf}, mentre il suo indirizzo andrà specificato nel campo \var{ifc\_req}. Qualora il buffer sia stato allocato come una stringa, il suo @@ -3812,7 +3812,7 @@ ottenere una lista delle interfacce attive e dei relativi indirizzi. Al solito il codice completo è fornito nei sorgenti allegati alla guida. Il programma inizia (\texttt{\small 7--11}) con la creazione del socket -necessario ad eseguire l'operazone, dopo di che si inizializzano +necessario ad eseguire l'operazione, dopo di che si inizializzano opportunamente (\texttt{\small 13--14}) i valori della struttura \struct{ifconf} indicando la dimensione del buffer ed il suo indirizzo;\footnote{si noti come in questo caso si sia specificato l'indirizzo @@ -4021,7 +4021,9 @@ 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. % TODO da documentare meglio + 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. @@ -4061,9 +4063,17 @@ 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. Il valore può - essere modificato per il singolo socket con l'opzione \const{IP\_TTL}. - Prende un valore intero. + (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 @@ -4125,13 +4135,41 @@ I file di \texttt{/proc/sys/net/ipv4} che invece fanno riferimento alle 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}] -\item[\texttt{tcp\_adv\_win\_scale}] + +\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}] questo valore indica al kernel quanto + spazio all'interno del buffer associato a un socket (quello impostato con + \texttt{tcp\_rmem}) deve essere utilizzato per la + \item[\texttt{tcp\_app\_win}] + +\item[\texttt{tcp\_bic}] \item[\texttt{tcp\_bic\_low\_window}] \item[\texttt{tcp\_bic\_fast\_convergence}] -\item[\texttt{tcp\_dsack}] -\item[\texttt{tcp\_ecn}] + +\item[\texttt{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 + 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 destizione, dovuti al fatto che + alcuni vecchi router non supportano il meccanismo ed alla sua attivazione + scartano i relativi pacchetti.\\ + \item[\texttt{tcp\_fack}] \item[\texttt{tcp\_fin\_timeout}] specifica il numero di secondi (il default è @@ -4173,16 +4211,29 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: \item[\texttt{tcp\_orphan\_retries}] \item[\texttt{tcp\_reordering}] \item[\texttt{tcp\_retrans\_collapse}] -\item[\texttt{tcp\_retries1}] + +\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[\texttt{tcp\_retries2}] imposta il numero di tentativi di ritrasmissione - (il default è 15) 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}). + 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[\texttt{tcp\_rmem}] + +\item[\texttt{tcp\_rmem}] + + \item[\texttt{tcp\_sack}] \item[\texttt{tcp\_stdurg}] \item[\texttt{tcp\_synack\_retries}] @@ -4198,6 +4249,8 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: \item[\texttt{tcp\_tw\_recycle}] \item[\texttt{tcp\_tw\_reuse}] \item[\texttt{tcp\_window\_scaling}] + + \item[\texttt{tcp\_vegas\_cong\_avoid}] \item[\texttt{tcp\_westwood}] \item[\texttt{tcp\_wmem}] @@ -4277,7 +4330,7 @@ pagina di manuale (accessibile con \texttt{man 7 tcp}), sono i seguenti: % LocalWords: metric EOPNOTSUPP mtu hwaddr ARPHRD interrupt DMA map qlen silly % LocalWords: rename ifconf syndrome dell'ACK FTP ACCEPTFILTER advanced reno % LocalWords: congestion control Networking cubic CUBIC highspeed HSTCP htcp -% LocalWords: HTCP hybla HYBLA scalable SCALABLE +% LocalWords: HTCP hybla HYBLA scalable SCALABLE ifc req iflist access ntoa %%% Local Variables: %%% mode: latex