系统设计

介绍

Neutron 动态路由支持将自服务(私有)网络前缀通告给支持动态路由协议(如路由器)的物理网络设备,从而消除了对静态路由的传统依赖。

它通告三类路由

  • 托管在非 DVR 路由器上的浮动 IP 地址的主机路由,下一跳是中心化路由器。

  • 托管在 DVR 路由器上的浮动 IP 地址的主机路由,下一跳是相应的计算节点。

  • 具有地址范围的可直接路由的租户网络的前缀路由,下一跳是中心化路由器,DVR 和 CVR 相同。

有关详细信息,请参阅 路由通告

Neutron 动态路由由 服务插件和代理组成。服务插件实现网络服务扩展,而代理管理动态路由协议对等会话。插件通过 RPC 与代理通信。

架构

下图显示了此功能的架构

 Neutron dynamic Routing System Architecture
+---------------------------------------------------------------+
|                  Dynamic Routing plug-in                      |
|  +---------------------------------------------------------+  |
|  |               Dynamic Routing API/Model                 |  |
|  +---------------------------------------------------------+  |
|  |               Dynamic Routing Agent Scheduler           |  |
|  +---------------------------------------------------------+  |
|                              |                                |
+------------------------------|--------------------------------+
                               |
                               |
                         +-----------+
                         |    RPC    |
                         +-----------+
                               |
                               |
        +----------------------|-------------------------+
        |                                                |
        |                                                |
 +---------------------------+     +---------------------------+
 |   Dynamic Routing Agent1  |     |   Dynamic Routing Agent2  |
 |                           |     |                           |
 |  +---------------------+  |     |  +---------------------+  |
 |  |  Driver Manager     |  |     |  |  Driver Manager     |  |
 |  +---------------------+  |     |  +---------------------+  |
 |  |  Common Driver API  |  |     |  |  Common Driver API  |  |
 |  +---------------------+  |     |  +---------------------+  |
 |            |              |     |            |              |
 |  +---------+-----------+  |     |  +---------+-----------+  |
 |  | os-ken  |  Other    |  |     |  | os-ken  |  Other    |  |
 |  | Driver  |  Drivers  |  |     |  | Driver  |  Drivers  |  |
 |  +---------+-----------+  |     |  +---------+-----------+  |
 |                           |     |                           |
 +---------------------------+     +---------------------------+

动态路由插件

使用动态路由插件,可以启用/禁用 Neutron 中动态路由协议的支持。

动态路由 API

动态路由 API 提供配置动态路由的 API。支持以下动态协议的 API。

BGP

BGP 功能提供三种类型的 API。有关详细信息,请参阅 API 文档

  • BGP Speaker API 用于将 Neutron 路由通告到 Openstack 网络之外。

  • BGP Peer API 用于与远程路由器形成对等关系。

  • BGP DRAgentScheduler API 用于将 BGP Speaker(s) 调度到一个或多个运行动态路由代理的主机上。

注意

BGP 是当前唯一支持的动态路由协议。

动态路由模型

动态路由模型维护数据库并与动态路由代理通信。

动态路由代理调度器

动态路由代理调度器负责调度路由实体。有关详细信息,请参阅 代理调度器

动态路由代理 (DR Agent)

动态路由可以驻留在具有或不具有其他网络服务代理的主机上。它通过 通用驱动程序 API 管理和配置不同的动态路由堆栈。

注意

目前,仅支持与 os-ken 的集成。