アプリ版:「スタンプのみでお礼する」機能のリリースについて

WindowsXP で、それぞれ2つのイーサネットカード(100BASE)を差し込んだPCを2台用意して、それぞれのカードをクロスケーブルで接続します。その後、1台目のPCのカード1と2にそれぞれ192.168.1.1と192.198.2.1を割り当てます。同じく2台目のPCのカード1と2にそれぞれ192.168.1.2と192.198.2.2を割り当てます。1台目のPCで、コンピューターの検索を行い、192.168.1.2と192.168.2.2を検索し、2台目のPCの共有フォルダへファイルをそれぞれのエクスプローラーで1つづつ、計2つコピーすると、ケーブル1本で2つのファイルをコピーするよりも早くコピーできるとおもったのですが、実際実験してみると1本のケーブル接続の場合の方がはやくコピーできました。モデムのマルチリンクのように、2つのイーサネットを使用して転送をマルチで行うことで転送速度を上げることはできないのでしょうか?

A 回答 (4件)

>モデムのマルチリンクのように、2つのイーサネットを使用して転送をマルチで行うことで転送速度を上げること



そういう技術はあります。いくつか方式がありますが、EtherChannelと呼ばれる方式が以前は良く使われました。
今では802.3ad Link Aggregationでしょうか。

モデム等のMultiLinkPPPの場合は、1つのパケットを複数のフラグメントに分解し、複数のリンクで平行転送します。そのため、パケットの転送速度はリンク速度の合計に近くなります。
しかし、EtherChannelやLink Aggregationの場合は、パケットの分解は行わないので、1個のパケットしか流れない場合は、使われるリンクも1本だけで、速度的なメリットはありません。
複数のパケットが同時に流れるような場合に、複数リンクに割り振られるので、初めて意味が出てきます。

そういうことをしたい場合は、NICやドライバがLink Aggregationに対応している必要があるので、そういうNICを買ってください。
例えば、参考URLのような。
このNICの場合、1枚当たり4ポートあり、最大2枚8ポートを束ねることが出来ます。
OSからは論理的に1個のNICに見えます。ドライバレベルで複数ポートへの分散を行います。

なお、Link Aggregationは、NICとイーサネットスイッチの間で使うのが普通です。2台のコンピュータ間を直結する形態で利用可能かどうかは知りません。

また、2台のコンピュータがそれぞれLink Aggregationを使っていたとしても、そのコンピュータ間の転送はリンク一本分になる可能性もあります。
理由は、複数リンクにパケットを振り分けるアルゴリズムが、デフォルトではラウンドロビンになっていないからです。
ラウンドロビンにすれば同じ相手に対するパケットであっても複数リンクに振り分けられる可能性がありますが、パケットの着順が入れ替わる可能性があります。
最初に大きいパケット、次に小さいパケットを送信したとして、しかも、最初が1本目のリンク、次のが2本目のリンクに振り分けられると、2本目のほう(小さいほう)が速く送信完了するので、相手には、小さいほうが先に到着する可能性があります。このような着順の入れ替わりが問題となるようなアプリケーションもあるので、デフォルトではMACアドレスやIPアドレスのハッシュで振り分けをして、同一宛先アドレスに対してはいつも同じリンクから送信するようなアルゴリズムを使っています。

--------
質問者が実験したような、複数サブネットを使ってアプリケーションレベルで平行転送させるようなケースもありますが、それで速くなるかどうかはアプリケーションの作り次第でしょう。実験はファイルコピーでしたが、平行転送による速度向上効果より、オーバーヘッドのほうが大きかったのかもしれないですね。
送受信にかかったバイト数を比較してみても面白いかもしれません。


もし、クロスで接続した2台のコンピュータ間のファイル転送を早くしたいなら、1Gとか10GとかのNICを使ったほうがいいと思います。1Gでもジャンボフレームを使ったりパラメータチューニングをすればかなり速くなるかもしれません。

多数のクライアントからのアクセスが集中するサーバのネットワークを早くしたいなら、Link Aggregationを使って、サーバとイーサネットスイッチ間を1G x4とか1G x8とかにしたほうがいいでしょう。

参考URL:http://www.intel.co.jp/jp/network/connectivity/p …
    • good
    • 0
この回答へのお礼

たしかにファイルコピーと、ソケット通信のようなプログラムで行う通信ではオーバーヘッドが違うかもしれませんね。今度はソケット通信で実験してみます。ありがとうございました。

お礼日時:2005/07/01 19:41

面白い試みですね。

原理的には速くなるはずです。実際に、複数枚のNICを使用してサーバと接続するような高速ルータが実在しますから。

サーバ側のファイルをSparse Fileで作成すると、どんなに巨大なファイルでもハードディスク上の実際の容量はほんの数KBになるので、このファイルをテスト用に使用すればハードディスク読み出し速度で制限されることがなくなります。Sparse Fileを作成するプログラムmksparseはhttp://www.insidewindows.info/にあります。

クライアント側は、エクスプローラでコピーを行うとクライアント側ハードディスクの書き込み速度で制限されてしまうので、サーバ側フォルダをネットワークドライブに割り当てた上で、コマンドプロンプトでcopy [サーバ側ファイル] nulとやって読み込むそばから捨てていったほうがより分かりやすい結果になるかと思います。

また、低速NIC(1000BASEより100BASE、100BASEより10BASE)のほうが結果は分かりやすいですね。1秒対1.5秒では意味があるのか計測誤差なのか何なのか分かりませんけど、10秒対15秒なら明らかに有意な差ですから。

良い結果が出るといいですね。(私も試してみたい!けどNICカードそんなに持ってない(笑))
    • good
    • 0
この回答へのお礼

やはり、すでにこのような方法は存在するのですね。ありがとうございました。

お礼日時:2005/07/01 19:35

あまり聞いたことが無いことですね?


それより、ギガ(1000BASE)のLANカードの方がいいと思いますけど。いかがでしょう。

この回答への補足

いちおう、もし可能であれば、ギガビットイーサにて複数接続をテストしてみようと思ったので、その前段階のテストとして行いました。

補足日時:2005/07/01 14:32
    • good
    • 0

そんな事が出来るなんて聞いた事無いですね。


コピー時にどちらか一方しか使われないような気がします。

この回答への補足

一応、各イーサネットで通信しています。イーサネットの設定で、送受信バイト数はそれぞれのカードで同じ位の量カウントされています。私の思惑では、それぞれのイーサネットで別々に通信するのであれば、受信側のディスク書き込み速度を越えるデータを受信しない限りは、ローカルでファイルコピーする早さに近づいていくと思うのですが、どうやら別のところでボトルネックになっている気がするのです。

補足日時:2005/07/01 14:25
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!