3チャネルボンディング(チーミング) 3ギガ出るかやってみた の続き

3チャネルボンディング(チーミング) 3ギガ出るかやってみた の続き
前回3チャネルボンディングで2Gを超える2.56Gbpsをたたき出すことに成功した。
しかしである。予想した通り、複数台の端末からサーバに対してアクセスを集中させないと3チャネルのすべてを使うことはなかった。

複数の端末からファイル転送が集中するなんていうことは、家庭内LANではほとんどないことなので、リンクアグリしても宝の持ち腐れ状態である。これをなんとか打破してリンクアグリを有効活用したいなぁというのが今回の趣旨である。
うちのLAN環境、Windows10のPCでも2チャネルでチーミングしている。
しかしながら、Windows10のPCとサーバ間で1G以上の通信速度を出すことはできない。
これはリンクアグリの特性なのでしょうがないことである。以前の記事で2G出たみたいなことを書いたがこれは上りと下りの両方を合わせて2Gっていうことだった。リンクアグリでは単独セッションの通信速度を上げることはできない。

SMBマルチチャネル

SMBのマルチチャネルを使うと2Gで通信できるらしいのだが、各I/Fでネットワークアドレスを変えないといけないみたい。

設定を変更するのが面倒くさいし、せっかくリンクアグリできているのでこれを崩したくない。それに速くなるのはWindows共有(SMB)だけだし、フェールオーバー的には意味なしっていう感じ。よって却下。

ハッシュポリシー

Linuxのボンディングにはハッシュポリシーっていう設定項目がある。前回設定変更したxmit_hash_policyです。
前回、0だと負荷分散されていないようだったので、2に変更している。2の設定はMACアドレスとIPアドレスでハッシュ値を計算するという方法。0の設定はMACアドレスのみでハッシュ値を計算する。
1の設定はIPアドレスとポートでハッシュ値を計算するらしい。
ハッシュ値はハッシュ表でデータを管理するときに計算するもの。よく調べていないので、ちょっと違うかも知れないが3チャネルボンディングしているときは、大きさが3のハッシュ表があって、ハッシュ値を計算した後ハッシュ表のどの要素に入るかを決定すると使用するチャネル=EthernetのI/Fが決定する。ということなのかも知れない。
なので、xmit_hash_policyを1にすればひとつの端末からでもFTPセッションをふたつで負荷をかければ1Gbpsを超えるファイル転送ができるのでは?と考えたわけである。
さっそく実験である。
サーバにvsftpdを導入。
WindowsのftpコマンドだとPASVにできないみたいなのでIEからftp接続。
2セッションでファイル転送したら230Mbyte/sくらい出た。
Screenshot from 2018-08-29 13-57-50.png
やっぱりね。
じゃあ、HTTPならどう?とういことで、IEからapacheにアクセスしてファイル転送。
やはり2セッション張れば200Mbyte/sオーバーで通信する。
もしかしてWindows共有でもいけるかもと思ってエクスプローラーでファイルコピーしてみたがこちらは変わらず120Mbpsくらいで頭打ちであった。多分、セッションが同じなのかなぁ。
というわけで、TCPのコネクションを2本張って並列にファイル転送するようなプログラムがあれば、2Gbpsでファイル転送できるかも。なんかないだろうか。

投稿者プロフィール

asai
asai
システムエンジニア
喋れる言語:日本語、C言語、SQL、JavaScript