Показ дописів із міткою OpenVSwitch. Показати всі дописи
Показ дописів із міткою OpenVSwitch. Показати всі дописи

пʼятниця, 1 квітня 2016 р.

Налаштування зв'язки інтерфейсів EtherChannel за допомогою OpenVSwitch

Попередня публікація на тему використання OpenVSwitch: OpenVSwitch в системі CentOS7: базові налаштування

Вступ

Зв'язка (bundle) інтерфейсів EtherChannel являє собою сумісне використання Ethernet інтерфейсів з метою отримання нового віртуального інтерфейсу, який має наступні ознаки:

а) пропускна здатність, що приблизно дорівнює сумі інтерфейсів, що надходять зо зв'язки,
б) стійкість до відмови окремих інтерфейсів зв'язки.

Для динамічного конфігурування інтерфейсу EtherChannel пристрої, з'єднані через інтерфейси зв'язки, взаємодіють за протоколом Link Aggregation Control Protocol (LACP).

Задача

Розглянемо налаштування інтерфейсу EtherChannel в системі, в якій встановлено віртуальний комутатор OpenVSwitch. Для прикладу уявимо систему CentOS Linux з двома інтерфейсами GigabitEthernet -- ge0, ge1, та двома інтерфейсами 10GigabitEthernet -- te0, te1:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: te0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP qlen 1000
    link/ether 14:18:77:30:64:fe brd ff:ff:ff:ff:ff:ff
    inet6 fe80::1618:77ff:fe30:64fe/64 scope link
       valid_lft forever preferred_lft forever
3: te1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq master ovs-system state UP qlen 1000
    link/ether 14:18:77:30:65:00 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::1618:77ff:fe30:6500/64 scope link
       valid_lft forever preferred_lft forever
4: ge0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 14:18:77:30:65:02 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.10/24 brd 192.168.1.255 scope global ge0
       valid_lft forever preferred_lft forever
    inet6 fe80::1618:77ff:fe30:6502/64 scope link
       valid_lft forever preferred_lft forever
5: ge1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 14:18:77:30:65:04 brd ff:ff:ff:ff:ff:ff

Дану систему планується використовувати як носій для віртуальних машин (ВМ). Інтерфейс ge0 використовуватиметься виключно для керування носієм. Інтерфейс ge1 залишається резервним, його можна використовувати, наприклад, для аналізу трафіку на портах комутатора за технологією віддзеркалювання портів (port mirroring). Інтерфейси te0 та te1 використовуватимуться для передачі трафіку ВМ. Для отримання великої пропускної здатності та відмовостійкості інтерфейсів (оптичні з'єзнання 10GigabitEthernet характеризуються нижчою механічною надійністю ніж мідні з'єднання GigabitEthernet) інтерфейси te0 та te1 об'єднуються у зв'язку EtherChannel.

Налаштування EtherChannel

Для використання OpenVSwitch створюється базовий міст ovsbridge0, що, фактично, є віртуальним аналогом звичайного комутатора:

# ovs-vsctl --may-exist add-br ovsbridge0
# ip link set ovsbridge0 up
# ip addr show ovsbridge0
7: ovsbridge0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
    link/ether 96:34:45:9c:6e:4e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::9434:45ff:fe9c:6e4e/64 scope link
       valid_lft forever preferred_lft forever

Створюємо віртуальний інтерфейс EtherChannel -- bond0, з яким пов'язуємо фізичні інтерфейси te0 та te1:

ovs-vsctl --may-exist add-bond ovsbridge0 bond0 te0 te1

Слід зазначити, що інтерфейс bond0 не з'являється поруч з іншими інтерфейсами, які можна побачити, наприклад, за допомогою команди "ip addr show". З інтерфейсом bond0 оперує OpenVSwitch:

# ovs-vsctl show
8f777f14-8698-4e0e-b48c-38aed81a1a76
    Bridge "ovsbridge0"
        Port "bond0"
            Interface "te0"
            Interface "te1"

