History of SDN 1.1 - 1.2

本节讨论从上世纪八十年代时到现在为止出现的SDN的思想和发展历史。了解历史,可以明白技术后面的成因以及一些原则,并从架构上去大致掌握、了解一些主旨。

课程地址

SDN的四个历史阶段

  • 背后的支持技术的不断发展。例如可编程数据平面,控制平面和数据平面分离

  • 控制平面和数据平面分离的细节和历史缘由

  • 为特定的、不同的数据平面开发控制通道。

  • 有了控制通道和数据平面的分离的思想之后,在一些特定的标准中,又有了两者间的某种重合。

接下来的内容我们会先讨论支持SDN思想背后的那些网络技术的发展过程。

Evolution of Supporting Technologies(1980s)

下面讨论的是中心网络控制(Central Network Control)思想的起源。Central Network Control 的思想并不是一开始就有的,特别是在早期的网络实现中,控制平面和数据平面是集合到同一个通道,一起操作的。

in-band signaling

有一种技术,或者可以说是一种范式,称为in-band signaling(带内发信),这是一个控制和数据集合在一起的例子。(Control and Data together)

In telecommunications, in-band signaling is the sending of control information within the same band or channel used for voice or video. This is in contrast to out-of-band signaling which is sent over a different channel, or even over a separate network. In-band signals may often be heard by telephony participants, while out-of-band signals are inaccessible to the user.

在使用电话网络的情况下,数据和控制信息都是通过同一个信道传输的。传输使用特定的频率来清理中继线(trunk line),或者用特定的脉冲来路由定向通讯目标,使用这样的方法来取得对通信的控制。同时,传输数据也是用的同一个信道。总之这种方法的优点就是带来了简易性。但也有坏处,使得网络本身变得十分脆弱,以及安全性较差。

Network Control Point

Central Network Control 思想最早可以追溯到上世纪八十年代,AT&T, 美国电话电报公司(American Telephone and Telegraph Company)采取的一种技术手段——Network Control Point,网络控制点,这也是一种沿用至今的技术。

这种技术就对上面的 in-band signaling 尝试做出改进。它尝试从信号、声音、数据中把对传输的“控制”分离出来,这样做是为了有利于让它发展更多的服务业务。具体的理念是:让所有的信号都经过这个 NCP ,NCP 来完成控制的工作,比方说与数据库进行交换数据,处理一些辅助信息等等。

这种尝试中心控制的概念带来了一些好处,例如,人们可以根据特定的需求来配置一些特定的设备,而且相较以往,为了实现新服务而更新设备的速度也变得更快了。还有,消除了 in-band signaling 的概念减少了配置网络的开销。因为相对于 in-band signaling 来说,这种新的思路能够让网络的管理者更清楚到底网络里面在运作着什么样的功能,这样不仅他们去配置网络的时间能够减少,还有利于更快、更准确配置网络资源。除此之外,还有一点非常重要的是,当人们想要在已有的网络上添加新的服务时,中心控制的思想能够让我们非常方便地实现我们想要的目标。新的服务和各种应用,能够非常容易的在此基础上建立。

简言之,Central Control 有最重要的两点好处。

  • 将整个网络看成一个大的“广义节点”,管理者可以直接地、很清楚地观察自己网络的情况。

  • 将数据、基础设施、服务的发展独立开来。例如,我们可以在已有的数据和基础设施上应用新的服务,而不用换掉所有的网络设备。

Programmability in Networks:Active Networks(1990s)

这里讨论的是网络可编程性,最早可追溯至90年代的Active Network(活跃网络)思想。我们会讨论什么是 Active Network,以及它的目的是什么,背后驱动着 Active Network 的技术有哪些,以及它和 SDN 的关联。

What is Active Networks

Active networking is a communication pattern that allows packets flowing through a telecommunications network to dynamically modify the operation of the network.......Active networking allows the possibility of highly tailored and rapid "real-time" changes to the underlying network operation.

翻译:活跃网络是一种沟通模式,它允许数据包流经一个电信网络动态修改网络的操作

活跃网络允许高度定制的可能性和快速“实时”更改底层网络操作。

老师给了个定义:

Networks where switches perform custom computations on packets.

也说的是数据包运行执行自定义的计算or工作。

例子:

  • 在每个路由器中追踪各个 packet 活动的 Trace program。

  • middlebox,例如防火墙(Firewall)、代理服务器(proxy),应用程序服务等等。

wiki - A middlebox or network appliance is a computer networking device that transforms, inspects, filters, or otherwise manipulates traffic for purposes other than packet forwarding. Common examples of middleboxes include firewalls, which filter unwanted or malicious traffic, and network address translators, which modify packets' source and destination addresses.

