Cisco APIC 的 ML2 机制驱动

Launchpad蓝图

https://blueprints.launchpad.net/neutron/+spec/ml2-cisco-apic-mechanism-driver

此蓝图旨在将 Cisco APIC 引入 OpenStack Neutron。该插件作为 ML2 机制驱动实现。

问题描述

APIC(应用策略基础设施控制器)与 Cisco Nexus 9000 交换机一起提供可编程、基于策略的网络控制。

此处提出的机制驱动将与 APIC 交互,以动态管理 OpenStack 实例的网络。APIC 将智能地配置硬件层并管理网络的 VXLAN 覆盖。VXLAN 网关将由控制器在机架顶部层实现,以减少软件交换层中的封装延迟。

用例

  1. 以应用为中心的基于策略的网络

  2. 由外部控制器管理的网络结构

  3. VXLAN 覆盖网络

提议的变更

下图提供了 APIC 插件如何集成到包含多个主机的工作环境中,这些主机通过 Nexus 9000 交换机组成的结构连接。ML2 的 APIC 机制驱动通过其 REST API 与 APIC 通信。

流程

        +–––––––––––––––––––––––––+
        |                         |
        | Neutron Server          |
        | with ML2 Plugin         |
        |                         |
        |          +–––––––––––+  |
+–––––––+          |   APIC    |  |
|       |          | Mechanism |  |                  +–––––––––––––––––+
|       |          |  Driver   |  |                  |                 |
|  +––––+       +––+–––––––––––+––+      REST API    |   Cisco         |
|  |    |       |   APIC Client   +––––––––––––––––––+   APIC          |
|  |    +–––––––+–––––––––––––––––+                  |                 |
|  |                                                 |                 |
|  |                                                 +–––+–––+–––––––––+
|  |    +–––––––––––+––––––––––––––+                     |   |
|  +––––+ L2 Agent  | Open vSwitch +–––––+               |   |
|       +–––––––––––+––––––––––––––+     |               |   |
|       |                          |     |               |   |
|       |        HOST 1            |     |               |   |
|       |                          |     |      +––––––––+–––|––––––+
|       +––––––––––––––––––––––––––+     |      |            |      |
|                                        +––––––+  +–––––––––+––––––+––+
|                                               |  |                   |
|       +––––––––––+–––––––––––––––+            |  |     Cisco         |
+–––––––+ L2 Agent | Open vSwitch  +––––––––––––+  |   Nexus 9000      |
        +––––––––––+–––––––––––––––+            |  |    Switches       |
        |                          |            +––+                   |
        |        HOST 2            |               |                   |
        |                          |               +–––––––––––––––––––+
        +––––––––––––––––––––––––––+

APIC 机制驱动使用来自 Neutron 的端口、网络和子网更改来更新 APIC。APIC 配置物理交换结构。

APIC 机制驱动旨在与 OVS 机制驱动协同工作,以处理计算节点上的网络操作和端口绑定。

APIC 机制驱动实现以下 Neutron 事件

  • 为计算实例创建/更新端口。(注意:驱动程序不处理端口绑定 - 这留给 OVS 驱动程序。)

  • 创建/删除网络。

  • 创建子网。

备选方案

另一种解决方案是开发单体插件。使用 ML2 机制驱动方法的最大优势在于,它允许我们轻松使用现有的 OVS 代理进行虚拟交换。

数据模型影响

此驱动程序创建三个新模型。这些模型特定于此驱动程序,用于与 APIC 保持同步。

  1. NetworkEPG:跟踪 APIC 中的网络到端点组映射。

  2. PortProfile:跟踪硬件交换机/模块/端口配置。

  3. TenantContract:跟踪在 APIC 上创建的合约和过滤器。

包含一个数据库迁移来创建这些模型的表。

没有更改现有模型。

REST API 影响

无。

安全影响

无。

通知影响

无。

其他最终用户影响

无。

性能影响

配置 APIC 驱动程序的 ML2 的性能将取决于 Neutron 和 APIC 之间链路的性能,以及 APIC 本身的响应速度。

其他部署者影响

部署者必须配置安装以使用 APIC,并使用以下配置变量

  • APIC 的 IP 地址和端口号。

  • 以管理员身份登录 APIC 的用户名和密码。

  • OpenStack 要使用的 VLAN 命名空间和范围。

  • 描述交换结构基础设施的节点、实体和功能配置文件。

  • 计算节点的交换机到主机的映射。

此外,部署者必须配置 ML2 插件,以便在 APIC 机制驱动程序之前包含 openvswitch 机制驱动程序

[ml2]
mechanism_drivers = openvswitch,cisco_apic

开发人员影响

无。

实现

负责人

Arvind Somya <asomya>

Henry Gessau <gessau>

工作项

工作分为两部分

  1. APIC 客户端、模型、配置、单元测试。

    • APIC 客户端是 APIC 的 REST 客户端。它将请求映射到 APIC 的“管理对象”模型。仅提供驱动程序所需的全 APIC 模型子集。

  2. APIC 机制驱动程序和支持代码。

    • 该机制驱动程序实现影响 APIC 的端口、网络和子网方法。它将 Neutron 操作映射到 APIC 的操作。

    • 支持代码包含一个 APIC 管理器,可确保 APIC 状态与 Neutron 同步。

依赖项

没有新的库要求。使用了以下第三方库

  • requests

测试

包含代码的完整单元测试覆盖率。

对于 tempest 测试覆盖,提供了第三方测试。Cisco CI 报告了影响此驱动程序的所有更改。测试在一个设置中运行,该设置具有连接到实时 APIC 和 Cisco Nexus 9000 物理交换机的 OpenStack 部署(devstack)。

文档影响

配置详情。

参考资料

http://www.cisco.com/go/apic