本文解答四个问题:

问题一:What is

SDN?

之前根据自己的经验和学习状况回答了如何去研究SDN&OpenFlow?,到底What

is SDN?

现有的SDN课程中在介绍SDN时,基本都是两步走:

第一步引用Nick McKeown的观点,类比PC产业,从“Refactoring

Functionality”的角度来定义SDN,直接了当非常容易理解,感觉豁然开朗。

第二步引用Scott Shenker的观点,从“Redefining

Abstractions”的角度来思考SDN,有点形而上的意思,但是仔细研究,发现确实是那么回事。后来看Larry

Peterson在2013sigcomm上做《Zen and the Art of Network

Architecture》的演讲,才明白“技术是可以用哲学方式思考的”。

关于SDN的确切定义,我最喜欢ONRC的描述,用词用句非常准确:

SDN is changing how we design, build and operate networks to better

support growth, agility and innovation. SDN’s key attributes

include: separation of the data and control planes; a uniform,

vendor-agnostic interface, calledOpenFlow, between control and data

planes; and a logically centralized control plane that offers a consistent,

network-wide view to programers or operators. The logically

centralized control plane is realized using a network operating system that

constructs and presents a logical map of the entire network to services or

control applications implemented on top of it. With SDN, a network operator or

third party can introduce a new service or customize network behavior by

writing a simple software program that manipulates the logical map of a slice

of the network. The rest is taken care of by the network operating system.This

view of SDN supports boundless innovation, with a truly modular architecture

that allows providers, operators and end users to mix and match the

applications, network operating systems, hypervisors and switches they want to

best address their requirements. Network managers can finally run applications

to manage their network and deliver the unique performance, scale, service and

functionality needs for their organization.

而在《SDN白皮书》中是这样描述SDN体系结构的三个特点: In the SDN architecture,the control and data

planes are decoupled,network intelligence and state are logically

centralized,and the underlying network infrastructure is abstracted from the

applications。后续13年底发布的《SDN体系结构概述》中的描述: The aim of SDN is to provide open

interfaces enabling development of software that can control the connectivity

provided by a set of network resources and the flow of network traffic though

them, along with possible inspection and modification of traffic that may be

performed in the network.

国内来看,弯曲评论陈首席之前认为(Logically) Centralized

Controller是非常有意思的点(Jennifer在自己的课程中也特别认可这一点) ,卫峰谈到SDN的三个本质属性:1.控制与转发分离,2.开放的编程接口,3.集中化的网络控制;@wang_russell博客中的一些列文章阐明了对SDN的理解,谈到本质属性,跟卫峰一个观点。这三种观点都不敢妄加评论,

大家可以比较分析一下。

下面是我个人的理解:

首要的当然是“控制与转发的分离”,这里的分离一方面是指decouple,所谓解耦合,在控制与转发之间定义了清晰的开放接口,让控制和转发都可以独立演进,在不断改进的同时还能向后兼容;另一方面这里的decouple又特指物理位置上的远离,这一点与PC的控制/处理分离是不同的,与分布式系统的通信类似,依赖于消息。

其次是“控制面的抽象,转发面的抽象”,前者是指摆脱之前控制面的功能堆砌,解决一个问题多一个协议,多一个协议多一个控制面功能的尴尬,为了使得网络易用,控制面需要抽象,一旦抽象也能持续演进。与PC的类比来看,控制面的抽象就是控制面的软件层次化,一方面NOS负责对转发面的机器级控制,同时给上层应用提供良好的开放接口,另一方面应用在更高抽象级别上建立模型,这样一来,控制面本身也是NOS与Apps的分离,也能独立演进,并且可以借鉴计算机发展以来软件工程积累的经验;后者是指对网络数据包处理行为进行通用化,建立通用转发抽象模型,一个关键是通用转发模型的体系结构,一旦这个定下来,之后就是修修补补和具体实现了。

再次才是“逻辑上的集中控制”,个人认为这一点已经不那么清晰明确了(也可能是自己的局限性,没理解透),尤其再加上Logically这个修饰词,还有Kadoo的local

controller的概念,到底(Logically) Centralized

Controller在实现层面是怎么操作的?当网络的规模足够庞大时,就需要分布式的控制器集群来作为整个网络的控制面,这是一种层次型的分布式协作系统,还是将巨量的任务分成块来处理?我更愿意把最终的控制面理解成一个逻辑上的a

big controller,一边是network global view,另一边是传统软件工程师。

为什么要弄清楚SDN的本质属性?其实之前挺不愿意去讨论“本质属性”的,因为以我的理解深度可能还没到这个程度,更多愿意分析别人目前在各个方向上的成果,开源项目和产业界的产品策略,但后来发现如果要“保持SDN学习/研究的专注性,保持对各个技术方向的敏锐性”,就必须先弄清楚这个。假如什么都是SDN,那么SDN就什么都不是了。

最后,小结一下SDN体系结构:类似PC的开放分层体系结构,data plane逐步通用化,control plane从data

plane分离出来,摆脱之前的协议(功能)堆砌,进行抽象且要实现(Logically)

Centralized,在控制面内部再次进行分层:NOS和Apps。

如下是ON.LAB给出的SDN简史:

The roots of SDN can be traced back to projects such as RCP and 4D. Martin

Casado invented SANE and Ethane in 2007 while doing his PhD, co-advised by Nick

