Странная производительность с адаптером VirtIO в гостевой Linux
Я боролся с очень странным поведением с помощью адаптера VirtIO для гостей Linux KVM. Во-первых, мои настройки:
Хост KVM представляет собой коробку CentOS 6.8. Гости используют CentOS 7. Первоначально адаптеры были подключены к мосту хоста, хотя я изменил виртуальную сеть на настройку OVS, а гости подключились к мосту OVS.
Все гости Linux живут на мосту OVS "internalbr1", который не связан с интерфейсом хоста. Вместо этого трафик поступает в шлюз локальной сети 10.255.0.1, который является интерфейсом локальной сети виртуальной машины PFSense, которая отправляет его через сквозной интерфейс на хосте. По сути, мост OVS "internalbr1" действует как коммутатор между гостевой и межсетевой экранами локальной сети.
Изначально у гостей был адаптер e1000, но из-за проблем со скоростью (снижение скорости до 100 Кб во время загрузки) я хочу переключиться на VirtIO. Есть Windows Guest (2012), работающая с адаптером VirtIO (видела ту же проблему e1000. На мосту с интерфейсом хоста), и она работает отлично. Все гости Linux могут без проблем работать с ping, пытаясь получить веб-страницы с помощью wget, очень медленно, а команды yum возвращаются с "No route to host", даже если ping к репозиториям yum работает очень хорошо.
Я в растерянности от того, что происходит, и поиск в Google не помогает. Кто-нибудь еще сталкивался с подобной проблемой раньше?
Обновить
Обнаружил, что это все-таки брандмауэр PfSense, а не VirtIO (ну частично). После некоторого перехвата пакетов на брандмауэре я обнаружил неверные контрольные суммы оставленных пакетов. Я обнаружил, что это иногда проблема с разгрузкой контрольной суммы оборудования. Я отключил аппаратную разгрузку контрольной суммы и все стало работать так, как должно. Я предполагаю, что адаптер VirtIO не может выполнять разгрузку контрольной суммы оборудования (по крайней мере, с моими версиями). Это также объясняет, почему я не вижу проблем с адаптером e1000.
Я надеюсь, что это поможет кому-то в будущем.