Екі жоғары арна, бірақ бір туннель: ауысу, теңгеру немесе біріктіру
Ақау кезінде ауысу, ағын бойынша теңгеру және бір ағынды біріктіру — үш түрлі уәде. Екі әдепкі маршрут біріншісін береді, қалған екеуін бермейді.
Екі интернет желісі VPN-ны неғұрлым қолжетімді ете алады, ал кейбір жүктемелер үшін оны жылдамырақ та ете алады, бірақ осы екеуінің қайсысы болатынын механизм шешеді. Екі әдепкі маршруты бар маршрутизатор біріктірілмеген, ал мыңдаған ішкі қосылымды тасымалдайтын туннель әлі де бір сыртқы ағын. Уәдені бірінші атау — жоба мен қымбат көңіл қалудың арасындағы айырма. Төмендегі кесте нұсқаларды әрқайсысының алыс жақта не қажет ететініне және байланыс жоғалғанда тасымалдауға не болатынына қарай бөледі.
Үш уәде, және тек біреуіне серіктес керек
Ақау кезінде ауысу таңдаулы байланыс жойылғанда жолды қолжетімді ұстайды. Ағын хэші бойынша теңгеру тәуелсіз ағындарды екі жоғары арнаға таратады. Бір ағынды біріктіру бір тасымалдауға екі байланысты бір уақытта пайдалануға мүмкіндік береді. Бұлар талаптары әртүрлі әртүрлі өнімдер, және тек соңғысына маршрутизаторыңыздан тыс бір нәрсенің ынтымақтастығы қажет.
| 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 |
Ол кестеде екінші желі сатып алуға себеп болатын ештеңе жоқ. Ол бір нәрсе істейді: ауысу жобасын біріктіру ретінде бағалауға жол бермейді.
Неге туннель маршрутизаторға бір ағын болып көрінеді
Жүктемені теңгеретін маршрутизатор дереккөз және тағайындалу мекенжайларын порттармен бірге хэштейді, содан кейін бүкіл ағынды хэш көрсеткен жерге жібереді. VPN туннелі маршрутизатор тұрғысынан дәл осындай бір ағын, ішінде не жүріп жатқанына қарамастан. Ішкі қосылымдар хэш шешіміне ешқашан жетпейді, өйткені сыртқы тақырып жолды әлдеқашан анықтаған. Сондықтан екінші жоғары арна көп пайдаланушы үшін жалпы сыйымдылықты екі есе арттыра алады, ал бір пайдаланушының үлкен тасымалдауына ештеңе өзгертпейді.
Екі бөлек туннель сізге екі үміткер бере алады, бірақ оларға әлі де трафикті бөлетін және жауаптарды сұраныс өткен жолда ұстайтын әдейі саясат керек. Асимметриялық маршруттау — сол қадамды өткізіп жіберудің әдеттегі нәтижесі. Ең азы — ағынды, таңдаулы байланысты және қосалқы байланысты атайтын саясат.
Ethernet біріктіруі байланыссыз провайдерлерді кесіп өтпейді, өйткені алыс жақ біріктіру протоколына қатысуы керек. Екі интернет провайдері арасындағы біріктіру — ынтымақтасатын соңғы нүкте болмаса, зерттеу жобасы.
Көпағынды TCP екі жақта не талап етеді
Linux-тың Multipath TCP құжаттамасы бір қосылымға жататын бірнеше ішкі ағынды сипаттайды. Бір жақтағы ядро қолдауы өздігінен ештеңе өзгертпейді, өйткені серіктес те бұл ішкі ағындарды қабылдауы керек. Алыс жақтағы прокси — екінші жиі кездесетін шешім, және ол жоспарлауды қажет ететін өз сыйымдылығы мен қолжетімділігі бар компонентке айналады. Сол логика WireGuard үшін оңай жауапты жоққа шығарады, оның тасымалы UDP: MPTCP TCP ішкі ағындарын өсіреді және жобада басқа нәрсесіз ол туннельді біріктіре алмайды.
Ядро функциясы қосылғанын оның айналасында жобалаудан бұрын тексеріңіз, өйткені көптеген дистрибутивтер оны өшірілген күйде жеткізеді. Осы үш команда бұған бір минутта жауап береді.
sysctl net.mptcp.enabled
ss -M | head
ip mptcp limits show
Брошюрадан емес, жүктемеден таңдаңыз
Егер жүктеме көптеген тәуелсіз сессия болса, ағын хэші бойынша теңгеру алыс жақтың ынтымақтастығынсыз сыйымдылық қоса алады. Егер бір үлкен тасымалдау болса, тек біріктіру жобасы көмектеседі, және ол жобаға ынтымақтасатын серіктес керек. Егер талап байланыс өлгенде жұмыстың жалғасуы болса, жауап — ауысу, ал бір тасымалдаудың өткізу қабілеті маңызды емес.
Талапты құрамында етістігі бар бір сөйлеммен жазыңыз: бір резервтік көшірме екі есе жылдам бітеді, немесе құлаған байланыс сессияны аяқтамайды. Бұлыңғыр мақсаттар ешкім қабылдай да, қабылдамай да алмайтын жобалар туғызады. Содан кейін алыс жақтың не бола алатынын шешіңіз, өйткені ең арзан нұсқа көбіне сол жерде жаңа ештеңе талап етпейтін нұсқа. Бұл шектеу бірінші кездесуден бұрын брошюраның көптеген тұжырымдарын жояды.
Талаптар құжатында үш уәдені бөлек ұстаңыз. Үшеуін де мәлімдейтін жоба әдетте біреуін береді және қалғандарын үнсіз болжайды. Келесі бөлім қайсысы шын мәнінде берілетінін тексереді.
Бір тасымалдауды және көпті сынаңыз, содан кейін байланысты үзіңіз
Бір үздіксіз тасымалдауды сол тағайындалуға бірнеше параллель тасымалдаумен салыстырыңыз, және әрқайсысы үшін жоғалтуды, кідірісті және әр байланыстың пайдаланылуын жазыңыз. Тек параллель сессияларда ғана пайда болса, бұл ағындардың таралуын көрсетеді, бір ағынды біріктіруді емес. Бір жоғары арнаның жоғалуын бөлек сынаңыз, өйткені екі байланыс жұмыс істеп тұрғандағы сыйымдылық орнатылған сессия үшін ауысу туралы ештеңе айтпайды. Әр сынақтың алдында және кейін маршрутты, сокетті және қайта жіберу санауыштарын жазып алыңыз.
ip route show default
ip route get 10.80.0.5
mtr -n -c 20 -r 10.80.0.5
Бір тасымалдау әлі де бір жоғары арнаны пайдаланса, жоба ағын хэші меңзеген нәрсені дәл істеп жатыр. Параллель тасымалдаулар екеуіне таралса, теңгеру жұмыс істейді, ал біріктіру істемейді. Жоба үш уәденің қайсысын шын мәнінде ұстанатынын жазыңыз, және келесі сыйымдылық әңгімесі жеткізушінің мәлімдемесінен емес, дәлелдерден басталады.