pfSense na Virtio: TCP se ustavi, dokler offload ni izklopljen
Virtualiziran pfSense se odzove na ping in se nato ustavi pri velikem TCP. Izklopite pot offloada kontrolne vsote pri virtio in izmerite stroške, namesto da bi zamenjali omrežno kartico.
Stranka poroča, da se tunel poveže, ping se odzove, prijavna stran se naloži, nato pa se prenos pri vsakem poskusu ustavi na isti točki. Ta vzorec že veliko pove: dosegljivost deluje, trajna prepustnost pa ne. Preden odprete požarni zid, ugotovite, ali VPN v okvari sploh sodeluje. Pošljite velik TCP skozi isto prehodno točko brez tunela na poti; če se tudi ta ustavi, OpenVPN ni bil nikoli vpleten.
Gost pfSense z omrežno kartico virtio ima zelo dober razlog, da odpove natanko v taki obliki.
Majhni paketi gredo skozi, velik TCP se obesi
Rokovanja, odgovori DNS in odmevi ICMP so majhni in običajno gredo skozi. Trajni prenosi prisilijo gosta v segmentiranje in prav tam se pokaže poškodovana pot offloada. Napaka ni nujno simetrična: odhodni promet je lahko čist, medtem ko dohodni izginja, ali obratno, zato se uporabnik lahko prijavi in se nato ustavi pri prvem velikem odgovoru. Ker isti odjemalec deluje skozi drugo prehodno točko, krivda pade na najnovejšo komponento.
Zato preizkusite prehodno točko brez tunela. Prenos iz LAN v WAN, ki je dovolj velik, da teče nekaj sekund, zadostuje, in ga je treba izvesti pred vsako spremembo nastavitev, da bo primerjava pozneje kaj pomenila.
Kaj offload v resnici obljublja
virtio je paravirtualen: gostitelj in gost si delita delo, gostitelj razglasi zmožnosti kontrolne vsote in segmentiranja ter pričakuje, da bo gost dokončal, kar je začel. Če gostov sklad tega ne počne, okviri odidejo z nepopolnimi kontrolnimi vsotami ali jih gostitelj zavrže. Emulirana E1000 ponuja preprostejši in počasnejši model, v katerem težava izgine brez ene same spremembe v pfSense. Pogajanja o zmožnostih potekajo za vsako napravo posebej, kar pojasnjuje, zakaj en gost teče mesece, njegov obnovljeni dvojček pa odpove že prvi dan.
Dogovorjeni nabor je odvisen od različice hipervizorja in izbranega modela omrežne kartice, ne le od uvožene konfiguracije.
Eno potrditveno polje ohrani virtio
V vmesniku pfSense pot Sistem, nato Napredno, nato Omrežje vsebuje potrditveno polje z imenom Onemogoči strojni offload kontrolne vsote. Ko ga označite, gost računa kontrolne vsote v programski opremi, kar ustreza temu, kar sklad FreeBSD za pfSense pričakuje od paravirtualne naprave. Dve povezani možnosti na isti strani pokrivata strojni offload segmentiranja TCP in strojni offload velikega sprejema. Zasezite po njih, ko rokovanja uspejo, veliki prenosi pa ne.
Pustite omrežno kartico kot virtio, medtem ko izvajate spremembo. Prehod na E1000 kuri procesor pri vsakem paketu ves čas življenja VM in skriva konfiguracijsko težavo pred vsakomer, ki bo podedoval gostitelja, kar je slabša menjava kot nekoliko počasnejša, a predvidljiva podatkovna pot.
Izmerite stroške, ki ste jih pravkar sprejeli
Programski izračun kontrolnih vsot premakne delo v gosta, zato pozneje izmerite prepustnost, namesto da predpostavljate, da nič ne stane. Na majhni VM je kazen resnična, a je vidna in stabilna, za razliko od tihe izgube. Primerjajte števce napak vmesnika in dnevnik jedra gosta pred in po. Hipervizor, ki filtrira most, je ločena napaka z drugimi dokazi in nobena zastavica offloada je ne bo pozdravila.
Spremenite eno stvar na test in zapišite pot v meniju, označeno polje in izmerjeno število. Kdor se bo soočil z naslednjim obnovljenim gostom, bo hotel vse tri.
Drugi požarni zidovi, ki temeljijo na BSD, ponujajo enakovreden nadzor v svojih nastavitvah vmesnika, zato sklepanje velja tudi, ko pot v meniju ne.