На EtherChannel інтерфейсі налаштовується протокол LACP та метод балансування трафіку типу TCP:

# ovs-vsctl set port bond0 bond_mode=balance-tcp \
    other-config={bond-detect-mode=miimon bond-miimon-interval=100} \
    lacp=active

Взагалі, OpenVSwitch підтримує три можливі типи балансування трафіку через з'єднання EtherChannel:

  • balance−slb -- балансування по MAC-адресах і номерах VLAN джерела (source) з періодичним коригуванням розподілу потоків (flows) між фізичними з'єднаннями на випадок зміни характеру трафіку
  • active−backup -- передача всіх потоків через основне (active) фізичних з'єднань та у випадку виходу цього з'єднання з ладу перенесення потоків на резервне (backup) з'єднання
  • balance−tcp -- балансування по інформації з L2, L3 та L4 протоколів, зокрема, по MAC- та IP-адресах та номеру порту TCP призначення (destination)

Метод balance−slb використовується за замовченням. Метод active−backup єдиний дозоляє під'єднувати фізичні інтерфейси, що пов'язані в EtherChannel, до різних комутаторів. Метод balance−tcp вимагає підтримки LACP відповідно стандарту IEEE 802.3ad на комутаторі, з яким створюється з'єднання EtherChannel.

Примітка: я не знайшов чіткої розшифровки скорочення SLB. Найбільш вірогідною мені здається "Switch-assisted Load Balancing".

Як було зазначено раніше, окрім збільшення пропускної здатності технологія EtherChannel дозволяє забезпечити відмовостійкість на випадок виходу з ладу окремих фізичних з'єднань. Налаштування відмовостійкості здійснюється наступними основними параметрами:

  • other_config : bond-detect-mode -- спосіб визначення відмови фізичного з'єднання, можливі значення:
    • carrier -- покладання на наявність сигнал з частотою носія (carrier) в інтерфейсі, використовується за замовченням
    • miimon -- опитування модуля інтерфейсу незалежного від середовища, Media Independent Interface (MII)
  • other_config : bond-miimon-interval -- інтервал в мілісекундах між успішними опитуваннями інтерфейсу MII; умісний лише у випадку використання способу визначення відмови фізичного з'єднання miimon
Для включення протоколу LACP на з'єднання EtherChannel використову'ється параметр lacp -- режим функціювання EtherChannel згідно LACP. Можливі значення параметру:
    • active -- ініціювання та підтримка LACP взаємодії
    • passive -- підтримка LACP взаємодії, якщо її ініціює пристрій-партнер
    • off -- вимкнення LACP взаємодії

Примітка: окрім зазначених параметрів для тонкого налаштування EtherChannel та протоколу LACP можуть бути використана низка додаткових параметрів.

Створений інтерфейс EtherChannel переводимо в режим VLAN транку (trunk) та додаємо список VLAN, які дозволено передавати:

ovs-vsctl set port bond0 vlan_mode=trunk trunks=10,20,30

Для перегляду стану сформованого з'єднання EtherChannel використовуємо наступні команди:

ovs-vsctl list port bond0
_uuid               : 50620062-c457-4c70-b3c7-66de0d27fb0c
bond_active_slave   : "14:18:77:30:65:00"
bond_downdelay      : 0
bond_fake_iface     : false
bond_mode           : balance-tcp
bond_updelay        : 0
external_ids        : {}
fake_bridge         : false
interfaces          : [741f5d85-bafc-4add-b3bc-580f90f27b2e, 78d25b6b-7a42-4b76-be60-04aed46b8555]
lacp                : active
mac                 : []
name                : "bond0"
other_config        : {bond-detect-mode=miimon, bond-miimon-interval="100"}
qos                 : []
rstp_statistics     : {}
rstp_status         : {}
statistics          : {}
status              : {}
tag                 : []
trunks              : [10, 20, 30]
vlan_mode           : trunk

