Mam ten sam problem z połączeniem biznesowym 5 Mb / s, co w innym poście na tej stronie. Gdy tylko dowolny komputer rozpocznie pobieranie, opóźnienie przy pierwszym przeskoczeniu obok naszego DFG dostarczonego przez naszego usługodawcę internetowego (Bell) znika z listy. Ten pierwszy przeskok jest prawdopodobnie w tym samym budynku i trwa 1 ms, zacznij pobieranie, np. Aktualizację systemu Windows, i przeskoczy do 200-1000 ms.
Spędziłem wiele godzin przy telefonie, mówiąc, że osiągnąłeś maksymalną dostępną przepustowość, to normalne, że opóźnienie wzrasta. Ale moje czytanie mówi mi, że coś psują z TCP. Przeprowadziłem testy na domowym połączeniu Shaw, a nawet na Rogers LTE z pobieraniem i osiąganiem maksymalnej prędkości Mbps dla mojego konta, ale opóźnienie nie przechodzi przez dach.
Czy mam rację, że Bell robi coś, co przełamuje wbudowane technologie TCP, aby zarządzać jego szybkością w oparciu o dostępną przepustowość między 2 punktami końcowymi?
Odpowiedzi:
Bell mówi prawdę. Gdy próbujesz wcisnąć 5 Mb / s (lub więcej) do połączenia 5 Mb / s, wszystko jest uporządkowane w małej, uporządkowanej kolejności (czytaj: kolejka). Twoje polecenie ping kończy się bezzwłocznie, ponieważ nie ma zaległości. Odpowiedź znajduje się jednak na końcu kolejki. TCP robi dokładnie to, co powinien - nadawca wypełnia dozwolone okno odbioru.
Są rzeczy, które możesz zrobić po swojej stronie linii (QoS, WRED, itp.), Aby zmniejszyć efekty, ale jest to coś, co zobaczysz, gdy będzie duża różnica między przepustowością nadawcy i odbiorcy. Mieszkałem z tym od lat (T1, DS3 6 Mb / s, a nawet 10 Mb / s cablemodem). Możesz poprosić dostawcę usług internetowych o zmniejszenie rozmiaru kolejki po swojej stronie, ale raczej nie zrobią tego, ponieważ spowoduje to spadek pakietów .
źródło
Większość form „QoS” w dzisiejszych czasach nie obejmuje AQM, ponieważ dostawcy mieli trudności z automatyczną konfiguracją RED bez wyrządzania szkody. Prowadzi to do przerażających opóźnień, które widzisz na wielu popularnych urządzeniach, zwłaszcza modemach kablowych i bezprzewodowych. Zatem samo zalecenie „włączenia qos” ... nie pomaga. W rzeczywistości w co najmniej jednym z produktów Netgear włączenie ograniczenia prędkości dla „QoS” prowadzi do znacznie gorszych wyników ...
Ostatnio pojawił się nowy algorytm sprawiedliwego kolejkowania + AQM, który wydaje się działać bardzo dobrze i lepiej, nie wymaga prawie żadnej konfiguracji poza ustawieniem ogranicznika prędkości. Nazywa się fq_codel i jest teraz szeroko dostępny w większości Linuksów, a także został przeniesiony do BSD. Jest to część domyślnego „QoS” w łamaczu barier Openwrt, Cerowrt i Gargoyle używa (całkiem niezłej) wcześniejszej wersji o nazwie sfqred z innowacyjnym systemem automatycznego dostosowywania stawek o nazwie ACC.
Możesz więc zatrzasnąć pole oparte na tym przed swoim niewłaściwie działającym linkiem, włączyć ich ogranicznik szybkości QoS (ustawić nieco poniżej ustawień przychodzących i wychodzących dostawców, aby przejąć kontrolę) + fq_codel i uzyskać znacznie lepszą wydajność dla wszystkich korzystających z niego . Mam na myśli zadziwiająco lepiej: zobacz demo ietf poniżej, raport dla grupy roboczej iccrg w ietf itp.
Aby uzyskać więcej szczegółów na temat problemu z buforowaniem buforu i jego napraw, zobacz:
http://www.bufferbloat.net/projects/cerowrt/wiki/Bloat-videos
Staramy się (oczywiście) przekonać różnych dostawców ISP CPE, aby zwrócili na to uwagę, podobnie jak cablelabs, który kilka miesięcy temu opublikował wspaniałe studium tych nowych rzeczy, które zawiera również pewne szczegóły dotyczące obecnego niewłaściwego zachowania modemów kablowych.
http://www.cablelabs.com/downloads/pubs/Active_Queue_Management_Algorithms_DOCSIS_3_0.pdf
źródło
To, co widzisz, jest całkowicie typowe. Wielu dostawców usług ograniczy stawki i / lub użyje mechanizmu QoS w celu obniżenia priorytetu ICMP (w tym tradycyjnego pingowania i traceroute), ponieważ był on czasami wykorzystywany w atakach typu „odmowa usługi”.
Chociaż łącze nie jest przeciążone, obniżony priorytet nie wpływa na nic, ponieważ w kolejce nie ma ruchu. W tych okresach opóźnienie pozostaje niskie, ponieważ pakiety ICMP będą natychmiast przekazywane i nie będą w ogóle opóźniane.
Gdy łącze jest przepełnione, kolejki o wyższym priorytecie zyskują większą uwagę. W zależności od mechanizmu kolejkowania może przekazywać wiele pakietów z kolejki o wyższym priorytecie dla każdego pakietu z kolejki o niższym priorytecie lub nawet przekazywać dalej tylko wtedy, gdy w kolejce o wyższym priorytecie nie ma nic. W każdym przypadku pakiet przeniesiony do kolejki o niższym priorytecie będzie na ogół wstrzymywany dłużej niż na łączu bez przeciążenia, co zwiększa opóźnienie.
źródło
Prawdopodobnie cierpisz na buforowanie i chcesz AQM (Active Queue Management). Napisałem skrypt dla Linuksa, który sprawia, że jest to dość łatwe:
Po prostu zapisujesz skrypt jako „
traffic-shaping
i”chmod a+x
i uruchamiasz go jako root (po przeczytaniu kodu źródłowego, oczywiście).Proponuję dla twojego przypadku użycia
źródło
linux-lowlatency
jądra, aby utrzymać system w zakresie przetwarzania wszystkich pakietów.