pfSense Virtiolla: TCP juuttuu, kunnes offload kytketään pois
Virtualisoitu pfSense vastaa pingiin ja juuttuu sitten suureen TCP-liikenteeseen. Kytke virtion tarkistussumman offload-polku pois ja mittaa kustannus sen sijaan, että vaihtaisit verkkokortin.
Asiakas raportoi, että tunneli yhdistyy, ping vastaa, kirjautumissivu latautuu ja siirto jähmettyy sitten joka yrityksellä samaan kohtaan. Tämä kuvio kertoo jo paljon: tavoitettavuus toimii ja jatkuva läpäisykyky ei. Ennen palomuurin avaamista selvitä, osallistuuko VPN ylipäätään vikaan. Työnnä suuri TCP saman yhdyskäytävän läpi ilman tunnelia reitillä; jos sekin jähmettyy, OpenVPN ei ollut koskaan osallisena.
virtio-verkkokorttia käyttävällä pfSense-vieraalla on erittäin hyvä syy epäonnistua juuri tuossa muodossa.
Pienet paketit menevät läpi, suuri TCP jumittuu
Kättelyt, DNS-vastaukset ja ICMP-kaikut ovat pieniä ja menevät yleensä läpi. Jatkuvat siirrot pakottavat vieraan segmentoimaan, ja juuri siinä vioittunut offload-polku tulee esiin. Vian ei tarvitse olla symmetrinen: lähtevä liikenne voi olla puhdasta, kun saapuva hukkuu, tai päinvastoin, joten käyttäjä voi kirjautua sisään ja juuttua sitten ensimmäiseen suureen vastaukseen. Koska sama asiakas toimii toisen yhdyskäytävän kautta, syy lankeaa uusimmalle komponentille.
Testaa siis yhdyskäytävää ilman tunnelia. LANista WANiin tehtävä lataus, joka on tarpeeksi suuri kestääkseen muutaman sekunnin, riittää, ja se on tehtävä ennen mitään asetusmuutoksia, jotta myöhempi vertailu merkitsee jotain.
Mitä offload todella lupaa
virtio on paravirtuaalinen: isäntä ja vieras jakavat työn, isäntä ilmoittaa tarkistussumman ja segmentoinnin kyvyt ja odottaa, että vieras saattaa aloittamansa loppuun. Jos vieraan pino ei tee niin, kehykset lähtevät epätäydellisin tarkistussummin tai isäntä pudottaa ne. Emuloitu E1000 tarjoaa yksinkertaisemman ja hitaamman mallin, jossa ongelma katoaa ilman ainoatakaan muutosta pfSensessä. Kykyjen neuvottelu tapahtuu laitekohtaisesti, mikä selittää, miksi yksi vieras toimii kuukausia ja sen uudelleenrakennettu kaksonen epäonnistuu ensimmäisenä päivänä.
Neuvoteltu joukko riippuu hypervisorin versiosta ja valitusta verkkokorttimallista, ei vain tuodusta kokoonpanosta.
Yksi valintaruutu pitää virtion
pfSensen käyttöliittymässä polku Järjestelmä, sitten Lisäasetukset, sitten Verkko sisältää valintaruudun Poista laitteistopohjainen tarkistussumman offload käytöstä. Sen asettaminen saa vieraan laskemaan tarkistussummat ohjelmistossa, mikä vastaa sitä, mitä pfSensen takana oleva FreeBSD-pino odottaa paravirtuaaliselta laitteelta. Kaksi samalla sivulla olevaa liittyvää valintaa kattavat laitteistopohjaisen TCP-segmentoinnin offloadin ja laitteistopohjaisen suuren vastaanoton offloadin. Turvaudu niihin, kun kättelyt onnistuvat mutta suuret siirrot eivät.
Jätä verkkokortti virtioksi muutoksen aikana. E1000:aan vaihtaminen polttaa suoritinta jokaisella paketilla koko VM:n eliniän ja kätkee kokoonpano-ongelman jokaiselta, joka perii isännän, mikä on huonompi vaihtokauppa kuin hieman hitaampi mutta ennustettava datapolku.
Mittaa kustannus, jonka juuri hyväksyit
Ohjelmistopohjainen tarkistussummien laskenta siirtää työtä vieraaseen, joten mittaa läpäisykyky jälkeenpäin sen sijaan, että olettaisit sen olevan ilmaista. Pienellä VM:llä rangaistus on todellinen, mutta se on näkyvä ja vakaa, toisin kuin äänetön menetys. Vertaa liitännän virhelaskureita ja vieraan ytimen lokia ennen ja jälkeen. Sillan suodattava hypervisor on erillinen vika erilaisilla todisteilla, eikä mikään offload-lippu paranna sitä.
Muuta yhtä asiaa per testi ja kirjoita muistiin valikkopolku, rastittamasi ruutu ja mittaamasi luku. Kuka tahansa seuraavan uudelleenrakennetun vieraan kohtaa, haluaa kaikki kolme.
Muut BSD-pohjaiset palomuurit tarjoavat vastaavan hallinnan omissa käyttöliittymäasetuksissaan, joten päättely kulkee mukana silloinkin, kun valikkopolku ei.