SDN学习笔记(四):Network Virtualization

将网络虚拟化的学习分成四部分:1.什么是网络虚拟化以及它是怎么实行的?2.网络的虚拟化和一些相关应用程序的实例

3.mininet上的虚拟网络4.测试和一些在mininet上的动手操作

1.什么是网络虚拟化以及它是怎么实行的?

第一种理解方式就是,这是一种真实的,物理网络的抽象化,它让多个逻辑网络运行在同一块物理基板上,而这些逻辑网络的主人都会有自己清晰的网络视角(这些独立出来的网络是基板的子集),他们不在乎这个物理基板长什么样。但换作是以前,这个概念并没有出现,也就是说这些逻辑网络他们并不是很独立,要参考整个物理基板上的路由链路状态等等。另一种看待网络虚拟化的方式就是,网络虚拟化,相当于是一个收集了网络层次2到7层服务的容器,然后使用者通过这个没有基层的黑箱容器作用于这个真实存在基板上。anyway,这两种理解方式都把基层也就是物理层给分出来

网络的什么东西能被虚拟化呢?有两个,一个是网络节点,将他虚拟化的方式就是用虚拟机,另一个就是链路,将他虚拟化的方式就是用隧道,相应的有以太网GRE,其他的还有储存等等。

左侧的网络虚拟化是以虚拟网络节点为单位,应用程序通过X86环境控制每个虚拟机,而这些虚拟机运行是通过服务器虚拟机监控器利用了CPU内存以及输入输出设备等等,从而获取到虚拟机所需要的基本资源比如虚拟机IP虚拟机链路,协议等等,这虚拟机监控器是来将这些资源进行合理调度并起到隔离控制的作用,当然,图里没有提到的是,每个虚拟机都有自己的虚拟CPU内存等等设备,他们也要由基层资源提供。右侧是以每个小的虚拟网络为单位,工序通过2-7层的服务下达给每个虚拟网络,这些虚拟网络是通过网络虚拟化来利用到物理网络,从而获取到资源,中间的网络虚拟化层与左边的虚拟机监控器很像,它的目标就是确保这些不同的虚拟网络之间的分离和适当的资源共享。将真实存在的物理层硬件层,和软件层控制层解耦,将会增加灵活性,这里所说的资源就是视角,就是自己的虚拟网络等等。

网络虚拟化的目的是什么?

互联网发展如此之久,其架构已经接近固化,而网络虚拟化就是将互联网架构的僵化利用起来,产生这个思想的原因是,要重新覆盖掉现有的网络就要深入底层修改,这意味着就要重新构建一个全新的框架来让新版网络能够接受,让旧版网络能够兼容,于是产生了另一种想法,为什么要颠覆重来而不是继续演化下去,于是想到构建一个两开花基层让你想要的千百个不同网络都可以在上面开花。因此,网络虚拟化的动机就是百花齐放:提供某种允许网络技术发展的基础设施,一旦部署该平台,技术就可以独立于底层基础架构在该平台之上发展,通过两开花基层,你可以有自己的一个特定的实验性虚拟网络,你可以在你自己的虚拟网络上做研究,这些虚拟网络不会互相干扰,因此人人都可以在这个网络上创新,这样构建尤其重要的一点就是可以加快技术的发展和研究,因此人人都能在同一时间部署和实例化多种不同类型的网络同时不影响到大网络。所以说我们不必深入基层网络来做研究,我们可以在虚拟网络上做研究,这就减少了编程难度,操作难度。

注意一下网络虚拟化和SDN的差别,SDN本身并不是抽象的,它确实将数据平面与控制平面分开,这是一种模型,但网络虚拟化是提供抽象的技术,可以在单个物理网络之上实例化多个逻辑网络 ,不是真正存在的。

VPN(虚拟专用网络)

VPN是连向分布式站点的一种虚拟网络,它和普通的虚拟网络不一样,它不是用来做实验的,不是私人的,是用来数据通信的,它能够确保数据通信的安全性,基本原理(百度一下):

  1. 通常情况下,VPN网关采取双网卡结构,外网卡使用公网IP接入Internet

  2. 网络一(假定为公网internet)的终端A访问网络二(假定为公司内网)的终端B,其发出的访问数据包的目标地址为终端B的内部IP地址。

  3. 网络一的VPN网关在接收到终端A发出的访问数据包时对其目标地址进行检查,如果目标地址属于网络二的地址,则将该数据包进行封装,封装的方式根据所采用的VPN技术不同而不同,同时VPN网关会构造一个新VPN数据包,并将封装后的原数据包作为VPN数据包的负载,VPN数据包的目标地址为网络二的VPN网关的外部地址。

  4. 网络一的VPN网关将VPN数据包发送到Internet,由于VPN数据包的目标地址是网络二的VPN网关的外部地址,所以该数据包将被Internet中的路由正确地发送到网络二的VPN网关。

  5. 网络二的VPN网关对接收到的数据包进行检查,如果发现该数据包是从网络一的VPN网关发出的,即可判定该数据包为VPN数据包,并对该数据包进行解包处理。解包的过程主要是先将VPN数据包的包头剥离,再将数据包反向处理还原成原始的数据包。

  6. 网络二的VPN网关将还原后的原始数据包发送至目标终端B,由于原始数据包的目标地址是终端B的IP,所以该数据包能够被正确地发送到终端B。在终端B看来,它收到的数据包就和从终端A直接发过来的一样。

  7. 从终端B返回终端A的数据包处理过程和上述过程一样,这样两个网络内的终端就可以相互通讯了

XEN

构建虚拟网络当然需要有虚拟网络节点,目前使用较为广泛的是剑桥大学的XEN,Domain表示虚拟机,Domain0是最高优先级别的虚拟机,要创建别的虚拟机,就要通过上图中的hypervisor也就是虚拟机监控器,用来调用硬件资源,但是它无法直接和硬件进行对话,管理员需要使用控制平面软件通过虚拟机Domain0的控制接口来和硬件对话,驱动它们创建其他虚拟机,XEN的好处就是它支持多种不同操作系统。

EGRE

 虚拟机之间的传输可以通过以太网隧道进行,虚拟机把自己生成的以太网帧封装在IP包中然后让这个IP包经过不断路由跳跃到达目标虚拟机,而在两个虚拟机眼里,这不像一条经过多次跳跃的路,而是一条径直的点对点隧道,当然,电脑该有的虚拟机也要有,虚拟机也有自己的接口也就是虚拟接口,来接收数据,要让其真正的接收数据就需要使用上一些类似于open vswitch的技术,让它与真正的接口有一个桥梁。

(未完)

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章