Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Bir nechta Internet-kanallarni bitta kanalga birlashtirish mumkinmi? Ushbu mavzu atrofida juda ko'p noto'g'ri tushunchalar va afsonalar mavjud, hatto tajribali tarmoq muhandislari ham ko'pincha bu mumkinligini bilishmaydi. Ko'pgina hollarda, havolalarni birlashtirish noto'g'ri NAT darajasida balanslash yoki o'zgartirish deb ataladi. Ammo haqiqiy yig'ish imkon beradi barcha Internet kanallari orqali bir vaqtning o'zida bitta TCP ulanishini ishga tushiring, masalan, Internet-kanallardan birortasi uzilib qolsa, eshittirish to'xtatilmasligi uchun video eshittirish.

Video eshittirishlar uchun qimmat tijoriy echimlar mavjud, ammo bunday qurilmalar juda ko'p kilobuklar turadi. Maqolada bepul, ochiq manbali OpenMPTCPRouter to'plamini qanday sozlash kerakligi tasvirlangan va kanallarni yig'ish haqidagi mashhur afsonalarga murojaat qilinadi.

Kanallarni yig'ish haqidagi afsonalar

Multi-WAN funksiyasini qo'llab-quvvatlaydigan ko'plab uy routerlari mavjud. Ba'zida ishlab chiqaruvchilar ushbu kanalni yig'ish deb atashadi, bu mutlaqo to'g'ri emas. Ko'pgina tarmoqchilar bunga qo'shimcha ravishda ishonishadi YO'Q va L2 darajasida yig'indi, boshqa kanal yig'ish mavjud emas. Men ko'pincha telekomda ishlaydigan odamlardan buning iloji yo'qligini eshitganman. Shuning uchun, keling, mashhur afsonalarni tushunishga harakat qilaylik.

IP ulanish darajasida muvozanatlash

Bu bir vaqtning o'zida bir nechta Internet-kanallardan foydalanishning eng arzon va mashhur usuli. Oddiylik uchun sizda uchta Internet-provayder bor deb tasavvur qilaylik, ularning har biri sizga o'z tarmog'idan haqiqiy IP-manzilni beradi. Ushbu provayderlarning barchasi Multi-WAN funksiyasini qo'llab-quvvatlaydigan routerga ulangan. Bu mwan3 to'plami, mikrotik, ubiquiti yoki boshqa har qanday maishiy router bilan OpenWRT bo'lishi mumkin, chunki bunday imkoniyat endi kamdan-kam uchraydi.

Vaziyatni taqlid qilish uchun provayderlar bizga quyidagi manzillarni bergan deb tasavvur qilaylik:

WAN1 β€” 11.11.11.11
WAN2 β€” 22.22.22.22
WAN2 β€” 33.33.33.33

Ya'ni, uzoq serverga ulanish example.com Har bir provayder orqali masofaviy server uchta mustaqil manba IP mijozini ko'radi. Balanslash yukni kanallar bo'ylab taqsimlash va ularning uchtasini bir vaqtning o'zida ishlatish imkonini beradi. Oddiylik uchun biz yukni barcha kanallar o'rtasida teng taqsimlaymiz, deb tasavvur qilaylik. Natijada, mijoz uchta rasmli saytni ochganda, har bir rasmni alohida provayder orqali yuklab oladi. Sayt tomonida u uch xil IP-dan ulanishga o'xshaydi.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter
Ulanish darajasida muvozanatlashda har bir TCP ulanishi alohida provayder orqali o'tadi.

Ushbu muvozanat rejimi ko'pincha foydalanuvchilar uchun muammolarni keltirib chiqaradi. Misol uchun, ko'pgina saytlar cookie fayllari va tokenlarni mijozning IP-manziliga qat'iy bog'laydi va agar u to'satdan o'zgarsa, so'rov rad etiladi yoki mijoz saytdan chiqib ketadi. Bu ko'pincha mijoz-bank tizimlarida va qat'iy foydalanuvchi sessiyasi qoidalariga ega bo'lgan boshqa saytlarda takrorlanadi. Mana oddiy tasviriy misol: VK.com-dagi musiqa fayllari faqat IP-ga bog'langan haqiqiy seans kaliti bilan mavjud va bunday balanslashdan foydalanadigan mijozlar ko'pincha ovozni o'ynamaydilar, chunki so'rov provayder orqali o'tmagan. sessiya tugadi.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter
Torrentlarni yuklab olishda ulanish darajasini muvozanatlash barcha kanallarning o'tkazish qobiliyatini umumlashtiradi

