论文阅读:Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN
摘要:
在软件定义网络中,控制平面在物理上与转发平面分离,控制软件使用开放接口(例如OpenFlow)对转发平面(例如,交换机和路由器)进行编程。
本文旨在克服当前交换芯片和OpenFlow协议的两个局限性:
当前的硬件交换机非常严格,仅允许在一组固定的字段上进行“匹配操作”处理
OpenFlow规范仅定义了有限的数据包处理动作
我们提出了RMT(可重配置匹配表)模型,这是一种受RISC启发的,用于交换芯片的新流水线体系结构。我们确定了一些基本的动作原语集,以指定在硬件中如何处理标头。 RMT允许在不更改硬件的情况下在现场更改转发平面,像在OpenFlow中一样,程序员可以指定多个宽度和深度任意的匹配表,并且只受整体资源限制,并且每个表都可以配置为在任意字段上进行匹配。但是,与OpenFlow相比,RMT允许程序员更全面地修改所有标头字段。
我们的论文描述了实现RMT模型的64端口10 Gb / s交换芯片的设计,具体设计表明,灵活的OpenFlow硬件交换机实施几乎不需要额外的成本或功能即可实现。
背景/问题:
良好的抽象在计算机系统中至关重要,因为它们可以使系统处理变化并简化下一个更高层的编程。关键的抽象,网络已经取得了进步——TCP提供了端点之间连接队列的抽象,IP提供了从端点到网络边缘的简单数据报抽象, 但是网络内的路由和转发仍然是路由协议和转发行为的混乱综合体,控制和转发平面在封闭的垂直集成内部始终交织在一起。
SDN转发平面的编程控制允许网络所有者在复制现有协议行为的同时向网络添加新功能,OpenFlow作为控制平面和转发平面之间的接口,已经成为众所周知的基于Match+Action的方法。
在通用CPU上的软件中实现Match+Action并不难,但是对于当今大家希望达到的速度,大约1TB/s,我们需要专用硬件的并行性。由于交换芯片的交换速度比CPU快两个数量级,比网络处理器快一个数量级,且这种趋势不太可能改变。 因此,我们需要考虑如何在硬件中实施Match-Action,以利用流水线和并行性,同时综合考虑片上表存储器的限制。
在可编程性和速度之间存在自然的折衷,如今,支持新功能经常需要更换硬件。 如果Match-Action硬件允许只在字段中进行足够的重新配置,以便可以在运行时支持新型的数据包处理,那么它将改变我们对网络编程的看法。 这里真正的问题是,是否可以在不牺牲速度的情况下以合理的成本完成这项工作。
这时有两种可选择的方式:
单个匹配表:最简单的方法是在我们称为SMT(单个匹配表)模型中抽象匹配语义。在SMT中,控制器告诉交换机将数据包头字段的任何集合与单个匹配表中的条目进行匹配,SMT假定解析器定位并提取正确的头字段以与表匹配。然而,仔细研究表明,对于经典问题SMT模型的使用成本很高,该表需要存储头的每种组合,在很多情况下会造成浪费。
多个匹配表:MMT(多个匹配表)是SMT模型的自然改进。 MMT在一项重要的意义上超越了SMT,它允许多个较小的匹配表通过一个分组字段的子集进行匹配,对照表排列成阶段的流水线。通过修改分组报头或传递给阶段j的其他信息,阶段i可以使阶段j的处理依赖于阶段i <j的处理。但现有的交换芯片实现的表数量很少,在制造芯片时会设置宽度,深度和执行顺序,这严重限制了灵活性。另外,交换芯片仅提供了与常见处理行为相对应的有限动作列表,例如,转发,丢弃,递减TTL,推送VLAN或MPLS标头以及GRE封装。到目前为止,OpenFlow仅指定其中的一个子集,这个动作集不容易扩展,也不是很抽象。
解决办法:
可重配置匹配表:我们探索了一种称为RMT(可重配置匹配表)的MMT模型的改进。像MMT一样,理想的RMT将允许一组管线阶段,每个阶段具有任意深度和宽度的匹配表。
RMT超越了MMT,它允许通过以下四种方式重新配置数据平面:
可以更改字段定义并添加新字段
可以指定匹配表的数量,拓扑结构,宽度和深度,而仅受匹配位数的总体资源限制
可以定义新的动作,例如编写新的拥塞字段
可以将任意修改的数据包放置在指定的队列中,以在任何端口子集输出,并为每个队列指定排队规则。
我们描述了一种RMT交换器体系结构,该体系结构允许定义任意标头和标头序列,通过任意数量的表进行字段的任意匹配,任意写入包头字段(而不是包主体)的大小,以及每个包的状态更新。
实现细节:
我们将RMT称为“允许一系列流水线阶段”,每个都具有一个与字段匹配的任意深度和宽度的匹配表”,RMT交换机由解析器组成,以启用字段匹配,然后是任意数量的匹配阶段。
解析器的输出是一个包头向量,它是一组头字段,向量流经一系列逻辑匹配阶段,每个阶段都抽象了图1a中数据包处理(例如,以太网或IP处理)的逻辑单元,每个逻辑匹配阶段都允许配置匹配表大小。

理想RMT允许通过修改解析器来添加新字段,通过修改匹配存储器来匹配新字段,通过修改阶段指令来进行新操作,以及通过修改每个队列的队列规则来进行新排队。最重要的是,它允许将来修改数据平面无需修改硬件。

