簡體   English   中英

如何在內核空間中寫入數據包

[英]how to write packets in kernel space

我正在使用netfilter過濾數據包。 現在,我需要將那些數據包數據放入文件中。 我知道我們不能直接從內核讀取/寫入文件(感染,我們不應該這樣),但是最近我知道我們可以使用接頭進行此操作。

以前,我嘗試將所有數據包復制到用戶空間,然后將它們轉儲到文件中,但是操作速度非常慢,並且丟失了數據包。 我嘗試使用netlink,還嘗試使用標准udp套接字從內核空間復制到用戶空間。 使用這種方法沒有得到很好的結果,因為我的數據包速率很高。

請建議我一種在內核空間內將數據包寫入文件的好方法。 如果有人對使用接頭有想法/示例,將不勝感激。 thnx。

您是否嘗試過使用原始套接字提升套接字的優先級? 當需要更快的套接字操作時,這通常可以解決問題。 我仍然覺得從內核空間寫入文件不是一個好主意,尤其是當您必須將數據包數據轉儲到文件時。

如果您認為,copy_to_user延遲是造成延遲的原因(理想情況下不應該,但是在極端情況下是),請嘗試從內核分配內存並將其映射到用戶空間。 並從該池中進行skbuff分配。 然后,對門鈴進行常規的套接字或網絡鏈接。 然后,可以從用戶空間直接從該區域訪問數據包。 它的一些工作,但應在極端條件下提供幫助。

但是,如果仍然要這樣做,這是一篇不錯的文章-http: //www.linuxjournal.com/node/8110/print

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM