摘要

本文介绍了一种新的工具链,它将一门称为 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的更多相关文章

  1. PatentTips - Data Plane Packet Processing Tool Chain

    BACKGROUND The present disclosure relates generally to systems and methods for providing a data plan ...

  2. Fast Packet Processing - A Survey

    笔记是边读边写的旁注,比较乱,没有整理就丢上来了. 可以说不仅要说fast packet process servey,也同时是一篇packet process的综述了.packet processi ...

  3. Reading SketchVisor Robust Network Measurement for Sofeware Packet Processing

    SIGCOMM17 摘要 在现有的网络测量任务中包括流量监测.数据收集和一系列网络攻击的预防.现有的基于sketch的测量算法存在严重性能损失.大量计算开销以及测量的精确性不足,而基于硬件的优化方法并 ...

  4. Reading Fast Packet Processing A Survey

    COMST 2018 主要内容 这是一篇有关快速包转发的综述,先介绍了包转发的有关基础知识和背景,具体介绍了包转发的主流方法,对这些方法进行了细致详尽的比较,最后介绍了最新的方法和未来的研究方向. 包 ...

  5. 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 ...

  6. VPP(Vector Packet Processing)浅析

    VPP简介 VPP(Vector Packet Processing)是思科旗下的一款可拓展的开源框架,提供容易使用的.高质量的交换.路由功能 特点:高性能.运行在普通的cpu上. 优点:高性能.技术 ...

  7. VPP(Vector Packet Processing)配置工具

    前言 VPP提供了一个配置工具,让用户可以简单快捷地配置VPP.用户可以通过一些简单的命令配置VPP,功能包括安装及一些基本配置和测试用例. 使用 先安装一个python的pip模块,使用pip安装V ...

  8. 论文阅读:FlowBlaze: Stateful Packet Processing in Hardware

    摘要: 尽管可编程NIC可以提供更好的可扩展性以处理不断增长的网络工作量,但为硬件中的有状态网络功能编程提供表达能力却又简单的抽象仍然是一项研究挑战. 我们使用FlowBlaze解决了这个问题,Flo ...

  9. 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 ...

随机推荐

  1. 【厚积薄发】Crunch压缩图片的AssetBundle打包

    这是第133篇UWA技术知识分享的推送.今天我们继续为大家精选了若干和开发.优化相关的问题,建议阅读时间10分钟,认真读完必有收获. UWA 问答社区:answer.uwa4d.com UWA QQ群 ...

  2. Socket之简单的Unity3D聊天室__TCP协议

    服务器端程序 using System; using System.Collections.Generic; using System.Linq; using System.Net; using Sy ...

  3. 基础:enctype 包含上传input时必须(解决图片上传不成功问题)

    今天在做一个上传图片的时候,死活就是看不到传过去的值..对比了写法没发现问题,后来抱着试试看的心,查看下了 from里的写法.发现缺少了enctype.不了解这个用法,特意百度了下. enctype ...

  4. Java子类初始化调用父类无参构造

    实在是服了自己,子类初始化调用父类无参构造这种初学者都应该知道的事,我给忘了. 记得当初看书的时候各种概念抄在笔记本上,再上机实践,以为一辈子都不会忘,还是给忘了. 这件事说明了两个问题: 1.我没有 ...

  5. 机器学习算法 --- SVM (Support Vector Machine)

    一.SVM的简介 SVM(Support Vector Machine,中文名:支持向量机),是一种非常常用的机器学习分类算法,也是在传统机器学习(在以神经网络为主的深度学习出现以前)中一种非常牛X的 ...

  6. 记一次centos6升级salt-minion启动失败的问题

    记一次centos6升级salt-minion启动失败的问题 作者:耀耀 blog:https://www.liuyao.me 一.起因 升级Salt-minion后 使用/etc/init.d/sa ...

  7. gulp-babel 阻止了js文件编译的进程?

    现象 :   编译打包的js没有输出到目标文件夹里,只是单单的生成了一个目标目录,目录里没有文件 解决方法:gulp-babel ^8.0.0 使用了 ^7.0.1的 依赖插件.统一gulp-babe ...

  8. TeamWork#1,Week 5,Suggestions for Team Project

    我们团队联系到了我们六班的直系学长,并向他咨询了软件工程基础这门课的团队项目相关的问题.他们团队的名字命名为Z-XML,团队中的几个学长也都是我平时所熟识的.虽然学长已经大四,忙着考研工作等各种事务, ...

  9. 通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的

    实验一:通过反汇编一个简单的C程序,分析汇编代码理解计算机是如何工作的 学号:20135114 姓名:王朝宪 注: 原创作品转载请注明出处   <Linux内核分析>MOOC课程http: ...

  10. [二叉树建树&完全二叉树判断] 1110. Complete Binary Tree (25)

    1110. Complete Binary Tree (25) Given a tree, you are supposed to tell if it is a complete binary tr ...