web-dev-qa-db-ja.com

単一の大きなファイルを高速、高遅延で転送する最良の方法は何ですかWANリンク?

これは this one に関連しているように見えますが、多少異なります。

これはWAN 2つの会社のサイト間のリンクであり、1つの非常に大きなファイル(Oracleダンプ、最大160 GB)を転送する必要があります。

完全な100 Mbps帯域幅(テスト済み)がありますが、単一のTCP接続は、TCPが機能するため、最大にできませんACKなど)。リンクを iperf でテストしました。TCPウィンドウサイズを大きくすると、結果が劇的に変化します。基本設定では、スループットが最大5 Mbpsになります。より大きなWSでは、最大45 Mbpsまで到達できますが、それを超えることはできません。ネットワークの待機時間は約10ミリ秒です。

好奇心から、私たちは複数の接続を使用してiperfを実行しましたが、それらを4つ実行すると、実際にそれぞれ〜25 Mbpsの速度を達成し、利用可能なすべての帯域幅を埋めることがわかりました。したがって、重要なのは、複数の同時転送を実行することです。

FTPを使用すると、状況はさらに悪化します。TCP設定(高いウィンドウサイズ、最大MTUなど)を使用しても)は、1回の転送で20 Mbpsを超えることはできません。同時に大きなファイルがあり、実際に単一のファイルを転送するよりもはるかに良くなりましたが、同じディスクのボトルネックから4つの大きなファイルの読み取りと書き込みがすぐに行われるため、原因がディスクI/Oになりました。その単一の大きなファイルを小さなファイルに分割してから、少なくとも許容時間内にマージし直すことはできないようです(明らかに、ファイルの転送に匹敵する時間、ファイルのスプライス/マージに費やすことはできません)。

ここでの理想的なソリューションは、ファイルのさまざまなチャンクを同時に転送できるマルチスレッドツールです。 eMuleやBitTorrentのようなピアツーピアプログラムのようなものは既に実行されていますが、単一のソースから単一の宛先までです。理想的には、このツールを使用して、使用する並列接続の数を選択し、ファイルのさまざまなセクション間で(過度に)ジャンプしないようにディスクI/Oを最適化できます。

誰かがそのようなツールを知っていますか?

または、誰かがより良い解決策や私たちがまだ試していなかった何かを提案できますか?

追伸私たちはすでにそれをテープ/ディスクにバックアップし、物理的に宛先に送信することを考えていました。 WANがそれをカットしないのであれば、それは私たちの極端な尺度ですが、A.S。タネンバウムが言ったように、「テープで満ちているステーションワゴンの帯域幅を過小評価しないでください」。

21
Massimo

「高レイテンシーのファイル転送」を検索すると、興味深いヒットがたくさん出てきます。明らかに、これはCompSciコミュニティと商業コミュニティの両方が問題を抱えている問題です。

法案に合うと思われるいくつかの商用製品:

  • FileCatalyst には、UDPまたは複数のTCPストリームのいずれかを使用して、レイテンシの高いネットワークを介してデータをストリーミングできる製品があります。他にも多くの機能があります(on-フライ圧縮、デルタ転送など)。

  • Asperaからの fasp ファイル転送「テクノロジー」も、あなたが探しているものの請求書に適合しているようです。

オープンソースの世界では、 ftp プロジェクトは有望に見えます。特にマルチキャスト機能は必要ありませんが、ファイルをレシーバーにブラストアウトし、転送の最後に失われたブロックのNAKを受信し、NAKされたブロックをブラストアウトする(泡、すすぎ、繰り返し)という基本的な考え方ファイル転送が1回完了するまで、レシーバーからのACK(またはNAK)がないため、必要なことを行うように聞こえます。ネットワークが潜在的であり、損失がないと仮定すると、これも必要なことを行う可能性があります。

15
Evan Anderson

これは本当に奇妙な提案です。ネットワーク上でファイルをホストする単純なWebサーバーをセットアップし(ついでに、nginxを提案します)、反対側にfirefoxを搭載したPCをセットアップし、 DownThemAll をインストールします。 =拡張子。

これは、チャンキングと再アセンブリをサポートするダウンロードアクセラレータです。
再ダウンロードするために、各ダウンロードを10個のチャンクに分割できます。これにより、実際に処理が速くなります!

(注意:160GBほどのサイズで試したことがありませんが、20GBのISOファイルでうまく機能します)

9
Tom O'Connor

[〜#〜] udt [〜#〜] トランスポートは、高遅延通信でおそらく最も一般的なトランスポートです。これは、他のソフトウェア Sector/Sphere と呼ばれ、一見の価値がある「高性能分散ファイルシステムおよび並列データ処理エンジン」につながります。

7
Steve-o

私の答えは少し遅いですが、私はfaspを探している間にこの質問を見つけました。その検索中に私はこれも見つけました: http://tsunami-udp.sourceforge.net/ 、「津波UDPプロトコル」。

彼らのウェブサイトから:

TCP制御とUDPデータを使用して非常に高速な長距離ネットワーク(≥1 Gbps、さらには10 GE)で転送する高速ユーザー空間のファイル転送プロトコル。これは可能な限りのスループットを提供するように設計されています。 TCP=同じネットワーク上。同じネットワーク上。

速度に関する限り、このページではこの結果について言及しています(フィンランドのヘルシンキからドイツのボンへのリンクを1GBitのリンクで使用しています:

図1-インターネット経由の国際転送、平均800 Mbit /秒

ダウンロードアクセラレータを使用する場合は、lftpを参照してください。これは、私が知る限り、再帰ミラーを実行できる唯一のダウンロードアクセラレータです。

5
Jan van Haarst

非常に関連性の高いページの bbcp ユーティリティ 'ネットワーク経由で大量のデータを転送する方法' が最も簡単な解決策のようです。

4
Robert Polson