前言

今天呢,根据之前一些粉丝朋友的私信内容,所以今天来给大家讲解一下关于SDN的入门必备知识。

那么,阿尤瑞迪? 准备好了吗,各位…

如果有看不懂的粉丝朋友,欢迎在底部评论区留言,老班看到后会给大家一一回复解答

####初始
2006年,美国斯坦福大学启动了一个名叫Clean Slate的研究课题。 该课题由美国GENI项目资助,目的非常明确且宏大,就是—重塑互联

Global Environment for Network Innovations当时的互联网,已经历经了30多年的高速发展,从最初的小型专用局域网络,变成了空前庞大和复杂的世界级网络。

网络规模的持续扩张,网络设备的不断增加,超过了早期设计的承受能力,也使得网络维护变得举步维艰。于是,专家们开始探讨未来网络的可能性架构,希望在互联网崩溃之前,将它拉回正轨。而GENI项目和Clean Slate课题,就是这些尝试之一。

2007年,斯坦福大学博士生Martin Casado等人提出了关于网络安全与管理的项目——Ethane。该项目试图通过一个集中式的控制器,将网络管理人员制定的安全控制策略,下发到各个网络设备中,从而实现对整个网络的安全控制。

2008年,Clean Slate课题的项目负责人,斯坦福大学教授Nick McKeown及其团队,受到Ethane项目的启发,提出了OpenFlow的概念,并发布了那篇经典的文章——《OpenFlow : Enabling Innovation in Campus Networks(OpenFlow:校园网的创新使能)》。

Nick McKeown和他的文章OpenFlow,字面意思就是“开放的流”。2009年,基于OpenFlow,Nick Mckeown教授正式提出了SDN(Software Defined Network,软件定义网络)。

同年,SDN概念成功入围Technology Review年度十大前沿技术,获得了行业的广泛关注和重视。 12月份,OpenFlow规范的1.0版本正式发布。

这是首个可用于商业化产品的版本,具有里程碑意义。在继续介绍SDN发展历程之前,我们还是要稍微介绍一下SDN的工作原理。 **SDN的核心思想真的很简单,就是控制和转发分离。

**我们知道,网络的作用就是连接。通过无数的节点(例如路由器、交换机),将数据从起点传送到终点,这就是网络的基本功能。

数据传输过程中,各节点不断接收和转发数据包。控制负责下命令,转发负责干活。然而,考虑到安全冗余等因素,现实中的网络绝对不会是一条直线那么简单。它会是一个复杂的拓扑结构。

于是,命令该怎么下,直接决定了网络的效率。 传统网络中,各个转发节点都是独立工作的,内部管理命令和接口也是厂商私有的,不对外开放。

每个节点,都在说各自的“方言”所以,我们可以把它理解为**“各自为战”**的模式。虽然“战略层面”的规划和设计可能是统一的,但“战术层面”的执行却是复杂且低效的。

而SDN网络,就是在网络之上建立了一个SDN控制器节点,统一管理和控制下层设备的数据转发。所有的下级节点,管理功能被剥离(交给了SDN控制器),只剩下转发功能。

SDN控制下的网络,变得更加简单。管理者只需要像配置软件一样,进行简单部署,就可以让网络实现新的路由转发策略。(如果是传统网络,每个网络设备都需要单独配置。)除了简化部署之外,SDN更深层次的意义,是赋予了网络的“可编程性”**。
**也就是说,控制和转发分离之后,借助规范化的API接口,用户可以通过编写软件的方式,对网络进行管理。整个网络,就像个完整的机器人一样可供驱使。我们具体来看看SDN的架构。
SDN网络的整体架构,分为三层,从上到下分别是应用平面、控制平面和转发平面。

整个架构的核心,就是SDN控制器。上北下南,SDN控制器向上与应用平面进行通信的接口,叫做北向接口,也叫NBI接口(northbound interface)。

SDN控制器向下与数据平面进行通信的接口,叫做南向接口,也叫CDPI接口(control-data-plane interface,控制数据平面接口)。北向接口相对来说比较好搞,麻烦的是南向接口及其协议。因为它直接影响到SDN控制器的命令能否准确下达到无数的底层网络设备。

因此,SDN技术的发展史,简而言之,就是围绕SDN控制器和南向接口的“王位争夺史”。在SDN被提出之后,第一个控制器平台是NOX。

