这里写图片描述

  是一种按需分配、按使用量收费的使用模式,提供了一个可配置的资源共享池,用户可以通过网络访问,获取存储空间、网络带宽、服务器、应用软件等等服务。

   NFV,即网络功能虚拟化,Network Function Virtualization。通过使用x86等通用性硬件以及虚拟化技术,来承载很多功能的软件处理。从而降低网络昂贵的设备成本。可以通过软硬件解耦及功能抽象,使网络设备功能不再依赖于专用硬件,资源可以充分灵活共享,实现新业务的快速开发和部署,并基于实际业务需求进行自动部署、弹性伸缩、故障隔离和自愈等。

  所以说云计算其实就是虚拟化出资源池以后的应用,是以虚拟化技术为基础的。云计算、虚拟化都需要集中化控制,而SDN最重要的三个概念是:可编程(开放的API接口)、控制平面与数据平面分离,以及集中式控制模型。基于SDN的网络可以更容易地实现网络虚拟化。

  云计算平台本身的基础架构中,所用到的网络功能相对简单,就是普通的桥接技术,但是一般都会有用来集成第三方程序的接口,第三方的网络虚拟化平台一旦集成到云计算平台中,就可以大大增强云计算平台网络自动化部署的能力。当云计算平台部署网络服务的时候,先通过插件向这些网络虚拟化平台内置的Controller发送配置消息,然后Controller通过跟虚拟交换机或者硬件交换机之间的南向接口,比如 OpenFlow或者OF-Config、NetConf或者别的接口,去配置交换机。(比如要在两个Hypervisor(管理程序)之间创建Tunnel,并将一 些VM绑定到这个Tunnel上去,以及配置一些网络安全策略或者QoS策略等)

  Overlay是通过在现有网络上叠加一个虚拟的逻辑网络,让原有网络尽量不做改造,通过定义的逻辑网络来实现业务逻辑,解决原有数据中心的网络问题。实际上就是一种隧道封装技术,将二层网络封装在三层/四层报文中进行传递,提供了一种解决数据平面转发和多租户隔离的技术手段,VXLAN(Virtual eXtensible LAN)是当前最为主流的Overlay标准。从数量上讲,它把 12 bit 的 VLAN tag 扩展成了 24 bit。从实现上讲,它是 MAC in UDP的封装方式,可以跨 L3 边界,很巧妙地解决了 GRE tunnel 和 VLAN 存在的不足,让组网变得更加灵活,有很好的扩展性。

  网络虚拟化主要用在提供云服务的网络中。在实际部署中,有使用虚拟交换机来做Tunnel Overlay网络终结的方案,也有出于性能考虑使用硬件交换机做Tunnel Overlay网络终结的方案。 

  1)(+) OVS 的纯软件方案,会遭受严重的性能问题,因为一台服务器里面虚拟机一多,随着网络流量的增大,网络交换部分带给CPU的压力就太大了。 
  2),(+) SDN+硬件网络虚拟化的方案。用SDN硬件交换机代替了OVS纯软件方案,将Tunnel加解封装,安全过滤,基于VM的 QoS策略等网络功能放到了硬件交换机中,性能得到大幅度提升。

(一)云计算介绍

云计算是一种按需分配、按量收费的使用模式,提供了一个可配置的资源共享池,用户可以通过网络访问,获取服务器、存储、网络、应用软件等等服务。

1:云计算的特点及优势 

1,资源池化; 
2,网络访问; 
3,自助式服务; 
4,可衡量的服务量(弹性计算、按需计费); 
5,资源灵活调度

2:云计算的服务模式 

1,SaaS 【software as a service】 软件即服务 – 用户通过网络租用基于Web的软件使用。(虚拟桌面,在线游戏等) 
2,PaaS 【platform as a service】 平台即服务 – 指将软件研发的平台作为一种服务。(,开发工具,web服务器,软件运行环境等) 
3,IaaS 【infrastructure as a service】 基础架构即服务 – 用户通过网络直接访问底层的计算、存储和网络资源。(虚拟机,服务器,存储空间,网络带宽等)

