我正在看看使用PF_RING
在我的應用程序中發送和接收。TCP和PF_RING
如果我打算使用PF_RING
來維護TCP連接,看起來我需要自己手動「僞造」IP和TCP消息,因爲pfring_send
發送原始數據包。這是否意味着我必須在PF_RING
之上手動重新實現TCP?
我明白接收使用PF_RING
有明顯優勢,有沒有人試過用PF_RING
發送數據?與普通發送呼叫相比,是否有明顯的優勢?
注意:我沒有使用DNA(直接網卡訪問),我只是使用帶有NIC識別驅動程序的內核部分旁路。
性能優勢與普通套接字發送相比如何?我正在尋找消除正常套接字發送中的不一致性。通常我會看到平均需要0-> 1 usec,但是有很大的異常值(由於內核活動),有時會導致高達100個usecs。我正試圖消除這個系統調用。 – Alex
您正在用戶空間中重新實現TCP/IP協議棧,幾乎沒有任何情況會比內置內置協議更快或更高效,特別是在傳輸失敗時重新發送數據包,或照顧所有的邊緣情況。你想優化什麼特定的用例?什麼是最終目標? –
最終目標是減少發送性能中的異常值。我的應用程序在發送的性質上是「突發的」(可能會連續發送一串,然後等待一會再發送 - 一會兒意味着1ms +)。你可能在問我的應用程序做什麼,恐怕我不能說。 – Alex