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
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.
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.
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.
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.
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:
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:
OpenMPTCPRouter sozlanmoqda
Protokol
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.
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
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!
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
Birinchi marta tizimga kirganingizda, tizim sizdan ildiz parolini o'rnatishingizni so'raydi; SSH xuddi shu parol bilan mavjud bo'ladi.
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
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.
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.
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.
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:
Bunday holda, siz MPTCP dan foydalanmasdan, boshqa ish rejimidan foydalanishingiz mumkin, bu haqda batafsilroq
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.
Instagramda dasturchimizni kuzatib boring
Manba: www.habr.com