Cloud with rain
.:G
G:.
0 and 1 serie, black on white
pulled card
myjsp.feelinglinux.com
ver. 1.1.9-4
Hallo, welcome to my world.
Here you can find some stuff about computer science.
<<< Enjoy your visit! >>>
0 and 1 serie, white on black

Router Netgear, aumentare la velocita' dell'ADSL

        Scritto: Giansante Gabriele, 05/10/2016      Aggiornato: 24/10/2016     

- La connessione ADSL
- Velocizzare l'ADSL configurando a mano il router
- Rendere permanenti le modifiche sul router
Attenzione che l'aggiornamento del firmware annulla comunque le modifiche.

Lo scopo principale di questo articolo e' vedere come possiamo migliorare la velocita' standard dell'ADSL (non ci si aspettino miracoli) agendo su un parametro, l'SNR (Signal to Noise Ratio). Inoltre si vedra' come rendere permanenti le modifiche effettuate sul router, senza doverle applicare nuovamente ogni volta che il router/modem ADSL viene riavviato o spento.

I router a cui si puo' applicare questo articolo sono i seguenti:
  • Netgear DGND3700
  • Netgear D6200
  • Netgear D7000
  • Altri router (Netgear e non), ma non tutto potrebbe essere applicabile come descritto qui

ATTENZIONE!!! Questa e' l'esperienza che ho avuto con alcuni dei miei router, ognuno e' libero di applicare quanto scritto in questo articolo a proprio rischio e pericolo!!!
Effettuate prima un BACKUP della configurazione, in modo che a mali estremi possiate fare un reset di fabbrica e ricaricare la configurazione!


La connessione ADSL

Per quanto possa essere veloce la nostra connessione ADSL, tutti vorremmo che fosse sempre piu' veloce.
Quando stipuliamo un contratto ADSL, lo facciamo per una determinata velocita' massima (7Mb/s, 20Mb/s, ecc.). Lasciando a parte problemi legati alla saturazione e alle varie condizioni dell'operatore che ci fornisce la connettivita', questa velocita' nella maggior parte dei casi non sara' mai raggiungibile a causa di limiti fisici.
Alcuni fattori (ma non gli unici) che possono limitare la velocita' sono i seguenti
  • Distanza con la centrale telefonica dell'operatore
  • Condizioni dell'armadio/centrale Telecom
  • Stato dei cavi telefonici esterni
  • Stato dei cavi telefonici interni
  • Hardware del router
Nel mio caso, ad esempio, ho un contratto 20Mb con banda garantita piuttosto alta, sia in upload che in download.
A causa pero' della distanza dalla centrale e dello stato dei cavi esterni, normalmente raggiungo massimo i 3.5Mbps circa in download (senza le modifiche che vedremo piu' avanti).
Modificando i parametri di connessione del router, riesco ad arrivare sui 5Mbps mantenendo una connessione ancora stabile ed utilizzabile. Non c'e' modo di ottenere di piu' proprio per limiti fisici.

