Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Adakah mungkin untuk menggabungkan beberapa saluran Internet menjadi satu? Terdapat banyak salah tanggapan dan mitos mengenai topik ini; walaupun jurutera rangkaian berpengalaman sering tidak tahu bahawa ini mungkin. Dalam kebanyakan kes, pengagregatan pautan tersilap dipanggil pengimbangan pada tahap NAT atau failover. Tetapi penjumlahan sebenar membenarkan melancarkan satu sambungan TCP tunggal secara serentak ke atas semua saluran Internet, sebagai contoh, penyiaran video supaya jika mana-mana saluran Internet terganggu, siaran tidak akan terganggu.

Terdapat penyelesaian komersil yang mahal untuk siaran video, tetapi peranti sedemikian menelan belanja banyak kilobucks. Artikel ini menerangkan cara mengkonfigurasi pakej OpenMPTCPRouter sumber terbuka percuma dan menangani mitos popular tentang penjumlahan saluran.

Mitos tentang penjumlahan saluran

Terdapat banyak penghala rumah yang menyokong fungsi Multi-WAN. Kadang-kadang pengeluar memanggil saluran ini penjumlahan, yang tidak sepenuhnya benar. Ramai networkers percaya bahawa sebagai tambahan kepada LACP dan penjumlahan pada tahap L2, tiada pengagregatan saluran lain wujud. Saya sering mendengar bahawa ini secara amnya mustahil daripada orang yang bekerja dalam telekomunikasi. Oleh itu, mari kita cuba memahami mitos popular.

Mengimbangi pada tahap sambungan IP

Ini adalah cara paling berpatutan dan popular untuk menggunakan beberapa saluran Internet pada masa yang sama. Untuk kesederhanaan, mari bayangkan anda mempunyai tiga penyedia Internet, masing-masing memberikan anda alamat IP sebenar daripada rangkaian mereka. Semua pembekal ini disambungkan ke penghala yang menyokong fungsi Multi-WAN. Ini mungkin OpenWRT dengan pakej mwan3, mikrotik, ubiquiti, atau mana-mana penghala isi rumah yang lain, kerana pilihan sebegitu tidak lagi biasa.

Untuk mensimulasikan keadaan, mari bayangkan bahawa pembekal memberi kami alamat berikut:

WAN1 β€” 11.11.11.11
WAN2 β€” 22.22.22.22
WAN2 β€” 33.33.33.33

Iaitu, menyambung ke pelayan jauh example.com Melalui setiap pembekal, pelayan jauh akan melihat tiga pelanggan IP sumber bebas. Mengimbangi membolehkan anda membahagikan beban merentas saluran dan menggunakan ketiga-tiganya secara serentak. Untuk kesederhanaan, mari bayangkan bahawa kita membahagikan beban sama rata antara semua saluran. Akibatnya, apabila pelanggan membuka tapak dengan tiga imej, dia memuat turun setiap imej melalui pembekal yang berasingan. Di sisi tapak ia kelihatan seperti sambungan daripada tiga IP berbeza.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter
Apabila mengimbangi pada tahap sambungan, setiap sambungan TCP melalui pembekal yang berasingan.

Mod pengimbangan ini sering menyebabkan masalah kepada pengguna. Sebagai contoh, banyak tapak mengikat kuki dan token dengan ketat kepada alamat IP pelanggan, dan jika ia tiba-tiba berubah, permintaan itu ditolak atau pelanggan dilog keluar dari tapak. Ini sering diterbitkan semula dalam sistem bank pelanggan dan tapak lain dengan peraturan sesi pengguna yang ketat. Berikut ialah contoh ilustrasi yang mudah: fail muzik di VK.com hanya tersedia dengan kunci sesi yang sah, yang terikat pada IP, dan pelanggan yang menggunakan pengimbangan sedemikian sering tidak memainkan audio kerana permintaan tidak melalui pembekal yang sesi terikat.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter
Apabila memuat turun torrents, pengimbangan tahap sambungan merumuskan lebar jalur semua saluran

Pengimbangan ini membolehkan anda mendapatkan penjumlahan kelajuan saluran Internet apabila menggunakan berbilang sambungan. Sebagai contoh, jika setiap tiga pembekal mempunyai kelajuan 100 Megabit, maka apabila memuat turun torrents kita akan mendapat 300 Megabit. Kerana torrent membuka banyak sambungan, yang diedarkan di kalangan semua pembekal dan akhirnya menggunakan keseluruhan saluran.

Adalah penting untuk memahami bahawa satu sambungan TCP tunggal akan sentiasa melalui hanya satu pembekal. Iaitu, jika kita memuat turun satu fail besar melalui HTTP, maka sambungan ini akan dibuat melalui salah satu pembekal, dan jika sambungan dengan pembekal ini terputus, muat turun juga akan terputus.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter
Satu sambungan akan sentiasa menggunakan satu saluran Internet sahaja

Ini juga berlaku untuk siaran video. Jika anda menyiarkan penstriman video ke beberapa jenis Twitch bersyarat, maka pengimbangan pada tahap sambungan IP tidak akan memberikan apa-apa faedah tertentu, kerana strim video akan disiarkan dalam satu sambungan IP. Dalam kes ini, jika pembekal WAN 3 mula menghadapi masalah dengan komunikasi, seperti kehilangan paket atau kelajuan yang berkurangan, maka anda tidak akan dapat bertukar serta-merta kepada pembekal lain. Siaran itu perlu dihentikan dan disambung semula.

Penjumlahan saluran benar

Penjumlahan saluran sebenar membolehkan untuk menjalankan satu sambungan ke Twitch bersyarat melalui semua pembekal sekaligus dengan cara yang jika mana-mana pembekal rosak, sambungan tidak akan terganggu. Ini adalah masalah yang sangat sukar yang masih tidak mempunyai penyelesaian yang optimum. Ramai orang tidak tahu bahawa ini mungkin!

Daripada ilustrasi sebelumnya, kami ingat bahawa pelayan Twitch bersyarat boleh menerima aliran video daripada kami daripada hanya satu alamat IP sumber, yang bermaksud ia mesti sentiasa malar untuk kami, tanpa mengira penyedia yang gagal dan yang mana yang berfungsi. Untuk mencapai matlamat ini, kami memerlukan pelayan penjumlahan yang akan menamatkan semua sambungan kami dan menggabungkannya menjadi satu.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter
Pelayan penjumlahan mengagregatkan semua saluran ke dalam satu terowong. Semua sambungan berasal dari alamat pelayan penjumlahan

Dalam skim ini, semua pembekal digunakan, dan melumpuhkan mana-mana daripada mereka tidak akan menyebabkan kehilangan komunikasi dengan pelayan Twitch. Pada asasnya, ini adalah terowong VPN khas, di bawah tudungnya terdapat beberapa saluran Internet sekaligus. Tugas utama skim sedemikian adalah untuk mendapatkan saluran komunikasi berkualiti tinggi. Jika salah satu pembekal mula mengalami masalah, kehilangan paket, peningkatan kelewatan, maka ini tidak boleh menjejaskan kualiti komunikasi dalam apa cara sekalipun, kerana beban akan diagihkan secara automatik ke saluran lain yang lebih baik yang tersedia.

Penyelesaian Komersial

Masalah ini telah lama merisaukan mereka yang menyiarkan acara secara langsung dan tidak mempunyai akses kepada Internet berkualiti tinggi. Untuk tugas sedemikian, terdapat beberapa penyelesaian komersil, sebagai contoh, syarikat Teradek membuat penghala yang begitu dahsyat di mana pek modem USB dimasukkan:

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter
Penghala untuk siaran video dengan fungsi penjumlahan saluran

