Kernel Linux sebelum 3.6 menggunakan route caching untuk melakukan routing multath IPv4, yang berarti routing antara dua jalur / ISP terpisah cukup mudah. Dari 3,6 algoritma berubah menjadi per-paket, yang berarti bahwa beberapa trik rute tabel / aturan / iptables diperlukan untuk mencapai dua jalur / ISP.
Namun, jika Anda memiliki dua saluran dengan ISP yang sama yang dapat merutekan IP tunggal ke kedua jalur berdasarkan per-paket secara seimbang / gagal, maka dari 3,6 Anda dapat dengan mudah mencapai ikatan garis (pada tingkat IP) karena per-paket routing di kedua arah.
Dari 4.4, kernel berubah lagi menjadi load balancing berbasis aliran berdasarkan hash atas alamat sumber dan tujuan.
Saat ini saya sedang menjalankan Kernel 4.4.36, dan saya menggunakan routing multipath melalui koneksi PPPoE. Lalu lintas hilir saya dari ISP dirutekan melintasi dua jalur terpisah pada basis per paket (satu IP dialirkan ke kedua saluran). Ini memberi saya kecepatan pengunduhan lebih cepat daripada kecepatan satu saluran individual. Nyaris kecepatan kedua jalur itu disatukan. Ini bekerja dengan sangat baik, video Skype, VoIP (UDP), YouTube dll. Semua berfungsi dengan baik.
Karena memiliki pengalaman hilir yang begitu baik, saya ingin mencobanya di hulu tetapi lalu lintas hulu saya dialihkan sesuai dengan algoritma berbasis aliran yang lebih baru di kedua perangkat ppp (yang memiliki alamat IP yang sama). Ini berarti bahwa saya tidak dapat mencapai kecepatan unggah yang lebih cepat dari kecepatan satu baris.
Apakah ada cara untuk mengkonfigurasi Kernel saat ini untuk menggunakan algoritma per-paket? Atau metode lain untuk mencapai routing multi-paket per-paket? Apakah saya perlu kembali ke Kernel yang lebih lama (yang saya tidak ingin lakukan karena berbagai alasan lain)?
ISP saya tidak mendukung ppp multi-tautan.
Dalam hal ini relevan, saya sedang menjalankan Arch Linux ARMv7 pada Raspberry Pi 3.
sumber
Jawaban:
Ok, jadi setelah memiliki lebih banyak waktu untuk menyelidiki ini, saya menemukan cara untuk melakukannya menggunakan Linux TEQL (True Link Equalizer). Berikut ini tautan yang saya ikuti dengan longgar, tetapi dengan beberapa penyesuaian.
http://lartc.org/howto/lartc.loadshare.html
Ini adalah bagaimana saya membuatnya bekerja di Arch Linux ARMv7 (Raspberry Pi 3)
Saat boot:
Perintah berikut harus dijalankan saat boot untuk memuat modul Kernel yang sesuai.
Perintah-perintah berikut juga untuk dijalankan pada boot dengan asumsi Anda ingin NAT dari jaringan lokal di eth0.
Lalu lintas pengembalian FORWARD adalah pada ppp +, dan MASTERER POSTROUTING pada teql + karena lalu lintas keluar padu pada teql dan lalu lintas kembali kembali pada ppp.
Saat tautan ppp muncul:
Dengan asumsi tautan yang akan di-load-load adalah ppp, perintah berikut untuk dijalankan dalam sebuah skrip dalam sebuah
/etc/ppp/ip-up.d/
skrip.Di mana
1.1.1.1
alamat IP publik ISP Anda menghadap. IP publik tambahan dapat ditugaskan ke perangkat teql0, tetapi tidak perlu ditugaskan ke perangkat ppp. Dalam pengaturan saya, dua tautan ppp berbagi IP yang sama (dinegosiasikan oleh pppoe, dll.) Tautan teql yang ditetapkan secara manual seperti ditunjukkan di atas. ISP perlu mengirim lalu lintas untuk IP secara merata di kedua tautan.Jalur balik (
rp_filter
) diatur ke2
(longgar) baik dalam skrip di atas sehingga paket kembali tidak jatuh karena mereka kembali pada antarmuka ppp daripada teql0.Saya telah mengaturnya seperti itu, dan berfungsi dengan baik. Sangat mudah! Saat tautan gagal, ada failover mulus. Ketika mereka datang, mereka baru saja mulai bekerja lagi. Sepertinya tidak ada paket yang hilang atau tertunda saat gagal, dan tidak ada yang muncul kembali.
Juga, salah satu komentator menyarankan tautan di bawah ini yang menggunakan perutean kebijakan, dengan iptables untuk menandai setiap paket lainnya, dll. Tetapi saya akan mencoba dalam beberapa hari untuk melihat apakah itu berfungsi lebih baik daripada yang di atas dan memberikan umpan balik di sini sesuai.
http://support.aa.net.uk/Router_-_Linux_upload_bonding_using_policy_routing
sumber
sysctl -w net.ipv4.ip_forward
tetapi harus mengatakansysctl -w net.ipv4.ip_forward=1
demikian saya telah diperbaiki di atas. Itu pasti akan mencegah lalu lintas dari LAN turun tautan berikat.