Как отлаживать программу openvswitch, такую как программа модулей ядра в среде виртуальной машины?

Я работаю над проектом типа openvswitch - модулем ядра Linux, который взаимодействует с различными сетевыми интерфейсами.

Вы можете привязать к модулю некоторые сетевые интерфейсы (например eth0, eth1), а затем пакет, полученный с интерфейсов, будет обрабатываться модулем ядра (он может изменить заголовок пакета и отправить пакет из другого интерфейса привязки).

В среде виртуальной машины я могу легко выполнять работу по разработке (программирование пространства ядра часто приводит к сбою машины), но я вряд ли могу выполнить работу по тестированию. Трудно отправить конкретный пакет в конкретный интерфейс vm. Есть ли простой способ для этого?

1 ответ

Используйте средство генерации трафика, такое как Scapy, на вашем гипервизоре, чтобы отправлять трафик на виртуальные сетевые карты, подключенные к вашей виртуальной машине. С qemu/libvirt эти интерфейсы обычно появляются как "vnet0", "vnet1" и т.д.

Не используйте мосты, но отправляйте трафик непосредственно на vnic. Мосты Linux хорошо переносят IP-трафик, но не пропускают каждый Ethernet-порт через немодифицированный.

licensed under cc by-sa 3.0 with attribution.