Ho notato una tendenza ultimamente. Piuttosto che sostituire un router quando smette letteralmente di funzionare, ho avuto bisogno di agire prima, sostituendo una nuova attrezzatura perché un vecchio router non poteva più tenere il passo con l’aumento della velocità di Internet disponibile nella zona. (Nota, sono debitamente grato per questo problema.) Come ultimo esempio, un intero gruppo di router Netgear ProSafe 318G mi ha fallito per l’ultima volta mentre le piccole imprese sono passate da connessioni T1 tradizionali da 1,5-9mbps a 50mbps coassiali (cavo).

Sì, coassiali, non in fibra. Anche il coassiale si è dimostrato troppo per la vecchia serie ProSafe. Questi dispositivi non solo non riuscivano a tenere il passo, ma cadevano a terra. Spesso, i vecchi router hanno fatto cadere i risultati dei test di velocità da 9mbps con la vecchia connessione a 3mbps o meno con la connessione a 50mbps. Ovviamente, questo non vola.

Vedi di più

In questi giorni, la risposta sembra essere sempre più i router wireless. Questi tendono ad essere lunghi sulla plastica lucida e sulle interfacce web dai colori vivaci, ma corti sulle caratteristiche tecniche e sull’affidabilità. Cosa deve fare un sysadmin mercenario? Beh, in fondo, qualsiasi cosa con due interfacce di rete fisiche può essere un router. E oggi, ci sono un sacco di scatole generiche relativamente veloci, economiche e (super importante!) completamente a stato solido là fuori.

Così, il tempo era finalmente arrivato. Di fronte all’hardware vecchio e alle nuove offerte dei consumatori che non soddisfano le mie esigenze, ho deciso di costruire il mio router. E se il panorama della connettività di oggi vi lascia in una posizione simile, si scopre che sia la costruzione che la realizzazione sono abbastanza veloci.

Perché farlo nel modo più difficile

Molti di voi stanno probabilmente borbottando: “giusto, pfSense, certo”. Alcuni di voi potrebbero anche pensare a smoothwall o untangle NG. Ho giocato con la maggior parte delle distro di firewall là fuori, ma ho deciso di andare più di base, più alla vecchia maniera: una semplice installazione di Ubuntu Server con solo CLI e alcune regole di iptables.

Ammetto che questo probabilmente non è l’approccio più pratico per ogni lettore, ma per me ha avuto senso. Ho un bel po’ di esperienza nell’affinare iptables e lo stesso kernel Linux per un alto throughput su scala Internet, e meno funzioni luccicanti e grafiche e cose cliccabili vengono messe tra me e la tabella del firewall, meno roba inutile devo togliere di mezzo e meno cose nuove non applicabili nel resto del mio lavoro devo imparare. Qualsiasi regola che so già come creare in iptables per gestire l’accesso ai miei server, so anche come applicarla al mio firewall – se il mio firewall ha la stessa distro dei miei server.

Ingrandisci / Ecco, una barba Unix.

Inoltre, lavoro abbastanza pesantemente con OpenVPN, e voglio essere in grado di continuare a configurare sia i server che i client nel modo su cui già faccio affidamento. Alcune distro di firewall hanno il supporto OpenVPN integrato e altre no, ma anche quelle con il supporto integrato tendono ad aspettarsi che le cose funzionino diversamente da come faccio io. Ancora una volta, più il sistema rimane fuori dalla mia strada, più sarò felice.

Come bonus aggiuntivo, so che posso facilmente mantenere tutto completamente aggiornato sul mio nuovo router Ubuntu completamente vaniglia. È tutto supportato direttamente da Canonical, e può (e lo fa) avere tutti gli aggiornamenti automatici attivati. Aggiungete il cron job occasionale per riavviare il router (per ottenere nuovi kernel), e sono a posto.

Hardware, hardware, hardware

Andremo attraverso il how-to in un pezzo futuro, ma oggi è importante stabilire perché un router-costruzione fai da te può essere la scelta migliore. Per farlo, è necessario prima capire il panorama generale di oggi.

Nel mondo consumer, i router hanno per lo più piccole CPU MIPS sotto il cofano senza un sacco di RAM (per usare un eufemismo). Questi router si differenziano in gran parte l’uno dall’altro in base all’interfaccia: Quanto è brillante? Quante caratteristiche tecniche ha? Gli utenti possono capirlo facilmente?

Pubblicità

