リンク・アグリゲーションでのリンクの割り当て
IEEE802.3ad Link Aggregation という規格を知り、Windows 7 (64Bit) で、下記の構成で、ネットワークの帯域を実験してみました。
1Gbps の NIC を2枚 なので、期待値は、2Gbps です。(PCは、共に、Windows7)
Jumbo Packet 9016Bytes
チーム化は、LACP にて行い、ネットワークのプロパティでは、2GBPS の表示は、出ています。
PC#1
INTEL Pro/1000 PT Desktop 1枚
INTEL Gigabit CT Desktop 1枚
PC#2
INTEL Gigabit CT Desktop 2枚
(1) PC#1→PC#2 へ、WinSock で、UDP 送信を Non-Blocking で送信
結果:ある瞬間をみるとネットケーブルの一本側にしか UDP Packet が流れません。
数秒後に、LACPのロードバランスの制御で、他方のケーブルへUDP パケットが流れます。
Windows のタスクマネージャで見ても、Networkの利用率は、50% 近辺で、実際とあっています。
(2) 上記(1) を実行中に、
PC#1←PC#2 へ、WinSock で、UDP 送信を Non-Blocking で送信
結果:(1) のパケットとは、別のケーブルの方に、パケットが流れます。
Windows のタスクマネージャで見ても、Networkの利用率は、70% 近辺で、実際とあっています。
質問:
期待する動作としては、
上記(1)において、Network 利用率 70% 辺りを期待したいのですが、無理でしょうか?
IEEE802.3ad の規格によれば、物理リンク(ケーブル相当)の決定は、MAC Address と、Port Number のようです。
一方、私がやりたいのは、一つのUDP Port でもって、2本のケーブルに同時にパケットを送出したい訳です。
受信側のドライバの作りからいって、無理なような気がしているのですが、このあたり、教えていただけると、とっても、うれしいです。
INTEL NIC は、TX/RX 共に、Descriptor でもって、パケットを送受するので、無理っぽい気がしています。
TX/RX の Descriptor は、めいっぱい確保しています。
以上ですが、よろしく、お願いいたします。