FPGA智能网卡-hash桶冲突

本文探讨了为何在FPGA智能网卡中使用哈希算法管理flow表,解释了哈希冲突的概念,并通过计算展示了不同参数下冲突的概率。通过分析,指出增加hash桶数量或slot个数能有效解决冲突,而增加slot个数效果更显著。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

为什么需要hash来管理flow表

智能网卡芯片主要依据流的五元组来管理flow表;比如ipv4的报文,流的五元组是SIP(32bit)+DIP(32bit)+SPORT(16bit)+DPORT(16bit)+PROTO(8bit),一共104bit;但是flow表的数量往往达不到如此大的规模;所以选择使用hash来压缩流表的地址空间;这可能会带来hash冲突问题;

什么是hash冲突

当不同的五元组的key通过hash算法得到相同的值,可以理解为是hash冲突;

计算hash冲突的概率

如下图所示,一般使用hash桶和hash slot来解决hash冲突的问题;我们可以假设hash表规格为k x m; 也就是k个hash桶,每个hash桶里面装有m个slot 元素;

下面开始计算概率,
对于hash表而言,比如有k个bucket;插入条目数为n,每个bucket里面含有 m 个slot ,那么对于bucket中hash冲突为m的概率为
p = Cnm x (1/k)m x (1-1/k)(n-m)

那么对于m =3, k = 8M, n = 1M的情况下: p(K=8M,m=3) = C1M3 x (1/8M)3 x (1-1/8M)(1M-3),
期望值E = p(m=3) x k = p(m=3)x8M = 2298;
如果对于m =4, k = 8M, n = 1M的情况下: p(k=8m,m=4) = C1M4 x (1/8M)4 x (1-1/8M)(1M-4),
期望值E = p(m=4) x k = p(m=4)x8M = 71;
其实我们不难计算出 p(k=8M,m=4) = (1/32)p(K=8

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_807315755

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值