Peranti sedemikian biasanya mempunyai keupayaan terbina dalam untuk menangkap isyarat video melalui HDMI atau SDI. Bersama penghala, langganan kepada perkhidmatan penjumlahan saluran dijual, serta memproses strim video, mentranskodkannya dan menyampaikannya lagi. Harga peranti sedemikian bermula dari $2k dengan satu set modem, serta langganan berasingan kepada perkhidmatan tersebut.

Kadang-kadang ia kelihatan agak menakutkan:

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Menyediakan OpenMPTCPRouter

Protokol MP-TCP (MultiPath TCP) dicipta untuk dapat menyambung melalui beberapa saluran sekaligus. Sebagai contoh, beliau menyokong iOS dan secara serentak boleh menyambung ke pelayan jauh melalui WiFi dan melalui rangkaian selular. Adalah penting untuk memahami bahawa ini bukan dua sambungan TCP yang berasingan, tetapi satu sambungan yang diwujudkan melalui dua saluran sekaligus. Untuk ini berfungsi, pelayan jauh mesti menyokong MPTCP juga.

OpenMPTCPROuter ialah projek penghala perisian sumber terbuka yang membolehkan ringkasan saluran yang benar. Pengarang menyatakan bahawa projek itu dalam status versi alfa, tetapi ia sudah boleh digunakan. Ia terdiri daripada dua bahagian - pelayan penjumlahan, yang terletak di Internet dan penghala, yang mana beberapa pembekal Internet dan peranti klien itu sendiri disambungkan: komputer, telefon. Penghala tersuai boleh menjadi Raspberry Pi, beberapa penghala WiFi atau komputer biasa. Terdapat perhimpunan siap sedia untuk pelbagai platform, yang sangat mudah.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter
Cara OpenMPTCPRouter berfungsi

Menyediakan pelayan ringkasan

Pelayan penjumlahan terletak di Internet dan menamatkan sambungan dari semua saluran penghala pelanggan menjadi satu. Alamat IP pelayan ini akan menjadi alamat luaran apabila mengakses Internet melalui OpenMPTCPRouter.

Untuk tugas ini kami akan menggunakan pelayan VPS pada Debian 10.

Keperluan untuk pelayan penjumlahan:

  • MPTCP tidak berfungsi pada virtualisasi OpenVZ
  • Ia sepatutnya boleh memasang kernel Linux anda sendiri

Pelayan digunakan dengan melaksanakan satu arahan. Skrip akan memasang kernel dengan sokongan mptcp dan semua pakej yang diperlukan. Skrip pemasangan tersedia untuk Ubuntu dan Debian.

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

Hasil daripada pemasangan pelayan yang berjaya.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Kami menyimpan kata laluan, kami memerlukannya untuk mengkonfigurasi penghala pelanggan, dan but semula. Adalah penting untuk diingat bahawa selepas pemasangan, SSH akan tersedia pada port 65222. Selepas but semula, kita perlu memastikan bahawa kita but dengan kernel baharu

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

Kami melihat inskripsi mptcp di sebelah nombor versi, yang bermaksud kernel telah dipasang dengan betul.

Menyediakan penghala pelanggan

Pada laman web projek binaan siap sedia tersedia untuk beberapa platform, seperti Raspberry Pi, Banana Pi, penghala Lynksys dan mesin maya.
Bahagian openmptcprouter ini adalah berdasarkan OpenWRT, menggunakan LuCI sebagai antara muka, biasa kepada sesiapa sahaja yang pernah menemui OpenWRT. Pengedaran beratnya kira-kira 50MB!

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Sebagai bangku ujian, saya akan menggunakan Raspberry Pi dan beberapa modem USB dengan pengendali berbeza: MTS dan Megafon. Saya rasa saya tidak perlu memberitahu anda cara menulis imej pada kad SD.

