Penjumlahan Sejati Saluran Internet - OpenMPTCPRouter



Apakah mungkin untuk menggabungkan beberapa saluran Internet menjadi satu? Ada banyak kesalahpahaman dan mitos seputar topik ini, bahkan insinyur jaringan dengan pengalaman sering tidak tahu bahwa ini mungkin. Dalam kebanyakan kasus, agregasi tautan secara keliru disebut NAT atau failover. Tetapi penjumlahan nyata memungkinkan Anda untuk menjalankan satu koneksi TCP tunggal pada saat yang sama di semua saluran Internet , misalnya, penyiaran video sehingga ketika salah satu saluran Internet rusak, siaran tidak terputus.

Ada solusi komersial yang mahal untuk siaran video, tetapi perangkat semacam itu membutuhkan banyak kilobax. Artikel ini menjelaskan konfigurasi paket OpenMPTCPRouter gratis dan terbuka, dan mitos populer tentang agregasi saluran dianalisis.

Mitos Penjumlahan Saluran


Ada banyak router rumah yang mendukung fitur Multi-WAN. Terkadang pabrikan menyebut penjumlahan saluran ini, yang tidak sepenuhnya benar. Banyak networker percaya bahwa selain LACP dan penjumlahan di tingkat L2, tidak ada agregasi tautan lain. Saya sering mendengar bahwa ini umumnya tidak mungkin dilakukan oleh orang yang bekerja di bidang telekomunikasi. Karena itu, kami akan mencoba memahami mitos populer.

Penyeimbangan Koneksi IP


Ini adalah cara yang paling terjangkau dan populer untuk memanfaatkan beberapa saluran Internet secara bersamaan. Untuk kesederhanaan, anggaplah Anda memiliki tiga penyedia Internet, masing-masing memberi Anda alamat IP nyata dari jaringan Anda. Semua penyedia ini terhubung ke router yang mendukung Multi-WAN. Itu bisa OpenWRT dengan paket mwan3, mikrotik, ubiquiti, atau router rumah tangga lainnya, karena sekarang pilihan ini tidak jarang.

Untuk mensimulasikan situasi, bayangkan penyedia memberi kami alamat ini:

WAN1 โ€” 11.11.11.11 WAN2 โ€” 22.22.22.22 WAN2 โ€” 33.33.33.33 

Yaitu, menghubungkan ke server example.com jauh melalui masing-masing penyedia, server jauh akan melihat tiga klien ip sumber independen. Penyeimbangan memungkinkan Anda berbagi beban di saluran dan menggunakannya ketiganya secara bersamaan. Untuk kesederhanaan, bayangkan kami membagi beban di antara semua saluran secara merata. Akibatnya, ketika klien membuka situs di mana terdapat tiga gambar secara konvensional, ia mengunggah setiap gambar melalui penyedia terpisah. Di sisi situs, sepertinya koneksi dari tiga IP berbeda.


Saat menyeimbangkan pada tingkat koneksi, setiap koneksi TCP melewati penyedia terpisah .

Mode balancing ini sering menyebabkan masalah bagi pengguna. Misalnya, banyak situs yang dengan ketat melampirkan cookie dan token ke alamat IP klien, dan jika tiba-tiba berubah, permintaan ditolak atau klien logout di situs. Ini sering direproduksi pada sistem bank klien dan di situs lain dengan aturan sesi pengguna yang ketat. Berikut adalah contoh ilustratif sederhana: file musik di VK.com hanya tersedia dengan kunci sesi yang valid yang terkait dengan IP, dan klien yang menggunakan penyeimbangan seperti itu sering tidak memutar audio, karena permintaan tidak melalui penyedia tempat sesi terikat.


Saat mengunduh torrent, menyeimbangkan pada tingkat koneksi menjumlahkan bandwidth semua saluran

Penyeimbangan ini memungkinkan Anda untuk mendapatkan penjumlahan dari kecepatan saluran Internet saat menggunakan beberapa koneksi. Misalnya, jika masing-masing dari tiga penyedia memiliki kecepatan 100 megabit, maka ketika mengunduh torrent kita mendapatkan 300 megabit. Karena torrent membuka banyak koneksi yang didistribusikan di antara semua penyedia dan akhirnya memanfaatkan seluruh saluran.

Penting untuk dipahami bahwa koneksi TCP tunggal akan selalu melalui hanya satu penyedia. Artinya, jika kita mengunduh satu file besar melalui HTTP, maka koneksi ini akan dilakukan melalui salah satu penyedia, dan jika koneksi dengan penyedia ini terputus, unduhan juga akan terputus.


Satu koneksi akan selalu menggunakan hanya satu saluran Internet

Ini berlaku untuk siaran video. Jika Anda streaming video ke semacam Kedutan bersyarat, maka menyeimbangkan pada tingkat koneksi IP tidak akan memberikan manfaat khusus, karena aliran video akan disiarkan dalam satu koneksi IP. Dalam hal ini, jika penyedia WAN 3 mulai memiliki masalah komunikasi, misalnya, kehilangan paket atau pengurangan kecepatan, Anda tidak akan dapat langsung beralih ke penyedia lain. Siaran harus dihentikan dan disambungkan kembali.

