создание устройств 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 и многие другие функции, позволяющие развернуть "умный" распределённый коммутатор.

    1 Star2 Stars3 Stars4 Stars5 Stars (No Ratings Yet)
    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’ов — проще несколько интерфейсов или несколько виртуалок. На физических машинах я ещё понимаю — мало портов сетевых. Но ведь на виртуалках этих ограничений нет…

    Leave a comment

    *