它是一种单一集中式结构的控制器,南向接口采用的是OpenFlow协议。2011年,由Google、Facebook、微软等公司共同发起成立了一个对SDN影响深远的组织,那就是ONF(Open Networking Foundation,开放网络基金会)

ONF的主要发起成员是德国电信、Facebook、Google、微软、雅虎等公司。这些公司要么是网络服务提供商,要么是运营商,没有一个是来自设备商的。

他们成立ONF的目的,是为了推动SDN和OpenFlow协议的发展。他们不希望SDN这个网络新技术又被设备商控制,成为设备商的赚钱工具。上述发起人里面,最值得一提的是Google。

如果说Nick Mckeown教授是点燃SDN星星之火的人,那么,Google显然是将星星之火烧遍全球的关键角色。早在SDN被提出之外,Google就在寻找提升自身网络效率的方法。当看到SDN之后,Google确认,这就是他们想要的。

于是,他们果断决定将SDN应用于自己的数据网络。2010年,Google开始将数据中心与数据中心之间的网路连线(G-scale),转换成SDN架构。

整个改造分为三个阶段。到了2012年,整个Google B4网络完全切换到了OpenFlow网络。

Google B4是一种横跨整个地球的连接到谷歌数据中心私有广域网。 改造之后,Google B4网络的链路带宽利用率提高了3倍以上,接近100%。这样的结果毫无疑问是令人震撼的,也坚定了行业对SDN的信心。

2013年,Google在SIGCOMM上发表了论文《B4: Experience with a Globally-Deployed Software Defined WAN》,详细介绍了Google的WAN加速SDN方案。论文中提及,Google使用的控制器名叫ONIX

面对SDN和ONF,设备商当然也不能无动于衷。2013年4月8日,在Linux基金会的支持下,作为网络设备商中的领导者,Cisco与IBM、微软等公司一起,发起成立了开源组织OpenDaylight,共同开发SDN控制器。

ODL的发起公司有:IBM、微软、Big Switch、博科、思杰、戴尔、爱立信、富士通、英特尔、Juniper、NEC、惠普、红帽和VMware……基本都是厂商OpenDaylight提出,**SDN不等于OpenFlow,人们需要对SDN进行“重新定义”。

**也就是说,OpenDaylight强调SDN控制器不仅仅局限于OpenFlow,而是应该支持多种南向协议。同时,OpenDaylight还强调,应该用分布式的控制平台,取代单实例的控制器。

这样可以管理更大的网络,提供更强劲的性能,还能增强系统的安全性和可靠性。OpenDaylight成立之后,成员数量增长迅速。但实际上,各个成员都有自己的小算盘。Cisco就不用说了,作为OpenDaylight项目的牵头人,它主导了其中大部分项目的开发。Cisco也一直想推自家的OpFlex上位。

除了Cisco之外,Big Switch推出Big Network Controller以及对应的开源版本Floodlight。Juniper推出的是Contrial以及对应的开源版本OpenContrial。总而言之,这一时期各种各样的SDN控制器处于百家争鸣的状态,发展势头一片大好。

当时比较主流的几种SDN控制器仗着人多势众,OpenDaylight也成了行业里最具影响力的技术组织之一。

就在OpenDaylight风光无限的时候,又杀出了一个搅局者。2014年12月5日,ON.Lab推出了一款创新性的网络操作系统——ONOS(Open Network Operating System),对OpenDaylight发起了强有力的挑战。

ONOS直接将自身定位提升到网络操作系统层面。ON.Lab是哪里冒出来的呢?ON.Lab全名是Open Networking Lab(开放网络实验室),最初是由Parulkar和Nick McKeown共同成立的。

没错,就是提出SDN的那个Nick McKeown教授。On.Lab的某些职能和ONF很类似。2016年10月19日,两个组织宣布正式合并,组成了新的ONF。

就这样,围绕SDN控制器和协议,各大流派及厂商进行了十多年的明争暗斗,并最终形成了现在的局面。 从趋势来看,网络操作系统的概念深入人心,是大势所趋。

SDN控制器作为网络操作系统的核心,重要性不言而喻。未来,随着网络规模的扩大,SDN控制器肯定会继续往分布式的方向发展。控制器之间的分工协作会更加深入,甚至可能出现集群。

