我们在基础篇中对SDN的基础概念、核心思想以及市场现状都进行简单地阐述,在本文中将就技术实现方面深入展开讨论。

在ONF于2016年发布的《SDN Architecture Issue 1.1》白皮书中,给出了最新的SDN架构,如下图所示:

图1. SDN架构

SDN自上而下分为三层:应用层、控制器、转发平面,控制器开放标准的南向接口、北向接口进行应用的开发和设备的接入。由上图可见SDN主要研究重点是控制器组件,控制器的核心功能是将底层的资源进行编排和功能的虚拟化(Orachestration & Vritualization)来满足上层应用的请求。

  • A-CPI:即Application-Controller Plane Interface,控制器通过A-CPI北向接口对网络应用或者更高层次的控制器暴露网络服务和资源;
  • D-CPI:即Data-Controller Plane Interface,控制器通过D-CPI南向接口对数据转发设备提供的服务和资源进行控制、管理和消费;
  • Resource:代表任何可用于交付的网络服务,包括物理网络资源(拓扑,链路和端口)和逻辑资源(标签等),也可以是虚拟化的网络资源(NFV)。
  • Server context: 控制器内部对给定网络设备所有资源的概念抽象组件,负责底层设备的管理和控制,也可以理解为在控制器侧针对特定网络设备所提供的能力和资源的适配器或者驱动。
  • Client context: 控制器侧为维护特定客户端应用的所有信息的概念抽象服务端组件,负责控制器与应用的管理和控制。
  • Virtualization: 将底层的特定的资源进行抽象,并根据选择策略分配到相应的客户端应用或者其他服务。
  • Orchestration:根据变化持续地优化网络服务的供给策略,来满足客户端的需求。

SDN是云计算催生下的新一代网络变革,毋容置疑会成为兵家必争之地。众多包括传统网络设备厂商和新兴创新者在内纷纷推出了多种SDN解决方案,有商业化闭源的如VMware NSX、思科ACI、微软HNV等,开源项目也层出不穷,如OpenDaylight、ONOS、OpenContrail、Ryu、Foodlight、NOX等。下面我们选取其中三个主流的实现方案进行分别介绍:

SDN实现之一:VMware NSX

VMware NSX是纯软件实现的SDN解决方案的典型代表。NSX是由VMware vShield产品与其收购的Nicira NVP产品整合的产物。在2017年VMware NSX-T 1.1正式发布之前分为两个分支,NSX for vSphere (NSX-v)主要以VMware vShield的组件为主,NSX for Multiple-Hypervisor (NSX-MH)即针对KVM/Xen OVS用户,主要以NVP为主,而NSX-T则是二者完全整合同时可以支持vSphere以及其他Hypervisor,如KVM/Xen。

NSX 架构及其组件

图2. VMware SDN架构

NSX的主要目标之一是将应用于底层网络解耦,像管理虚拟机一样管理网络:创建、删除、扩展、缩容。因此在NSX的架构中,物理网络的功能只需要保证L2和L3的互联互通即可,所有网络高级功能和配置都在逻辑网络层实现。

图2. VMware SDN架构图2. VMware SDN架构在数据转发平面由两类组件构成:分布式组件和集中式组件。分布式组件分别安装在每台vSphere ESXi主机的Hypervisor上,仅对本主机上的虚拟机网络报文进行处理,主要应用于数据中心内部东西向(East-West)网络流量,包括L2 Logic Switch、L3 Distributed Logic Router、L2-L4 Distributed Firewall。集中式组件主要应用于网关上,处理数据中心(不同网络)之间南北向(North-South)出入口的网络流量,目前所有组件(NAT, DHCP, VPN, LB, Router)安装在虚拟机Edge Service Gateway中。

控制平面:维护着四张表:路由表、ARP表、MAC表、VTEP表。路由表是用来指明目的IP的下一跳的IP,ARP表是用来查询虚拟机IP地址所对应的MAC地址,MAC地址表记录虚拟机所有的MAC地址与VTEP的映射,VTEP表是记录逻辑交换机的用于封装VXLAN报文的IP地址。在报文到达数据平面时,数据平面代理会向控制平面请求转发/处理所需信息。

管理平面:作为NSX配置的唯一单点入口,并对外提供NSX配置的REST API。

云管平面:云管平台对外向最终用户提供网络资源的消费。

