Skip to main content
QUICK REVIEW

[论文解读] Cuckoo++ Hash Tables: High-Performance Hash Tables for Networking Applications

Nicolas Le Scouarnec|arXiv (Cornell University)|Dec 27, 2017
Network Packet Processing and Optimization参考文献 16被引用 6
一句话总结

Cuckoo++ 通过在每个主桶中集成布隆过滤器,为网络应用引入了一种高性能哈希表,有效避免了对二级桶的不必要的内存访问,实现了每核每秒高达 6000 万次查找——在负向查找场景下比 DPDK 快 50%,在 18 核系统上快 45%。该设计还原生支持通过 16 位时间戳实现条目过期,显著提升了连接跟踪工作负载的效率。

ABSTRACT

Hash tables are an essential data-structure for numerous networking applications (e.g., connection tracking, firewalls, network address translators). Among these, cuckoo hash tables provide excellent performance by allowing lookups to be processed with very few memory accesses (2 to 3 per lookup). Yet, for large tables, cuckoo hash tables remain memory bound and each memory access impacts performance. In this paper, we propose algorithmic improvements to cuckoo hash tables allowing to eliminate some unnecessary memory accesses; these changes are conducted without altering the properties of the original cuckoo hash table so that all existing theoretical analysis remain applicable. On a single core, our hash table achieves 37M lookups per second for positive lookups (i.e., when the key looked up is present in the table), and 60M lookups per second for negative lookups, a 50% improvement over the implementation included into the DPDK. On a 18-core, with mostly positive lookups, our implementation achieves 496M lookups per second, a 45% improvement over DPDK.

研究动机与目标

  • 解决大规模 Cuckoo 哈希表在查找过程中因冗余内存访问导致的性能瓶颈问题。
  • 在各种工作负载下,尤其是面对非受控或恶意流量时,统一提升正向和负向查找的性能。
  • 将条目过期支持原生集成到哈希表结构中,消除外部定时器管理的开销。
  • 在保持 Cuckoo 哈希原有理论保证的同时,提升实际应用中的效率。
  • 在吞吐量和内存访问减少方面,超越现有实现(如 DPDK 和 Horton 表)

提出的方法

  • 在每个主桶中集成布隆过滤器,预先检查键是否可能存在于二级桶中,从而避免不必要的内存访问。
  • 使用简单快速的布隆过滤器,通过按位与操作最小化计算开销,实现对二级桶查找的高效剪枝。
  • 采用紧凑的内存布局,将布隆过滤器与槽位一同存储在 64 字节的缓存行中,充分利用 CPU 缓存行对齐。
  • 在表条目中直接集成 16 位时间戳,实现对过期连接的自动清理,无需外部跟踪机制。
  • 设计系统以支持批量查找,并保持与现有 Cuckoo 哈希特性及理论分析的兼容性。
  • 通过使布隆过滤器决策独立于预取策略,优化乐观和悲观预取策略的性能。

实验结果

研究问题

  • RQ1将布隆过滤器嵌入主桶是否能在不损害正确性或性能的前提下,减少 Cuckoo 哈希表中不必要的内存访问?
  • RQ2布隆过滤器的集成是否能在包括高负向查找率和非受控流量在内的多样化工作负载中,实现一致的性能提升?
  • RQ3能否高效地将条目过期的原生支持集成到哈希表结构中,以消除外部定时器的开销?
  • RQ4在真实网络工作负载下,Cuckoo++ 的性能与 DPDK 及其他先进实现相比如何?
  • RQ5该设计是否能在保持 Cuckoo 哈希理论保证的同时,提升实际吞吐量并减少内存访问次数?

主要发现

  • Cuckoo++ 在单核环境下实现每核每秒 3700 万次正向查找和 6000 万次负向查找,较 DPDK 提升 50%。
  • 在以正向查找为主的 18 核系统中,Cuckoo++ 实现每秒 49.6 亿次查找,较 DPDK 提升 45%。
  • 在主桶中使用布隆过滤器将平均内存访问次数从 2 次降低至 1 次,在高负载和恶意流量下显著提升性能。
  • 集成的 16 位时间戳机制可高效实现连接过期,无需外部定时器管理,降低系统复杂度和开销。
  • Cuckoo++ 在所有工作负载下(包括高负向查找率和不同负载因子)均优于 DPDK 和 Horton 表。
  • 该设计保持了与现有 Cuckoo 哈希理论的兼容性,并支持批量查找,适用于高性能数据包处理应用。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。