Ushbu balanslash bir nechta ulanishlardan foydalanganda Internet-kanal tezligining yig'indisini olish imkonini beradi. Misol uchun, agar uchta provayderning har biri 100 Megabit tezligiga ega bo'lsa, torrentlarni yuklab olishda biz 300 Megabit olamiz. Chunki torrent ko'plab ulanishlarni ochadi, ular barcha provayderlar o'rtasida taqsimlanadi va oxir-oqibat butun kanaldan foydalanadi.

Bitta TCP ulanishi har doim faqat bitta provayder orqali o'tishini tushunish muhimdir. Ya'ni, agar biz HTTP orqali bitta katta faylni yuklab olsak, u holda bu ulanish provayderlardan biri orqali amalga oshiriladi va agar ushbu provayder bilan aloqa uzilgan bo'lsa, yuklab olish ham buziladi.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter
Bitta ulanish har doim faqat bitta Internet kanalidan foydalanadi

Bu video eshittirishlar uchun ham amal qiladi. Agar siz qandaydir shartli Twitch-ga oqimli videoni uzatayotgan bo'lsangiz, IP-ulanishlar darajasida muvozanatlash hech qanday foyda keltirmaydi, chunki video oqimi bitta IP-ulanish doirasida uzatiladi. Bunday holda, agar WAN 3 provayderi aloqa bilan bog'liq muammolarga duch kelsa, masalan, paketlarni yo'qotish yoki tezlikni pasaytirish, siz darhol boshqa provayderga o'ta olmaysiz. Eshittirish to'xtatilishi va qayta ulanishi kerak bo'ladi.

Haqiqiy kanal yig'indisi

Haqiqiy kanal yig'indisi shartli Twitch-ga bir vaqtning o'zida barcha provayderlar orqali bitta ulanishni amalga oshirish imkonini beradi, shunda provayderlardan birortasi uzilib qolsa, ulanish uzilmaydi. Bu hayratlanarli darajada qiyin muammo bo'lib, u hali ham optimal echimga ega emas. Ko'p odamlar bu mumkinligini bilishmaydi!

Oldingi rasmlardan shuni esda tutamizki, shartli Twitch serveri bizdan video oqimini faqat bitta manba IP-manzilidan qabul qilishi mumkin, ya'ni qaysi provayderlar ishlamay qolgan va qaysi biri ishlayotganidan qat'i nazar, u biz uchun doimo doimiy bo'lishi kerak. Bunga erishish uchun bizga barcha ulanishlarimizni to'xtatib, ularni bittaga birlashtiradigan yig'ish serveri kerak.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter
Yig'ish serveri barcha kanallarni bitta tunnelga jamlaydi. Barcha ulanishlar yig'indisi server manzilidan kelib chiqadi

Ushbu sxemada barcha provayderlar qo'llaniladi va ularning birortasini o'chirib qo'yish Twitch serveri bilan aloqani yo'qotmaydi. Aslida, bu maxsus VPN tunnel bo'lib, uning ostida bir vaqtning o'zida bir nechta Internet kanallari mavjud. Bunday sxemaning asosiy vazifasi eng yuqori sifatli aloqa kanalini olishdir. Agar provayderlardan biri muammoga duch kelsa, paketlarning yo'qolishi, kechikishlarning kuchayishi, bu hech qanday tarzda aloqa sifatiga ta'sir qilmasligi kerak, chunki yuk avtomatik ravishda mavjud bo'lgan boshqa yaxshi kanallar bo'ylab taqsimlanadi.

Tijorat yechimlari

Bu muammo uzoq vaqtdan beri jonli voqealarni translyatsiya qiladigan va yuqori sifatli Internetga kirish imkoniga ega bo'lmaganlarni bezovta qilmoqda. Bunday vazifalar uchun bir nechta tijorat echimlari mavjud, masalan, Teradek kompaniyasi USB-modemlar to'plami kiritilgan shunday dahshatli routerlarni ishlab chiqaradi:

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter
Kanallarni yig'ish funktsiyasi bilan video eshittirishlar uchun router

