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. Была допущена ошибка в параметрах запуска виртуалки. Правильно так:

 -net nic,model=virtio,macaddr=08:00:27:16:74:CE,vlan=0 -net tap,vlan=0,ifname=tap0,script=no \
 -net nic,model=virtio,macaddr=08:00:27:16:73:CE,vlan=1 -net tap,vlan=1,ifname=tap1,script=no \

2. Виртуальные машины запускались из-под пользователя с ограниченными правами. Решить проблему удалось следующим образом:

Создать файл /etc/udev/rules.d/60-tun.rules со строкой:

KERNEL=="tun", NAME="net/%k", GROUP="virtgroup", MODE="0660", OPTIONS+="ignore_remove"

И установкой Capabilities для работы с устройством /dev/net/tun

setcap CAP_NET_ADMIN=ep /usr/bin/qemu-system-x86_64

Подробности в статьях:
"Управляем привилегиями приложений с помощью Capabilities"
"could not configure /dev/net/tun: Operation not permitted"

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".