Oznaczanie portu VPN nie daje priorytetu połączeniom głosowym
Oznaczenie portu VPN jako priorytetu wyróżnia połączenie i kopię zapasową w tym samym tunelu. Głos wymaga klasyfikacji przed szyfrowaniem i kolejki, którą kontrolujesz.
Oznaczenie portu UDP VPN jako wysokiego priorytetu to najczęstsza zmiana QoS dla głosu i nie oddziela połączenia od transferu plików, który dzieli ten sam tunel. Oba strumienie wychodzą przez ten sam szyfrowany gniazdo. Znacznik mówi następnemu przeskokowi, że wszystko jest równie ważne, co jest tym samym, co nie powiedzieć mu nic. Połączenie chroni wiarygodna klasyfikacja przed szyfrowaniem oraz kolejka, którą naprawdę kontrolujesz.
Tunel ukrywa strumień, który chciałeś sklasyfikować
Szyfrowanie zastępuje wewnętrzne nagłówki jednym nagłówkiem zewnętrznym na tunel. Potem głos i ruch kopii zapasowej mają to samo źródło, cel i port transportowy, więc klasyfikator oparty na porcie tunelu nie potrafi ich rozróżnić. Cokolwiek wyróżnisz, wyróżniasz to hurtowo.
Wartość DSCP ustawiona przez aplikację źródłową przetrwa tylko wtedy, gdy coś skopiuje ją na zewnątrz. OpenVPN 2.6 ma passtos, udokumentowany z zakresem IPv4; IPsec stosuje własną politykę kopiowania lub mapowania na granicy tunelu. Bez tego kroku zewnętrzny pakiet jest oznaczany dowolną domyślną wartością, której używa interfejs tunelu, a kolejka poniżej nigdy nie dowie się, że w środku jest połączenie.
Skopiowane znaczniki zasługują na taką samą nieufność jak każda wartość dostarczona przez klienta. Stacja robocza może żądać przyspieszonego przekazywania dla zadania kopii zapasowej, więc dopuszczenie i ponowne oznaczanie na granicy zaufania muszą być w projekcie, zanim znacznikowi się uwierzy.
Priorytet liczy się tylko tam, gdzie powstaje kolejka
To zatłoczony łącz uplink zamienia dobry kodek w robotyczny głos, a kolejka, która się zapełnia, zwykle znajduje się w urządzeniu dostępowym lub w buforze dostawcy. Kształtowanie ścieżki wyjściowej do użytecznej szybkości, minus narzut tunelu i łącza, trzyma tę kolejkę na sprzęcie, którym administrujesz, a nie w cudzym buforze.
Sprawiedliwe kolejkowanie i aktywne zarządzanie kolejkami pomagają nawet bez klasy głosu, bo nie pozwalają jednemu dużemu strumieniowi wypełnić bufora. CAKE w Linuxie łączy kształtowanie, sprawiedliwość na strumień i opcjonalne klasy Diffserv w jednym qdisc, a wdrożony menedżer sieci powinien posiadać tę konfigurację, a nie drugą konkurencyjną konfigurację kolejki. Bez kształtowania klasa wyższa od ruchu masowego nadal czeka za już pełnym buforem.
Obsługa ruchu przychodzącego nie jest bezużyteczna, ale działa dopiero po przekroczeniu łącza odbiorczego przez pakiet. Może wpłynąć na reagującego nadawcę i nie może zwrócić opóźnienia już wydanego powyżej, więc to łagodzenie, a nie gwarancja.
| Stage | What you can control | What to verify |
|---|---|---|
| Application to client | Which flows are trusted for marking | The marked packets are the ones you intended |
| Tunnel boundary | Whether the inner mark is copied outward | Outer header carries the expected value |
| Your uplink | Shaping rate and class treatment | Queue counters move for the voice class |
| Provider path | Almost nothing | Whether the service enforces the marking at all |
| Receiving side | Local policy after arrival | Delay that is already in the past |
Co przetrwa w publicznym internecie
Architektura Diffserv opisuje traktowanie wewnątrz domen administracyjnych, dlatego dostawca może zignorować lub przepisać znacznik na granicy. Przeciwne twierdzenie, że każda sieć zawsze go usuwa, jest równie nieuzasadnione. Uczciwe pytanie brzmi, do czego ta konkretna ścieżka jest zobowiązana umową i jak jest kontrolowana. Sprawdź to oznaczoną sondą, zamiast powtarzać zasadę przeczytaną gdzieś.
Zapytaj, co dostawca robi z klasą, a potem to zmierz. Znacznik zachowany, ale nieplanowany to dekoracja; ścieżka, która planuje bez widzenia znacznika, to inny problem, i oba wymagają innych poprawek.
Plan pomiaru, który izoluje etap
Wykonaj jedno zwykłe połączenie z kontrolowanym konkurencyjnym wysyłaniem, a potem powtórz je na łączu kablowym. Zobacz, co połączenie straciło, co zarejestrowały liczniki klasy i jak blisko interfejs pracuje do swojej rzeczywistej granicy, a nie do reklamowanej prędkości planu.
tc -s qdisc show dev eth0
tc -s class show dev eth0
mtr -rwzbc 50 voice.example.net
Jeśli licznik klasy głosu pozostaje na zero, klasyfikacja lub kopiowanie znacznika jest zepsute i żadna priorytetowość nie pomoże. Jeśli licznik klasy porusza się lokalnie, a opóźnienie nadal rośnie, wąskie gardło jest za twoją bramą. Żadnego z tych wyników nie naprawia podniesienie wartości priorytetu.