本篇主要对网络虚拟化概念以及云计算时代下的网络演变及相关的一些网络技术的介绍,不涉及太多的技术细节。最后结合谈谈自己的一些看法。

一、网络虚拟化

网络虚拟化就是将物理网络虚拟出多个相互隔离的虚拟网络,从而使得不同用户之间使用独立的网络资源,从而提高网络资源利用率,实现弹性的网络。

网络虚拟化比较常见的网络虚拟化应用包括虚拟局域网,即VLAN、虚拟专用网(如阿里云的VPC,一种网络隔离环境实现的形式)、VPN,以及虚拟网络设备(如Open vSwitch,一个开源的虚拟交换机)等。

我们经常听到的VLAN其实就是传统的网络虚拟化的一种实现。把同一物理局域网内的不同用户,从逻辑上划分为不同的广播域,即实现了VLAN。每一个VLAN相当于一个独立的局域网络。同一个VLAN中的计算机用户可以互连互通,而不同VLAN之间的计算机用户不能直接互连互通。只有通过配置路由等技术手段才能实现不同VLAN之间的计算机的互连互通。

早期业界一直致力于计算虚拟化和存储虚拟化,使得网络虚拟化的发展较慢。随着云计算的市场规模增长,多租户安全隔离、多地域之间访问等情况的出现是不可避免。比如对VM虚拟机网络的QoS(服务质量)、安全隔离及策略控制等要求在不断提高,原有的网络虚拟化技术无法满足需求。以大二层网络、SDN和VXLAN等为代表的新一代网络技术成为业界的热点。

随着网络虚拟化技术的升级,它能够满足动态业务需求,提供智能的弹性伸缩的能力,可以自动化联动网络配置管理与上层虚拟机及业务应用的部署和发放过程,构建数据中心和跨数据中心的大二层组网,简化应用部署和弹性资源调度。网络虚拟化在利用传统数据中心网络交换设备的基础上,实现了传统数据中心网络架构向以“网络功能服务化”、“网络设备管道化”以及“网络控制软件化”为关键特征的软件定义网络(SDN)目标架构的演进与转换,从而完美地应对并解决了云虚拟化环境下的大规模、多租户、弹性的虚拟网络发放的挑战。以分布式云数据中心网络架构举例,(这并不是唯一的架构形式,其中涉及的技术手段也不代表唯一)

云计算和docker 云计算和网络虚拟化_IP

以上的分布式数据中心的网络虚拟化应具有如下特征:

1)x86平台之上的叠加模式的分布式虚拟交换,实现了基于二层交换的QoS、安全策略控制完全独立于外部交换机和路由器等物理设备。

2)基于VXLAN的大二层网络扩展及与传统网络互通的VXLAN网关,实现VM跨集群、DC迁移的网络配置、QoS和安全属性都保持不变,不依赖于硬件交换机。

3)SDN控制器的多节点无级扩展,支持数据中心网络动态伸缩,简化了跨数据中心的统一二层网络拓扑管理与协同规划,提高网络规划及管理的效率。

二、云网络

网络虚拟化只是一种技术的统称,在云上,最终以什么形式存在的?我比较同意一种说法,它最终像云存储、云主机服务那样,以服务的形式存在。它面向应用和租户的虚拟化网络基础设施,具备云的特征,即按需、弹性、随处可获得、可计量。这里我们就叫它“云网络”。

云计算和docker 云计算和网络虚拟化_IP_02

云网络的技术和概念也不是一蹴而就的,它也是伴随着互联网和云计算的发展逐步演进,最终慢慢形成、成熟并被大家所熟悉和认可的。下面就以阿里云作为例子。

云计算和docker 云计算和网络虚拟化_云计算和docker_03

 (图片来源于网络)

2010年以来,互联网获得了快速发展,很多互联网企业上云,通过云实现了计算的虚拟化,那时候对云网络的主要需求是公网接入能力。在这个阶段,阿里云通过Classic经典网络对云计算用户提供支持。用户通过ECS上的公网IP和负载均衡产品来提供公网访问服务,这是云网络早期的产品。

经典网络的特点:IP地址由阿里云统一分配,配置简便,使用方便,适合对操作易用性要求比较高、需要快速使用 ECS 的用户。

到2014年,随着4G网络带来移动互联网发展,尤其是媒体、社交应用的发展,这些ToC业务需要解决同时接入多运营商问题。此外,随着更多的企业选择将应用搬迁上云,企业对云上网络安全隔离能力和互访能力、企业数据中心与云上网络互联,构建混合云的能力,以及在云上多地域部署业务后的多地域网络互联能力都提出了很多的需求,而这些需求在Classic经典网络架构下都力不从心,于是,阿里云开启了云网络1.0,面向租户的云网络的创新之旅。

