Infiniband的協(xié)議采用分層結(jié)構(gòu),各個(gè)層次之間相互獨(dú)立,下層為上層提供服務(wù)。其中,物理層定義了在線路上如何將比特信號(hào)組 成符號(hào),然后再組成幀、 數(shù)據(jù)符號(hào)以及包之間的數(shù)據(jù)填 充等,詳細(xì)說明了構(gòu)建有效包的信令協(xié)議等;鏈路層定義了數(shù)據(jù)包的格式以及數(shù)據(jù)包操作的協(xié)議,如流控、 路由選擇、 編碼、解碼等;網(wǎng)絡(luò)層通過在數(shù)據(jù)包上添加一個(gè)40字節(jié)的全局的路由報(bào)頭(Global Route Header,GRH)來進(jìn)行路由的選擇,對(duì)數(shù)據(jù)進(jìn)行轉(zhuǎn)發(fā)。
在傳統(tǒng)數(shù)據(jù)傳輸方案中,內(nèi)存數(shù)據(jù)訪問和網(wǎng)絡(luò)數(shù)據(jù)傳輸分屬兩套語義集合。數(shù)據(jù)傳輸中CPU承擔(dān)了大量工作。應(yīng)用程序先申請(qǐng)資源,再通知Socket,內(nèi)核態(tài)驅(qū)動(dòng)程序完成TCP/IP報(bào)文封裝,最后由NIC的網(wǎng)絡(luò)接口發(fā)送到對(duì)端。數(shù)據(jù)在發(fā)送節(jié)點(diǎn)需要依次經(jīng)過Application Buffer、Socket Buffer、Transfer Protocol buffer。到達(dá)接收節(jié)點(diǎn)后同樣需經(jīng)過多次反向內(nèi)存拷貝,內(nèi)核態(tài)驅(qū)動(dòng)程序完成TCP/IP報(bào)文解封裝,應(yīng)用程序最終將數(shù)據(jù)寫入系統(tǒng)物理內(nèi)存。