一、背景

随着网络的快速发展和普及,设备和协议的复杂性导致了网络实验的困难。当时,几乎没有实际方法可以在足够现实的环境中尝试新的网络协议,来自网络学术、产业界的大多数新想法都未经试用和测试。因此,人们普遍认为网络基础设施已经“僵化”。认识到这个问题之后,人们便努力朝着开发可编程网络,例如GENI。

构建实验网络是在进行网络相关研究时需要完成的一项重要工作。以往构建网络时,普遍采用的方法是将一定台数的计算机进行物理连接。但随着VMware 等虚拟软件的上市和普及,通过组合使用虚拟机创建虚拟平台,构建实验环境的方法逐渐成为了主流。像这样构建的虚拟实验环境中,比较著名的有提供全球平台、支持广域分布式环境的PlanetLab;也有运用校园网,不通过整个互联网,而只是在特定的范围内虚拟地创建出来的网络。

以美国为中心,从零开始重新创建网络的新一代网络技术研究已成为了近几年来的发展趋势。虽然技术人员已经提出了各种新一代网络技术的方案,但在进行这些新技术的实验时,如果有某种架构能够实现比以往互联网通信设备更加精确的控制,则非常方便。

市面上现有的交换机设备内部并不公开,也就是非开源,一方面担心被更改的内部结构做新的实验会导致网络崩溃,更重要的是开源无疑降低了竞争者的门槛。

因此,商业解决方案过于封闭和僵化,研究解决方案要么性能不足,要么成本过高,研究完全的通用性解决方案似乎不能克服其性能或成本限制。作者本人在成本和性能方面之间做了折中,认为解决方案应具有以下特点:

  1. 易于高性能和低成本实现。
  2. 能够支持广泛的研究。
  3. 确保将实验流量与生产流量隔离。
  4. 符合供应商对封闭平台的需求。

在此背景下,为了更轻松地构建各种实验网络,斯坦福大学开发了OpenFlow。实际上,在由美国NSF提供支持的大规模虚拟实验网络环境GENI项目中就使用了OpenFlow。

二、问题

  1. 如何不改变现有网络硬件结构,网络设备供应商不开源的基础上,实现异构网络上进行统一高效的开发实验,提高网络的可创新性。
  2. 如何将实验数据流和生产数据流分隔开并满足高性能低成本

三、解决方案总结

3.1 OpenFlow组件

OpenFlow网络由OpenFlow网络设备(OpenFlow 交换机)、控制器(OpenFlow控制器)、用于连接设备和控制器的安全通道(Secure Channel)以及OpenFlow表项组成。其中,OpenFlow 交换机设备和OpenFlow控制器是组成OpenFlow网络的实体,要求能够支持安全信道和OpenFlow表项。

OpenFlow交换机至少由三部分组成:

流表:每个流条目都有一个相关联的动作,以告知开关如何处理流程

流表中的条目具有三个字段:

  1. 定义流的数据包头
  2. 定义数据包应如何处理的动作
  3. 统计信息,统计数据的数量,每个流的数据包和字节,以及自最后一个数据包以来与该流匹配的时间(以帮助删除非活动流)。

在“类型0”交换机中,流头是表1中所示的10元组。TCP流可以由所有十个字段指定,而IP流在其定义中可能不包括传输端口。 每个标头字段可以是通配符,以允许流的聚合,例如仅定义VLAN ID的流将应用于特定VLAN上的所有通信。

将交换机连接到远程控制过程(称为控制器)的安全通道,允许使用以下命令在控制器和交换机之间发送命令和数据包

OpenFlow协议:它为控制器与交换机进行通信提供了一种开放的标准方式。通过指定标准接口(OpenFlow协议),可以从外部定义流表中的条目,OpenFlow交换机避免了研究人员对交换机进行编程的需要。

3.2流表处理流程

OpenFlow规范中定义了流水线式的处理流程,报文匹配处理流程如下图所示:

