IB網(wǎng)絡(luò)特點
IB網(wǎng)絡(luò)通過如下幾個技術(shù),提供了更低的時延,更高的帶寬,更低的cpu占用。
Kernel?Bypass(內(nèi)核旁路):應(yīng)用程序直接與網(wǎng)卡交互,不經(jīng)過操作系統(tǒng)。
Zero?Copy(零拷貝):數(shù)據(jù)直接從網(wǎng)卡拷貝到應(yīng)用程序內(nèi)存中,不經(jīng)過內(nèi)核中轉(zhuǎn),不產(chǎn)生額外的拷貝副本。
CPU Offload(硬件卸載):所有傳輸邏輯(路由,包頭拆解,數(shù)據(jù)校驗等)由網(wǎng)卡處理,cpu不參與。
更高的帶寬
IB網(wǎng)絡(luò)目前能提供200 Gb/s的帶寬能力,遠超傳統(tǒng)以太網(wǎng)。
更低的延遲
傳統(tǒng)以太網(wǎng)的處理流程如下:
1:以太網(wǎng)卡將數(shù)據(jù)通過DMA方式寫入內(nèi)存空間。
2:操作系統(tǒng)內(nèi)核協(xié)議棧對該數(shù)據(jù)進行處理。
3:操作系統(tǒng)通知應(yīng)用程序處理接收到的網(wǎng)絡(luò)數(shù)據(jù)。
4:應(yīng)用程序從內(nèi)核空間拷貝數(shù)據(jù)到應(yīng)用程序內(nèi)存并進行處理。
通過以上處理流程,10G的網(wǎng)絡(luò)流量帶寬至少需要消耗20G的內(nèi)存帶寬,因此帶來了較高的帶寬消耗和延遲。
IB網(wǎng)絡(luò)處理流程如下:
1:應(yīng)用程序向網(wǎng)卡注冊可以使用的內(nèi)存空間。
2:網(wǎng)卡接收到數(shù)據(jù)后直接進行協(xié)議棧的處理(offload概念,協(xié)議棧功能下放網(wǎng)卡)。
3:網(wǎng)卡處理完成后,將數(shù)據(jù)寫入應(yīng)用程序注冊的內(nèi)存空間(bypass概念)后通知應(yīng)用程序進行處理。
4:應(yīng)用程序直接處理寫入內(nèi)存的數(shù)據(jù)包,無需要操作系統(tǒng)內(nèi)核參與,也無需額外拷貝數(shù)據(jù)(bypass概念)。
IB網(wǎng)卡通過該方式,數(shù)據(jù)包只需要向內(nèi)存拷貝一次,對于10G的網(wǎng)絡(luò)流量,只消耗10G的內(nèi)存帶寬,因此帶來了更低的處理延遲。
更低的CPU占用
由于通信協(xié)議棧的處理,CPU不在參與,因此帶來了更低的CPU占用。