
Bir neçə internet kanalı birləşdirilə bilərmi? Bu mövzu ətrafında çox sayda yanlış anlamalar və miflər var, hətta təcrübəli şəbəkə mühəndisləri də bunun mümkün olduğunu bilmirlər. Əksər hallarda, kanalların birləşdirilməsi NAT səviyyəsində balanslaşdırma və ya failover ilə yanlışlıqla adlandırılır. Amma həqiqi toplanma, bir tək TCP bağlantısını eyni anda bütün internet kanalları üzrə yönləndirməyə imkan tanıyır, məsələn, video yayımını həyata keçirərək, hər hansı bir internet kanalının kəsilməsi zamanı yayımın kəsilməməsini təmin edir.
Bahalı kommersiya həlləri var, amma belə cihazların qiyməti minlərlə dollar ola bilər. Bu məqalədə pulsuz və açıq OpenMPTCPRouter paketinin konfiqurasiyası təsvir edilir, kanalların toplanması ilə bağlı populyar miflər şərh olunur.
Kanalların toplanması haqqında miflər
Bir çox ev router-ləri Multi-WAN funksiyasını dəstəkləyir. Bəzən istehsalçılar bunu kanalların toplanması adlandırır ki, bu da tamamilə düzgün deyil. Bir çox şəbəkə mütəxəssisi, və L2 səviyyəsində toplanma xaricində, başqa bir kanal birləşməsi olmadığına inanır. Telekommunikasiya sahəsində çalışan insanlardan tez-tez eşidirəm ki, bu ümumiyyətlə mümkün deyil. Buna görə məşhur mifləri araşdıraq.
IP bağlantıları səviyyəsində balanslaşdırma
Bu, eyni anda bir neçə internet kanallarını istifadə etmək üçün ən əlçatan və populyar üsuldur. Sadəlik üçün, düşünək ki, sizdə üç internet provayderi var, hər biri sizə öz şəbəkəsindən real IP ünvanı təqdim edir. Bütün bu provayderlər Multi-WAN funksiyası dəstəkləyən router-a qoşulub. Bu, açıq WRT ilə mwan3 pakəti, mikrotik, ubiquiti və ya başqa bir ev router-i ola bilər ki, hazırda belə bir variant artıq nadir deyil.
Vəziyyəti modelləşdirmək üçün düşünək ki, provayderlər bizə belə ünvanlar təqdim ediblər:
WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN3 — 33.33.33.33
Yəni, uzaq serverə qoşularkən, example.com hər bir provayderdən, uzaq server üç müstəqil müştəri IP-sini görəcək. Balanslaşdırma, kanallar üzrə yükü bölməyə və onların hamısını eyni anda istifadə etməyə imkan tanıyır. Sadəlik üçün, gəliri bütün kanallar arasında bərabər bölməyi düşünək. Nəticədə, müştəri şərti olaraq üç şəkil olan bir saytı açdıqda, o, hər bir şəkli ayrı bir provayder vasitəsi ilə yükləyir. Saytın tərəfində bu, üç fərqli IP ilə bağlanmalar kimi görünür.

Bağlantılar səviyyəsində balanslaşdırma zamanı, hər bir TCP bağlantısı ayrı bir provayder vasitəsilə həyata keçirilir.
Bu balanslaşdırma rejimi istifadəçilər üçün problemlər yarada bilər. Məsələn, bir çox veb-sayt cookie və tokenləri müştərinin IP ünvanına ciddi şəkildə bağlayır, və əgər bu birdən dəyişsə, sorğu rədd edilir ya da müştəri saytdan çıxarılır. Bu, müştəri bankı sistemlərində və digər sərt istifadəçi sessiyası qaydalarına malik veb-saytlarda tez-tez baş verir. Budur sadə bir nümunə: VK.com-da musiqi faylları yalnız IP-yə bağlı aktiv sessiya açarı ilə mövcuddur, və belə balanslaşdırma istifadə edən müştərilərdə audio tez-tez oynanmır, çünki sorğu sessiya ilə bağlı olan provayder vasitəsilə göndərilməmişdir.

