Newsgroup: it.comp.os.linux.sys
Titolo: Cambiare TCP window

Buonasera a tutti, ho un piccolo problema con la mia rete: la TCP window di
32k non mi e' sufficiente.
Ho provato con il comando 'route add IP dev ETHX window nnnnnn' ma quando
specifico nnnnnn>32k il comando non va a buon fine.
Qualcuno puo' aiutarmi?
Grazie.

32k non mi e' sufficiente.
Puoi spiegare esattamente il perche`?
Per quanto mi ricordo io di come funziona TCP le dimensioni della
finestra variano dinamicamente.
-- 
ciao, | [Per rispondere togli "toglimi" dal mio indirizzo.]
Marco | * The Internet is full. Go away.  -- Joel Furr *
      | (Ri)scoprire fidonet: 
http://bbs.mi.linux.it

 finestra variano dinamicamente.
Si, perfetto, anche per quello che so io cambiano dinamicamente (ho dato da
poco l'esame di RETI II!), pero' il valore massimo viene stabilito dal
sistema: su Linux ho letto che si preferisce rimanere sotto i 32k per motivi
di compatibilita' con altri server che altrimenti avrebbero dei problemi.
Il mio problema e' che ho riscontrato gravi problemi di inefficienza sulla
mia piccola rete Wireless (sebbene le schede siano ad alta velocita'
11Mbps): penso tutto cio' sia dovuto al fatto che i tempi accesso della
tecnologia wireless siano piuttosto alti (non trovo altre spiegazioni, in
effetti ho un abbassamento di prestazioni solo durante un instradamento e
non in un link punto-punto). Cosi' vorrei provare a portare la TCP window a
qualche centinaio di KB e vedere che succede....
Spero di non essere stato troppo confuso.
Grazie per avermi risposto.
Berto

non in un link punto-punto).
Questo mi fa pensare proprio che il problema non sia nelle dimensioni
della finestra.


 finestra variano dinamicamente.
Forse fa riferimento alla "max window". Tieni presente che con una finestra 
di 32 kappa hai gia` circa 20 pacchetti non confermati a spasso per la
rete.. Se non hai una banda passante spropositata fai solo danno..
-- 
  /Kinkie
Se sulla scatola c'e` scritto "Per windows 95 e superiori", dovrebbe
funzionare sotto Linux, vero?

 Fonte?
da /linux-2.2.12-20/include/net/tcp.h:
/*
 * Never offer a window over 32767 without using window scaling. Some
 * poor stacks do signed 16bit maths!
 */
#define MAX_WINDOW 32767
#define MIN_WINDOW 2048
#define MAX_ACK_BACKLOG 2
#define MAX_DELAY_ACK 2
#define TCP_WINDOW_DIFF 2048
e anche
 /* NOTE: offering an initial window larger than 32767
  * will break some buggy TCP stacks. We try to be nice.
  * If we are not window scaling, then this truncates
  * our initial window offering to 32k. There should also
  * be a sysctl option to stop being nice.
  */
 (*rcv_wnd) = min(space, MAX_WINDOW);
 (*rcv_wscale) = 0;
 if (wscale_ok) {
  /* See RFC1323 for an explanation of the limit to 14 */
  while (space > 65535 && (*rcv_wscale) < 14) {
   space >>= 1;
   (*rcv_wscale)++;
  }
 }
 /* Set the clamp no higher than max representable value */
 (*window_clamp) = min(65535<<(*rcv_wscale),*window_clamp);
Comunque ho proprio preso una cantonata! Ho fatto qualche prova in UDP e ho
visto notato la stessa degradazione di prestazioni! (che figura :-(  )
Il fatto e' che non ho fatto nulla di sconvolgente:
           A -------- B -------- C ------- D
Da A a B ho wireless che arriva a 150KB/s. Da B a C ho wireless (tecnologia
diversa) che va a 400 KB/s. Tutto andava bene (da A a C e viceversa 150KB/s
puliti). Adesso ho aggiunto D (C - D sempre Wireless e stessa tecnologia di
B-C) e ho velocizzato parzialmente:
B-C  600KB/S (nuovo standard 11Mbps) mentre su C-D 400 KB/s (standard
vecchio compatibile con schede nuove).
Domanda da 1000$: un Pentium 200 o un Pentium II 500, con schede di rete
Ethernet 100Mbps fino a che velocita' riesce ad instradare? So che un mio
amico tesista riesce a spingere 2 schede di rete 100Mbps contemporaneamente
al massimo senza perdita di pacchetti: in effetti TX e RX ma non
instradamento.
Molte grazie per l'intervento e scusa le divagazioni :-)
Berto