2014年,阿里云VPC(专有网络)产品上线, 实现了企业数据中心网络虚拟化,VPC中支持虚拟交换机,虚拟路由器;租户可独享SLB(弹性负载均衡)服务,可通过NAT/EIP(弹性IP)主动访问公网;通过VPN,高速通道建立企业到云上的网络互联。

专有网络的特点:逻辑隔离的私有网络,可以自定义网络拓扑和 IP 地址,支持通过专线连接。适合于熟悉网络管理的用户

云计算和docker 云计算和网络虚拟化_IP_04

(图片来源于网络)

随着大数据与AI应用风起云涌,互联网线上/线下融合蔚然成风,企业出海方兴未艾。为了更好满足企业智能化,全球化的需求,阿里云开启云网络2.0产品与技术架构升级;2017年推出云上跨地域网络互联产品云企业网CEN。云网络开始走出数据中心网络,把云上数据中心之间,云上数据中心和云下IDC之间联通起来,这标志着云网络技术应用到整个阿里云的核心网络之中。2018年,阿里云进一步把用户上云的混合云网络也采用了云网络技术进行了改造,推出了智能接入网关SAG。云网络与容器网络进行融合,构建云原生应用层网络;云网络团队用十年的时间将云网络的技术和产品体系切实落地,云网络的概念慢慢形成。

云计算和docker 云计算和网络虚拟化_云计算_05

 (图片来源于网络)

三、关键概念

上文提到的几个我认为比较关键的概念,这里再简单的介绍一下。

(一)SDN

软件定义网络 (SDN) 是一种架构,它抽象了网络的不同、可区分的层,使网络变得敏捷和灵活,SDN 的目标是通过使企业和服务提供商能够快速响应不断变化的业务需求来改进网络控制。

在软件定义的网络中,网络工程师或管理员可以从中央控制台调整流量,而无需接触网络中的各个交换机,无论服务器和设备之间的特定连接如何,集中式SDN 控制器都会指导交换机在任何需要的地方提供网络服务。此过程与传统网络架构不同,在传统网络架构中,单个网络设备根据其配置的路由表做出流量决策。

简单来说,就是网络工程师不需要登到一台又一台交换机上配置策略了,直接在一个管理平台统一配置。

  

(二)OpenFlow

OpenFlow只是SDN的一种实现形式,一种网络通信协议,属于数据链路层,能够控制网上交换器或路由器的转发平面(forwarding plane),借此改变网络数据包所走的网络路径。

云计算和docker 云计算和网络虚拟化_网络_06

(图片来源于网络)

 (三) VPC

专有网络VPC(Virtual Private Cloud)是为私人使用而构建的隔离云网络。为云服务器、云容器、云数据库等云上资源构建隔离、私密的虚拟网络环境。

VPC丰富的功能帮助我们灵活管理云上网络,包括创建子网、设置安全组和网络ACL、管理路由表、申请弹性公网IP和带宽等。此外,还可以通过云专线、VPN等服务将VPC与传统的数据中心互联互通,灵活整合资源,构建混合云网络。比如,A用户又自己的VPC,可以在自己的vpc里使用192.168.1.0/24的段,然后在里面创建自己的N台虚拟机。而B用户也完全可以在自己的VPC使用 192.168.1.0/24的段创建自己的虚拟机。A和B的VPC的网络相互隔离的,如果需要互通可以借助网关VPN、NAT等技术去连通。

  

云计算和docker 云计算和网络虚拟化_IP_07

 (图片来源于网络)

 (四)VXLAN

VXLAN是一种网络虚拟化技术,一种隧道技术。可以改进大型云计算在部署时的扩展问题,是对VLAN的一种扩展能在三层网络的基础上建立二层以太网网络隧道,从而实现跨地域的二层互连。

VXLAN采取了将原始以太网报文封装在UDP数据包里的封装格式。将原来的二层数据帧加上VXLAN头部一起封装在一个UDP数据包里。

VXLAN头部包含有一个VXLAN标识(即VNI,VXLAN Network Identifier),只有在同一个VXLAN上的虚拟机之间才能相互通信。VNI在数据包之中占24比特,

故可支持1600万个VXLAN的同时存在,远多于VLAN的4094个,因此可适应大规模租户的部署。

云计算和docker 云计算和网络虚拟化_数据中心_08

(图片来源于网络)

在kubernetes容器网络中,如果容器部署在不同的主机上,且这些主机可能不在一个vlan下以及外部无法直接访问容器网络,如果容器要想通过容器内部IP访问另一台主机下的容器IP,就可以利用vxlan的隧道机制去访问。

