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

(Далее описание ведётся с узла развёртывания)

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

sudo ovs-vsctl show

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

59a6160b-9679-46ba-a583-63a64d0c7f4d
    Manager "ptcp:6640:127.0.0.1"
        is_connected: true
    Bridge br-ctlplane
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        datapath_type: system
        Port "enp1s0"
            Interface "enp1s0"
        Port phy-br-ctlplane
            Interface phy-br-ctlplane
                type: patch
                options: {peer=int-br-ctlplane}
        Port br-ctlplane
            Interface br-ctlplane
                type: internal
    Bridge br-int
        Controller "tcp:127.0.0.1:6633"
            is_connected: true
        fail_mode: secure
        datapath_type: system
        Port int-br-ctlplane
            Interface int-br-ctlplane
                type: patch
                options: {peer=phy-br-ctlplane}
        Port "tapde8cbd01-25"
            tag: 1
            Interface "tapde8cbd01-25"
                type: internal
        Port br-int
            Interface br-int
                type: internal
    ovs_version: "2.12.0"

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

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

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

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

[stack@undercloud ~]$ sudo ip netns
qdhcp-a4d98b54-1bc4-402a-92c1-51cbeee94aa3 (id: 0)

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

[stack@undercloud ~]$ sudo ip netns exec qdhcp-a4d98b54-1bc4-402a-92c1-51cbeee94aa3 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: tapde8cbd01-25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN group default qlen 1000
    link/ether fa:16:3e:1e:c1:8b brd ff:ff:ff:ff:ff:ff
    inet 192.168.24.36/24 brd 192.168.24.255 scope global tapde8cbd01-25
       valid_lft forever preferred_lft forever
    inet6 fe80::f816:3eff:fe1e:c18b/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-a4d98b54-1bc4-402a-92c1-51cbeee94aa3

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