# ovs-appctl bond/show
---- bond0 ----
bond_mode: balance-tcp
bond may use recirculation: yes, Recirc-ID : 2
bond-hash-basis: 0
updelay: 0 ms
downdelay: 0 ms
next rebalance: 9565 ms
lacp_status: negotiated
active slave mac: 14:18:77:30:65:00(te1)

slave te0: enabled
        may_enable: true

slave te1: enabled
        active slave
        may_enable: true

# ovs-appctl lacp/show
---- bond0 ----
        status: active negotiated
        sys_id: 14:18:77:30:64:fe
        sys_priority: 65534
        aggregation key: 1
        lacp_time: slow

slave: te0: current attached
        port_id: 2
        port_priority: 65535
        may_enable: true

        actor sys_id: 14:18:77:30:64:fe
        actor sys_priority: 65534
        actor port_id: 2
        actor port_priority: 65535
        actor key: 1
        actor state: activity aggregation synchronized collecting distributing

        partner sys_id: f8:b1:56:83:8a:81
        partner sys_priority: 1
        partner port_id: 49
        partner port_priority: 1
        partner key: 210
        partner state: activity aggregation synchronized collecting distributing

slave: te1: current attached
        port_id: 1
        port_priority: 65535
        may_enable: true

        actor sys_id: 14:18:77:30:64:fe
        actor sys_priority: 65534
        actor port_id: 1
        actor port_priority: 65535
        actor key: 1
        actor state: activity aggregation synchronized collecting distributing

        partner sys_id: f8:b1:56:83:8a:81
        partner sys_priority: 1
        partner port_id: 50
        partner port_priority: 1
        partner key: 210
        partner state: activity aggregation synchronized collecting distributing

Альтернативним способом налаштування EtherChannel на OpenVSwitch є створення файлу конфигурації інтерфейсу bond0 -- /etc/sysconfig/network-scripts/ifcfg-bond0:

DEVICE=bond0
NAME=bond0
ONBOOT=yes
DEVICETYPE=OVS
TYPE=OVSBond
OVS_BRIDGE=ovsbridge0
BOOTPROTO=none
BOND_IFACES="te0 te1"
TRUNKS="trunks=10,20,30"
OVS_OPTIONS="bond_mode=balance-tcp"
OVS_OPTIONS+=" other-config:bond-detect-mode=miimon"
OVS_OPTIONS+=" other-config:bond-miimon-interval=100"
OVS_OPTIONS+=" lacp=active vlan_mode=trunk $TRUNKS"

Конфігурація інтерфейсів з боку комутатора, до якого під'єднано інтерфейси, які об'єднано в EtherChannel, може виглядати таким чином (комутатор серії Dell Networking N1500):

interface Te1/0/1 
channel-group 1 mode active
description "CR ETH2"
switchport mode trunk
exit              
!                 
interface Te1/0/2 
channel-group 1 mode active
description "CR ETH3"
exit              
!                 
interface port-channel 1
switchport mode trunk
switchport trunk allowed vlan 10,20,30
exit

Зазначимо, що простіше було б на обох транкових інтерфейсах -- port-channel 1 з боку комутатора та bond0 з боку сервера, дозволити передачу фреймів всіх можливих VLAN -- з 1 по 4096. Проте, так робити не слід, оскільки це невиправдано подовжує широкомовні сегменти, якими є VLAN. Детальніше про те, чому не слід спрощувати конфігурації шляхом дозволу всіх VLAN, можна почитати в прекрасній статті Івана Пепельняка VLANS AND FAILURE DOMAINS REVISITED.

Джерела

субота, 28 листопада 2015 р.

OpenVSwitch в системі CentOS7: базові налаштування

Вступ

OpenVSwitch (OVS) -- це програмне забезпечення з відкритим кодом, яке призначене для створення у системах з віртуалізацією компонента, еквівалентного за функціональністю керованому Ethernet-комутатору. Наразі OVS використовується здебільшого в системах Linux з усіма найпоширенішими гіпервізорами для віртуалізації -- KVM, VirtualBox, Xen.
OVS типово встановлюється на фізичному сервері-носії, що використовується для запуску віртуальних машин, та є альтернативою для використання мостів Linux (Linux bridges), маючи значно ширшу функціональність. OVS також є вдалою альтернативою комерційним продуктам на зразок віртуального комутатора Cisco Nexus 1000V.

