SDN(软件定义网络),顾名思义,通过软件来控制或驱动整个网络。SDN的核心概念有两个,第一是转发面与控制面的分离;第二是开放的可编程接口。另外,SDN强调集中式控制,通过软件来控制整个网络,但这并不意味着只有一个Controller,在大型网络中,更多是使用分布式Controller的架构来管理,如Onix。

SDN是一个部署网络的框架,并不是具体的某个技术,更不是OpenFlow。OpenFlow协议只是Switch和Controller用来通信的应用比较广泛的一个协议,还有其他一些协议。

NV(网络虚拟化)不是SDN。网络虚拟化是指利用Tunnel技术将虚拟机连接起来实现一个运行在物理网络之上的虚拟网络。但NV的集中化控制要求非常适用于SDN技术。

在基于OpenFlow的SDN架构里,OpenFlow Switch负责数据的转发,OpenFlow Controller负责控制网络,实现了转发面与控制面的分离。

OpenFlow Switch主要由流表(包含多个流表项)和安全信道(与Controller通信),还有其他端口用作包转发。每条流表项相当于一条规则,匹配特定的流(一定时间内具有相同属性的报文集合),定义转发动作。OpenFlow1.1后支持多级流表,按优先级大小遍历流表集,匹配特定的流并做转发动作。另外,OpenFlow还定义了其转发动作。需要注意的是,由于流是动态变化的,大部分流表项都需要不断变化,这需要与Controller通信,让Controller下发流表项。目前Switch的流行容量还比较小。

OpenFlow Controller通过OpenFlow协议与Switch进行通信。在分布式Controller的模型下,对于同一台Switch连接的所有Controller,Controller有以下三种角色,第一是Master,对Switch拥有完全的操作权限;第二是Slave,对Switch只有读取状态和被动收取信息的权限,但若Master死掉了,其中一台Salve就会被选举为Master(OpenFlow没有具体定义如何做,这也可以看出其不成熟)。第三是Equal,可以看作所有Controller都拥有Master的权限。

总的来说,OpenFlow标准是一个灵活的简单的标准,没有任何状态,不认识任何协议和设备,它要做的只有一件事,Match——Action。但是它对芯片的要求很高,目前并没有专门的OpenFlow芯片。

提到OpenFlow,就不得不提OF-Config。OpenFlow只定义了Match和Action,但没有去管理涉及到的相关资源。OF-Config对OpenFlow所需要的最基本的资源进行了配置和管理,是OPenFlow的一个补充。但无论OpenFlow还是OF-Config,目前都很不成熟,需要完善和拓展。

最后说说基于OpenFlow的SDN现状。目前市面上出现的OpenFlow交换机大多是Hybrid交换机(既支持OpenFlow协议也支持传统功能)。一般做法是在原有交换机的基础上,将OpenFlow作为一个新功能加进去。还有的是纯OpenFlow交换机(只支持OpenFlow协议)。有些会在OpenFlow的基础上,在流匹配时引入缺省匹配,当所有流表项都不匹配时,匹配缺省匹配项,跳到传统功能上。

另外,不同厂商的Switch和Controller不一定兼容,因为现在还没有一个被广泛认可的协议,以后也可能没有。有的是开放的编程接口,这样每个用户都可以定制自己的Controller,一定程度上降低厂商的封锁。

总结,这周看的更多是全面地认识和了解SDN,并没有深入技术细节,这样的方式更适合本人的学习。

