因為不是搞網絡出身,最近又看一篇網絡方面的paper,所以把一些基本概念記錄下來,以備大家查閱。
checksum calculation offload: 將網絡包的校驗碼的計算過程從軟件層下放到硬件層,從而減少軟件層面上的cpu開銷。
interrupt mitigation: 當network device接收到數據包的時候,會引起相關的中斷,提醒軟件做相關操作。但是當網絡的速度提高以后,如此頻繁的中斷成為了瓶頸所在,而且也沒有必要。我們可以一直從device拿包,因為總有包可以拿到。
bulk data transfer: 當有大量連續數據傳輸的時候,將一些小的包組成大包有助于減少overhead,只要不超出ethnet的限制就可以。
RDMA: remote direct memory access, 傳統的網卡操作如下:當接收到網絡的數據包的時候,先暫時存在系統的buffer當中,然后將buffer中的東西經過整理后復制到application的內存空間中。這樣的操作需要耗費大量的系統時間。RDMA則是App-Net-Net-App的流程,其中不需要操作系統做任何事情,這樣做的效率提高了許多。
TCP offload:就是把TCP的協議讓硬件adapter做,問題是performance和協議支持的完整性都不好,減小了OS對于網絡操作的控制性,魯棒性(robust)不是很好。
jumbo frames: 支持包島嶼1500bytes Ethernet frames。主要是提高每個包的大小,希望能夠減少發包的次數。
Large Send Offload: 一次性向下最多向堆棧上放64k的數據(一次call),然后由adaptor將其拆分成多個小包發送出去(最大9000byte)。
Large Receive Offload:和上面的過程相反,adaptor多次接收包,然后將這些小包合并之后,提供給上層調用。