У меня 3 QEMU-KVM VM работают на хосте Ubuntu. Каждая виртуальная машина имеет один виртуальный компьютер и соединена мостом br0 в ОС хоста. MTU каждой сетевой карты настроен на 1500. Эта платформа запускает приложение на основе очереди сообщений: одна виртуальная машина в качестве производителя, одна виртуальная машина в качестве сервера очереди сообщений и последняя виртуальная машина в качестве потребителя.
Моя проблема: когда гостевые виртуальные машины становятся занятыми, виртуальная машина сервера очереди сообщений может иногда отправлять пакеты размером 2k, 4k или 5k. Это превышает значение MTU сетевой карты, 1500 !!! Насколько я знаю, стек IP Linux должен перед отправкой обрезать IP-фрагменты, размер которых меньше MTU. Почему эта виртуальная машина отправляет большой пакет, когда она занята?
Ниже представлена архитектура платформы:
[w2: celery caller (message queue producer) ]
| (messages in TCP)
V
[w3: rabbitmq server]
| (messages in TCP)
V
[w4: celeryd (message queue consumer)]
Ниже показан снимок экрана на w3, MTU составляет 1500 и отправляет пакет размером> 2000
Ниже приведен снимок экрана на w4, MTU составляет 1500 и принимает пакет размером> 2000