淺談常見的網絡加速技術

發布時間:2023-05-05作者:小編閱讀:0

簡介TCP/IP協議棧。

當用戶需要向網絡發送數據時,用戶實際上是通過應用程序來完成這項工作的。應用程序將數據寫入描述對端連接的文件描述符(Filedescr✨iption)。

淺談常見的網絡加速技術

之后,位于操作系統核心的TCP/IP協議棧從文件描述符中收到數據,完成TCP分段🐻(如果是TCP連接),添加TCP、IP、Ethernethea🃏der。添加這些Header時,還涉及一些內容的計算,如驗證和序列號。

最后,由網卡驅動的操作系統核心通知網卡需要發送的數據。這里的數據長度合適,并包裝了各種協議頭的網絡數據。網卡將添加一些其他數據,以確保傳輸的可靠性。最后,網絡數據由網💯卡從網絡電纜(如果是有線連接)發送,并通過各種網絡轉發設備發送到對端。

對端,也就是網絡數據的接收端,有一個類似的過程,但方向是相反的。網卡從網線接收數據,通知系統內核獲取數據。位于系統內🥂核的TCP/IP協議棧完成驗證,剝離TCP、IP、Ethernet頭部,拼接數據。最后,將完整的數據傳輸給應用程序或最終用戶。用戶程序仍然通過文件描述符讀取數據。

因此,網絡傳輸在操作系統中的整個過程可分為三部分:

Userarea:應用程序發送和接收數據。

Kernꦬelarea:TCP/IP協議棧和系統中檢查用戶數據的Devicearea💮:網卡實際發送并接收網絡數據。

從前面的描述可以看出,Userarea和Devicearea的工作相🌌對簡單,復雜的網絡協議主要在Kernelarea處理。Ker♌nelarea的任何處理都需要CPU來完成。顯然,單位時間傳輸的數據越多,CPU需要操作的數據就越多。

近年來,網絡帶寬有了很大的改進,以太網從最初的10M增加到現在的100G,增加了1萬倍。雖然CPU近年來也有了很大的發展,但單核CPU的頻率并ไ沒有增加那么多。有些人可能會說CPU核增加了很多,但網絡數據流到多個CPU核心處理本身有一定的挑戰,另📖一方面,計算機需要處理任務越來越復雜,特別是在虛擬化引入后,計算機不僅運行應用程序,還需要運行容器、虛擬機、CPU本身的負載可能非常重。

以太網速度的提高大于CPU計算速度的提高,減少了CPU處理單個網絡包的時間。如果CPU不能及時處理網絡數據,將不可避免地影響網絡傳輸的延遲和꧙吞吐量roughput)。因此,需要一些技術/方案來減少CPU處理單個網絡包的時間。這系統中常見的網絡加速技術。

DMA

DMA的全稱是DirectMemoryAccess。DMA可以同時應用于網絡數據的發送和接收。DMA本身就是一種獨立于CPU的D🥀MA控制器的通用技術。當數據復制時,CPU只需告訴DMA控制器復制數據的起始地址和長度,然后將總線控🎉制權交給DMA控制器,即可完成數據復制,無需CPU的干預。

使用DMA,只需要很少的CPU介入網卡從內存復制數據(發送)和網卡到內存復制數據(接收)。

RSS

RSS的全稱是ReceiveSide🧔Scaling。從名稱上可以看出,這種加速技術只有在接收網絡數據時才有效。具有RSS能力的網卡有多個接收隊列。網卡可以通過不同的接收隊列接收不同的網絡流量,然后將這些隊列分配到不同的CPU核,充分利用多核處理器的能力分散網絡數據接收的負載,從而提高網絡傳輸的效率。

雖然RSS可以更好地利用多核CPU,但一方面,網絡數據的分發需要考慮TCP連接、N🍷UMA等因素,這本身就更為復雜。另一方面,它增加了網絡傳輸對CPU的影響,計算機本身有計算任務,不僅可以用來收集和發送網絡數據。在實際使用中,RSS通常局限于有限的CPU核,以隔離網絡傳輸的CPU影響。

NAPI

NAPI的全稱是NewA🌞PI,是Linux系統對網絡接收的優化。硬件I/O和CPU之間的交互通常有兩種方式:中斷和輪詢。中斷的CPU成本高,但實時性好,不需要CPU一直值班。輪詢需要CPU定期查詢I/O,CPU一直值班,而不是真正的實時。對于網卡來說,一個繁忙的網絡,如果每次網絡數據包到達時都中斷,頻繁的中斷會影響系統的整體效率。對于流量小的網絡,如果使用輪詢,一個是實時性差,會導致延遲(Latency💯)上升。另一方面,CPU需要始終值班,CPU效率低。

根據不同的場景,NAP💎I采用不同的方式作為CPU和網卡的交互方式。在大網絡流量中,通過輪詢讀取網卡數據,在小網絡流量中斷,從而提高CPU的效率。

checksumofload。

許多網絡協議,如IP、TCP和UDP,都有自己的驗證和(checksum)。傳統上,驗證和計算(發送數據包)和驗證(接收數據包)是通過CPU完成的。這對CPU有很大的影響,因為每個字節的驗證和數據都參與了計算。對于一個100g帶寬的網絡,CPU最多需要每秒計算12g左右的數據🔯。

