Сети узла развёртывания

Введите в консоли команду:

sudo ovs-vsctl show

Результат выполнения будет выглядеть следующим образом:

ffa5b021-35e9-4a7f-8e12-3db0c952f026
    Manager "ptcp:6640:127.0.0.1"
        is_connected: true
    Bridge br-int
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        datapath_type: system
        Port br-int
            Interface br-int
                type: internal
        Port int-br-ctlplane
            Interface int-br-ctlplane
                type: patch
                options: {peer=phy-br-ctlplane}
        Port tape4e5b22a-3c
            tag: 1
            Interface tape4e5b22a-3c
                type: internal
    Bridge br-ctlplane
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        datapath_type: system
        Port phy-br-ctlplane
            Interface phy-br-ctlplane
                type: patch
                options: {peer=int-br-ctlplane}
        Port br-ctlplane
            Interface br-ctlplane
                type: internal
        Port ens4
            Interface ens4
    ovs_version: "3.4.1-13.10.2"

Вывод указывает, что существует два связанных между собой бриджа OVS: br-ctlplane и br-int. Их также можно увидеть при выводе команды ip a.

Бридж br-int не имеет в своём основании никакого физического интерфейса, зато имеет виртуальный интерфейс tape4e5b22a-3c. Расскажем о нём позднее.

Бридж br-ctlplane имеет физический интерфейс ens4 и связывает через него с внешней сетью бридж br-int.

При выводе ip a не указан никакой интерфейс tap. Попробуем выполнить следующее:

[stack@undercloud ~]$ sudo ip netns
qdhcp-5b839bb8-15be-48ca-b68f-bba1756cbe1b (id: 0)

Значит, что в системе существует выделенное сетевое пространство имён. Подробнее про них можно почитать здесь:

[stack@undercloud ~]$ sudo ip netns exec qdhcp-5b839bb8-15be-48ca-b68f-bba1756cbe1b ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    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
8: tape4e5b22a-3c: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether fa:16:3e:60:39:3f brd ff:ff:ff:ff:ff:ff
    inet 192.168.24.36/24 brd 192.168.24.255 scope global tape4e5b22a-3c
    valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe60:393f/64 scope link
    valid_lft forever preferred_lft forever

Мы видим знакомый нам tap интерфейс с адресом 192.168.24.36/24. Назначение этого адреса становится понятно, если поискать этот порт среди портов openstack:

(undercloud) [stack@undercloud ~]$ openstack port list | grep 192.168.24.36
| de8cbd01-25f3-4ebd-8965-74c98eca45bd |      | fa:16:3e:1e:c1:8b | ip_address='192.168.24.36', subnet_id='ab41b2bc-f27c-43a6-977e-4bd93d0c1cc7' | ACTIVE |
(undercloud) [stack@undercloud ~]$ openstack port show de8cbd01-25f3-4ebd-8965-74c98eca45bd -c binding_vif_details -c binding_vif_type -c device_owner
+---------------------+-------------------------------------------------------------------------------------------------------------+
| Field               | Value                                                                                                       |
+---------------------+-------------------------------------------------------------------------------------------------------------+
| binding_vif_details | bridge_name='br-int', connectivity='l2', datapath_type='system', ovs_hybrid_plug='True', port_filter='True' |
| binding_vif_type    | ovs                                                                                                         |
| device_owner        | network:dhcp                                                                                                |
+---------------------+-------------------------------------------------------------------------------------------------------------+

Мы видим, что этот порт является IP адресом DHCP сервера в сети ctlplane, поднятый на узле развёртывания в отдельном сетевом пространстве имён.

Если использовать имя сетевого пространства имён и выполнить:

[stack@undercloud ~]$ sudo podman ps | grep  qdhcp-5b839bb8-15be-48ca-b68f-bba1756cbe1b

То вы увидите контейнер, который отвечает за DHCP сервис в сети Ctlplane.