В даній статті розглядаються базові дії зі встановлення та налаштування OVS в системі CentOS7, що є вільно поширюваним аналогом комерційної системи RHEL7. У якості гіпервізора для віртуалізації використовується KVM та інструментальний пакет libvirt.

Встановлення

Встановити пакунки, необхідні для збірки 

# yum install gcc libatomic install make python-devel \
    openssl-devel kernel-devel graphviz kernel-debug-devel \
    autoconf automake rpm-build redhat-rpm-config libtool

Завантажити архів з кодом пакунку в домашню теку та разархівувати його:

# cd
# wget http://openvswitch.org/releases/openvswitch-2.4.0.tar.gz
# tar xzvf openvswitch-2.4.0.tar.gz

Покласти копію архіва з кодом в теку /root/rpmbuild/SOURCES:

# mkdir -p /root/rpmbuild/SOURCES
# cp openvswitch-2.4.0.tar.gz /root/rpmbuild/SOURCES

Запустити процес збірки:

# cd openvswitch-2.4.0
# rpmbuild -bb rhel/openvswitch.spec

Встановити RPM-пакунок, який був створений внаслідок збірки:

# yum localinstall /root/rpmbuild/RPMS/x86_64/openvswitch-2.4.0-1.x86_64.rpm

Скопіювати скрипти керування сервісами в належні місця та налаштувати автоматичний запуск сервісу:

# cp rhel/usr_lib_systemd_system_openvswitch-nonetwork.service \
    /usr/lib/systemd/system/openvswitch-nonetwork.service
# cp rhel/usr_lib_systemd_system_openvswitch.service \
    /usr/lib/systemd/system/openvswitch.service
# systemctl enable openvswitch.service

Примітка: для того щоб уникнути проблем з запуском сервісу потрібно відімкнути SELinux.

OVS зберігає свою конфігурацію у власній базі даних, що знаходиться у теці /etc/openvswitch. Щойно встановлений OVS створює пусту базу даних:

# ovs-vsctl show
4a2b3832-7f57-43c8-9e56-b80974d4ea40
    ovs_version: "2.4.0"

Створення базового моста

Застосування OVS здійснюється шляхом створення мостів, які можна порівняти з типовим Ethernet-комутатором -- до нього під’єднуються інтерфейси, налаштовуються 802.1Q VLAN, виконуються процеси Spaning-Tree Protocol (STP), тощо. За звичай на сервері-носії достатньо створити єдиний OVS-міст:

# ovs-vsctl add-br ovsbridge0
# ip link set ovsbridge0 up
# ip addr show ovsbridge0
5: ovsbridge0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 96:34:45:9c:6e:4e brd ff:ff:ff:ff:ff:ff
    inet6 fe80::9434:45ff:fe9c:6e4e/64 scope link 
       valid_lft forever preferred_lft forever
# ovs-vsctl show
...
    Bridge "ovsbridge0"
        Port "ovsbridge0"
            Interface "ovsbridge0"
                type: internal
...

Для коректного поводження системи з мостом ovsbridge0 під час перевантажень системи та перезапусків мережевого сервісу необхідно створення файлу /etc/sysconfig/network-scripts/ifcfg-ovsbridge0 з наступним вмістом:

DEVICE=ovsbridge0
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static

Під’єднання до OVS-моста фізичних інтерфейсів сервера

Для зв’язку з зовнішньою мережею до OVS-моста потрібно під’єднати фізичні інтерфейси сервера-носія. Гарною практикою є виділення одного фізичного інтерфейсу сервера, який не під’єднується до OVS-моста і слугує виключно для доступу до системи носія (батьківської). В результаті у разі можливих помилок з налаштуванням OVS не буде втрачено зв’язок з батьківською системою.

