Newsgroup: it.comp.os.linux.sys
Titolo: passaggio da una route ad un'altra senza interruzioni

Salve a tutti.
Ho fatto una VPN con due SuSE linux 10 (open suse)
Su ogni PC ho 2 collegamenti VPN, dsl0 e dsl1, che puntano allo stesso
server.
Dsl1 è il collegamento di default, mentre dsl0 è quello di emergenza.
Percio' ho fatto 2 route che puntano alla rete remota, una senza
specificare la metrica e l'altra con metrica 1 (per dsl0).
route add -net x.y.z dev dsl1
route add -net x.y.z metric 1 dev dsl0
Le due connessioni si attivano contemporaneamente e viene utilizzata
la dsl1, se cade la dsl1 passa sulla dsl0 in automatico. Viceversa
quando torna la dsl1 ripassa automaticamente sulla dsl1, anche se è
attiva la dsl0.
Il problema è che sulla rete remota ho dei terminali che si collegano
al server che si trova dall'altra parte. Nel momento del passaggio da
dsl1 a dsl0 (e viceversa) la connessione viene interrotta.
C'è un modo per far si che il passaggio avvenga senza interrompere la
comunicazione?
Grazie a tutti

 comunicazione?
Nel sito "A" il gateway per raggiungere la rete nel sito "B" deve essere
l'interfaccia interna della linux-box del sito "A" e viceversa,
diversamente non può funzionare.

 diversamente non può funzionare.
Beh, certo, già è così.
Forse mi sono spiegato male.
I client del sito "A" hanno come gateway l'IP interno di "suse A".
"suse A" a sua volta ha 2 route per raggiungere "suse B", una sul link
primario e l'altra sul link di emergenza
Le due LAN sono già unite, ed ogni PC del sito A vede ogni PC del sito
B (e viceversa).
Il problema si pone solo quando cade il link primario, quindi
automaticamente "suse A" utilizza la route che va sul link
d'emergenza.
A questo punto le sessioni di terminali si scollegano e vanno
ricollegate a mano.
Quindi in pratica quello che succede è
1) da un PC del sito A apro una sessione telnet su un server che si
trova sul sito B. La route è :
PC client (telnet) --> suse A (sk rete interna) --> dsl1 --> server
(porta 23)
2) cade il link di dsl1, la route diventa
PC client (telnet) --> suse A (sk rete interna) --> dsl0 --> server
(porta 23)
tra il momento 1) e il momento 2) anche se ci mette solo 1 secondo la
sessione telnet viene scollegata.
Vorrei sapere se è possibile passare da dsl1 a dsl0 senza scollegare
le sessioni remote. In pratica dovrebbe essere un sistema di routing
fault tolerance.
Suppongo che si possa fare solo se in qualche modo è possibile dire a
"suse A" di utilizzare tutte e 2 le route contemporaneamente, ma non
ho mai visto una cosa del genere.
Grazie a tutti.

 
In alternativa potresti implementare proprio quello che hai detto un load
balancing/fail-over tra le due dsl, a tal proposito fai riferimento al post:
"connessione a due linee ADSL" di Andrea B. sempre su questo NG.
Saluti.

 ho mai visto una cosa del genere.
contemporaneamente non credo sia possibile. in pratica lui (e ogni
router) ragiona cosě:
1) pacchetto in arrivo
2) consulto la tabella di routing e prendo la migliore
3) instrado il pacchetto
per lui comunque la migliore č sempre e solo una. nel caso la prima
connessione salti, viene tolta dalla tabella di routing e usata la
seconda (che in quel momento č la migliore).

 "connessione a due linee ADSL" di Andrea B. sempre su questo NG.
Si, ma se tramite ip route faccio 2 route per il load balancing, con
due weight diversi, vengono usate contemporanemente o una volta l'una
e una volta l'altra?
Mi sembra di aver capito che vengono usate sempre alternativamente, o
l'una o l'altra, in proporzione al valore di weight. Così ad esempio
se metto a una weight = 0.9 e all'altra 0.1 , allora ogni 9
connessioni sulla prima route me ne apre una sull'altra route.
Se così fosse l'effetto finale sarebbe che nel momento dello
scollegamento di dsl1 i terminali che (per puro caso) usano la route
che passa da dsl0 non cadono, ma gli altri si. Quindi questo non
risolverebbe il problema.
Comunque è da provare.
Grazie di tutto

 sessione non cade.
Anche io sto collegando sessioni AS400, ma non penso sia un problema
di timeout. Sull'AS puoi impostare l'intervallo di tempo in cui lui
deve controllare i terminali  con CHGTCPA(TCPKEEPALV). Io l'ho messo
piuttosto elevato e la probabilità che venga eseguito proprio in quel
momento è piuttosto bassa.
Infatti ho fatto questa prova.
Da un PC ho aperto una sessione terminale su AS 400. Dopodichè ho
staccato il cavetto di rete e l'ho riattaccato dopo 20 secondi. La
sessione continua a funzionare come se niente fosse.
Invece i terminali remoti che sono collegati tramite la vpn si
scollegano anche se lo switch di path ci mette un solo secondo.
Grazie a tutti.

 Comunque è da provare.
L'ho provata, non va bene.
Dando il comando
ip route add xxx.xxx.xxx.xxx/24 equalize scope link nexthop dev dsl1
weight 10 nexthop dev dsl0 weight 1
lui usa solo la seconda che metto (in questo caso dsl0), non ho capito
perchè.
Ma quel che è peggio è che se viene a cadere dsl0 o dsl1 lui cancella
tutta la route, e quindi non instrada più i pacchetti da nessuna altra
parte.
Penso che dipenda dal fatto che questo comando serve per il load
balancing, e quindi ha bisogno sempre di tutte e 2 le connessioni
attive contemporaneamente.
Tornando al classico route, ho fatto anche un'altra prova.
Ho attivato la connessione normalmente, con la route primaria su dsl1
e secondaria su dsl0.
Poi ho cancellato la route su dsl1 ed ho aspettato che passasse su
dsl0. I terminali si sono scollegati.
Poi ho riattivato la connessione normalmente, con dsl1 e dsl0 attivi.
Ho cancellato la route che passa per dsl1 e prima che lui utilizzasse
il percorso di dsl0, ho rimesso la route che passa per dsl1.
I  terminali non si sono scollegati ed hanno continuato a lavorare
come se niente fosse.
Questo per togliere ogni dubbio circa il timeout. E' proprio il
passaggio da una route all'alltra che fa cadere la linea.
Grazie a tutti