返回演示列表

Toeplitz 滑动窗口

网卡靠这个哈希决定一个包进哪条收包队列。没有查表、没有乘法,只有移位和异或。

RSSDPDK网卡多队列哈希
可交互演示 在新标签打开

演示可以直接操作:单步、回退、连续播放,也可以改输入。方向键翻位,空格播放/暂停。

这个演示让你看见什么

主视觉是一条 320 比特的 key 磁带,32 位窗口框在上面随步进滑动。这一眼就说明了最难讲的那件事:Toeplitz 矩阵的第 i 行,就是 key 从第 i 位开始截的 32 位——矩阵能退化成一个寄存器,原因全在这里。

输入字节按位摊开,当前位为 1 时触发 result ^= window 并标红,为 0 时只滑动。window 与 result 用同一套 32 列网格对齐,异或可以竖着读,被翻转的位有红框。

最后一块是双向对比。默认五元组用标准 key 时,正向与反向落进不同队列——一条 TCP 连接被劈到两个核上;切到对称 key,两个方向哈希相同,整条流回到同一个队列。做 NAT、状态防火墙或流量分析时,这就是绕不开的那道坎。

页面上每一个中间状态都是当场算出来的,不是预录的动画。算法与微软 RSS 规范的标准测试向量比对通过。