it-swarm-pt.tech

Qual é a melhor maneira de transferir um único arquivo grande através de um link de alta velocidade e alta latência WAN?

Parece relacionado a este , mas é um pouco diferente.

Existe esse link WAN entre dois sites da empresa, e precisamos transferir um único arquivo muito grande (despejo do Oracle, ~ 160 GB).

Temos largura de banda total de 100 Mbps (testada), mas parece que uma única conexão TCP simplesmente não pode ser maximizada devido ao modo como TCP funciona (ACKs, etc.). Testamos o link com iperf , e os resultados mudam drasticamente ao aumentar o tamanho da janela TCP: com as configurações básicas, obtemos uma taxa de transferência de ~ 5 Mbps, com um WS maior que podemos obter ~ 45 Mbps, mas não mais do que isso. A latência da rede é de cerca de 10 ms.

Por curiosidade, rodamos o iperf usando mais de uma conexão única e descobrimos que, ao executar quatro delas, elas realmente alcançariam uma velocidade de ~ 25 Mbps cada, preenchendo toda a largura de banda disponível; portanto, a chave parece estar na execução de várias transferências simultâneas.

Com o FTP, as coisas pioram: mesmo com configurações otimizadas TCP (tamanho da janela alto, MTU máx. Etc.), não podemos obter mais de 20 Mbps em uma única transferência. Tentamos fazer o FTP de alguns arquivos grandes ao mesmo tempo e, de fato, as coisas ficaram muito melhores do que ao transferir um único; mas então o culpado se tornou a E/S do disco, porque a leitura e gravação de quatro arquivos grandes dos mesmos gargalos do disco muito em breve; Além disso, parece que não conseguimos dividir esse único arquivo grande em arquivos menores e, em seguida, mesclá-lo novamente, pelo menos em horários aceitáveis ​​(obviamente, não podemos gastar splicing/mesclando o arquivo em um tempo comparável ao de transferência).

A solução ideal aqui seria uma ferramenta multithread que pudesse transferir vários pedaços do arquivo ao mesmo tempo; programas semelhantes ao eMule ou BitTorrent já fazem, mas de uma única fonte para um único destino. Idealmente, a ferramenta nos permitiria escolher quantas conexões paralelas usar e, é claro, otimizar a E/S do disco para não pular (muito) loucamente entre várias seções do arquivo.

Alguém conhece essa ferramenta?

Ou alguém pode sugerir uma solução melhor e/ou algo que já não tentamos?

P.S. Já pensamos em fazer o backup em fita/disco e enviá-lo fisicamente ao destino; essa seria nossa medida extrema se WAN simplesmente não resolver, mas, como A.S. Tanenbaum disse: "Nunca subestime a largura de banda de uma caminhonete cheia de fitas rolando pela estrada".

21
Massimo

A busca por "transferência de arquivos de alta latência" traz muitos hits interessantes. Claramente, esse é um problema que a comunidade CompSci e a comunidade comercial colocaram em risco.

Algumas ofertas comerciais que parecem se encaixar na conta:

  • FileCatalyst possui produtos que podem transmitir dados em redes de alta latência usando UDP ou múltiplos fluxos TCP. Eles também têm muitos outros recursos (on- compressão instantânea, transferências delta, etc.).

  • A fasp "tecnologia" de transferência de arquivos do Aspera também parece ser adequada para o que você procura.

No mundo do código aberto, o projeto ftp parece promissor. Você não precisa particularmente dos recursos de multicast, mas da idéia básica de enviar um arquivo para os receptores, receber NAKs por blocos perdidos no final da transferência e depois explodir os blocos NAK (ensaboar, enxaguar, repetir) Parece que faria o que você precisa, pois não há ACK'ing (ou NAK'ing) do receptor até que a transferência do arquivo seja concluída uma vez. Supondo que a rede esteja latente e sem perdas, isso também pode fazer o que você precisa.

15
Evan Anderson

Sugestão realmente estranha: configure um servidor Web simples para hospedar o arquivo em sua rede (sugiro nginx, aliás), depois configure um PC com o Firefox na outra extremidade e instale o DownThemAll = extensão.

É um acelerador de download que suporta chunking e remontagem.
Você pode dividir cada download em 10 blocos para remontagem, e isso realmente torna as coisas mais rápidas!

(ressalva: nunca tentei em algo tão grande quanto 160 GB, mas funciona bem com arquivos iso de 20 GB)

9
Tom O'Connor

O transporte UDT é provavelmente o transporte mais popular para comunicações de alta latência. Isso leva ao outro software chamado Setor/Esfera um "Sistema de arquivos distribuídos de alto desempenho e um mecanismo de processamento de dados paralelos" que podem valer a pena dar uma olhada.

7
Steve-o

Minha resposta está um pouco atrasada, mas acabei de encontrar esta pergunta, enquanto procurava por fasp. Durante essa pesquisa, também encontrei o seguinte: http://tsunami-udp.sourceforge.net/ , o "Tsunami UDP Protocol".

No site deles:

Um protocolo rápido de transferência de arquivos no espaço do usuário que usa TCP e dados UDP para transferência em redes de longa distância de alta velocidade (≥ 1 Gbps e até 10 GE)), projetado para fornecer mais produtividade do que o possível com TCP nas mesmas redes.as mesmas redes.

Quanto à velocidade, a página menciona esse resultado (usando um link entre Helsinque, Finlândia e Bonn, Alemanha, através de um link de 1 GBit:

Figura 1 - transferência internacional pela Internet, com média de 800 Mbit/segundo

Se você deseja usar um acelerador de download, dê uma olhada no lftp, este é o único acelerador de download que pode fazer um espelho recursivo, tanto quanto eu sei.

5
Jan van Haarst

O utilitário bbcp da página muito relevante 'Como transferir grandes quantidades de dados via rede' parece ser a solução mais simples.

4
Robert Polson