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

21

Isso 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 (dump do Oracle, ~ 160 GB).

Temos uma largura de banda total de 100 Mbps (testada), mas parece que uma única conexão TCP não pode ser maximizada devido a como o TCP funciona (ACKs, etc.). Nós 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, podemos chegar a ~ 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, e descobrimos que, ao rodar quatro deles, eles alcançariam uma velocidade de ~ 25 Mbps cada, preenchendo toda a largura de banda disponível; então a chave parece estar em execução de múltiplas transferências simultâneas.

Com o FTP, as coisas pioram: mesmo com configurações de TCP otimizadas (Tamanho de janela alto, máx. MTU etc.), não podemos obter mais de 20 Mbps em uma única transferência. Nós tentamos FTPing alguns arquivos grandes ao mesmo tempo, e de fato as coisas ficaram muito melhores do que quando se transferia uma única; mas então o culpado se tornou disco de E / S, porque ler e escrever quatro grandes arquivos dos mesmos gargalos de 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 não em tempos aceitáveis (obviamente não podemos gastar a junção / mesclagem do arquivo em um tempo comparável ao do arquivo). transferindo-o).

A solução ideal aqui seria uma ferramenta multithread que poderia transferir vários fragmentos do arquivo ao mesmo tempo; mais ou menos como programas peer-to-peer, como o eMule ou o BitTorrent, 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 de disco para não pular (demais) loucamente entre as várias seções do arquivo.

Alguém sabe de tal ferramenta?

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

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

    
por Massimo 11.02.2010 / 08:19

5 respostas

15

A pesquisa por "transferência de arquivos de alta latência" traz muitos hits interessantes. Claramente, este é um problema que tanto a comunidade CompSci quanto a comunidade comercial investiram.

Algumas ofertas comerciais que parecem se adequar à fatura:

  • FileCatalyst tem produtos que podem transmitir dados por redes de alta latência usando UDP ou vários TCP fluxos. Eles também têm muitos outros recursos (compressão imediata, transferências delta, etc.).

  • A "tecnologia" de transferência de arquivos fasp da Aspera parece se encaixar na conta do que você está procurando, também.

No mundo do código aberto, o projeto uftp parece promissor. Você não precisa particularmente de seus recursos de multicast, mas da ideia básica de lançar um arquivo para receptores, receber NAKs por blocos perdidos no final da transferência e, em seguida, explodir os blocos de NAK (lavar, enxaguar, repetir). Parece que faria o que você precisa, já que não há ACK'ing (ou NAK'ing) do receptor até que a transferência de arquivos seja concluída uma vez. Assumindo que a rede é apenas latente e não com perdas, isso também pode fazer o que você precisa.

    
por 11.02.2010 / 09:01
9

Sugestão realmente estranha esta aqui .. Configurar um servidor web simples para hospedar o arquivo em sua rede (sugiro nginx, aliás), em seguida, configurar um pc com o Firefox do outro lado, e instale o DownThemAll extensão.

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

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

    
por 11.02.2010 / 09:23
7

O transporte UDT é provavelmente o transporte mais popular para comunicações de alta latência. Isso leva a outro software chamado Sector / Sphere , um "Sistema de Arquivos Distribuídos de Alto Desempenho e Mecanismo de Processamento de Dados Paralelos", que pode valer a pena ter uma olhada.

    
por 18.03.2011 / 04:21
5

Minha resposta está um pouco atrasada, mas acabei encontrando essa pergunta, enquanto procurava por elas. Durante essa busca, também encontrei isto: link , o "Protocolo UDP do Tsunami".

Do site deles:

A fast user-space file transfer protocol that uses TCP control and UDP data for transfer over very high speed long distance networks (≥ 1 Gbps and even 10 GE), designed to provide more throughput than possible with TCP over the same networks.the same networks.

No que diz respeito à velocidade, a página menciona esse resultado (usando um link entre Helsinque, Finlândia e Bonn, na Alemanha, usando um link de 1GBit:

Figure 1 - international transfer over the Internet, averaging 800 Mbit/second

Se você quiser 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.

    
por 24.06.2010 / 22:59
4

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

    
por 27.06.2012 / 14:23