摘要:

本白皮书提出了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. ABC143F Distinct Numbers

    这道题非常好.其思想类似于 $O(n \log n)$ 求最长上升子序列的算法. hint:考虑固定操作次数 $o$,$k$ 最大可取到多少? int n; scan(n); vi a(n); sca ...

  2. C++多线程基础学习笔记(一)

    下面分三个方面多线程技术的必须掌握一些基本知识. 1.进程 2.线程 3.并发 (1)进程 一个可执行程序运行起来了,即为创建了一个进程.如在电脑上打开了word,就创建了一个word进程,打开QQ, ...

  3. 2019中山纪念中学夏令营-Day14 图论初步【dijkstra算法求最短路】

    Dijkstra是我学会的第一个最短路算法,为什么不先去学SPFA呢?因为我在luogu上翻到了一张比较神奇的图: 关于SPFA -它死了 以及网上还有各位大佬的经验告诉我:SPFA这玩意很容易被卡. ...

  4. Radio stations CodeForces - 762E (cdq分治)

    大意: 给定$n$个三元组$(x,r,f)$, 求所有对$(i,j)$, 满足$i<j, |f_i-f_j|\le k, min(r_i,r_j)\ge |x_i-x_j|$ 按$r$降序排, ...

  5. 关于mysql-5.7.13-winx64服务无法启动的解决方法

    从官网上下载免安装的5.7的mysql,但是无法启动mysql服务.原因是下载下来的mysql没有data这个文件夹,故需要在cmd下先执行mysql --initialize -insecure命令 ...

  6. Java常见数据结构

    HashMap深入浅出 HashMap数据结构 HashMap的本质就是一个数组加链表,数组默认长度是16,存储的元素达到总长度的75%就会扩容一倍.map.put(key,val),实际上就是根据h ...

  7. WPF ListView多行显示

    //前台 <ListView Margin="14,152,12,74" Name="lvList" SelectionMode="Multip ...

  8. jq上滑加载更多

    html 结构 <div id="main"> <ul class="order-list" id="list_box"& ...

  9. React前端有钱途吗?《React+Redux前端开发实战》学起来

    再不学React就真的跟不上大前端的形式了,目前几乎所有前端的招聘条件都是精通React者优先,看看拉勾网的React薪资,都是15K-20K,这个暑假,必须动起来了. 如果你熟悉JavaScript ...

  10. Vue自定义组件以及组件通信的几种方式

    本帖子来源:小贤笔记 功能 组件 (Component) 是 Vue.js 最强大的功能之一.组件可以扩展 HTML 元素,封装可重用的代码.在较高层面上,组件是自定义元素,Vue.js 的编译器为它 ...