Пары IP-адресов (allowed address pair)

Что это?

Функция разрешенных пар адресов позволяет одному порту добавлять на этот порт дополнительные пары IP / MAC-адресов, чтобы трафик соответствовал указанным значениям.

Порт виртуальной машины может отправлять или получать пакеты, используя адреса, настроенные в разрешенных парах адресов. В некоторых аспектах разрешенные пары адресов играют роль, аналогичную фиксированной паре IP / MAC-адресов в порту, и функциональные модули должны обрабатывать их так же, как пара фиксированных IP / MAC-адресов.

Как управлять парами адресов?

Все операции производятся с помощью локального клиента (OpenStack CLI).

Получить список портов

GET /ports

Отображает список портов с их разрешенными атрибутами пар адресов.

Код нормального ответа:

200 ОК

Коды ответов об ошибках:

401 Unauthorized

Эта операция возвращает для каждого порта свои разрешенные атрибуты пар адресов, а также все атрибуты, обычно возвращаемые операцией списка портов.

Пример списка портов с разрешенными атрибутами пары адресов в формате JSON:

{
    "ports":[
    {
     "admin_state_up": true,
     "allowed_address_pairs": [{"ip_address": "23.23.23.1",
                                "mac_address": "fa:16:3e:c4:cd:3f"}],
     "device_id": "",
     "device_owner": "",
     "fixed_ips": [{"ip_address": "10.0.0.2",
                    "subnet_id": "f4145134-b99b-4b18-9940-47239f071923"}],
     "id": "191f5290-3a5a-40ff-b0cb-cd4b115b400e",
     "mac_address": "fa:16:3e:c4:cd:3f",
     "name": "",
     "network_id": "327f2a2f-9d70-417f-ac3a-d3155e25cf25",
     "status": "DOWN",
     "tenant_id": "8462a4d167f84256b7035f4c408c1185"
    },
    {
     "admin_state_up": true,
     "allowed_address_pairs": [],
     "device_id": "",
     "device_owner": "",
     "fixed_ips": [{"ip_address": "10.0.0.3",
                    "subnet_id": "f4145134-b99b-4b18-9940-47239f071923"}],
     "id": "ec2fb9f9-a11b-4791-852d-eb1ab9b27a0e",
     "mac_address": "fa:16:3e:a9:3e:1a",
     "name": "",
     "network_id": "327f2a2f-9d70-417f-ac3a-d3155e25cf25",
     "status": "DOWN",
     "tenant_id": "8462a4d167f84256b7035f4c408c1185"
   }
  ]
}

Пример списка портов с разрешенными атрибутами пары адресов в XML-формате:

<?xml version='1.0' encoding='UTF-8'?>
<ports xmlns="http://openstack.org/quantum/api/v2.0"
    xmlns:quantum="http://openstack.org/quantum/api/v2.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <port>
        <status>ACTIVE</status>
        <name/>
        <allowed_address_pairs>
            <allowed_address_pair>
                <ip_address>23.23.23.1</ip_address>
                <mac_address>fa:16:3e:c4:cd:3f</mac_address>
            </allowed_address_pair>
        </allowed_address_pairs>
        <admin_state_up quantum:type="bool">True</admin_state_up>
        <network_id>3537e809-8bec-4ae4-a5ab-2c6477760195</network_id>
        <tenant_id>8462a4d167f84256b7035f4c408c1185</tenant_id>
        <device_owner/>
        <mac_address>fa:16:3e:21:4c:2e</mac_address>
        <fixed_ips>
            <fixed_ip>
                <subnet_id>f4145134-b99b-4b18-9940-47239f071923</subnet_id>
                <ip_address>10.0.0.21</ip_address>
            </fixed_ip>
        </fixed_ips>
        <id>191f5290-3a5a-40ff-b0cb-cd4b115b400e</id>
        <device_id/>
    </port>
    <port>
        <status>ACTIVE</status>
        <name/>
        <allowed_address_pairs xsi:nil="true"/>
        <admin_state_up quantum:type="bool">True</admin_state_up>
        <network_id>327f2a2f-9d70-417f-ac3a-d3155e25cf25</network_id>
        <tenant_id>8462a4d167f84256b7035f4c408c1185</tenant_id>
        <device_owner/>
        <mac_address>fa:16:3e:a9:3e:1a</mac_address>
        <fixed_ips>
            <fixed_ip>
                <subnet_id>18cf6972-95cc-4134-a986-843dc7433aa0</subnet_id>
                <ip_address>10.0.0.5</ip_address>
            </fixed_ip>
        </fixed_ips>
        <id>ec2fb9f9-a11b-4791-852d-eb1ab9b27a0e</id>
        <device_id/>
    </port>
