云计算网络极速入门-虚拟机网络
本文是《云计算网络极速入门》三部曲:
-
《云计算网络极速入门-虚拟机网络》
-
《云计算网络极速入门-容器网络》
-
《云计算网络极速入门-混合云网络》
的第一篇。
1、网络基础
所谓的“云计算”就是通过网络将一个个计算单元、存储单元聚合成巨大的资源池,并按需对外提供计算、存储服务。同时,网络本身也是一项云资源,可以说,没有网络就不存在云计算,网络是云计算基础资源中的基础资源。
云计算中的任何资源为了实现按需分配,首先要先将其“池化”,并按统一的标准对外提供资源服务,这势必要淡化资源的硬件属性,将其“虚拟化”。网络作为云计算基础资源中的基础资源,同样需要遵循此规律,淡化硬件区别以提供更好的“云化”亲和性,也就是更好的控制转发能力;此外,网络也要更高效,提供更高的传输速率,以满足不断增长的云上及跨云的资源传输的需要。一个合格的云网络必须支持如下能力:
-
允许应用在任意(拥有空闲计算资源的)服务器上灵活部署而不受物理网络的限制,从而提升业务的敏捷性。支持包括站点灾难恢复、业务迁移在内的场景。
-
跨集群甚至跨多个计算中心的可迁移性。
-
按需进行虚拟网络部署,而无须重新配置物理网络;支持多租户环境下的大规模网络部署。
可见,云网络和传统经典网络存在较大的区别,我们首先来看看传统经典网络的典型架构,如图1所示:

图1
从图上可以看到,构成网络的最基本元素是主机上的网卡、局域网中的交换机以及连接不同局域网的路由器,另外就是传输介质(网线)。
传统物理网络的组网工作包含了工程勘探、选址、布线施工等等操作,但是,对于云计算来说,这明显和“按需申请、随需调配”的原则相违背。在云计算中,往往需要根据租户的需要随时创建针对租户可见的私有局域网,一切都通过云计算管理控制台上点击几下鼠标,输入一些必要参数即能秒级开通。因此,在云计算中,必须将最底层的物理网络硬件再包装一层,封装成虚拟的逻辑组件,从而淡化硬件的特性。只有这样,才能在软件层面实现对网络资源的随意编排。云计算之所以能做到这一点,依赖的两大“杀器”是SDN和NFV,它们也是一切云计算网络的基础,下面,我们首先介绍这两种技术。
2、SDN
SDN是英文“Software Defined Network”的简写,翻译成中文就是“软件定义网络”,实际上,SDN并不是一个具体的技术与协议,而是一个思想、一个框架,只要网络硬件可以通过软件被集中式的管理、可编程,并实现控制与转发分离,就可以认为这是一个SDN网络。为了实现这一点,一个SDN网络必须具备如下几项能力:
● 集中控制:逻辑上的集中控制能够支持获得网络资源的全局信息。
● 开放接口:南向接口和网络硬件打交道、北向接口则是和管理控制台打交道。
● 网络虚拟化:即NFV,这点非常重要,通过南向接口的统一和开放,屏蔽底层硬件差异,实现底层网络对上层应用的透明化。
SDN的主要落地形式是OpenFlow协议,可以说,OpenFlow发展史就是SDN的发展史,对整个SDN的发展起着重大的推动作用。OpenFlow协议一直由开放网络基金会(ONF)管理,它的核心思路是在网络设备中维护一个流表,并且只通过流表对传输报文进行处理,流表本身的生成、维护和下发完全由外置的控制器实现,从而实现报文转发和路由控制的分离。外置控制器通过事先规定好的接口操作OpenFlow交换机中的流表,从而达到数据转发的目的。
为了促进SDN的标准化发展,一些行业组织也推出了相应的SDN指导架构。图2就是由设备商和软件商主导创建的SDN组织ODL所推出的SDN指导架构。

图2
图2中的各架构分层说明如下(自底向上):
-
基础设施层:由各种网络设备构成,主要承担数据转发功能。
-
南向接口:SDN控制器对网络基础设施层的控制主要通过OpenFlow、NetConf等南向接口实现,包括链路发现、拓扑管理、策略制定、表项下发等。
-
控制层:是网络转发的控制管理平面,是整个网络的大脑。
-
北向接口:是通过控制器向上层应用开放的接口,其目标是使得应用能够便利地调用底层的网络资源和能力,很多采用REST风格协议。
-
应用层:指商业应用。开发者可以通过SDN控制器提供的北向接口实现应用和网络的联动,例如网络拓扑的可视化、监控等。
3、NFV
上面介绍的SDN提供南向接口对数据平面进行控制,而NFV则主要应用于数据平台,对应图2中数据平面的各网络设备。NFV重点要实现网卡虚拟化、交换机/路由器虚拟化。接下来,我们针对这两点分别进行介绍:
3.1、网卡虚拟化
现代网卡基本上都支持虚拟化功能,也就是说,可以将一个物理网卡的功能(PF)虚拟化为多个虚拟网卡的功能(VF),每个物理功能(PF)最多可支持64000个与其关联的虚拟功能(VF)。而实现PF到VF的虚拟这个过程中,很重要的一项技术就是Intel推出的SR-IOV技术,SR-IOV是虚拟化的一个重要功能,它最初就是应用在网卡上,后来扩展到其它PCI设备。简单来说,就是一个物理网卡可以通过SR-IOV虚拟出来多个轻量化的PCI-e物理设备,从而分配给多个虚拟机使用,具体如图3所示。由于SR-IOV是在网卡上实现的,可以有效降低宿主机的CPU负荷,提高网络性能,降低网络时延等。

图3
那么,有了VF之后,虚拟机是如何通过VF进行通信?这就要依赖相应的虚拟网卡驱动了,在Linux中,虚拟网卡驱动主要由Linux内核实现的一对虚拟网络设备(基于文件)TAP/TUN来实现。当一个TAP设备被创建时,Linux设备文件目录下将会生成一个与之对应的TAP字符设备文件。当对TAP设备文件执行write()操作时,相当于网卡收到数据;read()操作则是发送数据,也就是说,TAP设备可以被当成本机的一个网卡(实际上是网卡的映射),操作TAP设备的应用程序相当于另外一台计算机,它通过read/write系统调用,和本机进行网络通信。TAP/TUN的数据传输过程如图4所示。

图4
3.2、交换机虚拟化
有了虚拟网卡还不够,还需要有对应的虚拟交换机能将虚拟网卡连接起来,才能构建最终的虚拟网络,下面,我们就来看看实现虚拟交换机的两种重要实现,一个是Linux的Bridge,另外一个,则是大名鼎鼎的Open vSwitch。
-
Linux B

本文介绍云计算网络的基础概念,包括SDN、NFV等关键技术,并详细探讨了OpenStack Neutron组件如何构建云网络,以及虚拟机如何通过Neutron与外部网络通信。

2803

被折叠的 条评论
为什么被折叠?



