Szybszy transfer

Wprowadzenie

Obecnie w Internecie używane są dwa główne protokoły: TCP i UDP.

TCP jest podstawowym protokołem Internetu. Posiada wbudowane mechanizmy niezawodności, co oznacza, że nadawca automatycznie prześle ponownie pakiet TCP do odbiorcy, jeśli zagubił się on po drodze. Gdy odbiorca otrzyma pakiet TCP, do nadawcy wysyłana jest wiadomość ACK (Acknowledge - potwierdzenie), dzięki której nadawca wie, że pakiet został dostarczony poprawnie. Ten stosunkowo prosty mechanizm sprawia, że protokół TCP jest bardzo niezawodny i łatwy w użyciu dla programistów. Wysyłanie potwierdzeń ACK do nadawcy może poważnie ograniczyć wydajność (ponieważ nadawca musi czekać na ACK pakietu nr 1 przed wysłaniem pakietu nr 2) i dlatego na przestrzeni lat wprowadzono wiele ulepszeń do tego protokołu. Niektóre z najważniejszych cech nowoczesnej implementacji TCP to:

  • Scalable Window Size umożliwia nadawcy wysyłanie wielu pakietów naraz i oczekiwanie na wiele ACKÆ w tym samym czasie. Dane, które są wysyłane, ale nie zostały jeszcze potwierdzone pakietem ACK, są często nazywane danymi w locie (Data In Flight), co oznacza, że nadawca nie wysyła danych do odbiorcy szybciej, niż odbiorca może je odebrać.

  • Bandwidth throttling umożliwia klientowi 10 mbit komunikować się z serwerem 1000 mbit bez całkowitego "zapchania" przez ruch z serwera. W TCP jest to oparte na idei, że w danym momencie powinna być tylko określona liczba danych w locie.

  • Selektywne ACK pozwalają odbiorcy na odbieranie i ACK pakietów w dowolnej kolejności. Jeśli pakiet 1 został zgubiony, nie przeszkadza to pakietowi nr 2 w wysłaniu i otrzymania potwierdzenia ACK do tego pakietu przed ponownym wysłaniem pakietu nr 1.

Firewalle, routery i przełączniki są silnie zoptymalizowane pod kątem ruchu TCP - co sprawia, że jest to naturalny wybór dla większości zadań wykonywanych obecnie w Internecie. Przeglądarki internetowe, klienci poczty e-mail, Facebook, Instagram, Snapchat, Stock tickers, Spotify, Slack i FTP Clients to niektóre z aplikacji, które zazwyczaj używają TCP.

Jest jednak pewna wada. Podczas przesyłania ruchu TCP na dużą odległość geograficzną wydajność znacznie spada. Przyczyną jest to, że ruch (i ACK) musi być przesłany przez wiele więcej routerów i elementów infrastruktury sieciowej, aby dostać się do odbiorcy - i to zajmuje czas.

Czas ten jest często określany jako opóźnienie. Jeśli przeglądasz stronę internetową hostowaną w tym samym kraju, opóźnienie jest czasami tak małe jak 10 milisekund. Jeśli przeglądasz stronę internetową, która jest umieszczona na innym kontynencie, natychmiast zauważysz, że strony ładują się długo z powodu zwiększonego opóźnienia.

Problem opóźnień TCP staje się niezwykle widoczny przy przesyłaniu plików pomiędzy kontynentami. Zarówno nadawca jak i odbiorca mogą mieć bardzo szybkie 1000/1000 megabitowe połączenia, ale będą miały tylko 10 megabitów efektywnej przepustowości podczas przesyłania plików z powodu opóźnień, które uniemożliwiają im efektywną komunikację przy użyciu TCP.

UDP jest bratnim protokołem do TCP. Główna różnica polega na tym, że pakiet UDP nigdy nie jest potwierdzany za pomocą ACK. Nadawca nie ma pojęcia, czy pakiet UDP dotarł do odbiorcy i nie jest to w ogóle niezawodny protokół. Jest za to niezwykle szybki, ponieważ nie ma przesyłania zwrotnych potwierdzeń ACK. UDP świetnie sprawdza się w połączeniach wideo i grach online. W tych przypadkach nie ma znaczenia, czy kilka pakietów UDP zostanie utraconych podczas transmisji. Pakiety UDP są ciągle wysyłane, więc nawet nie zauważysz tego w strumieniu wideo. Tak samo w przypadku gier online - w ciągu kilku milisekund otrzymasz nowy pakiet UDP z najnowszymi aktualizacjami. Utrata kilku pakietów UDP od czasu do czasu nie stanowi problemu. Ważniejsze jest, aby przesyłać dane szybko i z jak najmniejszymi opóźnieniami.

