虚拟化与云计算

硬件虚拟化,网络虚拟化,网络功能虚拟化等技术

七层协议

名称 作用 协议 所属设备
应用层 用户接口应用成 TELNETHTTPFTPNFSSMTP 网关
表示层 定义数据格式,压缩,加密等 无协议 网关
会话层 会话的建立,控制结束 无协议 网关
传输层 选择差错恢复协议还是无差错恢复协议,提供端到端接口 TCP,UDP,SPX 网关
网络层 端到端的接口定义,选址 IP,BGP,ICMP,RIP,OSPF,IGMP 路由器
链路层 定义如何传输 ARP,RAPP,MTU,PPP,SLIP 交换机,网卡,网桥
物理层 通过物理介质传输而二进制流 ISO2110,IEEE802,IEEE802.2 集线器,中继器

链接:https://www.jianshu.com/p/20fb5068f2ea

一次传输是一个封装和解封过程,是L5加UDP头成L4,加IP头成L3,加MAC头成L2,再加物理层头成L1。也就是说①发出方:(加头封装)L5->L4->L3->L3->L1②接受方:(拆头解析)L1->L2->L3->L4->L5。

(设备工作在几层就封装和解析到几层)

Hypervisor

物理硬件虚拟化的管理程序

Hypervisor(超级监督者)完成物理资源虚拟化(也叫VMM虚拟机监视器,是一类软件的统称);分为两种,直接安装在物理机或安装在操作系统之上。如VMware、KVM、Xen、Virtual Box等,而OpenStack是管理VM的,是一个云管理平台。

举例KVM:https://www.cnblogs.com/polly-ling/articles/7154334.html,kvm的管理工具是Libvirt

容器属于轻量级虚拟化,Docker就是个创建容器的工具,K8S(Kubernetes)可以对容器进行编排(启动容器,自动化部署、扩展和管理容器应用,回收容器)

物理硬件虚拟化使得在一台物理的服务器上可以跑多台虚拟机,虚拟机共享物理机的 CPU、内存、IO 硬件资源,但逻辑上虚拟机之间是相互隔离的。

Hypervisor是NFV(见后)的基础,NFV的NFVI组件主要是Hypervisor

NV:网络虚拟化

为了达到VM在不同服务器迁移后,IP和MAC都保持不变的目的

,所以我们就需要网络虚拟化技术

,为了实现虚拟化就要实现大二层

NV是二层的虚拟化


云服务商给租户的网络是虚拟网络,尽管使用相同的底层物理网络的基础设施,每个租户得到的虚拟网络(包括控制平面和数据平面)却是相互独立的,完全隔离的,通过云服务商提供的控制平面,租户可任意的配置管理自己的虚拟网络。ECS或VPC等就是网络虚拟化基础上提供的服务,ECS并不是指定某一台机器上的一个VM(否则就是VPS了。ECS它只是提供了一个对外的公网IP,你以为它是一台你在操控的计算机,但其内部实际上是一个虚拟网络,这个公网IP指向的是这个网络整体),VPC也并不是真正存在的一个具体与实际网络设备对应的私有物理网络,它们都是建立在虚拟网络上的逻辑网络,给用户提供的IP可能就只是一个VIP,用户在VPC里设置的IP也都是overlay虚拟网络的逻辑IP,真正的underlay网络对用户不可见。

大二层

大二层:跨三层路由的二层网络

如何理解大二层网络?(视频) - 牛博恩的回答 - 知乎 https://www.zhihu.com/question/312012730/answer/598018973

大二层技术需要解决的核心问题:二层环路问题(因为为了保证可靠性,有冗余设备+冗余链路,所以导致了环路;传统二层网络通过STP协议解决环路问题)

有三大方案实现大二层:①略 ②略(基于虚拟交换机技术,做一个虚拟的交换机合并链路) ③Overlay,基于IP隧道的方式,建立“大二层隧道”

img

园区网络扁平化除了取消汇聚层之外还有哪些? - summer课堂的回答 - 知乎 https://www.zhihu.com/question/67268856/answer/251271775


eg:

(以下为Overlay的VxLAN技术实现大二层方式)

假设有两台服务器:

服务器A 192.168.1.10

服务器B 192.168.2.10

两服务器通过L3路由器打通,也就是两机器互通。

此时在两机器上部署VMware NSX,通过隧道技术用VTEPVxlan标签

实现两物理机上虚拟机仿佛在二层通信一样。

附:

IP隧道技术:是路由器把一种网络层协议封装到另一个协议中跨过网络传送到另一个路由器的处理过程

IP协议是IOS唯一选择的传输协议,在隧道技术中IP协议作为封装协议,将被封装的协议报文(可以是任何协议)封装在IP包中,然后由IP协议传输,达到目的地后解封。对于承载者IP协议来说,装的是什么不重要,IP协议就像在源和目的地两头打通了一个隧道一样,让被封装报文直接传送过去。