控制器也会引入NFV虚拟化技术,与OpenStack等云平台进行整合。通过上面的介绍我们可以得出:SDN 从诞生到发展,有三条非常关键的主线。

第一条主线的主角是斯坦福大学。2008年,斯坦福大学 Nick McKeown 教授等人提出了 OpenFlow 的概念,并基于OpenFlow 为网络带来的可编程的特性,进一步提出了SDN(Software Defined Network,软件定义网络)的概念。

2009年,SDN 概念入围Technology Review年度十大前沿技术,自此获得了学术界和工业界的广泛认可和大力支持。2009年12月,OpenFlow 规范发布了具有里程碑意义的可用于商业化产品的1.0版本。

第二条主线的主角是 Google。Google 的 B4 网络 SDN 改造,给业界打了一针巨大无比的鸡血。Google的改造分为三个阶段。

第一阶段在2010年春天完成,第二阶段是到 2011年中完成,第三个阶段在2012年初完 成,整个B4网络完全切换到了 OpenFlow 网络。经过改造之后,链路带宽利用率提高了3倍以上,接近100%。

这个给业界带来无法形容的冲击和震撼。笔者以为,SDN 开始爆发性发展,自此方始!

第三条主线的主角是 Cisco。2012年6月,思科推出了ONE(Open Network Environment)战略。2013年4月,思科与其他公司一起发起成立了Open Daylight 开源组织,开发 SDN 控制器。

思科这两件事情,其主旨都在“重新定义 SDN”。在此之前,SDN 还是与 Openflow 基本画上等号的,Cisco 站住来说,SDN 不等于 Openflow,这个我们从 ONE 的架构与 ODL 的架构可见一斑,如下图所示:

图1 是“onePK(One Platform Kit)”,是为了支撑 Cisco 的 ONE 战略。

图2 是 ODL 的架构。这些架构,我们只需要关注图中红框的部分。onePK 红框部分,都是 Cisco 的设备,Cisco 的意思是:我家的设备就是 SDN,我给你包装一个 API(onePK) 就行了。ODL 红框部分的意思是:SDN 的协议,除了 OpenFlow,也可以是其他协议(NETCONF, BGP 等等)

这三条主线非常有意思。斯坦福大学(Nick McKeown 教授等人)发明了 SDN,试图重新定义网络,Google 则将 SDN 推向了第一个高潮,而 Cisco 则希望将 SDN 转个方向,重新定义 SDN!

如果说,斯坦福大学发现了一股清流,Google 则是掀起了一股巨浪,而 Cisco 就是搅浑这一池春水!

(注:与思科一起成立 ODL 的公司有:IBM、微软、Big Switch、博科、思杰、戴尔、爱立信、富士通、英特尔、瞻博网络、NEC、惠普、红帽和VMware)

恰恰来说,前面所说的三条主线,演化为了 SDN 的三大流派。

1、软件定义网元

我们仍然套用 SDN 的命名方法,把软件定义网元命名为:Softeware Defined Network Element(SDNE)。网元指的就是交换机、路由器等等这些网络设备。

这一流派源于斯坦福大学的 OpenFlow。斯坦福大学提出的 SDN 概念,以 OpenFlow 协议为基础,强调控制面与转发面分离,强调集中控制。

但是,集中控制,这个词,如果抠字眼的话,其含义是有分歧的。

一种含义是控制器心中有整个网络,基于这张网络做路径规划/计算,然后再针对每一个网元下发转发规则。

一种含义是,虽然一个控制器可以管理(控制)整个网络中的所有(相关)网元,但是这个控制器心中只有一个个独立的网元,而不是一张网络。控制器是每个网元自身做交换规则配置。比如我们在 Neutron 实现模型中所描述的计算节点中的 br-ex 和 br-int。

这两种含义,都是一个控制器管理(控制)所有(相关)网元,也即集中控制。但是,后一种含义,其实只是离散地单个网元的控制。

软件定义网元(SDNE),就是属于后一种含义。由于 OpenFlow 自身协议的缺陷和相关硬件的转发性能问题,其应用场景非常有限。现在基于 OpenFlow(或者其他类似的协议)做 SDNE,并不是主流。或者是一些小公司/创业公司,或者是大公司在极度有限的场景内,在推出 SDNE 相关产品。

