对于OpenStack网络的情况,一直是一知半解。本文是翻译OpenStack Networking的官方文档,对OpenStack网络的情况从入门开始讲起。比较靠谱。水平有限,不妥之处请指正。


What Is OpenStack Networking?

OpenStack Networking API: Rich Control over Network Functionality

OpenStack网络是一个虚拟网络服务,它提供一种强力的API定义其他服务的设备(例如Openstack compute)的网络连接和地址。

OpenStack Compute API抽象成一个虚拟机服务器用来描述计算资源。相似的,OpenStack Networking API有网络,子网,端口的抽象,用来描述网络资源。更详细的:

ØNetwork. 一个二层的隔离,类似于VLAN在物理网络中的作用。

ØSubnet.一块IPV4或者ipv6的地址,与配置状态有关。

ØPort. 单个设别连接到虚拟网络的连接点,描述网络的相关配置

你可以配置丰富的网络拓扑结构,通过创建和配置NetworkSubnet,然后指示其他的OpenStack的服务,如OpenStack Compute将虚拟设备连接到这些网络上的端口。特别的,OpenStack的网络支持每个租户有多个专用网络(private network),并允许租户选择自己的IP解决方案(IP addressing scheme),即使与其他租户使用这些IP地址重叠。应用这种先进网络配置的情况下,可以开发多层web应用,并允许应用迁移到云中,而不改变IP地址。

即使云管理员不打算直接向租户公开这些能力,OpenStack的网络API作为管理员API也是非常有用的,因为它提供了更多的灵活性为云管理员可以自定义网络产品。

OpenStack的网络API也提供了一种机制,让云管理员可以通过API扩展暴漏额外的API功能。一般情况下,API的新能力,作为一个API的扩展出现,并随着时间的推移成为OpenStack的网络的核心API的一部分。

Plugin Architecture: Flexibility to Choose Different NetworkTechnologies

加强传统的网络解决方案,提供丰富的云网络是具有挑战性的。传统网络的目的不是要扩展到云的比例或自动配置。

最原始的OpenStack compute network实现的是一个非常基本的模型,通过LinuxVLANIP表来实现所有的隔离。OpenStack Network引入了插件的概念,这是一个可插拔的后端实现的OpenStack Network API。插件可以使用多种技术来实现API的请求逻辑。一些OpenStack的网络插件可能会使用基本的Linux VLANIP表,而其他人可能使用更先进的技术,为客户提供类似的服务,如L2-in-L3、隧道或OpenFlow。现阶段OpenStack支持的插件有:

ØOpen vSwitch. Documentation included in this guide.

ØCisco.Documented externally at:http://wiki.openstack.org/cisco-quantum

ØLinux Bridge. Documentation included in this guide andhttp://wiki.openstack.org/Quantum-Linux-Bridge-Plugin

ØNicira NVP. Documentation include in this guide,NVPProduct Overview, andNVP Product Support.

ØRyu.https://github.com/osrg/ryu/wiki/OpenStack

ØNEC OpenFlow.http://wiki.openstack.org/Quantum-NEC-OpenFlow-Plugin

ØBig Switch, Floodlight REST Proxy.http://www.openflowhub.org/display/floodlightcontroller/Quantum+REST+Proxy+Plugin

ØPLUMgridhttps://wiki.openstack.org/wiki/Plumgrid-quantum

ØHyper-V Plugin.

ØBrocade Plugin.

ØMidonet Plugin.

插件可以有不同的属性,在不同的硬件要求,特点,性能,规模,操作工具情况下支持不同插件,这使云管理员需要权衡不同的选项,并决定哪个网络技术的部署是正确的。

Table 1.1. Plugin   Compatibility with OpenStack Compute Drivers


Libvirt   (KVM/QEMU)

XenServer

VMware

Hyper-V

Bare-metal

PowerVM

Open vSwitch

Yes






Linux Bridge

Yes






Cisco

Yes






Nicira NVP

Yes

Yes

Yes




Ryu

Yes






NEC

Yes






Bigswitch /  Floodlight

Yes






Hyper-V




Yes



Brocade

Yes






Midonet

Yes






Plumgrid