3:云计算的类型 

  A:公有云:通常指第三方提供商为用户提供的能够使用的云,公有云的核心属性是共享资源服务。例如:阿里云、腾讯云、百度云等等。 
  B:私有云:是为一个客户单独使用而构建的,对数据、安全性和服务质量提供最有效控制。私有云可部署在企业数据中心的防火墙内,也可以将它们部署在一个安全的主机托管场所,私有云的核心属性是专有资源。 
  C:混合云:融合了公有云和私有云的优点。出于安全考虑,企业更愿意将数据存放在私有云中,但是同时又希望可以获得公有云的计算资源,,混合云达到了既省钱又安全的目的。

4:OpenStack

OpenStack 是一套框架 —— API: 

  它是一个中间层。可以创建、管理和销毁虚拟机,但是要完成这些操作需要依赖于第三方的 Hypervisor(管理程序),通过这个 Hypervisor 去完成虚拟化的工作。OpenStack 有个组件叫 Cinder(用来提供块存储服务的),但是 OpenStack 自己并不能进行数据的存储和读写,它需要依赖一个实际的块存储设备的支持,这个设备可以是一个分布式的存储系统,比如说 Ceph,也可以是一个存储设备,比如说 EMC 的 SAN,也可以是存储服务器的本地硬盘。 
  提供了完备的 API 来支持应用的开发,云计算的愿景就是让用户能够像用电一样去使用计算,OpenStack 的设计也是朝着这个愿景去做设计的,但是实际上我们平时是不能直接用电的,我们需要用的是电冰箱、电脑、电视等等这些电器。同理,对于云计算来说,提供 API 去支持开发应用这个事情就合情合理的非常的重要了,具有完备的 API 是 OpenStack 的突出优点。 
[ OpenStack 不是什么?] 
  它不是虚拟化软件(必须知道这点),OpenStack 虽然管理虚拟机,但本身不具备虚拟化的功能,它给上层提供一个虚拟化的运行环境,必须得依赖一个第三方的虚拟化软件来实现,比如默认支持的  内核虚拟机,装完  之后就自动带了,集成到 Linux 内核里面了(KVM),另外它还支持 Xen,还支持微软的 Hyper-V,支持 VMware 的 Vshpere,还支持像 Linux  和  这样轻量级的虚拟化技术。 
  云 != 虚拟化,云化的目的是为了实现效用计算,弹性计算,动态资源调度,多租户等这样的一些特性;而虚拟化只是实现云计算的这些特性中的一个技术手段而已,而且它不是必需的。比方说 IBM 的 Softlayer 是 IBM 主推的云服务之一,它中间有一个非常大的特点就是,它支持 Bare Metal Server,直译过来就是 “金属裸机”,也就是 Softlayer 在上面不做虚拟化,而是直接用物理服务器来实现云,直接给用户、租户提供的就是物理服务器,Softlayer 也可以在上面来实现多租户 、弹性计算等等特性。总之,Softlayer 没有虚拟化,但是 Softlayer 也做了云。第二个例子是 OpenStack 也有一个项目叫作 Ironic,是为了通过管理 “金属裸机”来实现云从而提出的项目。

OpenStack基本组件:

  • Nova:管理虚拟机的创建和销毁(支持KVM, Xen,VMware ,还支持像 Linux Container 和 Docker 这样轻量级的虚拟化技术)

  • Neutron:虚拟网络管理服务,是SDN在 OpenStack 里边的一个实现,提供 Plugin 模块,这个是用户可以自己去写的。

  • Cinder:虚拟块存储服务:它需要依赖一个实际的块存储设备的支持,这个设备可以是一个分布式的存储系统,比如说 Ceph。

  • Swift:对象存储服务,简单来说,就是虚拟出一块磁盘空间,可以在这个空间当中存放文件,不能进行格式化,转换文件系统,大多应用于云磁盘/文件。

  • Keystone:权限认证

  • Glance:镜像管理

  • Horizon:图形界面,控制面板

