Birkaç İnternet kanalını tek bir kanalda birleştirmek mümkün mü? Bu konuyla ilgili pek çok yanlış anlama ve efsane var; deneyimli ağ mühendisleri bile bunun mümkün olduğunu çoğu zaman bilmiyor. Çoğu durumda, bağlantı birleştirmeye yanlışlıkla NAT düzeyinde dengeleme veya yük devretme adı verilir. Ancak gerçek toplama izin verir tüm İnternet kanalları üzerinden aynı anda tek bir TCP bağlantısı başlatınÖrneğin internet kanallarından herhangi birinin kesintiye uğraması durumunda yayının kesintiye uğramaması için video yayını yapılması.
Video yayınları için pahalı ticari çözümler mevcut ancak bu tür cihazların maliyeti çok fazla. Makalede ücretsiz, açık kaynaklı OpenMPTCPRouter paketinin nasıl yapılandırılacağı açıklanmakta ve kanal toplamayla ilgili popüler efsaneler ele alınmaktadır.
Kanal toplamına ilişkin mitler
Çoklu WAN işlevini destekleyen birçok ev yönlendiricisi vardır. Bazen üreticiler bu kanal toplama adını verirler ki bu tamamen doğru değildir. Birçok ağ uzmanı buna ek olarak buna inanıyor
IP bağlantı düzeyinde dengeleme
Bu, aynı anda birden fazla İnternet kanalını kullanmanın en uygun fiyatlı ve popüler yoludur. Basitleştirmek için, her biri size kendi ağlarından gerçek bir IP adresi veren üç İnternet sağlayıcınız olduğunu varsayalım. Tüm bu sağlayıcılar Çoklu WAN işlevini destekleyen bir yönlendiriciye bağlıdır. Bu, mwan3 paketine sahip OpenWRT, mikrotik, ubiquiti veya başka herhangi bir ev yönlendiricisi olabilir, çünkü böyle bir seçenek artık nadir değildir.
Durumu simüle etmek için sağlayıcıların bize aşağıdaki adresleri verdiğini varsayalım:
WAN1 — 11.11.11.11
WAN2 — 22.22.22.22
WAN2 — 33.33.33.33
Yani uzak bir sunucuya bağlanmak example.com Uzak sunucu, sağlayıcıların her biri aracılığıyla üç bağımsız kaynak IP istemcisi görecektir. Dengeleme, yükü kanallara bölmenize ve üçünü de aynı anda kullanmanıza olanak tanır. Basit olması açısından yükü tüm kanallara eşit olarak bölüştürdüğümüzü hayal edelim. Sonuç olarak, bir müşteri üç görsel içeren bir site açtığında, her görseli ayrı bir sağlayıcı aracılığıyla indirir. Site tarafında üç farklı IP'den gelen bağlantılar gibi görünüyor.
Bağlantı düzeyinde dengeleme yapılırken her TCP bağlantısı ayrı bir sağlayıcı üzerinden geçer.
Bu dengeleme modu çoğu zaman kullanıcılar için sorunlara neden olur. Örneğin, birçok site çerezleri ve belirteçleri müşterinin IP adresine sıkı bir şekilde bağlar ve bu adres aniden değişirse istek reddedilir veya müşterinin sitedeki oturumu kapatılır. Bu genellikle müşteri-banka sistemlerinde ve katı kullanıcı oturumu kurallarına sahip diğer sitelerde çoğaltılır. İşte basit bir açıklayıcı örnek: VK.com'daki müzik dosyaları yalnızca bir IP'ye bağlı geçerli bir oturum anahtarıyla kullanılabilir ve bu tür bir dengelemeyi kullanan istemciler, istek, sağlayıcıdan geçmediği için genellikle ses çalmaz. oturum berabere kaldı.
Torrentleri indirirken bağlantı düzeyi dengeleme, tüm kanalların bant genişliğini toplar
Bu dengeleme, birden fazla bağlantı kullanıldığında İnternet kanalının hızının toplamını almanızı sağlar. Örneğin, üç sağlayıcıdan her birinin hızı 100 Megabit ise, torrentleri indirirken 300 Megabit elde edeceğiz. Çünkü bir torrent, tüm sağlayıcılar arasında dağıtılan ve sonuçta kanalın tamamını kullanan birçok bağlantıyı açar.
Tek bir TCP bağlantısının her zaman yalnızca bir sağlayıcı üzerinden geçeceğini anlamak önemlidir. Yani HTTP üzerinden büyük bir dosya indirirsek bu bağlantı sağlayıcılardan biri üzerinden yapılacak, bu sağlayıcıyla bağlantı koparsa indirme de kesilecektir.
Bir bağlantı her zaman yalnızca bir İnternet kanalını kullanır
Bu aynı zamanda video yayınları için de geçerlidir. Bir tür koşullu Twitch'e video akışı yayınlıyorsanız, video akışı tek bir IP bağlantısı içinde yayınlanacağı için IP bağlantıları düzeyinde dengeleme belirli bir fayda sağlamayacaktır. Bu durumda WAN 3 sağlayıcısı paket kaybı veya hızın düşmesi gibi iletişim sorunları yaşamaya başlarsa anında başka bir sağlayıcıya geçiş yapamazsınız. Yayının durdurulması ve yeniden bağlanması gerekecek.
Gerçek kanal toplamı
Gerçek kanal toplama, koşullu bir Twitch'e tek bir bağlantının tüm sağlayıcılar üzerinden aynı anda çalıştırılmasını mümkün kılar; böylece sağlayıcılardan herhangi biri bozulursa bağlantı kesintiye uğramaz. Bu şaşırtıcı derecede zor bir sorundur ve hala optimal bir çözümü yoktur. Pek çok insan bunun mümkün olduğunu bile bilmiyor!
Önceki çizimlerden, koşullu Twitch sunucusunun bizden yalnızca bir kaynak IP adresinden video akışı alabildiğini hatırlıyoruz; bu, hangi sağlayıcıların devre dışı kaldığına ve hangilerinin çalıştığına bakılmaksızın bizim için her zaman sabit olması gerektiği anlamına gelir. Bunu başarmak için tüm bağlantılarımızı sonlandıracak ve bunları tek bir bağlantıda birleştirecek bir toplama sunucusuna ihtiyacımız var.
Toplama sunucusu tüm kanalları tek bir tünelde toplar. Tüm bağlantılar toplama sunucusu adresinden kaynaklanır
Bu şemada tüm sağlayıcılar kullanılır ve bunlardan herhangi birinin devre dışı bırakılması Twitch sunucusuyla iletişim kaybına neden olmaz. Esasen bu, kaputunun altında aynı anda birkaç İnternet kanalının bulunduğu özel bir VPN tünelidir. Böyle bir planın asıl görevi, en yüksek kalitede iletişim kanalını elde etmektir. Sağlayıcılardan biri sorun yaşamaya, paket kaybına, artan gecikmelere başlarsa, bu durum iletişim kalitesini hiçbir şekilde etkilememelidir, çünkü yük otomatik olarak mevcut daha iyi diğer kanallara dağıtılacaktır.
Ticari Çözümler
Bu sorun uzun zamandır canlı etkinlik yayınlayan ve yüksek kaliteli internete erişimi olmayanları rahatsız ediyor. Bu tür görevler için birkaç ticari çözüm vardır; örneğin, Teradek şirketi, içine USB modem paketlerinin takıldığı canavarca yönlendiriciler yapar:
Kanal toplama işlevine sahip video yayınları için yönlendirici
Bu tür cihazlar genellikle HDMI veya SDI aracılığıyla video sinyallerini yakalama özelliğine sahiptir. Yönlendiriciyle birlikte, kanal toplama hizmetine aboneliğin yanı sıra video akışının işlenmesi, kodunun dönüştürülmesi ve daha fazla iletilmesi de satılmaktadır. Bu tür cihazların fiyatı, bir dizi modem ve ayrıca hizmete ayrı bir abonelikle birlikte 2 bin dolardan başlıyor.
Bazen oldukça korkutucu görünüyor:
OpenMPTCPRouter'ı kurma
Protokol
OpenMPTCPRouter nasıl çalışır?
Özetleme sunucusu kurma
Toplama sunucusu internette bulunur ve istemci yönlendiricinin tüm kanallarından gelen bağlantıları tek bir kanalda sonlandırır. Bu sunucunun IP adresi, OpenMPTCPRouter aracılığıyla internete erişildiğinde harici adres olacaktır.
Bu görev için Debian 10'da bir VPS sunucusu kullanacağız.
Toplama sunucusu için gereksinimler:
- MPTCP, OpenVZ sanallaştırmasında çalışmıyor
- Kendi Linux çekirdeğinizi kurmanız mümkün olmalı
Sunucu tek bir komut yürütülerek dağıtılır. Betik mptcp destekli bir çekirdek ve gerekli tüm paketleri kuracaktır. Ubuntu ve Debian için kurulum komut dosyaları mevcuttur.
wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh
Başarılı bir sunucu kurulumunun sonucu.
Şifreleri kaydediyoruz, istemci yönlendiricisini yapılandırmak ve yeniden başlatmak için onlara ihtiyacımız olacak. Kurulumdan sonra SSH'nin 65222 numaralı portta mevcut olacağını unutmamak önemlidir. Yeniden başlattıktan sonra yeni çekirdekle önyükleme yaptığımızdan emin olmalıyız.
uname -a
Linux test-server.local 4.19.67-mptcp
Sürüm numarasının yanında mptcp yazısını görüyoruz, bu da çekirdeğin doğru kurulduğu anlamına geliyor.
İstemci yönlendiricisinin kurulması
Üzerinde
Openmptcprouter'ın bu kısmı, OpenWRT ile karşılaşan herkesin aşina olduğu bir arayüz olarak LuCI'yi kullanan OpenWRT'yi temel alır. Dağıtımın ağırlığı yaklaşık 50 MB'tır!
Test tezgahı olarak Raspberry Pi'yi ve farklı operatörlere sahip birkaç USB modemi kullanacağım: MTS ve Megafon. SD karta nasıl resim yazılacağını size söylememe gerek yok sanırım.
Başlangıçta Raspberry Pi'deki Ethernet portu statik IP adresine sahip lan olarak yapılandırılmıştır. 192.168.100.1. Masanın üzerindeki kablolarla uğraşmamak için Raspberry Pi'yi bir WiFi erişim noktasına bağladım ve bilgisayarın WiFi adaptörünü statik bir adrese ayarladım 192.168.100.2. DHCP sunucusu varsayılan olarak etkin değildir, dolayısıyla statik adresler kullanmanız gerekir.
Artık web arayüzüne giriş yapabilirsiniz
İlk kez giriş yaptığınızda sistem sizden root şifresi belirlemenizi isteyecek; SSH aynı şifre ile kullanıma sunulacaktır.
LAN ayarlarında istediğiniz alt ağı ayarlayabilir ve DHCP sunucusunu etkinleştirebilirsiniz.
Ayrı bir DHCP sunucusuyla USB Ethernet arayüzleri olarak tanımlanan modemleri kullanıyorum, dolayısıyla bu kurulum gerektiriyordu
Daha sonra WAN arayüzlerini yapılandırmanız gerekir. Başlangıçta sistem iki sanal arayüz WAN1 ve WAN2 oluşturdu. Onlara fiziksel bir cihaz atanması gerekiyor, benim durumumda bunlar USB modem arayüzlerinin adlarıdır.
Arayüz adlarıyla ilgili karışıklığı önlemek için SSH üzerinden bağlanırken dmesg mesajlarını görüntülemenizi öneririm.
Modemlerimin kendileri yönlendirici görevi gördüğünden ve bir DHCP sunucusuna sahip olduklarından, dahili ağ aralıklarının ayarlarını değiştirmek ve DHCP sunucusunu devre dışı bırakmak zorunda kaldım çünkü başlangıçta her iki modem de aynı ağdan adresler veriyor ve bu bir çakışmaya neden oluyor.
OpenMPTCPRouter, WAN arayüz adreslerinin statik olmasını gerektirir, bu nedenle modemler için alt ağlar oluşturup bunları sistem → openmptcprouter → arayüz ayarları menüsünde yapılandırıyoruz. Burada toplama sunucusunun kurulumu sırasında elde edilen IP adresini ve sunucu anahtarını belirtmeniz gerekir.
Kurulum başarılı olursa durum sayfasında benzer bir resim görünmelidir. Yönlendiricinin toplama sunucusuna ulaşabildiği ve her iki kanalın da normal şekilde çalıştığı görülebilir.
Varsayılan mod shadowsocks + mptcp'dir. Bu, tüm bağlantıları kendi içinde saran bir proxy'dir. Başlangıçta yalnızca TCP'yi işleyecek şekilde yapılandırılmıştır ancak UDP de etkinleştirilebilir.
Durum sayfasında herhangi bir hata yoksa kurulum tamamlanmış sayılabilir.
Bazı sağlayıcılarda mptcp bayrağı trafik yolu boyunca kesildiğinde bir durum ortaya çıkabilir, ardından aşağıdaki hata görünecektir:
Bu durumda MPTCP kullanmadan farklı bir çalışma modu kullanabilirsiniz, bunun hakkında daha fazla bilgi
Sonuç
OpenMPTCPRouter projesi çok ilginç ve önemlidir, çünkü belki de kanal toplama problemine yönelik tek açık kapsamlı çözümdür. Geriye kalan her şey ya sıkı bir şekilde kapalı ve özeldir ya da sıradan bir insanın anlayamayacağı ayrı modüllerdir. Şu anki geliştirme aşamasında, proje hala oldukça kaba, dokümantasyon son derece zayıf, pek çok şey açıklanmıyor. Ama aynı zamanda hala çalışıyor. Umarım gelişmeye devam eder ve kanalları kutudan çıktığı gibi düzgün bir şekilde birleştirebilecek ev tipi yönlendiriciler alırız.
Geliştiricimizi Instagram'da takip edin
Kaynak: habr.com