如VPN和VxLAN就是基于隧道实现的

Overlay

由IT厂商提出,基于隧道技术,将一个大二层网络叠加在传统网络之上

具体实现有比如Vmware提出的VxLAN技术(见后),NVGRE等

于是整个网络就变成了一个巨大的“二层交换机”


Overlay网络和Underlay网络是相互独立的,且都有控制面和数据面,Overlay网络使用Underlay网络点对点传递报文,而报文如何传递到Overlay网络的目的节点完全取决于Underlay网络的控制平面和数据平面,报文在Overlay网络入和出节点的处理(如丢弃,转发)则完全由Overlay网络的封装协议来决定。

阿里云网络主要由三个层面组成: 底层的物理层及其SDN控制器, Overlay网络层及其SDN控制器, 以及应用层. 其中每个层面都由更细节的模块组成.

阿里云的物理层网络是世界上最大的SDN网络之一, 可以细分为DC 网络, 阿里城域网, 阿里骨干网等组件, 物理层的控制器负责管理物理层网络, 并向Overlay层提供 API, 屏蔽各种物理网络的细节(为Overlay网络层提供了虚拟网络组件,于是在Overlay就可以用这些虚拟网络组件搭建网络了)

Overlay 网络层则由网关(Gateway), 阿里虚拟交换机(AVS: Alibaba Virtual Switch), 负载均衡器(SLB: Server Load Balance)等本层数据面的网络组件, Overlay 网络层的控制平面以及 Overlay 网络层的管理平面组成. Overlay 网络层控制器负责管理各个网络组件, 向应用层的产品和服务提供统一的API, 并调用物理层的控制器完成网络功能;

应用层则主要是阿里云网络的各大主要产品如CEN和资源管理调度系统(例如伏羲), 它们通过调用Overlay控制器的北向接口实现了阿里云网络的使用和调度.

摘自阿里云云栖社区

5

VLAN

虚拟局域网,原目的是缩小MAC帧的广播域,实现广播域内的分组隔离

vlan就是交换机内定义的广播域,在一个局域网内,再使用多个交换机来划分广播域,交换机分配vlan号,MAC帧带有VLAN号以供交换机识别,只在vlan号匹配的虚拟局域网内广播

工作层级:L2

VxLAN

详见参考VLAN ,VXLAN和overlay

一种overlay网络的实现技术:L2 over L3,是VMWare的技术

工作层级:L2 over L3

叠加在三层网络上,内部虚拟网络MAC帧封装VxLAN头,然后依次封装在承载的物理网络的UDP头和IP头(L3)

在物理网路中一次传输是一个封装和解封过程,是L5加UDP头成L4,加IP头成L3,加MAC头成L2,再加物理层头成L1。也就是说①发出方:(加头封装)L5->L4->L3->L3->L1②接受方:(拆头解析)L1->L2->L3->L4->L5。然而在VxLAN中就存在overlay网络和underlay网络,于是就有两个封装和解析过程!

具体地,将overlay虚拟网络的MAC帧添加VXLAN首部后(虚拟网络的L2->L1过程),直接封装在物理网络中的UDP报文(物理网络的L5->L4过程)中,然后以传统网路络的通信方式传送该UDP报文,到达目的主机后,去掉物理网络报文的头部信息以及VXLAN首部,将报文交付给目的终端。整个通信过程中,目的终端不会感知到物理网络的存在。

封装UDP报文使用IP协议进行路由选择,形成隧道,IP协议是最底层的(在UDP的L4之下),所以说是覆盖了物理L3网络

VTEP:VXLAN Tunnel End Point,即VXLAN隧道端点,是通过VXLAN使终端所在的路由器之间形成一条在虚拟链路中的通道两端的终端

VTEP的转发表:VNI、MAC、VTEP三列。VNI表示的是租户,MAC便是终端的地址(虚拟网络地址),VTEP表示终端所在的VXLAN(物理网络地址)

如果终端是物理机,那么充当VTEP一般是交换机、路由器等硬件,但是如果是物理机上的虚拟终端一般是由所在物理机的的hypervisor进程承担VTEP的功能。终端就是VXLAN的网关,有虚拟地址与物理地址转换的功能,通过拆包解析VXLAN头实现。

VxLAN具体细节:http://www.h3c.com/cn/d_201811/1131076_30005_0.htm

NFV:网络功能虚拟化

NFV基本概念

