提供商网络 - 上游 SLAAC 支持

应该能够在 Neutron 中创建提供商网络,该网络使用上游交换机或路由器来广播 RA(路由器通告),以便实例可以使用 SLAAC 配置其 IPv6 网络,同时仍然利用 Neutron API 进行安全组规则。

https://blueprints.launchpad.net/neutron/+spec/ipv6-provider-nets-slaac

问题描述

希望使用 IPv6 并已在北向网络设备上配置 IPv6 的 OpenStack 部署者,可能希望通过让非 OpenStack 硬件传输 ICMPv6 路由器通告数据包来广播 IPv6 路由。

../../_images/provider-network-slaac.png

提议的变更

OpenStack Neutron 应该支持此配置,并显示实例的正确 IP 地址,因为 Neutron 拥有足够的信息来生成 EUI-64 地址。

备选方案

数据模型影响

REST API 影响

Neutron REST API 用于 IPv6 子网,允许以下组合,并禁止某些组合。 简而言之,当 同时 设置 ipv6_ra_mode 和 ipv6_address_mode 时,它们必须相等。 当仅设置一个属性时,该设置会自动有效。

ipv6_ra_mode

ipv6_address_mode

有效

RA 设置

ATTR_NOT_SPECIFIED

ATTR_NOT_SPECIFIED

ANY

ATTR_NOT_SPECIFIED

slaac

“A=1,M=0,O=0”

ATTR_NOT_SPECIFIED

dhcpv6-stateful

“A=0,M=1,O=1”

ATTR_NOT_SPECIFIED

dhcpv6-stateless

“A=1,M=0,O=1”

slaac

ATTR_NOT_SPECIFIED

“A=1,M=0,O=0”

dhcpv6-stateful

ATTR_NOT_SPECIFIED

“A=0,M=1,O=1”

dhcpv6-stateless

ATTR_NOT_SPECIFIED

“A=1,M=0,O=1”

slaac

slaac

“A=1,M=0,O=0”

dhcpv6-stateful

dhcpv6-stateful

“A=0,M=1,O=1”

dhcpv6-stateless

dhcpv6-stateless

“A=1,M=0,O=1”

slaac

dhcpv6-stateful

no

UNDEF

slaac

dhcpv6-stateless

no

UNDEF

dhcpv6-stateful

slaac

no

UNDEF

dhcpv6-stateful

dhcpv6-stateless

no

UNDEF

dhcpv6-stateless

slaac

no

UNDEF

dhcpv6-stateless

dhcpv6-stateful

no

UNDEF

此蓝图将实现满足将 ipv6_address_mode 设置为“slaac”且 ipv6_ra_mode 未设置的 IPv6 子网所需的功能。

安全影响

通知影响

其他最终用户影响

性能影响

其他部署者影响

  • 此更改将改变 Neutron 在特定配置下的行为,即当为子网设置 IPv6 属性时。 之前,这些属性不起作用。

开发人员影响

实现

  • 将创建将 ipv6_address_mode 设置为 slaacipv6_ra_mode 设置的子网。

  • Neutron 将使用 MAC 地址和 CIDR 计算端口的 IP 地址。

负责人

主要负责人

scollins

工作项

依赖项

  • IPv6 子网属性必须在 API 调用中返回。

测试

  • 添加单元测试以支持仅设置 ipv6_address_mode 的子网。

  • 验证从 ipv6_address_mode 设置的子网分配的端口不会受到 DHCP 代理的影响。

文档影响

需要编写关于此网络配置的文档。

参考资料