SDNE 流派,从表面上看,是继承了 SDN 的纯正地位,实际上已经对正统的 SDN 做了裁剪。

这一流派虽然力量不大,但是仍然是现在业界延续 SDN 香火的主要力量。

2、软件定义网管

软件定义网管,Software Defined Network Management System,SDNMS。这一流派源于 Cisco 那个所谓的“重新定义 SDN”。Cisco 又是推出 ONE 战略,又是整一个 ODL 开源,虽然 ODL 开源号称也支持 OpenFlow,但是 Cisco 的本质是把传统设备做个包装,换个马甲,摇身一变为 SDN。

话又说说来,当设备还是那个设备时,无论它是软的(VNF)还是硬的(PNF,传统路由器/交换机),其业务发放,除了象网管一样,做个配置,又能做什么?

小编曾在一个微信群里,看到有人转发过这样一篇文章:

在该篇文章中,其宣称:控制器只负责业务下发,不负责转发表项的计算。转发表项的计算使用成熟度高的标准 BGP-EVPN 协议完成。

这就是当前业界拿着网管当作控制器当作 SDN 来大肆宣传的典型案例。现在业界这种声音非常大,非常主流。他们在宣传时,还有一个经典的理论:网管的架构不好,网管的接口抽象的不好。(说的好像它的架构就很好,它的接口就很抽象似的。)

我们不比较是网管与那个所谓的控制器,谁的架构好,谁的接口抽象。

我们要认清一点:

两个软件系统,做的事情(功能)是一样的,架构好坏,接口是否抽象,那是纯软件设计/开发的事情,那取决于设计开发这个系统的“人”,而不是冠一个 SDN 的名头,架构啥的就能自动变好。

这个基本逻辑要清楚!如果连这样的逻辑都没有…

这个业界主流声音,有两大可怕的后果:(1)思想上,混淆了 SDN 的概念;(2)行动上,浪费大量的人力物力,重新做一遍网管。

对于那些没有网管产品的公司/组织来说(比如某些公司,比如绝大多数开源组织),重新做一遍网管,没有任何问题,因为它们本来就没有网管。而对于那些已经有巨形网管产品的公司来说,这样的想法,是要命的!

3、软件定义网络优化

软件定义网络优化,Software Defined Network Optimization,SDNO。SDNO 与 SDN Orchestrator 的简称重复了,请您注意不要搞混,_

这一流派,起源于 Google,与 Google 稍有不同的是,Google 采用的网元是 OpenFlow 网元(交换机),而这一流派采用的是传统的网元。这一流派也有一点 Cisco 的影子。不过 Cisco 流派的本质是网管,而这一流派的本质还是网络优化,所以我们还是把这一流派归为 Google 流派。

前文说过,由于 OpenFlow 的限制,OpenFlow 网元(交换机)的应用场景并不多,所以这一流派采用传统网元,并没有什么不好,反而是非常正确。

网络优化,指的是网络流量优化,在满足 QoS 的前提下,尽量提高网络的利用率。

这一流派细分为两点:(A)静态最优路径计算;(B)动态路径调优。

静态最优路径计算,就是先期计算一条路由的最优路径(一般是最短路径)。但是这个方法一个是没有全局的观念,一个是没有动态调优的能力,而且传统的路由协议,也基本上具有这样的能力,所以这一点,我们就不展开讲述了。

不过需要指出的是,这一小流派,也是有一定的市场,他们往往拿着这一小点跟网管 PK,说它们不仅仅是做个网管,还做个路径计算。唉,不知道怎么说他们为好:

(1)这是一个纯算法的编程,不是 SDN 独有的;
(2)网管早已具备这样的能力。

好了,不吐槽了,我们来看看动态路径调优。我们先举一个例子,如下图所示:

图中,一条流的路径,原本规划是:R1-R2-R3。但是,当这条路径拥塞时,会动态调整为一条较为空闲的路径:R1-R4-R3。

这就是动态路径调优的一个简单的示意。

从技术高大上的角度而言,动态路径调优,是这三个流派中技术含量最高的。但是,偏偏就是流派在 SDN 业界的声音最小。

