Метки
amd bittorrent bug centos debian enlightenment fedora fedora 8 fedora 9 fedora 10 fedora 11 fedora 12 fedora 13 fedora 15 fedora 16 FedoraMD fglrx firefox flash player gnome google intel interview java kde kernel linux livecd migrate moldova nvidia openoffice OpenStreetMap opera Orange ovirt radeon red hat rpmfusion Sandel skype video virtualisation vmware wine
создание устройств openvswitch для работы с libvirt
2015-11-17 19:06 | Автор: jekader | Filed under: 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 и многие другие функции, позволяющие развернуть "умный" распределённый коммутатор.
Метки: libvirt, openvswitch, ovs
11, 2015 8:11
Отличная статья, зно у меня есть вопрос. А можно ли сделать его как то провайдером в оVirt. Что бы виртуалки не выводит на коммутатор, а соединять их внутри гипервизора.
13, 2015 13:53
Пока это только в планах:
http://www.ovirt.org/Features/Node/OpenVSwitchSupport
ещё в 3.4 была добавлена интеграция с OpenStack Newtron, но я не уверен поддерживается-ли там OVS или только сети VLAN:
http://www.ovirt.org/Features/OSN_Integration
19, 2016 19:10
Интерсная статья, а можно vlan просовывать в виртуалку? эм получается vlan поднимаем в виртуалкe и он транзитом через гипер визер ходит на управляшку хардварную? ну типо как это сделано в vmware exsi. Vlan поднимаем не на гипервизере а именно в виртуалке.
20, 2016 12:02
не пробовал, не вижу особого смысла иметь на одном интерфейсе виртуалки несколько VLAN’ов — проще несколько интерфейсов или несколько виртуалок. На физических машинах я ещё понимаю — мало портов сетевых. Но ведь на виртуалках этих ограничений нет…