Al livello più alto del mercato SOHO, si iniziano a vedere alcune CPU ARM per smartphone e molta più RAM. Questi router, come la serie Nightgear Nighthawk, uno dei quali sarà martellato più tardi, sono dotati di più core, velocità di clock più elevate e molta più RAM. Sono anche caratterizzati da prezzi molto più alti rispetto alla concorrenza più economica. Ho preso un Linksys EA2750 per 89 dollari, ma il Netgear Nighthawk X6 che ho preso con esso era quasi tre volte più costoso (anche in saldo!) a 249 dollari.

Ingrandisci / Non giudicarmi – avevo fame.

Ancora, volevo prendere una strada diversa. Un sacco di interessanti e ragionevolmente economiche piccole macchine fanless x86-64 hanno iniziato a comparire sul mercato ultimamente. Il trucco per costruire un router è trovarne uno con più NIC. Si possono trovare un paio di scommesse abbastanza sicure su Amazon, ma sono vecchi processori basati su Atom, mentre io volevo un Celeron più recente. Dopo un po’ di buona vecchia perlustrazione e tentennamento su Internet, alla fine ho fatto il grande passo su Alibaba e mi sono ordinato un nuovo Partaker Mini PC da Shenzhen Inctel Technology Company. Dopo 240 dollari per il router stesso e altri 48 dollari per un SSD Kingston da 120 GB da Newegg, avevo speso circa 40 dollari in più per l’Homebrew Special di quanto avessi speso per il Nighthawk. Ne varrebbe la pena?

Appare uno sfidante

Prima di iniziare i test, diamo una rapida occhiata ai concorrenti.

Ingrandisci / In senso orario dall’estrema sinistra: 1. l’Ubuntu-powered Homebrew Special, 2. il Netgear Nighthawk X6, 3. il Buffalo WHR-G300N-v2, e 4. il Linksys N600 EA-2750. All’estrema destra, che incombe su tutti: Monolith, uno dei due server usati per i test.

Questo Nighthawk è, in confronto agli altri, ENORME e imponente (anche più di quanto la foto lo faccia sembrare). In realtà è significativamente più grande del mio Homebrew Special, che è un PC completamente funzionale e di uso generale che potresti usare come un desktop perfettamente competente. È come se la DC Comics avesse chiesto a H.R. Giger di dare una mano a progettare un router wireless per Batman.

Lo stesso Homebrew Special è piuttosto adorabile. Ha un LED blu e uno rosso all’interno del case e, di notte, la luce di entrambi fuoriesce indirettamente dalle bocchette di raffreddamento, dando allo stack di rete un aspetto festoso. Se ci fossero state delle ventole a causare uno sfarfallio mi avrebbe fatto impazzire, ma dal momento che è un bagliore morbido costante, in realtà mi piace.

I Linksys e i Buffalo, d’altra parte, sembrano esattamente quello che sono-router economici. Tuttavia, vale la pena notare che lo stile del Linksys è un grande miglioramento rispetto al passato del marchio. Sembra più qualcosa di professionale e meno un giocattolo per bambini. (Ma basta parlare dello stile – è il momento di mettere questi poveri router alla prova.)

L’ovvia prima sfida è un semplice test della larghezza di banda. Si mette un computer sul lato LAN e uno sul lato WAN, e si esegue un piccolo strumento chiamato iperf nel mezzo. Semplice, no?

Ingrandisci / Non raffigurato: risultati interessanti.

Pubblicità

Beh, questo sarebbe un articolo breve e noioso. La rete stessa misura il gigabit, i tre router gigabit misurano il gigabit e il router 100 megabit misura il 100 megabit.

In realtà, un test così semplice non inizia nemmeno a raccontare la storia. L’unica ragione per farlo potrebbe essere quella di mostrare quanto sia inutile. I produttori di router stanno diventando sempre più consapevoli del fatto che le persone testano effettivamente i loro prodotti, e nessun produttore vuole che il suo prodotto sia ovunque tranne che in cima a qualcosa come la classifica dei router di smallnetbuilder. Alla luce, i produttori sono attivamente a caccia di statistiche in questi giorni.