这一流派的鼻祖 Google,当年偶露一小手,就名动江湖,为什么这一流派却难成气候呢?是其他公司都傻吗?也不完全都傻,_

这一流派有很多技术难点需要克服:流量实时监控与预测;大象流老鼠流的区分与预测;流的 QoS 的定义。这些技术难点,都难以克服。

笔者就不展开描述这些技术难点了,您只需要关注一个词“预测”,就能想象有多难!比如上图中的例子,当你把一个流调整到 R1-R4-R3 路径时,突然间风云突变,R1-R2-R3 路径变空闲了,R1-R4-R3 变拥塞了。唉,被公司开除了,你都不知道找谁说理去!

但是,这些那点为什么 Google 就能克服呢?Google 有什么黑科技吗?网上有一篇文章讲的非常好,不要为了 SDN 而 SDN - Google 的 SDN 和你没关系
小编这里给大家简略摘抄几条:

(1)昂贵的跨国链路和海缆:相对于国内的传输链路,海缆和跨国链路会是天价。

(2)N年的MPLS-TE部署经验

(3)数据等级的分类:Google B4的海缆和跨国链路的平均利用率能维持在95%以上,这是一个极为惊人的数字。但在这个数字背后,我们可以读出什么?

A. 内部数据已经有严格的等级区分了:什么样的数据是高优先级,什么是中、低优先级已经明确定义了。从服务器入口开始对应用就开始标识、限速;

B. 各等级流量大小明确:从入口开始,每一种业务会有多少流量已经非常清楚了,这样才能汇总出整体各个等级的流量,才可以指定汇总的CoS等级规划。否则流量CoS是木有办法做的,这也是国内常常没有办法做CoS的原因;

C. 中低优先级的牺牲成就了高利用率:CoS不能产生带宽,能维持高利用率是因为高优先级流量的轻载,然后用中低优先级去填充,那么故障、高优先级有突发流量等状况发生时低优先级一定会被延迟或者丢弃;

总结起来就是三点:(1)需求强烈;(2)经验足,技术好;(3)流量状况自己能够掌握。

对不起,满足这三点的,好像就是只有 Google 一家公司。

Google 的网络,跑着是自己家的流量,那么这些流量它自己就可以规划,而我们要面对的是一个未知的网络,谁知道这个网络里的流量是什么情况,谁知道这个网络里的流应该是什么等级?

Google 恰恰是没有黑科技,而是从源头上来讲,我们(除了 Google 以外所有人)与 Google 所面对的复杂度是完全不可同日而语的。

另外,网络动态调优,还有一个悖论:不在现网做大量测试,就没法稳定,没法商用;但是,没有一个现网能允许一个不稳定的程序在其上面做大量测试。这就形成了一个死循环。

而 Google 恰巧也能打破这个死循环,因为它的流量成本非常高,“昂贵的跨国链路和海缆:相对于国内的传输链路,海缆和跨国链路会是天价”。高昂的成本能够促使其下定决心来打破这个死循环,很遗憾,我们好像找不到还有谁家有动力打破这个死循环。

第三点,Google 是自己研发。自己最懂自己的网络,这一点,也是无法比拟的。

正是有这三点保证,Google 能够偶露峥嵘,而其他公司要想做到,几乎不大可能。

这也正是这一流派,看起来很美,其实非常势微的原因。