Penjumlahan Saluran Sejati


Penjumlahan aktual saluran memungkinkan untuk memulai satu koneksi ke Kedutan bersyarat segera melalui semua penyedia sedemikian rupa sehingga jika ada penyedia yang putus, koneksi tidak akan terputus. Ini adalah tugas yang sangat sulit, yang masih belum memiliki solusi optimal. Banyak yang bahkan tidak tahu bahwa ini mungkin!

Dari ilustrasi sebelumnya, kita ingat bahwa server Twitch bersyarat dapat menerima aliran video dari kami hanya dari satu alamat IP sumber, yang berarti harus selalu konstan dengan kami, terlepas dari penyedia mana yang jatuh dan mana yang berfungsi. Untuk mencapai ini, kita membutuhkan server penjumlahan yang akan mengakhiri semua koneksi kita dan menggabungkannya menjadi satu.


Server penjumlahan menggabungkan semua saluran menjadi satu terowongan. Semua koneksi terjadi dari alamat server penjumlahan

Dalam skema ini, semua penyedia digunakan, dan menonaktifkan salah satu dari mereka tidak akan menyebabkan gangguan komunikasi dengan server Twitch. Bahkan, ini adalah terowongan VPN khusus, di bawah tenda yang ada beberapa saluran Internet sekaligus. Tugas utama skema semacam itu adalah untuk mendapatkan saluran komunikasi dengan kualitas terbaik. Jika masalah dimulai pada salah satu penyedia, kehilangan paket, peningkatan keterlambatan, ini seharusnya tidak mempengaruhi kualitas komunikasi dengan cara apa pun, karena beban akan secara otomatis didistribusikan melalui saluran lain yang lebih baik yang tersedia.

Solusi Komersial


Masalah ini telah lama mengganggu mereka yang menyiarkan acara langsung dan tidak memiliki akses ke Internet berkualitas tinggi. Ada beberapa solusi komersial untuk tugas-tugas seperti itu, misalnya, perusahaan Teradek membuat router mengerikan ke mana paket modem USB dimasukkan:


Router Siaran Video dengan Fungsi Penjumlah Saluran

Pada perangkat seperti itu, biasanya, kemampuan untuk menangkap video melalui HDMI atau SDI. Bersama-sama dengan router, langganan ke layanan penjumlahan saluran dijual, serta memproses streaming video, transcoding dan menyampaikan lebih lanjut. Harga perangkat semacam itu mulai dari $ 2rb dengan seperangkat modem, ditambah langganan terpisah untuk layanan.

Terkadang terlihat sangat menakutkan:



Konfigurasikan OpenMPTCPRouter


Protokol MP-TCP (MultiPath TCP) diciptakan untuk kemampuan untuk terhubung di beberapa saluran sekaligus. Misalnya, ia mendukung iOS dan secara bersamaan dapat terhubung ke server jarak jauh melalui WiFi dan melalui jaringan seluler. Penting untuk dipahami bahwa ini bukan dua koneksi TCP yang terpisah, tetapi hanya satu koneksi yang dibuat langsung pada dua saluran. Agar ini berfungsi, server jarak jauh harus mendukung MPTCP juga.

OpenMPTCPRouter adalah proyek router sumber terbuka yang memungkinkan Anda untuk benar-benar menambahkan saluran. Para penulis menyatakan bahwa proyek ini dalam status alfa, tetapi sudah dapat digunakan. Ini terdiri dari dua bagian - server penjumlahan, yang terletak di Internet dan router, yang terhubung dengan beberapa penyedia Internet dan perangkat klien: komputer, telepon. Sebagai router khusus, Raspberry Pi, beberapa router WiFi atau komputer biasa dapat bertindak. Ada rakitan siap pakai untuk berbagai platform, yang sangat nyaman.


Bagaimana OpenMPTCPRouter Bekerja

Mengkonfigurasi Server Penjumlahan


Server penjumlahan terletak di Internet dan mengakhiri koneksi dari semua saluran router klien menjadi satu. Alamat IP server ini akan menjadi alamat eksternal ketika mengakses Internet melalui OpenMPTCPRouter.

Untuk tugas ini, kami akan menggunakan server VPS di Debian 10.

Persyaratan Server Summarization:

  • MPTCP tidak berfungsi pada virtualisasi OpenVZ
  • Seharusnya dimungkinkan untuk menginstal kernel Linux Anda sendiri

Server dikerahkan dengan menjalankan satu perintah. Script akan menginstal kernel dengan dukungan mptcp dan semua paket yang diperlukan. Skrip instalasi tersedia untuk Ubuntu dan Debian.

 wget -O - http://www.openmptcprouter.com/server/debian10-x86_64.sh | sh 

Hasil instalasi server yang sukses.



