SDN与网络虚拟化

网络虚拟化是一种重要的网络技术,该技术可在物理网络上虚拟多个相互隔离的虚拟网络,从而使得不同用户之间使用独立的网络资源切片,从而提高网络资源利用率,实现弹性的网络。SDN的出现使得网络虚拟化的实现更加灵活和高效,同时网络虚拟化也成为SDN应用中的重量级应用。本文将介绍SDN与网络虚拟化的关系以及通过SDN实现网络虚拟化的方法,其中第二部分内容将从虚拟化平台,网络资源虚拟化和网络隔离三个方面介绍。

SDN与网络虚拟化

由于早期成功的的SDN方案中网络虚拟化案例较多,有的读者可能会认为SDN和网络虚拟化是同一个层面的,然而这是一个错误的说法。SDN不是网络虚拟化,网络虚拟化也不是SDN。SDN是一种集中控制的网络架构,可将网络划分为数据层面和控制层面。而网络虚拟化是一种网络技术,可以在物理拓扑上创建虚拟网络。传统的网络虚拟化部署需要手动逐跳部署,其效率低下,人力成本很高。而在数据中心等场景中,为实现快速部署和动态调整,必须使用自动化的业务部署。SDN的出现给网络虚拟化业务部署提供了新的解决方案。通过集中控制的方式,网络管理员可以通过控制器的API来编写程序,从而实现自动化的业务部署,大大缩短业务部署周期,同时也实现随需动态调整。

随着IaaS的发展,数据中心网络对网络虚拟化技术的需求将会越来越强烈。SDN出现不久后,SDN初创公司Nicira就开发了网络虚拟化产品NVP(Network Virtualization Platform)。Nicira被VMware收购之后,VMware结合NVP和自己的产品vCloud Networking and Security (vCNS),推出了VMware的网络虚拟化和安全产品NSX。NSX可以为数据中心提供软件定义化的网络虚拟化服务。由于网络虚拟化是SDN早期少数几个可以落地的应用,所以大众很容易将网络虚拟化和SDN弄混淆。正如前面所说,网络虚拟化只是一种网络技术,而基于SDN的网络架构可以更容易地实现网络虚拟化。

SDN实现网络虚拟化

通过SDN实现网络虚拟化需要完成物理网络管理,网络资源虚拟化和网络隔离三部分工作。而这三部分内容往往通过专门的中间层软件完成,我们称之为网络虚拟化平台。虚拟化平台需要完成物理网络的管理和抽象虚拟化,并分别提供给不同的租户。此外,虚拟化平台还应该实现不同租户之间的相互隔离,保证不同租户互不影响。虚拟化平台的存在使得租户无法感知到网络虚拟化的存在,也即虚拟化平台可实现用户透明的网络虚拟化。

虚拟化平台

虚拟化平台是介于数据网络拓扑和租户控制器之间的中间层。面向数据平面,虚拟化平面就是控制器,而面向租户控制器,虚拟化平台就是数据平面。所以虚拟化平台本质上具有数据平面和控制层面两种属性。在虚拟化的核心层,虚拟化平台需要完成物理网络资源到虚拟资源的虚拟化映射过程。面向租户控制器,虚拟化平台充当数据平面角色,将模拟出来的虚拟网络呈现给租户控制器。从租户控制器上往下看,只能看到属于自己的虚拟网络,而并不了解真实的物理网络。而在数据层面的角度看,虚拟化平台就是控制器,而交换机并不知道虚拟平面的存在。所以虚拟化平台的存在实现了面向租户和面向底层网络的透明虚拟化,其管理全部的物理网络拓扑,并向租户提供隔离的虚拟网络。

图 2 .网络虚拟化平台示意图

虚拟化平台不仅可以实现物理拓扑到虚拟拓扑“一对一”的映射,也应该能实现物理拓扑“多对一”的映射。而由于租户网络无法独占物理平面的交换机,所以本质上虚拟网络实现了“一虚多”和“多虚一”的虚拟化。此处的“一虚多”是指单个物理交换机可以虚拟映射成多个虚拟租户网中的逻辑交换机,从而被不同的租户共享;“多虚一”是指多个物理交换机和链路资源被虚拟成一个大型的逻辑交换机。即租户眼中的一个交换机可能在物理上由多个物理交换机连接而成。

图3 .单虚拟节点映射到多物理节点

网络资源虚拟化

为实现网络虚拟化,虚拟化平台需要对物理网络资源进行抽象虚拟化,其中包括拓扑虚拟化,节点资源虚拟化和链路资源虚拟化[1]。

  • 拓扑虚拟化

拓扑虚拟化是网络虚拟化平台最基本的功能。虚拟平台需要完成租户虚网中的虚拟节点和虚拟链路到物理节点和链路的映射。其中包括“一对一”和“一对多”的映射。“一对一”的映射中,一个虚拟节点将会映射成一个物理节点,同理虚拟链路也是。而在“一对多”的映射中,一个虚拟节点可以映射成由多个连接在一起的物理节点;一条逻辑链路也可能映射成由链接在一起的多条链路。而对于物理节点而言,一个物理节点可以被多个逻辑节点映射。

  • 节点资源虚拟化

节点资源的虚拟化包括对节点Flow tables(流表)、CPU等资源的抽象虚拟化。流表资源本身是交换机节点的稀缺资源,如果能对其进行虚拟化,然后由虚拟化平台对其进行分配,分配给不同的租户,那么就可以实现不同租户对节点资源使用的分配和限制。拓扑抽象仅仅完成了虚拟节点到物理节点的映射,而没有规定不同用户/租户对物理节点资源使用的分配情况。若希望进行更细粒度的网络虚拟化,节点资源虚拟化非常有必要。

  • 链路资源虚拟化
  • 和节点资源一样,链路资源也是网络中重要的资源,而拓扑抽象并没有规定某些用户可使用的链路资源的多少。所以在进行更细粒度的虚拟化时,有必要对链路资源进行虚拟化,从而实现链路资源的合理分配。可被抽象虚拟化的链路资源包括租户可使用的带宽以及端口的队列资源等等。

