HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING
摘要
本文介绍了一种新的工具链,它将一门称为 PX 的专门用于包处理的编程语言运用到基于 FPGA 技术的高性能可重构计算架构(HIGH-PERFORMANCE RECONFIGURABLECOMPUTING ARCHITECTURES BASED ON FPGA TECHNOLOGY)。PX 是一门面向对象的声明式语言。一个用 PX 描述表达的自定义的运算架构用于满足特定的要求。这样的架构可以在包处理系统运行的过程中通过自定义固件升级来动态调整。
正文
随着互联网的发展,在网络基础设施的各个方面对高效的包处理的需求日益增长。传统互联网只需要根据包的目的地址在一个个中间结点之间进行转发单独的一个包。然而现代网络在包的传输过程中则需要做更多的事情,例如对复杂的包的解析、包的分类、满足服务质量以及安全方面的保证。更复杂的是,因为网络路由拓扑的变化和协议的变化,对于网络的要求变化的十分频繁。这样的需求使得网络设备必须十分灵活。
在这种情况下,可重构计算自然成为了最好的选择。虽然专用的定制芯片可以满足性能需求但是不够灵活。相反的,传统的处理器虽然足够灵活但是性能不令人满意。更多的专用多核处理器虽然兼顾了性能和灵活性两个方面,但是依然存在架构过于固定以及程序模型过于复杂的问题。而可重构计算则提供了可选的解决方法。它允许创建能够满足性能要求的自定义硬件,同时也允许随时更改硬件。换句话说,硬件其实很“软”,提供了十分理想的折中解决方法。
Field-programmable gate arrays (FPGAs) 是可重构计算的基础技术。一个现代的FPGA包括了数百万个逻辑门以及之间的连接网络。最大的挑战是如何让这样原始的底层计算院检能够为网络系统设计师简单的使用。
这篇文章提出了如何让那些希望解决包处理要求而不必知道底层硬件如何实现的网络专家能够使用 FPGA。这个研究的主要贡献有以下五点:
- PX,一门全新的高级语言,可以指定包处理的要求
- 一个将 PX 映射到可重构计算的编译器
- 用于包处理的高性能可重构计算架构
- 在包处理过程中动态的对系统进行编程
- 演示在 100 Gbps以及更高速率下运行
文章写了 PX 以及它的编译器的综述。通过两个例子说明编译器生成的可重构计算架构.第一个例子是包的解析和编辑(packet parsing and editing),第二个例子是查找。
(接下来文章介绍了 PX,这里不再赘述,可以看我上一篇博客:SDNnet PX Programmming Language)
图一展示了一个执行按照 OpenFlow 协议格式对基础包分类的系统对象类和一个现代 SDN 使用的包处理模型。

图二展示了基本的 PX 编译流程。

包的解析以及编辑
传统的包有一个包含控制信息的头部,一个携带实际数据的负载,有时候还有包含更多控制信息的尾部。当然,负载也可以是一个密封的包。
解析和编辑是包处理的两个基本操作。解析包括寻找和提取包字段。编辑包括更新包字段或者修改包结构。在 PX 中,包被模式化成一系列的切片(section),切片可以是一个头部、一个尾部或者是一个内置的负载。解析和编辑都包括遍历整个包的切片。在之前两个早期的工作(一是 G 包处理器,可以以 10 Gbps 的速率进行编辑,二是 PP 包处理器,可以以 400 Gbps 的速率进行解析)的基础上 PX 能够以 100 Gbps 的速率进行解析和编辑。
图三展示了一个执行从包中查找并提取 11 个用于 openflow 的分布在四个头部的字段的包解析过程。

图四展示了一个由分成三个阶段的由 PX 生成的架构的例子

图五展示了由图三生成的架构在不同数据宽度下的性能表现。

包数据的查找
包处理过程中基于包字段采用不同的查找方式,例如最长前缀匹配和多字段包分类等。最常见的是 TCAM (ternary content addressable memory)。现在大部分 TCAM 作为一个独立的 ASSP(application-specific standard product)运行,但是 ASSP 十分昂贵和耗能。并且不够灵活无法满足新兴的网络应用。PX 提供将软件的灵活性与接近 ASSP 的性能相结合的可能性。
图六展示了执行查找 openflow 的包的 PX 程序。

编译器会从 PX 程序生成一个 TCAM 架构。这个架构使用小的可配置单元组成一个块,排列成二维数组。每个单元包括多个流水线,每条流水线根据几个 TCAM 单词检查输入的关键词的一部分并且输出匹配结果的部分向量。
图七展示了一个2*2数组的例子。

在 TCAM 架构中有6个参数可以配置。TCAM 的深度(N)、宽度以及结果的宽度,这四个参数是在 PX 程序中指定的。剩下三个参数是 TCAM 的三个操作参数:有最小单元共排列为多少行(R)、每行多少个最小单元(L)、每个最小单元内有多少条流水线(H)。
图八展示了不同参数生成的 TCAM 可重构计算架构的性能。

