一、Openstack网络基础
下面对Openstack和Neutron的介绍,要从几个关键词入手。
1. 三代网络
在网络这一口,OpenStack经历了由nova-network到Quantum再到Neutron的演进过程。我们直观地来看看三代网络的对比分析:
出现
版本
支持组
网模式
优点
缺点
适用场景
Nova-network 早期
Flat
Flat Dhcp
VLAN
性能出色
工作稳定
支持multi-host部署
以实现HA
网络管理不独立
功能不够灵活
组网方式受限
对性能和稳定性要求比较高;中小规模网络;网络运维成本有限;私有云环境
Quantum Folsom
Flat
Flat Dhcp
VLAN
Overlay
独立的网络管理
支持大二层
支持多厂商插件
缺乏HA机制
各厂商插件无法
共同运行
基本上已经都跟进到了Neutron
Neutron Havana
Flat
Flat Dhcp
VLAN
Overlay
继承了Quantum的优点
功能上更为丰富
网络兼容性强
开始引入SDN的思想
代码结构复杂
工作不够稳定
HA机制仍缺乏大规模商用的检验
对功能要求比较多或希望向SDN演进;大规模网络或对可扩展性要求高;有专业的网络运维团队;公有云环境
Nova-network是隶属于nova项目的网络实现,它利用了linux-bridge(早期,目前也支持OVS)作为交换机,具备Flat、Flat DHCP、VLAN三种组网模式。优点是性能出色,工作稳定,支持multi-host部署以实现HA;缺点是网络模块不独立,功能不够灵活,组网模式也比较受限。
Quantum作为独立的网络管理项目出现在F版本,除了linux-bridge外还支持OVS,以及以及其他商业公司的插件,组网模式上增加了对GRE和VxLAN两个Overlay技术的支持。优点是功能灵活,支持大二层组网;缺点是集中式的网络节点缺乏HA,而且各厂商插件无法同时在底层网络中运行。
Neutron出现在H版本,由来是Quantum和一家公司的名称冲突而改名。Neutron对Quantum的插件机制进行了优化,将各个厂商L2插件中独立的数据库实现提取出来,作为公共的ML2插件存储租户的业务需求,使得厂商可以专注于L2设备驱动的实现,而ML2作为总控可以协调多厂商L2设备共同运行。Neutron继承了Quantum对大二层的支持,还支持L2 PoP,DVR,VRRP,HA等关键功能,集成了很多L4-L7的网络服务,一些blueprint也正在积极开发中,如SFC等。优点是开始引入SDN思想,功能上更为丰富,网络兼容性强;缺点是代码结构复杂,工作不够稳定,HA机制仍缺乏大规模商用的检验。
从应用场景来看,Nova-network组网模式过于简单,一些复杂的网络需求无法实现(比如两个公司合并,有大量IP重合的VM要迁移到一个平台,而且要求迁移后都要用原来的IP)。不过由于其简单稳定的特点,仍适合于中小型企业的生产环境;Quantum的实际部署目前基本都跟进到了Neutron;Neutron的大二层组网,适合于云计算规模的生产环境,但是由于分布式和HA机制仍不够成熟,因此目前多见于私有云和小规模共有云的部署,大规模的公有云仍然难以使用Neutron实现。
2. 四种组网模型
说完了基本特征与应用场景,下面开始对上述提到的一些网络问题进行详细的描述。我们抛开技术,结合图例来抽象地看看不同的组网模型。当然,以下模型的实现不仅仅局限于三张图中的方式。
Flat模型最为简单,所有的虚拟机共用一个私有IP网段,IP地址在虚拟机启动时完成注入,虚拟机间的通信直接通过HyperVisor中的网桥转发,公网流量在该网段的网关上进行NAT(Nova-network实现为开启nova-network主机内核的iptables,Neutron实现为网络节点上的l3-agent)。Flat DHCP模型与Flat区别在于网桥中开启了DHCP进程,虚拟机通过DHCP消息获得IP地址(Nova-network实现为nova-network主机中的dnsmaq,Neutron实现为网络节点上的dhcp-agent)。
VLAN模型引入了多租户机制,虚拟机可以使用不同的私有IP网段,一个租户可以拥有多个IP网段。虚拟机IP通过DHCP消息获取IP地址(Nova-network实现为nova-network主机中的dnsmaq,Neutron实现为