Під’єднання до OVS-моста фізичного інтерфейсу:

# ovs-vsctl add-port ovsbridge0 enp0s3
# ip link set enp0s3 up
# ovs-vsctl show
...
    Bridge "ovsbridge0"
        Port "ovsbridge0"
            Interface "ovsbridge0"
                type: internal
        Port "enp0s3"
            Interface "enp0s3"
...
# ip addr show enp0s3
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UP qlen 1000
    link/ether 08:00:27:5e:db:ba brd ff:ff:ff:ff:ff:ff

Для збереження налаштувань під час перезавантажень сервера та перезапусків мережевого сервісу необхідно створити файл /etc/sysconfig/network-scripts/ifcfg-enp0s3 з наступним вмістом:

NAME=enp0s3
DEVICE=enp0s3
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSPort
OVS_BRIDGE=ovsbridge0
BOOTPROTO=none
HWADDR=08:00:27:5e:db:ba

Примітка:
 якщо ви знехтували порадою про окремий інтерфейс для керування носієм, або на сервері взагалі лише один фізичний інтерфейс, налаштування IP-адреси необхідно перенести з фізичного інтерфейсу на інтерфейс мосту:

# ip addr del 192.168.1.128/24 dev enp0s3
# ip addr add 192.168.1.128/24 dev ovsbridge0
# ip route add default via 192.168.1.1

Відповідно з файлу /etc/sysconfig/network-scripts/ifcfg-enp0s3 до файлу /etc/sysconfig/network-scripts/ifcfg-ovsbridge0 необхідно перенести наступні рядки (чи подібні):

IPADDR=192.168.1.128
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

Зрозуміло, що останні дії виконуються з фізичної консолі носія, оскільки зв’язок з ним через мережу тимчасово буде втрачено.

Під’єднання до OVS інтерфейсів віртуальних машин

У якості посередника між OVS та інтерфейсами віртуальних машин використовуються віртуальні мережі. Для створення вітуальної мережі, пов’язаної з інтерфейсом ovsbridge0, необхідно підготувати, наприклад в своїй домашій теці, XML-файл з іменем, наприклад, mgmt.xml, з наступним вмістом:

<network>
  <name>mgmt</name>
  <forward mode='bridge'/>
  <bridge name='ovsbridge0' />
  <virtualport type='openvswitch'/>
</network>

Використовуючи зазначений XML-файл створюється віртуальна мережа mgmt:

# virsh net-define mgmt.xml
# virsh net-start mgmt
# virsh net-autostart mgmt
# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 mgmt                 active     yes           yes

До створеної мережі може бути під’єднано інтерфейс віртуальної машини:

# virsh list --all
 Id    Name                           State
----------------------------------------------------
  -     vhost                           shut off

# virsh domiflist vhost
Interface  Type       Source     Model       MAC
-------------------------------------------------------

# virsh attach-interface vhost network mgmt --model virtio --config
Interface attached successfully

# virsh domiflist vhost
Interface  Type       Source     Model       MAC
-------------------------------------------------------
-          network    mgmt      virtio      52:54:00:7a:02:61

# virsh start vhost
Domain vhost started

# virsh domiflist vhost
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     mgmt       virtio      52:54:00:7a:02:61

# ip addr show vnet4
8: vnet0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master ovs-system state UNKNOWN qlen 500
    link/ether fe:54:00:7a:02:61 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::fc54:ff:fe7a:261/64 scope link 
       valid_lft forever preferred_lft forever

# ovs-vsctl show
...
    Bridge "ovsbridge0"
        Port "ovsbridge0"
            Interface "ovsbridge0"
                type: internal
...
        Port "vnet0"
            Interface "vnet0"
...

Примітка: інтерфейс було додано до віртуальної машини, яка знаходилася у вимкненому стані. Після старту віртуальний інтерфейс автоматично з’являється серед пристроїв цієї віртуальної машини.

