ETSI NFV-SOL 更改外部 VNF 连接性

本文档描述了如何在 Tacker v1 API 中更改外部 VNF 连接性。

注意

这是 Tacker v1 API 的文档。有关 Tacker v2 API,请参阅 ETSI NFV-SOL 更改外部 VNF 连接性

先决条件

应安装以下软件包

  • tacker

  • python-tackerclient

应根据 VIM 管理 注册默认 VIM。

下面使用的 VNF 包(sample_vnf_package_csar.zip)是通过参考 VNF 包 准备的。

从“注册 VIM”到“实例化 VNF”的缩放操作准备过程,基本参考 ETSI NFV-SOL VNF 部署为 VM,并使用 LCM 操作用户数据

此过程使用示例 VNF 包。

更改外部 VNF 连接

如前提条件中所述,在执行更改外部连接性之前,必须先创建 VNF。

假设以下 VNF 实例存在,将更改此实例。

CLI 命令的详细信息在 使用 v1 Tacker 进行 VNF 生命周期管理 中描述。

为了更改外部 VNF 连接性,您需要在运行更改连接性命令之前准备一个 JSON 格式的定义文件。

{
    "extVirtualLinks": [
        {
            "id": "a96d2f5b-c01a-48e1-813c-76132965042c",
            "resourceId": "3019b1e7-99d8-4748-97ac-104922bc78d9",
            "vimConnectionId": "79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56",
            "extCps": [
                {
                    "cpdId": "VDU1_CP2",
                    "cpConfig": [
                        {
                            "cpProtocolData": [
                                {
                                    "layerProtocol": "IP_OVER_ETHERNET",
                                    "ipOverEthernet": {
                                        "ipAddresses": [
                                            {
                                                "type": "IPV4",
                                                "subnetId": "43c8f5fa-fefd-4bd4-a0df-f985b6969339"
                                            }
                                        ]
                                    }
                                }
                            ]
                        }
                    ]
                }
            ]
        }
    ],
    "vimConnectionInfo": [
        {
            "id": "79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56",
            "vimType": "ETSINFV.OPENSTACK_KEYSTONE.V_2",
            "vimConnectionId": "79a97d01-e5f3-4eaa-b2bc-8f513ecb8a56",
            "interfaceInfo": {
                "endpoint": "http://127.0.0.1/identity"
            },
            "accessInfo": {
                "username": "nfv_user",
                "region": "RegionOne",
                "password": "devstack",
                "tenant": "1994d69783d64c00aadab564038c2fd7"
            }
        }
    ],
    "additionalParams": {
        "lcm-operation-user-data": "./UserData/lcm_user_data.py",
        "lcm-operation-user-data-class": "SampleUserData"
    }
}

注意

sample_param_file.json 包含所有端口资源信息的数据。如果未包含任何设置,则将其视为信息更改。

注意

更改外部 VNF 连接性操作可以更改与现有 VNF 实例关联的 vimConnectionInfo。即使更改外部 VNF 连接性操作指定了与一个 VNF 实例关联的多个 vimConnectionInfo,也只会使用其中一个用于生命周期管理操作。无法删除已注册的 vimConnectionInfo 的键。

如何更改特定端口设置

执行更改外部 VNF 连接性 CLI 命令,并在操作前后检查堆栈的“ID”和“堆栈状态”。 目的是确认操作前后堆栈“ID”没有变化,并且堆栈更新已成功完成。有关 Heat CLI 命令的详细信息,请参阅 Heat CLI 参考

操作前的堆栈信息

$ openstack stack list -c 'ID' -c 'Stack Name' -c 'Stack Status'

结果

+--------------------------------------+------------------------------------------+-----------------+
| ID                                   | Stack Name                               | Stack Status    |
+--------------------------------------+------------------------------------------+-----------------+
| 5322e9c4-b5ac-439e-8ed4-d0710816f318 | vnf-9e086f34-b3c9-4986-b5e5-609a5ac4c1f9 | CREATE_COMPLETE |
+--------------------------------------+------------------------------------------+-----------------+

操作前的端口信息

$ openstack port list --name PORT_NAME
+--------------------------------------+-------------------------------------------------------------------------------------------+-------------------+---------------------------------------------------------------------------+--------+
| ID                                   | Name                                                                                      | MAC Address       | Fixed IP Addresses                                                        | Status |
+--------------------------------------+-------------------------------------------------------------------------------------------+-------------------+---------------------------------------------------------------------------+--------+
| 0988d9dc-97ba-43be-944d-185e316785f9 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-                      | fa:16:3e:fb:f9:87 | ip_address='22.22.1.16', subnet_id='d290cae3-0dbc-44a3-a043-1a50ded04a64' | ACTIVE |
|                                      | gfrxqjt6nfqb-2ufs4pbsedui-VDU1_CP2-riva4ygcbnyz                                           |                   |                                                                           |        |
+--------------------------------------+-------------------------------------------------------------------------------------------+-------------------+---------------------------------------------------------------------------+--------+

