摘要:

本白皮书提出了OpenFlow——研究人员在他们每天使用的网络中运行实验协议的一种方式。 OpenFlow基于以太网交换机,具有内部流表以及用于添加和删除流条目的标准化接口。我们的目标是鼓励网络供应商将OpenFlow添加到他们的交换机产品中,以部署在大学校园主干网和布线室中。我们认为OpenFlow是一个务实的折衷方案:一方面,它允许研究人员以一致的方式以线速和高端口密度在异构交换机上进行实验;另一方面,供应商无需公开其交换机的内部工作原理。

背景/问题:

如今,几乎没有实际方法可以在足够现实的环境中(例如,大规模承载实际流量)尝试新的网络协议,更没有获得广泛部署所需的信心,来自网络研究界的大多数新想法都未经试用和测试。因此,人们普遍认为网络基础设施已经“僵化”。认识到这个问题之后,网络社区正在努力开发可编程网络,例如GENI。

可编程网络需要可编程交换机和路由器(使用虚拟化),它们可以同时处理多个隔离实验网络的数据包。例如,在GENI中,设想给研究人员分配整个网络上的一部分资源,该资源包括一部分网络链路,分组处理元件(例如路由器)和终端主机,研究人员对切片进行编程使其表现出所需的效果。一个切片可以跨越整个骨干网,接入网,大学校园,工业研究实验室,并包括配线间,无线网络和传感器网络。虚拟的可编程网络可以降低新思想的进入门槛,从而提高网络基础架构的创新速度,但是全国性设施的计划雄心勃勃的却要花费很高的成本,并且部署它们也将花费数年。

解决方法:

因此,商业解决方案过于封闭和僵化,研究解决方案要么性能不足,要么价格昂贵, 具有完全通用性的研究解决方案似乎不可能克服其性能或成本限制。

一种更有前途的方法是在通用性上取得妥协,并寻求一定程度的转换灵活性:

  • 适合高性能和低成本实施

  • 能够支持广泛的研究

  • 确保将实验流量与生产流量隔离

  • 符合供应商对封闭平台的需求

本文介绍了OpenFlow交换机-一种规范,它是最初试图满足这四个目标的规范。

实现细节:

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

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

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

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

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

  • 定义流的数据包头

  • 定义数据包应如何处理的动作

  • 统计信息,统计数据的数量,每个流的数据包和字节,以及自最后一个数据包以来与该流匹配的时间(以帮助删除非活动流)。

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

这是在OpenFlow交换机规范中找出来的流表匹配的过程。

流表条目由其匹配字段和优先级标识:匹配字段和优先级共同构成了特定流表中的唯一流条目。

管道处理始终从第一个流表的入口处理开始:必须首先将包与流表0的流条目进行匹配(请参见图3)。可以使用其他入口流表,具体取决于第一个表中的匹配结果。

如果流条目的所有匹配字段都与数据包中的相应报头字段和管道字段匹配,则数据包与流条目匹配。如果数据包与流表中的流条目不匹配,则表示表未命中,表未命中的行为取决于表配置。

每个流条目包含一组指令,当数据包与该条目匹配时将执行这些指令,这些指令导致数据包,操作集和/或管道处理的更改(请参见上图)。

流条目可以使用与特定匹配关联的Write-Action指令或Clear-Action指令来修改操作集。

