Bug 39709 - [Open vSwitch] Не подымается автоматом OVSBond
Summary: [Open vSwitch] Не подымается автоматом OVSBond
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: etcnet (show other bugs)
Version: unstable
Hardware: x86_64 Linux
: P5 major
Assignee: Mikhail Efremov
QA Contact: qa-sisyphus
URL:
Keywords: RS
Depends on:
Blocks:
 
Reported: 2021-02-20 17:02 MSK by Evgeniy Korneechev
Modified: 2022-02-11 22:29 MSK (History)
5 users (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Evgeniy Korneechev 2021-02-20 17:02:13 MSK
bond0/options:
TYPE=ovsbond
BRIDGE=vmbr0
HOST="ens18 ens19"
OVS_OPTIONS="bond_mode=balance-tcp lacp=active vlan_mode=native-tagged other_config:lacp-time=fast tag=222"

vmbr0/options:
TYPE=ovsbr
HOST="bond0"

С такими настройками из вложения OVS Bond bond0 не подымается.
Вывод ovs-vsctl show сразу после старта:
# ovs-vsctl show
e5b74366-580e-4eb9-9310-ba61e2d38ad9
    Bridge vmbr0
        Port bond0
            Interface bond0
                error: "could not open network device bond0 (No such device)"
        Port vmbr0
            Interface vmbr0
                type: internal
    ovs_version: "2.14.1"

Если сделать так, то все ОК будет:
# ovs-vsctl del-port vmbr0 bond0
# ifup bond0

Судя по логам имеется лишняя команда (ovs-vsctl[3254]) по добавлению порта bond0 в vmbr0:
# journalctl -b0 -u network.service
[...]
фев 20 11:17:45 altpve1.rs ovs-vsctl[3217]: ovs|00001|vsctl|INFO|Called as /usr/bin/ovs-vsctl -t 10 -- --may-exist add-br vmbr0
фев 20 11:17:45 altpve1.rs ovs-vsctl[3254]: ovs|00001|vsctl|INFO|Called as /usr/bin/ovs-vsctl -t 10 -- --may-exist add-port vmbr0 bond0
фев 20 11:17:45 altpve1.rs network[2881]:         Starting bond0: ....ovs-vsctl: Error detected while setting up 'bond0': could not open network device bond0 (No such device).  See ovs-vswitchd log for details.
фев 20 11:17:45 altpve1.rs network[2881]: ovs-vsctl: The default log directory is "/var/log/openvswitch".
фев 20 11:17:45 altpve1.rs ovs-vsctl[3259]: ovs|00001|vsctl|INFO|Called as /usr/bin/ovs-vsctl -t 10 -- --fake-iface --may-exist add-bond vmbr0 bond0 ens18 ens19 bond_mode=balance-tcp lacp=active vlan_mode=native-tagged trunks=2,4,11,12,13,34 other_config:lacp-time=fast
фев 20 11:17:45 altpve1.rs ovs-vsctl[3259]: ovs|00002|db_ctl_base|ERR|"--may-exist --fake-iface add-bond vmbr0 bond0 ens18 ens19 bond_mode=balance-tcp lacp=active vlan_mode=native-tagged trunks=2,4,11,12,13,34 other_config:lacp-time=fast" but bond0 actually has interface(s) bond0
фев 20 11:17:45 altpve1.rs network[2881]: ..ovs-vsctl: "--may-exist --fake-iface add-bond vmbr0 bond0 ens18 ens19 bond_mode=balance-tcp lacp=active vlan_mode=native-tagged trunks=2,4,11,12,13,34 other_config:lacp-time=fast" but bond0 actually has interface(s) bond0
фев 20 11:17:45 altpve1.rs network[2881]: !FAILED
фев 20 11:17:45 altpve1.rs network[2881]:         Starting vmbr0:  'vmbr0' is already up SKIPPED
фев 20 11:17:45 altpve1.rs systemd[1]: Started Network Connectivity

PS Как костыль работает добавление следующего кода в /etc/net/scripts/create-ovsbond:
$OVS_VSCTL -t $OVS_VSCTL_TIMEOUT -- del-port "$BRIDGE" "$NAME"
Comment 1 Evgeniy Korneechev 2021-03-02 11:05:58 MSK
(Ответ для Evgeniy Korneechev на комментарий #0)
> # ovs-vsctl show
> e5b74366-580e-4eb9-9310-ba61e2d38ad9
>     Bridge vmbr0
>         Port bond0
>             Interface bond0
>                 error: "could not open network device bond0 (No such device)"
>         Port vmbr0
>             Interface vmbr0
>                 type: internal
>     ovs_version: "2.14.1"

В такой ситуации при попытке разобраться с проблемой были выполнены команды по добавлению сетевых интерфейсов ens18 и ens19 в мост vmbr0 (явно опрометчиво)  и,  в совокупности с bond_mode=balance-tcp lacp=active, это вызвало то ли сетевой шторм, то ли петлю, полностью разломав сеть как в ВМ и на хосте, так и во всем сегменте сети.

PS Человеческий фактор и некомпетентность конечно никто не отменяет - но с текущую реализацию скрипта create-ovsbond нужно чинить.

PPS С указанным костылем данная ситуация не возникает, так как OVS не дает добавить в мост интерефейс, который уже есть в нем через бонд.
Comment 2 Repository Robot 2022-02-11 22:29:11 MSK
etcnet-0.9.22-alt1 -> sisyphus:

 Fri Feb 11 2022 Alexey Shabalin <shaba@altlinux> 0.9.22-alt1
 - ovsport: OVS_PATCH option (Closes: #39708).
 - ovsport: HOST must be set.
 - ovsport: BRIDGE must be set.
 - ovsbond: BRIDGE must be set.
 - ovsbond: support VLAN id (Closes: #39707).
 - openvswitch: remove interface before create (Closes: #39709).