Newsgroup: it.comp.reti.ip-admin
Titolo: Doppia ADSL parola definitiva ?

Saluto a tutti.
Premetto che mi sono spaccato la testa su Google per cercare e ricercare, 
ma non sono riuscito a trovare la parola definitiva a sta cosa.
Dunque, supponendo di avere 2 linee Adsl (segnatamente Smart da 1,2) è 
possibile accumunarle con un load-balancing ?
La rete interna comprende 2 server che possono dovere fare anche 50 <-> 100 
connessioni contemporanee.
Gli IP disponibili sono 16 (ma noon tutti effettivamente utilizzati).
I protocolli usati sono praticamente tutti i piu diffusi su internet, 
compreso l'NNTP.
Ora: io ho trovato sta robba:
http://www.linuxvirtualserver.org/~julian/nano.txt
qualcuno ha avuto modo di usarlo?
e se si, funziona?
In caso contrario: qualcuno sa consigliarmi un router, che non costi una 
pazzia, e che riesca a portare 2 o piu ADSL facendo il bilanciamento del 
traffico?
Per ultimo, su Linux e Reti in genere sono un po molto nà schiappa.
Saluti
Matteo

possibile accumunarle con un load-balancing ?
Si. Non e' necessario il Linux Virtual Server, basta una
configurazione particolare. Consiglio di dare un' occhiata a "Linux
Advanced Router Howto" e partire da li'.
Non e' proprio una cosa semplicissima, pero'.
Luca
PS non ho capito il follow-up su it.comp.linux.iniziare... quindi lo
rimetto su ip-admin.

 rimetto su ip-admin.
Perche vado a letto troooppo tardi la mattina!!!
:-)
 

 Howto" e partire da li'. Non e' proprio una cosa semplicissima, pero'.
scusami. mi sfugge un particolare.
scenario:
poniamo tu voglia bilanciare un web server (sono pronto a replicare
l'esempio per ogni tipo di servizio entrante/uscente). hai il domino
test.it
, in cui hai un campo A che si chema www e punta all'indirizzo ip
X. tale indirizzo ip e' uno di quelli assegnatoti con una delle 2 adsl.
problema
ogni volta che viene richiesto 
www.test.it
 al client viene risposto
"connettiti all'indirizzo X". il tuo provider instrada tutto il traffico
per l'ip X attraverso la prima adsl.
caso 1. il default gw del server punta al router della adsl 1.
la adsl 1 e' sempre utilizzata, la adsl 2 mai 
caso 2. il default gw del server punta al router della adsl 2.
la adsl 1 viene usata in download, la adsl in upload.
nessuno dei due casi mi sembra load balancing.
soluzione 1. (la mia prediletta).
esistono protocolli di routing che forniscono anche soluzioni di
load-balancing (ospf ad esempio). contro: richiede una adeguata
configurazione del router del tuo isp. con adsl non fornisce nessuno che
io conosca questo servizio. telecom lo fornisce per 2500 di attivazione e
qualche centinaio al mese di canone per chi ha 2 hdsl.
soluzione 2. hai un dns "intelligente". il dns risolve l'ip in round
robin, dando alla prima query l'ip X, alla seconda l'ip Y, ip secondario
del server, uno degli ip appartenneti alla seconda adsl. contro: vale solo
per i servizi in entrata.
soluzione 3. mi arrangio come posso.
metti delle route map sul router (parlo cisco ora). tutto il traffico ftp,
http ed smtp uscente passano da adsl 1 tutto il resto da adsl 2. contro:
non e' vero load balancing, ma sai che e quanto traffico generi/ricevi e
lo ripartisci nel modo piu' ragionevole possibile. non e' balancing
automatico, ma funziona bene, se calcoilato correttamente.
se ho sbagliato qualce parte del mio ragionamento, ti prego, correggimi,
una soluzione alternativa a quelle elencate mi sarebbe molto utile.
un mayhem che forse potrebbe risolvere alcuni problemi.
-- 
 Le cose che temiamo di piu', sono sempre quelle che conosciamo.
 Cisco  FAQ: 
http://mayhem.oltrelinux.com/icrc
 SPP  wpage: 
http://www.spippolatori.com
 Hacklab VR: 
http://www.m2net.it.eu.org

per i servizi in entrata.
Il round robin DNS e' implementato gia' nelle normali distribuzioni di
Bind. Teoricamente l' ordine di ritorno delle query dovrebbe essere
specificabile tramite l' rrset-order nel Bind 9, ma attualmente lo
statement non e' supportato. Cito dalla documentazione distribuita con
il Bind 9.2.1 (current release):
Note: The rrset-order statement is not yet implemented in BIND 9. BIND
9 currently supports only a "random-cyclic" ordering, where the server
randomly chooses a starting point within the RRset and returns the
records in order starting at that point, wrapping around the end of
the RRset if necessary.
Piccola discussione sul round robin in Bind (vecchia documentazione
relativa alla 8, credo):
http://www.isc.org/products/BIND/docs/bind-load-bal.html
Ergo, il Bind 9 di suo implementa il round robin DNS semplicemente
specificando A record multipli per gli indirizzi su cui si vuole
effettuare la distribuzione di carico. Anzi, volendo essere precisi,
se ne specifichi piu' di uno devi _per forza_ effettuare il round
robin perche' Bind 9 fa solo questo, al momento.
Chiaramente e' una distribuzione di carico piuttosto primitiva, ma e'
gia' sufficiente se non hai esigenze particolari. Senno'.... mi sa che
ti tocca rimediare un qualche server "intelligente" e/o forwardare su
una macchina in grado di effettuare distribuzioni di carico mediante
server virtuali (se non erro, Apache e Squid sono in grado di farlo
per il servizio WWW).
Noticina finale: il problema del load balancing e', ovviamente,
tipicamente piu' grave in entrata, visto che in uscita, volendo, puoi
distribuire il carico come cacchio ti pare e piace mediante gli
algoritmi di balancing messi a disposizione direttamente dal kernel di
Linux (in grado, tra le altre cose, di utilizzare politiche di banda
sul singolo indirizzo e anche sul singolo utente)
Luca

 singolo indirizzo e anche sul singolo utente)
