亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創(chuang)

GRO、GSO……的精確解釋

2023-06-28 07:44:08
314
0

關(guan)于GRO、GSO、TSO、UFO、LRO等概念,網上有很多解(jie)釋,但個人感覺都解(jie)釋得不(bu)很清(qing)楚。這里個人做個總結,希望能幫助到需要(yao)幫助的人。

縮寫 概念 解釋
TSO

TCP Segmentation Offload

利用(yong)網卡對TCP數據包(bao)進行(xing)分片,也叫做(zuo)LSO。而當網卡支持TSO時(shi),TCP層會逐漸增大(da)mss(總(zong)是整數倍(bei)數增加(jia)),當TCP層向(xiang)下發(fa)送大(da)塊數據時(shi),僅僅計算TCP頭,網卡接到到了IP層傳(chuan)下的大(da)數 據包(bao)后自己重新分成若干個IP數據包(bao),添(tian)加IP頭(tou),復(fu)制TCP頭(tou)并且重新計(ji)算(suan)校驗(yan)和等(deng)相關(guan)數據,這樣就把一(yi)部(bu)分(fen)CPU相關的處(chu)理(li)工作轉移到由網卡來處(chu)理(li)。 內(nei)核TCP/IP協議棧也必(bi)須(xu)考慮下發包數和實際包數不(bu)一(yi)致的情(qing)況,例(li)如(ru)處(chu)理(li)擁塞控制算(suan)法時必(bi)須(xu)做一(yi)些(xie)特殊的處(chu)理(li)等等。

可(ke)見,TSO執(zhi)行的(de)是TCP分段,而不是分片!

UFO

UDP Segmentation Offload

利(li)用網(wang)卡對UDP數據(ju)(ju)包進(jin)行(xing)(xing)分片。UFO全稱(cheng)是(shi)UDP fragmentation offload。從名字可以看出(chu),這是(shi)針對UDP的(de)優化(hua)。但是(shi)不像(xiang)TCP,UDP沒(mei)有(you)Segmentation的(de)過程,用戶程序發給UDP多長的(de)數據(ju)(ju)(當然要控(kong)制在64K以內),UDP都會(hui)轉給IP層(ceng)。IP層(ceng)會(hui)根據(ju)(ju)MTU進(jin)行(xing)(xing)Fragmentation。UFO使(shi)得網(wang)絡設備,例如網(wang)卡,可以將一個超(chao)(chao)長的(de)UDP數據(ju)(ju)段(超(chao)(chao)過MTU),分成多個IPv4分片(fragment)。因為在網(wang)卡做了(le)(le),所以,CPU的(de)運算(suan)量被節省下(xia)來了(le)(le)。

注(zhu)意:這(zhe)里(li)是(shi)IP層分片,并不(bu)復制UDP頭(tou)。

GSO

Generic Segmentation Offload

GSO是(shi)TSO的增(zeng)強(qiang) ,GSO不只(zhi)針對(dui)(dui)TCP,對(dui)(dui)任意協議。比TSO更通用(yong),推遲數據分片(pian)(pian)直至(zhi)發送到網卡(ka)驅動之前,此時會檢(jian)查網卡(ka)是(shi)否支持(chi)分片(pian)(pian)功(gong)能(如TSO、UFO),如果支持(chi)直接發送到網卡(ka),如果不支持(chi)就(jiu)進行分片(pian)(pian)后再(zai)發往(wang)網卡(ka)。

LRO

Large Receive Offload

通過將接收到的多個TCP數據聚合成一個大的數據包,然后傳遞給網絡協議棧處理,以減少上層協議棧處理 開銷,提高系統接收TCP數據包的能力。注意,這個也是段的(de)聚合,而非片的(de)聚合。

GRO

Generic Receive Offload

跟LRO類似,克服了LRO的一些缺點,更通用。后續的驅動都使用GRO的接口,而不是LRO。
看了
DPDK的代碼:gro_tcp4_reassemble 里面其實只聚合分段,不聚合分片。

總結:

  1. 對于TCP而言(yan),無論是TSO還(huan)是(shi)LRO,都是(shi)工作(zuo)在4層的。是分段而不是分片。
  2. UFO被合并到了(le)GSO。
  3. LRO由(you)于不(bu)好實現,已經從很多(duo)網卡上刪除了(le)(也就(jiu)是說,很多(duo)網卡是不(bu)支持LRO的,這(zhe)部(bu)分功(gong)能在GRO中(zhong)被覆蓋)。
  4. GROGSO在虛擬機上(shang)同樣有效(xiao)。TCP在大量發包的情況下,可以看(kan)出效果(guo)。

  5. 當前多(duo)數(shu)硬件(jian)都不(bu)支持分片聚合,故,所謂的URO其實(shi)是不(bu)存在(zai)的。而對于(yu)TCP而言,也(ye)只是聚合分段(duan),分片聚合一般(ban)也(ye)是不(bu)存在(zai)的。

參(can)考(kao)鏈(lian)接:

//zhuanlan.zhihu.com/p/44683790

//blog.csdn.net/Wanli_Xing/article/details/102893871

//rtoax.blog.csdn.net/article/details/108748689

0條評論
0 / 1000
李****一
10文章(zhang)數(shu)
2粉(fen)絲數(shu)
李****一
10 文章 | 2 粉絲
李****一
10文(wen)章數
2粉(fen)絲數
李****一
10 文(wen)章 | 2 粉絲
原創

