云计算之虚拟网络背后的技术

云计算
虚拟网络的背后,有很多技术,本文主要介绍SDN技术和VxLAN技术。

1、SDN

传统的网络设备是分布式和去中心化的,每台设备可以通过自主学习和人工配置,可以知道如何转发数据包,而不需要一个集中式的控制设备。

SDN这个词本身就是软件定义网络(Software Defined Network),在虚拟网络里,vSwitch和vRouter这些设备,通常都不用登录上去敲命令(虽然也可以这么做),而是通过云平台配置。云平台通过API和SDN控制器交互,SDN控制器计算并下发转发表到vSwitch和vRouter,完成配置。

图片

SDN原理示意

所谓Overlay,是在传统的物理网络(Underlay)基础之上,构建出一个虚拟的逻辑网络。从技术上讲,Overlay的二层数据包封装在物理网络的三层报文中传输,到达目的地之后再解封装得到Overlay的二层报文。实际上,这就是一种“L2 over L3”的隧道封装技术。这方面的协议比较多,主要有VxLAN(L2 over UDP)、NVGRE(L2 over GRE)、STT(L2 over TCP)等。

2、VxLAN

VxLAN(Virtual eXtensible Local Area Network,虚拟可扩展局域网)是实现Overlay网络的主流技术,正是通过VxLAN,才实现了VPC(包括子网)的完美隔离。

大体而言,就是VM之间交互的数据包,在离开vSwitch时会加上封装,形成隧道,不同子网带有不同的隧道号标识。解隧道封装的时候,看到隧道号不对,就会抛弃,这样不同子网内的虚拟机无法进行直接通信(除非做了路由),这就实现了隔离。

VxLAN不仅解决了隔离的问题,还解决了传统二层技术(如VLAN)难以解决的大规模二层互连的问题,由于通过三层传输,虚机的部署和迁移就不受二层物理网络限制了。VxLAN是怎么将L2 over在L3之上呢,答案是:将以太网帧封装在UDP包中。

图片

VxLAN的包结构

如上图所示,Overlay的二层数据帧被封装在三层的IP包中(精确的说,是四层的UDP报文中),封装的头部是VxLAN Header,里面的主要内容就是24bit的VNI(VxLAN ID),每个子网都有一个VNI,这样即便是同一台主机上的两台VM,即便处于同一IP段,只要他们在不同的子网,就无法通信,因为子网的OVS看见不同的VNI就会抛弃掉。

做封装和解封装的端点被称为VTEP,它同时也就是VxLAN隧道的起点和终点。VTEP通常是由OVS实现的,子网中VM向外发出的二层报文,会由OVS进行封装,做成UDP包发出;同时OVS会在UDP特定端口监听,收到VxLAN报文后,如果VNI正确,则去掉封装,将封装前的二层报文转发给相应的VM。

对于裸金属(云管理的物理机)而言,由于它没有OVS,它的Overlay通信要通过VxLAN网关(承担VTEP功能)实现,或者可以在物理机上插一块智能网卡,由智能网卡做VTEP。

VTEP有软件和硬件两种,前面讲的OVS就是软件VTEP,也有用硬件交换机做VTEP的。如果VTEP由软件完成,这种Overlay就叫Host Overlay;如果由硬件设备完成,就叫Network Overlay;如果都有,就叫混合Overlay。

对于Host Overlay而言,物理交换机网络中的Leaf和Spine仅进行IP报文的高速转发,不处理VxLAN报文。

图片

Overlay和Underlay示意

上图中,VM1和VM2要通信的话(无论是否在同一子网),由OVS封装成VxLAN报文,由leaf和spine交换机进行物理传输;对于在同一台宿主机上的VM3和VM4,如果它们在同一VPC的同一子网,OVS就直接转发了(不走VxLAN);如果是同一VPC的不同子网,也不用走VxLAN,由vRouter和OVS转发;但如果在不同VPC,就也要走VxLAN,因为不同VPC的隔离就是靠VxLAN实现的。

图片


责任编辑:庞桂玉 来源: 数字化助推器
相关推荐

2009-08-18 20:05:11

虚拟化技术虚拟交换机

2012-05-31 10:54:41

2013-06-19 09:56:39

2020-11-25 10:55:56

云计算

2016-07-28 22:57:33

云计算Google

2012-06-01 09:36:27

2013-11-11 09:37:28

云计算网络虚拟化虚拟化

2017-05-08 13:37:32

IaaS核心虚拟化

2012-06-14 09:38:00

存储虚拟化

2011-04-29 09:09:12

Hyper-V

2011-08-08 09:33:51

云计算网络技术

2021-07-23 15:24:48

云计算医疗技术

2012-01-13 13:51:18

2022-04-15 15:03:42

云计算容器Linux

2020-02-17 21:04:47

在线办公教育

2011-01-06 16:36:05

云计算Google

2013-05-10 09:47:19

云计算虚拟化

2019-10-30 15:35:08

虚拟化云计算封装

2019-01-09 13:20:51

2010-03-11 16:06:34

云计算服务
点赞
收藏

51CTO技术栈公众号