Pada mulanya, port Ethernet dalam Raspberry Pi dikonfigurasikan sebagai lan dengan alamat IP statik 192.168.100.1. Untuk mengelakkan mengutak-atik wayar di atas meja, saya menyambungkan Raspberry Pi ke titik akses WiFi dan menetapkan penyesuai WiFi komputer kepada alamat statik 192.168.100.2. Pelayan DHCP tidak didayakan secara lalai, jadi anda mesti menggunakan alamat statik.

Kini anda boleh log masuk ke antara muka web 192.168.100.1

Apabila anda log masuk buat kali pertama, sistem akan meminta anda menetapkan kata laluan root; SSH akan tersedia dengan kata laluan yang sama.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter
Dalam tetapan LAN, anda boleh menetapkan subnet yang dikehendaki dan membolehkan pelayan DHCP.

Saya menggunakan modem yang ditakrifkan sebagai antara muka Ethernet USB dengan pelayan DHCP yang berasingan, jadi ini memerlukan pemasangan pakej tambahan. Prosedurnya adalah sama dengan menyediakan modem dalam OpenWRT biasa, jadi saya tidak akan membincangkannya di sini.

Seterusnya anda perlu mengkonfigurasi antara muka WAN. Pada mulanya, sistem mencipta dua antara muka maya WAN1 dan WAN2. Mereka perlu diberikan peranti fizikal, dalam kes saya ini adalah nama antara muka modem USB.

Untuk mengelakkan kekeliruan dengan nama antara muka, saya mengesyorkan melihat mesej dmesg semasa menyambung melalui SSH.

Memandangkan modem saya sendiri bertindak sebagai penghala, dan mereka sendiri mempunyai pelayan DHCP, saya terpaksa menukar tetapan julat rangkaian dalaman mereka dan melumpuhkan pelayan DHCP, kerana pada mulanya kedua-dua modem mengeluarkan alamat dari rangkaian yang sama, dan ini menyebabkan konflik.

OpenMPTCPRouter memerlukan alamat antara muka WAN adalah statik, jadi kami menghasilkan subnet untuk modem dan mengkonfigurasinya dalam sistem β†’ openmptcprouter β†’ menu tetapan antara muka. Di sini anda perlu menentukan alamat IP dan kunci pelayan yang diperoleh semasa pemasangan pelayan penjumlahan.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Jika persediaan berjaya, gambar yang serupa akan muncul pada halaman status. Ia dapat dilihat bahawa penghala dapat mencapai pelayan penjumlahan dan kedua-dua saluran berfungsi seperti biasa.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Mod lalai ialah shadowsocks + mptcp. Ini adalah proksi yang membungkus semua sambungan dalam dirinya sendiri. Ia pada mulanya dikonfigurasikan untuk memproses TCP sahaja, tetapi UDP juga boleh didayakan.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Jika tiada ralat pada halaman status, persediaan boleh dianggap selesai.
Dengan sesetengah pembekal, situasi mungkin timbul apabila bendera mptcp dipotong di sepanjang laluan trafik, maka ralat berikut akan muncul:

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Dalam kes ini, anda boleh menggunakan mod pengendalian yang berbeza, tanpa menggunakan MPTCP, lebih lanjut mengenai perkara ini di sini.

Kesimpulan

Projek OpenMPTCPRouter sangat menarik dan penting, kerana ia mungkin satu-satunya penyelesaian komprehensif terbuka kepada masalah penjumlahan saluran. Segala-galanya sama ada tertutup rapat dan proprietari, atau hanya modul berasingan yang tidak dapat difahami oleh orang biasa. Pada peringkat pembangunan semasa, projek itu masih agak kasar, dokumentasinya sangat lemah, banyak perkara yang tidak diterangkan. Tetapi pada masa yang sama ia masih berfungsi. Saya berharap ia akan terus berkembang, dan kami akan mendapat penghala isi rumah yang akan dapat menggabungkan saluran dengan betul di luar kotak.

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Ikuti pembangun kami di Instagram

Penjumlahan Saluran Internet Benar - OpenMPTCPRouter

Sumber: www.habr.com

Tambah komen