/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Linux: benytte flere internetforbindelser ~
Fra : Morten Grouleff


Dato : 02-12-01 23:33

Jeg er ude efter en måde at benytte to internetforbindelser samtidigt
til et bestemt formål: Hurtigere download af een stor fil, f.eks. den
nyeste redhat som ISO fil. Lad os som eksempel sige at jeg har 2 stk
1MBit ADSL forbindelser, hver med sin offentlige IP, og en
windows-maskine inde bagved som NAT'er forbindelser ud over begge
linier.

Jeg har kikket lidt i "advanced routing howto" og har fundet ud af at
route og fundet ud af at lave routing efter source-IP. Jeg kan derved
dirrigere trafik fra en maskine på et intern IP til den af de to
forbindelser, jeg vil, samtidig med at linux-maskinen bruger den anden
linie som sin default route. Men denne opdeling melle de to linier er
temmelig statisk...

Jeg er godt klar over at det ikke umiddelbart kan lade sig gøre at sende
vilkårlig trafik ud over begge linier, da modtagerne ikke kan finde ud
af at trafikken kommer fra een maskine når der er flere afsender-IP i
pakkerne.

Men for i hvert fald en bestemt brug må det kunne lade sig gøre:
download af filer med f.eks. "download accelerator" fra windows. Den
åbner flere uafhængige HTTP eller FTP sessions for at downloade en
enkelt fil. Hvis man nu kunne få linux til at route nogle connections
over den ene linie og nogen connections over den anden, ville effekten
vel være at slå de to linier sammen mht til download tid for lige netop
denne fil?

I praksis burde det kunne gøres ved at route på "source port". Og her
kommer problemet: Det kan jeg ikke lige finde en overskuelig måde at
gøre på. "ip route" kender vist ikke til protokoller og porte. Måske kan
det laves ved at mærke pakkerne med iptables og route på baggrund af
mærket?

PS. Tillykke. Der er næppe mange, der læste så meget af dette indlæg...
--
Morten Grouleff.

 
 
Kim Petersen (03-12-2001)
Kommentar
Fra : Kim Petersen


Dato : 03-12-01 04:48

Morten Grouleff <morten-nospam011202@grouleff.com> writes:

> Jeg er ude efter en måde at benytte to internetforbindelser samtidigt
> til et bestemt formål: Hurtigere download af een stor fil, f.eks. den
> nyeste redhat som ISO fil. Lad os som eksempel sige at jeg har 2 stk
> 1MBit ADSL forbindelser, hver med sin offentlige IP, og en
> windows-maskine inde bagved som NAT'er forbindelser ud over begge
> linier.
>
> Jeg har kikket lidt i "advanced routing howto" og har fundet ud af at
> route og fundet ud af at lave routing efter source-IP. Jeg kan derved
> dirrigere trafik fra en maskine på et intern IP til den af de to
> forbindelser, jeg vil, samtidig med at linux-maskinen bruger den anden
> linie som sin default route. Men denne opdeling melle de to linier er
> temmelig statisk...
>
> Jeg er godt klar over at det ikke umiddelbart kan lade sig gøre at sende
> vilkårlig trafik ud over begge linier, da modtagerne ikke kan finde ud
> af at trafikken kommer fra een maskine når der er flere afsender-IP i
> pakkerne.

So far so good... du har forstået problematikken Du skal route samme
session på samme linie _hele_ tiden.

>
> Men for i hvert fald en bestemt brug må det kunne lade sig gøre:
> download af filer med f.eks. "download accelerator" fra windows. Den
> åbner flere uafhængige HTTP eller FTP sessions for at downloade en
> enkelt fil. Hvis man nu kunne få linux til at route nogle connections
> over den ene linie og nogen connections over den anden, ville effekten
> vel være at slå de to linier sammen mht til download tid for lige netop
> denne fil?

Ja, det er også korrekt at du kan dette. Hvorfor Eindows sætter flere
sessions igang for at accelerere en enkelt fils download kan jeg nu ikke
indse - men dem om det. [Normalt vil man kun gøre dette ved download af
mange filer].

