Tacker & networking-sfc 集成

https://blueprints.launchpad.net/networking-sfc/+spec/tacker-networking-sfc-driver

本文档描述了 Tacker 的一个 SFC 驱动程序,它将与 Neutron networking-sfc 项目的端口链 API 接口。 Tacker API 提供了服务 VNFs 的管理,并且在 [1] 中,提供了对 VNF 转发图 (VNFFG) 的支持。

VNFFG 是一个逻辑连接的 VNFs 图,网络转发路径 (NFPs) 通过该图创建路径。端口链 API 可用于构建通过该图的一个或多个 NFP。

问题描述

Tacker VNFFG 和 Neutron networking-sfc 在两个不同的抽象层次上运行。虽然 Neutron networking-sfc 通过拼接一系列 Neutron 端口来构建服务链,并且通常与服务无关,但 Tacker VNFFG 在服务实例甚至更高层次的服务类型构造上运行(例如‘负载均衡器’、‘防火墙’…等)。

为了能够渲染 VNFFG 的 NFP,networking-sfc 需要提供为 Tacker 创建 SFC 和分类器的能力。

拟议的变更

Tacker 的新的 networking-sfc 驱动程序将从 VNFFG 的高级抽象描述映射到 VNFFG 的 Neutron 端口描述,即端口链。下图显示了 networking-sfc 驱动程序与 Tacker NFVO 插件和 Tacker VNF 管理器 (VNFM) 插件在 Tacker 服务器中的集成。

NFVO 扩展依赖于 VNFM 扩展。

+---------------------------------------------+
|              Client Application             |
+-----------+---------------------+-----------+
            | Tacker VNFFG API    | Tacker VNFM API
+-----------|---------------------|-----------+
|           v                     v           |
|  +-----------------+    +----------------+  |
|  |      Tacker     |    |    Tacker      |  |
|  |  NFVO Extension |<-->| VNFM Extension |  |
|  |   Plugin/DB     |    |   Plugin       |  |
|  +------------+----+    +----------------+  |
|               |                             |
|               v                             |
|         +==========================+        |
|         |     networking-sfc       |        |
|         |     Port Chain Driver    |        |
|         +==========================+        |
| Tacker Server        |                      |
+----------------------|----------------------+
                       | Port Chain API
+----------------------|----------------------+
| Neutron Server       v                      |
|            +-------------------+            |
|            | networking-sfc    |            |
|            | Port Chain Plugin |            |
|            +-------------------+            |
+---------------------------------------------+

NFVO 插件会将 VNFFG CRUD 操作传递给 networking-sfc 驱动程序。驱动程序会将 VNFFG CRUD 操作映射到端口链 CRUD 操作,并调用 networking-sfc 端口链插件的端口链 API。

NFVO 插件还与 Tacker VNFM 接口,以检索 VNF 实例及其输入/输出接口,以防 VNFFG 以抽象 VNF 类型指定时。

NFVO 插件向 VNFM 发送一个查询,其中包含一个指定抽象 VNF 类型和附加类型特定元数据的过滤器。VNFM 可能会指示没有匹配的 VNF 实例可用于支持查询中指定的所需抽象 VNF 类型。VNFM 可以返回一个或多个能够支持所需 VNF 类型的 VNF 实例。

虽然扩展性是 Tacker 未来的增强功能,但 VNF 扩展性目前由 networking-sfc 支持。如果 VNFM 返回多个 VNF 实例,NFVO 插件可以选择一个 VNF 实例来创建一个包含单个端口对的端口对组。当 NFVO 插件支持扩展性时,它也可以选择创建一个包含 VNFM 返回的所有 VNF 实例的端口对组。

networking-sfc 驱动程序将包括以下功能

  • 将 VNFFG 链定义映射到 networking-sfc 端口链定义。

  • 驱动程序将格式化端口链 CRUD 操作并调用端口链 API。

  • 如果 VNFFG 被指定为对称的,驱动程序将在链参数属性中将 ‘symmetric’ 设置为 true。

  • 将 VNFFG 分类器映射到端口链的流分类器。由于 Tacker VNFFG 中定义的流分类器当前包含更多的匹配字段——那些 networking-sfc 不支持的字段将导致未实现异常。

  • Tacker VNFFG 的默认驱动程序将是 ‘networking-sfc’

当前 Tacker NFVO 暂存和部署 VNFFG 的工作流程如下

tacker vnffg-create --name myvnffg --vnfm_mapping VNF1:testVNF2,VNF2:testVNF1
                    --symmetrical True

networking-sfc 遵循以下工作流程

neutron port-pair-create --ingress <port-id> --egress <port-id>

neutron port-pair-group-create --port-pairs <port-pair-id>

neutron flow-classifier-create --protocol tcp --destination-port 80:80

neutron port-chain-create --port-pair-group <port-pair-group-id>
                          --flow-classifier <classifier-id> <name>

端口链可以在没有流分类器的情况下创建,但是网络管道将在 port-chain-create 命令之后配置。

Tacker VNFFG API 到 Neutron networking-sfc 客户端调用的映射

+---------------------------------------------------------------------+
|   Tacker VNFFG API          |   networking-sfc client CLI           |
+-----------------------------+---------------------------------------+
|                             |                                       |
|       vnffg-create          |   neutron port-pair-create            |
|                             |       --ingress [Neutron port]        |
|                             |       --egress [Neutron port]         |
|                             |                                       |
|                             |   neutron port-pair-group-create      |
|                             |       --port-pairs [port pair id]     |
|                             |                                       |
|                             |   neutron flow-classifier-create      |
|                             |       [parameters]                    |
|                             |                                       |
|                             |   neutron port-chain-create           |
|                             |       --port-pair-group <id>          |
|                             |       --flow-classifier <fc-id>       |
|                             |                                       |
+-----------------------------+---------------------------------------+

备选方案

数据模型影响

REST API 影响

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

用户需要通过 Neutron 配置文件指定 networking-sfc 的后端驱动程序。默认情况下,它将是 OVS 驱动程序。

开发人员影响

实现

负责人

工作项

  1. 为 Tacker NFVO 扩展添加新的 ‘networking-sfc’ 驱动程序。

    • 添加从 VNFFG 链定义到端口链的映射。

    • 添加从 VNFFG 分类器到端口链流分类器的映射。

    • 添加从 NFVO 插件到 networking-sfc API 的映射。

  2. 为以上所有内容添加单元测试。

  3. 与 networking-sfc 端口链集成。

  4. devstack 配置以包含 networking-sfc。

依赖项

测试

将添加单元测试和功能测试。

文档影响

参考资料

[1] https://github.com/openstack/tacker-specs/blob/master/specs/newton/tacker-vnffg.rst