pfSense на Virtio: TCP замірае, пакуль не выключаць разгрузку
Віртуалізаваная pfSense адказвае на пінгі, а затым замірае на вялікіх TCP-патоках. Выключыце шлях разгрузкі кантрольных сум virtio і вымерайце кошт замест замены сеткавай карты.
Кліент паведамляе, што тунель падключаецца, пінг адказвае, старонка ўваходу загружаецца, а затым перадача замірае ў адным і тым жа месцы пры кожнай спробе. Гэтая карціна ўжо шмат кажа: дасягальнасць працуе, а ўстойлівая прапускная здольнасць — не. Перш чым адкрываць міжсеткавы экран, высветліце, ці ўдзельнічае VPN у збоі наогул. Прапусціце вялікі TCP праз той жа шлюз без тунеля на шляху; калі ён таксама замірае, OpenVPN ніколі не ўдзельнічаў.
Госць pfSense з сеткавай картай virtio мае вельмі добрую прычыну збаўляць менавіта ў такой форме.
Дробныя пакеты праходзяць, вялікі TCP завісае
Рукапацісканні, адказы DNS і рэха ICMP дробныя і звычайна праходзяць. Устойлівыя перадачы прымушаюць госця сегментаваць, і менавіта тут выяўляецца пашкоджаны шлях разгрузкі. Збой не абавязаны быць сіметрычным: зыходны трафік можа быць чыстым, пакуль уваходны страчваецца, або наадварот, таму карыстальнік можа ўвайсці, а затым завіснуць на першым вялікім адказе. Паколькі той жа кліент працуе праз іншы шлюз, віна кладзецца на найноўшы кампанент.
Таму праверце шлюз без тунеля. Спампоўкі з лакальнай сеткі ў глабальную, дастаткова доўгай, каб працаваць некалькі секунд, хопіць, і яе трэба зрабіць да любых змяненняў налад, каб параўнанне пасля мела сэнс.
Што разгрузка насамрэч абяцае
virtio — паравіртуальны: хост і госць дзеляць працу, хост абвяшчае магчымасці кантрольных сум і сегментацыі і чакае, што госць закончыць пачатае. Калі стэк госця гэтага не робіць, кадры сыходзяць з няпоўнымі кантрольнымі сумамі або адкідваюцца хостам. Эмуляваная E1000 прапануе прасцейшую і павольнейшую мадэль, у якой праблема знікае без адзінага змянення ў pfSense. Перамовы пра магчымасці адбываюцца для кожнай прылады, што тлумачыць, чаму адзін госць працуе месяцы, а яго пераствораны блізнюк збаўляе ў першы дзень.
Узгоднены набор залежыць ад версіі гіпервізара і абранай мадэлі сеткавай карты, а не толькі ад канфігурацыі, якую вы імпартавалі.
Адзін сцяжок захоўвае virtio
У інтэрфейсе pfSense раздзел Сістэма, затым Дадаткова, затым Сетка змяшчае сцяжок з назвай Адключыць апаратную разгрузку кантрольных сум. Калі яго ўсталяваць, госць вылічвае кантрольныя сумы праграмна, што адпавядае таму, што стэк FreeBSD за pfSense чакае ад паравіртуальнай прылады. Дзве звязаныя опцыі на той жа старонцы ахопліваюць апаратную разгрузку сегментацыі TCP і апаратную разгрузку вялікага прыёму. Звярніцеся да іх, калі рукапацісканні ўдаюцца, а вялікія перадачы — не.
Пакіньце сеткавую карту virtio, робячы змяненне. Пераход на E1000 спальвае працэсар на кожным пакеце ўвесь час жыцця ВМ і хавае праблему канфігурацыі ад таго, хто атрымае хост у спадчыну, а гэта горшы абмен, чым крыху павольнейшы, але прадказальны шлях даных.
Вымерайце кошт, які вы толькі што прынялі
Праграмнае вылічэнне кантрольных сум пераносіць працу ў госця, таму вымерайце прапускную здольнасць пасля, замест таго каб меркаваць, што гэта нічога не каштуе. На невялікай ВМ штраф рэальны, але ён бачны і стабільны, у адрозненне ад маўклівай страты. Параўнайце лічыльнікі памылак інтэрфейса і журнал ядра госця да і пасля. Гіпервізар, які фільтруе мост, — гэта асобны збой з іншымі доказамі, і ніякі сцяжок разгрузкі яго не вылечыць.
Змяняйце адну рэч за тэст і запісвайце шлях меню, сцяжок, які вы ўсталявалі, і лік, які вы вымералі. Хто сутыкнецца з наступным пераствораным госцем, захоча ўсе тры.
Іншыя міжсеткавыя экраны на базе BSD прапануюць эквівалентнае кіраванне ў сваіх наладах інтэрфейса, таму разважанне пераносіцца, нават калі шлях меню — не.