İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

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 LACP və L2 qatında toplama, başqa heç bir kanal aqreqasiyası mövcud deyil. Telekommunikasiyada işləyən insanlardan bunun ümumiyyətlə mümkün olmadığını tez-tez eşidirdim. Buna görə də, məşhur mifləri anlamağa çalışaq.

İ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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter
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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter
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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter
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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter
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:

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter
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:

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

OpenMPTCPRouter qurulur

Protokol MP-TCP (MultiPath TCP) eyni anda bir neçə kanala qoşulmaq imkanı üçün icad edilmişdir. Məsələn, onun iOS-u dəstəkləyir və eyni zamanda WiFi və mobil şəbəkə vasitəsilə uzaq serverə qoşula bilər. Bunların iki ayrı TCP bağlantısı olmadığını, eyni anda iki kanal üzərində qurulan bir əlaqə olduğunu başa düşmək vacibdir. Bunun işləməsi üçün uzaq server MPTCP-ni də dəstəkləməlidir.

OpenMPTCPRouter kanalları həqiqətən cəmləməyə imkan verən açıq mənbəli proqram yönləndirici layihəsidir. Müəlliflər bildirirlər ki, layihə alfa versiya statusundadır, lakin ondan artıq istifadə oluna bilər. O, iki hissədən ibarətdir - İnternetdə yerləşən bir cəmləmə serveri və bir neçə İnternet provayderi və müştəri cihazının qoşulduğu bir marşrutlaşdırıcı: kompüterlər, telefonlar. Xüsusi marşrutlaşdırıcı Raspberry Pi, bəzi WiFi marşrutlaşdırıcıları və ya adi kompüter ola bilər. Müxtəlif platformalar üçün hazır montajlar var ki, bu da çox rahatdır.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter
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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

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 layihə saytı Raspberry Pi, Banana Pi, Lynksys marşrutlaşdırıcıları və virtual maşınlar kimi bəzi platformalar üçün hazır konstruksiyalar mövcuddur.
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!

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

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 192.168.100.1

İ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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter
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 əlavə paketlər. Prosedura adi OpenWRT-də modemlərin konfiqurasiyası ilə eynidir, ona görə də burada onu əhatə etməyəcəyəm.

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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

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:

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

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 burada.

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.

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

İnstaqramda tərtibatçımızı izləyin

İnternet kanallarının həqiqi yekunu - OpenMPTCPRouter

Mənbə: www.habr.com

Добавить комментарий