esattamente il contrario. puoi limitare la banda come vuoi, con
traffic-shaping, qos o quant'altro in uscita. ma non si tratta di load
balancing. si tratta di ottimizzazione dell'utilizzo della banda. nel
senso che stai usando cmq 1 sola linea. o di def gw ne hai 2? ;P
in entrata con il dns in round robin risolvi (per ogni campo a, gli mx si
basano sugli a, come i cname).
in uscita e' piu' complesso. per fare vero load balancing o hai
collaborazione del tuo isp o non ne esci. oppure ancora non capisco.
non voglio il comando esatto, mi basta sapere con uno squid su una
macchina con 2 ip, su due classi diverse, su due adsl diverse, come
organizzeresti un gateway diverso a seconda della destinazione, in
maniera dinamica. in maniera statica restano le policy map che gia' ho
proposto.
un mayhem che non vuole essere polemico, solo curioso


proposto.
Non credo di aver capito del tutto la domanda... io ho una macchina
configurata come firewall/gateway/router/dns con due connessioni
fisiche diverse in uscita, e a parte il bilanciamento in entrata
effettuato con il round robin DNS riesco senza problemi anche ad
effettuare un bilanciamento in uscita semplicemente dividendo le
connessioni (sempre in round robin) sui due canali. E' chiaro che e'
un algoritmo primitivo ma se non hai esigenze particolari va gia' piu'
che bene. L' instradamento sui due diversi canali non va fatto con lo
Squid ma direttamente tramite l' ip route, in maniera da dividere
tutto il traffico e non solo l' http:
ip route add default equalize scope global nexthop via $IP1 dev $IF1
weight1 nexthop via $IP2 dev $IF2 weight 1
Se vuoi dare un peso maggiore ad una connessione chiaramente cambi i
valori del parametro. E' ovvio che il comando da solo non basta, poi
devi organizzare le tabelle di routing in modo che una connessione che
esce su un IP poi continui a venir gestita tramite quell' IP, le
eventuali tabelle di NATing/masquerading/firewalling devono tener
conto della cosa (una faticaccia infame, che io sappia nessun tool di
quelli "semiautomatici" gestisce connessioni multiple in uscita, ho
dovuto trovare un esempio e partendo da li' far tutto a mano) ecc.
ecc. E' questo che ti interessava sapere? Se si, maggiori info le
trovi su:
http://www.linuxvirtualserver.org/~julian/nano.txt
http://www.linuxvirtualserver.org/~julian/#routes
http://www.samag.com/documents/s=1824/sam0201h/0201h.htm
oltre ovviamente al Linux Advanced Router Howto.
Se no, mi sa che dovrai riformulare la domanda....
Luca

 Luca

Mi pare faccia già di suo il load balancing, o sbaglio?
coff... winzozz... coff.. kryptonite... coff....
Luca

 Luca
Salparadise

installata su un pc vorrei sapere...
Sinceramente, non lo so: non sono certo un esperto delle capacita' di
networking dei sistemi operativi Microsoft. Ho dato uno sguardo rapido
al sito Microsoft, ma mi pare si parli di load balancing inteso come
blianciamento del carico in ingresso sulle singole macchine tramite
clustering, che e' una cosa diversa dal load balancing del traffico di
rete in uscita su piu' linee, di cui si stava parlando.
Ammetto che sarei assai sorpreso nello scoprire che un prodotto
Microsoft e' in grado di battere Linux sul suo stesso terreno
(networking). Ma anche se lo facesse in questo caso particolare,
rimangono due problemi principali: il primo e' che ti tocca pagare le
licenze (perlomeno se vuoi essere in regola) sia per il SO che per gli
eventuali pacchetti software che ti servono in aggiunta; il secondo e'
che la sicurezza e la stabilita' dell' intero sistema sono quelle
tipiche di Windows, con annessi e connessi. Anche se in effetti la
famiglia del 2000, da quel poco che ne so, e' la migliore da questo
punto di vista.
Luca

 Luca
Grazie e ciao
BiGSuR

balancing in uscita????
Ho visto il sito della Vicomsoft, e non e' proprio chiarissimo sul
punto in questione... c'e' la voce che parla di "redundant internet
connections" ma poi cliccandoci su si va su una pagina che parla
principalmente di "fallback" che e' una feature molto piu' limitata.
Quanto al fatto che i S.O. Microsoft non facciano quello che ci si
aspetta da loro, beh.... immagino che tu indovini gia' come la penso
:-)
Vedo di chiarire meglio un po' di cose: quando si parla di "load
balancing" (distribuzione di carico) si possono intendere cose
diverse. Un possibile significato, ad esempio, e' la distribuzione di
carico su piu' macchine; es: hai un server web che riceve migliaia di
connessioni al minuto e non ce la fa a star dietro a tutte come
potenza di elaborazione; allora utilizzi un cluster di macchine che
viene visto dal resto della rete come un unico server virtuale, e ogni
richiesta viene smistata su una macchina singola all' interno del
cluster, distribuendo cosi' il carico sulle 2, 3,.. N macchine
componenti il cluster.
La distribuzione di carico di rete, invece, presuppone che il traffico
di rete venga distribuito su piu' di una connessione. La distribuzione
del traffico di rete "in entrata" presenta in particolare una
difficolta': il resto del mondo dovrebbe in qualche modo sapere di
dover entrare una volta sulla prima linea, una volta sulla seconda
ecc. in modo da distribuire il traffico su tutte le linee disponibili.
Per questo tipo di problema si utilizza in genere un DNS che effettua
il bilanciamento o tramite un semplice round robin (ad ogni richiesta
fornisce l' indirizzo successivo della lista, fino a "ricominciare il
giro") o tramite algoritmi di bilanciamento dinamico piu' sofisticati
(in teoria, ad ogni richiesta bisognerebbe analizzare l' occupazione
di banda delle varie connessioni e scegliere quella piu' libera,
escludere eventuali linee temporaneamente non disponibili ecc.). 
Questa implementazione si scontra poi con vari altri problemi (quali
il caching dei record DNS) ma che io sappia, a meno di stipulare
accordi particolari con il provider (o a meno di non _essere_ un
provider in grado di ottenere indirizzi IP appositi, collegamenti
ridondati alle backbone e instradamenti appropriati), non e' che ci
siano tanti altri modi per risolvere la situazione, perche' al massimo
quello che si riesce a fare e' smistare il traffico all' interno della
propria rete _dopo_ che ci e' arrivato, e quindi dopo che ha gia'
occupato il link verso l' esterno.
La distribuzione "in uscita" invece presenta, come problema
principale, quello del routing. Supponi di avere una rete con 100
utenti e due collegamenti verso l' esterno: idealmente (e supponendo
utilizzi di banda omogenei) vorresti che meta' degli utenti ne
utilizzassero una e meta' l' altra, in modo da sfruttare appieno la
banda. Il problema e' che normalmente le tabelle di routing sono
fisse: il computer dell' utente Tizio sa che deve uscire passando dal
server, e il server sa che il traffico verso l' esterno deve passare
dalla linea 1 piuttosto che dalla 2. Una prima e piu' semplice scelta
e' assegnare 50 utenti sulla 1 e 50 sulla 2, ma questo presenta due
inconvenienti:
a) se si collegano tutti i primi 50 utenti e nessuno dei secondi 50,
gli utenti collegati passeranno tutti sulla linea 1 intasandola mentre
la 2 rimane inutilizzata
b) se una delle linee cade, meta' degli utenti rimane isolata
Per poter utilizzare al meglio le due (o piu') linee e' invece
necessario un instradamento dinamico, per cui ad ogni nuova
connessione verso l' esterno il router scelga (secondo determinati
algoritmi) una delle linee, dopodiche' memorizzi il fatto che quella
connessione sta usando quella linea in maniera da condurre tutto il
traffico successivo per quella connessione sulla linea scelta
inizialmente. Linux e' sicuramente in grado di farlo con un algoritmo,
ancora una volta, round robin. Windows, ne dubito, anche perche' per
poterlo fare e' necessario utilizzare una stateful connection tracking
(tener traccia dello stato locale di ogni singola connessione) cosa
che non fa parte, di per se', del protocollo IP e che e' tra l' altro
necessaria per poter implementare funzioni di firewalling avanzato
(altra cosa che Windows, da quel che so, non fa).
L' applicativo che hai segnalato tu, sotto la voce di "redundant
internet connections", parla di fallback, che e' una feature limitata:
vuol dire che ha una lista di possibili connessioni verso l' esterno,
e se una va giu' ne tira su un' altra; ma questo non implica che sia
in grado di usarne piu' di una contemporaneamente, come e' invece
necessario per distribuire il carico. A dir la verita' dice anche "Use
the same connection, but to different ISP - Optimize use of connection
resources", ma la frase non e' chiarissima e quindi non so se sia
effettivamente in grado di gestire questo tipo di routing.
Luca


