论文一

论文一的个人解读

ISA:微软防火墙

FPGA:数字电路集成芯片

NetFPGA :可以非常方便的使得研究人员或者高校学生搭建一个高速,硬件加速的网络系统。

NIC:网卡

PCIe:高速串行计算机扩展总线标准

XDP:位于网卡驱动程序里的一个快速处理包的HOOK点,与ebpf字节码共用可以显著提高性能。

PCIe传输:一种高速串行计算机扩展总线标准,传输降低延迟。

VLIW处理器:一种非常长的指令组合,它把许多条指令连在一起,增加了运算的速度。

hXDP:提供编译器,可以实现eBPF ISA的优化。

hBDP:在文中硬件模块提供的功能利用eBPF ISA的优化,实现此类问题的解决。

数据包处理位于非常底层(在网卡的驱动程序处),避免了很多内核skb处理开销(socket buffer, 数据包的管理结构);可以将很多处理逻辑offload到网卡硬件。

eBPF ISA的应用

eBPF ISA:字节对齐有1B,2B,4B,8B。6B是常用的加载方式,6B是MAC地址的大小,可以减少指令数量。

eBPF程序通过标记退出,XDP中将r0(一个值,或者说是转发操作)作为退出。这样可以在程序退出时,r0寄存器最终会执行转发操作。实现了硬件优化。

编译器执行

五步

:编译器对字节码扫描,识别程序基本块,指令序列总是一起执行。确定第一条和最后一条指令,以及之间的控制流程确认流程后,他可以构建控件流程图(CFG),将基本块表示为节点和控制流作为连接有向边。

:对每个基本块执行不必要指令删除。将eBPF指令组替换为扩展ISA等效指令。

:编译器发现数据流依赖性(?)。这是通过迭代完成分析CFG的算法。

:编译器使用CFG和构建的DDG(数据依赖图)定义指令时间表,此处编译器以最大并行指令输入。此处需要考虑潜在的硬件限制(12)

:编译器将物理寄存器分配给程序执行(13)。

相关说明:hXDP此处被设计为独立的IP核,可以根据需要添加进更大FPGA项目中。IP核心内包括能执行所有XDP功能块的元素,在NIC上,包括辅助功能和映射。保证了它能在FPGA上执行程序,避免了许多PCIe传输。

hXDP组件

  • 包括五个组件:可编程输入队列(PIQ);Ac-主动分组选择器(APS);Sephirot处理核心;辅助功能模块(HF);内存映射模块(mm)。所有模块在相同时钟域(相同时间内还是相同时间表?)工作。数据由PIQ接收,APS从读取数据包并新建到内部数据包内,经过这个步骤APS提供了字节对齐访问,可以通过数据总线访问数据包数据。Sephirot处理核心使用该数据总线选择性读取或者写入分组内容。APS使数据包可以在Sephirot处理核心进行处理,执行加载的eBPF程序。使用了4条并行执行通道在Sephirot中执行,若调用辅助函数对map进行读写,此时使用的是辅助总线和数据总线。

可编程输入队列(PIQ)

  • 每当收到数据包后,他将进入PIQ用作与NIC输入的接口总线。因此,通将接收到的分组分为帧,在各个时钟周期接受,因此可以独立的从队列中读取数据包。

Ac-主动分组选择器(APS)

  • APS实现了一个有限状态机来处理从所选数据包的帧从PIQ到APS内部缓冲区(可以容纳全尺寸的小包)。当数据包以帧的方式存储时,APS会根据需要对数据进行字节对齐的读写访问(详见eBPF ISA的应用),APS实现了eBPF程序的数据包缓冲区的建立,并构建了与硬件等效的传递XDP程序参数的功能的xdp_md结构。Sephirot使用main访问此类数据结构hXDP数据总线。由于Sephirot具有四个并行执行通道。所以APS提供了四个并行读写存储器,通过数据总线访问。

Sephirot处理核心

  • 有四条并行通道,可以执行eBPF指令。Sephirot处理核心被设计为四个执行阶段:

    • 指令提取(IF)、指令解码(ID)、指令执行(IE)、提交。
  • Sephirot是一个VLIW处理器,当APS准备好处理新数据包时,Sephirot开始执行,他给处理器发出启动信号。

    • 在IF(指令提取)阶段,将读取的VLIW指令并行组成扩展的eBPF指令。分配给它们各自的执行通道,这个阶段指令操作数时从寄存器与取得文件数。
    • ID(指令节码)期间,内存位置预加载,如果任何的eBPF指令是负载(???),则会在IE阶段,使用预取值激活相关子单元(算术和逻辑单元(ALU))。ALU的实现有eBPF ISA进行。
    • IE阶段执行运算
    • 提交阶段,IE阶段会存储回寄存器文件其中之一内存区域。Sephirot在发现终止执行后退出指令,在这种情况下,它会向APS发信号决定数据包的转发。

辅助功能

  • hXDP以专门的方式实现XDP辅助子模块功能。文中决定为辅助功能提供专门的硬件实现,因为他们是静态的。并且随着新版本的XDP发布,使FPGA硬件能够并行实现一些要求更高的功能(检验和计算)。
  • 单个辅助功能子模块,每个周期只能调用一条指令。辅助功能中包含map查找功能,其子模块可以直接访问地图模块

地图

  • 其主要功能是解码内存地址(地图的ID和行),以访问相应的存储位置。eBPF地图可以由程序自由指定,定义了地图的类型和大小(根据需求)。这个功能在硬件中,由地图子系统在程序加载时间内接受指令配置程序。实际上,所有映射()共享相同的FPGA 存储区,然后根据这些执行eBPF程序。

总结

这篇论文通过引入一个问题并提出可以通过软硬件结合的办法,利用eBPF快速的执行特性,以及在内核运行,并且对不必要的指令还能进行删除。与Sephirot核心内并行通道相结合,可以提高数据处理能力。但同时,又可以依靠编译器来优化XDP程序来实现高性能执行。

posted @ 2020-11-22 20:49  Emuaer  阅读(113)  评论(0编辑  收藏  举报