这些都是对网络中的 packet 进行定制的操作的行为。我们可以认为 middlebox 就是 Active Networks 比较现代的一种体现方法。

Origination

Active Networks 的思想来源于1994-1995年间美国国防部高级研究计划局(Defense Advanced Research Projects Agency,DARPA)所做的一些研究。当时研究人员讨论现有网络体制存在的一些问题。例如想要在现有的庞大的框架下应用新的技术十分的困难;好几层的协议层使得网络不堪重负、多余操作很多、运行效率低、运行效果差;配置新设备也十分困难,等等。

Motivation for Active Networks

  • 让创新提速。

    • 互联网的革新很依赖于各种配件的统一。设计一个一致的结构是非常非常重要的。
    • 对于重大革新,从提出原型到成功实现往往需要花费十几年的时间。
  • 引入 Active Node 概念。允许路由器下载新的服务到它的设施上。
    • 这样可以启发更多的用户主导型创新。

这里的主旨是:packet 不仅携带要传输的信息,还携带可能对这些信息进行的操作或者程序。这种 Active Routers 可以和原有的路由器共存。这种可编程的交换机就可以对数据进行额外的操作。

两种实现方法

  • Capsules("integrated")

这是一种比较极端的方法,也就是每个要发送的 packet 都带有一段程序。网络中的 “Active Node” 会对 packet 中携带的信息和代码进行评价,然后将其分配给可编程交换机or路由器上的某个执行环境。

  • Programmable Switches("discrete")

这第二种方法相比第一种来说更常见,也基本上就是SDN的模式。在这种方法中,强调的是由可编程的交换机保存 packet 中的代码,根据其代码,执行不同的操作。packet 会根据其 head field information 来分配到合适的代码区域。

What Happened to Active Networks?

这项技术已经早在二十年前被提出来,为什么我们不能够更早一点实现这项技术呢?

  • Time was off

    • no clear applications.
    • hardware support wasn't cheap.
  • Some missteps
    • security.
    • End-user as programer(vs. network operator)
    • interoperability

时机不是特别好,在当时,对于这种概念(可编程性)没有很明确的应用程序,例如现在对于SDN来说特别重要的数据中心(data center)的概念在当时是没有的。还有就是当时的硬件支持所需要的花费并不便宜。而现在,我们有了更多的可以支持可编程数据平面的硬件支持选择,例如TCAMs,FPGA,等等。

在这些技术的发展进程中也走了一些弯路。例如当时非常注重安全性问题,想方设法开发新的编程语言来实现安全编程。可是由于太过注重这方面,却忽略了我们的初衷——为网络提供可编程性。无论是用哪种实现方法,我们的目的都是要为基础设施提供灵活的可编程性。

当时的想法是把 End-user(终端用户)作为Programmer,而不是SDN所强调的Network operator。

  • In contrast: OpenFlow

    • simple firmware upgrade.
    • switch hardware support the basics.

当时还为了使 Active Networks 与当时现有的网络设计和配置相互协同工作做了许多考虑。但OpenFlow在这点上与之前的做法截然相反。

OpenFlow essentially punted that, they did a very good job at grappling with backwards compatibility and existing switch hardware.

OpenFlow抛弃了之前的那一套做法,而是采取了向后兼容性的策略,所以说OpenFlow是推倒重来的设计。有效地推动了固件升级来支持OpenFlow,现在许多的硬件都已支持。

Legacy

  • Programmable functions in network to enable innovation.

为网络提供可编程性的功能,方便网络创新。在这一点上, SDN 的思路和愿望可以说是和 Active Networks 是一样的。

  • Demultiplexing programs on packet.

packet 中的 code 可以存储在可编程的交换机中,然后根据 code 中的信息将 packet 多路分用,分配到正确的区域中去。这一点是很重要的,也是来源于 Active Network。

  • Paying attention to middleboxes.

对 middlebox 投入了大量关注和研究,动机之一是为了不同的 middlebox 的扩散,但有实现一个统一的架构的愿景。

Active networks pay a lot attention to middleboxes. One of the motivations for Active networks was the proliferation of different kinds of middleboxes and vision of unifying architecture.