</ports>

Показать детальную информацию

GET /ports/``port_id``

Показывает сведения об указанном порте, включая атрибуты разрешенной пары адресов.

Код нормального ответа: 

200 ОК

Коды ответов об ошибках: 

401 Unauthorized, 404 Not Found

Пример детальной информации о порте с разрешенными атрибутами пары адресов в формате JSON:

{
   "port":
   {
     "admin_state_up": true,
     "allowed_address_pairs": [{"ip_address": "23.23.23.1",
                                "mac_address": "fa:16:3e:c4:cd:3f"}],
     "device_id": "",
     "device_owner": "",
     "fixed_ips": [{"ip_address": "10.0.0.2",
                    "subnet_id": "f4145134-b99b-4b18-9940-47239f071923"}],
     "id": "191f5290-3a5a-40ff-b0cb-cd4b115b400e",
     "mac_address": "fa:16:3e:c4:cd:3f",
     "name": "",
     "network_id": "327f2a2f-9d70-417f-ac3a-d3155e25cf25",
     "status": "DOWN",
     "tenant_id": "8462a4d167f84256b7035f4c408c1185"
   }
}

Пример детальной информации о порте с разрешенными атрибутами пары адресов в формате XML:

<?xml version='1.0' encoding='UTF-8'?>
<port xmlns="http://openstack.org/quantum/api/v2.0"
       xmlns:quantum="http://openstack.org/quantum/api/v2.0"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <status>ACTIVE</status>
    <name />
    <allowed_address_pairs>
        <allowed_address_pair>
            <ip_address>23.23.23.1</ip_address>
            <mac_address>fa:16:3e:c4:cd:3f</mac_address>
        </allowed_address_pair>
    </allowed_address_pairs>
    <admin_state_up quantum:type="bool">True</admin_state_up>
    <network_id>3537e809-8bec-4ae4-a5ab-2c6477760195</network_id>
    <tenant_id>8462a4d167f84256b7035f4c408c1185</tenant_id>
    <device_owner />
    <mac_address>fa:16:3e:21:4c:2e</mac_address>
    <fixed_ips>
        <fixed_ip>
            <subnet_id>f4145134-b99b-4b18-9940-47239f071923</subnet_id>
            <ip_address>10.0.0.21</ip_address>
        </fixed_ip>
    </fixed_ips>
    <id>191f5290-3a5a-40ff-b0cb-cd4b115b400e</id>
    <device_id />
</port>

Создать порт

POST /ports

Создает порт и явно указывает разрешенные атрибуты пары адресов.

Код нормального ответа: 

200 ОК

Коды ответов об ошибках: 

401 Unauthorized, 400 Bad Request, 403 Forbidden

Ошибка на запрос возвращается, если разрешенная пара адресов совпадает с mac_address и ip_address на порту.

Если поле mac_address не указаны в теле запроса, будет использоваться адрес mac_address, назначенный порту.

Пример создания порта с разрешенными атрибутами пары адресов в формате JSON:

{
 "port":
    {
      "network_id": "3537e809-8bec-4ae4-a5ab-2c6477760195",
      "allowed_address_pairs": [{"ip_address": "10.3.3.3"}]
    }
}

Обновить порт

PUT /ports/``port_id``

Обновляет порт, добавляя новые допустимые значения пар адресов.

Код нормального ответа: 

200 ОК

Коды ответов об ошибках: 

401 Unauthorized, 400 Bad Request, 403 Forbidden, 404 Not Found

Пример обновления порта с разрешенными атрибутами пары адресов в формате JSON:

{
    "port": {
        "allowed_address_pairs":
         [
            {"ip_address": "10.0.0.1"}
         ]
    }
}

Официальная документация