一文读懂常见云计算网络

Local network(本地网络):一个只允许在本服务器内通信的虚拟网络,不能跨服务器通信。主要用于单节点上测试,只能做单节点的部署(all-in-one),这是因为此网络模式下流量并不能通过真实的物理网卡流出,integration bridge并没有与真实的物理网卡做mapping,只能保证同一主机上的vm是连通的。

Flat network:基于不使用VLAN 的物理网络实现的虚拟网络,每个物理网络最多只能实现一个虚拟网络。ID数只有1个,通常不用于数据网络,因为其不具备租户隔离型。即所有的虚拟机都在一个广播域。比较传统的网络模式,需求较少。

VLAN network(虚拟局域网) :基于物理VLAN 网络实现的虚拟网络。共享同一个物理网络的多个 VLAN 网络是相互隔离的,甚至可以使用重叠的 IP 地址空间。

802.1Q 定义了 VLAN ID 占 12-bit,有效的VLAN ID 范围是 1 到 4094。

在规模不大的私有云中,往往是用 VLAN 模式,简单、可靠、能够满足规模要求;而在大型的私有云或者公有云中,往往使用VxLAN。

GRE network(通用路由封装网络):一个使用GRE 封装网络包的虚拟网络。GRE 封装的数据包基于 IP 路由表来进行路由,因此 GRE network 不和具体的物理网络绑定。

RFC 2637定义的 GRE 的 ID 占 24-bit,ID数目为16777216(1600万)

在两个主机上面分别运行VM,并且在这个VM之间创建一个隧道。如果没有GRE隧道,两个VM就无法连接。在主机之间创建GRE隧道的简单步骤:

1)主机1配置如下:

1. ovs-vsctl add-br brgre

2. ovs-vsctl add-br brvm

3. ovs-vsctl add-port brgre eth0

4. ifconfig eth0 0

5. ifconfig brgre 192.168.1.100 netmask 255.255.255.0

6. route add default gw 192.168.1.1 brgre

7. ifconfig brvm 10.1.2.10 netmask 255.255.255.0

8. ovs-vsctl add-port brvm gre1 — set interface gre1 type=gre options:remoteip=192.168.1.111

2)主机2配置如下:

1.ovs-vsctl add-br brgre

2. ovs-vsctl add-br brvm

3. ovs-vsctl add-port brgre eth0

4. ifconfig eth0 0

5. ifconfig brgre192.168.1.111netmask255.255.255.0

6. route add default gw192.168.1.1brgre

7. ifconfig brvm10.1.2.11netmask255.255.255.0

8. ovs-vsctl add-port brvm gre1 — set interface gre1 type=gre options:remoteip=192.168.1.100

在每台主机中创建2个桥,其中brvm用于仿真虚拟机,另一个brgre用作与其他主机的做隧道(VTEP)连接。eth0连接brgre,brgre绑定IP用于实现隧道。

GRE 技术本身还是存在一些不足之处:

(1)Tunnel 的数量问题

GRE 是一种点对点(point to point)标准。Neutron 中,所有计算和网络节点之间都会建立 GRE Tunnel。当节点不多的时候,这种组网方法没什么问题。但是,当在很大的数据中心中有成千上万个节点的时候,使用标准 GRE的话, tunnels 数量太多,影响性能。

(2)扩大的广播域

GRE 不支持组播,因此一个网络(同一个GRE TunnelID)中的一个虚机发出一个广播帧后,GRE 会将其广播到所有与该节点有隧道连接的节点。

(3)GRE 封装的IP包的过滤和负载均衡问题

目前还是有很多的防火墙和三层网络设备无法解析GREHeader,因此它们无法对 GRE 封装包做合适的过滤和负载均衡。

VXLAN network(虚拟可扩展网络):基于VXLAN 实现的虚拟网络。同 GRE network 一样,VXLAN network 中 IP 包的路由也基于 IP 路由表,也不和具体的物理网络绑定。

RFC 7348 定义的 VxLAN 的 ID 占 24-bit,ID数目为16777216(1600万),VXLAN数量可达约1600万个,完全可以满足公有云多租户的网络场景。

VXLAN全称Virtual eXtensible LAN,是一种覆盖网络技术或隧道技术。VXLAN将虚拟机发出的数据包封装在UDP中,并使用物理网络的IP/MAC作为outer-header进行封装,然后在物理IP网上传输,到达目的地后由隧道终结点解封并将数据发送给目标虚拟机。一套利用 UDP 协议作为底层传输协议的 Overlay 实现。一般认为作为 VLan 技术的延伸或替代者。

作者:杨武 新钛云服研发总监

十年云研发和架构经验,中国科学技术大学软件工程全日制硕士研究生学历。曾在IBM、土豆网、微烛云先后担任云计算研发工程师、架构师,技术总监等职务,参与并主导过产品设计、研发、测试和运维(DevOps)等完整产品生命周期流程,有上万台物理服务器规模的OpenStack集群架构实战经验,对云平台的瓶颈和性能优化有丰富经验。精通OpenStack、CloudForms、Kubernetes、Ceph、KVM、Docker、Solaris(SmartOS)等云平台及虚拟化技术。