UDP początkowo może wydawać się fatalnym wyborem do przesyłania plików. Całkowity brak niezawodności oznaczałby uszkodzone pliki w każdym miejscu z powodu porzuconych pakietów UDP. Brak dławienia przepustowości doprowadziłby do zalania klientów ruchem i w zasadzie do ich wyłączenia. Aby UDP było użyteczne do przesyłania plików, musi być niezawodne tak samo jak TCP. Na początek utracone pakiety muszą być ponownie wysłane, a dławienie pasma musi być możliwe. Należy również zająć się bezpieczeństwem.

Protokół przyspieszania transferu Filemail UDP (UAP)

Protokół przyspieszania transferu Filemail UDP (UAP) to specjalnie zaprojektowany protokół transferu plików, bazujący na UDP - posiadając w ten sposób nieprawdopodobne prędkości transferów nawet w przypadku występowania dużych opóźnień. Rozkłada na łopatki wszystkie protokoły bazujące na TCP, takie jak HTTP i FTP - a zwłaszcza wtedy, gdy trzeba przesłać pliki na duże dystanse, gdzie opóźnienie często wychodzi nawet ponad 50 ms.

Osiągi

Testy pokazują, że protokół przyspieszania transferu Filemail UDP jest czasem nawet do 200 razy szybszy niż FTP, HTTP i inne metody transferu bazujące na TCP.

Efektywna prędkość trannsmisji podczas wysyłaniu plików z Europy do Australii przez 21 punktów routowania ("skoków"). Po obu stronach łącza internetowe 1000/1000 Mpbs.

Protokół Filemail UAP jest skonstruowany od samego początku z założeniem, aby umożliwić możliwie najszybszy transfer plików z punktu A do B w najbezpieczniejszy i najbardziej niezawodny sposób. Poniżej niektóre z cech tego rewolucyjnego rozwiązania. Nieoficjalne porównanie do rozwiązań transferowych bazujących na UDP, producentów takich jak IBM Asoera i SIgniant pokazują, że Filemail jest szybszy praktycznie we wszystkich przypadkach. Niektóre z różnic w wydajności mogą być również tym spowodowane, że Filemail używa również sprzętowej akceleracji - a dokładniej zestawu instrukcji AES-NI. Protokoły takie jak IBM Aspera i Signiant używają również dodatkowego kanału TCP (SSH) do sterowania pasmem przepłwu, potwierdzeniami itp. Filemail UAP nie używa wolniejszego protokołu TCP - wykorzystuje wyłączenie UDP do transferu danych, potwierdzeń, sterowania pasmem przepływu i szyfrowania.

Bezpieczeństwo

Cały ruch UDP jest zabezpieczony szyfrowaniem AES Galois/Counter Mode (AES-GCM). Jest to najwyższy standard wśród współczesnych metod szyfrowania i zapewnia, że transmitowane dane nie mogą być przejęte przez niepowołane osoby. Każde połączenie ma unikalny klucz, wymiana klucza pomiędzy serwerem i klientem jest szyfrowana za pomoca algorytmu Rivest-Shamir-Adleman (RSA).

Sprzętowe szyfrowanie

Protokół Filemail UAP używa zestawu instrukcji kryptograficznych AES-NI, wprowadzonego przez AMD i Intel kilka lat temu. Pozwala on na użycie dedykowanych komponentów hardwarowych do szyfrowania i deszyfrowania danych. To ma ogromne znaczenie, jeśli chodzi o prędkość transmisji. AES-NI jest obsługiwany na systemach operacyjnych takich jak Windows, macOS, Linux, iOS i Android. Można wykorzystywać ten zestaw instrukcji w produktach firm takich jak m. in. Intel, AMD, ARM, VIA, Atmel, Samsung, Qualcomm, NXP i Broadcom.

Wymagania softwarowe i hardwarowe

Protokół Filemail UAP jest napisany w niskopoziomowym C++ i może działać praktycznie na każdym urządzeniu i systemie operacyjnym. Kompilacje binarne dostępne są obecnie na systemy Windows, macOS i Linux. Naszym flagowym narzędziem używającym UAP jest Filemail Desktop. Dostępne są również aplikacje konsolowe. Filemail UAP jest bardzo mocno zoptymalizowany i używa niewielką ilość pamięci (kilka megabajtów), ciągle jednak oferując maksymalną prędkość transferu. Zwykle używa też mniej niż 5% CPU podczas wysyłania plików z maksymalną prędkością.

Obustronne przyspieszanie transmisji

Filemail UAP jest używany zarówno do wysyłania jak i pobierania plików w Filemail Desktop. To oznacza, że zarówno Ty jak i Twoi klienci i partnerzy biznesowni mogą w pełni korzystać z zalet tej technologii.

Rozpoczęcie pracy z Filemail UAP

Filemail UAP jest zintegrowany z naszą aplikacją Filemail Desktop i jest włączany automatycznie podczas wysyłania i pobierania plików. Aplikacja Filemail Desktop jest bezpłatna i nie wymaga logowania. Przekaż przyspieszenie do ludzi.