Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Հնարավո՞ր է մի քանի ինտերնետ ալիք միավորել մեկի մեջ: Այս թեմայի շուրջ կան բազմաթիվ սխալ պատկերացումներ և առասպելներ, նույնիսկ փորձառու ցանցային ինժեներները հաճախ չգիտեն, որ դա հնարավոր է: Շատ դեպքերում, հղումների ագրեգացումը սխալմամբ կոչվում է NAT հավասարակշռում կամ ձախողում: Բայց իրական գումարումը թույլ է տալիս միաժամանակ գործարկել մեկ TCP կապ բոլոր ինտերնետային ալիքներով, օրինակ՝ տեսահեռարձակում, որպեսզի եթե ինտերնետ ալիքներից որևէ մեկը ընդհատվի, հեռարձակումը չընդհատվի։

Տեսահեռարձակման համար կան թանկարժեք կոմերցիոն լուծումներ, սակայն նման սարքերն արժեն շատ կիլոգրամներ։ Հոդվածը նկարագրում է OpenMPTCPRouter-ի անվճար բաց փաթեթի կազմաձևումը և վերաբերում է ալիքների ամփոփման մասին հայտնի առասպելներին:

Առասպելներ ալիքների ամփոփման մասին

Կան բազմաթիվ տնային երթուղիչներ, որոնք աջակցում են Multi-WAN ֆունկցիան: Երբեմն արտադրողներն այս ալիքն անվանում են ամփոփում, ինչը լիովին ճիշտ չէ: Շատ networkers կարծում են, որ ի լրումն LACP և գումարումը L2 շերտում, այլ ալիքների ագրեգացիա գոյություն չունի: Հաճախ էի լսել, որ դա ընդհանրապես անհնար է հեռահաղորդակցական ոլորտում աշխատող մարդկանցից: Հետեւաբար, եկեք փորձենք հասկանալ ժողովրդական առասպելները:

Հավասարակշռում IP կապերի մակարդակում

Սա միաժամանակ մի քանի ինտերնետային ալիքներ օգտագործելու ամենամատչելի և հանրաճանաչ միջոցն է: Պարզության համար, եկեք պատկերացնենք, որ դուք ունեք երեք ISP, որոնցից յուրաքանչյուրը ձեզ տալիս է իրական IP հասցե իրենց ցանցից: Այս բոլոր պրովայդերները միացված են երթուղիչին՝ Multi-WAN ֆունկցիայի աջակցությամբ: Սա կարող է լինել OpenWRT mwan3 փաթեթով, mikrotik, ubiquiti կամ ցանկացած այլ կենցաղային երթուղիչ, քանի որ այժմ այս տարբերակն այլևս հազվադեպ չէ:

Իրավիճակը մոդելավորելու համար պատկերացրեք, որ մատակարարները մեզ տվել են հետևյալ հասցեները.

WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33

Այսինքն՝ միանալով հեռավոր սերվերին example.com Պրովայդերներից յուրաքանչյուրի միջոցով հեռավոր սերվերը կտեսնի հաճախորդի երեք անկախ աղբյուրի ip: Բալանսավորումը թույլ է տալիս բեռը բաժանել ալիքների վրա և միաժամանակ օգտագործել դրանք երեքը: Պարզության համար եկեք պատկերացնենք, որ բեռը հավասարապես բաժանում ենք բոլոր ալիքների միջև։ Արդյունքում, երբ հաճախորդը պայմանականորեն բացում է երեք պատկերով կայք, նա ներբեռնում է յուրաքանչյուր պատկեր առանձին մատակարարի միջոցով։ Կայքի կողմից այն կարծես միացումներ լինի երեք տարբեր IP-ներից:

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter
Միացման մակարդակում հավասարակշռելիս յուրաքանչյուր TCP կապ անցնում է առանձին մատակարարի միջոցով:

