网络虚拟化和SDN

1、什么是虚拟化
2、服务器虚拟化
3、网络虚拟化
4、云计算跟网络虚拟化的结合
5、SDN在网络虚拟化和云计算中的作用

一、什么是虚拟化
虚拟化技术,就是将一个物理实体,通过一些复用的技术,克隆出多个虚拟的等价物,这些虚拟的等价物依附于物理的实体之上,共享物理实体的各种资源。类似于进程与线程的关系,在一个进程内可以fork出多个线程,所有线程共享进程的内存资源。
提到虚拟化技术,现在通常是指服务器虚拟化server virtualization,存储虚拟化storage virtualization,网络虚拟化network virtualization。注意虚拟化与SDN是不同的概念,只是SDN的诞生跟虚拟化技术密切相关,而且可能会是SDN的一种重要应用领域。网络虚拟化跟SDN关系最为密切,其次是服务器虚拟化,至于存储虚拟化与SDN关系不大。
二、服务器虚拟化
随着计算机技术特别是CPU/硬盘/内存的飞速发展,个人计算机/小型服务器能力越来越强,资源闲置的越来越多,就有人想把虚拟化技术搬到它们上面来。vmware公司在1999年推出了第一款基于X86商业虚拟化软件,允许在多个操作系统运行在一个PC上面,还内置网络的支持,多个操作系统可以通过内部网络来通信。
Internet大发展之后,网络数据流越来越大,对服务器的要求也越来越大,包括Internet数据中心,运营商数据中心,政府/企业内部大大小小的数据中心,都需要大量服务器。服务器越来越多,对服务器的利用率却不高,大量CPU/内存/硬盘资源闲置,自然而言,人们想到了服务器虚拟化。到了云时代,很多IDC提供公有云或者私有云服务,一些企业或者个人在云服务器提供商的网络里面租用服务器来构建自己的网络和服务。
通过服务器虚拟化,云服务提供商可以将一台物理设备1虚拟成多个虚拟机,将不同的虚拟机租用给不同的客户,用户之间天然隔离,每个虚拟机都分配了一定数量的CPU/存储/内存资源和网络带宽资源。
最早做主机/服务器虚拟化的是vmware公司,后来很多公司看到商机纷纷跟进,比如微软Microsoft的Hyper-V,思杰Citrix的XenServer,红帽redhat的KVM,这三家公司的三个虚拟化产品都是收购来的。除此之外,还有剑桥大学开发的XEN等开源免费的虚拟机,亚马逊的ASW系统就是基于XEN搭建起来的。
虚拟化产品的核心部分是Hypervisor,虚拟机平台的超级管理系统,是一种在虚拟环境中的操作系统,可以访问服务器上包括磁盘和内存在内的所有物理设备。不但协调这些硬件资源的访问,也同时在各个虚拟机之间施加防护。当服务器启动并执行Hypervisor时,会加载所有虚拟机客户端的操作系统,同时会分配适量的内存,CPU,网络和硬盘。很多与虚拟机相关的功能,都发生在Hypervisor上,下图为物理服务器内部的虚拟机架构
网络虚拟化和SDN_第1张图片
三、网络虚拟化
1、什么是网络虚拟化
每个虚拟机都有自己的虚拟网卡和虚拟MAC地址,IP地址,在外部接口上,所有虚拟机共享所属服务器的物理网卡。
同一个server之间的虚拟机和虚拟机之间有通信要求,所有每个Hypervisor会内置虚拟交换机virtual switch的功能来支持虚拟机之间的通信,所有虚拟机的虚拟网卡连接到这个内部虚拟交换机上,从而在内部形成了虚拟网络virtual network,这并不是网络虚拟化。
在一个网络(比如数据中心或者企业网,运营商网络),不同物理服务器上的虚拟机之间也存在着通信的要求,最简单的办法就是把物理服务器通过硬件交换机连接起来,让虚拟机就像一台独立的PC一样加入物理网络,通过传统二三层的方式进行通信,这些虚拟机之间的通信可以是二层交换或者三层路由,或者二层交换加三层路由。很多数据中心网络都是这么做,但是这也不是网络虚拟化。
云服务的兴起加速了虚拟化技术的发展,同时也对虚拟化技术提出了很多需求。比如企业把自己的办公或者业务网络放到公有云服务里面。云服务提供商为这个企业分配了很多台虚拟机,每台虚拟机放置了企业的不同业务,或者不同部门的数据。公有云管理员在给企业分配虚拟机资源的时候,不一定会都分到同一台服务器,因为需要考虑负载分担或者本来企业就有几个不同地点的分支机构,所以最终分配的结果可能是分配给这个企业客户的多台虚拟机位于不同的物理服务器之上,这样,对于这么多分布式的虚拟机的管理复杂程度大大提升了。最大的问题在于,虚拟机可能随时被创建,删除,迁移,云服务提供商有充分的动机想要动态对虚拟机资源进行调整,每做一次调整,都要对涉及的硬件服务器,网络设备等进行手动配置,如果网络很大的时候,每次调整历时将会很长,而在大的公有云或者私有云网络中,这样的调整是很常见的,这样管理的开销是一个非常大的数字。
如何将繁杂的手动配置变成自动化操作呢,首先必须要求虚拟机的管理尽可能与物理网络解耦,也就是说,虚拟机的增加,删除,迁移,要尽量不依赖于物理设备,于是就提出了网络虚拟化的概念,***将虚拟机之间的连线通过tunnel技术来做,而这些tunnel运行于实际物理网络之上,也就是相当于分层的网络,底层是物理网络连接,实际业务通过tunnel承载在物理网络之上,也就是所谓的overlay。***同时将tunnel的终结点放在服务器而不是在边缘的物理接入交换机上,这样的好处是虚拟机之间的连接不依赖于物理网络设备,虚拟机和虚拟机之间仍然可以做二层转发,虚拟机迁移的时候,只需要在软件上指定它与那个tunnel终结点关联就行了,不需要修改虚拟机的IP和Mac地址,更不需要对物理网络做任何修改,所有的改动在软件中发生。这样,自动化的基础就有了,同时,tunnel中携带一个独一无二的标志,用来标志每一个独立的虚拟网络,不同虚拟网络之间不能直接通信,这样就做到了安全隔离,这就是网络虚拟化,除此之外,还可以往虚拟机里面加入一些网络增值功能,比如负载分担,防火墙,mirror,QoS等,所有这些构成了网络虚拟化平台。
2、网络虚拟化的价值
2012年初,成立才4年都没开始盈利的nicira被vmware以12.6亿美元的惊人数字收购,一时之间,网络虚拟化吸引了足够的眼球。
网络虚拟化将网络的边缘从硬件交换机推送到了服务器里面,将服务器和虚拟机的所有部署,管理的职能从系统管理员+网络管理员的模式变成了纯系统管理员的模式,让服务器业务的部署变得简单,不再依赖于硬件交换机,一切归于软件控制,可以实现自动化部署。
这就是网络虚拟化的价值所在,也是为什么明知服务器的性能远远比不了硬件交换机但还是要使用网络虚拟技术的原因。
3、网络虚拟化的战争
vmware,Xen,KVM,hyper-V,最初都是只有比较简单的虚拟交换机的功能,用于在一个server内部的虚拟机之间通信。
在2008年,cisco联合vmware开发了一个划时代的虚拟交换机产品nexus 1000V,作为一个第三方的虚拟交换软件,最初只是在vmware的虚拟机上,后来体制到了其他虚拟平台。nexus 1000V在普通交换机的基础上增加了很多网络功能,如负载均衡,网络可视化,防火墙等,而且还有很多自动化部署的工具,可以帮助管理员有效的管理虚拟网络,后来思科在nexus 1000V里面增加了Vxlan的支持,这是一个tunnel overlay技术,可以让用户在不同虚拟机之间建立虚拟连接,构建自己的虚拟网络,最原始的网络虚拟化出现了。
在此后的很长时间内,cisco的nexus 1000V都是市场唯一的一个第三方虚拟交换机软件,思科通过向nexus 1000V的企业用户收取license费用赚钱,这种情况到2012年nicira公司的虚拟交换平台NVP的横空出世而改变。nicira是OpenFlow发明者创立的公司,这个平台使用OpenFlow作为控制工具,有自己的controller,还有自己的虚拟交换机OpenvSwitchOVS,这个平台多方面都胜于cisco nexus 1000V,增加了更丰富完整的网络功能支持,借助OpenFlow的集中化控制,将目标直接瞄准了数据中心虚拟网络部署的复杂度问题,通过向上云计算管理平台提供编程接口使云计算管理平台的自动化操作成为可能,从而将虚拟机部署的工作大大简化,而且还可以允许用户在虚拟机环境中创建自己的二三层网络。
NVP一出世,马上引起了业界的广泛关注,这是一个真正的网络虚拟化平台,vmware立马收购了,2013年,整合了vDS和NVP之后,退出了NSX平台,这也意味着vmware公司与思科的合作关系基本完结,一场围绕网络虚拟化的战争打响了。后来思科把网络虚拟化视为自己很大的威胁,收购了vCider,就是加强在这方面的竞争力。
4、网络虚拟化中的三种tunnel技术比较
Vxlan
Vxlan是virtual extensible Lan虚拟可扩展局域网,是思科,vmware,arista等公司推出的一个主要用于网络虚拟环境中的tunnel技术,将原始报文封装在一个UDP tunnel header里面(在原始报文前面加一个L2+IP+UDP+VxLan头),并通过vxlan头部里面的VNI信息将传统网络中的vlan从4kb扩展到了16MB,这就意味着理论上一个物理网络里面最多可以创建16MB个虚拟网络。
当报文封装在tunnel中在物理网络中传输的时候,通常硬件交换机只会用外层tunnel头中的信息来做负载均衡,这有一个弊端,如果很多不同的数据封装在同一个tunnel中传输,硬件交换机做负载均衡的时候,永远分配到同一个链路,因为外部头保持不变,为了更好的负载均衡,在tunnel源端做tunnel封装的时候,会先用原始报文的头信息计算出hash值,然后这个hash值作为vxlan tunnel头部中的UDP源端口,这样,当物理设备用外部tunnel头中的UDP源端口计算hash做负载均衡的时候,实际上就已经包含了内部原始报文头部的信息,更好的做负载均衡。
NvGRE
NvGRE是network virtualization generic routing encapsulation的缩写,是微软公司推出的网络虚拟化tunnel技术。GRE是一个很早的tunnel技术,但是在网络虚拟化环境中,还缺少两点,第一没有像vxlan那样的扩展vlan数量。第二还是不能更好的做负载均衡,微软复用了GRE技术,但是重新解释了GRE tunnel头部中的GRE key 字段,这个字段的高24bits被用作与vxlan一样的VNI ID,从而将vlan数量从4KB或者到16MB,为了更好的负载分担,在tunnel源端做tunnel封装的时候,会先用原始报文的头部信息计算出hash值,让后将低8bits写到key字段的低8bits去。这样硬件交换机在做负载均衡的时候,如果GRE头中的这个字段做hash计算,那就更好的做负载均衡,不如vxlan的地方在于不少设备是不支持用key做负载均衡的hash计算。
STT
STT是stateless transport tunneling无状态传输tunnel的缩写,是nicira提出的tunnel技术,用于自己的NVP平台。前两者既可以用在硬件交换机上,也可以用在虚拟交换机上,而STT只能用于虚拟交换机上,主要是为了解决影响服务器性能的问题,就是报文分片。
数据中心里面发的报文大多数的TCP报文,发出之前肯定要分片,而分片是一个很影响CPU性能的工作,所以很多服务器网卡都支持网卡分片,减轻CPU的负担,而且分片只能针对TCP报文,一旦服务器用了vxlan或者NvGRE来封装原始的TCP报文,当报文到达网卡之后就不会进行分片,因为不是TCP报文,所以只能靠虚拟交换机自己来分片(纯CPU工作),性能就会降低。
为了解决这个问题,提出STT,与其他tunnel不同的是,tunnel header的格式是TCP格式,这样网卡看来就认为它是TCP报文,就会自动对大包进行分片,实际上,不是TCP,因为收发双方不需要就这个tunnel维护任何连接状态,也没有三次握手,所以这个技术只适用于虚拟交换机。
网络虚拟化和SDN_第2张图片5、网络虚拟化的三种组网方案
纯软件方案
以VMware/Nicira为代表的虚拟化解决方案提供商旗帜鲜明地认为数据中心网络的边缘应该延伸到服务器中的虚拟交换机中,因为他们认为如果虚拟机接入硬件交换机(即Tunnel终结在硬件交换机上),会导致虚拟机的部署要依赖于物理网络设备,万一网络设备能力不同或者配置接口不同,都会不利于自动化部署。所以现在很多网络虚拟化方案都是使用虚拟机交换机来做Tunnel的发起和终结。
随着计算量的增大和网络规模的增大,纯软件的方案带来了严重的性能问题,对软件的优化是有限度的,最终还是可能会碰到性能问题
传统硬件方案
纯软件的方案,对设备商来说,这种方案既不利于他们卖设备,也不利于他们控制网络技术。Cisco虽然有Nexus 1000V这样的软件方案,但是他们主要还是一个硬件设备供应商,硬件方案才是他们的立命之本,所以Cisco之类的厂商都有自己的一些硬件方案。他们中有的人根本不认同网络虚拟化,认为传统的网络架构虽然有些问题,但是也有网络虚拟化无法取代的一些优势,包括性能和网络可见性。还有一些厂商认同网络虚拟北,认同Overlay,但是认为Tunnel未必就要终结在虚拟交换机上,完全可以终结在物理交换机上,服务器只做服务器该做的事情就可以了。
折中方案
管理员仍然像之前一样按照惯用的方式进行业务部署和资源管理(使用云管平台管理服务器和网络),但是在管理平台内部,原本通过controller去配置虚拟交换机的时候,换成配置硬件交换机,还包括一些策略,比如QoS等,配置接口都由配置虚拟交换机改成配置硬件交换机,既解决了软件方案的性能不足问题,又保持了原有的管理模式。