论文阅读:OpenFlow: Enabling Innovation in Campus Networks的更多相关文章

  1. OpenFlow:Enabling Innovation in Campus Networks

    SDN领域,OpenFLow现在已经成为了广泛使用的南向接口协议.若想好好学习SDN,在这个领域有所进步,需要熟悉OpenFlow协议.我最近找了篇有关OpenFLow的论文,发现最早该协议是在Sig ...

  2. 【论文阅读】Learning Dual Convolutional Neural Networks for Low-Level Vision

    论文阅读([CVPR2018]Jinshan Pan - Learning Dual Convolutional Neural Networks for Low-Level Vision) 本文针对低 ...

  3. 论文阅读笔记六十一:Selective Kernel Networks(SKNet CVPR2019)

    论文原址:https://arxiv.org/pdf/1903.06586.pdf github: https://github.com/implus/SKNet 摘要 在标准的卷积网络中,每层网络中 ...

  4. 论文阅读笔记五:U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)

    前面介绍了两个文本检测的网络,分别为RRCNN和CTPN,接下来鄙人会介绍语义分割的一些经典网络,同样也是论文+代码实现的过程,这里记录一下自己学到的东西,首先从论文下手吧. 英文论文原文地址:htt ...

  5. [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks

    [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...

  6. [论文阅读笔记] node2vec Scalable Feature Learning for Networks

    [论文阅读笔记] node2vec:Scalable Feature Learning for Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 由于DeepWal ...

  7. [论文阅读笔记] Adversarial Learning on Heterogeneous Information Networks

    [论文阅读笔记] Adversarial Learning on Heterogeneous Information Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问 ...

  8. 《Learning to warm up cold Item Embeddings for Cold-start Recommendation with Meta Scaling and Shifting Networks》论文阅读

    <Learning to warm up cold Item Embeddings for Cold-start Recommendation with Meta Scaling and Shi ...

  9. [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)

    论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...

随机推荐

  1. 认识并学会springCloud的使用

    SpringCloud将现在一些流行的技术整合到一起,实现如:配置管理,服务发现,智能路由,负载均衡,熔断器,控制总线,集群状态等等功能.主要涉及的组件有 netflix Eureka:注册中心 Zu ...

  2. 你写的 Java 代码是如何一步步输出结果的? (转)

    出处:  一步步解析java执行内幕 对于任何一门语言,要想达到精通的水平,研究它的执行原理(或者叫底层机制)不失为一种良好的方式.在本篇文章中,将重点研究java源代码的执行原理,即从程 序员编写J ...

  3. 牛客 2C 圈圈

    题面: shy有一个队列a[1], a[2],…,a[n].现在我们不停地把头上的元素放到尾巴上.在这过程中我们会得到n个不同的队列,每个队列都是a[k],a[k+1],…,a[n],a[1],…,a ...

  4. [Next] 四.在next中引入redux

    添加 redux 写过 react 稍微复杂一些应用的话,应该都对 redux(mobx)有一定的了解.这次将 redux 引入到项目中 因为之前写项目的习惯,更喜欢使用 redux-thunk 改写 ...

  5. Jquery 控制table中的checkbox 相关选中事件

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. java对象的几种创建过程

    java对象的创建过程 (1)用new 语句创建对象,这是最常用的创建对象方法. 下面用一个简单的存在继承关系的实例的创建,来叙述对象创建过程中的细节 概括如下: 执行顺序:(优先级从高到低.)静态代 ...

  7. 这38个小技巧告诉你如何快速学习MySQL数据库

    1.如何快速掌握MySQL? ⑴培养兴趣兴趣是最好的老师,不论学习什么知识,兴趣都可以极大地提高学习效率.当然学习MySQL 5.6也不例外.⑵夯实基础计算机领域的技术非常强调基础,刚开始学习可能还认 ...

  8. 淘宝flexible.js的使用

    首先大家最关注的怎么使用,原理不原理是后面的事 比如设计稿量来的宽度是100px 那么我们布局的时候,就这么写{width:1.3333rem},1.3333rem是由100/75算出来的,以此类推2 ...

  9. Clang调试CUDA代码

    Clang调试CUDA代码全过程 有空再进行编辑,最近有点忙,抱歉 使用的llvm4.0+Clang4.0的版本,依据的是上次发的llvm4.0和clang4.0源码安装的教程https://www. ...

  10. Linux 配置:Xmanager连接Linux图形界面

    想要在远程终端使用用图形界面来操作和控制Linux服务器,就在windows下像使用MSTSC一样.linux通过XDMCP来提供这种支持,我们只要用一个终端仿真软件如:xmanager就可以实现,但 ...