基于 ETSI NFV-SOL 规范支持 VNF 的扩展操作

https://blueprints.launchpad.net/tacker/+spec/support-etsi-nfv-specs

NFV 架构框架内的 ETSI 规范 [1] 描述了基于行业需求、SDN/NFV 厂商和电信运营商反馈的 NFV 开发和使用的主要方面。这些规范包括 REST API 和数据模型架构,供 NFV 用户和开发人员在相关产品中使用。

问题描述

在当前的基于 ETSI NFV-SOL 的 Tacker 实现中,Tacker 使用其自身的 API 来描述扩展操作,即根据需要动态扩展/减少分配给虚拟网络功能 (VNF) 的资源的能力。

然而,这些操作与当前的 ETSI NFV 数据模型不一致。因此,可能与根据 ETSI NFV 规范开发的 第三方 VNF [4] 缺乏兼容性。支持关键的 ETSI NFV 规范将显著减少 Tacker 集成到电信生产网络的工作量,并简化未来标准的进一步开发和支持。

提议的变更

引入一个新的接口,用于向 VNFM 调用 VNF 实例的 VNF 生命周期管理操作。通过此接口提供的操作是

  • 缩放 VNF

1) VNF 实例扩展流程

先决条件:VNF 实例处于 INSTANTIATED 状态。

../../_images/0117.png

该过程包括以下步骤,如图所示

  1. 客户端向 Scale VNF Instance 资源发送 POST 请求。

  2. VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“STARTING”,以指示生命周期管理操作的开始。

  3. VNFM 和客户端交换授权信息。

  4. VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“PROCESSING”,以指示生命周期管理操作的处理过程。

  5. OpenstackDriver 向 Heat 发送资源信号请求以扩展资源。要扩展的 VM 数量是通过将 Scale VNF 请求中包含的“number_of_steps”与 VNFD 中包含的“number_of_instances”相乘来计算的。

  6. OpenstackDriver 向 Heat 发送请求以更新堆栈,目标 VM 的 HOT 中包含的“desired_capacity”递增。作为 Heat 规范,“desired_capacity”在 UpdateStack 期间被引用,执行此过程是为了防止在下一次 UpdateStack 时返回到之前的 VM 数量。

  7. VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“COMPLETED”,以指示生命周期管理操作的完成。

当扩展多个 VM 时,资源信号和 Update Stack 会针对每个 VM 重复执行。

后置条件:VNF 实例仍处于 INSTANTIATED 状态,并且 VNF 已扩展。

2) VNF 实例缩减流程

先决条件:VNF 实例处于 INSTANTIATED 状态。

../../_images/0211.png

该过程包括以下步骤,如图所示

  1. 客户端向 Scale VNF Instance 资源发送 POST 请求。

  2. VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“STARTING”,以指示生命周期管理操作的开始。

  3. VNFM 和客户端交换授权信息。

  4. VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“PROCESSING”,以指示生命周期管理操作的处理过程。

  5. OpenstackDriver 向 Heat 发送资源信号请求以缩减资源。要缩减的 VM 数量是通过将 Scale VNF 请求中包含的“number_of_steps”与 VNFD 中包含的“number_of_instances”相乘来计算的。

  6. OpenstackDriver 向 Heat 发送请求以更新堆栈,目标 VM 的 HOT 中包含的“desired_capacity”递减。作为 Heat 规范,“desired_capacity”在 UpdateStack 期间被引用,执行此过程是为了防止在下一次 UpdateStack 时返回到之前的 VM 数量。

  7. VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“COMPLETED”,以指示生命周期管理操作的完成。

当扩展多个 VM 时,资源信号和 Update Stack 会针对每个 VM 重复执行。

当使用 Heat 执行缩减 (resource-signal) 时,Heat 会操作以删除首先创建的 VM。根据 VNF,可能需要删除最后创建的 VM。因此,可以在缩放请求参数中作为 ‘additionalParams’ 选择 VM 删除的顺序。如果 ‘additionalParams’ 中的 isReverse 为 True,则从最后注册的 VM 开始删除。如果不是,则从第一个注册的 VM 开始删除。如果未设置 ‘additionalParams’,则行为与 False 相同。

后置条件:VNF 实例仍处于 INSTANTIATED 状态,并且 VNF 已缩减。

备选方案

数据模型影响

修改当前 Tacker 数据库中的以下表。相应的模式如下所示:-

vnf_instantiated_info:

scale_status scale_status json

vnf_lcm_op_occs:

operation_params operation_params json

“operation_parames” 存储 ScaleVNF 请求的 additionalParams 属性。它用于从 NFVO 获取操作状态。

REST API 影响

将添加以下 restFul API。此 restFul API 将基于 ETSI NFV SOL002 [2] 和 SOL003 [3]

  • 名称:扩展 VNF 实例
    描述:通过添加/删除 VNF 实例资源进行扩展
    方法类型: POST
    资源的 URL:/vnflcm/v1/vnf_instances/{vnfInstanceId}/scale
    请求:此资源的资源 URI 变量

    名称

    描述

    vnfInstanceId

    要扩展的 VNF 实例的标识符。

    请求:

    数据类型

    基数

    描述

    ScaleVnfRequest

    1

    扩展 VNF 操作的参数。

    属性名称

    数据类型

    基数

    受支持于 (V)

    type

    Enum(inlined)

    1

    aspectId

    IdentifierInVnfd

    1

    numberOfSteps

    Integer

    0..1

    additionalParams

    KeyValuePairs

    0..1

    响应:

    数据类型

    基数

    响应代码

    描述

    n/a

    n/a

    成功 202
    Error 404 409

    请求已被接受处理,但处理尚未完成。

安全影响

通知影响

其他最终用户影响

在 python-tackerclient 中添加新的 OSC 命令,以调用 VNF 实例 API 的扩展操作。

性能影响

其他部署者影响

先前创建的 VNF 将不允许使用新引入的 API 进行管理。

开发人员影响

实现

负责人

主要负责人

Keiko Kuriu <keiko.kuriu.wa@hco.ntt.co.jp>

工作项

  • 在 Tacker-server 中添加新的 REST API 端点,用于 VNF 实例的扩展操作。

  • 修改 python-tackerclient,以添加新的 OSC 命令,用于调用 VNF 实例 restFul API 的扩展操作。

  • 添加新的单元和功能测试。

  • 更改 API Tacker 文档。

依赖项

测试

将为 VNF 实例的 VNF 生命周期管理添加单元和功能测试用例。

文档影响

将添加完整的用户指南,以说明如何使用示例调用 VNF 实例的 VNF 生命周期管理。

参考资料