四、云计算跟网络虚拟化的结合
有了网络虚拟化技术的基础之后,要做到自动化操作就纯粹是软件的工作,但是网络毕竟只是业务部署的一部分,除了网络,还需要为业务分配资源,包括计算资源,存储资源等。如果有一个平台,可以集中管理所有的虚拟机资源,包括存储,计算节点,虚拟网络,当有虚拟机变更的时候,只要把该虚拟机所需要的资源参数输入,然后这个平台管理软件就会自动计算出所有需要的资源并自动分配和配置,这样的一个平台就是云计算平台,网络虚拟化可以作为这个平台的一个重要部门参与其中。
目前市场上出名的云计算平台是OpenStack,CloudStack,都是开源云计算平台,还有一些厂商都有自己的云计算平台,比如亚马逊的AWS。理论上这些云计算平台都可以跟网络虚拟平台想结合,网络虚拟化平台作为整个云计算平台的一部分,负责网络资源的管理。

五、SDN在网络虚拟化和云计算中的应用
纵观现在宣布要提供SDN产品和服务的公司,无论是老牌设备商或软件商还是创新型公司,很多都不是纯粹的SDN设备和Controller,那或多或少跟网络虚拟化以及云计算相关。网络虚拟化跟云计算的关系前面说了,关键是, SDN如何参与其中?
观察网络虚拟化平台或者云计算平台的架构就会发现,在网络控制这一块,它们天然都是集中化控制(只有集中化控制,才能做到自动化),Nicira的NVP,明确地使用OpenFlow来进行集中控制,其他公司的平台,就算没有使用OpenFlow,也是通过别的协议接口(比如SNMP,XMPP、私有化API等)来进行集中控制,所以也都属于SDN的范畴。 SDN Controller可以集成到OpenStack或者别的云计算平台中去,最终用户通过云计算平台去间接控制虚拟化环境中的网络资源。缺少了SDN这一环, 自动化的效果就会大打折扣。
人们说数据中心是最适合应用SDN技术的时候,其实更多的是指网络虚拟化部署最适合SDN技术,网络虚拟化的需求,大大加速了SDN的发展,网络虚拟化以及云计算,是SDN发展的第一推动了,SDN为网络虚拟化和云计算提供了自动化的强有力的手段。

你可能感兴趣的:(浅谈SDN)