QoS, czyli pas dla uprzywilejowanych na zatłoczonej autostradzie
Na Autostradzie Pakietów znowu jest korek. Po ostatniej przygodzie z pingiem, jitterem i stratami kierownik uznał, że znalazł rozwiązanie: wszyscy mają jechać szybciej. Niestety, samochody stoją. Szybciej stoi tylko licznik reklamacji.
Na lewym pasie jedzie karetka z pacjentem. Obok ciężarówka wioząca 800 GB filmów o kotach. Za nimi autobus z pakietami rozmowy VoIP, samochód z sesją SSH i kierowca, który od trzech godzin pobiera aktualizację Windows.
Kierownik ruchu ogłasza:
— Od dzisiaj wszyscy są równi!
— Ale karetka wiezie pacjenta!
— A ciężarówka wiezie koty!
— Panie kierowniku, człowiek może umrzeć!
— Koty też mają uczucia!
Administrator odkłada kubek herbaty.
— Potrzebujemy QoS.
— Kolejnego systemu poboru opłat?
— Nie. Tym razem chodzi o to, żeby ważne pakiety nie musiały stać za mniej pilnymi.
QoS, czyli organizacja ruchu zamiast czarów
QoS — Quality of Service — to zbiór mechanizmów pozwalających klasyfikować ruch, zarządzać kolejkami, przydzielać zasoby i wpływać na to, jak sieć zachowuje się podczas przeciążenia.
W poprzednim artykule o pingu, jitterze i stratach widzieliśmy, że sama przepustowość nie wystarczy: pakiety mogą docierać z opóźnieniem, nieregularnie lub wcale. QoS pomaga zdecydować, co robić, kiedy na wąskim odcinku drogi robi się tłoczno.
Nie jest to magiczny dopalacz. Jeśli bramka przepuszcza tysiąc samochodów na minutę, namalowanie na niej napisu „QoS” nie zwiększy tej liczby do dziesięciu tysięcy.
— To po co nam QoS?
— Żeby karetka nie czekała za ciężarówką z kotami.
— A koty?
— Dojadą. Może chwilę później.
— To jeszcze sprawdzę regulamin ochrony zwierząt.
Klasyfikacja: kto jedzie i co przewozi?
Na pierwszym posterunku policjant ogląda samochody.
— Karetka: ruch pilny.
— Rozmowa telefoniczna: wrażliwa na opóźnienie.
— Aktualizacja systemu: duży transport, ale może poczekać.
— Kopia zapasowa: ważna, choć niekoniecznie w tej sekundzie.
To klasyfikacja ruchu. Urządzenia mogą rozpoznawać pakiety według różnych cech, na przykład adresów, portów, interfejsu, VLAN-u czy już przypisanych oznaczeń. Ale sam numer portu nie zawsze wiarygodnie mówi, jaka aplikacja naprawdę go używa.
Co ważne, priorytet nie jest tym samym co ważność biznesowa danych. Backup może być krytyczny dla firmy, ale nie musi wyprzedzać pojedynczego pakietu rozmowy głosowej. Może bez szkody zaczekać chwilę; dźwięk z rozmowy po kilku sekundach jest już spóźniony.
DSCP, czyli naklejka na przedniej szybie
Policjant otrzymuje nowe narzędzie: naklejki z kategorią ruchu.
W sieciach IP podobną rolę pełni DSCP — Differentiated Services Code Point, sześciobitowe pole w nagłówku IP, służące do oznaczania klas obsługi pakietów. Urządzenia mogą interpretować te oznaczenia i stosować odpowiednie reguły kolejkowania.
Przykładowo EF (DSCP 46) bywa używany dla ruchu głosowego wymagającego małych opóźnień, a CS0 (DSCP 0) oznacza standardową obsługę typu best effort. To jednak polityka danej sieci, a nie przepustka gwarantująca pierwszeństwo wszędzie na świecie.
Nagle do posterunku podjeżdża ciężarówka z filmami o kotach. Na szybie widnieje wielki napis: „POJAZD RATUNKOWY — NAJWYŻSZY PRIORYTET”.
— Co pan przewozi?
— Materiały krytyczne dla infrastruktury.
— Jakie?!
— Kot spadający z kanapy. W 4K.
— A dlaczego oznaczył pan transport jako uprzywilejowany?
— Sam sobie nadałem priorytet.
🤣
I tu jest haczyk: oznaczeniu nie zawsze należy ufać. Na granicy własnej sieci administrator może sprawdzić, zmienić lub wyzerować DSCP. To kwestia tzw. granicy zaufania. Gdyby każdy klient mógł ogłosić się karetką, wkrótce na drodze byłyby wyłącznie karetki — w tym trzy TIR-y z kotami.
Kolejki, czyli kto pierwszy przejeżdża przez bramkę
Samo przyklejenie oznaczenia niczego jeszcze nie przyspiesza. Musi istnieć urządzenie, które odpowiednio obsłuży kolejkę.
Najprostsza kolejka FIFO działa według zasady: kto pierwszy przyjechał, ten pierwszy przejedzie. Brzmi sprawiedliwie, ale karetka może utknąć za setkami ciężarówek.
Przy kolejkowaniu priorytetowym ruch pilny może być obsługiwany przed zwykłym. Z kolei metody ważone pozwalają rozdzielać dostępny czas lub przepustowość między klasy, tak aby żadna nie została całkowicie zapomniana.
— Wprowadzamy specjalny pas dla karetek!
— Świetnie!
— A co, jeśli wszyscy będą jechać tym pasem?
— To wrócimy do punktu wyjścia, tylko farba będzie droższa.
Nieograniczony priorytet może doprowadzić do starvation: ciągle obsługiwany ruch najwyższej klasy zagłodzi pozostałe kolejki. Dlatego w praktycznych rozwiązaniach pilny ruch często otrzymuje także określony limit, a inne klasy mają zapewnioną część zasobów.
Shaping i policing: dwaj policjanci o różnych charakterach
Na Autostradzie Pakietów zatrudniono dwóch nowych funkcjonariuszy.
Pierwszy jest cierpliwy. Gdy samochodów przyjeżdża zbyt dużo, kieruje je na parking i wypuszcza stopniowo, zgodnie z ustalonym tempem. To traffic shaping: kontrola szybkości wysyłania przez buforowanie i planowanie ruchu. Może zwiększyć opóźnienie, ale pomaga wygładzić nadmiarowy strumień.
Drugi policjant nie ma parkingu.
— Limit przekroczony!
— To mogę zaczekać?
— Nie.
— To co teraz?
— Zawracamy. Następny!
To traffic policing: egzekwowanie limitu przez odrzucanie pakietów przekraczających warunki albo zmianę ich oznaczenia, zależnie od przyjętej polityki. Policing nie jest po prostu inną nazwą dla shapingu.
— A który policjant jest lepszy?
— Zależy, co chcemy osiągnąć.
— Jak zwykle.
— Witamy w sieciach komputerowych.
Wielki parking wraca: FQ-CoDel i CAKE
Po doświadczeniach z bufferbloat kierownik pamięta już, że ogromny parking przed bramką nie rozwiązuje każdego problemu.
— A gdybyśmy zbudowali JESZCZE większy parking?
— Nie.
— Ale z osobnym piętrem dla kotów?
— Też nie.
Mechanizmy takie jak FQ-CoDel łączą podział ruchu na strumienie z aktywnym zarządzaniem kolejką. Pomagają ograniczać sytuację, w której jeden intensywny transfer zdominowałby pozostałych kierowców, oraz przeciwdziałać nadmiernemu oczekiwaniu.
CAKE idzie dalej, integrując między innymi kształtowanie ruchu, sprawiedliwy podział i mechanizmy zarządzania opóźnieniem. W niektórych konfiguracjach potrafi również korzystać z klasyfikacji ruchu.
Ważna rzecz: sprawiedliwe kolejkowanie to nie to samo co bezwarunkowe pierwszeństwo dla wybranej aplikacji. Często wystarczy nie dopuścić, by jeden ogromny transfer zablokował wszystkie drobne pakiety.
— Czyli karetka pojedzie szybciej?
— Jest na to większa szansa przy przeciążeniu.
— A ciężarówka z kotami?
— Nadal dojedzie.
— To jest sprawiedliwość społeczna na kołach!
Gdzie postawić policjanta?
Teraz zagadka. Łącze internetowe wysyła dane z prędkością 100 Mb/s. Router lokalny ma port 1 Gb/s.
— Uruchomiliśmy QoS na routerze!
— A gdzie tworzy się korek?
— Na łączu 100 Mb/s.
— A router wysyła do niego z jaką prędkością?
— Gigabitową.
— Czyli przekazuje korek dalej, zanim zdąży zaprowadzić porządek.
Skuteczna kontrola kolejki wymaga wpływu na miejsce, w którym naprawdę występuje ograniczenie przepustowości. Przy wysyłaniu danych często ustawia się shaping poniżej rzeczywistej dostępnej szybkości łącza, aby kolejka utworzyła się na urządzeniu, którym zarządzamy, a nie poza naszą kontrolą.
Przy ruchu przychodzącym sprawa jest trudniejsza: pakiety mogły już zatkać odcinek operatora, zanim zobaczy je nasz router. Można wpływać na zachowanie części strumieni, ale nie cofniemy pakietów, które już przejechały zatłoczoną drogą.
— To może policjant stanie za korkiem i będzie krzyczał „proszę nie wjeżdżać”?
— Może. Tylko kierowcy usłyszą go po fakcie.
Czy QoS działa w całym Internecie?
Kierownik z dumą nakleja na pakiet napis „PILNE”.
— Teraz ma pierwszeństwo aż do Australii!
— Niekoniecznie.
— Jak to?! Przecież ma naklejkę!
— A czy australijski operator podpisał z nami umowę o honorowaniu tej naklejki?
— Nie.
— No właśnie.
Oznaczenia DSCP mogą być zachowane, zmodyfikowane lub zignorowane przez kolejne sieci. Na publicznym Internecie nie ma uniwersalnej gwarancji, że nasz priorytet zostanie uszanowany od początku do końca trasy.
QoS działa najlepiej tam, gdzie kontrolujemy urządzenia i politykę ruchu albo gdzie istnieją odpowiednie ustalenia między operatorami. W tunelach dodatkowo trzeba zwrócić uwagę na sposób przenoszenia oznaczeń do nagłówka zewnętrznego.
To trochę jak z sygnałami pojazdu uprzywilejowanego: w obrębie zorganizowanej drogi obowiązują ustalone zasady, ale tabliczka przyklejona na własną rękę nie czyni nikogo karetką.
QoS nie naprawi uszkodzonego mostu
Administrator dostaje nowe zgłoszenie.
— Mamy straty pakietów!
— Na którym odcinku?
— Na uszkodzonym łączu.
— A co zrobiliście?
— Nadaliśmy wszystkim najwyższy priorytet!
QoS nie naprawia fizycznego uszkodzenia, błędnej konfiguracji, złego routingu, problemów radiowych ani przeciążenia, którego nie da się opanować dostępną pojemnością łącza. Może lepiej podzielić istniejące zasoby, ale nie stworzy nowych.
Jeśli każdy pakiet otrzyma najwyższy priorytet, to żaden nie będzie szczególnie uprzywilejowany.
— Panie kierowniku, wszystkie samochody są teraz karetkami!
— Znakomicie!
— I wszystkie stoją w korku.
— To może dołożymy im syreny?
Finał: koty kontra karetka
Po tygodniu wdrażania zasad na Autostradzie Pakietów ruch wygląda znacznie lepiej. Rozmowy głosowe nie zacinają się przy każdym większym transferze, SSH reaguje sprawniej, a nocne kopie zapasowe nadal docierają na miejsce.
Przed bramką zatrzymuje się znajoma ciężarówka.
— Dzień dobry, wiozę filmy z kotami w 4K.
— Proszę na zwykły pas.
— Ale to pilne!
— Dlaczego?
— Kot właśnie zeskoczył z kanapy i cały Internet musi to zobaczyć!
— Rozumiem. Na zwykły pas.
Po chwili nadjeżdża karetka. Ochroniarz natychmiast ją przepuszcza.
Kierownik obserwuje sytuację.
— To w końcu są równi czy nie?
— Mają równe prawo do przejazdu. Nie każda przesyłka ma jednak ten sam termin dostawy.
— A kot?
— Kot może poczekać.
— Nie zna pan kotów.
🤣
Na tablicy Autostrady Pakietów zawisł nowy regulamin: „Ruch uprzywilejowany przepuszczamy poza kolejnością. Kierowcy deklarujący przewóz materiałów krytycznych mogą zostać poproszeni o pokazanie zawartości przyczepy. Film z kotem nie stanowi dokumentu potwierdzającego status pojazdu ratunkowego”.
