2008-09-19 59 views
8

對於有效載荷小於1470的UDP數據包,是否可以達到1Gbit的吞吐量?由於數據包的大小很小,實現這種吞吐量(I/O,OS,網絡等)應該有一些瓶頸。我認爲驅動程序和硬件可能需要調整到小數據包/高吞吐量。有人試圖用小UDP包成功實現1Gbit吞吐量嗎?無法實現1Gbit的UDP吞吐量

+0

網絡拓撲的更詳細的描述,將有助於搭配建議使用... – 2008-09-19 07:16:47

回答

7

我以前在相對標準的PC硬件上做了一些千兆位鏈路吞吐量的實驗,儘管只是傳輸(通過tcpreplay),而不是udp。

我發現的最大瓶頸是僅僅將數據包發送給NIC本身。通過使用高速總線連接到您的NIC(例如,一個4x pci-express NIC),可以顯着改善這一點。但即使如此,還是有一個非常明確的數據包/秒限制。顯然,增加數據包大小可以讓您在減少處理器負載的同時利用更多的帶寬。

Steve Moyer的評論相同,對於任何網絡的利用都存在理論上的限制。在我的實驗中(這是在一個完全安靜的網絡上完成的),我看到了大約900Mb/s的最大值(並且僅在內存的頂部)。這與CPU的負載爲30%到40%不等。

這個限制很可能會由你的系統硬件(比如個人電腦)施加,而不是你的網絡基礎設施 - 任何值得它的鹽的網絡交換機都應該能夠用小包維持全速網絡訪問 - 當然在遠高於大多數個人電腦可以應付的速度。

3

什麼類型的網絡連接您使用?如果您使用的是1000BaseTx/Fx鏈路,請不要期望最大數據包的吞吐量超過80%。隨着數據包大小的減小,間隔,同步,以太網報頭,IP報頭和UDP報頭的開銷相對於有效負載增加,因此會進一步降低最大吞吐量。

3

檢查您正在使用的交換機的文檔。如果您發送的數據包大大小於最大有效負載大小,交換機就會受到每秒數據包數量(pps)的限制,並且通常無法承受1GBps。

另一件要檢查的事情是網卡是否正在進行中斷合併,以及它可以支持的最大發送/接收描述符數量是多少。在這種吞吐量水平下,即使使用現代化的CPU和內存系統,中斷服務時間和上下文切換時間也會成爲主機系統的一大開銷。

另外,如果您使用的是千兆位銅纜,卡上最小的以太網幀是512字節,因此較小的消息將被填充到該尺寸。這是因爲對載波偵聽/碰撞檢測的要求。

3

我發現硬件具有比網絡理論容量低得多的數據包每秒限制。對於Broadcomm BCM5704S,我以69,000 pps的速度實現了這個目標,而相比之下,這個速度達到了1,488,100pps的千兆位。

一些更多的數字我這裏報道,http://code.google.com/p/openpgm/