GRO、GSO……的精確解釋

2023-06-28 07:44:08
314
0

關(guan)于(yu)GRO、GSO、TSO、UFO、LRO等概念,網上(shang)有很多解釋(shi),但個(ge)人(ren)感覺都解釋(shi)得不(bu)很清楚。這里個(ge)人(ren)做個(ge)總結,希望能(neng)幫助到需(xu)要(yao)幫助的人(ren)。

縮寫 概念 解釋
TSO

TCP Segmentation Offload

利用網(wang)卡對(dui)TCP數據包進行分片,也叫做LSO。而當(dang)網卡支(zhi)持TSO時(shi),TCP層會逐(zhu)漸增大mss(總是整數倍數增加),當(dang)TCP層向下發送大塊(kuai)數據時(shi),僅(jin)僅(jin)計算TCP頭,網卡接(jie)到到了IP層傳下的大數 據包(bao)(bao)后(hou)自己(ji)重新(xin)分成若干(gan)個IP數據包(bao)(bao),添加IP頭(tou)(tou),復制TCP頭(tou)(tou)并且重新(xin)計(ji)算校驗和等相關數據,這樣就把(ba)一部分CPU相關的(de)(de)處理工作轉移到由(you)網卡來(lai)處理。 內(nei)核(he)TCP/IP協(xie)議棧也必須(xu)考慮下(xia)發包(bao)數和(he)實際包(bao)數不一致(zhi)的(de)(de)情況,例如處理擁塞控制算法(fa)時必須(xu)做一些特殊的(de)(de)處理等等。

可(ke)見(jian),TSO執行的是(shi)TCP分段(duan),而不是分片(pian)!

UFO

UDP Segmentation Offload

利用(yong)網卡對(dui)UDP數(shu)據(ju)(ju)包進行分片。UFO全稱是UDP fragmentation offload。從(cong)名字可以(yi)看出,這是針對UDP的優化(hua)。但是不像TCP,UDP沒有Segmentation的過程(cheng),用戶程(cheng)序發(fa)給(gei)UDP多(duo)(duo)長的數(shu)據(ju)(ju)(當然要控制在64K以(yi)內(nei)),UDP都(dou)會轉給(gei)IP層。IP層會根據(ju)(ju)MTU進行Fragmentation。UFO使得網(wang)絡設備,例如網(wang)卡(ka),可以(yi)將一個(ge)超長的UDP數(shu)據(ju)(ju)段(超過MTU),分成多(duo)(duo)個(ge)IPv4分片(fragment)。因為(wei)在網(wang)卡(ka)做了(le),所以(yi),CPU的運算量被節省下(xia)來(lai)了(le)。

注意:這里是IP層分片,并不復制UDP頭。

GSO

Generic Segmentation Offload

GSO是TSO的增強 ,GSO不(bu)只針對(dui)TCP,對(dui)任意(yi)協議(yi)。比TSO更通用,推遲(chi)數據分片(pian)直(zhi)至發送到網(wang)卡(ka)(ka)驅動之前,此(ci)時會檢查(cha)網(wang)卡(ka)(ka)是否支持(chi)分片(pian)功能(neng)(如TSO、UFO),如果(guo)支持(chi)直(zhi)接發送到網(wang)卡(ka)(ka),如果(guo)不(bu)支持(chi)就進行分片(pian)后再發往(wang)網(wang)卡(ka)(ka)。

LRO

Large Receive Offload

通過將接收到的多個TCP數據聚合成一個大的數據包,然后傳遞給網絡協議棧處理,以減少上層協議棧處理 開銷,提高系統接收TCP數據包的能力。注意(yi),這個(ge)也(ye)是段的聚(ju)合,而非片(pian)的聚(ju)合。

GRO

Generic Receive Offload

跟LRO類似,克服了LRO的一些缺點,更通用。后續的驅動都使用GRO的接口,而不是LRO。
看了
DPDK的代(dai)碼(ma):gro_tcp4_reassemble 里面其實只聚合分段,不聚合分片。

總結:

  1. 對(dui)于(yu)TCP而言(yan),無論是TSO還是LRO,都是工(gong)作在4層的。是分段而不是分片。
  2. UFO被(bei)合并(bing)到了GSO。
  3. LRO由于(yu)不(bu)好實(shi)現,已經從很多網卡上刪(shan)除(chu)了(也就是說(shuo),很多網卡是不(bu)支持LRO的,這部分功能在GRO中被覆(fu)蓋)。
  4. GROGSO在虛擬機上同樣有效。TCP在(zai)大量(liang)發包(bao)的情況下(xia),可以看出效果。

  5. 當前多數硬件都不支(zhi)持分片聚合(he),故,所謂(wei)的URO其實(shi)是不存在(zai)的。而對(dui)于TCP而言,也只(zhi)是聚合(he)分段(duan),分片聚合(he)一般也是不存在(zai)的。

參考(kao)鏈接(jie):

//zhuanlan.zhihu.com/p/44683790

//blog.csdn.net/Wanli_Xing/article/details/102893871

//rtoax.blog.csdn.net/article/details/108748689

文章來自個人專欄
文章 | 訂閱(yue)
0條評論
0 / 1000
請輸入你的評論
0
0