Prędkość pobierania danych nie zależy tylko i wyłącznie od przepustowości łącza oraz obciążenia serwera. W praktyce ogromne znaczenie ma również opóźnienie oraz poziom utraty pakietów. Dlatego też Google już od pewnego czasu testowało na swoich serwerach algorytm kontroli przeciążenia BBR. Sprawdza się dużo lepiej niż używany standardowo TCP CUBIC, który jest stosowany domyślnie w systemach Linux.

Google stosowało do tej pory rozwiązanie BBR (ang. Bottleneck Bandwidth and Round-trip propagation time) na serwerach obsługujących wyszukiwarkę oraz serwis YouTube. Jak dobrze wiecie, serwisy te codziennie generują spory ruch, więc podczas tych eksperymentów można było zebrać dość ciekawe dane. Okazuje się, że algorytm BBR pozwala na poprawienie szybkości pobierania danych o 4% w skali całego świata. W niektórych krajach wzrost wyniósł aż 14%. Natomiast opóźnienie zostało zredukowane średnio o aż 33%. Dlatego też Google postanowiło wdrożyć algorytm BBR na swojej usłudze Google Cloud Platform.

Algorytm BBR sprawdza się dobrze przy szybkich i przeciążonych łączach.

Problemy przesyłu danych przez Internet za pomocą tradycyjnego protokołu TCP pojawiają się wtedy, kiedy nastąpi utrata jakiegoś pakietu i trzeba przesłać go ponownie. Transfer wtedy zwalnia i musimy ponownie czekać, aż się rozpędzi. Drugim problemem są szybkie łącza z wysokimi opóźnieniami, przy nich również potrzeba trochę czasu zanim się nasycą. Jak te problemy rozwiązuje algorytm BBR? Tradycyjne rozwiązania kontrolują prędkość przesyłania pakietów na podstawie ich utraty. Jeżeli algorytm kontrolujący przeciążenie sieci wykryje straty pakietów, to zaczyna je wysyłać wolniej. Natomiast BBR dla każdego osobnego połączenia mierzy współczynnik dostarczenia pakietów oraz ich opóźnienie. Dzięki temu serwery Google są w stanie w sposób maksymalny wykorzystać dane połączenie. Dzięki znajomości aktualnej maksymalnej przepustowości oraz minimalnego opóźnienia (wartości te są zmienne w funkcji czasu), algorytm BBR jest w stanie wycisnąć ostatnie soki z każdego połączenia.

GCP TCP BBR

Algorytm BBR daje spory zysk przy szerokopasmowych łączach z dużymi opóźnieniami. Przykładowo dla serwera z kartą 10 Gbps, który przesyła dane przez łącze z opóźnieniem 100 ms i utratą pakietów na poziomie 1%, prędkość transmisji przy standardowym algorytmie TCP CUBIC wyniesie zaledwie 3,3 Mbit/s. Natomiast BBR wyciągnie aż 9,1 Gbit/s. Dzięki temu nie trzeba stosować sztuczek pomagających osiągnąć maksymalną przepustowość, które polegają na otwieraniu wielu równoległych połączeń. Tak właśnie działają akceleratory pobierania plików oraz klienci sieci p2p.

Źródło: Google

Przemek jest mózgiem operacyjnym SpeedTest.pl. Studiował na Politechnice Wrocławskiej elektronikę i telekomunikację. Zarządza projektami IT, relacjami z klientami oraz nadzoruje procesy rozwoju. Prywatnie zaangażowany w rodzinę, wsparcie różnych działalności charytatywnych i projekty ekstremalne.