Bunday qurilmalar odatda HDMI yoki SDI orqali video signallarni olish uchun o'rnatilgan qobiliyatga ega. Router bilan bir qatorda, kanalni yig'ish xizmatiga obuna bo'lish, shuningdek, video oqimini qayta ishlash, uni transkodlash va keyinchalik uzatish sotiladi. Bunday qurilmalarning narxi modemlar to'plami, shuningdek, xizmatga alohida obuna bo'lgan holda 2 ming dollardan boshlanadi.

Ba'zan juda qo'rqinchli ko'rinadi:

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

OpenMPTCPRouter sozlanmoqda

Protokol MP-TCP (MultiPath TCP) bir vaqtning o'zida bir nechta kanallar orqali ulanish imkoniyatiga ega bo'lish uchun ixtiro qilingan. Masalan, uning iOS-ni qo'llab-quvvatlaydi va bir vaqtning o'zida WiFi va uyali tarmoq orqali uzoq serverga ulanishi mumkin. Bu ikkita alohida TCP ulanishi emas, balki bir vaqtning o'zida ikkita kanal orqali o'rnatilgan bitta ulanish ekanligini tushunish muhimdir. Buning ishlashi uchun masofaviy server ham MPTCP-ni qo'llab-quvvatlashi kerak.

OpenMPTCPRouter ochiq kodli dasturiy ta'minot yo'riqnoma loyihasi bo'lib, u haqiqiy kanalni umumlashtirish imkonini beradi. Mualliflarning ta'kidlashicha, loyiha alfa versiyasi holatida, lekin undan allaqachon foydalanish mumkin. U ikki qismdan iborat - Internetda joylashgan yig'ish serveri va bir nechta Internet-provayderlar va mijoz qurilmalari ulangan router: kompyuterlar, telefonlar. Maxsus router Raspberry Pi, ba'zi WiFi routerlar yoki oddiy kompyuter bo'lishi mumkin. Turli platformalar uchun tayyor yig'ilishlar mavjud, bu juda qulay.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter
OpenMPTCPRouter qanday ishlaydi

Xulosa beruvchi serverni o'rnatish

Yig'ish serveri Internetda joylashgan bo'lib, mijoz routerining barcha kanallaridan ulanishlarni bitta kanalga to'xtatadi. Ushbu serverning IP manzili OpenMPTCPRouter orqali Internetga kirishda tashqi manzil bo'ladi.

Ushbu vazifa uchun biz Debian 10 da VPS serveridan foydalanamiz.

Summing serveriga qo'yiladigan talablar:

  • MPTCP OpenVZ virtualizatsiyasida ishlamaydi
  • O'zingizning Linux yadrongizni o'rnatishingiz mumkin bo'lishi kerak

Server bitta buyruqni bajarish orqali o'rnatiladi. Skript mptcp yordami va barcha kerakli paketlarga ega yadroni o'rnatadi. O'rnatish skriptlari Ubuntu va Debian uchun mavjud.

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

Muvaffaqiyatli server o'rnatilishi natijasi.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Biz parollarni saqlaymiz, ularga mijoz routerini sozlash va qayta ishga tushirish uchun kerak bo'ladi. Shuni yodda tutish kerakki, o'rnatishdan so'ng SSH 65222 portda mavjud bo'ladi. Qayta ishga tushirgandan so'ng biz yangi yadro bilan yuklanganimizga ishonch hosil qilishimiz kerak.

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

Versiya raqami yonida mptcp yozuvini ko'ramiz, bu yadro to'g'ri o'rnatilganligini anglatadi.

Mijoz routerini sozlash

ning loyiha sayti Raspberry Pi, Banana Pi, Lynksys routerlar va virtual mashinalar kabi ba'zi platformalar uchun tayyor tuzilmalar mavjud.
Openmptcprouter-ning ushbu qismi OpenWRT-ga asoslangan bo'lib, LuCI-dan interfeys sifatida foydalanadi, OpenWRT-ga duch kelgan har bir kishi uchun tanish. Tarqatishning og'irligi taxminan 50 MB!

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Sinov dastgohi sifatida men Raspberry Pi va turli operatorlar bilan bir nechta USB modemlardan foydalanaman: MTS va Megafon. SD-kartaga tasvirni qanday yozishni sizga aytishim shart emas deb o'ylayman.

Dastlab, Raspberry Pi-dagi Ethernet porti statik IP-manzilli LAN sifatida sozlangan. 192.168.100.1. Stol ustidagi simlar bilan o'ynamaslik uchun men Raspberry Pi-ni WiFi kirish nuqtasiga uladim va kompyuterning WiFi adapterini statik manzilga o'rnatdim. 192.168.100.2. DHCP server sukut bo'yicha yoqilmagan, shuning uchun siz statik manzillardan foydalanishingiz kerak.

Endi siz veb-interfeysga kirishingiz mumkin 192.168.100.1

Birinchi marta tizimga kirganingizda, tizim sizdan ildiz parolini o'rnatishingizni so'raydi; SSH xuddi shu parol bilan mavjud bo'ladi.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter
LAN sozlamalarida siz kerakli pastki tarmoqni o'rnatishingiz va DHCP serverini yoqishingiz mumkin.

Men alohida DHCP serveri bilan USB Ethernet interfeysi sifatida belgilangan modemlardan foydalanaman, shuning uchun bu o'rnatishni talab qildi qo'shimcha paketlar. Jarayon oddiy OpenWRT-da modemlarni o'rnatish bilan bir xil, shuning uchun men bu erda uni yoritib bermayman.

Keyin WAN interfeyslarini sozlashingiz kerak. Dastlab, tizim ikkita virtual interfeys WAN1 va WAN2 yaratdi. Ularga jismoniy qurilma tayinlanishi kerak, mening holimda bu USB modem interfeyslarining nomlari.

Interfeys nomlari bilan chalkashmaslik uchun SSH orqali ulanish paytida dmesg xabarlarini ko'rishni tavsiya qilaman.

Mening modemlarim o'zlari marshrutizator vazifasini bajaradi va DHCP serveriga ega bo'lganligi sababli, men ularning ichki tarmoq diapazonlari sozlamalarini o'zgartirishim va DHCP serverini o'chirib qo'yishim kerak edi, chunki dastlab ikkala modem ham bir xil tarmoqdan manzillarni chiqaradi va bu ziddiyatga olib keladi.

OpenMPTCPRouter WAN interfeys manzillari statik bo'lishini talab qiladi, shuning uchun biz modemlar uchun pastki tarmoqlarni o'ylab topamiz va ularni tizim β†’ openmptcprouter β†’ interfeys sozlamalari menyusida sozlaymiz. Bu erda siz yig'ish serverini o'rnatish paytida olingan IP-manzil va server kalitini ko'rsatishingiz kerak.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

O'rnatish muvaffaqiyatli bo'lsa, holat sahifasida shunga o'xshash rasm paydo bo'lishi kerak. Ko'rinib turibdiki, marshrutizator yig'ish serveriga kira oldi va ikkala kanal ham normal ishlaydi.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Standart rejim shadowsocks + mptcp. Bu proksi-server bo'lib, u barcha ulanishlarni o'z ichiga oladi. U dastlab faqat TCP ni qayta ishlash uchun tuzilgan, lekin UDP ham yoqilishi mumkin.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Vaziyat sahifasida xatolik bo'lmasa, sozlash tugallangan deb hisoblanishi mumkin.
Ba'zi provayderlar bilan mptcp bayrog'i transport yo'li bo'ylab kesilganda vaziyat yuzaga kelishi mumkin, keyin quyidagi xato paydo bo'ladi:

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Bunday holda, siz MPTCP dan foydalanmasdan, boshqa ish rejimidan foydalanishingiz mumkin, bu haqda batafsilroq shu yerda.

xulosa

OpenMPTCPRouter loyihasi juda qiziqarli va muhim, chunki u kanallarni yig'ish muammosining yagona ochiq kompleks yechimidir. Qolgan hamma narsa mahkam yopiq va mulkiydir yoki oddiy odam tushunolmaydigan alohida modullardir. Rivojlanishning hozirgi bosqichida loyiha hali ham juda qo'pol, hujjatlar juda yomon, ko'p narsalar shunchaki tasvirlanmagan. Ammo ayni paytda u hali ham ishlaydi. Umid qilamanki, u rivojlanishda davom etadi va biz kanallarni qutidan to'g'ri birlashtira oladigan maishiy routerlarni olamiz.

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Instagramda dasturchimizni kuzatib boring

Haqiqiy Internet-kanal yig'indisi - OpenMPTCPRouter

Manba: www.habr.com

a Izoh qo'shish