FedoraMD > создание устройств openvswitch для работы с libvirt

создание устройств openvswitch для работы с libvirt

2015-11-17 19:06 | Автор: jekader | Рубрика: FedoraMD, Jekader

По долгу службы столкнулся с openvswitch, известным также под аббревиатурой OVS. Технология показалась мне интересной, но в продуктах где она используется (OpenStack Neutron, OpenShift v3) есть довольно сложные системы SDN использующие OVS. Мне-же хотелось просто получить устройство, которым напрямую может пользоваться libvirt. Это оказалось довольно просто, так что решил записать это кратенько в статье.

1) Устанавливаем софт
Debian:
# apt-get install openvswitch-switch
RHEL7:
# yum install openvswitch

2) Настраиваем интерфейс br1 со статическим IP (сеть будет изолированная и внутри неё я установлю DHCP сервер):
Debian ( /etc/network/interfaces )
allow-ovs br1
iface br1 inet static
address 192.168.223.3
netmask 255.255.255.0
ovs_type OVSBridge

RHEL7 ( /etc/sysconfig/network-scripts/ifcfg-br1 )
DEVICE=br1
ONBOOT=yes
NETBOOT=yes
IPV6INIT=no
BOOTPROTO=none
IPADDR=192.168.223.3
NETMASK=255.255.255.0
DEVICETYPE=ovs
TYPE=OVSBridge

3) Перезапускаем сеть и видим новый интерфейс в системе, который выглядит как самый обычный linux bridge но на самом деле таковым не является:
# brctl show br1
bridge name bridge id STP enabled interfaces
br1 can't get info Operation not supported

ошибка!

Свойства устройства можно увидеть при помощи команды ovs-vsctl:
# ovs-vsctl show
b2747851-d121-45e5-8e6f-342ca0b370eb
Bridge "br1"
Port "br1"
Interface "br1"
type: internal
ovs_version: "2.3.0"

4) теперь можно добавить виртуальную машину на этот виртуальный свитч, для чего нужно добавить/изменить XML машины следующим образом:

<interface type='bridge'>
<mac address='52:54:00:01:23:45'/>
<source bridge='br1'/>
<virtualport type='openvswitch'/>
<model type='e1000'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>

Жирным отмечены интересующие нас параметры - название bridge к которому цепляться и тип драйвера

Запустив виртуалку видим новое устройство:
# ovs-vsctl show
daa6e9a1-410f-46e5-bfd8-feb263776263
Bridge "br1"
Port "br1"
Interface "br1"
type: internal
Port "vnet1"
Interface "vnet1"
ovs_version: "2.3.0"

В данном случае получился изолированный сетевой коммутатор на котором висит одна виртуальная машина. По функциональности это решение не отличается от обычного linux bridge, однако OVS умеет гораздо больше, так как поддерживает OpenFlow, VXLAN, GRE и многие другие функции, позволяющие развернуть "умный" распределённый коммутатор.

1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
Loading ... Loading ...

Метки: , ,

Комментарии (4) »


Количество комментариев: 4

  1. DyaDya:

    Отличная статья, зно у меня есть вопрос. А можно ли сделать его как то провайдером в оVirt. Что бы виртуалки не выводит на коммутатор, а соединять их внутри гипервизора.

  2. jekader:

    Пока это только в планах:
    http://www.ovirt.org/Features/Node/OpenVSwitchSupport

    ещё в 3.4 была добавлена интеграция с OpenStack Newtron, но я не уверен поддерживается-ли там OVS или только сети VLAN:
    http://www.ovirt.org/Features/OSN_Integration

  3. Игорь:

    Интерсная статья, а можно vlan просовывать в виртуалку? эм получается vlan поднимаем в виртуалкe и он транзитом через гипер визер ходит на управляшку хардварную? ну типо как это сделано в vmware exsi. Vlan поднимаем не на гипервизере а именно в виртуалке.

  4. jekader:

    не пробовал, не вижу особого смысла иметь на одном интерфейсе виртуалки несколько VLAN’ов – проще несколько интерфейсов или несколько виртуалок. На физических машинах я ещё понимаю – мало портов сетевых. Но ведь на виртуалках этих ограничений нет…

Оставить комментарий