conoscendo il modo win, mi sa che t tocca comprare qlcs tipo isa server, per
fare un vero load balancing in uscita.
---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (
http://www.grisoft.com
).
Version: 6.0.410 / Virus Database: 231 - Release Date: 31/10/2002

 server, per fare un vero load balancing in uscita.
Hooo, non ci capisco piu nulla...
Perdonate la mia massima ignoranza, ma allora: questo benetetto Wincozz 
2000 A/S fa load balancing in uscita?
A me pareva di avere capito di no...ma ora non ne sono piu tanto sicuro.
Per essere chiari: 8 IP fissi, 4 macchine con servizi sostanzialmente 
separati, 2 domini, 2 ADSL SMART 15 con 2 router ethernet.
E' possibile "mergiare" le 2 ADSL, sopratutto in uscita?
E se si cosa ci vuole, escludendo un router Cisco?
Win 2000 A/S lo puo fare?
Grazie 1000
Saluti
Matteo


 
Tratto dal sito di microsoft:
"Connessioni Multilink e protocollo BAP
Per le connessioni dial-up, il servizio di accesso remoto di Windows 2000 
supporta connessioni multiple (Multilink) e il protocollo BAP (Bandwidth 
Allocation Protocol). Con Multilink è possibile fare in modo che più 
collegamenti fisici appaiano come un singolo collegamento logico 
utilizzabile per l'invio e la ricezione dei dati. Un valido esempio può 
essere l'aggregazione di entrambi i canali B di una connessione BRI (Basic 
Rate Interface) ISDN. Multilink è il metodo consigliato per l'aggregazione 
dei canali B di una connessione BRI perché il supporto del bonding, ovvero 
la combinazione di canali B ISDN tramite hardware, dipende dalla scheda 
ISDN. Multilink è invece supportato da qualsiasi scheda ISDN, anche se deve 
essere supportato su entrambi i lati della connessione. 
Multilink consente l'aggregazione di più collegamenti fisici ma non offre 
un meccanismo per gli adeguamenti alle condizioni variabili di larghezza di 
banda tramite l'aggiunta di collegamenti aggiuntivi o l'interruzione di 
collegamenti superflui all'occorrenza. Questa funzionalità viene invece 
offerta dal protocollo BAP (Bandwidth Allocation Protocol). Il protocollo 
BAP utilizza una connessione Multilink per la gestione dinamica dei 
collegamenti. 
Ad esempio, un client e un server di accesso remoto abilitati per Multilink 
e BAP creano una connessione Multilink costituita da un solo collegamento 
fisico. Quando l'utilizzo di questo singolo collegamento raggiunge un 
determinato livello configurato, il client di accesso remoto utilizza un 
messaggio di richiesta BAP per richiedere un collegamento aggiuntivo. Il 
messaggio di richiesta BAP indica il tipo di collegamento desiderato, ad 
esempio linea telefonica analogica, ISDN o X.25. Il server di accesso 
remoto invia quindi un messaggio di risposta BAP contenente il numero 
telefonico di una porta disponibile nel server di accesso remoto, dello 
stesso tipo specificato dal client di accesso remoto nella richiesta BAP."
Dunque: significa qualcosa?
Se si puo fare con ISDN, perche non si puo con 2 o piu ADSL?
Mha...il mistero si infittisce
Saluti
Matteo

