pfSense kwenye Virtio: TCP inakwama hadi offload izimwe
pfSense iliyowekwa kwenye mashine pepe hujibu ping kisha inakwama kwenye TCP kubwa. Zima njia ya offload ya checksum ya virtio na upime gharama badala ya kubadilisha kadi ya mtandao.
Mteja anaripoti kuwa handaki inaunganisha, ping inajibu, ukurasa wa kuingia unapakiwa, na kisha uhamishaji unaganda mahali pale pale katika kila jaribio. Mtindo huo unasema mengi tayari: ufikivu unafanya kazi na uwezo endelevu wa kupitisha data haufanyi. Kabla ya kufungua firewall, tambua kama VPN inashiriki kabisa katika hitilafu hiyo. Pitisha TCP kubwa kupitia lango hilohilo bila handaki kwenye njia; ikiwa hiyo pia inaganda, OpenVPN haikuwa imehusika kamwe.
Mgeni wa pfSense anayetumia kadi ya mtandao ya virtio ana sababu nzuri sana ya kushindwa kwa umbo hilo hasa.
Pakiti ndogo hupita, TCP kubwa huning’inia
Kupeana mikono, majibu ya DNS na mwangwi wa ICMP ni ndogo na kwa kawaida hupita. Uhamishaji endelevu hulazimisha mgeni kugawanya, na hapo ndipo njia ya offload iliyoharibika inaonekana. Hitilafu haihitaji kuwa ya ulinganifu: trafiki inayotoka inaweza kuwa safi wakati inayoingia inashuka, au kinyume chake, hivyo mtumiaji anaweza kuingia kisha akakwama kwenye jibu kubwa la kwanza. Kwa kuwa mteja huyohuyo anafanya kazi kupitia lango lingine, kosa huwekwa kwenye sehemu mpya zaidi.
Kwa hiyo jaribu lango bila handaki. Upakuaji kutoka LAN kwenda WAN ulio mkubwa vya kutosha kudumu sekunde chache unatosha, na unapaswa kufanywa kabla ya mabadiliko yoyote ya mipangilio ili ulinganisho wa baadaye uwe na maana.
Offload inaahidi nini kwa kweli
virtio ni paravirtual: mwenyeji na mgeni wanagawana kazi, mwenyeji hutangaza uwezo wa checksum na ugawaji na hutegemea mgeni kumaliza alichoanza. Ikiwa mrundikano wa mgeni haufanyi hivyo, fremu zinatoka na checksum zisizokamilika au mwenyeji huzitupa. E1000 inayoigwa hutoa mtindo rahisi na wa polepole zaidi ambapo tatizo hupotea bila mabadiliko hata moja kwenye pfSense. Majadiliano ya uwezo hufanyika kwa kila kifaa, jambo linaloeleza kwa nini mgeni mmoja hufanya kazi miezi mingi wakati pacha wake aliyejengwa upya hushindwa siku ya kwanza.
Seti iliyojadiliwa inategemea toleo la hypervisor na mtindo wa kadi ya mtandao uliochaguliwa, si tu usanidi uliouleta.
Kisanduku kimoja cha kuchagua kinahifadhi virtio
Katika kiolesura cha pfSense, Mfumo kisha Kina kisha Mtandao kina kisanduku cha kuchagua kinachoitwa Zima offload ya checksum ya maunzi. Unapokichagua, mgeni hukokotoa checksum katika programu, jambo linalolingana na kile mrundikano wa FreeBSD nyuma ya pfSense unatarajia kutoka kwa kifaa paravirtual. Chaguo mbili zinazohusiana kwenye ukurasa huo huo zinashughulikia offload ya ugawaji wa TCP wa maunzi na offload ya upokeaji mkubwa wa maunzi. Waelekee wakati kupeana mikono kunafanikiwa lakini uhamishaji mkubwa haufanikiwi.
Acha kadi ya mtandao iwe virtio unapofanya mabadiliko. Kubadilika kwenda E1000 huchoma CPU kwenye kila pakiti kwa muda wote wa uhai wa VM na huficha tatizo la usanidi kutoka kwa yeyote anayerithi mwenyeji, jambo ambalo ni biashara mbaya zaidi kuliko njia ya data iliyopungua kasi kidogo lakini inayotabirika.
Pima gharama uliyokubali hivi punde
Checksum ya programu huhamishia kazi ndani ya mgeni, kwa hiyo pima uwezo wa kupitisha data baadaye badala ya kudhani haigharimu chochote. Kwenye VM ndogo adhabu ni ya kweli, lakini inaonekana na ni thabiti, tofauti na upotevu wa kimya. Linganisha vihesabu vya hitilafu vya kiolesura na kumbukumbu ya kerneli ya mgeni kabla na baada. Hypervisor inayochuja daraja ni hitilafu tofauti yenye ushahidi mwingine, na hakuna bendera ya offload itakayoiponya.
Badilisha kitu kimoja kwa jaribio na uandike njia ya menyu, kisanduku ulichochagua na nambari uliyoipima. Yeyote atakayekabiliana na mgeni anayejengwa upya atahitaji vyote vitatu.
Firewall nyingine zenye msingi wa BSD hutoa udhibiti sawa chini ya mipangilio yao ya kiolesura, kwa hiyo hoja hiyo inasafiri hata wakati njia ya menyu haisafiri.