主要应用场景:

  1. 网络配置的复杂性难以满足云计算中的对网络灵活性的要求。在多租户的环境中,成百上千万级用户在每时每刻都在需要进行网络的创建、删除、修改的请求,而通过传统的工单形式显然无法满足敏捷性需求。然而传统的网络配置很大程度上依赖于人工操作,没有统一标准的API支持,所以网络自动化难度较大。而NSX一切网络相关的配置都在逻辑网络的软件层通过API自动化完成,无需网络管理员干预,也极大地简化网络运维的复杂度。
  2. 大规模云服务租户之间隔离网络规格的限制。在云计算环境中,基于安全性考虑,租户之间通常要求在二层网络进行访问隔离,而传统网络IEEE 802.1Q的协议中仅支持4095个VLAN,显然在大规模的云环境中是无法满足需求的,因此需要大二层Overlay技术(VXLAN)来突破该限制。而NSX采用的VXLAN技术将普通的虚拟机网络报文封装在一个四层的UDP报文中,提供多达16M个子网。
  3. 数据中心(不同网络)之间负载的迁移。由于不同的数据中心(不同网络)所在IP地址段通常不同,因此在跨数据中心或者网络之间进行网络迁移时,必须在迁移后进行网络的重新配置,这破坏了迁移带来的业务连续性。而通过大二层技术只要保证网络的四层UDP可达,上层的虚拟机不会感知下层的网络变化,无需进行任何修改。
  4. 应对大规模、高密度虚拟化环境中的MAC地址爆炸问题。由于VXLAN技术在每台主机上只需要配置一个VTEP来提供虚拟机报文封装服务,因此大大降低了物理网络需要维护的MAC地址列表,极大地提升了网络转发效率。

优势:

  1. 基于VMware生态具有完整的商业化SDN解决方案,因此对于VMware产品具有天然的兼容性,并且已经经过大规模的商业化部署的验证。
  2. 随着Nicira的团队的收购加入以及雄厚的资金投入,SDN技术势力整体得到全面提升,在纯软件的SDN方案于世界领先水平。
  3. 软件栈从上到下都自主可控,因此易于进行全方位的优化,从而有助于持续地提升,如分布式防火墙性能目前几乎达到线速。

讨论:

  1. VMware NSX没有按照严格意义的SDN架构实现,控制器的南向接口和北向接口都采用的是私有协议,并且不开放编程接口,而是通过管理平面提供RESTful的编程接口。
  2. VMware NSX整体解决方案中只有部分功能实现了控制平面和转发平面分离:L2逻辑交换、L3逻辑路由、防火墙、负载均衡、NAT等由管理平面直接下发指令。

SDN实现之二:ODL控制器

ODL(Open DayLight)是2013年由设备厂商和软件厂商为主导成立的一个开源SDN组织。设备厂商与其坐以待毙接受这场无可逆转的革命,还不如利用自己在业内的领导力和雄厚的技术实力参与其中,共同发掘新的金矿,争得新时代网络革命的一席之地。于是众多的设备商纷纷贡献出自己的技术,联手研发灵活统一控制平台,并在此基础上提供高质量的商业应用。

参与厂商包括:BROCADE、CISCO、ERICSSON、中兴、Arista Networks、阿里云、AT&T、AVAYA、FUJITSU、JUIPER、华为、新华三等。

图3. ODL架构

ODL是一套基于JAVA开发的模块化、可插拔的灵活的SDN控制平台。同样基于SDN架构分为三层:网络应用和业务流程层、控制器平台层以及物理/虚拟网络设备层。

控制器分别通过北向和南向接口与其他二者连接。ODL南向接口使用netty来管理底层并发IO以及异步通信框架来支持多种协议与设备通信,如OpenFlow、OVSDB、NETCONF、BGP、SNMP等。

模型驱动的SAL(服务抽象层)是控制器模块化的核心,以插件的形式支持不同的底层设备,屏蔽了协议间差异,为控制器提供一致的服务:如数据包服务,流编程服务,清单服务,能力抽象服务等。

控制器平台还提供一系列的功能模块,包括拓扑管理、状态管理、交换机管理、主机追踪、最短路径转发等基本网络服务功能,以及OpenStack、floodinglight(VTN)、多租户网络虚拟化(DOVE)等扩展服务。

ODL定义了两种标准的北向接口:OSGI和REST。其中OSGI适用于模块化、面向组件、面向服务的较底层的应用开发,与控制器在同一运行地址空间,而REST是以资源的角度观察整个网络,通常用于控制器的监控和管理应用的开发。

优势:

  1. 丰富的南向接口支持多种协议,设备兼容性强。
  2. 服务抽象层的模型具备厂商自定义属性能力,这就意味着一个特定网络设备功能很容易与ODL集成。

不足:

  1. 文档不够完善。
  2. 版本演进过程没有清晰地说明和很好地控制,比较臃肿,存在不少废弃的代码。

