2012-02-18 60 views
8

FTP, TCP dosya aktarım seçenekleri dikkate alındığında, TCP-connect protokolüdür ve böylece AFAIK "aldıkları kadar hızlıdır". Ancak, TCP üzerinden çalışmayan diğer ürünler de vardır - örnekler, BI.DAN-GUN, fasp ve FileCatalyst ticari ürünleridir. Son ürün, problems with pure TCP'u işaret eder ve biri Wikipedia'da daha fazla bilgiyi okuyabilir, örn. Network Congestion'dan başlayarak.FTP'den daha hızlı dosya aktarımı

Başka hangi alternatifler vardır? .. özellikle Açık Kaynak olanlar? Ayrıca, bu bir çeşit RFC olmalıdır - muhtemelen UDP üzerinde çalışan bir standart büyük dosya-aktarma-spesifik protokolü olmalıdır. Böyle bir protokolü ya da bir girişimi bilen var mı? (Google SPDY enteresandır, ancak hızlı dosya aktarımını doğrudan yapmaz)

cevap

6

UDP aracılığıyla dosya aktarımı ile uğraşmaya çalışan bir dizi açık kaynak projesi var. UFTP, Tsunami veya UDT'ye bir göz atın, her proje farklı bir gelişim aşamasındadır.

Bant genişliğine bağlı olarak kullandığınız gecikme süresi ve cep kaybına bağlı olarak, her bir proje farklı bir sonuç üretecektir. 3 projeyi karşılaştırmak çalıştığında bir blog makale burada vardır bağlantıyı olan

9

Neden TCP kullanıldığında aktarım daha yavaş hale geliyor? TCP genellikle tüm mevcut bant genişliğini kullanabilir. UDP kullanmak yerine daha hızlı olma olasılığı yoktur. Aslında, güvenilir bir UDP tabanlı dosya aktarımı yapmayı denediyseniz, büyük olasılıkla TCP'ye daha düşük bir alternatif uygulayabilirsiniz. Çünkü güvenilirliği kendiniz uygulamak zorundasınız.

ile ilgili sorunlu, FTP'nin aktardığınız her dosya için birden çok eşzamanlı istek yanıtı komutu gerçekleştirmesi ve her dosya için yeni bir veri bağlantısı açmasıdır. Bu, çok sayıda küçük dosya aktarılırken aşırı derecede verimsiz aktarımlarla sonuçlanır, çünkü çoğu zaman veri aktarımı yerine isteklerin/yanıtların beklenmesi ve veri bağlantılarının kurulması harcanır.

Bu sorunu çözmek için basit bir yöntem, dosyaları/klasörleri bir arşive yerleştirmektir. Tabii ki, sadece arşivi yapabilmeniz, FTP veya benzeri kullanarak gönderebilmeniz ve diğer tarafa açabilmeniz mümkünken, ambalajlama ve ambalajı açma zamanı kabul edilemez olabilir. Bu gecikmeyi paketlemeyi yaparak ve on-line açarak önleyebilirsiniz. Bu tür çevrimiçi paketleme/açma işlemlerini entegre eden herhangi bir yazılımın farkında değilim.

alıcı üzerindeki

İlk çalışma: Bu alıcıyı yapacak

nc -l -p 7000 | tar x -C <destination_folder> 

bir bağlantı için bekleyin Ancak, sadece bir boru hattı (Linux, Windows üzerinde Cygwin kullanın) içinde nc ve tar programları kullanabilirsiniz port numarasını 7000 ile Ardından gönderici çalışır:

cd /some/folder 
tar c ./* | nc -q0 <ip_address_of_receiver>:7000 

Bu gönderen transferi başlayarak alıcısına bağlanmak yapacaktır. Gönderici, tar arşivini oluşturarak alıcının kendisine gönderecek olan - hepsini aynı anda gönderecek. İhtiyacınız varsa, göndericinin ve alıcının rollerini tersine çevirebilirsiniz (alıcının göndericiye bağlanmasını sağlayarak).

Bu çevrimiçi-yatırım yaklaşımında FTP'nin iki performans sorunu yoktur; herhangi bir istek yanıtı komutu gerçekleştirmez ve yalnızca tek bir TCP bağlantısı kullanır. Bununla birlikte, bunun güvenli olmadığını unutmayın; Gönderen tarafımızdan önce kimse alıcıya bağlanabiliyor, ona kendi tar arşivini gönderiyor. Bu bir sorunsa, uygun güvenlik duvarı kuralları ile birlikte bir VPN kullanılabilir.

DÜZENLEME: Eğer FileCatalyst sayfa inanılan edilecekse, önemli bir problemdir TCP performansı ile bir sorun olarak paket kaybı söz.TCP'nin yüksek paket kaybı bağlantıları ile optimal olmayan şekilde gerçekleştirebileceği doğrudur. Bunun nedeni, TCP'nin genellikle paket kaybına agresif bir şekilde tepki vermesidir, zira kaybın tıkanıklığa bağlı olduğunu varsayar; Additive_increase/multiplicative_decrease'a bakın. Özel protokollerle bunun üstesinden gelmeye çalışacak herhangi bir serbest/açık kaynak dosya aktarım programının farkında değilim. Ancak farklı TCP congestion avoidance algorithms'u deneyebilirsiniz. Özellikle, 'un iletim hızını azaltmak için bir paket kaybı olarak kullanılmayan Vegas'u deneyin.

+1

Dahil ettiğim bağlantıları kontrol ettiniz mi? Aktarılacak 500 GB'lık bir dosyanız varsa, FTP'nin kontrol bağlantıları tamamen önemsizdir ve sonuçta ham TCP performansıdır. Büyük dosyaların mümkün olan en hızlı şekilde aktarılması için - özellikle herhangi bir paket kaybıyla bağlantılı olmayan - kesinlikle gerekli değildir. İçerdiğim linklerdeki ürünler, kendileri için güvenilirlik sağlıyorlar. – stolsvik

+0

@stolsvik, AFAIK'in İnternet'te nadir bulunan yüksek kayıp bağlantılarından bahsetmediniz. Bununla ilgili bir şey ekledim. –

+1

Aslında TCP protokolü gerçekten tek yönlü aktarım için tasarlanmamıştır. Bunu yapmak için yapılabilir, ancak TCP kısa paketler neden olacak şekilde paketler gerektirir ve gerçekten optimal hız için tampon boyutları ve pencere boyutları seçmek için bir dengeleme eylemi olabilir. Ayrıca, uygulamalar her zaman isteğe bağlı çeşitli ayarlarla yapmaları gerekmeyebilir. –

1

http://www.filecatalyst.com/open-source-fast-file-transfers, UDP tabanlı dosya transferi kullanmayı düşünün AFTP (Hızlandırılmış File Transfer Protocol) olarak bilinen özel bir protokol uygular JSCAPE MFT Server de bakabilirsiniz. Bu bağlantıyı inceleyin:

http://www.jscape.com/blog/bid/80668/UDP-File-Transfer-up-to-100x-Faster-than-TCP

jscape en AFTP ağ gecikmesini sahip şehirlerarası bağlantıları üzerinden bir şekilde çalıştığından emin unutmayın. Ağ gecikmesi yoksa AFTP düz eski normal FTP'den (TCP üzerinden) daha iyi performans göstermez.

Evet JSCAPE LLC için çalışıyorum.

2

Açık kaynak değil, ancak Aspera'nın aktarma hızları kontrol edilmeye değerdir ve paket kaybından veya ağ gecikmesinden etkilenmez. You can see a chart here. Ayrıca fasp denen özel bir protokol kullanır.

+0

İlk soruda "fasp" den bahsettim. – stolsvik

+1

Açık olmayan diğer kaynak kodlu olanlar ise akıllı ve akıllıdır. Genellikle eğlence (film yapımları) endüstrisinde aspera ile rekabet halindedir. – satoc