结语
这个研究论证了日益成熟的可重构计算。在将来,这个研究将会扩展至更高的速度(例如 1 Tbps),另外包处理的功能也会更加丰富(例如安全方面的要求)。在灵活性和适应性方面的需求会使得可重构计算技术更加引人注目。
HIGH-SPEED PACKET PROCESSING USING RECONFIGURABLE COMPUTING的更多相关文章
- PatentTips - Data Plane Packet Processing Tool Chain
BACKGROUND The present disclosure relates generally to systems and methods for providing a data plan ...
- Fast Packet Processing - A Survey
笔记是边读边写的旁注,比较乱,没有整理就丢上来了. 可以说不仅要说fast packet process servey,也同时是一篇packet process的综述了.packet processi ...
- Reading SketchVisor Robust Network Measurement for Sofeware Packet Processing
SIGCOMM17 摘要 在现有的网络测量任务中包括流量监测.数据收集和一系列网络攻击的预防.现有的基于sketch的测量算法存在严重性能损失.大量计算开销以及测量的精确性不足,而基于硬件的优化方法并 ...
- Reading Fast Packet Processing A Survey
COMST 2018 主要内容 这是一篇有关快速包转发的综述,先介绍了包转发的有关基础知识和背景,具体介绍了包转发的主流方法,对这些方法进行了细致详尽的比较,最后介绍了最新的方法和未来的研究方向. 包 ...
- Internet protocol security (ipsec) packet processing for multiple clients sharing a single network address
Embodiments of the present invention address deficiencies of the art in respect to secure communicat ...
- VPP(Vector Packet Processing)浅析
VPP简介 VPP(Vector Packet Processing)是思科旗下的一款可拓展的开源框架,提供容易使用的.高质量的交换.路由功能 特点:高性能.运行在普通的cpu上. 优点:高性能.技术 ...
- VPP(Vector Packet Processing)配置工具
前言 VPP提供了一个配置工具,让用户可以简单快捷地配置VPP.用户可以通过一些简单的命令配置VPP,功能包括安装及一些基本配置和测试用例. 使用 先安装一个python的pip模块,使用pip安装V ...
- 论文阅读:FlowBlaze: Stateful Packet Processing in Hardware
摘要: 尽管可编程NIC可以提供更好的可扩展性以处理不断增长的网络工作量,但为硬件中的有状态网络功能编程提供表达能力却又简单的抽象仍然是一项研究挑战. 我们使用FlowBlaze解决了这个问题,Flo ...
- Enhancing network controls in mandatory access control computing environments
A Mandatory Access Control (MAC) aware firewall includes an extended rule set for MAC attributes, su ...
随机推荐
- DQL、DML、DDL、DCL全名是啥?
SQL(Structure Query Language)结构化查询语言 DQL(data query language)数据查询语言 select操作 DML(data manipulation l ...
- Protocol buffer的使用案例
Protocolbuffer(以下简称PB)是google 的一种数据交换的格式,它独立于语言,独立于平台.google 提供了多种语言的实现:java.c#.c++.go 和 python,每一种实 ...
- Shader做剪影效果
某渣渣甩了一个需求给我,并且说我不会写.我明知是激将法,但是想想这需求也太简单了,我好像也不怎么会QAQ.为了表示我对shader的热爱,写就写. 需求是这样的: 这是一个漂亮的MM,但是渣渣不想让人 ...
- OSSEC 架构
OSSEC由很多部分组成,它有一个集中的管理端,用于监控.并接收来自代理.syslog.数据库或无代理设备的日志. 管理端(服务器) 管理端属于OSSEC部署中的中心部分.它存储了文件完整性检测数据库 ...
- IOS statusBarStyle 设置
在项目info.plist文件中有 View controller-based status bar appearance 属性. 当设置为NO时 通过 [UIApplication sharedAp ...
- Vue 入门之概念
Vue 简介 Vue 是一个前端的双向绑定类的框架,发音[读音 /vjuː/, 类似于 [view].新的 Vue 版本参考了 React 的部分设计,当然也有自己独特的地方,比如 Vue 的单文件组 ...
- Chapter 3 软件项目管理
软件项目具有产品的不可见性.项目的高度不确定性.软件过程的多变化性.软件人员的高流动性的显著特征.有效的软件项目管理集中于人员.产品.过程和项目四个方面.软件项目的生命周期有项目启动.项目规划.项目实 ...
- java 线程的简单理解
想要实现线程可以继承Thread也可以实现接口runnable,在类中重写 run()方法在主函数调用start方法就可以开辟线程. 对于java对象都有一个wait()和notify().notif ...
- Parallel学习
Parallel给cpu的核有关系,在Parallel中,写入需要并行执行的方法,比如:方法1需要3秒:方法2需要6秒:方法3需要9秒: 并行情况下,加上任务分配,上下文切换需要1秒,执行方法总耗时只 ...
- YFCC 100M数据集分析笔记
--从YFCC 100M数据集中筛选出Geo信息位于中国的数据集 1.YFCC 100M简介 YFCC 100M数据库是2014年来基于雅虎Flickr的影像数据库.该库由1亿条产生于2004年至20 ...