在企業(yè)IT架構(gòu)中,網(wǎng)卡往往被視為一個(gè)簡(jiǎn)單的"通路設(shè)備"。很多運(yùn)維人員在排查性能瓶頸時(shí),習(xí)慣性地把目光投向CPU、內(nèi)存或磁盤(pán)I/O,卻很少意識(shí)到:網(wǎng)絡(luò)數(shù)據(jù)的處理方式,正在成為影響整機(jī)性能的關(guān)鍵變量。作為光潤(rùn)通科技的技術(shù)人員,我們希望結(jié)合日常研發(fā)與測(cè)試經(jīng)驗(yàn),深入探討一下現(xiàn)代光纖網(wǎng)卡的內(nèi)在工作機(jī)制。
網(wǎng)卡的核心任務(wù):不止于傳輸
首先要明確一個(gè)基本概念:網(wǎng)卡的本質(zhì)工作是處理數(shù)據(jù)包。但"處理"二字背后,隱藏著大量的計(jì)算任務(wù)——數(shù)據(jù)校驗(yàn)、分段重組、地址匹配、中斷通知等等。在早期的網(wǎng)絡(luò)架構(gòu)中,這些任務(wù)全部由CPU承擔(dān)。當(dāng)網(wǎng)絡(luò)流量增大時(shí),CPU被頻繁打斷去處理網(wǎng)絡(luò)數(shù)據(jù),真正用于業(yè)務(wù)計(jì)算的時(shí)間就被壓縮了。這就是業(yè)界常說(shuō)的"中斷風(fēng)暴"問(wèn)題。
現(xiàn)代企業(yè)級(jí)光纖網(wǎng)卡的進(jìn)步,恰恰體現(xiàn)在如何減少CPU的參與。這不是網(wǎng)卡廠商的營(yíng)銷(xiāo)話(huà)術(shù),而是實(shí)實(shí)在在的架構(gòu)變革。以光潤(rùn)通主推的萬(wàn)兆及25G光纖網(wǎng)卡為例,其核心價(jià)值在于通過(guò)硬件卸載,讓網(wǎng)卡承擔(dān)更多原本屬于CPU的工作。

