摘要:

本白皮书提出了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. SQL的循环嵌套算法:NLP算法和BNLP算法

    MySQL的JOIN(二):JOIN原理 表连接算法 Nested Loop Join(NLJ)算法: 首先介绍一种基础算法:NLJ,嵌套循环算法.循环外层是驱动表,循坏内层是被驱动表.驱动表会驱动被 ...

  2. 那些年,我们见过的 Java 服务端乱象

    导读 查尔斯·狄更斯在<双城记>中写道:“这是一个最好的时代,也是一个最坏的时代.” 移动互联网的快速发展,出现了许多新机遇,很多创业者伺机而动:随着行业竞争加剧,互联网红利逐渐消失,很多 ...

  3. CSS(下)

    目录 CSS(下) CSS属性相关 宽和高 字体属性 背景属性 边框 border-radius display属性 CSS盒子模型 margin外边距 padding内填充 浮动(float) 限制 ...

  4. Codeforces 1190D. Tokitsukaze and Strange Rectangle

    传送门 注意到矩形往上是无限的,考虑把点按 $y$ 从大到小考虑 对于枚举到高度为 $h$ 的点,设当前高度大于等于 $h$ 的点的所有点的不同的 $x$ 坐标数量为 $cnt$ 那么对于这一层高度 ...

  5. 服务器部署Java Web及微信开发调试

    参考摘抄: 阿里云部署Java网站和微信开发调试心得技巧(上):https://www.imooc.com/article/20583 阿里云部署Java网站和微信开发调试心得技巧(下):https: ...

  6. 前端Ajax通过设置 timeout 参数,轮询后台API

    因为我连接的数据库在台湾,相距较远,所以conn.Open()方法打开极慢.前端Ajax访问API时,API的数据还未返回,前端Ajax访问已经超时. 所以设置一个轮询,设置相隔多少秒之后进行一次查询 ...

  7. react 不同环境配置不同域名

    npm eject 先将配置文件暴露出来 将scripts中的build文件复制一份,改名为你需要的名字 将其中的 process.env.NODE_ENV 赋值为你需要的环境 在package.js ...

  8. 写两个线程,一个线程打印1-52,另一个线程打印A-Z,打印顺序为12A34B56C......5152Z

    题目: 写两个线程,一个线程打印1-52,另一个线程打印A-Z,打印顺序为12A34B56C......5152Z.要求用线程间的通信. /** * 写两个线程,第一个线程打印1-52,第二个线程打印 ...

  9. mock.js 模拟数据

    1. 劫持请求,返回模拟数据: 用于前后台对接前数据模拟 相比于静态json文件而言:代码完成后不必修改源文件对应的接口调用.可模拟增删改查 2.实例代码 <!doctype html> ...

  10. OpenSSL(1)密钥和证书管理

    OpenSSL是一个开源项目,包括密码库和SSL/TLS工具集. 从项目的官方站点可以看到: OpenSSL项目是安全套接字层( secure sockets layer, SSL)和传输层安全( t ...