為了減少這部分的影🐽響,目前的網卡支持驗證和計算驗證。在包裝網絡數據包時,系統核心可以跳過驗證和驗證。網卡收到網絡數據包后,根據網絡協議的規則進行計算,然后將驗證并填寫到相應的位置。

由于checksumofload的存在,在使用tcpdump等抓取包分析工具時,有時會發現抓取的包提示校準和錯誤(checksumincorect)。t♕cpdump抓取的網絡包是系統中發送給網卡的網絡包。如果驗證并放入網卡進行計算,tcpdump抓取包的時間、驗證和未計算,自然會看到錯誤的值。

Scatter/Gather。

這種加速只能用于網絡數據的發送。Scatter/Gather本身也是操作系統中的一種通用技術,也稱為vectoradresing。簡單♔地說,在數據傳輸過程中,數據讀取器可以從多個離散的內存地址讀取數據,而不需要從連續內存讀取數據。例如,當系統內核收到應用程序傳輸的原始數據時,該數據可以保持不變。然后在另一個內存中計算各級協議的Header。最后,通知網卡驅動程序從這兩個內存中復制數據。SG可以減少不必要的內存復制操作。

SG需要Checksumofload的支持,因為現在數據離散,系統內核不容易計算Checksum。

TSO

TSO全稱是TCPSegmeওntationofload,只能用于網絡數據的發送。從名稱上看,這是一種與TCP協議密切相關的方法。

應用程序可以將任何長度數據傳輸給TCP。TCP位于傳輸層,不會直接將整個用戶數據傳輸給下層協議。由于TCP本身是一🍬種可靠的傳輸協議,而IP/Ethernet在下層協議中不可靠,因此下層協議在數據傳輸過程中可能會丟失數據。TCP不僅需要保證傳輸的可靠性,還需要盡可能提高傳輸的成功率,以保證效率。TCP的方法是將其整合到零并打破。

在開始后ꩵ面的描述之前,先說兩個相似且容易混淆的詞。一個是Segmentation(分段),另一個是Fragmentation(分段)。TCP協議在將用戶數據傳輸到IP層之前,會根據MSS(Maximumsention)將大段數據分成多個小段。這個過程是Segmention,分離出來的數據是Segments。由于MTU(Maximumtionsionsiontiontion)的限制,IP協議將上層傳輸的數據和超過MTU的數據分成多個分段。這個過程是Fragmentio෴n,分離出來的數據是Fragments。這兩個過程都是大數據分成多個小數據,區別是一個在TCP(L4),一個在IP(L3)。

然后回來,如果TCP直接將整個數據傳輸給下層協議,假設是15000字節的用戶數據,網卡的MTU是1500。考慮到Header,IP層將數據分為11個IPFr🌌agments在網絡上傳輸。為了簡單描述,我們假設它被分為10個IPFragments。假設每個IPpacket的傳輸成功率為90%,因為TCP協議有自己的驗證和驗證。在數據接收端,IP協議必須收集完整的15000字節用戶數據,并拼接傳輸給TCP,才能成功接收數據。這樣,一次傳🦩輸成功的概率成功的概率為(90%)^10=34%。一旦TCP接收端未能收到數據,發送端需要重新發送整個15000字節。假設發送4次,即總共6000字節,傳輸成功率可提高到80%。

如果TCP協議本身將數據分為小段,并逐段傳輸?正如前面提到的,TCP根據MSS完成Segmentation,MSS通常根據MTU計算,以確保TCPSegment不需要在IP協議層進行Fragmentation。為了描述簡單,我們仍然拋開網絡協議的頭部。現在TCP將應用層的15000字節數據分為10個Segments。每個Segment對應一個IPpacket,成功率仍然是90%。如果Segment發送失敗,TCP只需重新傳輸當前的Segment,以前成功發送的TCPSegment不需要重新傳輸。這樣,對于每個Segment,只要發送兩次,成功率就可以達到99%。假設每個Segment發送兩次,相應的應用層數據發送兩次,即3萬字節,傳輸成功率可達到(99%)^10=90%。也就是說,TCPSegmentation🍌傳輸后,需要發送的數據量更少,成功率更高。當然,在實踐中,由于TCPSegmentation,每個TCPSegment都會增加TCP頭部,相應的傳輸數據會更多。

億聯云作為國內知名的云服務綜合解決方案提供商,擁有包括數據中心專線、互聯網專線MPLS專線、云專線以及SD-WAN在內的多種產品,可為您提供專業、靈活、多樣性的專線及SD-WAN組網解決方案,如有疑問,歡迎致電010-53390328詳細咨詢!


免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,請聯系站長郵箱:shaw✃[email protected]進行舉報🤪,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

標題:淺談常見的網絡加速技術

TAG標簽:網絡傳輸

地址://beijingyml.cn/article/20220505163545.html

上一篇:怎樣建設企業組網的網絡架構
下一篇:三分鐘帶你全面了解BGP帶寬
返回頂部