Twa ferbindings omheech mar ien tunnel: oerskeakelje, balansearje of bondelje
Oerskeakelje by falen, balansearjen per stream en it bondeljen fan ien stream binne tri ferskillende beloften. Twa standertrûtes jouwe jo it earste, en net de oare twa.
Twa ynternetlinen kinne in VPN better beskikber meitsje, en se kinne it foar guon wurklasten flugger meitsje, mar it meganisme beslút hokker fan dy twa bart. In router mei twa standertrûtes is net bondele, en in tunnel dy’t tûzenen ynterne ferbinings draacht is noch altyd ien bûtenste stream. It belofte earst neame is it ferskil tusken in ûntwerp en in djoere teloarstelling. De tabel hjirûnder skiedt de opsjes nei wat elk oan de oare kant nedich hat en wat ferlies fan in keppeling mei in oerdracht docht.
Trije beloften, en mar ien hat in partner nedich
Oerskeakelje by falen hâldt in paad beskikber as de foarkarskeppeling ferdwynt. Balansearjen op streamhash ferspriedet ûnôfhinklike streamen oer beide ferbindings omheech. It bondeljen fan ien stream lit ien oerdracht beide keppelings tagelyk brûke. Dat binne ferskillende produkten mei ferskillende easken, en allinnich de lêste hat gearwurking fan eat bûten jo router nedich.
| Mechanism | Far-end requirement | Effect on one transfer | What breaks under a link loss |
|---|---|---|---|
| Packet-spraying overlay | A cooperating endpoint that reassembles the stream | Packets can spread across both links | Reordering and buffering on the surviving path; its own recovery logic decides what continues |
| MPTCP subflows | A peer or proxy that accepts subflows | Subflows can share one connection | Surviving subflows continue if the peer keeps them alive |
| Flow-hash balancing | Nothing new; the existing tunnel endpoint is enough | One outer flow still follows one link | Flows hashed onto the dead link move; established sessions break |
| Link failover | Nothing new | One path at a time; the second link sits idle | The session stalls or restarts on the other link |
Neat yn dy tabel is in reden om in twadde line te keapjen. Wat it docht is foarkomme dat in ûntwerp foar oerskeakeljen beoardiele wurdt as wie it bondeljen.
Wêrom’t in tunnel foar de router as ien stream liket
In router dy’t lading balansearret hasht boarne- en bestimmingsadressen tegearre mei poarten en stjoert dan de hiele stream dêr’t de hash hinne wiist. In VPN-tunnel is út it eachpunt fan ’e router ien sa’n stream, wat der ek yn rint. Ynterne ferbinings berikke nea it hashbeslút, want de bûtenste kop hat it paad al bepaald. Dêrom kin in twadde ferbining omheech de totale kapasiteit foar in soad brûkers ferdûbelje en foar de grutte oerdracht fan ien brûker neat feroarje.
Twa aparte tunnels kinne jo twa kandidaten jaan, mar se hawwe noch altyd in bewuste belied nedich dat ferkear tawiist en antwurden op it paad hâldt dat de oanfraach droech. Asymmetrysk routerjen is it gewoane gefolch fan it oerslaan fan dy stap. It minimum is in belied dat de stream, de foarkarskeppeling en de reservekeppeling neamt.
Ethernet-bondeljen giet net oer net besibbe providers, want de oare kant moat oan it aggregaasjeprotokol meidwaan. In bondel oer twa providers is in ûndersyksprojekt, útsein as der in gearwurkjend einpunt bestiet.
Wat multipath-TCP oan beide kanten nedich hat
De Linux-dokumintaasje oer Multipath TCP beskriuwt ferskate substreamen dy’t by ien ferbining hearre. Kernelstipe oan ien kant feroaret op himsels neat, want de tsjinpart moat dy substreamen ek akseptearje. In proxy oan de oare kant is de oare gewoane regeling, en it wurdt in komponint mei syn eigen kapasiteit en beskikberens om foar te plannen. Deselde logika slút in maklik antwurd foar WireGuard út, waans ferfier UDP is: MPTCP groeit TCP-substreamen en kin dy tunnel net bondelje sûnder eat oars yn it ûntwerp.
Kontrolearje oft de kernelfunksje ynskeakele is foardat jo deromhinne ûntwerpe, want in soad distribúsjes leverje it útskeakele. Dizze trije opdrachten beantwurdzje dat yn in minút.
sysctl net.mptcp.enabled
ss -M | head
ip mptcp limits show
Kies út de wurklast, net út ’e brosjuere
As de wurklast in soad ûnôfhinklike sesjes is, kin balansearjen op streamhash kapasiteit tafoegje sûnder gearwurking oan de oare kant. As it ien grutte oerdracht is, helpt allinnich in aggregaasje-ûntwerp, en dat ûntwerp hat in gearwurkjende tsjinpart nedich. As de eask is dat wurk trochgiet as in keppeling stjert, is oerskeakeljen it antwurd en is de trochfier fan ien oerdracht net fan belang.
Skriuw de eask yn ien sin mei in tiidwurd deryn: ien reservekopy is twa kear sa fluch klear, of in fallen keppeling einiget in sesje net. Fage doelen leverje ûntwerpen dy’t nimmen akseptearje of ôfwize kin. Beslút dan wat de oare kant wêze mei, want de goedkeapste opsje is faak dy’t dêr neat nijs freget. Dy beheining hellet de measte brosjuerebewearings fuort foar de earste gearkomste.
Hâld de trije beloften apart yn it eask-dokumint. In ûntwerp dat alle trije beweart, leveret meastentiids ien en nimt de oaren stil oan. De folgjende seksje testet hokker echt levere wurdt.
Test ien oerdracht en in soad, lûk dan in keppeling
Fergelykje ien oanhâldende oerdracht mei ferskate parallelle oerdrachten nei itselde bestimming, en registrearje ferlies, fertraging en gebrûk per keppeling foar elk. Winst allinnich mei parallelle sesjes wiist op fersprieding fan streamen, net op it bondeljen fan ien stream. Test it ferlies fan ien ferbining omheech apart, want kapasiteit wylst beide keppelings wurkje seit neat oer oerskeakeljen foar in fêstige sesje. Registrearje de rûte, de socket en de werstjoertellers foar en nei elke test.
ip route show default
ip route get 10.80.0.5
mtr -n -c 20 -r 10.80.0.5
As de ienige oerdracht noch ien ferbining omheech brûkt, docht it ûntwerp krekt wat in streamhash betsjut. As parallelle oerdrachten oer beide ferspriede, wurket it balansearjen en it bondeljen net. Registrearje hokker fan ’e trije beloften it ûntwerp echt hâldt, en it folgjende kapasiteitspetear begjint mei bewiis ynstee fan in bewearing fan in leveransier.