(二)虚拟化介绍

  虚拟化,是指通过虚拟化技术将一台计算机虚拟为多台逻辑计算机。在一台计算机上同时运行多个逻辑计算机,每个逻辑计算机可运行不同的,并且应用程序都可以在相互独立的空间内运行而互不影响,从而显著提高计算机的工作效率。 

  虚拟化使用软件的方法重新定义划分IT资源,可以实现IT资源的动态分配、灵活调度、跨域共享,提高IT资源利用率,使IT资源能够真正成为社会基础设施,服务于各行各业中灵活多变的应用需求。

1:虚拟化的分类 

全虚拟化、半虚拟化、平台虚拟化、硬件虚拟化(Inter vt-x/EPT) (AMD AMD-v /RVI)、软件虚拟化、桌面虚拟化、应用虚拟化、存储虚拟化、网络虚拟化

2:虚拟化的优势 

虚拟化可以虚拟出不同的虚拟操作系统。 
虚拟机之间是相互独立互不影响的。 
支持异构。 
支持快照、克隆、还原等操作

3:云计算与虚拟化的区别与联系

  • 虚拟化是一种技术,云计算是一种使用模式。

  • 虚拟化是指将物理的实体,通过软件模式,形成若干虚拟存在的系统,其实真是运作还是在实体上,只是划分了若干区域或者时域划分

  • 云计算的基础是虚拟化,但虚拟化只是云计算的一部分,云计算其实就是在虚拟化出若干资源池以后的应用,但虚拟化并不是只对应云计算的

4:KVM虚拟化

  • KVM是开源软件,全称是kernel-based virtual machine(基于内核的虚拟机)。

  • 是x86架构且硬件支持虚拟化技术(如 intel VT 或 AMD-V)的Linux全虚拟化解决方案。

  • 它包含一个为处理器提供底层虚拟化 可加载的核心模块kvm.ko(kvm-intel.ko或kvm-AMD.ko)。

  • KVM还需要一个经过修改的QEMU软件(qemu-kvm),作为虚拟机上层控制和界面。

  • KVM能在不改变linux或windows镜像的情况下同时运行多个虚拟机,(它的意思是多个虚拟机使用同一镜像)并为每一个虚拟机配置个性化硬件环境(网卡、磁盘、图形适配器……)。

KVM的优势: 

1,嵌入到Linux的Kernel中 (提高兼容性) 
2,代码级资源调用(提高性能) 
3,虚拟机就是一个进程 
4,直接支持MUMA技术(NUMA(Non Uniform Memory Access Architecture)技术可以使众多服务器像单一系统那样运转,同时保留小系统便于编程和管理的优点。)

5:open vswitch虚拟化 

OpenvSwitch,是虚拟交换机,主要用于虚拟机VM环境,支持Xen/XenServer, KVM, and VirtualBox多种虚拟化技术。OpenvSwitch还支持多个物理机的分布式环境。

  • 传递虚拟机VM之间的流量

  • 以及实现VM和外界网络的通信。

OVS两种模式: 

1. standalone:这种模式下,没有运行controller的情况下,OVS会自动调回普通switch模式,如果有controller的情况,ovs会自动变成 openflow switch。 
命令:ovs-vsctl set-fail-mode ovs-switch standalone

2.secure:这种模式下,无论有没有controller, ovs都会作为openflow switch运行, 也就是所有interface在bridge上,等待controller或者用户添加flow到switch来进行通信 

命令:ovs-vsctl set-fail-mode ovs-switch secure

这里写图片描述 

ovs-vswitchd是主要模块,实现switch的 daemon(守护进程),包括一个支持流交换的Linux内核模块; 
ovsdb-server轻量级数据库服务器,提供ovs-vswitchd配置信息; 
  
ovs-vsctl 查询和更新ovs-vswitchd的配置; 
ovs-ofctl查询和控制 OpenFlow交换机; 修改OVS 中的流表项,对 OVS 的运行状况进行动态监控。 
ovs-dpctl 用来配置switch内核模块; 
ovs-appctl 发送命令消息,运行相关daemon; 
ovs-brcompatd让 ovs-vswitch替换 Linuxbridge,包括获取 bridgeioctls 的 Linux内核模块;

这里写图片描述