Mha...il mistero si infittisce
Occhio che il multilink e' un' altra cosa ancora :-)
Effettuare un multilink vuol dire combinare insieme piu' collegamenti
fisici in un unico collegamento logico **per un' unica e ben specifica
connessione**.
Es: hai un client e un server. Il server possiede due collegamenti (in
entrata o in uscita) da 128K verso il client. Quando il client
richiede una connessione, il server stabilisce un' unica connessione
multilink da 256K tra se' stesso e il client. In pratica combina le
due connessioni in una connessione unica.
Ovviamente, non serve a niente se devi fare bilanciamento di banda su
piu' linee che debbano gestire piu' connessioni simultanee. Inoltre,
sia il client che il server devono supportare il multilink, altrimenti
non e' possibile stabilire la connessione multipla.
Luca

 faccia già di suo il load balancing, o sbaglio? Ciao BiGSuR
si w2k as fa load balancing dei servizi da lui gestiti (es. iis). non ho
esperienze dirette in merito. ma tutte le persone che hanno scelto di
utilizzarlo hanno poi smantellato il tutto e messo un rad (radware).
per poter avere i risultati previsti in fase di progetto. 
non si tratta di ostilita', tuttavia e' indubbio che la gestione di
alcuni servizi da parte di w2k e' troppo immatura e ci vorra' ancora del
tempo perche' tutto funzioni a dovere. iis escluso. (nel senso che non
sara' mai maturo :()
un mayhem che ora fa esplodere la telecom


 2000 A/S fa load balancing in uscita? 
no. se hai 2 server iis, o cmq 2 server che offrono un servizio, essi
appaiono all'esterno come fossero 1 solo, bilanciando il carico tra le
due macchine.
un mayhem e le domande senza risposta


 weight1 nexthop via $IP2 dev $IF2 weight 1
fantastico !!!! esattamente quel che cercavo.
a questo punto mi resta solo 1 problema: scriverlo dentro un cisco con 2
linee o dentro 2 cisco in hsrp.
 f/up appropriato e salvo il messaggio.
grazie luca :)
un mayhem e le cose che a volte gli sfuggono
