论文阅读:OpenFlow: Enabling Innovation in Campus Networks
摘要:
本白皮书提出了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的更多相关文章
- OpenFlow:Enabling Innovation in Campus Networks
SDN领域,OpenFLow现在已经成为了广泛使用的南向接口协议.若想好好学习SDN,在这个领域有所进步,需要熟悉OpenFlow协议.我最近找了篇有关OpenFLow的论文,发现最早该协议是在Sig ...
- 【论文阅读】Learning Dual Convolutional Neural Networks for Low-Level Vision
论文阅读([CVPR2018]Jinshan Pan - Learning Dual Convolutional Neural Networks for Low-Level Vision) 本文针对低 ...
- 论文阅读笔记六十一:Selective Kernel Networks(SKNet CVPR2019)
论文原址:https://arxiv.org/pdf/1903.06586.pdf github: https://github.com/implus/SKNet 摘要 在标准的卷积网络中,每层网络中 ...
- 论文阅读笔记五:U-Net: Convolutional Networks for Biomedical Image Segmentation(CVPR2015)
前面介绍了两个文本检测的网络,分别为RRCNN和CTPN,接下来鄙人会介绍语义分割的一些经典网络,同样也是论文+代码实现的过程,这里记录一下自己学到的东西,首先从论文下手吧. 英文论文原文地址:htt ...
- [论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks
[论文阅读笔记] metapath2vec: Scalable Representation Learning for Heterogeneous Networks 本文结构 解决问题 主要贡献 算法 ...
- [论文阅读笔记] node2vec Scalable Feature Learning for Networks
[论文阅读笔记] node2vec:Scalable Feature Learning for Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问题 由于DeepWal ...
- [论文阅读笔记] Adversarial Learning on Heterogeneous Information Networks
[论文阅读笔记] Adversarial Learning on Heterogeneous Information Networks 本文结构 解决问题 主要贡献 算法原理 参考文献 (1) 解决问 ...
- 《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 ...
- [论文阅读] MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications (MobileNet)
论文地址:MobileNets: Efficient Convolutional Neural Networks for Mobile Vision Applications 本文提出的模型叫Mobi ...
随机推荐
- CentOS7安装Git-2.22.1
1.Git: 分布式版本控制系统(最初用于Linux),每个人的电脑上都是一个完整的版本库,具有强大的分支管理. 自己可以在脱机环境查看开发的版本历史 多人开发时如果充当中央仓库的Git仓库挂了,任何 ...
- Java switch case 语句
switch case 语句判断一个变量与一系列值中某个值是否相等,每个值称为一个分支. 语法 switch(expression){ case value : //语句 break; //可选 ca ...
- 红色警戒2CE修改教程
在大学的时候特别喜欢玩游戏,尤其偏爱单机游戏.在玩一些单机游戏的时候,特意使用了一些修改工具.本来是打算做成一个系列的,但是现在由于时间问题,仅介绍一些.(大概包括rimworld,饥荒,放逐之城,缺 ...
- Label 自适应文本(StoryBoard/xib)
To make your label automatically resize height you need to do following: Set layout constrains for l ...
- python之itertools
Python的内建模块itertools提供了非常有用的用于操作迭代对象的函数. count 创建一个迭代器,生成从n开始的连续整数,如果忽略n,则从0开始计算(注意:此迭代器不支持长整数) 如果超出 ...
- C# 封装返回类
using System; using System.Collections.Generic; using System.Runtime.CompilerServices; using System. ...
- 第十篇.2、python并发编程之多进程
一 multiprocessing模块介绍 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.P ...
- 实验吧flag整理
奇怪的短信 flagissimple 围在栅栏里的爱ILOVESHIYANBAR. 古典密码flag:CTF{COULDYOUEXCHANGETHEINFORMATION} The Flash-14F ...
- vi 必须要学会的技能
vi与vim vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,它的强大不逊色于任何最新的文本编辑器.他是我们使用Linux系统不能缺少的工具.由于对 ...
- IO模型(epoll)--详解-01
写在前面 从事服务端开发,少不了要接触网络编程.epoll作为linux下高性能网络服务器的必备技术至关重要,nginx.redis.skynet和大部分游戏服务器都使用到这一多路复用技术. 本文会从 ...