NFV(Network Functions Virtualization):就是网络功能虚拟化的缩写(不是NV),利用虚拟化技术,将设备中的功能提取出来,【通过虚拟化的技术在上层提供虚拟功能模块】(提供一个VM),不再拘限于硬件架构。提供的功能比如路由、CPE、移动核心、IMS、CDN、饰品、安全性、策略等等。也就是说NFV希望能够使用通用的x86体系结构的机器替代底层的各种异构的专用设备,然后通过虚拟化技术,在虚拟层提供不同的功能,允许功能进行组合和分离。

①NFV与NV的区别:

NFV是L4~L7的虚拟化,而NV是L2的虚拟化!NFV虚拟化的是一台机器的网络功能——点,且NV虚拟化的是网络本身——面(主流实现:overlay)!

②NFV与SDN的区别:

SDN是一种集中控制的网络架构,侧重于将设备层面的控制模块分离出来,简化底层设备,进行集中控制,底层设备仅仅只负责数据的转发。目的在于降低网络管理的复杂度、协议部署的成本和灵活、以及网络创新。基于SDN的网络架构可以更容易地实现网络虚拟化,可以改善NFV网络性能。 SDN与网络虚拟化

img

SDN和NV是关注整个网络,而NFV是关注一个点

【连点成线】

NV是网络的虚拟化(仅用于数据中心),需要大二层,大二层可以由overlay实现,overlay可以由VxLAN实现,VxLAN是基于隧道技术的

NFV是网络功能的虚拟化,将网络设备变成VM

SDN是一种控制转发分离的网络架构设计

于是一个完整的数据中心网络虚拟化端到端方案:【①物理架构 ②NV虚拟网络 ③NFV网络功能虚拟化+SDN来控制网络】 在这其中,用SDN设计网络

【通过将网络设备的功能虚拟化(NFV,将网络设备变成VM),再将网络虚拟化(NV,实现虚拟二层局域网),就可以非常方便地使用SDN架构(因为很多老设备不支持可编程,不支持openflow协议,当NFV化后就可以了!)】

理解三个网络热点名词:SDN,NFV与NV

VxLAN与SDN?VXLAN究竟有多大的魅力? - 阿布的回答 - 知乎 https://www.zhihu.com/question/24004028/answer/112632872

我们在做SDN,也在做NFV,我们在用SDN的思想实现NFV。从SDN的思想来说,我们有自研的Controller(控制器)和XGW(转发设备)。从NFV来说,我们的Controller(控制器)和XGW(转发设备)都是基于x86服务器和自己研发的软件实现的,在这基础上,实现了VPC、路由器、交换机、NAT网关等等网络功能。因此,VPC可以认为是NFV的一个网络功能或网络产品

摘自阿里巴巴云栖社区

DPDK(无关)

高性能网络数据处理框架,由Intel主导

参考:https://zhuanlan.zhihu.com/p/43735684

传统的IO需要经过内核,在数据量增大的情况背景下,内核会导致IO瓶颈。所以产生了解决方案:旁路网卡IO,绕过内核直接在用户态收发包来解决传统IO的内核瓶颈问题。DPDK就是一种旁路IO技术。

以下为数据流动方式区别

传统方式:网卡 -> 驱动 -> 协议栈 -> Socket接口 -> 业务

DPDK方式,基于UIO(Userspace I/O)旁路数据:网卡 -> DPDK轮询模式-> DPDK基础库 -> 业务

img

DPDK基于UIO(Userspace I/O,是Linux提供的运行在用户空间的I/O技术),UIO可以通过read(主动方式)感知中断,通过mmap实现和网卡的通讯。

DPDK的UIO驱动屏蔽了硬件发出中断,然后在用户态采用主动轮询的方式,这种模式被称为PMD(Poll Mode Driver)

DPDK可以作为SDN数据平面的实现框架(为了追求极致的转发效率)

附:VM网络连接几种方式

NAT:(略)只运行VM联外网,反过来不行

Bridged Adapter 桥接模式:VM直接分配一个独立的IP,直接和外部相连,可以理解为一个VM就是一个真实计算机

Internal 内部网络模式:只允许VM连VM

Host-only Adapter 主机模式:Host-Only模式其实就是NAT模式去除了虚拟NAT设备,然后使用VMware Network Adapter VMnet1虚拟网卡连接VMnet1虚拟交换机来与虚拟机通信的,Host-Only模式将虚拟机与外网隔开,使得虚拟机成为一个独立的系统,只与主机相互通讯。

可见,将VM和主机隔绝成两个系统,然后虚拟网卡(主机方)与虚拟交换机(VM方)作为沟通桥梁,主机方的主机网卡又可和虚拟网卡共享,从而可以实现各种功能

https://www.linuxidc.com/Linux/2016-09/135521p3.htm

PS

mininet是SDN的仿真工具,可以创建虚拟网络,包含真实的工作组件,但运行在一台机器上

运行py mininet/mininet.py打开可视化窗口创建拓扑,也可以cli/python脚本方式


虚拟化,就是实现云计算的基础