neutron中的网络

来源:互联网 发布:广州数据恢复 编辑:程序博客网 时间:2024/06/03 19:09
openstack neutron项目用来提供虚拟网络功能。neutron中的网络主要有:
1)物理网络
虚拟网络底层需要物理网络来实现,就像虚拟机最终由物理CPU还执行一样。一台物理机器通过多块网卡可以接入多个物理网络。
2)虚拟网络
虚拟网络由openstack管理员(admin)或用户(user)建立,用来实现不同的网络拓扑结构。
provider虚拟网络
虚拟网络的一种,通常由openstack admin建立。与系统中的物理网络对应,针对一个物理网络,管理员会建立一个provider网络。provider网络可以利用物理网络实现对外通信。如果物理网络可以访问Internet,则该provider网络就可以访问Internet,同时所有接入该provider网络的虚拟机就可以访问外部网络。
tenant虚拟网络
虚拟网络的一种,通常由openstak用户自行建立。一个用户通常会有多台虚拟机,就可以创建一个tenant网络连接这些虚拟机。一个用户也可以建立多个tanant网络,每个tenant接入不同的虚拟机。一台虚拟机也可以接入多个tenant网络。
 
tenant网络默认只能连接同在一个计算节点上的虚拟机。如果有2台虚拟机运行在不同的计算节点上,即使把他们加入了同一个tenant网络,他们也是不能通信的。为了联通这2台虚拟机,需要把这个tenant网络连入一个provider网络,同时这个provider网络所对应的物理网络连接了这2个计算节点。

连接provider网络和tenant网路在neutron中,可以通过一个路由器完成(openstack中定义的虚拟router)。
 
openstack中还有另外2个关于网络的概念:
管理网络(management network)
管理网络是一个物理网络:所有构成openstack系统的所有节点(物理机器,上面运行了不同的openstack服务,如计算节点,控制节点,网络节点等)都连入这个网络;只有openstack相关服务才会使用这个网络,如rest API调用,RPC调用,数据库访问等。

数据网络(或者业务网络)
分2层:上层是虚拟网络,及前面说的tenant网络。虚拟机中运行的各种应用都通过相应的tenant网络对外通信。下层是物理网络,为上层虚拟网络提供底层物理连接。通常这个物理网络和前边的管理网络是两个不同的网络,以避免管理和业务流量互相影响。

虚拟路由器(router)
和物理路由器类似,用来连接不同的tenant网络。

openstack中定义的网络拓扑结构:
local:只能连接一个计算节点上的虚拟机。仅作为开发调试使用。
flat:
这种结构相当于只有一个provider网络,所有的虚拟机都接入这个网络。不同tenant之间的虚拟机没有隔离,可以通信。

vlan:
和物理网络中的vlan概念一致。每个tenant网络就是一个vlan,默认不同的tenant之间无法通信。为了实现tenant网络之间互通,需要把它们加入到同一个虚拟路由器中。

gre:
类似与vlan的概念,可以实现tenant网络之间的隔离。和vlan的区别是:vlan最多只能有4096个,而gre没有网络个数的限制。gre底层是通过隧道方式(ip tunnel)来实现,即在IP层(L3)上传输数据链路层(L2)数据。gre在传输数据时有大量的额外开销,性能上会有影响。

vxlan:
也是采用L2隧道技术来解决vlan的个数限制问题,和gre的方法不同。还没有仔细学习过。

通过上述几种基本拓扑结构和虚拟路由器的设置,可以实现更为复杂的网络拓扑结构,满足不同用户的需求。openstack的官方文档中给出了一些典型的参考拓扑。

neutron中还支持floating ip功能。openstack可以给一个虚拟机分配一个外部可访问的IP地址(如Internet IPv4地址),如虚拟机中运行一个web服务器,外部用户可以通过该IP访问这个web服务。floating ip指一个IP地址可以动态的分配给任意一台虚拟机。比如这个web服务器如果运行中出现了故障,则用户可以将这个虚拟机迁移到其他节点上从新运行,并把之前的IP地址分配给这个新的虚拟机。

neutorn只定义了虚拟网络的拓扑,而真正实现这些拓扑的是neutrong中各种不同的plugin。常用的两种是linux bridge和openvswitch。openvswitch功能上要比linux bridge更为强大,支持gre。openvswitch还支持远程管理,支持openflow协议。目前openstack并没有使用openvswitch的远程管理功能。使用openvswitch的远程管理,可以监控整个虚拟网络的运行状态。类似于物理交换机上的远程管理功能。

neutron应该是(or将是)openstack中最为复杂的项目。虚拟机中运行的各种业务,存储设备中的各种数据,最终都将通过网络展现给最终用户,而网络的管理都通过neutron来实现。从目前网上的信息看,neturon项目似乎还不是很稳定,似乎还没有商业用户采用。
0 0
原创粉丝点击