卸載技術(shù)的具體實(shí)現(xiàn):以數(shù)據(jù)校驗(yàn)與分片為例
我們來(lái)拆解一個(gè)最常見(jiàn)的場(chǎng)景:大文件傳輸。
當(dāng)服務(wù)器需要發(fā)送一個(gè)超大文件時(shí),TCP/IP協(xié)議棧要求將數(shù)據(jù)切割成不超過(guò)1500字節(jié)的包(標(biāo)準(zhǔn)以太網(wǎng)MTU值)。如果這個(gè)切割工作由CPU完成,那么每發(fā)送一個(gè)文件,CPU都要進(jìn)行大量的運(yùn)算和內(nèi)存拷貝。
而具備TSO(TCP分段卸載) 功能的網(wǎng)卡,允許CPU一次性將大塊數(shù)據(jù)交給網(wǎng)卡,由網(wǎng)卡硬件自行完成切割、添加頭部、校驗(yàn)和計(jì)算等一系列操作。反過(guò)來(lái),在接收數(shù)據(jù)時(shí),LRO(大段合并) 功能讓網(wǎng)卡將多個(gè)小包合并成大包再交給CPU,大幅減少了CPU的處理次數(shù)。
這套機(jī)制帶來(lái)的收益是實(shí)實(shí)在在的:在同樣處理10Gbps流量時(shí),開(kāi)啟卸載功能的網(wǎng)卡,其CPU占用率可能僅有未開(kāi)啟時(shí)的三分之一甚至更低。對(duì)于數(shù)據(jù)庫(kù)服務(wù)器、文件服務(wù)器這類(lèi)對(duì)計(jì)算資源敏感的場(chǎng)景,這一差異直接影響業(yè)務(wù)響應(yīng)速度。
虛擬化環(huán)境中的硬件加速
虛擬化技術(shù)的普及,對(duì)網(wǎng)卡提出了新的挑戰(zhàn)。在傳統(tǒng)模式下,虛擬機(jī)的網(wǎng)絡(luò)數(shù)據(jù)需要經(jīng)過(guò)"虛擬機(jī)→虛擬交換機(jī)→物理網(wǎng)卡"的多重轉(zhuǎn)發(fā),每一次轉(zhuǎn)發(fā)都伴隨著CPU的模擬和復(fù)制開(kāi)銷(xiāo)。
SR-IOV(單根輸入/輸出虛擬化)技術(shù)的價(jià)值就在這里體現(xiàn)出來(lái)。這項(xiàng)技術(shù)允許一張物理網(wǎng)卡在硬件層面生成多個(gè)虛擬功能(VF),并直接將每個(gè)VF分配給對(duì)應(yīng)的虛擬機(jī)。數(shù)據(jù)從虛擬機(jī)網(wǎng)卡到物理線路之間,不再經(jīng)過(guò)虛擬交換層,實(shí)現(xiàn)了近乎直通的數(shù)據(jù)通路。
采用SR-IOV后,虛擬機(jī)的網(wǎng)絡(luò)延遲可以從毫秒級(jí)降至微秒級(jí),吞吐量也接近物理機(jī)的水平。對(duì)于運(yùn)行在虛擬化環(huán)境中的高頻交易、實(shí)時(shí)通信等應(yīng)用,這種硬件級(jí)的加速能力不可或缺。
多隊(duì)列:讓多核CPU各司其職
還有一個(gè)容易被忽視的技術(shù)點(diǎn)是RSS(接收端縮放),也就是常說(shuō)的多隊(duì)列功能。現(xiàn)在的服務(wù)器普遍擁有數(shù)十個(gè)CPU核心,如果所有網(wǎng)絡(luò)中斷都擠在一個(gè)核心上,其他核心空閑而一個(gè)核心滿(mǎn)載,就會(huì)形成新的瓶頸。
支持多隊(duì)列的光纖網(wǎng)卡,能夠?qū)⒔邮盏降臄?shù)據(jù)流分散到不同的隊(duì)列中,再由不同的CPU核心分別處理。這意味著,網(wǎng)卡流量越大,參與處理的CPU核心越多,整體處理能力反而越強(qiáng)。這種并行處理機(jī)制,是現(xiàn)代高帶寬網(wǎng)絡(luò)能夠穩(wěn)定運(yùn)行的基礎(chǔ)保障。
選型時(shí)應(yīng)關(guān)注的不是概念,是細(xì)節(jié)
回到實(shí)際的采購(gòu)選型場(chǎng)景,我們認(rèn)為不必過(guò)度糾結(jié)于"標(biāo)準(zhǔn)網(wǎng)卡"還是"智能網(wǎng)卡"的標(biāo)簽劃分。真正需要關(guān)注的是:這張網(wǎng)卡在硬件層面支持哪些卸載功能?驅(qū)動(dòng)在不同操作系統(tǒng)下的優(yōu)化程度如何?在64字節(jié)小包極限壓力測(cè)試中能否保持線速?
光潤(rùn)通科技在研發(fā)每一款光纖網(wǎng)卡時(shí),都將這些底層功能作為基礎(chǔ)配置來(lái)打磨。無(wú)論是TSO/LRO卸載、SR-IOV虛擬化加速,還是多隊(duì)列負(fù)載均衡,我們的目標(biāo)始終一致:讓網(wǎng)卡承擔(dān)更多,讓CPU專(zhuān)注于計(jì)算,讓整機(jī)性能真正釋放。
關(guān)于智能網(wǎng)卡的補(bǔ)充說(shuō)明
需要說(shuō)明的是,本文討論的卸載功能如今已是企業(yè)級(jí)標(biāo)準(zhǔn)光纖網(wǎng)卡的成熟技術(shù)。而行業(yè)中所稱(chēng)的"智能網(wǎng)卡"或"DPU",通常指在標(biāo)準(zhǔn)網(wǎng)卡基礎(chǔ)上進(jìn)一步集成了可編程處理器(如FPGA、ARM核),能夠承載更復(fù)雜的網(wǎng)絡(luò)、存儲(chǔ)、安全卸載任務(wù)。光潤(rùn)通科技在該領(lǐng)域亦有相關(guān)布局,我們將在后續(xù)文章中詳細(xì)探討。