Openstack平台neutron模块之网络基础概念
因为项目需要,最近开始学习OpenStack,主要负责其中的网络模块–neutron,接下来会写几篇文章来记录在学习过程中的收获。所以这里第一篇就先介绍一下neutron中所涉及到的一些基本的网络概念。
一,组网技术
1,Flat(DHCP)技术:openstack中最简单的网络模型,所有的虚拟机共用一个私有IP段,相当于大家都处于一个局域网中,IP地址在虚拟机启动时完成注入。Flat DHCP组网模式与Flat的区别就在于其开启了DHCP功能,虚拟机通过DHCP消息获得IP地址(DHCP Agent)。
2,VLAN技术:VLAN是一种将局域网(LAN)设备从逻辑上划分(注意,不是从物理上划分)成一个个网段(或者说是更小的局域网LAN),从而实现虚拟工作组(单元)的数据交换技术。VLAN技术的好处主要有三个:
(1)端口的分隔。即便在同一个交换机上,处于不同VLAN的端口也是不能通信的。这样一个物理的交换机可以当作多个逻辑的交换机使用。
(2)网络的安全。不同VLAN不能直接通信,杜绝了广播信息的不安全性。
(3)灵活的管理。更改用户所属的网络不必换端口和连线,只更改软件配置就可以了。
在openstack中使用VLAN技术引入了多租户机制,虚拟机可以使用不同的私有IP段,并且一个租户可以拥有多个IP段,以实现不同租户的网络隔离。但是,如果不同租户逻辑上共用一个网关,则无法实现租户间IP地址的复用。
3,overlay(GRE和VXLAN)技术: 通过隧道的方式建立通信。其中VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP/MAC作为outer-header进行封装,然后在物理IP网上传输,到达目的地后由隧道终结点解封并将数据发送给目标虚拟机。GRE是在L3上面包装L3,封装在IP报文中,建立点对点隧道进行通信。相对VLAN而言,引入overlay模型主要解决了以下问题:
1)租户数量从4K增加到16million;
2)租户内部通信可以跨越任意IP网络,支持虚拟机任意迁移;
3)一般来说每个租户逻辑上都有一个网关实例,IP地址可以在租户间进行复用;
4)能够结合SDN技术对流量进行优化。
二、网络模型
1,单一平面网络模型,这种网络模型主要存在以下缺陷:
存在单一网络瓶颈,缺乏可伸缩性;缺乏合适的多租户隔离;不支持floating ip;
2,多平面网络模型,支持VLAN,不支持floatingip;
3,混合平面私有网络,具有两个ip,支持floating ip;
4,通过私有网络实现运营商路由功能,增加了provider router,但是租户没办法定义自己的路由;
5,通过私有网络实现每个租户创建自己专属的网络区段,租户定义自己的网络,sdn网络比较灵活;
可以看出neutron模块中的网络模型变得越来越复杂,越来越适应用户的需求。
三、核心资源
Neutron管理的实体核心资源主要包括网络、子网、端口:
1,网络:隔离的L2域,可以是虚拟、逻辑或交换,同一个网络中的主机彼此L2可见。一般是创建它的用户所有。用户可以拥有多个网络。网络是最基础的,子网和端口都需要关联到网络上。
2,子网:隔离的L3域,IP地址块。其中每个机器有一个IP,同一个子网的主机彼此L3可见。子网代表了一组分配了IP的虚拟机。每个子网必须有一个CIDR和关联到一个网络IP可以从CIDR或者用户指定池中选取。子网可能会有一个网关、一组DNS和主机路由。不同子网之间L2是互相不可见的,必须通过一个三层网关(即路由器)经过L3上进行通信。
3,端口:网络上虚拟、逻辑或交换端口。 所有这些实体都是虚拟的,拥有自动生成的唯一标示id,支持CRUD功能,并在数据库中跟踪记录状态。可以进出流量的接口,往往绑定上若干 MAC 地址和 IP 地址,以进行寻址。一般为虚拟交换机上的虚拟接口。虚拟机挂载网卡到端口上,通过端口访问网络。当端口有 IP 的时候,意味着它属于某个子网。
四、三个网络
1,External Network/API Network,这个网络是连接外网的,无论是用户调用Openstack的API,还是创建出来的虚拟机要访问外网,或者外网要ssh到虚拟机,都需要通过这个网络;
2,Data Network,数据网络,虚拟机之间的数据传输通过这个网络来进行,比如一个虚拟机要连接另一个虚拟机,虚拟机要连接虚拟的路由都是通过这个网络来进行;
3,Management Network,管理网络,Openstack各个模块之间的交互,连接数据库,连接Message Queue都是通过这个网络来;
- http://www.linuxidc.com/Linux/2017-05/144279.htm
- http://www.linuxidc.com/Linux/2017-05/144280.htm
- http://www.linuxidc.com/Linux/2017-05/144281.htm