Linuxカーネル3.6より前のバージョンでは、IPv4マルチパスルーティングを行うためにルートキャッシングを使用していました。つまり、2つの別々の回線/ ISP間のルーティングは非常に簡単でした。3.6から、アルゴリズムはパケットごとに変更されました。つまり、2つの回線/ ISPを実現するには、ルートテーブル/ルール/ iptablesマーカーのトリックが必要でした。
ただし、同じISPで2つの回線を使用していて、単一のIPをパケットごとにバランスのとれた/フェイルオーバー方式で両方の回線にルーティングできる場合、3.6から、次の理由により(IPレベルで)回線のボンディングを簡単に実現できます。双方向のパケットごとのルーティング。
4.4から、カーネルは再び、送信元アドレスと宛先アドレスのハッシュに基づくフローベースのロードバランシングに変更されました。
現在カーネル4.4.36を実行しており、PPPoE接続でマルチパスルーティングを使用しています。ISPからのダウンストリームトラフィックは、パケットごとに2つの別々の回線にルーティングされます(1つのIPが両方の回線にルーティングされます)。これにより、個々の回線の速度よりもダウンロード速度が速くなります。両方のラインの速度がほぼ加算されます。Skypeのビデオ、VoIP(UDP)、YouTubeなどがすべてうまく機能します。
このような優れたダウンストリームエクスペリエンスがあるため、アップストリームを試したいのですが、アップストリームトラフィックは両方のpppデバイス(同じIPアドレスを持つ)全体で新しいフローベースのアルゴリズムに従ってルーティングされます。これは、1行の速度よりも速いアップロード速度を実現できないことを意味します。
パケットごとのアルゴリズムを使用するように現在のカーネルを構成する方法はありますか?または、パケットごとのマルチパスルーティングを実現する他の方法はありますか?古いカーネルに戻す必要がありますか(他のさまざまな理由でやりたくない)。
私のISPはマルチリンクPPPをサポートしていません。
関連性がある場合、私は現在、Raspberry Pi 3でArch Linux ARMv7を実行しています。