Agent¶
Neutron-dynamic-routing 实现了一个名为“DRAgent”的新 agent。该 agent 与位于 neutron 服务器中的 neutron-dynamic-routing 插件通信,以获取路由实体配置。DRAgent 与后端驱动程序交互,以实现所需的动态路由协议功能。有关详细信息,请参阅系统设计文档 系统设计
注意
一个 DRAgent 可以支持多个驱动程序,但目前只有 os-ken 成功集成。
Scheduler¶
Neutron-dynamic-routing scheduler 将路由实体调度到合适的 DRAgent。
BGP Scheduler¶
BGP Speaker 和 DRAgent 具有 1:N 的关联关系,这意味着一个 BGP speaker 可以被调度到多个 DRAgent 上。
可以使用 bgp_drscheduler_driver 配置选项选择要使用的调度算法的不同选项。
StaticScheduler¶
这是最简单的选项,它根本不进行自动调度。相反,它依赖于 API 请求来显式地将 BGP speaker 与 DRAgent 关联起来,并再次取消关联。
示例配置
bgp_drscheduler_driver = neutron_dynamic_routing.services.bgp.scheduler.bgp_dragent_scheduler.StaticScheduler
这是一个将 BGP Speaker 关联/取消关联到/从 DRAgent 的示例。
(neutron) bgp-speaker-list
+--------------------------------------+------+----------+------------+
| id | name | local_as | ip_version |
+--------------------------------------+------+----------+------------+
| 0967eb04-59e5-4ca6-a0b0-d584d8d4a132 | bgp2 | 200 | 4 |
| a73432c3-a3fc-4b1e-9be2-6c32a61df579 | bgp1 | 100 | 4 |
+--------------------------------------+------+----------+------------+
(neutron) agent-list
+--------------------------------------+---------------------------+---------------------+-------------------+-------+----------------+---------------------------+
| id | agent_type | host | availability_zone | alive | admin_state_up | binary |
+--------------------------------------+---------------------------+---------------------+-------------------+-------+----------------+---------------------------+
| 0c21a829-4fd6-4375-8e65-36db4dc434ac | DHCP agent | steve-devstack-test | nova | :-) | True | neutron-dhcp-agent |
| 0f9d6886-910d-4af4-b248-673b22eb9e78 | Metadata agent | steve-devstack-test | | :-) | True | neutron-metadata-agent |
| 5908a304-b9d9-4e8c-a0af-96a066a7c87e | Open vSwitch agent | steve-devstack-test | | :-) | True | neutron-openvswitch-agent |
| ae74e375-6a75-4ebe-b85c-6628d2baf02f | L3 agent | steve-devstack-test | nova | :-) | True | neutron-l3-agent |
| dbd9900e-9d16-444d-afc4-8d0035df5ed5 | BGP dynamic routing agent | steve-devstack-test | | :-) | True | neutron-bgp-dragent |
+--------------------------------------+---------------------------+---------------------+-------------------+-------+----------------+---------------------------+
(neutron) bgp-dragent-speaker-add dbd9900e-9d16-444d-afc4-8d0035df5ed5 bgp1
Associated BGP speaker bgp1 to the Dynamic Routing agent.
(neutron) bgp-speaker-list-on-dragent dbd9900e-9d16-444d-afc4-8d0035df5ed5
+--------------------------------------+------+----------+------------+
| id | name | local_as | ip_version |
+--------------------------------------+------+----------+------------+
| a73432c3-a3fc-4b1e-9be2-6c32a61df579 | bgp1 | 100 | 4 |
+--------------------------------------+------+----------+------------+
(neutron) bgp-dragent-speaker-remove dbd9900e-9d16-444d-afc4-8d0035df5ed5 bgp1
Disassociated BGP speaker bgp1 from the Dynamic Routing agent.
(neutron) bgp-speaker-list-on-dragent dbd9900e-9d16-444d-afc4-8d0035df5ed5
(neutron)
neutron-dynamic-routing scheduler 的 ReST API 定义在 Neutron API 参考 的一部分中。
ChanceScheduler¶
这是默认选项。它将自动将新创建的 BGP speaker 调度到其中一个活动的 DRAgent。当 DRAgent 停止工作时,BGP speaker 将从其取消关联,并尝试将其调度到另一个 agent。请注意,此操作将覆盖通过 API 执行的任何手动关联,因此您只想在非常基本的部署中使用此调度器。
示例配置
bgp_drscheduler_driver = neutron_dynamic_routing.services.bgp.scheduler.bgp_dragent_scheduler.ChanceScheduler