OpenStack的网络

网络类型有local,flat,vlan,vxlan。这些不同网络类型的实现借助于network driver,比如Linux Bridge和Open vSwitch。环境搭建需要多个网卡,控制节点或网络节点需要一个打通外网(集群外)的网卡。

local

local网络不支持跨节点,所有网络内的虚拟机通过bridge联通。bridge不会通过网卡对外通讯。

Linux Bridge – local

flat

flat网络和物理网卡一对一绑定。不存在一个物理网卡能支持多个flat网络的情况。flat可以跨节点。

每一个flat 网络都有一个dhcp服务,实际上是在网络控制节点上的一个独有的dnsmasq进程,每个进程独占一个网络namespace, 以便为某个flat网络单独服务。通过veth pair和flat bridge相连,打通两个namespace。

创建flat网络实例,openstack会根据该flat网络的设置分配一个port 包括ip和mac,并被dhcp获取,nova会给vm VIF虚拟网卡分配这个mac。获取ip的过程是这样的,dhcp进程通过虚拟网卡对监听到实例启动,vm会发广播到整个flat网络,dhcp的虚拟网卡会监听到,dhcp根据自己的host文件和mac查询到对应信息,然后分配ip子网掩码和地址租用期限。不同计算节点上的实例可以互相通信,每个节点上的bridge名称是一样的,每个flat网络绑定独占一个网卡。

Linux Bridge – flat

vlan

一个物理网卡可以支持多个vlan。vlan可以是夸节点的,每个节点的bridge名字相同。bridge通过vlan网口eth1.100与物理网卡联通。不同vlan可以通过路由router互通,可以是物理路由器,接到交换机之外,上面配置需要打通的所有vlan的网关。也可以是虚拟路由,首先建立一个虚拟网络,可以是flat类型的,通过物理网卡联通外网,存在于单独的network namespace,由veth pair打通和vlan bridge的通信。网关配置在路由到bridge的tap上。

和路由相连的所谓的外部网络,绑定一个控制节点的网卡,以后所有对外通信都通过这个网络,网络和网络之间用veth pair打通。

Linux Bridge – vlan

通过路由和相连接的外网可以设置某个vm的floating ip,floating IP 是配置在 router 提供网关的外网 interface 上的,而非 instance 中。所以路由保存有floating ip和网内ip的映射,是一种静态NAT。floating ip方便外网直接访问内网vm。

如果没有floating ip,向外的流量,路由会把内网ip转为自己的外网ip,当流量返回时,路由会找到相应的内网ip,这就是所谓的source NAT。

路由默认网关是外网网关,所有内网虚拟机访问除了内网的流量都会走向这个默认的网关。floating IP 配置到 router 的外网 interface qg-b8b32a88-03 上。

其他的比如dhcp和flat网络差不多。

Linux Bridge – vlan 路由 外网 两个内网的逻辑关系图

vxlan

由通道技术实现的虚拟网络。是基于三层网络协议实现的的二层协议。核心是vtep,一种虚拟网卡。基本思路,由vtep封装二层协议包打上vxlan标签,并用ip+udp封装,通过原始ip和终点ip打通通信。所以是一种基于网络之上的虚拟网络。

vxlan是一种虚拟二层网络,支持arp,不过在openstack中不需要广播,因为有代理会直接把ip mac的信息分享给虚拟机。

借助linux bridge 或 open vswitch可以实现vxlan。和vlan相比,vxlan适合更大规模的集群。其他的比如dhcp和router基本和vlan一样。

Linux Bridge vxlan

Security Group和FWaaS

这两种都是OpenStack的安全策略,都是通过iptables来实现的,前者是对特定虚拟机来设置的,后者是对整个定制网络的subnet指定的安全策略。可结合使用。

OpenStack LBaaS

OpenStack Loadbalance as a Service。方便搭建lb集群,默认HAProxy,可以选择其他。

需要一个lb server的虚拟机,这个lb server有一个VIP,是属于和集群(web server)相同网段的IP,在外围路由配置floating ip,这样集群外可通过floating ip访问lb。OpenStack界面支持lb的各种策略,第一次访问的策略,比如round robin,least connection,source ip。之后的session persistence策略比如source ip,http cookie,app cookie等。后两者是发送给客户端特定的cookie,比如srv,记录上次连接的server信息。

Open vSwitch

和Linux Bridge一样,Open vSwitch也可用来实现不同网络类型。不同的是,OVS有自己专有的网桥以及利用flow rule来隔离vlan,而不是Linux Bridge的veth1.100, eth1.101等vlan interface。
– br-int(integration),打通instance和其他虚拟网络设备
– br-ex(external),和网卡直连,打通和外网的通道
– br-tun(tunnel),只适用于基于tunnel技术的vxlan和GRE网络

OVS vlan


OVS vxlan

注:原创。图表来源于CloudMan

发表评论

电子邮件地址不会被公开。