Networking-zvm
概述
此插件用于支持 z/VM 上的 Quantum,并设计为与 OpenVSwitch 插件兼容。对于初始版本,仅提供 Quantum z/VM agent 与 Quantum Openvswitch 插件一起工作。
代码链接
(您可以在那里找到最新的代码审查链接)
- Nova z/VM 插件
https://blueprints.launchpad.net/nova/+spec/zvm-plugin
- Quantum z/VM 插件
https://blueprints.launchpad.net/quantum/+spec/quantum-zvm-plugin
z/VM 和 z/VM 网络
z/VM 是一种基于 64 位 z/Architecture 的虚拟机监控程序,现在具有多系统虚拟化和虚拟服务器移动性。z/VM 提供广泛的网络和连接选项,并符合许多行业标准。有关 z/VM 网络概念和参考,请参阅 http://www.vm.ibm.com/networking/
Quantum z/VM 插件的初始版本提供以下网络选项。z/VM 虚拟交换机 (vswitch) 用于在 OpenStack 环境中提供网络支持。
- 扁平网络
在这种情况下,网络由单个未分区空间组成。
- VLAN
基于 z/VM VSwitch 支持,支持基于用户的 VLAN。每个用户(客户操作系统)可以分配一个或多个 VLAN ID。
组件
- Quantum z/VM Agent
Quantum z/VM agent 负责配置 z/VM 网络,并将 VM 虚拟网络适配器 (NIC) 连接到 Quantum 管理的所需 vswitch。每个 VM 可以有多个 NIC 连接到不同的网络。
- Quantum 插件
Quantum z/VM agent 设计为与 OpenVSwitch 插件兼容,用于 VLAN / 扁平网络。
- Nova Compute Quantum Vif 插件
Quantum Vif 插件本身是 Nova 项目的一部分,可以在配置文件中选择。
架构
Quantum z/VM 插件/agent 将与 xCAT REST api 通信以控制/配置 z/VM。 此图片 显示了 xCAT 和 zVM 的架构
xCAT 可用于管理跨多个 z/VM 分区扩展的虚拟服务器。xCAT 管理节点 (MN) 在任何 Linux 虚拟服务器上运行。它使用在特权 Linux 虚拟服务器上运行的 System z 硬件控制点 (zHCP) 管理每个 z/VM 分区。zHCP 接口与 z/VM 系统管理 API (SMAPI)、目录管理器 (DirMaint) 和控制程序层 (CP) 交互以管理 z/VM 分区。它利用 C socket 接口与 SMAPI 层通信,并利用 VMCP Linux 模块与 CP 层通信。
为了支持 z/VM 虚拟网络,Quantum z/VM 插件/agent 应该能够支持以下功能
- 使用 xCAT rest api 获取 z/VM 配置信息或更新 z/VM 配置
- 获取在 z/VM 上定义的 z/VM VSWITCH 信息。
- MAC 地址分配并将其与用户目录中的 userid 捆绑。
- 配置 z/VM VSWITCH。配置 VSWITCH 以授予用户权限,或配置基于用户的 VLAN 标签,或配置基于端口的 VLAN 标签。
- 支持 VLAN,能够设置基于用户的 VLAN 标签或基于端口的 VLAN
- 支持 DHCP。
- 能够更新用户目录条目以添加更多 NIC 用于用户 id。
- Quantum z/VM agent 应该能够与 Quantum OpenVswitch 插件一起工作。
先决条件
- 一个 OpenStack nova-compute 服务节点将管理一个且仅一个 xCAT MN 节点。
- 每个 zVM 系统(驻留在不同的 LPAR 或 CEC 中)都有一个 nova-compute 服务节点
- 每个 zVM 系统(驻留在不同的 LPAR 或 CEC 中)都有一个 quantum-zvm-agent 服务节点
- 如果用户需要 DHCP 支持,则 zVM 系统必须有一个与 Layer 2 vswitch 耦合的 quantum-dhcp-agent 服务节点
- 如果用户需要 VLAN 支持,xCAT MN 必须能够访问每个 zLinux 系统。zHCP 和 DHCP agent 可以访问同一 zVM 中的每个 zLinux 系统。
- 实例可以绑定 MAC 地址,必须定义 z/VM 用户前缀。
- zHCP 必须由 xCAT MN 管理。
代码结构
1. Quantum 插件包结构
bin/quantum-zvm-agent - excutable zvm agent. quantum/quantum/plugins/zvm - plugin code /agent - Agent code /common - common code, includeing xCAT REST api interface. rpc_callbacks.py - RPC handler for received messages agent_notify_api.py - Agent RPC notify methods
2. Nova 包结构是
nova/nova/virt/zvm/networkop.py - nova side network support code
配置示例
默认情况下 /etc/nova/nova.conf ,应该包含以下项目
quantum_url = your_quantum_address_and_port quantum_admin_tenant_name = your_tenant_name quantum_auth_strategy = keystone or your_auth_strategy quantum_admin_auth_url = your_auth_url quantum_admin_password = your_password quantum_admin_username = your_username network_api_class = nova.network.quantumv2.api.API zvm_default_nic_vdev = default_nic_address
这是一个包含数据的示例
quantum_url = http://192.168.0.13:9696 quantum_admin_tenant_name = service quantum_auth_strategy = keystone quantum_admin_auth_url = http://192.168.0.13:35357/v2.0 quantum_admin_password = mypass quantum_admin_username = quantum network_api_class = nova.network.quantumv2.api.API zvm_default_nic_vdev = 2000
Quantum z/VM 配置文件 默认情况下,/etc/quantum/plugins/zvm/zvm_quantum_plugin.ini,应该包含以下项目
[DATABASE] sql_connection = mysql://root:yourpass@localhost/ovs_quantum?charset=utf8 reconnect_interval = 2 [AGENT] polling_interval = interval_seconds zvm_xcat_username=your_username zvm_xcat_password=your_passworkd zvm_xcat_server=your_server_address root_helper = sudo /usr/local/bin/quantum-rootwrap /etc/quantum/rootwrap.conf vswitch_mappings=vswitch_vlan_mapping xcat_zhcp_nodename=xcat_zhcp_nodename
这是一个包含数据的示例
[DATABASE] sql_connection = mysql://root:yourpass@localhost/ovs_quantum?charset=utf8 reconnect_interval = 2 [AGENT] polling_interval = 2 zvm_xcat_username=root zvm_xcat_password=yourpass zvm_xcat_server=192.168.0.13 root_helper = sudo /usr/local/bin/quantum-rootwrap /etc/quantum/rootwrap.conf vswitch_mappings=vsw1:1000:2000 xcat_zhcp_nodename=zhcp1