Neutron是Openstack的网络组件,它跟其他组件如Nova, Glance, Keystone, Horizon协同工作,完成Openstack的虚拟网络功能。Neutron使用Open vSwitch(OVS)这个开源的、软件基础的虚拟交换机。Neutron的OVS组件由2部分构成:
- OVS插件:由Neutron服务在运行时加载。该插件提供API访问,并存储网络逻辑数据和映射关系在后台数据库里。
- OVS代理:在每个计算节点运行。该代理从数据库里获取配置信息,并与本地的OVS实例进行通信,执行网络配置。
对Openstack来说,OVS作为内核模块存在,或作为唯一的用户空间进程存在。与物理交换机类似,OVS基于端口配置,负责网络数据包的打标签、转发等。Neutron通过OVS插件与OVS进行交互。
Neutron可以创建两类基本的网络类型:
- 提供者网络(provider network)
- 租客网络(tenant network)
提供者网络直接映射到已存在的物理网络。例如,在数据中心里,它位于防火墙、负载均衡器后面,可以直接路由到外部世界。提供者网络有2种可用类型:flat和vlan。flat是单一的网络类型,所有实例在一个子网里。vlan是根据802.1q协议,划分多个虚拟子网进行隔离。在提供者网络创建时,可以指定它被多个tenant共享。
租客网络是由特定tenant用户创建。默认情形下,租客网络不与其他tenant共享。它也有2种可用类型:vlan和gre。联合使用L3 agent和vRouter,可以在GRE基础的租客网络之间进行路由。如果不使用vRouter,这些网络是有效隔离的。
上图代表一个简单的Neutron网络配置,使用了vlan类型的提供者网络,用于访问因特网;同时配置了2个gre类型的租客网络,用于实例之间的内部通信。
Rackspace博客写了一系列关于Neutron的网络配置文档,强烈推荐阅读:
Neutron Networking: The Building Blocks of an OpenStack Cloud
Neutron Networking: Simple Flat Network