4
我想發送數據包到繞過Linux網絡堆棧的網絡。我的意思是,有什麼方法可以中斷網卡驅動程序,並直接在網卡緩衝區中放置一幀以將其發送到網絡中?我是Linux內核黑客中的新手,所以關於如何開始的任何指導將非常有幫助。如何在不使用套接字的情況下將數據包發送到網絡中?
我想發送數據包到繞過Linux網絡堆棧的網絡。我的意思是,有什麼方法可以中斷網卡驅動程序,並直接在網卡緩衝區中放置一幀以將其發送到網絡中?我是Linux內核黑客中的新手,所以關於如何開始的任何指導將非常有幫助。如何在不使用套接字的情況下將數據包發送到網絡中?
如果您使用一些虛擬設備如TAP,您會更好。您可以輕鬆將控制界面切入TAP內核模塊,然後您可以將幀準備好發送給驅動程序。該方法可以與常規套接字應用程序的性能作爲基準進行比較。由於最終TAP設備將通過字符設備「發送」出站幀,因此您可以輕鬆編寫測試應用程序來測量性能和延遲。
感謝您的幫助。我會研究它。 – mushfek0001 2013-05-15 03:49:52
你能描述你爲什麼要這樣做嗎?可能有更好的方法來解決這個問題,而不是試圖繞過專門設計用於發送數據包的經過良好測試,調試良好並且高度文檔化的接口。 :-) – templatetypedef 2013-05-04 17:23:14
原始IP數據包或原始以太網數據包?根據協議棧的低位需要,您可以使用原始套接字。我不知道是否可以直接與用戶空間中的現有以太網卡驅動程序對話,但可以卸載該驅動程序並將其替換爲已修改的版本以啓用此功能。顯然,所有這些都需要管理訪問權限,通常包括原始套接字。 – 2013-05-04 17:39:12
是的,當然。其實我的任務是比較一個程序的性能,而不是使用套接字發送數據包和一個可以發送數據包的程序,而不需要遍歷整個Linux內核堆棧,就像我之前所說的將數據包直接放入網卡緩衝區一樣。 – mushfek0001 2013-05-04 17:39:19