BGP 动态路由¶
BGP 动态路由能够将自助服务(私有)网络前缀通告给支持 BGP 的物理网络设备,例如路由器,从而消除了对静态路由的传统依赖。此功能依赖于 地址范围,并且需要了解其操作才能正确部署。
BGP 动态路由由一个服务插件和一个代理组成。服务插件实现网络服务扩展,而代理管理 BGP 对等会话。云管理员使用 CLI 或 API 创建和配置 BGP 扬声器,并将其手动调度到一个或多个运行代理的主机上。代理可以驻留在具有或不具有其他网络服务代理的主机上。前缀通告取决于外部网络与 BGP 扬声器的绑定以及外部和内部 IP 地址范围或子网的地址范围。
注意
虽然自助服务网络通常使用私有 IP 地址范围(RFC1918)用于 IPv4 子网,但 BGP 动态路由可以通告任何 IPv4 地址范围。
示例配置¶
示例配置涉及以下组件
一个 BGP 代理。
一个地址范围,包含用于提供商网络的 IP 地址范围 203.0.113.0/24,以及用于自助服务网络的 IP 地址范围 192.0.2.0/25 和 192.0.2.128/25。
一个使用 IP 地址范围 203.0.113.0/24 的提供商网络。
三个自助服务网络。
自助服务网络 1 和 2 使用地址范围内的 IP 地址范围。
自助服务网络 3 使用唯一的 IP 地址范围 198.51.100.0/24,以演示 BGP 扬声器不会通告地址范围外的任何前缀。
三个路由器。每个路由器将一个自助服务网络连接到提供商网络。
路由器 1 包含 IP 地址 203.0.113.11 和 192.0.2.1
路由器 2 包含 IP 地址 203.0.113.12 和 192.0.2.129
路由器 3 包含 IP 地址 203.0.113.13 和 198.51.100.1
一个预先存在的对等网络 10.0.0.0/24,位于运行 neutron BGP 动态路由代理的主机上,以促进与对等方的 BGP 通信。10.0.0.1 是主机的地址,10.0.0.2 是对等方的地址。
控制器节点¶
在
neutron.conf文件中,启用传统的第 3 层和 BGP 动态路由服务插件[DEFAULT] service_plugins = neutron_dynamic_routing.services.bgp.bgp_plugin.BgpPlugin,neutron.services.l3_router.l3_router_plugin.L3RouterPlugin
代理节点¶
在
bgp_dragent.ini文件中配置驱动程序。
[BGP] bgp_speaker_driver = neutron_dynamic_routing.services.bgp.agent.driver.os_ken.driver.OsKenBgpDriver
注意
代理当前仅支持 os-ken BGP 驱动程序。
配置路由器 ID。
[BGP] bgp_router_id = ROUTER_ID
将
ROUTER_ID替换为合适的唯一的 32 位数字,通常是运行代理的主机上的 IPv4 地址。例如,10.0.0.1。
验证服务操作¶
获取管理项目凭据。
验证每个 BGP 动态路由代理的存在和操作。
$ openstack network agent list --agent-type bgp +--------------------------------------+---------------------------+------------+-------------------+-------+-------+---------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+---------------------------+------------+-------------------+-------+-------+---------------------+ | 37729181-2224-48d8-89ef-16eca8e2f77e | BGP dynamic routing agent | controller | None | :-) | UP | neutron-bgp-dragent | +--------------------------------------+---------------------------+------------+-------------------+-------+-------+---------------------+
创建地址范围和子网池¶
创建一个地址范围。提供商(外部)和自助服务网络必须属于同一个地址范围,才能使代理通告这些自助服务网络前缀。
$ openstack address scope create --share --ip-version 4 bgp +------------+--------------------------------------+ | Field | Value | +------------+--------------------------------------+ | headers | | | id | f71c958f-dbe8-49a2-8fb9-19c5f52a37f1 | | ip_version | 4 | | name | bgp | | project_id | 86acdbd1d72745fd8e8320edd7543400 | | shared | True | +------------+--------------------------------------+
创建子网池。提供商和自助服务网络使用不同的池。
创建提供商网络池。
$ openstack subnet pool create --pool-prefix 203.0.113.0/24 \ --address-scope bgp provider +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | address_scope_id | f71c958f-dbe8-49a2-8fb9-19c5f52a37f1 | | created_at | 2017-01-12T14:58:57Z | | default_prefixlen | 8 | | default_quota | None | | description | | | headers | | | id | 63532225-b9a0-445a-9935-20a15f9f68d1 | | ip_version | 4 | | is_default | False | | max_prefixlen | 32 | | min_prefixlen | 8 | | name | provider | | prefixes | 203.0.113.0/24 | | project_id | 86acdbd1d72745fd8e8320edd7543400 | | revision_number | 1 | | shared | False | | tags | [] | | updated_at | 2017-01-12T14:58:57Z | +-------------------+--------------------------------------+
创建自助服务网络池。
$ openstack subnet pool create --pool-prefix 192.0.2.0/25 \ --pool-prefix 192.0.2.128/25 --address-scope bgp \ --share selfservice +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | address_scope_id | f71c958f-dbe8-49a2-8fb9-19c5f52a37f1 | | created_at | 2017-01-12T15:02:31Z | | default_prefixlen | 8 | | default_quota | None | | description | | | headers | | | id | 8d8270b1-b194-4b7e-914c-9c741dcbd49b | | ip_version | 4 | | is_default | False | | max_prefixlen | 32 | | min_prefixlen | 8 | | name | selfservice | | prefixes | 192.0.2.0/25, 192.0.2.128/25 | | project_id | 86acdbd1d72745fd8e8320edd7543400 | | revision_number | 1 | | shared | True | | tags | [] | | updated_at | 2017-01-12T15:02:31Z | +-------------------+--------------------------------------+
创建提供商和自助服务网络¶
创建提供商网络。
$ openstack network create provider --external --provider-physical-network \ provider --provider-network-type flat Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2016-12-21T08:47:41Z | | description | | | headers | | | id | 190ca651-2ee3-4a4b-891f-dedda47974fe | | ipv4_address_scope | None | | ipv6_address_scope | None | | is_default | False | | mtu | 1450 | | name | provider | | port_security_enabled | True | | project_id | c961a8f6d3654657885226378ade8220 | | provider:network_type | flat | | provider:physical_network | provider | | provider:segmentation_id | 66 | | revision_number | 3 | | router:external | External | | shared | False | | status | ACTIVE | | subnets | | | tags | [] | | updated_at | 2016-12-21T08:47:41Z | +---------------------------+--------------------------------------+
在提供商网络上创建一个子网,使用来自提供商子网池的 IP 地址范围。
$ openstack subnet create --subnet-pool provider \ --prefix-length 24 --gateway 203.0.113.1 --network provider \ --allocation-pool start=203.0.113.11,end=203.0.113.254 provider +-------------------+--------------------------------------+ | Field | Value | +-------------------+--------------------------------------+ | allocation_pools | 203.0.113.11-203.0.113.254 | | cidr | 203.0.113.0/24 | | created_at | 2016-03-17T23:17:16 | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 203.0.113.1 | | host_routes | | | id | 8ed65d41-2b2a-4f3a-9f92-45adb266e01a | | ip_version | 4 | | ipv6_address_mode | None | | ipv6_ra_mode | None | | name | provider | | network_id | 68ec148c-181f-4656-8334-8f4eb148689d | | project_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | segment_id | None | | service_types | | | subnetpool_id | 3771c0e7-7096-46d3-a3bd-699c58e70259 | | tags | | | updated_at | 2016-03-17T23:17:16 | +-------------------+--------------------------------------+
注意
从
.11开始的 IP 地址分配池可以提高图表的清晰度。您可以安全地省略它。创建自助服务网络。
$ openstack network create selfservice1 Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2016-12-21T08:49:38Z | | description | | | headers | | | id | 9d842606-ef3d-4160-9ed9-e03fa63aed96 | | ipv4_address_scope | None | | ipv6_address_scope | None | | mtu | 1450 | | name | selfservice1 | | port_security_enabled | True | | project_id | c961a8f6d3654657885226378ade8220 | | provider:network_type | vxlan | | provider:physical_network | None | | provider:segmentation_id | 106 | | revision_number | 3 | | router:external | Internal | | shared | False | | status | ACTIVE | | subnets | | | tags | [] | | updated_at | 2016-12-21T08:49:38Z | +---------------------------+--------------------------------------+ $ openstack network create selfservice2 Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2016-12-21T08:50:05Z | | description | | | headers | | | id | f85639e1-d23f-438e-b2b1-f40570d86b1c | | ipv4_address_scope | None | | ipv6_address_scope | None | | mtu | 1450 | | name | selfservice2 | | port_security_enabled | True | | project_id | c961a8f6d3654657885226378ade8220 | | provider:network_type | vxlan | | provider:physical_network | None | | provider:segmentation_id | 21 | | revision_number | 3 | | router:external | Internal | | shared | False | | status | ACTIVE | | subnets | | | tags | [] | | updated_at | 2016-12-21T08:50:05Z | +---------------------------+--------------------------------------+ $ openstack network create selfservice3 Created a new network: +---------------------------+--------------------------------------+ | Field | Value | +---------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2016-12-21T08:50:35Z | | description | | | headers | | | id | eeccdb82-5cf4-4999-8ab3-e7dc99e7d43b | | ipv4_address_scope | None | | ipv6_address_scope | None | | mtu | 1450 | | name | selfservice3 | | port_security_enabled | True | | project_id | c961a8f6d3654657885226378ade8220 | | provider:network_type | vxlan | | provider:physical_network | None | | provider:segmentation_id | 86 | | revision_number | 3 | | router:external | Internal | | shared | False | | status | ACTIVE | | subnets | | | tags | [] | | updated_at | 2016-12-21T08:50:35Z | +---------------------------+--------------------------------------+
在最初两个自助服务网络上创建一个子网,使用来自自助服务子网池的 IP 地址范围。
$ openstack subnet create --network selfservice1 --subnet-pool selfservice \ --prefix-length 25 selfservice1 +-------------------+----------------------------------------------------+ | Field | Value | +-------------------+----------------------------------------------------+ | allocation_pools | 192.0.2.2-192.0.2.127 | | cidr | 192.0.2.0/25 | | created_at | 2016-03-17T23:20:20 | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 198.51.100.1 | | host_routes | | | id | 8edd3dc2-df40-4d71-816e-a4586d61c809 | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | selfservice1 | | network_id | be79de1e-5f56-11e6-9dfb-233e41cec48c | | project_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | revision_number | 1 | | subnetpool_id | c7e9737a-cfd3-45b5-a861-d1cee1135a92 | | tags | [] | | tenant_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | updated_at | 2016-03-17T23:20:20 | +-------------------+----------------------------------------------------+ $ openstack subnet create --network selfservice2 --subnet-pool selfservice \ --prefix-length 25 selfservice2 +-------------------+------------------------------------------------+ | Field | Value | +-------------------+------------------------------------------------+ | allocation_pools | 192.0.2.130-192.0.2.254 | | cidr | 192.0.2.128/25 | | created_at | 2016-03-17T23:20:20 | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 192.0.2.129 | | host_routes | | | id | 8edd3dc2-df40-4d71-816e-a4586d61c809 | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | selfservice2 | | network_id | c1fd9846-5f56-11e6-a8ac-0f998d9cc0a2 | | project_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | revision_number | 1 | | subnetpool_id | c7e9737a-cfd3-45b5-a861-d1cee1135a92 | | tags | [] | | tenant_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | updated_at | 2016-03-17T23:20:20 | +-------------------+------------------------------------------------+
在最后一个自助服务网络上创建一个子网,使用地址范围外的 IP 地址范围。
$ openstack subnet create --network selfservice3 --prefix 198.51.100.0/24 subnet3 +-------------------+----------------------------------------------------+ | Field | Value | +-------------------+----------------------------------------------------+ | allocation_pools | 198.51.100.2-198.51.100.254 | | cidr | 198.51.100.0/24 | | created_at | 2016-03-17T23:20:20 | | description | | | dns_nameservers | | | enable_dhcp | True | | gateway_ip | 198.51.100.1 | | host_routes | | | id | cd9f9156-5f59-11e6-aeec-172ec7ee939a | | ip_version | 4 | | ipv6_address_mode | | | ipv6_ra_mode | | | name | selfservice3 | | network_id | c283dc1c-5f56-11e6-bfb6-efc30e1eb73b | | project_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | revision_number | 1 | | subnetpool_id | | | tags | [] | | tenant_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | updated_at | 2016-03-17T23:20:20 | +-------------------+----------------------------------------------------+
创建和配置路由器¶
创建路由器。
$ openstack router create router1 +-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2017-01-10T13:15:19Z | | description | | | distributed | False | | external_gateway_info | null | | flavor_id | None | | ha | False | | headers | | | id | 3f6f4ef8-63be-11e6-bbb3-2fbcef363ab8 | | name | router1 | | project_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | revision_number | 1 | | routes | | | status | ACTIVE | | tags | [] | | updated_at | 2017-01-10T13:15:19Z | +-------------------------+--------------------------------------+ $ openstack router create router2 +-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2017-01-10T13:15:19Z | | description | | | distributed | False | | external_gateway_info | null | | flavor_id | None | | ha | False | | headers | | | id | 3fd21a60-63be-11e6-9c95-5714c208c499 | | name | router2 | | project_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | revision_number | 1 | | routes | | | status | ACTIVE | | tags | [] | | updated_at | 2017-01-10T13:15:19Z | +-------------------------+--------------------------------------+ $ openstack router create router3 +-------------------------+--------------------------------------+ | Field | Value | +-------------------------+--------------------------------------+ | admin_state_up | UP | | availability_zone_hints | | | availability_zones | | | created_at | 2017-01-10T13:15:19Z | | description | | | distributed | False | | external_gateway_info | null | | flavor_id | None | | ha | False | | headers | | | id | 40069a4c-63be-11e6-9ecc-e37c1eaa7e84 | | name | router3 | | project_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | | revision_number | 1 | | routes | | | status | ACTIVE | | tags | [] | | updated_at | 2017-01-10T13:15:19Z | +-------------------------+--------------------------------------+
对于每个路由器,添加一个自助服务子网作为路由器上的接口。
$ openstack router add subnet router1 selfservice1 $ openstack router add subnet router2 selfservice2 $ openstack router add subnet router3 selfservice3
将提供商网络作为每个路由器的网关添加。
$ openstack router set --external-gateway provider router1 $ openstack router set --external-gateway provider router2 $ openstack router set --external-gateway provider router3
创建和配置 BGP 扬声器¶
BGP 扬声器通告符合条件的自助服务网络和使用这些网络的实例的浮动 IP 地址的下一跳 IP 地址。
创建 BGP 扬声器。
$ openstack bgp speaker create --ip-version 4 \ --local-as LOCAL_AS bgpspeaker Created a new bgp_speaker: +-----------------------------------+--------------------------------------+ | Field | Value | +-----------------------------------+--------------------------------------+ | advertise_floating_ip_host_routes | True | | advertise_tenant_networks | True | | id | 5f227f14-4f46-4eca-9524-fc5a1eabc358 | | ip_version | 4 | | local_as | 1234 | | name | bgpspeaker | | networks | | | peers | | | tenant_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | +-----------------------------------+--------------------------------------+
将
LOCAL_AS替换为合适的本地自治系统编号。示例配置使用 AS 1234。BGP 扬声器需要与提供商网络关联才能确定符合条件的前缀。关联会构建一个包含所有具有在同一地址范围内的提供商和自助服务网络上的网关的虚拟路由器的列表,以便 BGP 扬声器可以通告自助服务网络前缀,并将相应的路由器作为下一跳 IP 地址。将 BGP 扬声器与提供商网络关联。
$ openstack bgp speaker add network bgpspeaker provider Added network provider to BGP speaker bgpspeaker.
验证提供商网络与 BGP 扬声器的关联。
$ openstack bgp speaker show bgpspeaker +-----------------------------------+--------------------------------------+ | Field | Value | +-----------------------------------+--------------------------------------+ | advertise_floating_ip_host_routes | True | | advertise_tenant_networks | True | | id | 5f227f14-4f46-4eca-9524-fc5a1eabc358 | | ip_version | 4 | | local_as | 1234 | | name | bgpspeaker | | networks | 68ec148c-181f-4656-8334-8f4eb148689d | | peers | | | tenant_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | +-----------------------------------+--------------------------------------+
验证 BGP 扬声器通告的前缀和下一跳 IP 地址。
$ openstack bgp speaker list advertised routes bgpspeaker +-----------------+--------------+ | Destination | Nexthop | +-----------------+--------------+ | 192.0.2.0/25 | 203.0.113.11 | | 192.0.2.128/25 | 203.0.113.12 | +-----------------+--------------+
创建一个 BGP 对等体。
$ openstack bgp peer create --peer-ip 10.0.0.2 \ --remote-as REMOTE_AS bgppeer Created a new bgp_peer: +-----------+--------------------------------------+ | Field | Value | +-----------+--------------------------------------+ | auth_type | none | | id | 35c89ca0-ac5a-4298-a815-0b073c2362e9 | | name | bgppeer | | peer_ip | 10.0.0.2 | | remote_as | 4321 | | tenant_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | +-----------+--------------------------------------+
将
REMOTE_AS替换为合适的远程自治系统编号。示例配置使用 AS 4321,这将触发 EBGP 对等。注意
包含 BGP 代理的主机必须具有与提供商路由器的第 3 层连接。
将 BGP 对等体添加到 BGP 扬声器。
$ openstack bgp speaker add peer bgpspeaker bgppeer Added BGP peer bgppeer to BGP speaker bgpspeaker.
验证将 BGP 对等体添加到 BGP 扬声器。
$ openstack bgp speaker show bgpspeaker +-----------------------------------+--------------------------------------+ | Field | Value | +-----------------------------------+--------------------------------------+ | advertise_floating_ip_host_routes | True | | advertise_tenant_networks | True | | id | 5f227f14-4f46-4eca-9524-fc5a1eabc358 | | ip_version | 4 | | local_as | 1234 | | name | bgpspeaker | | networks | 68ec148c-181f-4656-8334-8f4eb148689d | | peers | 35c89ca0-ac5a-4298-a815-0b073c2362e9 | | tenant_id | b3ac05ef10bf441fbf4aa17f16ae1e6d | +-----------------------------------+--------------------------------------+
注意
在创建对等会话后,无法更改本地或远程自治系统编号。
将 BGP 扬声器调度到代理¶
与大多数代理不同,BGP 扬声器需要手动调度到代理。BGP 扬声器仅在调度到代理后才会形成对等会话并开始前缀通告。将 BGP 扬声器调度到代理
37729181-2224-48d8-89ef-16eca8e2f77e。$ openstack bgp dragent add speaker 37729181-2224-48d8-89ef-16eca8e2f77e bgpspeaker Associated BGP speaker bgpspeaker to the Dynamic Routing agent.
验证将 BGP 扬声器调度到代理。
$ openstack bgp dragent list --bgp-speaker bgpspeaker +--------------------------------------+------------+-------+-------+ | ID | Host | State | Alive | +--------------------------------------+------------+-------+-------+ | 37729181-2224-48d8-89ef-16eca8e2f77e | controller | True | :-) | +--------------------------------------+------------+-------+-------+
前缀通告¶
BGP 动态路由通告自助服务网络的前缀和浮动 IP 地址的主机路由。
通告自助服务网络需要满足以下条件
外部和自助服务网络位于同一个地址范围。
路由器包含自助服务子网上的接口以及外部网络上的网关。
BGP 扬声器与提供具有路由器上网关的外部网络关联。
BGP 扬声器具有将
advertise_tenant_networks属性设置为True。
通告浮动 IP 地址需要满足以下条件
具有浮动 IP 地址绑定的路由器包含外部网络上的网关,该网络与 BGP 扬声器关联。
BGP 扬声器具有将
advertise_floating_ip_host_routes属性设置为True。
与分布式虚拟路由器 (DVR) 配合使用¶
对于浮动 IP 和 IPv4 固定 IP 地址,BGP 扬声器通告对应计算节点上的浮动 IP 代理网关作为下一跳 IP 地址。在使用 IPv6 固定 IP 地址时,BGP 扬声器通告 DVR SNAT 节点作为下一跳 IP 地址。
例如,考虑以下组件
一个使用 IP 地址范围 203.0.113.0/24 的提供商网络,并支持浮动 IP 地址 203.0.113.101、203.0.113.102 和 203.0.113.103。
一个使用 IP 地址范围 198.51.100.0/24 的自助服务网络。
具有固定 IP 198.51.100.11、198.51.100.12 和 198.51.100.13 的实例
SNAT 网关位于 203.0.113.11。
浮动 IP 代理网关(每个计算节点一个)位于 203.0.113.12、203.0.113.13 和 203.0.113.14。
三个实例,每个计算节点一个,每个实例都有一个浮动 IP 地址。
advertise_tenant_networks设置为 BGP 扬声器上的False
$ openstack bgp speaker list advertised routes bgpspeaker
+------------------+--------------+
| Destination | Nexthop |
+------------------+--------------+
| 198.51.100.0/24 | 203.0.113.11 |
| 203.0.113.101/32 | 203.0.113.12 |
| 203.0.113.102/32 | 203.0.113.13 |
| 203.0.113.103/32 | 203.0.113.14 |
+------------------+--------------+
当浮动 IP 被取消关联并且 advertise_tenant_networks 设置为 True 时,将通告以下路由
$ openstack bgp speaker list advertised routes bgpspeaker
+------------------+--------------+
| Destination | Nexthop |
+------------------+--------------+
| 198.51.100.0/24 | 203.0.113.11 |
| 198.51.100.11/32 | 203.0.113.12 |
| 198.51.100.12/32 | 203.0.113.13 |
| 198.51.100.13/32 | 203.0.113.14 |
+------------------+--------------+
您还可以识别您环境中的浮动 IP 代理网关,以帮助验证 BGP 扬声器的操作。
$ openstack port list --device-owner network:floatingip_agent_gateway
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------------------------+
| ID | Name | MAC Address | Fixed IP Addresses |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------------------------+
| 87cf2970-4970-462e-939e-00e808295dfa | | fa:16:3e:7c:68:e3 | ip_address='203.0.113.12', subnet_id='8ed65d41-2b2a-4f3a-9f92-45adb266e01a' |
| 8d218440-0d2e-49d0-8a7b-3266a6146dc1 | | fa:16:3e:9d:78:cf | ip_address='203.0.113.13', subnet_id='8ed65d41-2b2a-4f3a-9f92-45adb266e01a' |
| 87cf2970-4970-462e-939e-00e802281dfa | | fa:16:3e:6b:18:e0 | ip_address='203.0.113.14', subnet_id='8ed65d41-2b2a-4f3a-9f92-45adb266e01a' |
+--------------------------------------+------+-------------------+--------------------------------------------------------------------------------------------------------+
IPv6¶
BGP 动态路由支持通过 IPv6 进行对等,并通告 IPv6 前缀。
要启用通过 IPv6 进行对等,请创建一个 BGP 对等体,并使用 IPv6 地址作为
peer_ip。要启用通告 IPv6 前缀,请创建一个具有
ip_version=6和 BGP 扬声器具有ip_version=6的地址范围。
注意
DVR 缺乏直接通过浮动 IP 代理网关端口将路由路由到固定 IPv6 地址的支持,从而阻止 BGP 扬声器通告 /128 主机路由。
高可用性¶
BGP 动态路由支持将 BGP 扬声器调度到多个代理,从而有效地将对同一对等体的通告前缀数量增加一倍。如果一个代理失败,对等体将继续从一个或多个运行的代理接收通告。
显示可用的动态路由代理。
$ openstack network agent list --agent-type bgp +--------------------------------------+---------------------------+------- --+-------------------+-------+-------+---------------------------+ | ID | Agent Type | Host | Availability Zone | Alive | State | Binary | +--------------------------------------+---------------------------+----------+-------------------+-------+-------+---------------------------+ | 37729181-2224-48d8-89ef-16eca8e2f77e | BGP dynamic routing agent | bgp-ha1 | None | :-) | UP | neutron-bgp-dragent | | 1a2d33bb-9321-30a2-76ab-22eff3d2f56a | BGP dynamic routing agent | bgp-ha2 | None | :-) | UP | neutron-bgp-dragent | +--------------------------------------+---------------------------+----------+-------------------+-------+-------+---------------------------+
将 BGP 扬声器调度到多个代理。
$ openstack bgp dragent add speaker 37729181-2224-48d8-89ef-16eca8e2f77e bgpspeaker Associated BGP speaker bgpspeaker to the Dynamic Routing agent. $ openstack bgp dragent add speaker 1a2d33bb-9321-30a2-76ab-22eff3d2f56a bgpspeaker Associated BGP speaker bgpspeaker to the Dynamic Routing agent. $ openstack bgp dragent list --bgp-speaker bgpspeaker +--------------------------------------+---------+-------+-------+ | ID | Host | State | Alive | +--------------------------------------+---------+-------+-------+ | 37729181-2224-48d8-89ef-16eca8e2f77e | bgp-ha1 | True | :-) | | 1a2d33bb-9321-30a2-76ab-22eff3d2f56a | bgp-ha2 | True | :-) | +--------------------------------------+---------+-------+-------+