(三)SDN介绍

  SDN是一种新型网络创新架构,通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,让网络成为一种可灵活调配的资源。SDN最重要的三个概念是:可编程(开放的API)、控制平面与数据平面分离,以及集中式控制模型。 

  在SDN中很重要的两个实体是Switch跟Controller。 
  Controller知道网络中所有的消息,对整个网络进行管理和控制,可以给交换机下发流表,对所有网络设备运行状态进行监控。 
  Switch就是一个实现Controller指令的实体,只不过跟传统的交换机不一样,它的转发规则由流表指定。Switch由两部分组成:  

  • Secure Channel,是与控制器通信的模块,通过socket连接。

  • Flow table,里面存放这数据的转发规则。当数据包进入switch之后,寻找对应的流表进行匹配,并执行相应的action,如果没有匹配的数据包则将其封装在packet_in中发给控制器进行处理(丢弃、泛洪等)

每条流规则分为基本字段、条件字段和动作字段三部分:

  • 基本字段包括生效时间duration_sec、所属表项table_id、优先级priority、处理的数据包数n_packets,空闲超时时间idle_timeout等,

  • 条件字段包括输入端口号in_port、源目的mac地址dl_src/dl_dst、源目的ip地址nw_src/nw_dst、数据包类型dl_type、网络层协议类型nw_proto等,可以为这些字段的任意组合

  • 动作字段包括正常转发normal、定向到某交换机端口output:port、丢弃drop、更改源目的mac地址mod_dl_src/mod_dl_dst等,一条流规则可有多个动作,动作执行按指定的先后顺序依次完成。

SDN与网络虚拟化: 

网络虚拟化是一种网络技术,可以在物理拓扑上创建虚拟网络。传统的网络虚拟化部署需要手动逐跳部署,其效率低下,人力成本很高。SDN通过集中控制的方式,网络管理员可以通过控制器的API来编写程序,从而实现自动化的业务部署,大大缩短业务部署周期,同时也实现随需动态调整。基于SDN的网络架构可以更容易地实现网络虚拟化。

1、SDN技术的优点。 

(1)提供网络结构的统一视图:对整个网络架构实现统一的查看,从而简化配置、管理和优化。 
(2)高利用率:集中化的流量工程使得我们能够有效地调整端到端的流量路径,从而达到网络资源的高效利用。 
(3)快速故障修复:链路、节点故障都能实现快速修复。而且系统能够快速的聚合网络资源,实现平均分配,并且对于一些网络行为可进行预测。 
(4)平滑升级:控制平面和转发/数据平面的分离可以做到软件平滑升级的同时保证没有数据丢包或者性能衰减。 
(5)弹性计算:大规模的计算、路径分析都被集成在子控制器中,由最新代的服务器 完成。

2、OpenFlow与SDN的联系与区别。 

SDN是一种新型网络创新架构,通过将网络设备控制面与数据面分离开来,从而实现了网络流量的灵活控制,让网络成为一种可灵活调配的资源。 OpenFlow实现了SDN可编程网络的思想,是控制平面和数据平面的一种通信协议,是连接两者之间的桥梁。

3、当前SDN技术主要应用于哪些领域。 

数据中心网络、数据中心间的互联、政企网络、电信运营商网络、互联网公司业务部署。

SDN在数据中心网络中的优势: 

(1)在数据中心网络中,通过SDN可以使得网络和计算资源更加紧密的联系起来并实现有效的控制。如果数据流量很大,不能合理分配传输路径很容易造成数据拥塞,通过SDN实现路径优化以及负载均衡,从而使得数据交换更加迅速。 
(2)网络管理和安全控制方面。所有经过OpenFlow交换机的数据流都必须由控制器来做出转发决定。在控制器中可以对这些流按照预先制定的规则进行检查,然后更改数据流的传输路径或者拒绝某些数据流来增强内网的安全性。 
(3)在SDN中,交换设备的数据转发层和控制层是分离的,因此网络协议和交换策略的升级只需要改动控制层。在openflow网络中实现了软硬件的分离以及底层硬件的虚拟化,从而提供了一个良好的发展平台。