2013年11月7日 星期四

TCP offload engine (TOE)

from:http://www.kernelchina.org/node/611
延伸閱讀:
Competitive Comparison Intel® I/O Acceleration Technology vs. TCP Offload Engine

TCP減壓引擎,第一次聽說這個名詞,但是並不是一個新的概念了,若干年前聽說過設備廠商在研究在FPGA之中實現TCP Stack,但是後來沒有聽到任何的產品出來,應該是路由設備to host的traffic不多,而對於FW設備,中間的TCP Proxy實現過於復雜,工程上不可能實現。
現在的所謂TOE實現我理解主要用於host的interface之中,用於為Gbits以及10Gbits接口場景中為CPU減壓,例如部署在數據中心內部的服務器,CPU雖然越來越快,但是對於洶湧澎湃的Traffic來說,還是有些力不從心。
clip_image002
上面是TOE應用前後協議棧的差別,我覺得畫的有點絕對,TCP Stack不太可能完全實現在interface之中,其實TOE主要實現如下的offload:
1.TCP/IP Checksum offload
CPU可以不用計算checksum而由網卡計算
2.CPU不用考慮數據的分段了,估計是直接將socket送過來的buf交給網卡。
如果是僅僅實現上述功能TOE是很可能工程化實現的。
在另一篇文檔中提到了TOE的一些優勢,但是我的分析,這個可能是要實現TOP替代整個TCP之後的優勢。
1.減少中斷:不用每個報文都產生中斷,如果10G接口這個對於CPU是很大的開銷。
2.減少memory拷貝次數,很多時候網卡的buffer和app的可以直接共享。
3.協議處理的節約,這個是當然的了。

http://en.wikipedia.org/wiki/TCP_offload_engine


How to use simple speedtest in RaspberryPi CLI

  pi@ChunchaiRPI2:/tmp $  wget -O speedtest-cli https://raw.githubusercontent.com/sivel/speedtest-cli/master/speedtest.py --2023-06-26 10:4...