近期高级网络课的小组任务是在老师给定的范围内自选方向主题研究并做展示报告。我们组选了sdn。原以为这东西会是工业界无人问津的概念化产品,Google了一下却发现事实上sdn挺火的,因为它可能带来的可扩展性,一些大互联网企业也在開始涉足相关的研发,比方Google呵Facebook。这里简要的梳理下我对SDN概念性的认识。

背景

虚拟化的大趋势

近年来,大数据、云计算兴起,虚拟化技术的重要性越发突出。提到虚拟化,不得不提的是计算机行业里的一句老话:

计算机世界的绝大部分问题都能够通过分层的方法来解决

事实上虚拟化也能够理解成一种分层的思想。就拿云计算这个应用场景来说,虚拟化的技术就是在原有的硬件-操作系统-用户层次中,增添了虚拟机这么一层,变成了硬件-虚拟机-操作系统-用户,用虚拟机来管理硬件资源,添加了动态调整硬件资源的语义。

纵观计算机的发展历程,各方面都能够看到通过添加类似的虚拟化层次来提高生产效率的案例。比方高级语言之于汇编,比方图形界面之于命令行。这样的加入层次的解决方式,总是能让问题得到更清晰的解决。

网络虚拟化

网络经历了数十年的发展,现在在人们的生产、生活中发挥着巨大的作用。全球的网络拓扑结构结构错综复杂,有很多的自制系统组成。数据包从中国的一台PC机发出,訪问到美国的主机,需经过一系列的路由、转发,而经由的网络拓扑节点由层层网关、路由器支配,难于控制。一些组织,在架设自身的可扩展、大规模网络环境时,也相同遇到了拓扑结构复杂、难于维护的问题。

假设能剥离开网络的物理拓扑结构,将网络资源虚拟化,隐藏物理结构的复杂性,统一的进行逻辑层的管理控制,就能满足多变的网络需求了。

SDN和OpenFlow就是一个这种解决方式。

OpenFlow和SDN

OpenFlow起源于斯坦福的Ethane项目。该项目试图通过一个集中式的控制器,让网络管理员能够方便地定义基于网络流的安全控制策略,并将这些安全策略应用到各种网络设备中,从而实现对整个网络通讯的安全控制。受到此项目的启示,斯坦福的老师和学生将Ethane的设计更一般化,将传统网络设备的数据转发(data plane)和路由控制(control plane)两个功能模块相分离,通过集中式的控制器(Controller)以标准化的接口对各种网络设备进行管理和配置。2008年,他们提出了OpenFlow的概念。

这样的分布式的实现方式,让控制平面能够和转发平面物理的分离开,控制平面全然能够执行在运算能力更强的server上,而不是路由器。OpenFlow协议则是分离的两者之间的通信协议。关于OpenFlow的技术细节,《虚拟化的逆袭:OpenFlow和SDN》一文中有简明介绍。

基于OpenFlow为网络带来的可编程的特性,有研究人员提出了SDN即Software Defined Network(2009年)。在这个概念中,网络中全部的网络设备被视为被管理的资源,以此抽象出一个网络操作系统(Network OS)的概念,这个网络操作系统一方面抽象了底层网络设备的详细细节,同一时候还为上层应用提供了统一的管理视图和编程接口。SDN的架构细节,參见《SDN是生意
OpenFlow是技术》

SDN和OpenFlow的关系,就像互联网之于TCP/IP协议栈。OpenFlow是SDN的核心协议,用于控制转发面设备的控制转发。而SDN是上层的变成界面。

有观点觉得,『OpenFlow是技术,SDN是生意』。近期对SDN唱衰的报道也证明了这桩『生意』的前途未仆。

SDN的发展

在云计算飞速发展的同一时候,SDN也喧嚣尘上。Google,Facebook等大公司也结成了产业联盟,来推动其发展。

但其现状也并不是一片明朗:

依据IDC的研究结果显示,在2013年,整个企业网络行业的市场价值为420亿美元,当中将近一半来自2-3层网络交换机市场。SDN仅仅能产生约37亿美元的价值(8.8%),并且要到2016年才干达到这个数字。与早前的预測相比,IDC的预測数字有所添加,但从整个网络行业来看,SDN仍然相去甚远。

一方面,SDN的性能还有待改善,还有一方面,因为SDN的统一平台的思想,会带来硬件设备的同质化,威胁到厂商的利益,将会面临来自厂商锁定的阻力。《理性看待SDN》一文中有较具体的解释。

尽管虚拟化能解放生产力,是大势所趋,但就像功耗更大的复杂指令集在市场上战胜了精简指令集一样,市场是残酷的。仅仅能期待开源和开放的脚步不要停下。

參考


PS:欢迎訪问博客新家
http://biaobiaoqi.me

