我正在學習基于 eBPF sockmap / 重定向的環回 TCP 加速技術。
我發現在所有相關的文章和示例中,似乎我們只需要通過該方法將條目添加到 sockmap 表中bpf_sock_hash_update,然后通過該方法查找表并重定向bpf_msg_redirect_hash。例如:這里、這里和這里。
我沒有找到從 sockmap 表中洗掉條目的任何代碼(例如:呼叫 bpf_map_delete_elem 等)。同時,我也沒有在內核中找到任何自動洗掉已關閉 tcp 連接的條目的代碼,例如:here .
所以我很好奇,為什么在這些文章和代碼中不需要洗掉關閉連接的sockmap條目?
我們是否需要在我們的 ebpf 代碼中檢測 TCP FIN 事件,然后顯式洗掉 sockmap 中的相應條目?
謝謝 :-)
uj5u.com熱心網友回復:
經過一番測驗,我意識到無需手動洗掉 sockmap 表中的條目。
通過使用命令觀察 sockmap 表中的條目bpftool map dump id <sockmap_id> | grep "key:" | wc -l,可以看到表大小始終等于環回設備上并發 TCP 連接數的兩倍。
所以顯然關閉的 TCP 連接會自動從 sockmap 表中洗掉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/447351.html
