Open vSwitch под Gentoo
Джентльмены,
Поставил Open vSwitch на свежеобновлённой Gentoo стабильной версии по статьям:
QEMU with Open vSwitch network
Open vSwitch: cоединяй и властвуй
Увы, заставить это чудо работать не удаётся. А именно, средствами ovs-vsctl не создаются в системе работоспособные устройства tap*
Просьба поделиться успешным опытом внедрения.
Первый сценарий:
Создаю свитч стандартным образом:
ovs-vsctl add-br vbr0 ovs-vsctl add-port vbr0 eth1 ovs-vsctl add-port vbr0 tap2 ovs-ofctl mod-port vbr0 vbr0 up ovs-ofctl mod-port vbr0 eth1 up
В результате:
# ovs-vsctl show
5d7e7234-3757-4275-be2c-6a5ea34b68d1
Bridge "vbr0"
Port "eth1"
Interface "eth1"
Port "tap2"
Interface "tap2"
Port "vbr0"
Interface "vbr0"
type: internal
# ifconfig tap2 up tap2: ERROR while getting interface flags: No such device
В таком случае виртуалке QEMU даже не к чему цепляться - она просто не видит устройства tap2
Второй сценарий, где tap2 имеет уже тип internal:
ovs-vsctl add-br vbr0 ovs-vsctl add-port vbr0 eth1 ovs-vsctl add-port vbr0 tap2 -- set interface tap2 type=internal ovs-ofctl mod-port vbr0 vbr0 up ovs-ofctl mod-port vbr0 eth1 up
Результат:
# ovs-vsctl show
5d7e7234-3757-4275-be2c-6a5ea34b68d1
Bridge "vbr0"
Port "tap2"
Interface "tap2"
type: internal
Port "eth1"
Interface "eth1"
Port "vbr0"
Interface "vbr0"
type: internal
# ifconfig tap2 up
В этот раз устройство присутствует в системе:
# ifconfig tap2
tap2: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
ether 7e:6f:a1:6e:fd:30 txqueuelen 0 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
Стартую QEMU и получаю сообщение об ошибке:
qemu-kvm: -net tap,ifname=tap2,script=no: could not configure /dev/net/tun (tap2): Invalid argument qemu-kvm: -net tap,ifname=tap2,script=no: Device 'tap' could not be initialized
Проверены и перепроверены: параметры ядра, USE флаги QEMU. Поисковики упорно молчат по всем описанным проблемам.
При этом сам QEMU замечательно работает как на чистом бридже через созданные стандартными средствами устройства tap так и через VDE switch. По ряду причин оба решения не подходят для постоянного использования - нужен именно vSwich.
Подскажите, пожалуйста, где была допущена ошибка?
С уважением,
Денис.
- Для комментирования войдите или зарегистрируйтесь

Нашлось решение проблемы.
1. Была допущена ошибка в параметрах запуска виртуалки. Правильно так:
2. Виртуальные машины запускались из-под пользователя с ограниченными правами. Решить проблему удалось следующим образом:
Создать файл /etc/udev/rules.d/60-tun.rules со строкой:
И установкой Capabilities для работы с устройством /dev/net/tun
Подробности в статьях:
"Управляем привилегиями приложений с помощью Capabilities"
"could not configure /dev/net/tun: Operation not permitted"