Od jakiegoś czasu mam problemy z siecią i staram się wyśledzić źródło problemu.
Wczoraj przesyłałem plik z laptopa na komputer stacjonarny za pomocą SCP przez połączenie Wi-Fi. Kiedy zacząłem pobieranie, oba komputery miały niski ping do lokalnego routera (192.168.1.1, oba miały około 10–50 ms), a pobieranie przebiegało z prędkością 2-3 MB / s.
Po około minucie okazało się, że opóźnienie mojego pulpitu do 192.168.1.1 gwałtownie wzrosło (> 1000 ms), a transfer zwolnił do indeksowania (~ 200 KB / s). Opóźnienie laptopa do 192.168.1.1 pozostało jednak takie samo (10-50ms). Po zakończeniu przesyłania opóźnienie pulpitu spadło z powrotem do normalnego zakresu.
Oczywiście coś idzie nie tak, gdy połączenie jest nasycone. Co to mogło być? Czy to sugeruje problem z routerem lub problem z moim komputerem? Gdzie byłoby właściwe miejsce, aby zacząć szukać?
źródło
Odpowiedzi:
Google dla „wzdęcia bufora”.
Ponieważ pamięć RAM stała się tania, sprzęt sieciowy dodał bufory ramek, aby nigdy nie musiały upuszczać ramki.
Niestety spadki ramek spowodowały, że TCP zauważył przeciążenie i wiedział, kiedy się wycofać. Bez upuszczanych ramek tradycyjne implementacje TCP nigdy nie zauważają przeciążenia i nigdy się nie wycofują, więc po prostu wysyłają z dużą prędkością i jeszcze gorzej.
Jeśli cały sprzęt sieciowy buforuje coraz więcej ramek podczas przeciążenia i pozwala na zwiększenie długości kolejki bez ograniczeń, opóźnienie rośnie i rośnie, ponieważ opróżnianie kolejek trwa coraz dłużej.
Techniki i mechanizmy aktywnego zarządzania kolejkami (AQM), takie jak jawne powiadamianie o przeciążeniu (ECN), mogą to złagodzić, ale ponieważ problem nie jest bardzo dobrze nagłośniony, trudno jest stwierdzić, które produkty unikają wzdęcia bufora, a które nie. To nie tak, że możesz poszukać „No Bloat Buffer!” logo z boku pudełka i wiedz, że dostajesz dobry sprzęt.
Istnieją jednak rynkowe dystrybucje oprogramowania układowego routera Wi-Fi, które specjalizują się w unikaniu rozdęcia buforów. Przynajmniej jedna dystrybucja została specjalnie opracowana przez badaczy TCP, którzy jako pierwsi rozpoznali problem, i została wykorzystana jako platforma badawczo-rozwojowa, gdy szukali rozwiązań.
źródło
Duże opóźnienia występują, gdy pakiety trafiają do kolejki, która ma zostać przesłana przez bardzo zajęte łącze. Wszystkie pakiety znajdujące się przed nim w kolejce muszą zostać wysłane jako pierwsze. Gdy zapotrzebowanie na łącze jest duże, a bufory kolejek są duże, prowadzi to do wysokich czasów podróży w obie strony.
źródło