McKeown (Stanford) and Scott Shenker (Berkeley). Some of the basic SDN ideas can

be traced back to SANE and Ethane (separation of control plane from forwarding,

programmatic control, or flow-based). The technology really took off at Nicira,

where the first versions of NOX and OpenFlow were created, and later the ONIX

distributed controller.

问题二:What is

OpenFlow?

问题三:What is

NOS?

问题四:What is SDN

Apps?

sdn体系的三个平面_深入SDN(三):SDN、OpenFlow和NOS是什么?相关推荐

  1. sdn体系的三个平面_软件定义网络基础---SDN控制平面

    一:SDN控制平面 一个或多个SDN控制器组成,是网络的大脑.  对底层网络交换设备进行集中管理,状态监测.转发决策以及处理和调 度数据平面的流量:  通过北向接口向上层应用开放多个层次的可编程能 ...

  2. sdn体系的三个平面_十张图看懂SDN与NFV的区别与联系?

    原标题:十张图看懂SDN与NFV的区别与联系? 专业的人说的很准确但是普通人难以理解,常常记不住,分不清,不专业的人往往又说的差点意思.无意间,笔者在领英上看到一个介绍SDN/NFV区别的公开文档,内 ...

  3. 人对光波的三种特性_光线的三种特性——玩转光线的基础知识

    摄影是用光的技术,想用好光线就必须了解光线的特性. 光线的三个特性就是: 1.强度.光的强度与光源的能量距离以及传播介质有关.直观的感觉就是光的明暗程度. 2.方向.就是光源的方向.但是在多光源或者漫 ...

  4. java实现线程三种方式_详解三种java实现多线程的方式

    java中实现多线程的方法有两种:继承Thread类和实现runnable接口. 1.继承Thread类,重写父类run()方法 public class thread1 extends Thread ...

  5. 连接mysql数据库的三个接口_数据库的三种接口

    数据库(Database)是按照数据结构来组织.存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要 ...

  6. es6 三点运算符_基于es6三点运算符的使用方法(实例讲解)

    先看一个es6规范下三点运算符的使用实例: let fun=function(a,...list){ console.log(a,list); }; fun('0','a','b','c');//0 ...

  7. java 冒泡排序的三种写法_冒泡排序的三种实现(Java)

    冒泡排序是非常好理解的,以从小到大排序为例,每一轮排序就找出未排序序列中最大值放在最后. 设数组的长度为N: (1)比较前后相邻的二个数据,如果前面数据大于后面的数据,就将这二个数据交换. (2)这样 ...

  8. python123用户登录的三次机会_用户登录三次机会(PYTHON)

    usename=shabi password=123456 i=3 while i > 0: zh = input("请输入你的用户名:") i - = 1 if zh == ...

  9. sdn体系的三个平面_SDN的架构与特征分析

    龙源期刊网 http://www.qikan.com.cn SDN 的架构与特征分析 作者:殷杰 来源:<硅谷> 2015 年第 06 期 摘 要 针对 SDN 的起源展进行分析,并且给出 ...

  10. 试讨论语法、语义、语用三个平面的区别与联系

    近年来,国内外有些语言学家在语法研究中注意到区别三个不同的平面,即句法平面.语义平面和语用平面,这是语法研究方法上的新进展,有助于语法学科的精密化.系统化和实用化.但这样研究语法还仅仅是开始.如何在语 ...

最新文章

  1. Android CheckedTextView 实现单选与多选
  2. c++调用dll动态链接库历程
  3. Wijmo 更优美的jQuery UI部件集:复合图表(CompositeChart)
  4. 查看java上下文切换,七日打卡--java并发编程之上下文切换
  5. 史上最优秀的转换工具类网站推荐[唯一保存历史转换记录]
  6. 通达信波段王指标公式主图_通达信精选指标——组合波段王果断买入井喷金叉突破均线流公式...
  7. 【老骥伏枥-原创】制作黑威联通启动盘:进阶篇
  8. 2022保密教育线上培训考试 01
  9. 十六进制转二进制原理
  10. 常量与十六进制数0x7f或0x3f做(与)运算含义
  11. k8s core-dns 解析域名异常
  12. oracle查询 相关的表,Oracle 查询用户,表,受权相关语句
  13. CMD 隐藏窗口运行
  14. 三位数码管电路设计实验
  15. Vue.use 写多个_老师说“你女儿跟多个男生早恋”,爸爸的回应改变了女儿的一生|早恋|马伊琍|晓敏|老师|告白...
  16. EntityConnection ConnectionString
  17. MySQL数据库CPU飙升到100%解决方案
  18. 超详细的Centos7.5安装Oracle11g
  19. matlab 28335,基于DSP28335和MATLAB在线编程VF控制实现毕业设计
  20. 【SSR服务端渲染+CSR客户端渲染+post请求+get请求+总结】三种开启服务器的方法总结

热门文章

  1. nodeJS版本升级
  2. 这个国庆,我去佛山看舞狮,太惊艳!
  3. Zabbix Database error
  4. vmware未识别网络
  5. 为啥Linux这么大的操作系统使用面向过程语言编写
  6. 开博第一篇~申请博客理由
  7. 以太坊Whisper协议
  8. DOS定时关机命令 windowXp
  9. Pytorch-《Deep learning with pytorch》1.2.1训练imagenetmini
  10. 【笔记总结】高中英语——其二:名词性从句