Il problema è che le statistiche sono solo statistiche. Essere in grado di colpire un numero elevato su un test di throughput puro è meglio di niente, ma è un lontano grido dall’intera storia. Ho imparato questa lezione nel modo più duro quando lavoravo per un fornitore di T-1 nei primi anni 2000. I loro modem Adtran, estremamente costosi, potevano gestire benissimo l’uso normale di Internet da parte di 50 a 100 persone, ma un singolo utente che eseguiva Limewire o qualche altro client P2P faceva crollare tutto in un attimo. (La soluzione allora: mettere un router Netopia economico ma fantastico da 150 dollari davanti al costoso modem Adtran. Problema risolto.)

Pubblicità

Anche per un routing relativamente semplice – nessuna ispezione profonda dei pacchetti, nessuna scansione di malware in streaming o rilevamento di intrusioni, nessun shaping – la CPU e la RAM disponibili per il router sono entrambe importanti ben oltre la capacità di saturare il collegamento Internet. La condivisione di file peer-to-peer è l’attività più brutale che una rete possa vedere di questi tempi (che sia bittorrent, una delle varianti di Gnutella o eDonkey, o il sistema di download peer-to-peer di una società di giochi). Avevo finito di giocare a WoW quando il sistema di distribuzione P2P di Blizzard fu introdotto, ma il mio compagno di stanza all’epoca non lo era. Il giorno del suo lancio, il nuovo sistema di download peer di WoW non aveva alcun tipo di throttling di default. Cercò allegramente di trovare e mantenere connessioni con letteralmente migliaia di clienti contemporaneamente, e la mia rete domestica andò giù come Gilbert Godfried che viene placcato da Terry Tate. Io e il mio compagno di stanza abbiamo parlato.

In base a queste esperienze passate, non voglio solo “testare” minimamente i miei sfidanti e finirla qui, voglio farli sudare davvero. Quindi, per farlo, li colpirò con carichi di lavoro che sottolineano tre aree problematiche: saturare il collegamento di rete, creare e interrompere le singole connessioni TCP/IP molto rapidamente, e tenere aperto un numero enorme di singole connessioni TCP/IP allo stesso tempo.

Ho una botnet in tasca, e sono pronto a spaccare

Ho brevemente considerato di mettere su una specie di orribile mostruosità alimentata da Docker con decine di migliaia di container Linux con indirizzi IP individuali, tutti che chiedono connessioni e/o servono pagine web. Poi sono tornato in me. Per quanto riguarda i router, non c’è differenza tra mantenere connessioni a migliaia di indirizzi IP individuali o solo a migliaia di porte sullo stesso indirizzo IP. Ho passato un po’ di tempo a trasformare il webserver preferito di Lee Hutchinson, nginx, in un ridicolo mostro lovecraftiano con 10.000 teste e un appetito di distruzione.

Per ogni router, ho usato ApacheBench per testare il download di un jpeg con tre diverse dimensioni di file (10K, 100K e 1M) a quattro diversi livelli di concorrenza (10, 100, 1.000 e 10.000 client simultanei). Questo ci dà 12 test in totale, senza contare il nostro test iperf iniziale, e vale la pena vederli tutti come una sorta di spettro.

Pubblicità

Sotto molti aspetti, quel file da 10K è più impegnativo. La piccola dimensione del file significa che puoi consegnare molti più file individuali ogni secondo prima di saturare l’interfaccia, il che significa fare e interrompere molte più connessioni TCP, il che è impegnativo per la CPU del router. D’altra parte, il file da 1M significa che hai la garanzia di tenere aperte più connessioni ai livelli di concorrenza più alti. Vale la pena vedere come i router gestiscono l’intero spettro, perché ogni livello fa un lavoro abbastanza decente nel modellare una sfida abbastanza comune che un router potrebbe aver bisogno di gestire (scaricare o inviare un gran numero di e-mail, gestire la condivisione di file peer-to-peer, o la navigazione web generale da un sacco di utenti) se portato ad un livello estremo.

In definitiva, ho finito per aver bisogno non solo di mettere a punto nginx, ma il kernel Linux stesso, al fine di fornire in modo affidabile il tipo di throughput che stavo cercando. I router stessi sono “stock” – anche il mio Homebrew Special è stato lasciato intonso – ma i server di prova, Menhir, e Monolith (ognuno con CPU AMD FX-8320 8-core, 32GB DDR3 RAM, e Ubuntu Trusty OS completamente aggiornato con patch) avevano bisogno di alcuni massaggi abbastanza seri per poter gestire quel tipo di carico.