Використання 802.1Q VLAN

Можливим є використання сервера-носія з віртуальними машинами у мережі, в якій налаштовано віртуальні локальні мережі (VLAN). Наприклад, може виникнути потреба під’єднання інтерфейсів різних віртуальних машин до різних VLAN. В цьому випадку фізичний інтерфейс носія під’єднується до транкового порту зовнішнього комутатора, через який передаються фрейми різних VLAN з відповідними тегами. Розглянемо, як під’єднати до VLAN інтерфейс віртуальної машини.

На OVS-мості створюється підпорядкований псевдо-міст (fake bridge), що пов’язується з потрібною VLAN (в даному випадку VLAN104):

# ovs-vsctl add-br ovsvlan104 ovsbridge0 104
# ip link set ovsvlan104 up
# ovs-vsctl show
    Bridge "ovsbridge0"
...
        Port "ovsvlan104"
            tag: 104
            Interface "ovsvlan104"
                type: internal
...
# ip addr show ovsvlan104
10: ovsvlan104: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN 
    link/ether 06:a2:0f:cf:0d:47 brd ff:ff:ff:ff:ff:ff
    inet6 fe80::4a2:fff:fecf:d47/64 scope link 
       valid_lft forever preferred_lft forever

Для збереження налаштувань під час перезавантажень сервера та перезапусків мережевого сервісу необхідно створити файл /etc/sysconfig/network-scripts/ifcfg-ovsvlan104 з наступним вмістом:

DEVICE=ovsvlan104
ONBOOT=yes
DEVICETYPE=ovs
TYPE=OVSBridge
BOOTPROTO=static
OVS_OPTIONS="ovsbridge0 104"

Для створення вітуальної мережі, пов’язаної з VLAN104, підготувати XML-файл vlan104.xml з наступним вмістом:

<network>
  <name>vlan104</name>
  <forward mode='bridge'/>
  <bridge name='ovsvlan104' />
  <virtualport type='openvswitch'/>
</network>

Створити віртуальну мережу vlan104:

# virsh net-define vlan104.xml
# virsh net-start vlan104
# virsh net-autostart vlan104
# virsh net-list
 Name                 State      Autostart     Persistent
----------------------------------------------------------
 mgmt                 active     yes           yes
 vlan104              active     yes           yes

Для під’єднання до нової віртуальної мережі створимо новий інтерфейс віртуальної машини, яка вже знаходиться в активному стані.

# virsh list
 Id    Name                           State
----------------------------------------------------
  1     vhost                          running

# virsh attach-interface vhost network vlan104 --model virtio --live
Interface attached successfully

# virsh attach-interface vhost network vlan104 --model virtio --config
Interface attached successfully

# virsh domiflist vhost
Interface  Type       Source     Model       MAC
-------------------------------------------------------
vnet0      bridge     mgmt       virtio      52:54:00:7a:02:61
vnet1      bridge     vlan104    virtio      52:54:00:c6:60:1c

# ovs-vsctl show
...
    Bridge "ovsbridge0"
...
        Port "ovsvlan104"
            tag: 104
            Interface "ovsvlan104"
                type: internal
        Port "vnet1"
            tag: 104
            Interface "vnet1"
...


Налаштування та використання нового інтерфейсу, який щойно з’явився в віртуальній машині vhost може здійснюватися відразу без перезавантаження машини.

Корисні поради

Під час відлагодження конфігурації мережі замість команди systemctl restart network, яка дає вкрай обмежену інформацію про результат виконання, зручно користуватися командою:

# SYSTEMCTL_SKIP_REDIRECT=1 service network restart
Shutting down interface enp0s3:                            [  OK  ]
Shutting down interface ovsbridge0:                        [  OK  ]
Shutting down loopback interface:                          [  OK  ]
Bringing up loopback interface:                            [  OK  ]
Bringing up interface enp0s3:                              [  OK  ]
Bringing up interface ovsbridge0:                          [  OK  ]

Джерела