Cisco Nexus1000V交换机的ML2机制驱动¶
https://blueprints.launchpad.net/neutron/+spec/ml2-n1kv-mechanism-driver
此蓝图的目的是在OpenStack neutron中添加对Cisco Nexus1000V交换机的支持,作为ML2机制驱动。
问题描述¶
Cisco Nexus 1000V for KVM是一种分布式虚拟交换机,可与基于Linux内核的虚拟机(KVM)开源虚拟机管理程序配合使用。
虚拟管理模块 (VSM):基于Cisco NX-OS软件的Cisco Nexus1000V分布式虚拟交换机的控制器。
虚拟以太网模块 (VEM):安装在计算节点上的数据平面软件。所有VEM都由VSM控制。
网络配置文件:用于一个或多个网络的容器。初始版本将支持VLAN和VXLAN类型的网络配置文件。
策略配置文件:策略配置文件是定义网络策略并在Nexus 1000V系统中应用于虚拟机端口的主要机制。
虚拟机网络:虚拟机网络指的是网络段和策略配置文件的组合。它维护着使用上述组合的端口数量。
此蓝图提出了将Cisco Nexus1000V单体插件迁移到ML2插件机制驱动的第一个步骤。此机制驱动将通过REST API与VSM交互,以动态配置和管理通过OpenStack创建的实例的网络。
提议的变更¶
下图提供了Cisco Nexus1000V交换机和OpenStack组件之间交互的高层概述。
流程
+--------------------------+
| Neutron Server |
| with ML2 Plugin |
| |
| +------------+
| | N1KV |
| | Mechanism | +--------------------+
+-------| | Driver | | |
| | +-+--+---------+ REST API | Cisco N1KV |
| +---+ | N1KV Client +-----------------+ |
| | +-----------+--------------+ | Virtual |
| | | Supervisor |
| | | Module |
| | +--------------------------+ | |
| | | N1KV VEM +-----------------+ |
| | +--------------------------+ +-+------------------+
| | | | |
| +---+ Compute 1 | |
| | | |
| +--------------------------+ |
| |
| |
| +--------------------------+ |
| | N1KV VEM +-------------------+
| +--------------------------+
| | |
+-------+ Compute 2 |
| |
+--------------------------+
Cisco Nexus1000V机制驱动将处理网络、子网和端口的所有postcommit事件。这些数据将被用于配置VSM。VSM和VEM将负责在计算节点上启动端口。
该机制驱动将在VSM上初始化默认网络配置文件和策略配置文件。所有网络都将绑定到此默认网络配置文件。所有端口都将绑定到此默认策略配置文件。一旦支持了机制驱动的扩展,动态绑定网络和策略配置文件将在未来实现。
数据模型影响¶
此机制驱动引入了四个新的表,这些表是特定于N1KV机制驱动的。
NetworkProfile:存储网络配置文件名称和类型。
N1kvNetworkBinding:存储网络配置文件和网络之间的绑定。
PolicyProfile:存储策略配置文件名称和UUID。
N1kvPortBinding:存储策略配置文件和端口之间的绑定。
包含一个数据库迁移来创建这些模型的表。
当我们在驱动程序中添加对扩展的支持时,将提供一个脚本来迁移单体插件用户的数据,作为此驱动程序的下一次迭代。
没有更改现有的模型。
REST API 影响¶
无。
安全影响¶
无。
通知影响¶
无。
其他最终用户影响¶
无。
性能影响¶
Cisco N1KV ML2机制驱动的性能将取决于VSM的响应速度。
IPv6 影响¶
无。
其他部署者影响¶
部署者必须提供以下信息才能连接到VSM。
VSM的IP地址。
登录VSM的管理员凭据(用户名和密码)。
将“cisco_n1kv”添加为ML2驱动程序。
添加“vlan”类型驱动程序。
添加“vxlan”类型驱动程序。
这些应在以下位置提供:/opt/stack/neutron/etc/neutron/plugins/ml2/ml2_conf_cisco.ini
示例:[ml2_cisco_n1kv]
# N1KV格式。# [N1KV:<VSM的IP地址>] # username=<凭据用户名> # password=<凭据密码>
一旦Cisco Nexus1000V ML2机制驱动实现了与单体插件的特性对等,Nexus1000V单体插件将被弃用。特性对等表示完全支持现有的Nexus1000V特定资源和属性扩展。
开发人员影响¶
无。
社区影响¶
此更改为ML2插件添加了一个新的机制驱动程序,与社区方向保持一致。
备选方案¶
另一种选择是使用现有的Nexus1000V单体插件。我们添加此蓝图是为了与其他机制驱动程序互操作并与社区方向保持一致。
实现¶
负责人¶
- 主要负责人
<abhraut>
- 其他贡献者
<sthillma>
工作项¶
工作项目大致可以分为以下任务:* 机制驱动程序以处理网络/子网/端口CRUD请求。 * N1KV客户端以执行对VSM的HTTP请求。 * 单元测试用例以测试机制驱动程序和客户端代码。 * Tempest测试用例以执行功能测试。
依赖项¶
使用了以下第三方库
requests:Requests是一个用于发出HTTP请求的python库,文档完善,地址为http://docs.python-requests.org/en/latest/ 链接到代码 -> https://github.com/kennethreitz/requests
测试¶
Tempest 测试¶
将提供第三方测试。Cisco CI将报告影响此机制驱动程序的所有更改。测试将在连接到VSM和VEM的OpenStack部署设置上运行。
功能测试¶
将通过模拟VSM响应添加新的功能测试。
API 测试¶
无。
文档影响¶
用户文档¶
此机制驱动程序的配置详细信息。
开发人员文档¶
无。