SDN:软件定义网络的更多相关文章

  1. openflow 和 sdn (软件定义网络) 原理和教程

    OpenFlow概述 OpenFlow简介 通俗的讲,OpenFlow是使用类似于API进程配置网络交换机的协议.OpenFlow的思路很简单,网络设备维护一个FlowTable并且只按照FlowTa ...

  2. 《SDN软件定义网络从入门到精通》导论课

    http://mp.weixin.qq.com/s?__biz=MjM5MTM3MzIzMg==&mid=209513316&idx=1&sn=e5dbd9a2ccccb88d ...

  3. SDN前瞻 该来的来了!SDN 软件定义网络

    SDDC:Software Defined Data Center 软件定义数据中心,全数据中心软件化. 在我们接触SDN概念之前,服务器虚拟化,软件虚拟化技术已经是非常成熟了.如果网络能够被虚拟化, ...

  4. SDN 软件定义网络----学习1

    原文地址https://www.infoq.cn/article/sdn-and-cloud-network 1.1,什么是 SDN? 什么是 SDN?SDN 的官方解释上提出了 SDN 的三个特性: ...

  5. [Virtualization][SDN] 讲的很好的SDN软件定义网络视频课程

    51CTO的免费课程,开始以为是扯蛋的,后来看了一下,讲的很好.注册一下,免费的. 只看了导论,挺好的. http://edu.51cto.com/course/course_id-4466.html

  6. DevOps之软件定义网络SDN

    唠叨话 关于德语噢屁事的知识点,仅提供专业性的精华汇总,具体知识点细节,参考教程网址,如需帮助,请留言. <软件定义网络SDN(Software Defined Network)> 关于软 ...

  7. 软件定义网络(Software Defined Network,SDN)简介

    SDN的三大关键要素 第一关键要素是转发与控制分离,这使得网络交换机的数据转发变得更加简单.快速:同时,控制变成了网络操作系统中一个相对集中的逻辑功能. 第二个关键要素是OpenFlow协议,它向交换 ...

  8. 《软件定义网络:SDN与OpenFlow解析》

    <软件定义网络:SDN与OpenFlow解析> 基本信息 原书名:SDN: Software Defined Networks 原出版社: O'Reilly Media 作者: (美)Th ...

  9. SDN前瞻 软件定义网络的一些概念

    SDN的核心:可编程性 SDN的思想:SOA面向服务 面向服务的体系结构(service-oriented architecture SOA) 使网络连接的大量计算机易于合作,以 服务 而不是人工交互 ...

随机推荐

  1. ExtJS 4学习

      主要是选自<Ext js 权威指南>描述的是Extjs4的版本 模板代码如下:(略有改动,原因是当前文件目录下放置了extjs的包) <!DOCTYPE HTML PUBLIC ...

  2. Linux ./configure && make && make install 编译安装和卸载

    正常的编译安装/卸载: 源码的安装一般由3个步骤组成:配置(configure).编译(make).安装(make install).   configure文件是一个可执行的脚本文件,它有很多选项, ...

  3. 初涉JavaScript模式 (1) : 简介

    什么是模式? 广义上的模式是指 :在物体或事件上,产生的一种规律变化与自我重复的样式与过程.在模式之中,某些固定的元素不断以可预测的方式周期性重现.最基本而常见的模式,称为密铺,具备重复性以及周期性两 ...

  4. JS 打字机效果

    请点我,查看效果 我送过你礼物 试过对你不管不顾 我挂过你电话 也曾为你哭到沙哑 我曾经为你去学做过晚餐 曾觉得你的关心太烦 也曾为你起得很早 试过狠心把你甩掉 试过偷偷拍你的微笑 也曾经把你电话删掉 ...

  5. js 的其它运算符和优先级

    三元运算符: 语法为 exp1? exp2:exp3 判断 exp1是true 和 false  如果true,则返回exp2  ,如果false ,则返回exp3 <script> if ...

  6. IE 6最小最大宽度与高度的写法

    最小最大宽度,最小最大高度,这是CSS很常见的一个要求.在现代浏览器中,一个 min-height,min-width 就可以解决问题,但是在IE系列,比如IE6则比较繁琐一点.下面总结一些IE 6下 ...

  7. [前端笔记]第三篇:JavaScript

    JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理. 一.代码存放位置 J ...

  8. Python自动化运维之22、JavaScript

    一.简介 JavaScript是一门编程语言,浏览器内置了JavaScript语言的解释器,所以在浏览器上按照JavaScript语言的规则编写相应代码之,浏览器可以解释并做出相应的处理.学习了htm ...

  9. python的min()函数也可用于比较tuple

      python的min()函数也可用于比较tuple >>> a = (2,'asv','dfg') >>> b = (3,'gsg','weg') >&g ...

  10. Django socketio 安装

    如果你还没有安装过 gevent,首先需要安装 libevent, 编译安装 libevent 需要安装 Pyhton 开发库. 在Debain上可以运行如下指令: $ sudo apt-get in ...