SDN实现之三:ONOS

随着移动设备的不断普及以及基于云计算的OTT服务和内容分发业务爆发式增长,运营商迫切需要一次网络的变革,来提高运营的敏捷性应对指数级的带宽增长要求,ONOS便应运而生。ONOS是开放网络操作系统(Open Network Operating System)的缩写,是有全球各大运营商主导的首款开源SDN网络操作系统,主要面向服务提供商和企业骨干网。吸引了大批的国内外各知名设备厂商和运营商如AT&T、NTT通信、中国联通、Ericsson、Fujitsu、Intel、NEC等。华为也在2016年发布了基于ONOS的业界首款全景SDN同一控制器Agile Controller 3.0,面向广域网、数据中心网、企业园区以及IOT等场景。

图4. ONOS架构

从上图可以看出,ONOS除遵循标准SDN架构的,包含应用层、北向接口、核心层、南向接口以及适配层、设备层之外,有如下两个主要特点:

  • ONOS提供两个强大的北向抽象层,意图框架和全局网络视图。意图框架像真正操作系统那样将应用与网络服务具体实现细节进行抽象和隔离,提高了网络应用的开发速度。全局网络视图为应用提供了整体的网络视图,包括主机、网络设备相关的状态参数,计算最短路径,负载均衡,引流等。
  • ONOS最大的特点是采用的分布式核心以多层次的架构组织。当ONOS以集群式部署在服务器上时,每台服务器上对称地运行相同的ONOS软件,以确保在ONOS服务器发生故障时可以快速地进行故障切换,同时在扩展集群时也能保证业务的持续性。ONOS通过发布/订阅的模式在多个实例之间进行消息的高效同步,每个转发平面关联一个主ONOS实例,当一个实例失效时,会从其他的实例中选举一个作为替代,从而转发设备零中断地切换到新的主控制器。

优势:

  1. ONOS轻量化的设计,更加注重可靠性、性能和扩展性。
  2. ONOS提供系统的文档支持,采用清晰的目录索引,非常易于检索。

总结

ONF(开放网络组织)致力于推动SDN的标准化,打破各自为政的竖井。但整个市场仍然呈现出百家争鸣的格局,同时纵观国内外各知名厂商的商业化产品,大多一边在紧跟开源先进技术的同时,一边还在自己造轮子。

SDN技术的新生力量仍需在传统网络设备厂商格局中突围。SDN最初有望打破传统网络设备厂商的垄断,培育出更多有创新能力的新兴企业。然而,由于该网络市场依然形成寡头垄断的局面,无论从资金实力还是从技术实力大多还在传统网络设备上手中把控,这些龙头企业也并未就此故步自封,他们也在积极地迎接新的变化。

同时很多客户也对新兴技术持观望态度,因此很多厂商提供的SDN设备在Hybrid兼容模式下工作,即既可以在SDN控制平面和转发平面分离的模式下工作,也可以以传统的模式独立提供服务。


参考资料:

  • https://www.opennetworking.org
  • SDN Architecture 1.1
  • Inter-Datacenter WAN with centralized TE using SDN and OpenFlow
  • SDN架构 http://developer.huawei.com/cn/ict/products/sdn/components/forum/re/sdnconceptandbenefits

文中图片来源:

图1:https://3vf60mmveq1g8vzn48q2o71a-wpengine.netdna-ssl.com/wp-content/uploads/2014/10/TR-521_SDN_Architecture_issue_1.1.pdf

图3:https://www.slideshare.net/nyechiel/nfv-meetup-by-red-hat-january-2015

图4:https://www.sdnlab.com/4309.html

(图2为作者制作)

关于SDN与云计算平台的集成方案以及应用场景的讨论,敬请继续关注《云计算时代催生下一代网络变革-软件定义的网络》系列文章之三《集成应用篇》。

