Екі интернет желісі VPN-ны неғұрлым қолжетімді ете алады, ал кейбір жүктемелер үшін оны жылдамырақ та ете алады, бірақ осы екеуінің қайсысы болатынын механизм шешеді. Екі әдепкі маршруты бар маршрутизатор біріктірілмеген, ал мыңдаған ішкі қосылымды тасымалдайтын туннель әлі де бір сыртқы ағын. Уәдені бірінші атау — жоба мен қымбат көңіл қалудың арасындағы айырма. Төмендегі кесте нұсқаларды әрқайсысының алыс жақта не қажет ететініне және байланыс жоғалғанда тасымалдауға не болатынына қарай бөледі.

Үш уәде, және тек біреуіне серіктес керек

Ақау кезінде ауысу таңдаулы байланыс жойылғанда жолды қолжетімді ұстайды. Ағын хэші бойынша теңгеру тәуелсіз ағындарды екі жоғары арнаға таратады. Бір ағынды біріктіру бір тасымалдауға екі байланысты бір уақытта пайдалануға мүмкіндік береді. Бұлар талаптары әртүрлі әртүрлі өнімдер, және тек соңғысына маршрутизаторыңыздан тыс бір нәрсенің ынтымақтастығы қажет.

MechanismFar-end requirementEffect on one transferWhat breaks under a link loss
Packet-spraying overlayA cooperating endpoint that reassembles the streamPackets can spread across both linksReordering and buffering on the surviving path; its own recovery logic decides what continues
MPTCP subflowsA peer or proxy that accepts subflowsSubflows can share one connectionSurviving subflows continue if the peer keeps them alive
Flow-hash balancingNothing new; the existing tunnel endpoint is enoughOne outer flow still follows one linkFlows hashed onto the dead link move; established sessions break
Link failoverNothing newOne path at a time; the second link sits idleThe 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

Бір тасымалдау әлі де бір жоғары арнаны пайдаланса, жоба ағын хэші меңзеген нәрсені дәл істеп жатыр. Параллель тасымалдаулар екеуіне таралса, теңгеру жұмыс істейді, ал біріктіру істемейді. Жоба үш уәденің қайсысын шын мәнінде ұстанатынын жазыңыз, және келесі сыйымдылық әңгімесі жеткізушінің мәлімдемесінен емес, дәлелдерден басталады.

Қатысты мақалалар