fondazionebordoni / nemesys

Code for Network Measurement System Software for Monitoring of Fixed Broadband Quality of Service (QoS) Project
https://www.misurainternet.it/
GNU General Public License v3.0
7 stars 2 forks source link

problema calcolo threshold upload #18

Closed AntonioCarta closed 4 years ago

AntonioCarta commented 4 years ago

Salve, sto provando ad effettuare lo speedtest con la mia rete. Il problema che ho è una bassissima banda in upload, e ad ogni esecuzione il test viene invalidato a causa di connessioni spurie. Ho provato a far girare il programma su un'installazione pulita di Ubuntu per minimizzare le connessioni aperte ma il problema rimane.

Investigando nel codice credo di aver scovato il problema nel modo in cui viene calcolata la percentuale di connessioni spurie in testerhttpup.py:

overhead = (float(total_sent_bytes - consumer.total_read_bytes) / float(total_sent_bytes))

Questa viene poi utilizzata in executer.py nella seguente condizione:

if test.spurious >= TH_TRAFFIC:
                raise Exception('Eccessiva presenza di traffico non '
                                'legato alla misura: percentuali {}%.'.format(round(test.spurious * 100)))

(l'assegnamento test.spurious=overhead viene fatto durante la costruzione dell'oggetto)

Il problema qui è che la percentuale viene calcolata su total_bytes, che nel mio caso immagino sia un valore molto basso (stiamo parlando di circa 0.5Mb in upload). In questa situazione anche una piccola quantità di connessioni spurie è in grado di invalidare il test.

Credo che la percentuale dovrebbe dipendere invece dal valore atteso in upload, che nel caso della mia connesssione (100 Mb) dovrebbe essere molto più alto. Mi sembra un pò irragionevole che il test venga invalidato per una minima quantità di connessioni spurie (parliamo di circa 100 Kb). Notate che questo problema non si verificherebbe se la connessione fosse migliore (total_sent_bytes sarebbe molto più alto, riducendo il contributo in percentuale delle connessioni spurie).

ewedlund commented 4 years ago

Come hai giustamente potuto notare il calcolo del traffico spurio è percentuale e pertanto si adatta alla velocità di trasmissione realmente misurata dall'utente in quel momento. Non si ritiene valida una misurazione se una grossa percentuale di traffico viene effettuata non verso i server di misura.

Una cosa che si può fare è verificare che il profilo impostato sia quello corretto, in quanto il software opera degli accorgimenti per saturare tutta la banda possibile (adattamento della finestra TCP, numero di connessioni).

Tuttavia ti invito a contattare l'helpdesk di Misura Internet (canale preposto per avere altre informazioni e supporto), soprattutto nel caso in cui la banda dichiarata in upload sia 100 Mbps e quella misurata sia 0,5 Mbps.

AntonioCarta commented 4 years ago

Grazie per l'aiuto.

Ho controllato il traffico di rete con netstat ma sembra che l'unico programma che utilizza la rete sia proprio nemesys, quindi non mi è chiaro come vengano rilevate le connessioni spurie e come risolvere il problema.

Ho provato anche a contattare il supporto tecnico tramite questo form: https://www.misurainternet.it/faq/15/ ma ho ricevuto una risposta automatica da helpdesk@fub.it:

You do not have permission to communicate with RT
ewedlund commented 4 years ago

Non sono necessariamente connessioni spurie, ma traffico spurio, cioè dati che non fanno parte dei dati di scambio.

Mi dispiace molto per il problema con helpdesk, anzi ringrazio perché avevamo fatto un aggiornamento che ha creato un disservizio e ci hai aiutato a scoprirlo. Posso chiederti gentilmente di fare un nuovo tentativo a inserire la segnalazione a helpdesk? Ora dovrebbe andare a buon fine.

AntonioCarta commented 4 years ago

Ora l'helpdesk funziona correttamente.

Tuttavia se i miei test con netstat sono corretti il traffico spurio proviene da nemesys stesso e non da altri programmi esterni. Di conseguenza non ho modo di effettuare il test perchè la mia connessione è troppo lenta.

ewedlund commented 4 years ago

Usiamo il termine semplificato di "traffico spurio" per includere sia eventuali connessioni non-Nemesys, sia l'overhead del traffico normale che, in una connessione con Ethernet e TCP ad esempio, tipicamente è di poco più di 5%, mentre quando il protocollo TCP funziona male, perché ci sono perdite di pacchetti, tempi lunghi, etc, può aumentare. Quindi il traffico spurio che vedi proviene molto probabilmente dai protocolli di rete, su cui Nemesys non può influire. (se ti interessano questi argomenti puoi cercare "TCP congestion control" e troverai molte risorse interessanti)

Come dicevo prima, Nemesys utilizza il profilo dell'utente per calibrare già dall'inizio alcuni parametri TCP e limitare eventuali problemi su linee con banda limitata ed è per questo che sia importante che il profilo venga impostato correttamente.

Spero comunque che si riesca a risolvere!