Proč se VPN při nahrávání zdá pomalá: zpoždění ve frontě
Rychlý přenos může i tak způsobit zadrhávání hovorů, když pakety čekají ve frontě. Porovnejte dobu obrátky v klidu a pod zátěží, než obviníte koncový bod VPN.
Začne se nahrávat záloha, počítadlo přenosu vypadá zdravě a videohovor se rozpadne. Lince nechybí šířka pásma v tom smyslu, který to číslo naznačuje; pakety někde čekají ve frontě a interaktivní stojí za objemnými daty. To je zpoždění ve frontě, běžně nazývané bufferbloat. VPN může přidat svou vlastní frontu, ale sama problém vytváří jen zřídka.
Šířka pásma a zpoždění jsou různá měření
Propustnost odpovídá tomu, kolik dat se přenese za sekundu, kdežto zpoždění odpovídá tomu, jak dlouho jednomu paketu trvá projít cestou. Nasycená linka může držet velký backlog a přesto hlásit dobrou propustnost, protože fronta se vyprazdňuje rychlostí linky, jakmile náraz skončí. Interaktivní provoz trpí první, protože hovor potřebuje paket každých několik milisekund, ne velký soubor nakonec. Měření pouze výsledku rychlostního testu proto skrývá symptom, kvůli kterému jste se podívali.
Všimněte si také směru pod zátěží. Plný buffer pro nahrávání může zdržet vše ostatní, i když kapacita stahování zůstává nečinná.
Změřte dobu obrátky pod zátěží
Vezměte základní měření na klidné lince a poté totéž opakujte, zatímco běží jeden řízený přenos. Porovnejte oba běhy, ne absolutní čísla.
ping -c 20 -i 0.2 203.0.113.5
dd if=/dev/zero bs=1M count=50 | ssh [email protected] "cat > /dev/null"První příkaz vzorkuje dobu obrátky a druhý vytváří trvalé nahrávání bez potřeby služby pro test rychlosti. Základ, který zůstává plochý, a poté zatížený běh, který stoupne o stovky milisekund, je podpis, který hledáte. Některé sítě snižují prioritu ICMP, takže ping berte jako stopu a potvrďte ho vlastním zobrazením latence aplikace. Držte test krátký na měřených linkách, protože opakovatelný kontrast je důležitější než dlouhé nasycení.
Přesuňte frontu tam, kde je úzké hrdlo
Správa front pomáhá jen na zařízení, které backlog skutečně drží. Než přidáte pravidla, prohlédněte si, co rozhraní dělá.
tc -s qdisc show dev eth0
tc qdisc replace dev eth0 root fq_codelPříkaz show hlásí aktuální disciplínu plus počítadla backlogu a zahazování, což vám řekne, zda je toto rozhraní úzkým hrdlem, nebo jen propouští provoz. Nahrazení kořenové disciplíny algoritmem spravedlivé fronty dá krátkým tokům vlastní pořadí místo jedné FIFO sdílené s objemnými daty. Použijte to na WAN rozhraní routeru, když je router úzkým hrdlem, ne ze zvyku na tunelovém zařízení. Zachovejte předchozí konfiguraci a znovu otestujte odezvu pod zátěží i přenosovou rychlost, protože mírně nižší hromadná rychlost je dobrá výměna za použitelné hovory.
Co tunel mění a co skrývá
VPN přidává šifrování a další skok a také skrývá jednotlivé toky před zařízeními mimo tunel. To je důležité, když zařízení výše v síti nabízí prioritizaci podle aplikace, protože vidí šifrované pakety místo původních konverzací. Router, který tunel sám ukončuje, má jiný pohled a jinou zátěž a může klasifikovat uvnitř něj. Ani jedno uspořádání neodstraňuje frontu na přístupové lince, kde se zpoždění obvykle hromadí.
Pokud zpoždění nesleduje zátěž, přestaňte ladit fronty a podívejte se jinam: podmínky Wi-Fi, problémy s velikostí paketů nebo jedna špatná výstupní cesta. Nastavení front použitá bez měření jen přesouvají záhadu.