当报文进入Switch后,必须从最小的Flow Table开始依次匹配。Flow Table可以按次序从小到大越级跳转,但不能从某一Flow Table向前跳转至编号更小的Flow Table。当报文成功匹配一条Flow Entry后,将首先更新该Flow Entry对应的统计数据(如成功匹配数据包总数目和总字节数等),然后根据Flow Table中的指令进行相应操作,比如跳转至后续某一Flow Table继续处理,修改或者立即执行该数据包对应的Action Set等。当数据包已经处于最后一个Flow Table时,其对应的Action Set中的所有Action将被执行,包括转发至某一端口,修改数据包某一字段,丢弃数据包等。具体实现时,OpenFlow交换机还需要对匹配表项次数进行计数、更新匹配集和元数据等操作。

下图为流表匹配流程示意图。

3.3 实验与生产分流方法

所有的流表都由同一个控制器管理,OpenFlow协议允许一个交换机由两个或多个控制器控制,以提高性能或健壮性。我们的目标是使实验能够在现有的生产网络中与常规流量和应用程序一起进行。因此,为了赢得网络管理员的信任,启用OpenFlow的交换机必须将实验流量(由流表处理)与生产流量(由交换机的正常第2层和第3层管道处理)隔离开来。

实现这种分离有两种方法:

  • 一是增加第四个动作:通过交换机的正常处理管道转发此流的数据包
  • 另一个是为实验和生产流量定义单独的VLAN集

这两种方法都允许交换机以通常的方式处理不属于实验的正常生产流量,所有启用OpenFlow-enabled的交换机都需要支持一种或另一种方法,有些将同时支持这两种方法。

控制器代表实验从流表中添加和删除流条目,例如,静态控制器可能是一个运行在PC上的简单应用程序,用于静态地建立流,以便在实验期间将一组测试的计算机互连。在这种情况下,流类似于当前网络中的VLAN——提供了一种简单的机制来将实验流量与生产网络隔离。从这个角度OpenFlow是Vlan的一个泛化。

四、方案理解

核心思想就是将原本完全由交换机和路由器控制的数据包转发过程,转化为由OpenFlow交换机和控制服务器分别完成的独立过程。

转变背后进行的实际上是控制权的更迭:传统网络中数据包的流向是人为指定的,虽然交换机、路由器拥有控制权,却没有数据流的概念,只进行数据包级别的交换;而在OpenFlow网络中,统一的控制服务器取代路由,决定了所有数据包在网络中传输路径。

OpenFlow交换机会在本地维护一个与转发表不同的流表(Flow Table),如果要转发的数据包在流表中有对应项,则直接进行快速转发;若流表中没有此项,数据包就会被发送到控制服务器进行传输路径的确认,再根据下发结果进行转发。

