支持基于 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 也支持新的相关属性。
此操作允许客户端更改 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 生命周期管理。