云计算时代催生下一代网络变革-软件定义的网络之技术架构篇相关推荐

  1. SDVN(软件定义虚拟网络)技术分析

    SDVN(软件定义虚拟网络)技术旨在构建承载于现有的和未来的Internet之上的全球分布式智能边缘网络,实现人与物的可靠.高速.安全.互利连接,让数据因网而连通,价值因链而流动. SDVN通过通过M ...

  2. iOS开发——网络使用技术OC篇网络爬虫-使用正则表达式抓取网络数据

    网络爬虫-使用正则表达式抓取网络数据 关于网络数据抓取不仅仅在iOS开发中有,其他开发中也有,也叫网络爬虫,大致分为两种方式实现 1:正则表达 2:利用其他语言的工具包:java/Python 先来看 ...

  3. [转]Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络...

    消除障碍,实现云环境的灵活性.高效性和多租户功能 当 我们与客户谈论其数据中心时,我们发现虚拟化并未能充分发挥其潜能.客户对计算机虚拟化的优势大为认可,但他们希望能够获得更高程度的 IT 灵活性.客户 ...

  4. Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络

    消除障碍,实现云环境的灵活性.高效性和多租户功能 当我们与客户谈论其数据中心时,我们发现虚拟化并未能充分发挥其潜能.客户对计算机虚拟化的优势大为认可,但他们希望能够获得更高程度的 IT 灵活性.客户尤 ...

  5. Windows Server 2012 和 System Center 2012 SP1,Virtual Machine Manager 中启用的软件定义的网络...

    消除障碍,实现云环境的灵活性.高效性和多租户功能 当我们与客户谈论其数据中心时,我们发现虚拟化并未能充分发挥其潜能.客户对计算机虚拟化的优势大为认可,但他们希望能够获得更高程度的 IT 灵活性.客户尤 ...

  6. 【云安全系列】云原生场景下的容器网络隔离技术

    一.研究背景 随着云计算时代的到来,尤其是容器化技术的飞速发展,云原生作为云计算的未来阶段,其安全势必成为云安全的主要战场.从目前的云原生环境来看,云原生网络安全问题层出不穷,威胁程度逐渐上升,从业人 ...

  7. IBM虚拟化与云计算专家王庆波——云计算催生业界变革带来更多商业机会

    IBM虚拟化与云计算专家- IT热书<虚拟化与云计算>作者组做客51CTO巅峰访谈-10 <虚拟化与云计算>读者书评: IBM虚拟化与云计算的专家们在说云,IT界在倒腾云,一开 ...

  8. 中石油中石化的数字化变革:中国石油数字化油田迈入物联网与云计算时代!

    中国石油数字化油田迈入物联网与云计算时代! 中国石油全面推进"十二五"信息技术总体规划实施,一批批数字化油田相继迈上新台阶,在为全面建成世界水平综合性国际能源公司,努力实现信息化与 ...

  9. 云时代:重新定义运维 云计算时代 云计算作为改变世界的力量,逐渐开始展现在各种应用中,这场技术变革的演进超出了许多人的想象。早些年,当我读到《IT不再重要》这类文章时,对云计算所具备的水电般“按需使用

    云计算时代 云计算作为改变世界的力量,逐渐开始展现在各种应用中,这场技术变革的演进超出了许多人的想象.早些年,当我读到<IT不再重要>这类文章时,对云计算所具备的水电般"按需使用 ...

最新文章

  1. C#字符串与享元(Flyweight)模式
  2. vs oracle带参数更新,Oracle vs PostgreSQL Develop(23) - PL(pg)sql(参数声明)
  3. python没有上方工具栏_Python体验(08)-图形界面之工具栏和状态栏
  4. Matlab中特征选择reliefF算法使用方法(分类与回归)
  5. UIDynamicBehavior的行为类翻译
  6. 2021暑假实习-SSM超市积分管理系统-day06笔记
  7. 8086汇编-实验10-字符打印程序
  8. Java Bullshifier –生成大量随机代码库
  9. maftools|TCGA肿瘤突变数据的汇总,分析和可视化
  10. Java基础学习总结(41)——JPA常用注解
  11. 20200115每日一句
  12. Latch up 闩锁效应
  13. php代码的网页框架,easyweb: easyweb是一个简单易用的php框架,实现了路由、容错等处理,集成composer代码生态,可快速创建中小型网站应用...
  14. 【转】python技术博客
  15. canvas绘制图形API(一)
  16. Using PyTorch Version of YOLOV3/TinyYOLOV3
  17. 计算机中桌面位置更改,如何更改桌面文件路径 电脑桌面优化技巧
  18. Ubuntu修改hosts方法
  19. 北斗导航系统、GPS、GLONASS信号频率
  20. KD500全自动电容电感测试仪

热门文章

  1. OpenStack部署及创建云主机实例
  2. python自动获取号码归属地_Python批量获取并保存手机号归属地和运营商的示例
  3. MAYA XGen创建毛发时报错找不到过程“XgCreateDescription“的解决方法
  4. Linux之集群部署(超简单!)
  5. Sprite的一些有趣的现象
  6. 【数据库】什么是 PostgreSQL?开源数据库系统
  7. 机器学习如何驱动业务实践?你想知道的都在这!
  8. 索引的基本概念及作用
  9. js nextSibling属性和previousSibling属性概述及使用注意
  10. SendMessage实现进程间通信