提供商网络 - 上游 SLAAC 支持¶
应该能够在 Neutron 中创建提供商网络,该网络使用上游交换机或路由器来广播 RA(路由器通告),以便实例可以使用 SLAAC 配置其 IPv6 网络,同时仍然利用 Neutron API 进行安全组规则。
https://blueprints.launchpad.net/neutron/+spec/ipv6-provider-nets-slaac
问题描述¶
希望使用 IPv6 并已在北向网络设备上配置 IPv6 的 OpenStack 部署者,可能希望通过让非 OpenStack 硬件传输 ICMPv6 路由器通告数据包来广播 IPv6 路由。
提议的变更¶
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 子网所需的功能。
安全影响¶
无
通知影响¶
无
其他最终用户影响¶
此更改需要在 python-neutronclient 中支持两个 IPv6 子网属性 - 目前正在审查中
性能影响¶
无
其他部署者影响¶
此更改将改变 Neutron 在特定配置下的行为,即当为子网设置 IPv6 属性时。 之前,这些属性不起作用。
开发人员影响¶
无
实现¶
将创建将 ipv6_address_mode 设置为 slaac 且 ipv6_ra_mode 未 设置的子网。
Neutron 将使用 MAC 地址和 CIDR 计算端口的 IP 地址。
负责人¶
- 主要负责人
scollins
工作项¶
依赖项¶
IPv6 子网属性必须在 API 调用中返回。
测试¶
添加单元测试以支持仅设置 ipv6_address_mode 的子网。
验证从 ipv6_address_mode 设置的子网分配的端口不会受到 DHCP 代理的影响。
文档影响¶
需要编写关于此网络配置的文档。