支持基于 ETSI NFV-SOL 的更改外部 VNF 连接性操作

https://blueprints.launchpad.net/tacker/+spec/support-change-external-connectivity

本规范描述了基于 ETSI NFV-SOL 规范的更改外部 VNF 连接性的接口。

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

问题描述

支持关键的 ETSI NFV 规范将显著减少 Tacker 集成到电信生产网络的工作量,并简化未来标准的进一步开发和支持。在之前的版本中,Tacker 尚未支持 ETSI NFV SOL 002 [2] 和 SOL 003 [3] 中定义的更改外部 VNF 连接性接口。Tacker 应该支持更多的 API 和属性,以符合 ETSI NFV SOL 规范并扩展广泛的使用案例。

可能的用例示例如下。
  • 由于用户移动导致的网络切换

  • 由于引入新功能导致的 EPC 侧的网络切换

  • 基于容器的 VIP 更改的网络更改

提议的变更

本规范中提供的操作通过新的 API 实现,如下所示。
  • 支持额外的 API
    • 更改外部 VNF 连接性 (POST)

随着“更改外部 VNF 连接性”API 的添加,现有的 LCM API 也支持新的相关属性。

../../_images/0125.png

此操作允许客户端更改 VNF 实例的外部连接性。

  • 断开连接到特定外部 VL 的外部 CP,并将它们连接到不同的外部 VL。

  • 更改现有外部 CP 的连接参数,包括更改地址。

在本规范中,支持以下情况。
  • 更改端口

    VNFM 支持更改端口/网络。

  • 更改参数

    VNFM 还支持更改 IP 地址/MAC 地址/允许的地址对。

如果端口用作 trunk-parent-port 或 trunk-sub-port,则不支持这些情况(创建/删除/连接/断开连接/更改)。

本规范中提供的操作通过额外的属性实现,如下所示。

  • 支持额外的属性
    • 授权 (POST)

      作为“更改外部 VNF 连接性”的一部分,VNFM 会发送授权请求。在适用时,NFVO 可以根据 VNFM 的虚拟化资源请求预留资源。

      对于上述管理“更改外部 VNF 连接性”,支持授权接口。

    • VNF 实例 (GET)

    • 单个 VNF 实例 (GET)

      作为“更改外部 VNF 连接性”的一部分,这些 API 设置 _link(changeExtConn) 参数。

    • 通知端点 (POST)

      VNFM 支持发送“更改外部 VNF 连接性”的通知端点。

备选方案

数据模型影响

REST API 影响

A) 支持新的 API

将添加以下 REST API。这些属性基于 ETSI NFV SOL002 [2] 和 SOL003 [3]

  • 名称:更改外部 VNF 连接性
    描述:更改 VNF 实例的外部连接性
    方法类型: POST
    资源的 URL:/vnflcm/v1/vnf_instances/{vnfInstanceId}/change_ext_conn
    请求:

    数据类型

    基数

    描述

    ChangeExtVnfConnectivityRequest

    1

    更改外部 VNF 连接性的参数。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    extVirtualLinks

    ExtVirtualLinkData

    1..N

    >id

    标识符

    1

    >vimConnectionId

    标识符

    0..1

    >resourceProviderId

    标识符

    0..1

    >resourceId

    IdentifierInVim

    1

    >extCps

    VnfExtCpData

    1..N

    >extLinkPorts

    ExtLinkPortData

    0..N

    vimConnectionInfo

    VimConnectionInfo

    0..N

    >id

    标识符

    1

    >vimId

    标识符

    0..1

    >vimType

    字符串

    1

    >interfaceInfo

    KeyValuePairs

    0..1

    >accessInfo

    KeyValuePairs

    0..1

    >extra

    KeyValuePairs

    0..1

    additionalParams

    KeyValuePairs

    0..1

    响应:

    数据类型

    基数

    响应代码

    描述

    n/a

    n/a

    成功 202

    请求已接受处理。

    ProblemDetails

    1

    错误 409

    错误:由于资源的状态冲突,当前无法执行该操作。

    ProblemDetails

    请参阅 [4] 的 6.4 条。

    错误 4xx/5xx

    错误:可以返回 ETSI GS NFV-SOL 013 [4] 的 6.4 条中定义的任何常见错误响应代码。

B) 支持已实现 API 的新属性

