租户使用Neutron API来管理他们的网络。Neutron API分为两个部分:core(包含每个插件必须实现的最小基本功能集),extension(可选的,用户可以用其实现特别的功能,如:ACL或QoS策略)。
1.创建网络
如图4-9所示是用户使用Neutron API创建一个二层网络的流程图,Neutron会为用户返回一个网络标识符,并调用插件。
图4-9 使用Neutron API创建的二层网络
2.创建网络并启动虚拟机
用户使用Neutron创建网络,Nova创建一个连接到该网络的VM。Nova在创建一个与Neutron相互作用的VM时,Neutron或Nova会首先创建一个逻辑Port,并将VM的网络接口卡插入该Port。实例的IP地址不是由Neutron提供的。
此外,Nova或者显式创建一个端口,或者指导Neutron将虚拟网卡插入网络。在此情况下,Neutron将使用一个可用的逻辑端口或创建一个新的端口。如图4-10所示是创建网络并启动虚拟机的流程图。
具体操作流程如下:
1)用户创建一个二层网络,图4-10中返回的网络标识符是xyz。
图4-10 创建网络并启动虚拟机
2)用户使用云控制器API创建一个VM(POST/服务器),并在VM的创建请求中为VM的虚拟NIC指定网络。云控制器会派遣调用给创建VM的Compute服务。
3)Compute服务告诉Neutron在xyz网络中创建一个逻辑Port。
4)Compte服务指导Neutron插入VM的虚拟NIC到之前创建的Port;在请求主体中需提供NIC的标识符。Neutron调用Plugin来连接虚拟NIC到该逻辑网络。该操作可能需要Plugin连接创建VM的Hypervisor,目的是根据Plugin采用的技术设置网络。
5)用户需要通过查询xyz网络详情来验证此次操作的是否成功。Neutron会为用户返回一个网络连接的配置列表,以及这些连接的状态信息。
图4-11显示了在未创建逻辑端口的情形下,VM的虚拟NIC被插入Neutron网络的第一个可用端口的情形。
3.创建多NIC的虚拟机
该情形与之前的情形十分相似,唯一的不同是创建的VM具有两个虚拟NIC。Compute服务需要为每个虚拟NIC重复下面的操作:
·创建逻辑端口。
·插入虚拟NIC到逻辑端口。
图4-12为Compute服务与Neutron间的交互流程图。
图4-11 未发起创建逻辑端口请求时的情形
图4-12 Compute服务与Neutron的交互流程
4.为指定的虚拟NIC更改网络
如果用户想要将一个虚拟NIC从子网net1移动到子网net2中,如图4-13所示。会涉及以下Neutron操作:
图4-13 为指定的虚拟NIC更改网络
·从网络net1中撤离虚拟NIC。
·插入虚拟NIC到net2。
注意 插件可能不允许用户从正在运行的VM中拔出虚拟NIC,否则会返回一段错误代码给用户。
5.删除网络
用户想要删除一个Neutron网络和与其关联的所有资源,如图4-14所示。涉及以下Neutron操作:
·拔出所有与该网络关联的连接。
·销毁网络对象。
图4-14 删除Neutron网络