Neutron/Spec-NVPPlugin-MacLearning
< Neutron
NVP 插件的 MAC 学习扩展支持
范围
此蓝图的目的是在 NVP 插件中实现对 mac learning API 扩展的支持。
用例
此蓝图的使用场景是允许在逻辑端口上启用/禁用 mac learning 功能。NVP 模型中的“学习 MAC 地址”基于 OVS vSwitch 将 MAC 地址发送到控制器,并基于与虚拟机管理平台的集成。通过此功能,MAC 地址可以在边缘学习,从而允许 VM 使用任何 MAC 地址。通过逻辑端口学习其他 MAC 地址对于定义连接到该逻辑端口的接口后面的多个 MAC 地址是必需的。这将允许嵌套的虚拟机管理程序,例如,在通过 NVP 虚拟化的网络环境中正确运行,这在开发/测试环境中尤其重要。
实现概述
该实现将以与端口安全支持实现相同的方式进行。基本上,插件将提供用于处理逻辑端口和 mac learning 状态之间绑定的数据模型类;插件还将处理操作的授权;最后,插件将在适当的情况下扩展响应,包括 mac learning 属性。
数据模型变更
建议的数据模型更改与此扩展在其他插件中实现的方式一致
|| MacLearningState || || port_id || String || ForeignKey('ports.id', ondelete="CASCADE" || primary_key=True || || mac_learning_enabled || Boolean || nullable=False ||
配置变量
无
API
此蓝图不会更改 API,但是使用此扩展,端口创建请求可以指定一个 mac_learning_enabled 属性来设置指定端口上的 mac learning 状态。
测试用例
将向 test_maclearning 模块添加 NVP 特定的单元测试,以验证插件中的代码。
客户端变更
python-quantumclient 在处理扩展属性方面非常智能。要利用此扩展,只需在 CLI 上指定一个 --mac_learning_enabled [ True | False ] 选项即可。因此,以下命令是可能的
- quantum port-create $network_label --mac-learning-enabled
- quantum port-update $port_label --mac-learning-enabled False
当您显示端口属性时,mac learning 状态仅在设置为 True 时才会出现。