《深度解析SDN》学习小结的更多相关文章

  1. 深度解析SDN——利益、战略、技术、实践(实战派专家力作,业内众多专家推荐)

    深度解析SDN——利益.战略.技术.实践(实战派专家力作,业内众多专家推荐) 张卫峰 编   ISBN 978-7-121-21821-7 2013年11月出版 定价:59.00元 232页 16开 ...

  2. 《Spring源码深度解析》学习笔记——Spring的整体架构与容器的基本实现

    pring框架是一个分层架构,它包含一系列的功能要素,并被分为大约20个模块,如下图所示 这些模块被总结为以下几个部分: Core Container Core Container(核心容器)包含有C ...

  3. C++深度解析教程学习笔记(6)对象的构造和销毁

    1. 对象的初始化 (1)从程序设计的角度看,对象只是变量,因此: ①在栈上创建对象时,成员变量初始化为随机值 ②在堆上创建对象时,成员变量初始化为随机值 ③在静态存储区创建对象时,成员变量初始化为 ...

  4. C++深度解析教程学习笔记(5)面向对象

    1. 面向对象基本概念 (1)面向对象的意义在于 ①将日常生活中习惯的思维方式引入程序设计中 ②将需求中的概念直观的映射到解决方案中 ③以模块为中心构建可复用的软件系统 ④提高软件产品的可维护性和可扩 ...

  5. C++深度解析教程学习笔记(4)C++中的新成员

    1. 动态内存分配 (1)C++通过 new 关键字进行动态内存申请,是以类型为单位来申请空间大小的 (2)delete 关键字用于内存释放 ▲注意释放数组时要加[],否则只释放这个数组中的第 1 个 ...

  6. C++深度解析教程学习笔记(3)函数的扩展

    1.内联函数 1.1.常量与宏的回顾 (1)C++中的 const 常量可以替代宏常数定义,如: ; //等价于 #define A 3 (2)C++中是否有解决方案,可以用来替代宏代码片段呢? 1. ...

  7. C++深度解析教程学习笔记(2)C++中的引用

    1.C++中的引用 (1)变量名的回顾 ①变量是一段实际连续存储空间的别名,程序中通过变量来申请并命名存储空间 ②通过变量的名字可以使用存储空间.(变量的名字就是变量的值,&变量名是取地址操作 ...

  8. C++深度解析教程学习笔记(1)C到C++的升级

    1.现代软件产品架构图 比如商场收银系统 2.C 到 C++ 的升级 2.1变量的定义 C++中所有的变量都可以在需要使用时再定义,而 C 语言中的变量都必须在作用域开始位置定义. 2.2 regis ...

  9. 深度估计&平面检测小结

    https://yq.aliyun.com/ziliao/582885 最近一段时间已知忙着赶图像分析与理解的项目,在三个星期内强行接触了CNN,MRF,Caffe,openCV在内的很多东西.现在项 ...

随机推荐

  1. Mysql + keepalived 实现双主热备读写分离【转】

    Mysql + keepalived 实现双主热备读写分离 2013年6月16日frankwong发表评论阅读评论   架构图 系统:CentOS6.4_X86_64软件版本:Mysql-5.6.12 ...

  2. SQL优化(Oracle)

    (转)SQL优化原则 一.问题的提出 在应用系统开发初期.因为开发数据库数据比較少.对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,可是假设将应用系统提交实际应用后,随着数 ...

  3. 拿到手机ip住址

    转载自:http://blog.csdn.net/showhilllee/article/details/8746114 貌似ASI里获取ip地址的链接不能够了.也曾试过whatismyip,在其站点 ...

  4. Android 带你玩转实现游戏2048 其实2048只是个普通的控件(转)

    1.概述 博主本想踏入游戏开放行业,无奈水太深,不会游泳:于是乎,只能继续开发应用,但是原生Android也能开发游戏么,2048.像素鸟.别踩什么来着:今天给大家带来一篇2048的开发篇,别怕不分上 ...

  5. 固定textview大小,根据文字多少调整字体自适应textview大小

    /** * 文件名 AutoResizeTextView.java * 包含类名列表 com.haier.internet.conditioner.haierinternetconditioner2. ...

  6. iis7 发布mvc 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容

    iis 7上发布mvc报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 提示里面的解决方法是: 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在. 使用 II ...

  7. FastReport 动态修改连接字符串

    代码如下: Report rp = new Report(); rp.Load(@"Print\aa.frx"); rp.Dictionary.Connections[0].Con ...

  8. vs连接mysql

    1.打开vs2012在aspx中添加一个Grid view 控件,,. 2,选择新建数据源. 3,选择数据库. 4,选择新建连接. 5,更改成mysql连接. 6,这里的Server name 是你自 ...

  9. activiti总结

    1.activiti如何修改登录用户名?在哪个数据库里面添加. 2.activiti的启动和部署在http://activiti.org/userguide/index.html#demo.setup ...

  10. stax解析XML-----Demo

    Demo public void staxDemo() throws Exception { XMLStreamReader xml= XMLInputFactory.newInstance().cr ...