返回演示列表

Toeplitz 滑動視窗

網路卡靠這個雜湊決定一個封包進哪條接收佇列。沒有查表、沒有乘法,只有位移和互斥或。

RSSDPDK网卡多队列哈希
可互動演示 在新分頁開啟

演示可以直接操作:單步、倒退、連續播放,也可以修改輸入。方向鍵逐位移動,空白鍵播放/暫停。

這個演示讓你看見什麼

主視覺是一條 320 位元的 key 磁帶,32 位元視窗框在上面隨步進滑動。這一眼就說明了最難講的那件事:Toeplitz 矩陣的第 i 列,就是 key 從第 i 位開始截取的 32 位元——矩陣能退化成一個暫存器,原因全在這裡。

輸入位元組按位元攤開,目前位元為 1 時觸發 result ^= window 並標紅,為 0 時只滑動。window 與 result 用同一套 32 欄網格對齊,互斥或可以直著讀,被翻轉的位元有紅框。

最後一塊是雙向對比。預設五元組用標準 key 時,正向與反向落進不同佇列——一條 TCP 連線被劈到兩個核心上;切到對稱 key,兩個方向雜湊相同,整條流回到同一個佇列。做 NAT、狀態防火牆或流量分析時,這就是繞不開的那道坎。

頁面上每一個中間狀態都是當場算出來的,不是預錄的動畫。演算法已與微軟 RSS 規範的標準測試向量比對通過。