摘要

本文介绍了一种新的工具链,它将一门称为 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. IO多路复用多并发服务器模板

    import socket import selectors # IO多路复用选择器 epoll_selector = selectors.EpollSelector() # 实例化选择器 serve ...

  2. windows c++如何使窗口动态改变位置

    在windows软件中,经常会碰到一个功能:鼠标hover在某个地方时会出现窗口,有时候这个窗口的位置是会动态调整的. 熟悉使用windows API,理解windows中虚拟坐标.工作区坐标.屏幕坐 ...

  3. [文章存档]Azure .net WebAPP的js/css文件过大导致访问慢的解决办法

    https://docs.azure.cn/zh-cn/articles/azure-operations-guide/app-service-web/aog-app-service-web-qa-j ...

  4. xlutils模块使用

    python常用模块目录 1.xlutils 实现拷贝原文件 原表格: import xlrd from xlutils.copy import copy workbook = xlrd.open_w ...

  5. javaweb 安全传输签名机制

    java web传输中的安全签名说明: 对请求中的数据 Key对进行签名,最终生成一个签名字符串,标记为sign:"djflw8wejwl9w0ejwlush8fw9ew9",位数 ...

  6. 互评Alpha版本—SkyHunter

    1.根据NABCD评论作品:   N(Need,需求):飞机大战题材的游戏对80,90后的人来说算是童年的记忆,可以在闲暇之余打开电脑玩一会儿.但是面向初中生,高中生的话这种PC小游戏可能不会那么适合 ...

  7. 团队项目-北航MOOC系统Android客户端 NABC

    北航MOOC系统Android客户端 NABC (N) Need 需求 MOOC的全名是Massive Open Online Course,被称作大型开放式网络课程.2012年,美国的顶尖大学陆续设 ...

  8. 面向对象OO第15次作业总结

    面向对象OO第15次作业总结 1.论述测试与正确性论证的效果差异,比较其优缺点测试通过大量测试数据来覆盖测试代码,比较直观,优点在于知道测的是啥,特别直观,缺点在于很难覆盖所有情况.正确性论证从逻辑关 ...

  9. Java程序设计基础项目总结报告

    Java程序设计基础项目总结报告 20135313吴子怡 一.项目内容 运用所学Java知识,不调用Java类库,实现密码学相关算法的设计,并完成TDD测试,设计运行界面. 二.具体任务 1.要求实现 ...

  10. java BufferedWriter写数据不完全

    package com.brucekun.keyword; import java.io.BufferedReader; import java.io.BufferedWriter; import j ...