openflow阅读感悟相关推荐

  1. 《资治通鉴》读书笔记及阅读感悟2200字

    <资治通鉴>读书笔记及阅读感悟2200字: 1.用夏桀,商纣暴虐昏君和商汤,周武王仁德明君做比较,因为人民归心,上天赐名要不然就永远要恪守臣节至死不渝. 又用商朝的微子取代纣王,商朝可以永 ...

  2. linux内核 阅读,Linux内核阅读感悟

    <Linux内核阅读感悟>由会员分享,可在线阅读,更多相关<Linux内核阅读感悟(261页珍藏版)>请在人人文库网上搜索. 1.contents表格我读了你的想法.2读核感悟 ...

  3. 心理学类之人性的弱点阅读感悟

    本来项目管理书籍篇是打算以读后感的方式写出来的,再三斟酌以及结合自身能力考虑,遂决定以书籍感悟的方式来写这类相关的博客.(博客相关所有书籍都不附有相关下载链接) 全书要点 待人的基本技巧 不要批评,责 ...

  4. 《每个人的商学院》全套书籍阅读感悟

    本系列书籍是由刘润老师编写的,一共八本,分别是: 1.商业基础:三大部分(商业的起点.商业的本质.商业的视角),共8个章节: 2.商业实战(上):两大部分(营销.渠道),共8个章节: 3.商业实战(下 ...

  5. 《乔布斯传》阅读感悟

    近日,花了10元钱买了一本<乔布斯传记>,去年刚出版时,就想买一本,可是价格太贵了点,今年在书摊上看到这本书,就买了一本,读起来,感悟很深,在此做些个人的感悟和笔记. 读人物传记最好的方法 ...

  6. “增长黑客--如何低成本实现爆发式成长”阅读感悟

    今天大概翻了一下这本书,收获不小,现有一些感悟与大家分享一下. 现在是大众创新万众创业的时代,需求.产品和创意是创业的核心因素之一,用户.利润和发展则是创业的另一个核心因素.如何获取用户.留存用户.发 ...

  7. 第0周学习资源阅读感悟

    看完了新定义的师生关系,不禁感慨现在似乎越来越多的师生关系都是按照"互相照应,图省事"这样的模式发展的,长此以往,读大学接受感等教育似乎就失去了其存在的意义.同时,大学生以自学为主 ...

  8. linux内核阅读感悟,读Kernel感悟-Linux内核启动-从hello world说起

    内核是从哪里开始执行的呢?几乎任何一本源代码分析的书都会给出详细的答案.不过,我试图从一个不同的角度(一个初学者的角度)来叙述,而不是一上来就给出答案.从熟悉的事物入手,慢慢接近陌生的事物,这是比较常 ...

  9. Sql Hacks 阅读感悟——数值处理

    SQL基础:<SQL HACKS>第5章--数值处理,总共列举了17个tips,计算结果集的乘积.计算累加和.包含Join遗忘的行等,下述为我对这17个tips的评析. #24 计算结果集 ...

最新文章

  1. 8 场 5 胜,微服务 VS 单体架构
  2. python主成分分析相关系数_python如何进行主成分分析
  3. 八数码问题及A*算法
  4. SQLite在C#的使用
  5. Flutter 填坑之 表单数据哪里去了?
  6. Webkit for android
  7. nohup xxx 后台进程关闭,可以这样避免
  8. AutoCompleteExtender智能扩展实例
  9. 2018-2019-1 20165227 20165228 20165237 实验五 通讯协议设计
  10. java多线程--容器类和其他工具类
  11. 获取OlapConnection连接
  12. PHP解密PHP加密sg11加密sg11解密全网最厚道的SG11解密方法sg11解密 php解密 SourceGuardian解密sg_load解密去除域名IP授权
  13. 金额转换,阿拉伯数字转换成中国传统形式
  14. 中国象棋棋盘java_JAVA中用程序绘制国际象棋与中国象棋棋盘
  15. Website Watchman for Mac(mac网站内容监控工具)
  16. n阶矩阵乘以n阶矩阵的朴素做法
  17. VAPS XT开发入门教程00:基本介绍
  18. 聊聊 Redis 使用场景 1
  19. linux软件包管理(RPM)简单介绍
  20. 吴恩达Deeplearning第二课代码bug修正大全

热门文章

  1. 计算机毕设Python+Vue养老院老人日常生活管理系统(程序+LW+部署)
  2. cos php sdk v5使用,GitHub - lixiang1216/cos-php-sdk-v5: cos-php-sdk-v5
  3. 5分钟熟悉“单臂路由”(超详细解读,看到就是赚到)
  4. 多线程——Thread类的基本用法
  5. 数据库乐观锁和悲观锁
  6. 计算机试题能在手机上做吗,万题库pc_万题库为什么只能用手机版的而不能用电脑做题_淘题吧...
  7. 二建建筑工程继续教育考试答案、二建房建继续教育题库从哪找?
  8. 蓝桥杯 未名湖边的烦恼
  9. App推广必读:怎样通过统计工具来评估渠道的用户质量
  10. 按图片搜索(item_search_img)API