基于 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 状态。
该过程包括以下步骤,如图所示
客户端向 Scale VNF Instance 资源发送 POST 请求。
VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“STARTING”,以指示生命周期管理操作的开始。
VNFM 和客户端交换授权信息。
VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“PROCESSING”,以指示生命周期管理操作的处理过程。
OpenstackDriver 向 Heat 发送资源信号请求以扩展资源。要扩展的 VM 数量是通过将 Scale VNF 请求中包含的“number_of_steps”与 VNFD 中包含的“number_of_instances”相乘来计算的。
OpenstackDriver 向 Heat 发送请求以更新堆栈,目标 VM 的 HOT 中包含的“desired_capacity”递增。作为 Heat 规范,“desired_capacity”在 UpdateStack 期间被引用,执行此过程是为了防止在下一次 UpdateStack 时返回到之前的 VM 数量。
VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“COMPLETED”,以指示生命周期管理操作的完成。
当扩展多个 VM 时,资源信号和 Update Stack 会针对每个 VM 重复执行。
后置条件:VNF 实例仍处于 INSTANTIATED 状态,并且 VNF 已扩展。
2) VNF 实例缩减流程¶
先决条件:VNF 实例处于 INSTANTIATED 状态。
该过程包括以下步骤,如图所示
客户端向 Scale VNF Instance 资源发送 POST 请求。
VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“STARTING”,以指示生命周期管理操作的开始。
VNFM 和客户端交换授权信息。
VNFM 向客户端发送 VNF 生命周期管理操作发生通知,状态为“PROCESSING”,以指示生命周期管理操作的处理过程。
OpenstackDriver 向 Heat 发送资源信号请求以缩减资源。要缩减的 VM 数量是通过将 Scale VNF 请求中包含的“number_of_steps”与 VNFD 中包含的“number_of_instances”相乘来计算的。
OpenstackDriver 向 Heat 发送请求以更新堆栈,目标 VM 的 HOT 中包含的“desired_capacity”递减。作为 Heat 规范,“desired_capacity”在 UpdateStack 期间被引用,执行此过程是为了防止在下一次 UpdateStack 时返回到之前的 VM 数量。
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
成功 202Error 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 生命周期管理。