Klient hlásí, že tunel se připojí, ping odpoví, přihlašovací stránka se načte a přenos se pak při každém pokusu zasekne ve stejném bodě. Tento vzorec už hodně říká: dostupnost funguje a trvalá propustnost ne. Než otevřete firewall, zjistěte, zda se VPN na poruše vůbec podílí. Pošlete velké TCP přes stejnou bránu bez tunelu v cestě; pokud se také zasekne, OpenVPN v tom nikdy nebyl.

Host pfSense se síťovou kartou virtio má velmi dobrý důvod selhat právě v tomto tvaru.

Malé pakety projdou, objemné TCP se zasekne

Navázání spojení, odpovědi DNS a ozvěny ICMP jsou malé a obvykle projdou. Trvalé přenosy nutí hosta segmentovat a právě tam se poškozená cesta offloadu projeví. Porucha nemusí být symetrická: odchozí provoz může být čistý, zatímco příchozí padá, nebo naopak, takže se uživatel může přihlásit a potom se zaseknout na první velké odpovědi. Protože stejný klient funguje přes jinou bránu, vina padá na nejnovější komponentu.

Proto otestujte bránu bez tunelu. Stačí stahování z LAN do WAN dost velké na to, aby běželo několik sekund, a musí se provést před jakoukoli změnou nastavení, aby následné srovnání něco znamenalo.

Co offload skutečně slibuje

virtio je paravirtualizované: hostitel a host sdílejí práci, hostitel inzeruje možnosti kontrolního součtu a segmentace a očekává, že host dokončí, co začal. Pokud zásobník hosta to nedělá, rámce odcházejí s neúplnými kontrolními součty nebo je hostitel zahodí. Emulovaná E1000 nabízí jednodušší a pomalejší model, ve kterém problém zmizí bez jediné změny v pfSense. Vyjednávání schopností probíhá pro každé zařízení, což vysvětluje, proč jeden host běží měsíce a jeho přestavěný dvojník selže hned první den.

Vyjednaná sada závisí na verzi hypervizoru a zvoleném modelu síťové karty, nejen na konfiguraci, kterou jste importovali.

Jedno zaškrtávací pole udrží virtio

V rozhraní pfSense obsahuje Systém, pak Rozšířené, pak Síť zaškrtávací pole Zakázat hardwarový offload kontrolního součtu. Jeho zapnutím host počítá kontrolní součty softwarově, což odpovídá tomu, co zásobník FreeBSD za pfSense očekává od paravirtuálního zařízení. Dvě související volby na stejné stránce pokrývají hardwarový offload segmentace TCP a hardwarový offload velkého příjmu. Sáhněte po nich, když navázání spojení uspěje, ale objemné přenosy ne.

Nechte síťovou kartu jako virtio, zatímco změnu provádíte. Přechod na E1000 spálí CPU na každém paketu po celou dobu života VM a skryje konfigurační problém před každým, kdo hostitele zdědí, což je horší obchod než o něco pomalejší, ale předvídatelná datová cesta.

Změřte cenu, kterou jste právě přijali

Softwarový výpočet kontrolních součtů přesouvá práci do hosta, takže potom změřte propustnost, místo abyste předpokládali, že nic nestojí. Na malé VM je penalizace skutečná, ale je viditelná a stabilní, na rozdíl od tichého výpadku. Porovnejte chybové čítače rozhraní a log jádra hosta před a po. Hypervizor, který filtruje most, je samostatná porucha s jinými důkazy a žádný příznak offloadu ji nevyléčí.

Měňte jednu věc na test a zapište cestu v menu, zaškrtnuté pole a číslo, které jste změřili. Kdo bude čelit dalšímu přestavěnému hostu, bude chtít všechny tři.

Jiné firewally založené na BSD nabízejí ekvivalentní ovládání ve vlastním nastavení rozhraní, takže úvaha platí, i když cesta v menu ne.

Související články