BPF:处理用于存储 SYN cookie 答案和白名单客户端的完整哈希表

问题描述

我已经实现了一个 BPF 内核程序,它充当一种 SYN 代理来处理 SYN 洪水。但它确实是在来自客户端的 SYN 进入时存储 cookie,将其 IP 和端口散列到 BPF MAP 中。当客户端正确回复时,它的哈希值被添加到白名单中,下一个数据包直接发送到服务器。

我的问题是 BPF 中的地图无法在运行时调整大小,所以我需要找到一种方法来重新利用地图中的插槽。到目前为止,我所做的是将映射更改为数组,然后使用用户的 t 哈希并使用 % modulo 运算符和数组的大小,在客户端将使用的此类数组中找到一个插槽。问题是被攻击时索引有很多重叠,部分攻击IP根据hash正好在白名单中,所以通过服务器。

我希望在这里开始讨论如何以更有效的方式完成这项工作。

谢谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)