Torrentləri yüklədikdə, bağlantılar səviyyəsində balanslaşdırma bütün kanalların bant genişliyini toplayır.
Belə balanslaşdırma bir neçə bağlantıdan istifadə etməklə internet kanallarının sürətinin toplanmasını təmin edir. Məsələn, əgər hər bir üç provayderin sürəti 100 Mbit-dir, torrent yüklədikdə, 300 Mbit əldə edəcəyik. Çünki torrent bir çox bağlantılar açır, bunlar isə bütün provayderlər arasında paylanır və nəticədə bütün kanal istifadə olunur.
Əhəmiyyətli olan budur ki, tək bir TCP bağlantısı həmişə yalnız bir provayder vasitəsilə gedəcək. Yəni əgər biz HTTP vasitəsilə bir böyük fayl yükləyiriksə, bu bağlantı yalnız bir provayder üzərindən aparılacaq, və əgər bu provayderlə bağlantı kəsilərsə, yükləmə də dayanar.

Bir bağlantı həmişə yalnız bir internet kanalını istifadə edəcək.
Bu video yayımı üçün də doğrudur. Əgər siz şərti bir Twitch platformasında axınlı video yayımlayırsınızsa, IP bağlantıları səviyyəsində balanslaşdırma heç bir xüsusi fayda verməyəcək, çünki video axını yalnız bir IP bağlantısı daxilində yayımlanacaq. Bu halda, əgər WAN 3 provayderində bağlantı ilə bağlı problemlər yaranarsa, məsələn, paket itkiləri və ya sürətin azalması, siz dərhal başqa provayderə keçə bilməyəcəksiniz. Yayım dayandırılmalı və yenidən bağlanmalıdır.
Həqiqi kanalların toplanması.
Həqiqi kanalların toplanması, şərti Twitch-ə olan bir bağlantını bütün provayderlər vasitəsilə keçirmək imkanı verir, beləliklə, əgər istənilən provayder sıradan çıxsa, bağlantı kəsilməyəcək. Bu, olduqca mürəkkəb bir vəzifədir və hələ optimal bir həlli yoxdur. Bir çoxu bunun mümkün olduğunu belə bilmir!
Əvvəlki illüstrasiyalardan xatırladığımız kimi, şərti Twitch serveri yalnız bir source IP ünvanı vasitəsilə video axını qəbul edə bilər, bu səbəbdən də bizim üçün bu ünvan hər zaman sabit olmalıdır, hansı provayderlərin işinin dayanmasından asılı olmayaraq. Bunu təmin etmək üçün bizə bütün bağlantılarımızı terminləşdirib birləşdirən toplama serveri lazımdır.

Toplama serveri bütün kanalları bir tunelə birləşdirir. Bütün bağlantılar toplama serverinin ünvanından baş verir.
Belə bir sxemdə bütün provayderlər istifadə olunur və onların istənilən birinin dayandırılması Twitch serveri ilə əlaqənin kəsilməsinə səbəb olmayacaq. Əslində, bu, altında bir neçə internet kanalı bulunan xüsusi bir VPN tunelidir. Belə bir sxemin əsas məqsədi mümkün olan ən yüksək keyfiyyətli əlaqə kanalını əldə etməkdir. Əgər bir provayderdə problemlər baş verərsə, paket itkiləri və gecikmələr artarsa, bu, əlaqənin keyfiyyətinə təsir etməməlidir, çünki yük avtomatik olaraq mövcud olan daha keyfiyyətli kanallar arasında bölüşdürüləcəkdir.
Ticarət həlləri
Bu problem uzun müddətdir ki, birbaşa yayım aparanlar üçün narahatlıq yaradır və keyfiyyətli internetə erişimə malik olmayanlar üçün. Belə tapşırıqlar üçün bir neçə ticarət həlli mövcuddur, məsələn, Teradek şirkəti, bir neçə USB modeminin yerləşdirildiyi nəhəng routerlər istehsal edir:

Video yayımı üçün kanalları birləşdirmək funksiyası olan router
Belə cihazlarda, adətən, HDMI və ya SDI vasitəsilə video siqnalı tutma imkanı var. Router ilə birlikdə kanal birləşdirmə xidməti və video axınını emal, kodlaşdırma və müvafiq yönləndirmə abunəliyi təklif olunur. Belə cihazların qiyməti modem dəstləri ilə birlikdə 2000$-dan başlayır, daha sonra xidmət üçün ayrıca abunə ödənilməlidir.
Bəzən bu kifayət qədər qorxuducu görünür:

OpenMPTCPRouter-i qururuq
Protokol (MultiPath TCP) eyni anda bir neçə kanalla qoşulma imkanı yaratmaq üçün ixtira edilib. Məsələn, onun və eyni anda WiFi və mobil şəbəkə vasitəsilə uzaq serverə qoşa bilər. Anlamaq vacibdir ki, bu iki ayrı TCP qoşulması deyil, eyni zamanda iki kanaldan birbaşa yaradılmış bir qoşulmadır. Bunun işləməsi üçün, uzaq server də MPTCP-ni dəstəkləməlidir.
— bu, kanalları doğrudan toplamaya olanak tanıyan açık kaynaklı bir yönlendirici projesidir. Yazarlar projenin alfa sürümünde olduğunu belirtmektedir, ancak zaten kullanılabilir. Bu, internette barındırılan bir toplama sunucusu ve birkaç internet servis sağlayıcısının ve müşteri cihazlarının (bilgisayarlar, telefonlar) bağlandığı bir yönlendiriciden oluşmaktadır. Kullanıcı yönlendiricisi olarak Raspberry Pi, bazı WiFi yönlendiricileri veya sıradan bir bilgisayar kullanılabilir. Farklı platformlar için mevcut sürümler bulunmaktadır, bu da çok uygundur.

OpenMPTCPRouter'un Çalışma Prensibi
Toplama Sunucusunun Ayarları
Toplama sunucusu internette yer alır ve tüm müşteri yönlendirici kanallarından gelen bağlantıları bir araya getirir. Bu sunucunun IP adresi, OpenMPTCPRouter üzerinden internete çıkarken dış adres olacaktır.
Bu görev için Debian 10 üzerinde bir VPS sunucusu kullanacağız.
Toplama sunucusu için gereksinimler:
- MPTCP, OpenVZ sanallaştırmasında çalışmaz
- Kendi Linux çekirdeğini yükleme imkanı olmalıdır
Sunucu, tek bir komut girilerek başlatılır. Betik, mptcp desteğine sahip çekirdeği ve gerekli tüm paketleri yükleyecektir. Ubuntu ve Debian için yükleme betikleri mevcuttur.
wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh
Sunucunun başarılı kurulumu için sonuç.

Şifreleri kaydediyoruz, bunlar müşteri yönlendiricisinin ayarları için gerekecek ve yeniden başlatıyoruz. Kurulumdan sonra SSH'nin 65222 portunda erişilebilir olacağını unutmayın. Yeniden başladıktan sonra, yeni çekirdek ile başladığımızı doğrulamak önemlidir.
uname -a
Linux test-server.local 4.19.67-mptcp
Versiyon numarasının yanında mptcp yazısını görüyorsak, çekirdek doğru şekilde kurulmuştur.
Müşteri Yönlendiricisinin Ayarları
Üçün Raspberry Pi, Banana Pi, Lynksys yönlendiricileri ve sanal makineler gibi bazı platformlar için hazır sürümler mevcuttur.
Bu openmptcprouter kısmı OpenWRT'ye dayanmaktadır ve arayüz olarak OpenWRT ile daha önce karşılaşanların iyi bildiği LuCI kullanılır. Dağıtımın boyutu yaklaşık 50 MB!