Con tutta questa follia, vuoi assicurarti di cosa sono capaci i tuoi server e la tua rete prima di saltare a qualsiasi conclusione sui router che metti tra di loro. Per iniziare, ho prima testato Menhir da solo sull’interfaccia localhost (nessuna rete) e poi ho testato tra i server solo attraverso il mio switch di rete (un Netgear ProSafe 16-port gigabit, nel caso ve lo stiate chiedendo).

Ingrandisci / Ogni esperimento ha bisogno di un controllo.

I risultati localhost non avrebbero potuto essere migliori: un throughput molto, molto più alto del gigabit per ogni test. Infatti, ho dovuto limitare manualmente la scala dell’asse Y del grafico o avreste avuto problemi a vedere i test reali. Il test della rete diretta non era troppo male, ma stiamo ovviamente iniziando a colpire alcuni limiti all’estremità superiore. Non sono sicuro se il componente in difficoltà sia lo switch stesso o le interfacce di rete a bordo di entrambi i server, ma qualcosa non è completamente all’altezza della sfida. Però è abbastanza buono per lavorare. È ora di impegnare finalmente i router.

Prepariamoci a rompere!

Ero un po’ nervoso. Mi sentivo già abbastanza affezionato al mio piccolo dispositivo homebrew – dopo tutto, l’avevo costruito io stesso. Sapevo che avrebbe facilmente dominato il vecchio Buffalo che avevo tirato fuori da un cassetto e il Linksys, che era letteralmente la cosa più economica da Staples con un’interfaccia gigabit. Ma poteva battere quel martello atomico a guida laser di un Nighthawk? Pensavo di sì, ma non ne ero sicuro.

Ingrandisci / Nella foto: vittoria impeccabile.

Quando i test di download furono finiti, non ci furono più domande sull’Homebrew Special. Sì, poteva battere il Nighthawk… e poi andarsene sbadigliando. A parte un piccolo tuffo al livello di 10K file size/10 connessioni contemporanee (che sfida la CPU con il maggior numero assoluto di connessioni fatte e interrotte), si è comportato in modo quasi identico alla connessione di rete diretta stessa.

Pubblicità

Il Nighthawk, per inciso, è davvero un grande router SOHO di cui ho distribuito parecchio. Tuttavia, è caduto quasi immediatamente. Per i download di megabyte 10 alla volta, era un testa a testa. Con qualsiasi altra sfida, le prestazioni hanno iniziato a scendere bruscamente.

Il Linksys, nessuna sorpresa, non ha eseguito bene a tutti. Anche un compito semplice come scaricare 10 file allo stesso tempo ha ridotto il suo throughput a quasi la metà di quello che il test iperf ingenuo ha mostrato. Le cose sono solo peggiorate da lì, e non è riuscito nemmeno a completare diversi test. Sul lato positivo, il Linksys fa un buon lavoro per dimostrare che il vostro router è davvero importante.

Finalmente, il valoroso piccolo Buffalo merita un po’ di attenzione. Nonostante costasse meno del Linksys quando era nuovo di zecca (otto anni fa, attenzione) e languisse in un cassetto della scrivania per cinque anni, è sceso dal proverbiale sgabello del bar e ha effettivamente battuto il Linksys in metà dei test. Il Buffalo ha avuto questo successo nonostante un’interfaccia di rete che era valutata per un decimo della velocità. Questo è coraggio. La prossima volta che qualcuno si cimenta in una pugnalata a buon mercato ai prodotti cinesi appena usciti dalla barca, griderò “Ricordati della Buffalo!”

Pubblicità

Prima di giungere a qualsiasi conclusione, tuttavia, è necessario tenere conto della velocità di upload.

Ingrandisci / Devo guardare due volte per assicurarmi che non sia lo stesso grafico.

Per fortuna, non è cambiato nulla sulle relazioni tra i router qui. L’Homebrew continua a sembrare che non sia nemmeno lì, corrispondendo quasi completamente a una connessione di rete diretta. Il Nighthawk continua a dominare completamente il Linksys, e il piccolo Buffalo da strapazzo fa ancora del suo meglio obsoleto. In termini assoluti, si può vedere che sia il Nighthawk che il Linksys stanno facendo leggermente meglio in upload che in download, ma non è niente di cui scrivere a casa. La linea di fondo rimane la stessa: l’Homebrew Special tiene il passo con la rete (stranamente, anche facendo meglio di una connessione diretta nel test 10.000 connessioni/10K file), il Nighthawk vale chiaramente il suo prezzo rispetto al Linksys, e il Linksys è, beh, poco costoso.