Այս հավասարակշռման ռեժիմը հաճախ խնդիրներ է առաջացնում օգտվողների համար: Օրինակ, շատ կայքեր կոշտ մետաղալարով թխուկներ և նշաններ են կապում հաճախորդի IP հասցեին, և եթե այն հանկարծակի փոխվի, հարցումը հանվում է կամ հաճախորդը դուրս է գալիս կայքից: Սա հաճախ վերարտադրվում է հաճախորդ-բանկ համակարգերում և օգտատերերի նիստերի խիստ կանոններով այլ կայքերում: Ահա մի պարզ պատկերավոր օրինակ. VK.com-ում երաժշտական ​​ֆայլերը հասանելի են միայն վավեր սեսիայի բանալիով, որը կապված է IP-ի հետ, և նման հավասարակշռում օգտագործող հաճախորդները հաճախ չեն նվագարկում աուդիո, քանի որ հարցումը չի անցել այն մատակարարի միջոցով, որին նիստը պարտադիր է.

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter
Հեղեղներ ներբեռնելիս, կապի մակարդակում հավասարակշռումը գումարում է բոլոր ալիքների թողունակությունը

Նման հավասարակշռումը թույլ է տալիս ստանալ ինտերնետ ալիքի արագության հանրագումարը բազմաթիվ կապեր օգտագործելիս: Օրինակ, եթե երեք պրովայդերներից յուրաքանչյուրն ունի 100 մեգաբիթ արագություն, ապա տորենտներ ներբեռնելիս մենք կստանանք 300 մեգաբիթ։ Քանի որ հեղեղը բացում է բազմաթիվ կապեր, որոնք բաշխվում են բոլոր պրովայդերների միջև և ի վերջո օգտագործում են ամբողջ ալիքը:

Կարևոր է հասկանալ, որ մեկ TCP կապը միշտ կանցնի միայն մեկ մատակարարի միջոցով: Այսինքն, եթե մեկ մեծ ֆայլ ներբեռնենք HTTP-ով, ապա այս կապը կկատարվի պրովայդերներից մեկի միջոցով, իսկ եթե այս պրովայդերի հետ կապը խզվի, ապա ներբեռնումը նույնպես կդադարեցվի։

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter
Մեկ կապը միշտ կօգտագործի միայն մեկ ինտերնետային ալիք

Սա ճիշտ է նաև տեսահեռարձակումների դեպքում: Եթե ​​դուք հեռարձակում եք հոսքային տեսանյութ ինչ-որ պայմանական Twitch-ով, ապա IP կապերի մակարդակում հավասարակշռումը որևէ առանձնահատուկ օգուտ չի տա, քանի որ վիդեո հոսքը կհեռարձակվի մեկ IP կապի շրջանակներում: Այս դեպքում, եթե WAN 3 մատակարարի մոտ սկսվեն հաղորդակցման խնդիրներ, ինչպիսիք են փաթեթների կորուստը կամ դանդաղեցումը, ապա դուք չեք կարողանա անմիջապես անցնել այլ մատակարարի: Հեռարձակումը պետք է դադարեցվի և նորից միացվի։

Ճշմարիտ ալիքի ամփոփում

Ալիքների իրական գումարումը հնարավորություն է տալիս միանգամից բոլոր պրովայդերների միջոցով մեկ կապ սկսել պայմանական Twitch-ին այնպես, որ եթե պրովայդերներից որևէ մեկը խզվի, կապը չընդհատվի: Սա զարմանալիորեն բարդ խնդիր է, որը դեռ չունի օպտիմալ լուծում։ Շատերը նույնիսկ չգիտեն, որ դա հնարավոր է:

Նախորդ նկարազարդումներից մենք հիշում ենք, որ պայմանական Twitch սերվերը կարող է մեզանից վիդեո հոսք ստանալ միայն մեկ աղբյուրի IP հասցեից, ինչը նշանակում է, որ այն միշտ պետք է մշտական ​​լինի մեզ հետ՝ անկախ նրանից, թե որ մատակարարներն են ընկել և որոնք են աշխատում: Դրան հասնելու համար մեզ անհրաժեշտ է ամփոփման սերվեր, որը կդադարեցնի մեր բոլոր կապերը և կմիավորի դրանք մեկի մեջ:

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter
Գումարի սերվերը միավորում է բոլոր ալիքները մեկ թունելում: Բոլոր կապերը ծագում են ամփոփման սերվերի հասցեից