En løsning på dit eksempel er en QoS deling af linierne, den løsning har
jeg ikke megen forstand på - men det burde kunne lade sig gøre - dit pro-
blem kommer dog i så tilfælde til at bestå i at du ikke kan garante hvil-
ken linie som QoS systemet vælger..

>
> I praksis burde det kunne gøres ved at route på "source port". Og her
> kommer problemet: Det kan jeg ikke lige finde en overskuelig måde at
> gøre på. "ip route" kender vist ikke til protokoller og porte. Måske kan
> det laves ved at mærke pakkerne med iptables og route på baggrund af
> mærket?

Nej, det kan du ikke (ihvertfald ikke umiddelbart). Det kan dog lade sig
gøre at lave et program til at løse problematikken. Og det vil sansynlig-
vis også kunne lade sig gøre at benytte proxy-servere til at styre dette.

Men din problematik kommer til at bestå i to ting:

1) om du kan finde et program til at downloade i flere dele.
2) at opsætte en case, hvor disse dele bliver routed forskelligt.

#1 er et program spørgsmål, om ikke andet så kan det lade sig gøre at lave
et sådan program uden de store problemer...

#2 er mere skummel, lad mig prøve at opstille i det mindste en case hvor
det kan lade sig gøre... Du kan opsætte 2 maskiner med hver deres proxy,
og som bliver source routed igennem til forskellige linier. Nu skal du have
et program som kan benytte sig af 2 proxier til at downloade med.

En anden løsning er at du benytter dig af 2 eksterne proxier, som hverisær
er routed forskelligt [simpel destination routing med NAT]:

proxy 1 er routed gennem linie 1
proxy 2 er routed gennem linie 2.

Hvis du nu kan få et program til at dele loaded gennem disse 2 proxies -
ja så er den hjemme. [dette scenarie er en hel del nemmere en loadbalan-
cing scenarier som også ville kunne gøre samme - men som ikke ville kun-
ne garantere dig at det ikke blev routed på samme linie].
>
> PS. Tillykke. Der er næppe mange, der læste så meget af dette indlæg...

PS. Skrevet kl. kvart i 5 - og måske ikke specielt læselig af den grund

--
Mvh. Kim Petersen /| Tlf: +4575831551 |\ Jomfru Ingefreds Vej 18
Software Engineer / | Fax: (none atm.) | \ 7100 Vejle
LSS / | Email: kim@vindinggaard.dk | \ DK - Danmark

Lasse Leegaard (05-12-2001)
Kommentar
Fra : Lasse Leegaard


Dato : 05-12-01 12:31

*snip*
>
> Ja, det er også korrekt at du kan dette. Hvorfor Eindows sætter flere
> sessions igang for at accelerere en enkelt fils download kan jeg nu ikke
> indse - men dem om det. [Normalt vil man kun gøre dette ved download af
> mange filer].
>
*snip*

Det kan være vældigt brugbart hvis serveren har sat en begrænsning på hvor
hurtigt en enkelt session kan downloade fra den. Det er en funtionalitet i
Getright jeg benytter ret ofte da den har effekt! :)

--
Lasse Leegaard
www.brandbil.dk



Morten Grouleff (07-12-2001)
Kommentar
Fra : Morten Grouleff


Dato : 07-12-01 23:32

Kim Petersen <kim@vindinggaard.dk> writes:

[...]

> En løsning på dit eksempel er en QoS deling af linierne, den løsning har
> jeg ikke megen forstand på - men det burde kunne lade sig gøre - dit pro-
> blem kommer dog i så tilfælde til at bestå i at du ikke kan garante hvil-
> ken linie som QoS systemet vælger..

Det er netop QoS jeg har kik på.

Jeg vil naturligvis gerne have at jeg kan mærke trafik, så den
"foretrækker" den ene, men tager den anden hvis den ene ikke findes lige
nu. Dette aspekt er for så vidt dækket for boksen selv: Den har begge
som "default route" men den ene har Metric 1 så den kun bruges hvis den
anden mangler.