Kami menyimpan kata sandi, kami akan membutuhkannya untuk mengkonfigurasi router klien, dan reboot. Penting untuk diingat bahwa setelah instalasi, SSH akan tersedia pada port 65222. Setelah reboot, Anda perlu memastikan bahwa kami melakukan boot dengan kernel baru

 uname -a Linux test-server.local 4.19.67-mptcp 

Kami melihat mptcp di sebelah nomor versi, yang berarti kernel terpasang dengan benar.

Menyiapkan router klien


Di situs proyek , rakitan siap pakai tersedia untuk beberapa platform, misalnya, Raspberry Pi, Banana Pi, router Lynksys dan mesin virtual.
Bagian dari openmptcprouter ini didasarkan pada OpenWRT, menggunakan LuCI sebagai antarmuka, akrab bagi semua orang yang pernah menemukan OpenWRT. Kit distribusi berbobot sekitar 50MB!



Sebagai bangku tes, saya akan menggunakan Raspberry Pi dan beberapa modem USB dengan operator yang berbeda: MTS dan Megaphone. Cara menulis gambar ke kartu SD, saya pikir, tidak perlu diceritakan.

Awalnya, port Ethernet di Raspberry Pi dikonfigurasi sebagai lan dengan alamat IP statis 192.168.100.1 . Agar tidak mengacaukan kabel di atas meja, saya menghubungkan Raspberry Pi ke titik akses WiFi dan mengatur alamat statis 192.168.100.2 pada adaptor WiFi komputer. Server DHCP tidak diaktifkan secara default, jadi Anda harus menggunakan alamat statis.

Sekarang Anda dapat pergi ke antarmuka web 192.168.100.1

Pada login pertama, sistem akan meminta Anda untuk mengatur kata sandi root, SSH akan tersedia dengan kata sandi yang sama.


Dalam pengaturan LAN, Anda dapat mengatur subnet yang diinginkan dan mengaktifkan server DHCP.

Saya menggunakan modem, yang didefinisikan sebagai antarmuka USB Ethernet dengan server DHCP terpisah, jadi ini memerlukan instalasi paket tambahan . Prosedurnya identik dengan pengaturan modem di OpenWRT yang biasa, jadi saya tidak akan mempertimbangkannya di sini.

Selanjutnya, Anda perlu mengkonfigurasi antarmuka WAN. Awalnya, dua antarmuka virtual WAN1 dan WAN2 dibuat dalam sistem. Mereka perlu ditugaskan perangkat fisik, dalam kasus saya ini adalah nama-nama antarmuka modem USB.

Agar tidak bingung dengan nama antarmuka, saya menyarankan Anda untuk menonton pesan dmesg dengan menghubungkan melalui SSH.

Karena modem saya sendiri bertindak sebagai router, dan mereka sendiri memiliki server DHCP, saya harus mengubah pengaturan rentang internal jaringan mereka dan menonaktifkan server DHCP, karena pada awalnya kedua modem memberikan alamat dari jaringan yang sama, dan ini menyebabkan konflik.

OpenMPTCPRouter mensyaratkan bahwa alamat antarmuka WAN bersifat statis, jadi kami membuat modem untuk subnet dan mengkonfigurasinya dalam sistem menu โ†’ openmptcprouter โ†’ pengaturan antarmuka. Di sini Anda perlu menentukan alamat IP dan kunci server yang diperoleh selama instalasi server penjumlahan.



Seandainya pengaturan berhasil, gambar yang serupa akan muncul di halaman status. Dapat dilihat bahwa router dapat mencapai server penjumlahan dan kedua saluran bekerja secara normal.



Mode standar adalah shadowsocks + mptcp. Ini adalah proxy yang membungkus semua koneksi. Awalnya, ini dikonfigurasi untuk hanya menangani TCP, tetapi Anda dapat mengaktifkan UDP.



Jika tidak ada kesalahan pada halaman status, maka pengaturan dapat dianggap selesai.
Dengan beberapa penyedia, situasi mungkin muncul ketika bendera mptcp terputus pada rute lalu lintas, maka akan ada kesalahan seperti itu:



Dalam hal ini, Anda dapat menggunakan mode operasi yang berbeda, tanpa menggunakan MPTCP, lebih lanjut tentang ini di sini .

Kesimpulan


Proyek OpenMPTCPRouter sangat menarik dan penting, karena ini mungkin satu-satunya solusi komprehensif terbuka untuk masalah penjumlahan saluran. Segala sesuatu yang lain tertutup rapat dan berpemilik, atau hanya memisahkan modul yang tidak bisa ditangani oleh orang biasa. Pada tahap pengembangan saat ini, proyek masih cukup kasar, dokumentasi sangat buruk, banyak hal yang tidak dijelaskan. Tapi dia masih bekerja. Saya berharap ini akan terus berkembang, dan kita akan mendapatkan router rumah tangga yang akan dapat menggabungkan saluran secara normal.



Berlangganan pengembang Instagram kami


Source: https://habr.com/ru/post/id479026/


All Articles