摘要: 近几年,SDN和NFV是网络界的热点,那么阿里云是如何做SDN和NFV的呢?阿里云VPC又是如何实现的呢?和SDN和NFV是什么关系呢?本文将介绍相关内容。
注:本文部分内容来自网络搜索的整合
大家都知道,目前各大云服务商都提供了VPC(Virtual Private Cloud)产品,VPC已经成为用户使用云首先需要考虑的云产品,甚至是比ECS更早需要考虑的云产品,可以说是基础中的基础。首先,我们还是来简单介绍下什么是VPC?VPC又有什么好处?再来讨论我们今天的主题,即阿里云VPC和SDN及NFV的关系。
可以从下面三点来理解VPC。
首先,VPC可以认为是一个网络容器。用户可以免费开通这个容器,开通后再在这个容器中“放置”用户需要的云产品,比如ECS,SLB,RDS等。VPC的基本组件包含路由器和交换机,如下图所示,即是华北1地域的一个VPC。
最后,VPC是用户在云上具备网络管理能力的基础。在经典网络中,用户在云上其实是非常缺乏网络管理能力的,用户有一台经典网络的ECS,用户也只有了和公网通信的能力,最多加上安全组可以做一些安全控制的能力,但如网段规划、子网划分、路由管理、使用NAT管理公网出入等网络管理能力都几乎没有或很弱,而VPC则让用户具备了很多的网络管理能力。
SDN是Software Defined Network的缩写, 翻译成中文就是软件定义网络 。SDN不是一种具体的技术或协议,而是一种新的网络设计理念。SDN的核心思想是控制和转发分离。SDN产生的原因是由于传统网络难以维护,人肉操作太多,变更困难效率低,尤其是在云计算的环境下,虚拟化带来的高密度、业务的高速增长、对快速响应能力的高要求,以及用户对网络安全隔离和灵活管理的需求,使传统网络的慢和业务发展的快之间的矛盾越来越大,因此,有了SDN,也有了NFV。SDN网络和传统网络的对比可以参考下图
NFV是Network Function Virtualization的英文缩写,翻译成中文就是网络功能虚拟化。我们知道,传统的网络设备基本都是使用专用的硬件设备实现的,比如我们熟悉的防火墙,F5这样的硬件设备,又如路由器和交换机。而NFV则是希望使用普通的x86服务器来代替专用的网络设备,使网络功能不再依赖专用设备,而是通过x86服务器和软件来实现。NFV除了可以节约成本外,还通过开放API的方式,使得网络功能更灵活,更有弹性。
我们在做SDN,也在做NFV,我们在用SDN的思想实现NFV。从SDN的思想来说,我们有自研的Controller(控制器)和XGW(转发设备)。从NFV来说,我们的Controller(控制器)和XGW(转发设备)都是基于x86服务器和自己研发的软件实现的,在这基础上,实现了VPC、路由器、交换机、NAT网关等等网络功能。因此,VPC可以认为是NFV的一个网络功能或网络产品。
那么VPC又有哪些具体实现方式呢?要谈这个问题,首先需要简单了解一下Overlay网络虚拟化技术。Overlay是在现有的网络架构上叠加的虚拟化技术,本质是L2 Over IP的隧道技术。可以在对现有基础网络不进行大规模修改的条件下实现,并且和其它网络隔离。简单说就是在现有的物理网络基础上进行了一次虚拟化,称之为Overlay。Overlay可以让系统和服务(如云计算中的ECS,SLB等云产品)运行中虚拟化层,“不再依赖”物理网络,达到与物理网络解耦的目的。当然,这个“不再依赖”是从业务逻辑上说的,而不是真正底层不再依赖。
如下图的Overlay网络示意图,虚拟网络运行在物理网络上,虚拟网络上承载了ECS,RDS,SLB等云产品,也有虚拟交换机,虚拟路由器这样的虚拟化网络设备,在虚拟网络层面,ECS和SLB,RDS等云产品的通信从业务逻辑上理解,可以认为是直接在虚拟网络层面完成的,而“不需要”通过物理网络。
那么,Overlay又有哪些实现技术呢?早期有一些标准二层Overlay技术,如
RFC3378(Ethernet ip IP)
H3C的EVI(Ethernet Virtual Interconnection)
Cisco的OTV(Overlay Transport Virtualization)
现在云服务商用的比较多的是基于主机(x86服务器)的Overlay技术,在服务器的Hypervisor内vSwitch上支持基于IP的二层Overlay技术。主机的vSwitch支持基于IP的Overlay之后,虚拟机的二层访问直接构建在Overlay上,物理网络不再感知虚拟机的诸多特性,从而实现了和虚拟网络的解耦。
再进一步细分Overlay的技术路线,主要可分为如下三大技术路线
VXLAN
NVGRE
STT
VXLAN是将以太网报文封装在UDP传输层上的一种隧道转发模式,VXLAN通过将原始以太网数据头(MAC、IP、四层端口号等)的HASH值作为UDP的号。采用24比特标识二层网络分段,称为VNI(VXLAN Network Identifier),类似于VLAN ID作用。
NVGRE
NVGRE是将以太网报文封装在GRE内的一种隧道转发模式。采用24比特标识二层网络分段,称为VSI,类似于VLAN ID作用。NVGRE在GRE扩展字段flow ID,这就要求物理网络能够识别到GRE隧道的扩展信息,并以flow ID进行流量分担。
STT
STT利用了TCP的数据封装形式,但改造了TCP的传输机制,数据传输不遵循TCP状态机,而是全新定义的无状态机制,将TCP各字段意义重新定义,无需三次握手建立TCP连接,因此称为无状态TCP。
这三种技术大体思路都是将以太网报文承载到某种隧道层面,差异性在于选择和构造隧道的不同,而底层均是IP转发。总体而言,VXLAN利用了现有通用的UDP传输,成熟度高。具有更明显的优势,L2-L4层链路HASH能力强,不需要对现有网络改造,对传输层无修改,使用标准的UDP传输流量,业界支持度最好,目前商用网络芯片大部分支持。这也是阿里云VPC采用的技术路线。