pfSense на Virtio-у: TCP застаје док се offload не искључи
Виртуализовани pfSense одговара на ping и затим застаје на обимном TCP-у. Искључите virtio путању за offload контролне суме и измерите цену уместо да замените мрежну картицу.
Клијент пријављује да се тунел повезује, ping одговара, страница за пријаву се учитава, а пренос затим замрзне на истом месту при сваком покушају. Тај образац већ много говори: доступност ради, а трајна пропусност не. Пре него што отворите заштитни зид, утврдите да ли VPN уопште учествује у квару. Пошаљите велики TCP кроз исти gateway без тунела на путу; ако се и он замрзне, OpenVPN никада није био укључен.
pfSense гост са virtio мрежном картицом има врло добар разлог да падне управо у том облику.
Мали пакети пролазе, обимни TCP се заглављује
Руковања, DNS одговори и ICMP одјеци су мали и обично пролазе. Трајни преноси присиљавају госта на сегментирање, а управо ту се појављује оштећена путања offload-а. Квар не мора бити симетричан: одлазни саобраћај може бити чист док долазни пада, или обрнуто, па корисник може да се пријави и затим заглави на првом великом одговору. Будући да исти клијент ради кроз други gateway, кривица пада на најновију компоненту.
Зато тестирајте gateway без тунела. Преузимање са LAN-а на WAN довољно велико да траје неколико секунди је довољно, а мора се обавити пре било какве промене подешавања да би касније поређење нешто значило.
Шта offload заправо обећава
virtio је паравиртуални: хост и гост деле посао, хост објављује могућности контролне суме и сегментирања и очекује да гост заврши оно што је започео. Ако гост-ов стек то не чини, оквири излазе са непотпуним контролним сумама или их хост одбацује. Емулирани E1000 нуди једноставнији и спорији модел у којем проблем нестаје без иједне промене у pfSense-у. Преговарање о могућностима одвија се по уређају, што објашњава зашто један гост ради месецима а његов обновљени близанац падне првог дана.
Преговарани скуп зависи од верзије хипервизора и изабраног модела мрежне картице, а не само од конфигурације коју сте увели.
Један оквир задржава virtio
У pfSense сучељу, Систем па Напредно па Умрежавање садржи оквир под називом Онемогући хардверски offload контролне суме. Његовим означавањем гост рачуна контролне суме у софтверу, што одговара ономе што FreeBSD стек иза pfSense-а очекује од паравиртуалног уређаја. Две повезане опције на истој страници покривају хардверски TCP offload сегментирања и хардверски offload великог пријема. Посегните за њима када руковања успеју а обимни преноси не.
Оставите мрежну картицу као virtio док правите промену. Прелазак на E1000 сагорева CPU на сваком пакету цео животни век VM-а и скрива конфигурацијски проблем од свакога ко наследи host, што је лошија трговина од нешто споријег али предвидивог пута података.
Измерите цену коју сте управо прихватили
Софтверско израчунавање контролних сума премешта посао у госта, па након тога измерите пропусност уместо да претпоставите да ништа не кошта. На малом VM-у казна је стварна, али је видљива и стабилна, за разлику од тихог губитка. Упоредите бројаче грешака сучеља и kernel log госта пре и после. Хипервизор који филтрира мост је засебан квар са другачијим доказима и ниједна offload заставица га неће излечити.
Мењајте једну ствар по тесту и запишите путању менија, оквир који сте означили и број који сте измерили. Ко се суочи са следећим обновљеним гостом, тражиће све три.
Други firewall-и засновани на BSD-у нуде еквивалентну контролу у властитим подешавањима сучеља, па се закључивање преноси и када путања менија не.