深入浅出SDN的前世今生,看完没入门算我输相关推荐

  1. pandas算加权平均值_4000 字详解TCP超时与重传,看完没收获算我输

    专注于Java领域优质技术,欢迎关注 作者: tobe 来自:tobe的呓语 上一篇介绍 TCP 的文章「TCP 三次握手,四次挥手和一些细节」反馈还不错,还是蛮开心的,这次接着讲一讲关于超时和重传那 ...

  2. 你不知道的js中关于this绑定机制的解析[看完还不懂算我输]

    前言 最近正在看<你不知道的JavaScript>,里面关于this绑定机制的部分讲的特别好,很清晰,这部分对我们js的使用也是相当关键的,并且这也是一个面试的高频考点,所以整理一篇文章分 ...

  3. 一分钟读懂一个数学时代,看完不跪算我输!

    ▲   点击查看 上帝说,要有光,于是便有了光. 而香农说,要有熵,于是信息化时代正式拉开帷幕. 克劳德·艾尔伍德·香农(Claude Elwood Shannon)被尊称为"信息论之父&q ...

  4. ❤『面试知识集锦100篇』3.mysql篇丨mysql基础知识和面试真题,看完不收藏算我输!!

    作者:不吃西红柿 简介:CSDN博客专家.蓝桥签约作者.大数据&Python领域优质创作者. 谢谢那些曾经击倒我的人, 躺着可真TM舒服. 目录 一.知识体系 1.关系型数据库术语 2.事务的 ...

  5. 12个必备的Python函数,新手看完就入门啦!

    来源:https://sslljy.blog.csdn.net/?type=blog 前言 大家好,我是菜鸟哥. 新手在做写代码的时候容易卡壳,尤其当接触的函数以及其他知识比较多的时候,经常会看完需求 ...

  6. mysql数据库基础知识点总结--看完即入门

    疫情在家,在家简单复习了SQL数据库的基础知识.其实回过头来,当时本科时候学习的时候,还没有多大的感触.现在学习了这么多的语言和结构化知识,再回头来看这门语言,很多东西息息相关.就像是瞬间打通了六脉, ...

  7. php梗相亲梗,真实、有梗、接地气,看完这档相亲节目你没笑算我输!

    最近,小谷被安利了一档相亲类综艺节目:<全城热恋> 其同名的还有一部众星云集的电影,汇集了谢霆锋.刘若英.吴彦祖.徐若瑄等多位娱乐圈大咖. 虽然名字一样,但这两者的风格却是totally不 ...

  8. 看完就入门系列!吞吐量、消息持久化、负载均衡和持久化、伸缩性…… 你真的了解 Kafka 了吗?...

    作者| liuhehe123 来源| CSDN博客 责编| Carol 出品| CSDN云计算(ID:CSDNcloud) 封图| CSDN下载于视觉中国 无论是已经接触过 Kafka 还是刚入坑的小 ...

  9. springboot整合webSocket(看完即入门)

    webSocket 1.什么是webSocket? 2.webSocket可以用来做什么? 3.webSocket协议 4.服务端 WebSocket操作类 5.客户端 1.什么是webSocket? ...

最新文章

  1. [置顶] 安卓高手之路之 WindowManager
  2. Ganymed SSH-2 for Java
  3. mysql from_unixtime_MySQL 数据库中日期与时间函数 FROM_UNIXTIME(), UNIX_TIME() ...
  4. HDU 1043 Eight(八数码)
  5. html无框架,HTML框架技术详例
  6. 对话罗伟:5G背景下 物联网领域最大挑战在于商业模式
  7. Dotnet3.5 New一个对象就可以直接跟上大括号对类中的公开成员变量以及属性赋值...
  8. 为什么钉钉里的图片打开得更快了? | 凌云时刻
  9. linux cximage动态库,64位Linux编译cximage手记
  10. php纯真ip调用,使用php调用纯真IP数据库信息的解析组件
  11. BugKidz专版NBSI
  12. linux系统semba,examples.desktop
  13. 华中科技大学计算机视觉张朋,计算机视觉与深度学习前沿研讨会圆满举办
  14. 使用Telnet连接smtp服务器发送邮件
  15. 关于ASCII码和ANSI码,以下说法不正确的是()?
  16. 九段刀客:express连接MySQL并实现增、删、改、查
  17. 猴年快乐! 在UI设计中解密农历新年的象征意义
  18. PS5连接OPPO K9电视不支持2160P/4K
  19. 女王大学计算机科学,女王大学计算机科学专业本科课件.pdf
  20. 网络磁干扰仿真测试软件,电磁仿真软件有哪些?电磁仿真软件专辑推荐!

热门文章

  1. mysql objectid_【Mongodb】_id和ObjectId详解!
  2. Vue.js 实战系列之实现视频类WebApp的项目开发——6. 首页视频详情实现
  3. matlab中sumf,sum函数(sum公式使用方法)
  4. unity关于Maximize On Play的报错
  5. RxJava2.0教程(四)
  6. 企业微信最新版HOOK协议实现开源
  7. 海豚浏览器前端面试总结
  8. 信息世界新纪元,Windows 10开启
  9. Ubuntu系统安装搜狗、谷歌、五笔等输入法教程
  10. @JsonFormat 格式化时间、枚举