> >
> > I praksis burde det kunne gøres ved at route på "source port". Og her
> > kommer problemet: Det kan jeg ikke lige finde en overskuelig måde at
> > gøre på. "ip route" kender vist ikke til protokoller og porte. Måske kan
> > det laves ved at mærke pakkerne med iptables og route på baggrund af
> > mærket?
>
> Nej, det kan du ikke (ihvertfald ikke umiddelbart). Det kan dog lade sig
> gøre at lave et program til at løse problematikken. Og det vil sansynlig-
> vis også kunne lade sig gøre at benytte proxy-servere til at styre dette.

Jeg kan ikke se at der skulle være behov for proxy-servere til dette.
NAT fungerer fint som det er.

Jeg er, ganske enkelt, ude efter at få TCP trafik routet efter den
laveste bit i afsender-portnummeret, så trafik fra ulige portnumre tager
den ene vej og trafik fra lige portnumre tager den anden...
(eksempelvis)

Mvh.
--
Morten Grouleff.

Kim Petersen (08-12-2001)
Kommentar
Fra : Kim Petersen


Dato : 08-12-01 00:49

Morten Grouleff <morten-nospam011207@grouleff.com> writes:
> Jeg kan ikke se at der skulle være behov for proxy-servere til dette.
> NAT fungerer fint som det er.

Jeg tror du misforstod den her - se senere.
>
> Jeg er, ganske enkelt, ude efter at få TCP trafik routet efter den
> laveste bit i afsender-portnummeret, så trafik fra ulige portnumre tager
> den ene vej og trafik fra lige portnumre tager den anden...
> (eksempelvis)

Det er bare heller ikke en løsning, som vil garantere dig det resultat som
du ønsker [der kan være programmer mellem dine connect()'s som "æder" port-
numrene] (feks. 1st download starter (port XXX0), mail ankommer (port XXX1),
2nd download starter (port XXX2)) - her kunne du så evt. kombinere destina-
tion port sådan at kun FTP data bliver routed på denne måde [med ESTABLISHED,
RELATED?].

Den løsning med proxies er den som jeg kan se vil virke 100% - lad mig prøve
at skitsere en løsning:

Hypotese - vi har et program til at downloade med som kan dele store filer i
2 dele. Lad os derudover sætte den hypotese at den kan bruge forskellig pro-
xy på de to dele. [proxy1,proxy2]

route DNAT proxy1 på linie1
route DNAT proxy2 på linie2

nu har du fuld båndbredde på de 2 linier til rådighed.

Btw. et sådant program skulle ikke være så svært at lave - en smule fiflen
med et shellscript og wget eller bare perl/python skulle kunne være
behjælpelig]

--
Mvh. Kim Petersen /| Tlf: +4575831551 |\ Jomfru Ingefreds Vej 18
Software Engineer / | Fax: (none atm.) | \ 7100 Vejle
LSS / | Email: kim@vindinggaard.dk | \ DK - Danmark

Kim Petersen (03-12-2001)
Kommentar
Fra : Kim Petersen


Dato : 03-12-01 21:47


Du må iøvrigt gerne kommentere om du fattede et ord af mit nattetågeri

--
Mvh. Kim Petersen /| Tlf: +4575831551 |\ Jomfru Ingefreds Vej 18
Software Engineer / | Fax: (none atm.) | \ 7100 Vejle
LSS / | Email: kim@vindinggaard.dk | \ DK - Danmark

Martin Skøtt (03-12-2001)
Kommentar
Fra : Martin Skøtt


Dato : 03-12-01 00:33

Morten Grouleff <morten-nospam011202@grouleff.com> writes:

> Jeg har kikket lidt i "advanced routing howto" og har fundet ud af at
> route og fundet ud af at lave routing efter source-IP. Jeg kan derved
> dirrigere trafik fra en maskine på et intern IP til den af de to
> forbindelser, jeg vil, samtidig med at linux-maskinen bruger den anden
> linie som sin default route. Men denne opdeling melle de to linier er
> temmelig statisk...

