基于 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 的实际设计。

  1. ETSI NFV 类型定义文件

  2. 用户定义的类型定义文件

  3. 顶级拓扑模板文件

  4. 带有部署风味的拓扑模板文件

示例

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,“部署风味模型”很有帮助。以下是一个示例模型

../_images/vnfd-sol001.png

顶级拓扑模板文件描述了 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,但 vnfdIdNFV-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] 的列表。