网络隔离

网络资源虚拟化仅仅完成了物理资源到虚拟资源的抽象过程,为实现完全的网络虚拟化,还需要对不同的租户提供隔离的网络资源。网络隔离需要对SDN的控制平面和数据平面进行隔离,从而保证不同租户控制器之间互补干扰,不同虚网之间彼此隔离。此外,为了满足用户对地址空间自定义的需求,虚拟化平台还需要对网络地址进行虚拟化。

  • 控制面隔离 控制器的性能对SDN整体的性能产生极大的影响,所以虚拟化平台需保证租户的控制器在运行时不受其他租户控制器的影响,保证租户对虚拟化平台资源的使用。虚拟化平台在连接租户控制器时需保证该进程可以得到一定的资源保障,比如CPU资源。而虚拟化平台本身所处的位置就可以轻易实现租户的控制器之间的相互隔离。
  • 数据面隔离 数据面的资源包括节点的CPU、Flow Tables等资源以及链路的带宽,端口的队列资源等。为保证各个租户的正常使用,需对数据面的资源进行相应的隔离,从而保证租户的资源不被其他租户所占据。若在数据面上不进行资源的隔离,则会产生租户数据在数据面上的竞争,从而无法保障租户对网络资源的需求,所以很有必要在数据面对资源进行隔离。
  • 地址隔离 为使租户能在自己的虚拟租户网中任意使用地址,虚拟化平台需要完成地址的隔离。实现地址隔离主要通过地址映射来完成。租户可任意定制地址空间,而这些地址对于虚拟化平台而言是面向租户的虚拟地址。虚拟化平台在转发租户控制器南向协议报文时,需要将虚拟地址转化成全网唯一的物理地址。租户的服务器的地址在发送到接入交换机时就会被修改成物理地址,然后数据包的转发会基于修改之后的物理地址进行转发。当数据到达租户目的地址主机出端口,控制器需将地址转换成原来租户设定的地址,从而完成地址的虚拟化映射。地址的虚拟化映射使得租户可以使用完全的地址空间,可以使用任意的FlowSpace(流空间:流表匹配项所组成的多维空间),而面向物理层面则实现了地址的隔离,使得不同的租户使用特定的物理地址,数据之间互不干扰。

总结

本文介绍了SDN与网络虚拟化的关系以及如何通过SDN实现网络虚拟化。第二部分内容通过介绍网络虚拟化平台,网络资源虚拟化,网络隔离等三个方面来介绍如何通过SDN实现网络虚拟化。随着SDN和网络虚拟化的发展,更多基于SDN的网络虚拟化案例将会诞生,从而为用户提供更灵活的网络服务。后续将有文章介绍基于SDN的网络虚拟化技术的产品和应用案例,敬请期待。

References

[1] Blenk A, Basta A, Reisslein M, et al. Survey on Network Virtualization Hypervisors for Software Defined Networking[J]. 2015.

原文发布于微信公众号 - SDNLAB(SDNLAB)

原文发表时间:2015-12-29

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏SDNLAB

什么是云编排?

8275
来自专栏技术翻译

Kubernetes vs. Mesos:选择容器编排工具

容器编排在今天风靡一时并不是什么大秘密。作为许多文章和会议的主题,它有时似乎是唯一值得讨论的话题。

2511
来自专栏技术翻译

针对各级开发人员的顶级Kubernetes教程和资源

如果您是使用容器的开发人员,您和您的团队可能已经听说过Kubernetes。Kubernetes的核心是网络容器操作系统,但已经发展得更多。当然,Kuberne...

1773
来自专栏IT大咖说

云计算的下一个时代——“容器时代”

摘要 随着容器技术的发展,容器成为了目前最受欢迎和关注的项目。京东在容器的实践过程中,结合虚拟机,对容器技术做了优化和改进,他们是怎么做的? ? 容器趋势分析 ...

4509
来自专栏技术翻译

容器将成为新的Linux

Linux是过去二十年来彻底改变数据中心的操作系统,如今它已成为应用托管平台无可争议的领导者。很难想象将任何关键任务生产工作负载部署到Linux以外的任何其他平...

1332
来自专栏SDNLAB

进击的Docker网络

Docker容器近来几乎在IT行业的所有领域频频出现,网络领域也不例外。在2016 DockerCon大会上,Docker公司以及其合作伙伴正在采取措施,让Do...

3215
来自专栏开源项目

Docker容器的自动化监控实现

本文介绍了一种针对 Docker 容器的自动化监控实现方法,旨在给 Docker 运维体系的建立提供相关的解决方案。 ? 1 前言 2016年对于网易杭州研究院...

4136
来自专栏SDNLAB

Docker推出SDN容器插件

Docker收购网络初创公司SocketPlane 3个月后就推出了一款软件定义网络插件,在开源容器工具组中添加了容器级别的网络虚拟化功能。该容器的非正式名称是...

3705
来自专栏CSDN技术头条

ContainerX 推进Docker企业级应用

在过去的一年里, 容器推动软件领域发生了翻天覆地的变化。随着Docker逐渐普及,作为运行和加速云应用的操作系统(OS)虚拟化技术,容器已经催生了一个包含开源容...

2137
来自专栏SDNLAB

容器控制的关键

随着企业追寻容器架构带来的优势,来自谷歌、Docker、CoreOS、Mesosphere和Joyent之类的容器生态系统通过采用者和贡献者的工作继续发展壮大。...

2855

扫码关注云+社区