摘要:哈希表在网络报文处理, 尤其是带状态的报文处理中发挥着重要作用. 伴随着网络流量的快速增长, 传统软件哈希表难以满足网络性能需求, 而查找是影响哈希表性能的关键之一, 如何提升哈希表的查找速率也一直是一个难点问题. 经研究表明, 现有的网络流量呈现Pareto分布特征, 即存在少数的大流量数据——大象流. 基于当前数据中心广泛采用的软硬协同计算模式, 提出了一种基于DPDK+FPGA的大规模软硬协同哈希表架构. 根据现有网络流量特征, 将流量分成大象流与背景流. 同时也将哈希表分成硬件表与软件表. 在FPGA中构造小规模硬件表, 卸载所有报文的哈希计算, 以及大象流的哈希查找. 在软件中基于DPDK构建大规模软件表, 利用FPGA卸载哈希计算, 加速背景流的查找. 软件拥有所有流信息, 利用采样法识别大象流并将大象流的键值对信息(key-value)更新到FPGA的硬件表中, 以加速软件中大规模软件表的查找速率. 采用Xilinx U200加速卡和通用服务器作为硬件平台, 实现了软硬协同的大规模哈希表, 并利用测试仪构造了符合当前网络特征的流量数据, 以DPDK精确转发为例, 验证了软硬协同哈希表的性能. 结果表明, 在大象流哈希查找完全卸载的情况下, 其性能相较DPDK原有的精确转发提升了64%–75%; 在大象流未卸载的情况下, 其性能提升了5%–48%.