Con questo grafico finale, abbiamo una nuova serie di risultati, però – le barre color salmone, che sono abbastanza costanti a un po’ più di 200mbps attraverso il grafico. Questo è l’Homebrew Special che flette il suo muscolo crittografico. Ha un server OpenVPN in funzione. Per questo test, il server lato WAN, Menhir, è collegato al server OpenVPN integrato nel router. Il traffico per il lato LAN dell’Homebrew Special è instradato attraverso il tunnel VPN, così Menhir sta colpendo l’indirizzo IP LAN di Monolith (il server lato LAN) attraverso una crittografia a 2048 bit, basata su SSL, piuttosto impressionante. Dato che nessuno offre ancora connessioni internet oltre i 200mbps nella mia zona, questo fa ballare di gioia il mio nerd crittografo interiore. Potrei letteralmente criptare ogni singolo byte del mio traffico Internet, in entrambe le direzioni, senza penalità di prestazioni.

Un rapido avvertimento di chiusura

Per quanto impressionante sia il mio piccolo Homebrew Special, c’è una cosa che gli manca, che tutti gli altri tre concorrenti offrono: l’accesso wireless. Potrei aggiungere una scheda wireless all’Homebrew e farlo servire senza fili, ma attualmente non ho intenzione di farlo. Ho fin troppa familiarità con ciò che è disponibile per le schede wireless per PC, e fanno tutte schifo sul ghiaccio. Anche i dispositivi economici come il Linksys o il Buffalo sono da buttare per la copertura e la portata del wireless, e il Nighthawk non è nemmeno nella stessa categoria. È davvero un martello a vapore atomico a guida laser quando si tratta di gamma wireless, copertura e connettività simultanea. (Ne ho uno che copre più di 50 utenti in una struttura di 53.000 metri quadrati da un angolo all’altro in questo momento.)

Detto questo, nulla ti impedisce di usare un WAP (Wireless Access Point) separato per gestire rigorosamente i compiti del Wi-Fi. A casa mia, si tratta di un paio di WAP Ubiquiti “hockey puck”, uno per ogni piano della casa. Sono un po’ più impegnativi da gestire del Nighthawk, ma la coppia costa la metà. Sono dispositivi Linux piuttosto standard che possono essere SSH’editati direttamente e sono gestiti da una piccola applicazione web piuttosto cool che si può eseguire… avete indovinato, direttamente sull’Homebrew Special. (La migrazione dell’Ubiquiti Server dalla mia workstation all’Homebrew Special sarà uno dei miei primi compiti dopo questo pezzo, e poi lo promuoverò all’uso attivo di fronte alla mia rete di casa.)

In nome della completezza, dovremmo osservare un limite condiviso, qualcosa da tutti i dispositivi di rete consumer che ho gestito: il desiderio di riavviare dopo quasi ogni cambiamento. Alcuni di questi riavvii richiedono ben più di un minuto. Non ho la più pallida idea del perché, ma qualunque sia la ragione, l’Homebrew Special non è afflitto da questo standard industriale. Fai una modifica, la applichi e hai finito. E se avete bisogno di riavviare lo Special? È di nuovo in funzione in 12 secondi. (L’ho cronometrato contando i ping caduti.)

Quindi se i numeri vi hanno influenzato, e volete costruire il vostro Homebrew Special, tutto ciò che serve è un PC con due interfacce di rete fisiche. Questo può essere un mini PC speciale come quello che ho usato qui, o può essere qualsiasi vecchia scatola che avete in giro e in cui potete stipare due schede di rete. Non lasciare che la prima schermata ti intimidisca. Costruire il proprio router veramente veloce non è così difficile da capire. E se state chiedendo a gran voce una tabella di marcia, in effetti, tracceremo presto il processo da “ecco un normale computer” a “ecco un router, ed ecco come configurarlo”.

Pubblicità

Jim Salter (@jrssnet) è un autore, oratore pubblico, proprietario di piccole imprese, sysadmin mercenario e padre di tre figli, non necessariamente in questo ordine. Ha avuto il suo primo vero assaggio dell’open source eseguendo Apache sul suo server FreeBSD 3.1 dedicato nel 1999, e da allora è stato un feroce sostenitore del FOSS. Ha anche creato e mantiene http://freebsdwiki.net e http://ubuntuwiki.net.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.