基于 ETSI NFV-SOL001 的 VNF 描述符 (VNFD)¶
本文档描述了如何基于 ETSI NFV-SOL001 v2.6.1 创建 VNFD 文件。VNFD 使用定义在 TOSCA-Simple-Profile-yaml-v1.2 中的一个或多个 TOSCA 服务模板建模。VNFD 是 VNF 包的一个组件,并采用 YAML 格式的文件。
VNFD 由四种不同类型的文件组成
类型定义文件 - 定义每个资源的属性。拓扑模板文件 - 描述 VNF 的实际设计。
ETSI NFV 类型定义文件
用户定义的类型定义文件
顶级拓扑模板文件
带有部署风味的拓扑模板文件
示例
Definitions/
!---- etsi_nfv_sol001_common_types.yaml
!---- etsi_nfv_sol001_vnfd_types.yaml
!---- vnfd_top.yaml
!---- vnfd_df_1.yaml
!---- ..
!---- vnfd_df_x.yaml
!---- vnfd_types.yaml
部署风味模型¶
为了使用 VNFD 设计 VNF,“部署风味模型”很有帮助。以下是一个示例模型
顶级拓扑模板文件描述了 VNF 的抽象设计。在该示例中,VNF 具有一个连接点 (CP) 到外部虚拟链路 (ExtVL)。CP 和虚拟链路 (VL) 分别映射到端口和虚拟网络。
VNF 的实际设计在带有部署风味的拓扑模板文件中描述。在该示例中,提供了两种不同的部署风味:“简单”和“复杂”。“简单”仅具有一个虚拟化部署单元 (VDU),它代表一个 VM,而“复杂”具有两个 VDU。可以为 VNF 设计多个带有部署风味的拓扑。部署的拓扑通过实例化请求参数中的部署风味 ID 来指定。
类型定义文件¶
类型定义文件包含在 service template 文件中出现的所有必需的“类型”。在 拓扑模板文件中描述的资源在 类型定义文件中定义为“类型”。
在 NFV-SOL001 v2.6.1 中有九组类型定义。
数据类型:
data_types工件类型:
artifact_types能力类型:
capability_types需求类型:
requirements_types关系类型:
relationship_types接口类型:
interface_types节点类型:
node_types组类型:
group_types策略类型:
policy_types
1. ETSI NFV 类型定义文件¶
ETSI NFV 提供了两个类型定义文件 [1],其中包含在 NFV-SOL001 v2.6.1 中定义的所有类型定义。这些文件通常从顶级服务模板文件导入。
2. 用户定义的类型定义文件¶
用户可以从 NFV-SOL001 v2.6.1 扩展他们自己的类型定义。在大多数情况下,用户需要扩展 tosca.nodes.nfv.VNF 来定义您的 VNF 节点类型。文件中的内容是
tosca_definitions_version - 始终为“tosca_simple_yaml_1_2”。
description - 是文件的描述。
imports - 是来自 ETSI NFV 的类型定义文件。
node_types - 是描述扩展
tosca.nodes.nfv.VNF以定义您的 VNF 的关键。(可选) data_types - 是定义您自己的数据类型的关键。
在 node_types 字段中描述的 tosca.nodes.nfv.VNF 类型在 NFV-SOL001 v2.6.1 的 6.8.1 节中定义。其必需属性是
descriptor_id - 是“VNFD ID”,并在创建 VNF 实例时需要。
descriptor_version - 是 VNFD 的版本。
provider - 是提供 VNFD 的提供商的名称。
product_name - 是 VNF 的名称。
software_version* - 是 VNF 的软件版本。
vnfm_info - 用于标识与 VNFD 的此版本中描述的 VNF 兼容的 VNFM。默认值可以是“Tacker”。
flavour_id - 是在实例化中使用部署风味的 ID。
flavour_description - 是部署风味的描述。默认值可以是“” (空字符串)。
注意
在 NFV-SOL001 v2.6.1 的 6.8.1 节中指出,descriptor_id 字符串应为 UUID (IETF RFC 4122:“通用唯一标识符 (UUID) URN 命名空间”)。Tacker 建议根据 NFV-SOL001 v2.6.1 使用 UUID,但 vnfdId 在 NFV-SOL002 v3.3.1 / NFV-SOL003 v3.3.1 没有格式限制,因此也支持任何单字节字符字符串(包括字母、数字、空格、连字符、下划线和句点)。
拓扑模板文件¶
拓扑模板文件描述 VNF 的拓扑。拓扑使用以下内容定义
tosca_definitions_version - 始终为“tosca_simple_yaml_1_2”。
description - 是文件的描述。
imports - 是来自 ETSI NFV 和用户定义的类型定义文件的类型定义文件。
topology_template - 使用节点模板描述 VNF 的拓扑。
topology_template 字段在 TOSCA-Simple-Profile-yaml-v1.2 的 3.9 节中定义。所有键都是可选的,但有些键对于描述拓扑很重要
(可选) description - 是文件的描述。
inputs - 是输入参数列表。
node_templates - 是节点模板定义列表。
(可选) relationship_templates - 是关系模板列表。
groups - 是组定义列表,其成员是在同一拓扑模板中定义的节点模板。
policies - 是策略定义列表。
outputs - 是输出参数列表。
substitution_mappings - 是一个声明,它将拓扑模板作为节点类型的实现导出。
(可选) workflows - 是拓扑模板的命令式工作流定义映射。
3. 顶级拓扑模板文件¶
顶级拓扑模板文件描述了 VNF 的抽象设计。在此文件中,node_template 提供了从 tosca.nodes.nfv.VNF 派生的用户定义的 VNF 类型。该文件包括
tosca_definitions_version: tosca_simple_yaml_1_2
description: 此文件的描述。
imports
topology_template
inputs:
selected_flavour: 在实例化中选择的部署风味
node_templates:
<VNF 的名称>
type: 从
tosca.nodes.nfv.VNF派生的用户定义的 VNF 类型properties
descriptor_id: 用户创建的 VNFD ID
descriptor_version: VNFD 的版本
provider: 提供商的名称
product_name: 产品名称
software_version: VNF 软件的版本
vnfm_info: [“Tacker”]
flavour_id: { get_input: selected_flavour }
requirements: 在带有部署风味的较低级别的拓扑模板中提供的属性
注意
所需的属性在 NFV-SOL001 v2.6.1 的 6.8.1 节中定义。flavour_description 在较低级别的拓扑模板中提供,此处不包括。
4. 带有部署风味的拓扑模板文件¶
较低级别的拓扑模板提供部署风味 ID 及其 VNF 的详细设计。使用 substitution_mappings 键引用来自 tosca.nodes.nfv.VNF 的用户定义的 VNF 类型的 VNF 的抽象设计,并在 node_templates 中添加了一些属性。 node_templates 字段包含详细资源,例如 VDU 和 CP。该文件包括
tosca_definitions_version: tosca_simple_yaml_1_2
description: 此文件的描述。
imports
etsi_nfv_sol001_common_types.yaml
etsi_nfv_sol001_vnfd_types.yaml
<用户定义的类型定义文件>
topology_template
inputs:
descriptor_id: 用户创建的 VNFD ID
provider: 提供商的名称
product_name: 产品名称
software_version: VNF 软件的版本
descriptor_version: VNFD 的版本
vnfm_info: 标识兼容的 VNFM
flavour_id: 部署风味 ID
flavour_description: 部署风味的描述。
substitution_mappings:
node_type: 用户定义的 VNf 类型
properties
flavour_id: 此文件的部署风味
requirements
virtual_link_external: 用于外部网络的 CP 和 VL 列表
node_templates:
VNF 资源
VDU 资源
CP 资源
VL 资源
其他资源
策略:
扩展资源
亲和资源
其他资源
注意
substitution_mappings 中的 requirements 字段描述了抽象 VNF 的外部网络拓扑。在部署风味章节的示例中,virtual_link_external 可以是 [CP, ExtVL] 的列表。