これはおそらく非常に単純な問題です(つまり、根本的に何かが欠けており、これは私の誤り/知識の欠如/家庭です)。
したがって、2つのVLANを持つLACP(Ciscoスイッチ)を介してbond0にバインドされた2つの25GbEファイバを備えたシステムがあります。
あるソースからターゲットパスにさまざまなデータを転送するために5〜6個の同時rsyncを起動したとき、データはほぼ完全に1つの物理インターフェイス(〜900MiB / s)を好むという事実に少し驚きました。私は、ボンドを構成する2つのインターフェイス間に負荷がある程度分散すると仮定します。
私はパケットがインターフェイス全体で別々のストリームに分割されていないことをよく知っていますが、私のrsyncはすべて別々のプロセスなので、少なくとも1つまたは2つが2番目の物理インターフェイスを使用すると予想しています。
参考として使用されているネットプラン構成の「おおよその」概要(つまり、機密情報が削除されたと見なされる情報を含む):
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: false
dhcp6: false
optional: true
link-local: []
ens5f0np0:
dhcp4: false
dhcp6: false
optional: true
ens5f1np1:
dhcp4: false
dhcp6: false
optional: true
bonds:
bond0:
dhcp4: false
dhcp6: false
interfaces: [ens5f0np0, ens5f1np1]
mtu: 9000
parameters:
mode: 802.3ad
lacp-rate: fast
mii-monitor-interval: 100
vlans:
bond0.xxx:
id: xxx
link: bond0
addresses: [ip]
gateway4: ip
mtu: 1500
nameservers:
search: [domains]
addresses: [ips]
bond0.xxx:
id: xxx
link: bond0
addresses: [ip]
mtu: 9000
routes:
- to: random subnet
via: local subnet ip
- to: random subnet
via: local subnet ip
- to: random subnet
via: local subnet ip
問題は、rsyncが異なるプロセスですが、ソースと宛先IPが同じであり(各rsyncは1つの場所から大きなサブフォルダを読み取り、共通の場所にコピーする)、バインドで実行されることです。ハッシュは基本的にすべてを処理することを意味します。これは同じトラフィックですか?送信元データは1つのVLANにあるサーバーにあり、宛先サーバーは別のVLANにあります。
これが私の間違った/間違った仮定であれば、他のrsyncが別のデータ「ストリーム」を構成すると思うので、まだ同じ内容をすべて学びたいと思います。
答え1
基本的にLACPレイヤ 2 XOR が使用されます。ポリシー:
発信トラフィックのスレーブ選択は、以下で選択できるトランスポートハッシュポリシーに基づいて行われます。基本的な単純XOR戦略
xmit_hash_policy
以下のオプションを見てください。
ステップ2
ハッシュ値は、ハードウェアMACアドレスとパケットタイプIDフィールドのXORを使用して生成されます。式は
hash = 送信元 MAC XOR 宛先 MAC XOR パケットタイプ ID スレーブ
番号 = ハッシュモードスレーブ数このアルゴリズムは、同じスレーブデバイスの特定のネットワークピアにすべてのトラフィックを配置します。。
単一送信元MACアドレスで解決される単一送信元IPアドレスから単一宛先MACアドレスで解決される単一宛先IPアドレスへのトラフィックは、常に同じインターフェイスになりますlayer2
。layer2+3
使用する必要がありますlayer3+4
アルゴリズムにはインターフェイスの計算にポートが含まれます。
3+4階
このポリシーは、上位層のプロトコル情報(使用可能な場合)を使用してハッシュ値を生成します。これにより、特定のネットワークピアへのトラフィックが複数のスレーブにまたがる可能性があります。ただし、単一の接続が複数のスレーブにまたがるわけではありません。
ip link
オプションxmit_hash_policy
に変換ネットワーク計画~のtransmit_hash_policy
範囲。したがって、構成に次の追加パラメーターを追加する必要があります。
transmit_hash_policy: layer3+4
トラフィックが同じ宛先に対して単一のアドレスにトンネリングされる場合、代わりに考慮することencap3+4
ができます。
もっと興味が必要ですこの方針断片化があると、LACPに完全に準拠していないためです。レイヤ 4 のプロトコル (TCP/UDP...) ポートがフラグメントに含まれていないため、最初とそれ以降のフラグメントは異なるインターフェイスを使用し、到着時に不要なパケットへの接続を並べ替えることができます。関連するすべてのシステムが同じMTU(9000)を持つ限り、TCPは断片化を防止しようとするため、問題になりません。
このアルゴリズムは802.3adと完全に互換性がありません。断片化されたパケットと断片化されていないパケットを含む単一のTCPまたはUDPセッションでは、両方のインターフェイスでパケットストライピングが表示されます。これにより、誤った配送が発生する可能性があります。 [...]