Software Defined Networking(Week 2, part 1)的更多相关文章

  1. Software Defined Networking(Week 1)

    前言 课程名称:软件定义网络 课程地址 Coursera上新的一期还没开课,所以是YouTube. Instructor:Nick Feamster Get Started 对于本次课程,主要的新内容 ...

  2. Software Defined Networking For Dummies, Cisco Special Edition

    从接触SDN开始,不论是硬件还是软件,一直都是从具体的点开始,慢慢的勾勒出自己认为的SDN的样子,相信读完这本思科出的关于SDN的书会对其有新的认识 这本书的名字就是Software Defined ...

  3. Improving Network Management with Software Defined Networking

    Name of article:Improving Network Management with  Software Defined Networking Origin of the article ...

  4. Method of Seamless Integration and Independent Evolution of Information-Centric Networking via Software Defined Networking

    A method of transferring data between a software defined network (SDN) and an information-centric ne ...

  5. Software Defined Networking(Week 2, part 2)

    History of SDN 1.3 - 1.4 课程地址 Network Virtualization 网络可虚拟化,可以说是SDN的一项核心内容,同样也源自很多先前的技术和思想.我们先讨论何为网络 ...

  6. A Survey of Machine Learning Techniques Applied to Software Defined Networking (SDN): Research Issues and Challenges

    将机器学习用到SDN中的综述:研究的问题和挑战 从流量分类.路由优化.服务质量(Qos)/体验质量(QoE)预测.资源管理和安全性的角度,回顾了机器学习算法如何应用于SDN领域. 相关知识 在SDN中 ...

  7. Software Defined Networking(Week 3, part 1)

    Control and Data Plane Seperation 课程地址 Overview 今天正式地学习一个控制与数据平面分离.学习完本节,应该要掌握何为控制和数据平面,了解它们的功能以及好处, ...

  8. Software Defined Networking(Week 2, part 3)

    Control of Packet-switch Network 我们已经讨论过中心控制网络的原理,但主要是以电话网络做模型的.现在我们来看看对于分组交换网络的控制是如何改进的. Why Separa ...

  9. RFIDler - An open source Software Defined RFID Reader/Writer/Emulator

    https://www.kickstarter.com/projects/1708444109/rfidler-a-software-defined-rfid-reader-writer-emul h ...

随机推荐

  1. Windows 视频Directshow开发介绍

    在Windows平台上实现一个文件播放器有什么好的开发库和方案呢?方案有很多,比如基于FFmpeg,VLC的插件,mplayer,Directshow.用FFmpeg来实现文件格式解析.分离视频音频流 ...

  2. C语言常用知识点

    C语言条件预处理命令 /* 格式: #ifdef 标识符 程序1 #else 程序2 #endif 标识符已经定义时,程序段1才参加编译 应用:如调试版本,发行版本,便于调试 */ #include ...

  3. C语言学习记录_2019.02.09

    打印字符串:%s--------printf("%s","abcd"); 打印字符串数组中某一位:%c--------printf("%c" ...

  4. Scala(四):对象

    对象:Object 1.单例对象 2.伴生对象 3.扩展类或特质的对象 4.apply方法 5.应用程序对象 6.枚举1.单例对象 Scala中没有你静态方法或静态字段,可以用object这个语法结构 ...

  5. Firebird3 多文件支持

    默认建立数据库时为一个数据文件,但文件不能无限大,故可以为数据库增加新文件: isql 打开数据库,并conn到指定数据库,然后 Alter databaseAdd file ‘d:\data\d2. ...

  6. PyQt5 笔记(05):信号/槽

    PyQt 的很多类都内置了信号和槽.下图是 Qt 官方文档对 QThread 类中包含的信号/槽的描述: 一.信号/槽 都是内置的 请看一个最简单的程序: 按钮点击后,窗口关闭 代码: class T ...

  7. Java虚拟机笔记(二):GC垃圾回收和对象的引用

    为什么要了解GC 我们都知道Java开发者在开发过程中是不需要关心对象的回收的,因为Java虚拟机的原因,它会自动回收那些失效的垃圾对象.那我们为什么还要去了解GC和内存分配呢? 答案很简单:当我们需 ...

  8. Properties、ResourceBundle

    两个类都可以读取属性文件中以key/value形式存储的键值对,ResourceBundle读取属性文件时操作相对简单. Properties 该类继承Hashtable,将键值对存储在集合中.基于输 ...

  9. 阿里云rds 磁盘空间满导致实例锁定

    1.RDS 数据日志已经快满了, 导致数据库不能写入,只读. 2. Binlog日志的保存及清理规则 MySQL实例的空间内默认清理binlog日志的规则如下: 实例空间内默认会保存最近18个小时内的 ...

  10. buglly热更新集成遇到的那些坑

    首先说明使用热修复的意义,那就是你的apk包发出去了,万一发生了紧急异常需要修复,怎么办?这时候再发包上市场审核,也是有点慢了吧?而且错误发生在apk中,无法通过后台接口修复,这时候你就需要一个强大的 ...