我们提倡一种如图所示的实现架构,该架构由大量物理流水线阶段组成,根据每个逻辑阶段的资源需求,可以将较少数量的逻辑RMT阶段映射到该阶段。优势在于它使用具有短线的平铺架构,可以以最小的浪费重新配置资源。
物理流水线阶段架构需要限制以允许实现千兆位速度:
匹配限制:设计必须包含固定数量的物理匹配阶段以及一组固定的资源
数据包标头限制:必须限制包含用于匹配和操作的字段的数据包标头向量
内存限制:每个物理匹配阶段都包含大小相同的表内存
动作限制:为了实现,必须限制每个阶段中指令的数量和复杂性
论文阅读:Forwarding Metamorphosis: Fast Programmable Match-Action Processing in Hardware for SDN的更多相关文章
- 【CV论文阅读】Dynamic image networks for action recognition
论文的重点在于后面approximation部分. 在<Rank Pooling>的论文中提到,可以通过训练RankSVM获得参数向量d,来作为视频帧序列的representation.而 ...
- 论文阅读:Flow-level State Transition as a New Switch Primitive for SDN
Name of article:Flow-level State Transition as a New Switch Primitive for SDN Origin of the article: ...
- [论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximati
[论文阅读笔记] Fast Network Embedding Enhancement via High Order Proximity Approximation 本文结构 解决问题 主要贡献 主要 ...
- [置顶]
人工智能(深度学习)加速芯片论文阅读笔记 (已添加ISSCC17,FPGA17...ISCA17...)
这是一个导读,可以快速找到我记录的关于人工智能(深度学习)加速芯片论文阅读笔记. ISSCC 2017 Session14 Deep Learning Processors: ISSCC 2017关于 ...
- Event StoryLine Corpus 论文阅读
Event StoryLine Corpus 论文阅读 本文是对 Caselli T, Vossen P. The event storyline corpus: A new benchmark fo ...
- YOLO 论文阅读
YOLO(You Only Look Once)是一个流行的目标检测方法,和Faster RCNN等state of the art方法比起来,主打检测速度快.截止到目前为止(2017年2月初),YO ...
- 快速人体姿态估计:CVPR2019论文阅读
快速人体姿态估计:CVPR2019论文阅读 Fast Human Pose Estimation 论文链接: http://openaccess.thecvf.com/content_CVPR_201 ...
- Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读
Action4D:人群和杂物中的在线动作识别:CVPR209论文阅读 Action4D: Online Action Recognition in the Crowd and Clutter 论文链接 ...
- 【论文阅读】Motion Planning through policy search
想着CSDN还是不适合做论文类的笔记,那里就当做技术/系统笔记区,博客园就专心搞看论文的笔记和一些想法好了,[]以后中框号中间的都算作是自己的内心OS 有时候可能是问题,有时候可能是自问自答,毕竟是笔 ...
随机推荐
- JS实现把一个页面层数据传递到另一个页面的两种方式
本博客整理了两种方式从一个页面层向另一个页面层传递参数. 一. 通过cookie方式 1. 传递cookie页面的html,此处命名为a.html 请输入用户名和密码: <input id=&q ...
- 如何用纯 CSS 创作出平滑的层叠海浪特效
效果预览 在线演示 按下右侧的"点击预览"按钮可以在当前页面预览,点击链接可以全屏预览. https://codepen.io/comehope/pen/JvmBdE 可交互视频教 ...
- java对象的几种创建过程
java对象的创建过程 (1)用new 语句创建对象,这是最常用的创建对象方法. 下面用一个简单的存在继承关系的实例的创建,来叙述对象创建过程中的细节 概括如下: 执行顺序:(优先级从高到低.)静态代 ...
- FastDFS集群部署(转载 写的比较好)
FastDFS集群部署 之前介绍过关于FastDFS单机部署,详见博文:FastDFS+Nginx(单点部署)事例 下面来玩下FastDFS集群部署,实现高可用(HA) 服务器规划: 跟踪服务器1 ...
- Linux系统定时备份网站文件到七牛云存储脚本
1.七牛云账号注册. 有些朋友可能会问为什么要备份到七牛云?很简单,七牛云免费注册就能获取1G的存储空间,只要简单几步操作完成实名认证即可获取10G的存储空间,对于一般个人站点来说已经足够备份使用了. ...
- Linux上ssh免秘钥互登
两台机器分别为:master:192.168.1.10sever1:192.168.1.20 1.检查机器名和连通性 a.查看/etc/hostname [root@master master]# m ...
- golang time json mongodb 时间处理
golang 中解决前端time 输出,后端mongodb中时间存储. package mask import ( "fmt" "time" "go. ...
- C++中的变量属性小结
其实在C++中,一个变量除了数据类型以外,还有3种属性: (1)存储类别:C++中允许使用auto,static,register,extern 4种存储类别. (2)作用域:指在程序中可以使用该变量 ...
- npm安装node-sass报msbuild相关错误的解决办法
转自:https://blog.csdn.net/Amio_/article/details/87931733 https://www.cnblogs.com/diffx/p/10510868.htm ...
- 关于LRU算法(转载)
原文地址: http://flychao88.iteye.com/blog/1977653 http://blog.csdn.net/cjfeii/article/details/47259519 ...