Det er muligt vha. iproute kommandoen at definere flere default
gateways og så vil gatewayen så sørge for at dele trafikken ud imellem
de to interfaces også uden at bestemme det ud fra source maskinen. Jeg
har selv haft lavet et sådant setup, men jeg kan ikke huske de
nøjagtige kommandoer, men jeg kan dog huske at jeg fandt dem stående i
enten advanced routing HOWTO eller i noget af iproute2
dokumentationen. Jeg mener at der var et eksempel hvor det eneste jeg
skulle gøre var at ændre interfacene fra ppp til eth og så var den
klar. Det var på en 2.4.x kernel.

> Jeg er godt klar over at det ikke umiddelbart kan lade sig gøre at sende
> vilkårlig trafik ud over begge linier, da modtagerne ikke kan finde ud
> af at trafikken kommer fra een maskine når der er flere afsender-IP i
> pakkerne.

Lyder helt korrekt.
> Men for i hvert fald en bestemt brug må det kunne lade sig gøre:
> download af filer med f.eks. "download accelerator" fra windows. Den
> åbner flere uafhængige HTTP eller FTP sessions for at downloade en
> enkelt fil. Hvis man nu kunne få linux til at route nogle connections
> over den ene linie og nogen connections over den anden, ville effekten
> vel være at slå de to linier sammen mht til download tid for lige netop
> denne fil?

Nu kender jeg ikke pågældende program, men hvis det specifikt åbner
flere helt individuelle sessioner på serveren så skulle det vel virke
med flere default gateways.

> I praksis burde det kunne gøres ved at route på "source port". Og her
> kommer problemet: Det kan jeg ikke lige finde en overskuelig måde at
> gøre på. "ip route" kender vist ikke til protokoller og porte. Måske kan
> det laves ved at mærke pakkerne med iptables og route på baggrund af
> mærket?

Hmmm der tror jeg at du tabte mig.
--
Martin Skøtt
martin@z3n.dk

Morten Grouleff (07-12-2001)
Kommentar
Fra : Morten Grouleff


Dato : 07-12-01 23:35

martin@z3n.dk (Martin Skøtt) writes:

> Morten Grouleff <morten-nospam011202@grouleff.com> writes:
>
> > Jeg har kikket lidt i "advanced routing howto" og har fundet ud af at
> > route og fundet ud af at lave routing efter source-IP. Jeg kan derved
> > dirrigere trafik fra en maskine på et intern IP til den af de to
> > forbindelser, jeg vil, samtidig med at linux-maskinen bruger den anden
> > linie som sin default route. Men denne opdeling melle de to linier er
> > temmelig statisk...
>
> Det er muligt vha. iproute kommandoen at definere flere default
> gateways og så vil gatewayen så sørge for at dele trafikken ud imellem
> de to interfaces også uden at bestemme det ud fra source maskinen. Jeg
> har selv haft lavet et sådant setup, men jeg kan ikke huske de
> nøjagtige kommandoer, men jeg kan dog huske at jeg fandt dem stående i
> enten advanced routing HOWTO eller i noget af iproute2
> dokumentationen. Jeg mener at der var et eksempel hvor det eneste jeg
> skulle gøre var at ændre interfacene fra ppp til eth og så var den
> klar. Det var på en 2.4.x kernel.

Det er ret let: Definer to default routes og det er det. Det kan gøres
med almindelig gammeldags "route add". Problemet er at det så gælder al
trafik, der er trafiktyper, hvor jeg gerne vil tvinge den ene linie til
at blive valgt. Og værre er det vel at den kan finde på at svare på den
modsatte linie af hvor en indkommende request ankommer, hvilket ikke vil
sige modtageren i den anden ende noget, da det jo så kommer fra et helt
andet IP. (Jeg har jo ikke et fast routet IP gennem begge vej her)

Mvh.
--
Morten Grouleff.


Søg
Reklame
Statistik
Spørgsmål : 177557
Tips : 31968
Nyheder : 719565
Indlæg : 6408885
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste