Bir neçə İnternet kanalını birləşdirmək mümkündürmü? Bu mövzu ətrafında çoxlu yanlış fikirlər və miflər var, hətta təcrübəli şəbəkə mühəndisləri çox vaxt bunun mümkün olduğunu bilmirlər. Əksər hallarda, link aqreqasiyası səhv olaraq NAT balansı və ya əvəzetmə kimi istinad edilir. Ancaq real toplama imkan verir bütün İnternet kanalları üzərində eyni vaxtda bir TCP bağlantısını işlədinməsələn, video yayımı ki, internet kanallarından hər hansı biri kəsilərsə, yayımı kəsilməz.
Video yayımı üçün bahalı kommersiya həlləri var, lakin bu cür cihazların qiyməti çox kilobukdur. Məqalə pulsuz, açıq OpenMPTCPRouter paketinin konfiqurasiyasını təsvir edir və kanalın ümumiləşdirilməsi ilə bağlı məşhur miflərdən bəhs edir.
Kanalların cəmlənməsi haqqında miflər
Multi-WAN funksiyasını dəstəkləyən bir çox ev marşrutlaşdırıcısı var. Bəzən istehsalçılar bu kanalı cəmləmə adlandırırlar, bu tamamilə doğru deyil. Bir çox şəbəkəçi buna əlavə olaraq inanır
İP əlaqələri səviyyəsində balanslaşdırma
Bu, eyni vaxtda bir neçə İnternet kanalından istifadə etməyin ən sərfəli və populyar yoludur. Sadəlik üçün təsəvvür edək ki, hər biri sizə öz şəbəkəsindən real IP ünvanı verən üç ISP-niz var. Bütün bu provayderlər Multi-WAN funksiyasını dəstəkləyən marşrutlaşdırıcıya qoşulub. Bu, mwan3 paketi, mikrotik, ubiquiti və ya hər hansı digər məişət marşrutlaşdırıcısı ilə OpenWRT ola bilər, çünki indi bu seçim artıq qeyri-adi deyil.
Vəziyyəti simulyasiya etmək üçün provayderlərin bizə aşağıdakı ünvanları verdiyini təsəvvür edin:
WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33
Yəni uzaq serverə qoşulmaq example.com provayderlərin hər biri vasitəsilə uzaq server müştərinin üç müstəqil mənbə ipini görəcək. Balanslaşdırma sizə yükü kanallar arasında bölməyə və eyni zamanda üçü də istifadə etməyə imkan verir. Sadəlik üçün təsəvvür edək ki, yükü bütün kanallar arasında bərabər bölürük. Nəticədə müştəri şərti olaraq üç şəkilli sayt açanda hər şəkli ayrıca provayder vasitəsilə yükləyir. Sayt tərəfində, üç fərqli IP-dən olan bağlantılara bənzəyir.
Bağlantı səviyyəsində balanslaşdırarkən, hər bir TCP bağlantısı ayrıca bir provayderdən keçir.
Bu balanslaşdırma rejimi tez-tez istifadəçilər üçün problemlər yaradır. Məsələn, bir çox saytlar kukiləri və tokenləri müştərinin IP ünvanına bağlayır və birdən-birə dəyişərsə, sorğu ləğv edilir və ya müştəri saytdan çıxır. Bu, tez-tez müştəri-bank sistemlərində və ciddi istifadəçi sessiyası qaydaları olan digər saytlarda təkrarlanır. Budur sadə bir nümunə: VK.com-da musiqi faylları yalnız IP-yə bağlı etibarlı seans açarı ilə mövcuddur və bu cür balanslaşdırmadan istifadə edən müştərilər çox vaxt səsi səsləndirmirlər, çünki sorğu göndərilən provayderdən keçməyib. sessiya bağlıdır.
Torrentləri endirərkən, əlaqə səviyyəsində balanslaşdırma bütün kanalların bant genişliyini cəmləşdirir
Belə balanslaşdırma çoxlu bağlantılardan istifadə edərkən İnternet kanalının sürətinin cəmini əldə etməyə imkan verir. Məsələn, üç provayderin hər birinin sürəti 100 meqabitdirsə, torrentləri yükləyərkən biz 300 meqabit alacağıq. Çünki torrent bütün provayderlər arasında paylanan və nəticədə bütün kanaldan istifadə edən çoxlu əlaqələr açır.
Bir TCP bağlantısının həmişə yalnız bir provayderdən keçəcəyini başa düşmək vacibdir. Yəni HTTP vasitəsilə bir böyük fayl yükləsək, bu əlaqə provayderlərdən biri vasitəsilə həyata keçiriləcək və bu provayderlə əlaqə kəsilsə, yükləmə də pozulacaq.
Bir əlaqə həmişə yalnız bir İnternet kanalından istifadə edəcəkdir
Bu, video yayımlara da aiddir. Əgər siz hansısa şərti Twitch-də yayımlanan videonu yayımlasanız, o zaman IP əlaqələri səviyyəsində balanslaşdırma heç bir xüsusi fayda verməyəcək, çünki video axını bir IP bağlantısı daxilində yayımlanacaq. Bu halda, WAN 3 provayderində paket itkisi və ya yavaşlama kimi rabitə problemləri yaranarsa, siz dərhal başqa provayderə keçə bilməyəcəksiniz. Yayım dayandırılmalı və yenidən qoşulmalı olacaq.
Əsl kanalın yekunu
Kanalların real cəmlənməsi şərti Twitch-ə bir əlaqəni bütün provayderlər vasitəsilə eyni anda başlatmağa imkan verir ki, provayderlərdən hər hansı biri kəsilərsə, əlaqə kəsilməsin. Bu, hələ də optimal həllini tapmayan təəccüblü dərəcədə çətin bir problemdir. Çoxları bunun mümkün olduğunu bilmirlər!
Əvvəlki təsvirlərdən xatırlayırıq ki, şərti Twitch serveri bizdən yalnız bir mənbə IP ünvanından video axını qəbul edə bilər, yəni hansı provayderlərin sıradan çıxmasından və hansının işləməsindən asılı olmayaraq o, həmişə bizimlə daimi olmalıdır. Buna nail olmaq üçün bizə bütün əlaqələrimizi dayandıracaq və onları bir yerə birləşdirəcək bir toplama serverinə ehtiyacımız var.
Toplama serveri bütün kanalları bir tuneldə birləşdirir. Bütün bağlantılar toplama serverinin ünvanından yaranır
Bu sxem bütün provayderlərdən istifadə edir və onlardan hər hansı birini söndürmək Twitch serveri ilə əlaqə itkisinə səbəb olmayacaq. Əslində, bu, başlıq altında eyni anda bir neçə İnternet kanalı olan xüsusi bir VPN tunelidir. Belə bir sxemin əsas vəzifəsi ən yüksək keyfiyyətli rabitə kanalını əldə etməkdir. Problemlər provayderlərdən birində başlayırsa, paket itkisi, gecikmələrin artması, bu heç bir şəkildə rabitə keyfiyyətinə təsir etməməlidir, çünki yük avtomatik olaraq mövcud olan digər, daha yaxşı kanallar üzərində paylanacaq.
Kommersiya Həlləri
Bu problem hadisələri canlı yayımlayan və yüksək keyfiyyətli internetə çıxışı olmayanları çoxdan narahat edir. Bu cür tapşırıqlar üçün bir neçə kommersiya həlli var, məsələn, Teradek USB modem paketlərinin daxil edildiyi belə dəhşətli marşrutlaşdırıcılar hazırlayır:
Kanalın cəmlənməsi funksiyası ilə yayımlanan video marşrutlaşdırıcı
Bu cür cihazlar adətən HDMI və ya SDI vasitəsilə video çəkmək imkanına malikdir. Routerlə birlikdə kanalın ümumiləşdirilməsi xidmətinə abunə satılır, həmçinin video axınının işlənməsi, kodunun dəyişdirilməsi və daha sonra yenidən ötürülməsi həyata keçirilir. Bu cür cihazların qiyməti modemlər dəsti və xidmətə ayrıca abunə ilə 2 min dollardan başlayır.
Bəzən olduqca qorxuducu görünür:
OpenMPTCPRouter qurulur
Protokol
OpenMPTCPRouter necə işləyir
Xülasə serverinin qurulması
Toplama serveri İnternetdə yerləşir və müştəri yönləndiricisinin bütün kanallarından bağlantıları birinə kəsir. OpenMPTCPRouter vasitəsilə İnternetə daxil olarkən bu serverin IP ünvanı xarici ünvan olacaqdır.
Bu tapşırıq üçün Debian 10-da VPS serverindən istifadə edəcəyik.
Yekun server tələbləri:
- MPTCP OpenVZ virtualizasiyasında işləmir
- Öz Linux nüvənizi quraşdırmaq mümkün olmalıdır
Server bir əmri yerinə yetirməklə yerləşdirilir. Skript mptcp ilə aktivləşdirilmiş kernel və bütün tələb olunan paketləri quraşdıracaq. Quraşdırma skriptləri Ubuntu və Debian üçün mövcuddur.
wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh
Uğurlu server quraşdırmasının nəticəsi.
Parolları saxlayırıq, müştəri yönləndiricisini konfiqurasiya etmək və yenidən yükləmək üçün onlara ehtiyacımız olacaq. Nəzərə almaq lazımdır ki, quraşdırıldıqdan sonra SSH 65222 portda olacaq. Yenidən başladıqdan sonra yeni nüvə ilə yüklədiyimizə əmin olmalıyıq.
uname -a
Linux test-server.local 4.19.67-mptcp
Versiya nömrəsinin yanında mptcp yazısını görürük, bu, nüvənin düzgün quraşdırıldığını göstərir.
Müştəri marşrutlaşdırıcısının qurulması
Haqqında
Openmptcprouter-in bu hissəsi heç vaxt OpenWRT ilə qarşılaşmış hər kəsə tanış olan interfeys kimi LuCI-dən istifadə edən OpenWRT-ə əsaslanır. Dağıtım dəsti təxminən 50 Mb ağırlığında!
Test tezgahı olaraq, mən Raspberry Pi və müxtəlif operatorlarla bir neçə USB modemdən istifadə edəcəyəm: MTS və Megafon. SD karta necə şəkil yazmaq olar, məncə, deməyə ehtiyac yoxdur.
Əvvəlcə Raspberry Pi-dəki Ethernet portu statik IP ünvanı ilə lan kimi konfiqurasiya edilir. 192.168.100.1. Stolun üstündəki naqillərə qarışmamaq üçün Raspberry Pi-ni WiFi giriş nöqtəsinə qoşdum və kompüterin WiFi adapterində statik ünvan təyin etdim. 192.168.100.2. DHCP serveri defolt olaraq aktiv deyil, ona görə də statik ünvanlardan istifadə edilməlidir.
İndi veb interfeysinə keçə bilərsiniz
İlk dəfə daxil olduğunuz zaman sistem sizdən kök parol təyin etməyinizi xahiş edəcək, SSH eyni parolla mövcud olacaq.
LAN parametrlərində istədiyiniz alt şəbəkəni təyin edə və DHCP serverini aktivləşdirə bilərsiniz.
Mən ayrı bir DHCP serveri olan USB ethernet interfeysləri kimi təyin olunan modemlərdən istifadə edirəm, ona görə də bu quraşdırma tələb olunur
Sonra, WAN interfeyslərini konfiqurasiya etməlisiniz. Əvvəlcə sistemdə iki virtual interfeys WAN1 və WAN2 yaradılmışdır. Fiziki bir cihaz təyin etməlidirlər, mənim vəziyyətimdə bunlar USB modem interfeyslərinin adlarıdır.
İnterfeys adlarında çaşqınlıq yaşamamaq üçün sizə SSH vasitəsilə qoşularkən dmesg mesajlarına baxmağı məsləhət görürəm.
Modemlərimin özləri marşrutlaşdırıcı kimi fəaliyyət göstərdiyindən və özlərinin də DHCP serveri olduğundan, mən onların daxili şəbəkə diapazonlarının parametrlərini dəyişməli və DHCP serverini söndürməli oldum, çünki əvvəlcə hər iki modem eyni şəbəkədən ünvanlar verir və bu, münaqişəyə səbəb olur.
OpenMPTCPRouter WAN interfeys ünvanlarının statik olmasını tələb edir, ona görə də biz modemlər üçün alt şəbəkələr icad edirik və onları sistem → openmptcprouter → interfeys parametrləri menyusunda konfiqurasiya edirik. Burada həm də toplama serverinin quraşdırılması zamanı əldə edilmiş IP ünvanını və server açarını göstərməlisiniz.
Uğurlu quraşdırma halında, status səhifəsində oxşar şəkil görünməlidir. Görünür ki, marşrutlaşdırıcı cəmləmə serverinə çata bildi və hər iki kanal düzgün işləyir.
Standart rejim shadowsocks + mptcp-dir. Bu, bütün əlaqələri özündə birləşdirən belə bir proxydir. Əvvəlcə o, yalnız TCP-ni idarə etmək üçün konfiqurasiya edilmişdir, lakin siz UDP-ni də aktivləşdirə bilərsiniz.
Vəziyyət səhifəsində heç bir səhv yoxdursa, quraşdırma tamamlanmış hesab edilə bilər.
Bəzi provayderlərdə mptcp bayrağı trafik yolu boyunca kəsildikdə belə bir səhv yarana bilər:
Bu halda, MPTCP istifadə etmədən başqa bir iş rejimindən istifadə edə bilərsiniz, bu barədə daha çox məlumat əldə edin
Nəticə
OpenMPTCPRouter layihəsi çox maraqlı və vacibdir, çünki o, bəlkə də kanal toplama probleminin yeganə açıq kompleks həllidir. Qalan hər şey ya sıx bağlıdır və mülkiyyətlidir, ya da adi bir insanın öhdəsindən gələ bilməyəcəyi ayrı modullardır. Hazırkı inkişaf mərhələsində layihə hələ də kifayət qədər xam, son dərəcə zəif sənədlərdir, çox şey sadəcə təsvir edilmir. Ancaq eyni zamanda, hələ də işləyir. Ümid edirəm ki, o, inkişaf etməyə davam edəcək və biz kanalları normal şəkildə birləşdirə biləcək məişət marşrutlaşdırıcılarını alacağıq.
İnstaqramda tərtibatçımızı izləyin
Mənbə: www.habr.com