云计算和docker 云计算和网络虚拟化_网络_09

(图片来源于网络)

四、关于企业私有云技术网络相关的思考

(一)企业网络如果规模不大,虚拟机数量不超过1万台,是否可以用传统的物理架构?

答:目前,仍然可以使用传统物理网络的架构。主要原因如下:

1) 规模不够。如过现在虚拟机加起来未超过1万台,未来主机规模翻十倍,也就需要大约10万个内部网络IP地址;如果每个vlan分250个IP地址。那么4096个vlan能容纳大约102万个IP地址,绰绰有余。对于广播风暴的减弱只需要对网络区域VLAN做进一步的划分,结合生成树协议及

自动化,在物理交换机上配置相应的策略即可。私有IP地址足够企业内部划分:

①10.0.0.0~10.255.255.255。1个A类网络地址,共约1677万个IP地址。

②172.16.0.0~172.31.255.255。16个B类网络地址,共约104万个IP地址。

③192.168.0.0~191.168.255.255。256个C类网络地址,共约65536个IP地址。

2)一般内部网络安全隔离的划分要求不高。由于虚拟机使用方都是企业内部用户,只要防止黑客入侵,出现内部虚拟机产生恶意攻击网络的行为还是比较少的。

如果有业务部门对网络的带宽有特殊需求,比如大数据,我们也可以单独划分一块网络区域作为大数据网络,使用现有的物理设备就能实现隔离。

比如按照了物联网、办公网、业务网、大数据网等划分网络区域。

云计算和docker 云计算和网络虚拟化_数据中心_10

云计算和docker 云计算和网络虚拟化_云计算和docker_11

(图片来源于网络) 

 

云计算和docker 云计算和网络虚拟化_网络_12

(图片来源于网络) 

(二)目前传统物理网络的风险点在哪?

1)不同业务之间的网络安全隔离。正是由于内部网络安全隔离的划分要求不高,一旦入侵到内部网络,加上各个业务之间的网络大都是可以互通的,影响的业务范围就会变得很大。

2)私有云和公有云混合使用所带来的管理上的复杂性。

3)虚拟机无法快速迁移恢复。一旦某个物理网络故障,比如连接整个192.168.56.0网络链路挂了,由于使用的是传统物理网络,并不能在另外的物理环境快速创造出新的192.168.56.0网络,也就意味着虚拟机无法保持IP不变的情况下重新拉起来。

(三)如果未来要升级网络架构,可以往什么方向靠?

答:SDN。主要原因如下:

1)简化策略规则。使用 SDN,管理员可以在必要时更改任何网络交换机的规则,优先、取消优先级甚至阻止具有细粒度控制和安全级别的特定类型的数据包。

2)网络自动化更简单。如果实现了SDN,我们要实现更多的网络自动化功能会变得更简单和灵活。

3)虚拟机及IP流量的监控及管理。目前我们对于虚拟机及IP的网络流量是不能做到有效、灵活的监控和管理,不利于在虚拟机规模增大的时候,对它们的流量及

故障做进一步的分析和管理。

4)减少后期成本。比如,我们跨数据中心之间的内网访问是走第三方SD-WAN。如果我们的规模扩大,对于SD-WAN的需求激增,那么持续的成本也是一笔

不小的开销。如果实现了自己的SD-WAN,我们的公有带宽线路的使用率将能进一步提高。

总的来说,SDN就是将网络由硬件变为软件管理。提升网络的集中控制能力,增强网络对虚拟化、云计算等新技术的适应性和支持度,最终提升网络对业务的服务、支撑能力。

当然,SDN并没有具体指明太多的技术实现细节,大多数开源的SDN控制器是完全基于OpenFlow协议开发的,这是因为其设计多数源自于Onix(一种分布式控制器框架)。相比之下,大部分商用控制器会将OpenFlow和其他协议进行联合使用,以完成更复杂的功能。

(四)现有的网络架构与我们的容器云网络有什么关系?

答:容器云网络是我们物理网络之上的逻辑网络,它有专门的地址段。物理网络在传输容器流量的时候是感知不到的,因为在物理网络上传输的容器流量在流出宿主机前就被封装过了,直到到达另一端的宿主机,宿主机再通过容器网络组件重新解封,将请求发送到目标容器中。

容器网络自身已经实现了隔离,无需做太多的配置。只要保证容器网络所使用的IP段和经典物理网络地址不存在冲突,理论上就没有什么太大的影响。

跨容器集群之间互相访问需要借助容器集群外部IP去做类似的代理访问,本身k8s已经提供了外部访问集群内部容器的功能。

主要参考资料:

《云计算和大数据时代网络技术揭秘》

《分布式云数据中心的建设与管理》

网络虚拟化