网络虚拟化
●什么是虚拟化
虚拟化技术,抽象地将,就是将一个物理实体,通过一些复用技术,克隆出多个虚拟的等价物,这些虚拟的等价物依附于物理实体之上,共享物理实体的各种资源。现在人们所提到的虚拟化技术通常指服务器虚拟化(Server Virtualization)、存储虚拟化(Storage Virtualization)、网络虚拟化(Network Virtualization),下面着重介绍一下服务器虚拟化和网络虚拟化技术。
●服务器虚拟化
随着计算机技术特别是CPU/硬盘/内存的飞速发展,个人计算机/小型服务器的能力越来越强,闲置的资源越来越多,因此人们才逐渐考虑到虚拟化技术。最早做主机/服务器虚拟化的是VMware,后来Microsoft(Hyper-V)、Citrix(XenServer)、RedHat(KVM)等。每个虚拟化产品的核心部分叫做Hypervisor,即为虚拟机平台的超级管理系统,它是一种在虚拟环境中的“元”操作系统,可以访问服务器上包括磁盘和内存在内的所有物理设备。Hypervisors不但协调着硬件资源的访问,也同时在各个虚拟机之间添加防护。当服务器启动并执行Hypervisor时,它会加载所有虚拟机客户端的操作系统,同时会分配给每台虚拟机适量的内存、CPU、网络和磁盘。很多很多跟虚拟机相关的功能都发生在Hypervisor上。
●网络虚拟化
就虚拟机的网络部分而言,每个虚拟机都有自己的虚拟网卡和虚拟Mac地址、IP地址。在外部接口上,所有虚拟机共享所属服务器的物理网卡。
同一个Server之间的虚拟机和虚拟机之间是有通信的,所以每个Hypervisor一般都会内置虚拟交换机(Virtual Switch)的功能来实现虚拟机之间的通信,所有虚拟机的虚拟网卡连接到这个内部内部虚拟交换机上,从而在内部形成一个虚拟网络,很多人认为这就是网络虚拟化,其实这是误解。在一个网络里面(数据中心网络或者企业网、运营商网络),不同物理服务器上的虚拟机之间也存在着通信的要求,要满足这种需求最简单的办法就是把物理服务器通过硬件交换机连接起来,让虚拟机就像一台独立的PC一样加入物理网络,通过传统二三层的方式来进行通信,这些虚拟机之间的通信可以是二层交换或者三层路由,或者二层交换加三层路由。但是这种也不是网路虚拟化,因为互联网VM的网络是虚拟网络跟物理网络的组合,这是一个没有层次的平的网络。
那么什么才是网络虚拟化呢,首先要求虚拟机的管理尽可能与物理网络解耦,即虚拟机的增、删、迁,尽量不依赖于物理设备。将虚拟机之间通过Tunnel技术连通,这些Tunnel运行于实际物理网络之上,也就是相当于分层网络,底层是物理网络连接,实际业务通过Tunnel承载在物理网络之上,也就是Overlay。同时Tunnel的终结点放在服务器上而不是放在边缘的物理接入交换机上。这样做一个最大的好处就是虚拟机之间的连接不依赖于物理网络设备,虚拟机之间仍然可以做二层转发,虚拟机迁移时只需在软件中重新指定一下它跟哪个Tunnel重点关联,而不需要修改虚拟机的IP和Mac,更不需要对物理网络做任何修改。同时Tunnel中携带一个独一无二的标志,用来标志每一个独立的虚拟网络,不同虚拟网络之间不能直接通信,这样保证了安全隔离,这就是网络虚拟化。除此之外,还可以往虚拟机里面加入一些别的网络增值功能,如负载均衡、防火墙、VPN、QoS等,所有的这些组成了网络虚拟化平台。