$ openstack stack resource list e9d4576f-950c-4076-a54d-35b5cf43ebdd -n 2 --filter name=VDU1_CP2
+---------------+--------------------------------------+-------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+
| resource_name | physical_resource_id                 | resource_type     | resource_status | updated_time         | stack_name                                                                                    |
+---------------+--------------------------------------+-------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+
| VDU1_CP2      | 0988d9dc-97ba-43be-944d-185e316785f9 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T02:32:04Z | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-gfrxqjt6nfqb-2ufs4pbsedui |
+---------------+--------------------------------------+-------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+
$ openstack stack resource show \
  vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-gfrxqjt6nfqb-2ufs4pbsedui \
  VDU1_CP2 -f json | jq .attributes.fixed_ips
[
  {
    "subnet_id": "d290cae3-0dbc-44a3-a043-1a50ded04a64",
    "ip_address": "22.22.1.16"
  }
]

有关 Heat CLI 命令的详细信息,请参阅 Heat CLI 参考

更改外部 VNF 连接性执行整个 VNF

$ openstack vnflcm change-ext-conn VNF_INSTANCE_ID \
  ./sample_param_file.json

结果

Change External VNF Connectivity for VNF Instance 0c3644ff-b207-4a6a-9d3a-d1295cda153a has been accepted.

注意

创建描述要更改的资源信息的文件。

操作后的堆栈信息

$ openstack stack list -c 'ID' -c 'Stack Name' -c 'Stack Status'

结果

+--------------------------------------+---------------------------------------------+-----------------+
| ID                                   | Stack Name                                  | Stack Status    |
+--------------------------------------+---------------------------------------------+-----------------+
| e9d4576f-950c-4076-a54d-35b5cf43ebdd | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a | UPDATE_COMPLETE |
+--------------------------------------+---------------------------------------------+-----------------+

注意

“堆栈状态”过渡到 UPDATE_COMPLETE。

堆栈资源信息

$ openstack stack resource list e9d4576f-950c-4076-a54d-35b5cf43ebdd \
  -n 2 --filter name=VDU1

结果

+---------------+--------------------------------------+------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+
| resource_name | physical_resource_id                 | resource_type    | resource_status | updated_time         | stack_name                                                                                    |
+---------------+--------------------------------------+------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+
| VDU1          | f32848eb-598f-4158-8896-5ea9479456de | OS::Nova::Server | UPDATE_COMPLETE | 2023-12-28T07:12:36Z | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-gfrxqjt6nfqb-2ufs4pbsedui |
+---------------+--------------------------------------+------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+

端口资源信息

$ openstack port list --name PORT_NAME
+--------------------------------------+-------------------------------------------------------------------------------------------+-------------------+----------------------------------------------------------------------------+--------+
| ID                                   | Name                                                                                      | MAC Address       | Fixed IP Addresses                                                         | Status |
+--------------------------------------+-------------------------------------------------------------------------------------------+-------------------+----------------------------------------------------------------------------+--------+
| 8fcc7ddf-45cb-4ff6-a17f-4b18b9ab6a63 | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-                      | fa:16:3e:75:50:e8 | ip_address='10.10.0.136', subnet_id='43c8f5fa-fefd-4bd4-a0df-f985b6969339' | ACTIVE |
|                                      | gfrxqjt6nfqb-2ufs4pbsedui-VDU1_CP2-gy4cxuefplkg                                           |                   |                                                                            |        |
+--------------------------------------+-------------------------------------------------------------------------------------------+-------------------+----------------------------------------------------------------------------+--------+

$ openstack stack resource list e9d4576f-950c-4076-a54d-35b5cf43ebdd -n 2 --filter name=VDU1_CP2
+---------------+--------------------------------------+-------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+
| resource_name | physical_resource_id                 | resource_type     | resource_status | updated_time         | stack_name                                                                                    |
+---------------+--------------------------------------+-------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+
| VDU1_CP2      | 8fcc7ddf-45cb-4ff6-a17f-4b18b9ab6a63 | OS::Neutron::Port | CREATE_COMPLETE | 2023-12-28T07:12:35Z | vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-gfrxqjt6nfqb-2ufs4pbsedui |
+---------------+--------------------------------------+-------------------+-----------------+----------------------+-----------------------------------------------------------------------------------------------+
$ openstack stack resource show \
  vnflcm_0c3644ff-b207-4a6a-9d3a-d1295cda153a-VDU1_scale-3x6qwnzbj6ep-gfrxqjt6nfqb-2ufs4pbsedui \
  VDU1_CP2 -f json | jq .attributes.fixed_ips
[
  {
    "subnet_id": "43c8f5fa-fefd-4bd4-a0df-f985b6969339",
    "ip_address": "10.10.0.136"
  }
]

注意

‘subnet_id’ 已从 ‘d290cae3-0dbc-44a3-a043-1a50ded04a64’ 更改为 ‘43c8f5fa-fefd-4bd4-a0df-f985b6969339’。‘ip_address’ 已从 ‘22.22.1.16’ 更改为 ‘10.10.0.136’。