Այս սխեման օգտագործում է բոլոր պրովայդերները, և դրանցից որևէ մեկի անջատումը չի հանգեցնի Twitch սերվերի հետ կապի կորստի: Իրականում սա հատուկ VPN թունել է, որի գլխարկի տակ միանգամից մի քանի ինտերնետային ալիք կա։ Նման սխեմայի հիմնական խնդիրն է ձեռք բերել ամենաբարձր որակի կապի ալիքը: Եթե ​​խնդիրները սկսվում են մատակարարներից մեկում, փաթեթների կորուստ, ուշացումների ավելացում, ապա դա ոչ մի կերպ չպետք է ազդի հաղորդակցության որակի վրա, քանի որ բեռը ավտոմատ կերպով կբաշխվի հասանելի այլ, ավելի լավ ալիքների վրա:

Առևտրային լուծումներ

Այս խնդիրը վաղուց մտահոգում է նրանց, ովքեր ուղիղ հեռարձակում են իրադարձությունները և չունեն բարձրորակ ինտերնետ: Նման առաջադրանքների համար կան մի քանի առևտրային լուծումներ, օրինակ, Teradek-ը պատրաստում է այնպիսի հրեշավոր երթուղիչներ, որոնց մեջ տեղադրվում են USB մոդեմների փաթեթներ.

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter
Հեռարձակման վիդեո երթուղիչ՝ ալիքների ամփոփման գործառույթով

Նման սարքերը սովորաբար ունեն HDMI-ի կամ SDI-ի միջոցով տեսանկարահանելու հնարավորություն: Երթուղիչի հետ միասին վաճառվում է ալիքի ամփոփման ծառայության բաժանորդագրություն, ինչպես նաև մշակվում է վիդեո հոսքը, այն տրանսկոդավորվում և հետագայում վերահաղորդվում: Նման սարքերի գինը սկսվում է 2 հազար դոլարից՝ մոդեմների հավաքածուով, գումարած ծառայության առանձին բաժանորդագրություն։

Երբեմն դա բավականին վախեցնող է թվում.

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

OpenMPTCPRouter-ի կարգավորում

Արձանագրություն MP-TCP (MultiPath TCP) ստեղծվել է միանգամից մի քանի ալիքներով միանալու հնարավորության համար: Օրինակ՝ իր աջակցում է iOS-ին և կարող է միաժամանակ միանալ հեռավոր սերվերին WiFi-ի և բջջային ցանցի միջոցով: Կարևոր է հասկանալ, որ դրանք երկու առանձին TCP կապեր չեն, այլ մեկ կապ, որը հաստատվել է միանգամից երկու ալիքով: Որպեսզի դա աշխատի, հեռավոր սերվերը նույնպես պետք է աջակցի MPTCP-ին:

OpenMPTCPRouter բաց կոդով ծրագրային երթուղիչի նախագիծ է, որը թույլ է տալիս իրական գումարել ալիքները: Հեղինակները նշում են, որ նախագիծը գտնվում է ալֆա տարբերակի կարգավիճակում, սակայն այն արդեն կարելի է օգտագործել։ Այն բաղկացած է երկու մասից՝ ամփոփիչ սերվերից, որը գտնվում է ինտերնետում և երթուղիչից, որին միացված են մի քանի ինտերնետ պրովայդերներ և հաճախորդի սարքեր՝ համակարգիչներ, հեռախոսներ։ Պատվերով երթուղիչը կարող է լինել Raspberry Pi, որոշ WiFi երթուղիչներ կամ սովորական համակարգիչ: Կան պատրաստի հավաքներ տարբեր հարթակների համար, ինչը շատ հարմար է։

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter
Ինչպես է աշխատում OpenMPTCPRouter-ը

Ամփոփման սերվերի կարգավորում