Pubblicita'
Approssimativamente e senza scendere in dettagli tecnici, il nostro modem effettua una connessione, attraverso il normale doppino telefonico, ad un DSLAM (Digital Subscriber Line Access Multiplexer), apparecchio situato nella centrale telefonica che riceve dati da un gruppo di utenti e li smista verso il provider (e viceversa). All'atto della connessione da parte dell'utente, il DSLAM verifica la qualita' del segnale sulla linea e cerca di impostare il collegamento in modo tale da avere una connessione stabile ed affidabile.
Uno dei valori che caratterizzano la connessione e' l'SNR (Signal to Noise Ratio) o anche Noise Margin (margine di rumore). Rappresenta il rapporto fra la potenza del segnale utile e la potenza del rumore presente (vediamolo come segnale complessivo di disturbo che puo' sovrapporsi a quello utile). Piu' e' alto il valore del rapporto, meno il segnale viene disturbato dal rumore.
Per avere un segnale stabile ed affidabile e' necessario un SNR piu' alto possibile, questo a discapito della velocita' di connessione.
Abbassando il valore SNR si riesce a migliorare le prestazioni, ma la comunicazione rischia di deteriorarsi troppo.
Spesso si riesce ad abbassarlo manualmente fino ad un limite di 6dB o poco meno, mantenendo una conessione accettabile.
Piu' avanti agiremo proprio sull'SNR per migliorare la connessione.

Un'altro valore da considerare e' l'attenuazione (Line Attenuation) che indica in pratica il degrado del segnale nel percorso dal nostro router al DSLAM. Questo valore ci da un'indicazione approssimativa della distanza dalla centrale. Piu' e' alto il valore, piu' il segnale arriva degradato.
Diciamo che un valore medio in "downstream" di 40dB puo' corrispondere approssimativamente a 3km o poco piu', in assenza di disturbi di altra natura (in rete e' pieno di tabelle che danno le distanze indicative per valori diversi di dB).
Per un'ADSL2+, i 40dB sono un po' il limite oltre al quale la connessione comincia a non essere tanto decente (il limite si alza a circa 50dB per l'ADSL classica)
L'attenuazione, e quindi in qualche modo la distanza dalla centrale, ci da un'idea di quanto si possa spingere sulle prestazioni giocando sull'SNR.
Con valori alti di attenuazione, la velocita' della linea non potra' crescere piu' di tanto, anche abbassando l'SNR ai limiti estremi in cui la connessione e' possibile (al di sotto dei 4dB il router non dovrebbe ottenere proprio la connessione).

Nei Netgear D6200 e D7000 e' possibile trovare i valori SNR e attenuazione attraverso l'interfaccia grafica di configurazione, sotto "Administration->Router status".
Pubblicita'


Velocizzare l'ADSL configurando a mano il router

Quanto segue si riferisce ai Netgear indicati all'inizio dell'articolo ma potrebbe essere applicabile, ugualmente o con piccole varianti, a molti altri router Netgear.

I router indicati, cosi' come tanti altri, hanno un sistema chiamato BusyBox, un insieme dei piu' comuni comandi Unix in versione ridotta e raggruppati in un unico eseguibile.
BusyBox (https://www.busybox.net/about.html) e' fatto in modo da occupare una quantita' limitata di risorse, adatta a dispositivi a capacita' ridotta come i Router.

Per effettuare qualsiasi modifica al router, e' necessario entrare nel sistema.
Il D6200, il D7000 e il DGND3700 hanno una modalita' di debug, che, se attivata, consente l'accesso al sistema mediante Telnet.
Procediamo con ordine! I passi da seguire sono:
  1. installazione client Telnet, se non se ne ha gia' uno
  2. attivazione della modalita' di debug
  3. accesso al sistema tramite telnet
  4. modifica SNR e riconnessione
  5. disabilitazione modalita' di debug
Installazione client Telnet
Utilizziamo Telnet per effettuare un collegamento remoto con il router dal nostro PC. Esistono molti client Telnet che possono essere usati, la scelta dipende dalle proprie preferenze.

Su Windows io preferisco "PuTTY", da usare sia come client Telnet che SSH, Rlogin, ecc.
E' possibile scaricare "PuTTY" dalla home page del progetto, a questo indirizzo:
http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html.
Suggerisco di scaricare "putty.zip" e di scompattarlo in una apposita cartella. Una volta scompattato, per lanciare il client eseguire "putty.exe".

Su Linux, se non e' gia' installato un client Telnet (provare ad eseguire "telnet" da linea di comando), andra' scaricato da qualche repository e installato.
Su CentOS, ad esempio, eseguire "yum search telnet" come mostrato; scegliere un client (potrebbe essere uno di quelli evidenziati) ed installarlo.
# yum search telnet

    Plugin abilitati:aliases, changelog, fastestmirror, presto, security, tmprepo, verify, versionlock
    Loading mirror speeds from cached hostfile
    * base: centos.fastbull.org
    * epel: ftp.uni-bayreuth.de
    * extras: centos.fastbull.org
    * updates: centos.fastbull.org
    ======================== N/S Matched: telnet =======================
    dcap-tunnel-telnet.i686 : Telnet tunnel for dCache
    libtelnet.i686 : TELNET protocol parsing framework
    libtelnet-devel.i686 : Header files for libtelnet
    libtelnet-utils.i686 : TELNET utility programs from libtelnet
    perl-Net-Telnet.noarch : Net-Telnet Perl module
    telnet.i686 : The client program for the Telnet remote login protocol
    telnet-server.i686 : The server program for the Telnet remote login protocol
    krb5-appl-clients.i686 : Kerberos-aware telnet, ftp, rcp, rsh and rlogin clients
    krb5-appl-servers.i686 : Kerberos-aware telnet, ftp, rcp, rsh and rlogin servers
    perl-Net-Telnet-Cisco.noarch : Interact with a Cisco router
    procServ.i686 : Process server with telnet console and log access
    putty.i686 : SSH, Telnet and Rlogin client
    tn5250.i686 : 5250 Telnet protocol and Terminal

      Name and summary matches only, use "search all" for everything.

Attivazione della modalita' di debug
Entrare nella modalita' di debug permette al router di attivare il server Telnet necessario ad accettare connessioni.
Supponendo che l'indirizzo del router sia, "192.168.0.1" (potrebbe essere anche "192.168.1.1" o altro ancora), l'attivazione avviene inserendo in una finestra del browser il seguente indirizzo:
    http://192.168.0.1/setup.cgi?todo=debug
Verra' chiesto di autenticarsi, inseriamo il nome dell'utente amministratore ("admin") e la relativa password. Un messaggio sul browser indichera' che la modalita' di debug e' attiva ("Debug Enable!").

Accesso al sistema tramite telnet
Siamo pronti ora ad accedere al sistema.

Su Windows, eseguire "putty.exe". Si aprira' una finestra che va impostata, come da immagine, selezionando "Telnet" come tipo di connessione (la porta sara' impostata automaticamente su 23, se cosi' non fosse, impostarla a mano) ed inserendo l'indirizzo IP del router (ad esempio "192.168.0.1" al posto di "X.Y.Z.T").
Esempio connessione con putty

Esempio connessione con putty
Una volta configurata la connessione premere il pulsante "Open" (o analogo in italiano).
Dopo un po' di attesa apparira' una finestra con la richiesta di login.

Su linux, se si e' scelto il programma "telnet", digitare

    # telnet 192.168.0.1 23
        Trying 192.168.0.1...

Se tutto e' andato bene, apparira' la richiesta del login.

Alla richiesta di login, il DGND3700 e il D6200 si comportano diversamente dal D7000, come mostrato nella seguente tabella.

Router Utente Password
DGND3700 admin <stessa dell'interfaccia grafica>
D6200 admin <stessa dell'interfaccia grafica>
D7000 root
<nessuna password (default)>

alto rischio sicurezza per questo router, prima leggere e applicare
Router Netgear D7000, proteggere la modalita' di debug (accesso "root")

Dovremmo essere dentro, pronti a digitare comandi.

Modifica SNR e riconnessione
Per modificare il valore dell'SNR si usa il comando "xdslctl" (in altri router potrebbe essere "adslctl").
Ad esempio (ma possono essere usati altri valori),

    # /bin/xdslctl configure --snr 20

L'opzione "--snr" indica appunto di agire a livello di SNR e deve essere seguita da un valore che corrisponde all'incremento o decremento dei decibel secondo la tabella mostrata sotto.
Nell'esempio ho usato il valore "20" che corrisponde a circa -4.7dB/-4.8dB. In questo caso, sulla mia ADSL sono passato da 11.1dB iniziali a 6.3dB/6.4dB passando da 3.5Mbps a poco piu' di 5Mbps.
Il numero da usare dipende dalla connessione che si ha. Si possono provare diversi valori fino a trovare quello ottimale abbassando l'SNR mantenendo pero' una connessione stabile.
La regola e' che ogni "25" c'e' una variazione di 1.5dB, a partire dal 100 (nessun cambiamento) in giu'. Al di sotto del 25, si riparte con il 65550, sempre a scendere. Valori superiori al 100, invece, aumentano i dB. Aumentare i dB ha comunque senso in quanto si stabilizza maggiormente la linea sacrificando la velocita'.

Valore Variazione
... ...
125 +1.5 dB
100 0
75 -1.5 dB
50 -3 dB
25 -4.5 dB
65550 -6 dB
65525 -7.5 dB
65500 -9 dB
65475 -10.5 dB
... ...

I valori indicati non sono vincolanti, possono essere usati anche tutti quelli intermedi, come nell'esempio dove ho usato il 20.
Si provino diversi valori per capire quale potrebbe essere il migliore ed il piu' adatto.

Una volta dato il comando la connessione si resetta provocando una rinegoziazione con il DSLAM.
A seconda di quanto e' basso in dB il nuovo SNR, potrebbero volerci anche alcuni minuti prima del "riaggancio"!
Durante le prove possiamo verificare a linea di comando i cambiamenti mediante
    
    # xdslctl info --show  | grep Downstream
    # xdslctl info --show | grep SNR

che visualizzeranno rispettivamente l'"Upstream rate" (upload) in Kbps insieme al "Downstream rate" (download) sempre in Kbps e l'SNR.
se si vogliono tutte le informazioni basta rimuovere la redirezione sul comando grep (serve a filtrare il testo)
    
    # xdslctl info --show



Disabilitazione modalita' di debug
Per disabilitare la modalita' di debug "uccidere" il processo che gestisce le connessioni Telnet.
# ps
  PID USER       VSZ STAT COMMAND
  ...
15142 root      1528 S    /usr/sbin/zebra -d -P 0 -f /etc/zebra.conf
15146 root      1704 S    /usr/sbin/ripd -r -d -f /etc/ripd.conf
15934 root       868 S    /usr/sbin/sc_igmp -u ppp1 -d group1
16356 root      1300 S    /bin/sh /opt/remote/bin/checkleafp2p.sh
16357 root      1072 S    /bin/sh /opt/remote/bin/checkleafnets.sh
16385 root      2144 S    /opt/p2p/bin/leafp2p
29206 root       828 S    /usr/sbin/utelnetd -d -l /usr/sbin/login
...
# kill 29206
La finestra Telnet vera' immediatamente chiusa e per rientrare sara' necessario riattivare nuovamente la modalita' di debug.

Rendere permanenti le modifiche al router

Cosa succede se il router viene riavviato o, peggio, spento? Ebbene, le modifiche vengono perse.
Sebbene non sia complicata, risulta un po' scomodo dover ripetere ogni volta tutta la procedura.

In questo ultimo paragrafo vedremo come rendere permanenti le modifiche.

Dobbiamo modificare gli script di avvio in modo che chiamino automaticamente il comando "xdslctl".
Guardando sotto la cartella "/etc", troviamo lo script "rcS" che effettua tutta una serie di operazioni di inizializzazione del router.
Possiamo aggiungere in fondo a questo file la nostra chiamata a "xdslctl", oppure possiamo creare uno script a parte, tipo "rc.custom" che contiene la modifica dell'SNR piu' altre eventuali cose, e lanciarlo da "rcS".
Sembra semplice ma non e' cosi', almeno non senza sapere come procedere.
Prima di procedere con qualsiasi modifica al router, vanno tenuti conto alcuni fatti:
  • il filesystem con il sistema del router potrebbe essere montato in sola lettura (DGND3700, D6200)
  • ad ogni riavvio la cartella "etc", cosi' come molte altre, viene sostituita con "/usr/etc"
  • durante l'inizializzazione, oltre ad essere sostituite le cartelle, vengono modificate alcune configurazioni "al volo"
  • le cartelle "/bin", "/sbin" e altre, sono in realta' link alle analoghe sotto "/usr"
  • lo spazio di memorizzazione e' limitato
  • la capacita' di elaborazione del router e' limitata
Per quello che dobbiamo fare qui, ci interessano solo i primi due punti in quanto non andremo a creare script al di fuori di "/etc" e quello che creeremo e' semplicissimo.
A livello logico, le operazioni da effettuare sono le seguenti:
  1. accesso al sistema in modalita' di debug
  2. rendere il filesystem modificabile (DGND3700, D6200)
  3. creare lo script "/usr/etc/rc.custom"
  4. modificare lo script "/usr/etc/rcS" aggiungendo in fondo la chiamata a "rc.custom"
  5. riavvio del router
Si ricordi, che chi mi segue lo fa a proprio rischio e pericolo! Backuppate...

Accesso al sistema in modalita' di debug
Questo e' stato gia' visto nel paragrafo precedente.

Rendere il filesystem modificabile
Il D7000 sembra avere un filesystem gia' montato in scrittura e lettura, percio' non ha bisogno di interventi.
Gli altri due, invece, hanno bisogno di un "remount" da sola lettura a lettura/scrittura. Eseguire dal prompt dei comandi

    # mount -n -o remount,rw /

Con questa istruzione diciamo di montare nuovamente il filesystem principale ("/") sia in scrittura ("w") che in lettura ("r"). L'opzione "-n" evita la modifica di "/etc/mtab", "-o remount" indica l'opzione per il remount.

ATTENZIONE! Da questo momento fino al riavvio del router, ogni modifica fatta rischia di essere permanente.

Creare lo script "/usr/etc/rc.custom"
Dobbiamo ora creare lo script che si occupera' della modifica dell'SNR. Possiamo farlo in diversi modi, con istruzioni ripetute del tipo
echo "....." >> /usr/etc/rc.custom
oppure con "vi", l'editor di testo Unix che dovrebbe essere presente nel sistema. Io preferisco questo editor, molto piu' pratico.
Seguire alla lettera le seguenti istruzioni.
Dal prompt dei comandi aprire l'editor:

    # vi /usr/etc/rc.custom

Una volta entrati, passare alla modalita' di inserimento premendo il tasto "i". Si e' pronti per digitare il codice.
Scrivere le seguenti istruzioni SOSTITUENDO AD "XX" IL VALORE DESIDERATO
    #!/bin/sh
    snr=XX
    /bin/xdslctl configure --snr $snr
Finito di inserire il codice mostrato, premere il tasto "ESC" per uscire dalla modalita' di inserimento.
Salvare il file ed uscire dall'editor scrivendo letteralmente ":wq" (senza virgolette) e premendo invio (w=salva; q=esci).
Lo script e' stato creato, adesso va reso eseguibile (per default non lo e') e bisogna verificarne il contenuto, giusto per controllare di aver fatto le cose per bene. Eseguire

    # chmod a+x /usr/etc/rc.custom
    # cat /usr/etc/rc.custom

La prima istruzione modifica i permessi a tutti gli utenti ("a") aggiungendo ("+") il diritto di eseguire ("x").
La seconda stampa il contenuto del file, verificare che corrisponda con le istruzioni indicate in precedenza.

Prima di procedere al punto successivo, e' bene testare lo script e vedere se tutto funziona correttamente
    
    # /usr/etc/rc.custom

Se tutto funziona correttamente, la connessione dovrebbe chiudersi e ripartire dopo un'attesa piu' o meno lunga (dipendente da come e' stato modificato l'SNR).

Modifica script "/usr/etc/rcS"
Dobbiamo assicurarci che il nostro script venga eseguito ad ogni riavvio del router. Abbiamo visto che lo script "rcS" e' il posto adatto. Al fine di non interferire con le altre inizializzazioni del router, inseriremo la chiamata a "rc.custom" in fondo a questo script.
    
    # vi /usr/etc/rcS

Posizionarsi in fondo al file premendo "SHIFT-g" (o scorrendo il file con i tasti PAG e le frecce).
Premere "i" per passare alla modalita' di inserimento ed inserire il seguente codice:
    /bin/sleep 15
    /etc/rc.custom &
Premere "ESC" per uscire dalla modalita' di inserimento, scrivere ":wq" (senza virgolette) per salvare ed uscire dall'editor.
La prima istruzione dice di aspettare 15 secondi, tempo necessario a consentire al processo di inizializzazione del router di andare avanti senza sovrascrivere gli effetti delle nostre "schifezze".
La seconda istruzione esegue il nostro script in background ("&"), in modo da non bloccare eventuali altre procedure del router.
Notare che eseguiamo "/etc/rc.custom" e non "/usr/etc/rc.custom" perche' quando il router arriva ad eseguire il nostro script, lo ha gia' copiato in automatico da "/usr/etc" a "/etc".

NON ESEGUIRE "/etc/rcS" A MANO per testarlo!

Riavvio del router
Per testare la modifica e' necessario riavviare il router. Eseguiamo
    
    # reboot

Si chiudera' la finestra Telnet ed il router comincera' la procedura di riavvio.

Al termine del riavvio sara' possibile verificare sul browser, tramite interfaccia web del router, come e' cambiata la velocita', l'SNR, ecc.

Adesso, ogni volta che il router viene spento o riavviato, verranno applicate le nostre modifiche: godetevi le nuove prestazioni senza dover modificare tutto ogni volta a mano!

Se per qualsiasi motivo si volesse eliminare le modifiche effettuate, se sono stati usati gli stessi nomi dell'articolo, procedere come segue:
  1. Montare il filesystem in lettura/scrittura (vedere paragrafi precedenti)
  2. Modificare "/usr/etc/rcS" usando "vi /usr/etc/rcS" ed eliminando il codice aggiunto
  3. Eliminare il file "rc.custom" con il comando "rm /usr/etc/rc.custom"



Hai trovato utile questo articolo?
Aiutami a condividerlo o metti un "mi piace".
Grazie mille!


Gli strumenti di condivisione (Google+, Facebook) sono visibili in alto a destra solo dopo aver accettato la policy di utilizzo dei cookie per questo sito.
FAQ - Come faccio a cambiare la mia scelta?

 

Strumenti (myjsp.feelinglinux.com)
Gioco: allenamento con la tastiera Strumenti di codifica/decodifica URI (%-encoding) e Base64 Strumenti di calcolo online per IP e Reti
QUIZ GAME
Quiz game

Cerca @myjsp.feelinglinux.com

Pubblicita'