Yes






OpenStack Networking Architecture

这部分描述OpenStack Networking 高层次的组件的部署。

Overview

在部署OpenStack Networking之前,了解解决方案的不同的组件,理解这些组件之间(agentl3dhcp)是如何交互并了解这些组件如何与其他OpenStack服务(computecinder等)交互是非常有用的。

OpenStack Networking 是一个独立的服务,就像Openstack的其他服务一样例如OpenStack ComputeOpenStack Image serviceOpenStack Identity serviceOpenStack Dashboard等。和这些服务一样,部署OpenStack Networking经常涉及部署一些进程在不同的host上。

提供OpenStack Networking的主要进程是quantum-server,这是一个Python守护进程,它公开OpenStack的网络API,将用户请求传递到OpenStack的网络插件,进行额外的处理。通常情况下,这个插件需要访问持久存储到数据库,类似OpenStack的其他服务。

如果使用控制节点来运行集中OpenStack Compute组件,你可以在同一主机上部署OpenStack的网络服务器。不过,OpenStack Networking是完全独立的,并可以部署在自己的服务器。 OpenStack的网络还包括额外的代理可能需要根据具体情况进行部署:

Øplugin agent (quantum-*-agent).运行在每个虚拟机管理程序来执行本地vswitch配置。代理运行取决于哪个插件,你所使用的一些插件,不需要代理。

Ødhcp agent (quantum-dhcp-agent). 为租户网络提供DHCP服务。这个agent对所有插件都是一样的。

Øl3 agent(quantum-l3-agent).提供L3/NAT,为租户网络上的虚拟机提供外部网络访问服务。对所有插件都一样。

   这些agent与主要的quantum-server进程通过如下的方法交互:

Ø通过RPC,例如rabbitmq或者qpid

Ø通过标准的OpenStack Networking APIjson

OpenStack的网络依赖于OpenStack的身份项目(keystone),所有的API请求都需要进行身份验证和授权。

OpenStack computeOpenStack networking的交互,通过调用标准的API。例如,创建一个虚拟机时,nova-computeOpenStack Networking API进行通信,将虚拟机的虚拟网卡plug到一个特定的网络上的。

OpenStack DashboardHorizon)与OpenStack的网络API的集成,允许管理员和租户用户,创建和管理网络服务,通过Horizon GUI

Place Services on Physical Hosts

与其他的Openstack服务一样,Openstack networking为云管理员提供灵活的决定独自的服务应该在那个物理设备上运行的权利。极限情况下,所有的所需要的服务可以在一个单个物理节点上运行,用来做评测。另一方面,每个服务都可以由自己的屋里host,某些情况下服务可以再多个节点上做冗余部署。详情请看http://docs.openstack.org/grizzly/openstack-network/admin/content/ch_high_avail.html

本指南中,我们主要集中介绍最标准架构,包含一个云控制节点,一个网络节点和一系列Hypervisors用来运行虚拟机,即计算节点。控制节点和网络节点在简单部署中可以被合并。尽管如果你期望vm通过Internet发送大量的通信流量,我们建议网络节点被独立部署。否则可能会在quantum-l3-agentOpenstack的其他服务之间造成潜在CPU竞争。

Network Connectivity for Physical Hosts

 Quantum-PhysNet-Diagram.png

   一个标准的openstack networking的安装需要以下四个不同的物理数据中心网络:

ØManagement network. 用于Openstack内部组件的通信。这个网络上的IP地址只在整个数据中心内是可达的。

ØData network. 用于云中部署的虚拟机之间的数据通信,这个网络中的IP地址的需求取决于Openstack networking使用的插件。

ØExternal network. 用来提供在某些场景下虚拟机与外部Internet的连接。这个网络中的IP得知需要对Internet上的每个人都是可达的。

ØAPI network. 暴漏所有的OpenstackAPI借口,包含Openstack networking api,对租户。这个网络中的IP地址也应该是对Internet上的每个人都可达。本网络可能与external network是一个网络,由于external network可以创建一个子网,这个子网中的ip分配范围比整个IP块分配的范围小。


今天就翻译到这里。。有不恰当的地方请大牛们指点。