Ամփոփիչ սերվերը գտնվում է ինտերնետում և դադարեցնում է կապերը հաճախորդի երթուղիչի բոլոր ալիքներից մեկի մեջ: Այս սերվերի IP հասցեն կլինի արտաքին հասցեն OpenMPTCPRouter-ի միջոցով ինտերնետ մուտք գործելիս:

Այս առաջադրանքի համար մենք կօգտագործենք VPS սերվեր Debian 10:

Ամփոփման սերվերի պահանջներ.

  • MPTCP-ն չի աշխատում OpenVZ վիրտուալացման վրա
  • Պետք է հնարավոր լինի տեղադրել ձեր սեփական միջուկը Linux

Սերվերը տեղակայվում է մեկ հրամանի գործարկմամբ: Սկրիպտը կտեղադրի mptcp աջակցությամբ միջուկ և բոլոր անհրաժեշտ փաթեթները: Տեղադրման սկրիպտները հասանելի են Ubuntu и Debian.

wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh

Սերվերի հաջող տեղադրման արդյունքը:

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Մենք պահպանում ենք գաղտնաբառերը, մեզ անհրաժեշտ կլինեն հաճախորդի երթուղիչը կարգավորելու և վերագործարկելու համար: Կարևոր է հիշել, որ տեղադրումից հետո SSH-ը հասանելի կլինի 65222 նավահանգստում: Վերագործարկվելուց հետո մենք պետք է համոզվենք, որ մենք բեռնում ենք նոր միջուկով:

uname -a 
Linux test-server.local 4.19.67-mptcp

Մենք տեսնում ենք mptcp մակագրությունը տարբերակի համարի կողքին, ինչը նշանակում է, որ միջուկը ճիշտ է տեղադրվել։

Հաճախորդի երթուղիչի կարգավորում

On նախագծի կայքը Որոշ հարթակների համար հասանելի են պատրաստի կառուցվածքներ, ինչպիսիք են Raspberry Pi, Banana Pi, Lynksys երթուղիչները և վիրտուալ մեքենաները:
Openmptcprouter-ի այս մասը հիմնված է OpenWRT-ի վրա՝ օգտագործելով LuCI-ն որպես ինտերֆեյս, որը ծանոթ է բոլորին, ովքեր երբևէ հանդիպել են OpenWRT-ին: Բաշխման փաթեթը կշռում է մոտ 50 Մբ:

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Որպես թեստային նստարան, ես կօգտագործեմ Raspberry Pi-ն և մի քանի USB մոդեմներ տարբեր օպերատորներով՝ MTS և Megafon: Ինչպես գրել պատկեր SD քարտի վրա, կարծում եմ, կարիք չկա ասելու:

Սկզբում Raspberry Pi-ում Ethernet պորտը կազմաձևված է որպես LAN՝ ստատիկ IP հասցեով: 192.168.100.1. Որպեսզի սեղանի վրա դրված լարերը չխառնվեն, ես Raspberry Pi-ն միացրեցի WiFi մուտքի կետին և ստատիկ հասցե դրեցի համակարգչի WiFi ադապտերի վրա: 192.168.100.2. DHCP սերվերը լռելյայն միացված չէ, ուստի պետք է օգտագործվեն ստատիկ հասցեներ:

Այժմ կարող եք գնալ վեբ ինտերֆեյս 192.168.100.1

Երբ առաջին անգամ մուտք գործեք, համակարգը ձեզ կխնդրի սահմանել root գաղտնաբառը, SSH-ը հասանելի կլինի նույն գաղտնաբառով:

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter
LAN-ի կարգավորումներում կարող եք սահմանել ցանկալի ենթացանցը և միացնել DHCP սերվերը:

Ես օգտագործում եմ մոդեմներ, որոնք սահմանված են որպես USB ethernet ինտերֆեյսեր առանձին DHCP սերվերով, ուստի սա պահանջում է տեղադրում լրացուցիչ փաթեթներ. Ընթացակարգը նույնական է սովորական OpenWRT-ում մոդեմների կազմաձևման հետ, ուստի ես այն այստեղ չեմ անդրադառնա:

Հաջորդը, դուք պետք է կարգավորեք WAN միջերեսները: Սկզբում համակարգում ստեղծվեցին երկու վիրտուալ ինտերֆեյսներ WAN1 և WAN2: Նրանք պետք է ֆիզիկական սարք նշանակեն, իմ դեպքում սրանք USB մոդեմի ինտերֆեյսների անուններն են:

Որպեսզի չշփոթվեք ինտերֆեյսի անունների մեջ, խորհուրդ եմ տալիս դիտել dmesg հաղորդագրությունները SSH-ի միջոցով միացած լինելու ընթացքում։

Քանի որ իմ մոդեմները իրենք են գործում որպես երթուղիչներ և իրենք ունեն DHCP սերվեր, ես ստիպված էի փոխել նրանց ներքին ցանցի տիրույթների կարգավորումները և անջատել DHCP սերվերը, քանի որ սկզբում երկու մոդեմներն էլ հասցեներ են թողարկում նույն ցանցից, և դա առաջացնում է կոնֆլիկտ:

OpenMPTCPRouter-ը պահանջում է, որ WAN ինտերֆեյսի հասցեները լինեն ստատիկ, ուստի մենք մոդեմների համար ենթացանց ենք ստեղծում և դրանք կարգավորում ենք համակարգում → openmptcprouter → ինտերֆեյսի կարգավորումների ցանկում: Այստեղ դուք նույնպես պետք է նշեք ամփոփման սերվերի տեղադրման ընթացքում ստացված IP հասցեն և սերվերի բանալին:

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Հաջող տեղադրման դեպքում նմանատիպ նկար պետք է հայտնվի կարգավիճակի էջում: Կարելի է տեսնել, որ երթուղիչը կարողացել է հասնել ամփոփման սերվերին և երկու ալիքներն էլ նորմալ են աշխատում։

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Նախնական ռեժիմը shadowsocks + mptcp է: Սա այնպիսի վստահված անձ է, որն իր մեջ փաթաթում է բոլոր կապերը: Սկզբում այն ​​կազմաձևված է միայն TCP-ի համար, բայց կարող եք նաև միացնել UDP-ն:

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Եթե ​​կարգավիճակի էջում սխալներ չկան, կարգավորումը կարելի է համարել ավարտված:
Որոշ պրովայդերների դեպքում կարող է առաջանալ իրավիճակ, երբ mptcp դրոշը կտրված է երթևեկության ուղու երկայնքով, ապա նման սխալ կլինի.

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Այս դեպքում դուք կարող եք օգտագործել այլ գործողության ռեժիմ, առանց MPTCP-ի օգտագործման, ավելին այս մասին այստեղ.

Ամփոփում

OpenMPTCPRouter նախագիծը շատ հետաքրքիր և կարևոր է, քանի որ այն ալիքների ամփոփման խնդրի, թերևս, միակ բաց համալիր լուծումն է: Մնացած ամեն ինչ կա՛մ ամուր փակված է և սեփականության իրավունքով, կա՛մ պարզապես առանձին մոդուլներ, որոնց հետ սովորական մարդը չի կարող զբաղվել։ Զարգացման ներկա փուլում նախագիծը դեռևս բավականին հում է, չափազանց վատ փաստաթղթեր, շատ բաներ պարզապես նկարագրված չեն: Բայց միևնույն ժամանակ այն դեռ աշխատում է։ Հուսով եմ, որ այն կշարունակի զարգանալ, և մենք կստանանք կենցաղային երթուղիչներ, որոնք ի վիճակի կլինեն համատեղել ալիքները, սովորաբար, առանց տուփի:

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Հետևեք մեր մշակողին Instagram-ում

Ինտերնետային ալիքների իրական ամփոփում - OpenMPTCPRouter

Source: www.habr.com

Գնեք հուսալի հոստինգ DDoS պաշտպանությամբ կայքերի, VPS VDS սերվերների համար 🔥 Գնեք հուսալի կայքերի հոսթինգ՝ DDoS պաշտպանությամբ, VPS VDS սերվերներով | ProHoster