将添加以下 REST API 的属性。这些属性基于 ETSI NFV SOL002 [2] 和 SOL003 [3]。先前版本中实现的 API 的详细信息在 NFV 编排 API v1.0 [5] 中描述。

  • 名称:列出 VNF 实例
    描述:请求所有现有 VNF 实例的列表
    方法类型: GET
    资源的 URL:/vnflcm/v1/vnf_instances
    响应:

    数据类型

    基数

    响应代码

    描述

    VnfInstance

    0..N

    成功: 200
    错误:401 403

    成功查询了零个或多个 VNF 实例的信息。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    _links

    结构 (内联)

    1

    >changeExtConn

    链接

    0..1

  • 名称:查询 VNF
    描述:按其 ID 请求现有的 VNF 实例资源
    方法类型: GET
    资源的 URL:/vnflcm/v1/vnf_instances/{vnfInstanceId}
    此资源的资源 URI 变量:

    名称

    描述

    vnfInstanceId

    VNF 实例的标识符。

    响应:

    数据类型

    基数

    响应代码

    描述

    VnfInstance

    1

    成功: 200
    错误:401 403 404

    成功查询了单个 VNF 实例的信息。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    _links

    结构 (内联)

    1

    >changeExtConn

    链接

    0..1

  • 名称: 查询 VNF 事件
    描述: 按其 ID 请求单个 VNF 生命周期管理操作事件
    方法类型: GET
    资源的 URL: /vnflcm/v1/vnf_lcm_op_occs/{vnfLcmOpOccId}
    此资源的资源 URI 变量:

    名称

    描述

    vnfLcmOpOccId

    VNF 生命周期管理操作事件的标识符。

    响应:

    数据类型

    基数

    响应代码

    描述

    VnfLcmOpOcc

    1

    成功 200
    错误 4xx

    操作已成功完成。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    changedExtConnectivity

    ExtVirtualLinkInfo

    0..N

注意

VnfLcmOpOcc.changedExtConnectivity 在“提议的更改 2) VNF LCM 操作发生 (GET) 的流程”中引用,基于 [7] 的规范。

  • 名称: 通知端点
    描述:发送与 VNF 生命周期更改相关的通知
    方法类型: POST
    资源的 URL: 资源 URI 由客户端在创建订阅时提供。
    请求:

    数据类型

    基数

    描述

    VnfLcmOperationOccurrenceNotification

    1

    关于由 VNF LCM 操作发生触发的生命周期变化的通知。

    VnfIdentifierCreationNotification

    1

    关于 VNF 标识符及其相关的单个 VNF 实例资源的创建的通知。

    VnfIdentifierDeletionNotification

    1

    关于 VNF 标识符及其相关的单个 VNF 实例资源的删除的通知。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    changedExtConnectivity

    ExtVirtualLinkInfo

    0..N

安全影响

通知影响

本规范增强了与 VNF 生命周期管理通知相关的 API。

其他最终用户影响

在 python-tackerclient 中添加一个新的 OSC 命令,以调用更改外部 VNF 连接性的 API。

性能影响

其他部署者影响

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

开发人员影响

Tacker-VNFM 作为客户端调用以下 API。将添加与“更改外部 VNF 连接性”API 相关的以下属性。这些属性基于 ETSI NFV SOL003 [3]。先前版本中实现的 API 的详细信息在 Tacker Victoria 规范 [6] 中描述。

  • 名称:授权
    描述:获得 NFVO 的许可以执行特定的 VNF 生命周期操作
    方法类型: POST
    资源的 URL:/grant/v1/grants
    请求:

    数据类型

    基数

    描述

    GrantRequest

    1

    授权的参数。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    instantiationLevelId

    标识符

    0..1

    updateResources

    ResourceDefinition

    0..N

    >id

    IdentifierLocal

    1

    >type

    Enum (内联)

    1

    >vduId

    dentifierInVnfd

    0..1

    >resourceTemplateId

    dentifierInVnfd

    1

    >resource

    ResourceHandle

    0..1

    additionalParams

    KeyValuePairs

    0..1

    响应:

    数据类型

    基数

    响应代码

    描述

    Grant

    1

    成功 201

    授权已成功创建(同步模式)。

    n/a

    n/a

    成功 202

    请求已接受处理,预计创建授权需要一些时间(异步模式)。

    ProblemDetails

    1

    错误 403

    错误:授权已被拒绝。

    ProblemDetails

    请参阅 [4] 的 6.4 条。

    错误 4xx/5xx

    错误:可以返回 ETSI GS NFV-SOL 013 [4] 的 6.4 条中定义的任何常见错误响应代码。

    属性名称

    数据类型

    基数

    Wallaby 中支持

    updateResources

    GrantInfo

    0..N

    >resourceDefinitionId

    IdentifierLocal

    1

    extVirtualLinks

    ExtVirtualLinkData

    0..N

    >id

    标识符

    1

    >vimConnectionId

    标识符

    0..1

    >resourceId

    IdentifierInVim

    1

    >extCps

    VnfExtCpData

    1..N

    >extLinkPorts

    ExtLinkPortData

    0..N

    extManagedVirtualLinks

    ExtManagedVirtualLinkData

    0..N

    >id

    标识符

    1

    >virtualLinkDescId

    IdentifierInVnfd

    1

    >vimConnectionId

    标识符

    0..1

    >resourceID

    IdentifierInVim

    1

实现

负责人

主要负责人

Kentaro Ogawa <kentaro.ogawa.dr@hco.ntt.co.jp>

其他贡献者

Makoto Hamada <makoto.hamada.xu@hco.ntt.co.jp>

工作项

  • 向 Tacker-server 添加新的 REST API 和支持的属性。

  • 对 python-tackerclient 进行更改,以添加调用更改外部 VNF 连接性 API 的新的 OSC 命令。

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

  • 更改 API Tacker 文档。

依赖项

测试

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

文档影响

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

参考资料