Test ortamı olarak Raspberry Pi ve farklı operatörlerden birkaç USB modem kullanacağım: MTS ve MegaFon. SD karta nasıl bir imaj yazacağımı sanırım anlatmaya gerek yok.
Raspberry Pi'deki Ethernet portu başlangıçta lan olarak statik IP adresiyle ayarlıdır. 192.168.100.1. Masanın üstündeki kablolarla uğraşmamak için Raspberry Pi'yi bir WiFi erişim noktasına bağladım ve bilgisayarın WiFi adaptörüne statik bir adres atadım. 192.168.100.2. Varsayılan olarak DHCP sunucusu etkin değildir, bu nedenle statik adresler kullanmanız gerekecek.
Artık web arayüzüne girebiliriz.
İlk girişte sistem, root parolasını belirlemenizi isteyecek, SSH de bu parola ile erişilebilir olacaktır.

LAN ayarlarında gerekli alt ağ ayarlarını yapabilir ve DHCP sunucusunu etkinleştirebilirsiniz.
Mən USB Ethernet interfeysləri kimi tanınan modemlərdən istifadə edirəm, onlarla ayrıca DHCP serveri olduğu üçün bu, əlavə proqram paketlərinin quraşdırılmasını tələb etdi. . Prosedur adi OpenWRT modemlərinin quraşdırılması ilə eynidir, buna görə də bunu burada nəzərdən keçirməyəcəyəm.
Sonra WAN interfeyslərini konfiqurasiya etmək lazımdır. Sistem ilkin mərhələdə iki virtual interfeys yəni WAN1 və WAN2 yaradır. Onlara fiziki cihaz təyin etmək lazımdır, mənim halda bu, USB modemlərinin interfeys adlarıdır.
İnterfeys adları ilə qarışıqlıq olmaması üçün, SSH ilə qoşulmuş halda dmesg mesajlarına baxmağı tövsiyə edirəm.
Modemlərim öz-özünə router rolunu oynadığı və öz DHCP serverinə malik olduğu üçün daxili şəbəkə diapazonlarının parametrlərini dəyişməli və DHCP serverini söndürməli oldum, çünki ilkin mərhələdə hər iki modem eyni şəbəkədən ünvanlar verir və bu isə münaqişəyə səbəb olur.
OpenMPTCPRouter WAN interfeyslərinin ünvanlarının statik olmasını tələb edir, buna görə modemlərə subnetlər düşünmək və system → openmptcprouter → interface settings menyusunda konfiqurasiya etmək lazımdır. Buradakı IP ünvanı və server açarını quraşdırma mərhələsində alınan dəyərlə göstərmək də lazım.

Uğurlu konfiqurasiya halında, status səhifəsində buna bənzər bir mənzərə görünməlidir. Routerin cəmləyici serverə çata bildiyi və hər iki kanaldan normal işlədiyi görünür.

Varsayılan olaraq shadowsocks + mptcp rejimi istifadə olunur. Bu, bütün bağlantıları əhatə edən bir proksidir. İllik ilkin tənzimləmə yalnız TCP-ni işlətmək üçün konfiqurasiya olunub, amma UDP-ni də aktivləşdirmək olar.

Status səhifəsində heç bir səhv yoxdursa, bu, konfiqurasiyanı tamamlanmış hesab etmək olar.
Bəzi provayderlərlə mptcp bayrağının yol boyu kəsildiyi bir vəziyyət yarana bilər, bu zaman belə bir səhv çıxacaq:

Bu halda MPTCP-dən istifadə etməmək üçün başqa bir iş rejimi istifadə etmək olar, bununla bağlı daha ətraflı məlumatı .
Nəticə
OpenMPTCPRouter layihəsi çox maraqlıdır və mühüm əhəmiyyət kəsb edir, çünki bu, yəqin ki, kanalların cəmlənməsi ilə bağlı yeganə açıq kompleks həllidir. Qalan hər şey ya tamamilə bağlanmış və mülkiyyətindədir, ya da adi bir insanın başa düşməsi üçün sadəcə ayrı-ayrı modullardır. Layihənin hal-hazırkı inkişaf mərhələsi hələ də kifayət qədər xamdır, çox zəif sənədləşmə var, bir çox şey sadəcə açıqlanmamışdır. Lakin yenə də bu, işləyir. Ümid edirəm ki, o, daha da inkişaf edəcək və biz normada kanalları birləşdirən ev routerlərini əldə edəcəyik.
İnstaqramda bizim inkişafçımızı izləyin
Mənbə: habr.com
