5G CPE傳輸性能提升研究與實(shí)現(xiàn)
1、概述
如今移動(dòng)互聯(lián)網(wǎng)承載來(lái)自不同行業(yè)越來(lái)越多的數(shù)據(jù),各種不同類(lèi)型的終端接入到無(wú)線網(wǎng)絡(luò)中。隨著5G的持續(xù)演進(jìn),網(wǎng)絡(luò)的傳輸速率越來(lái)越高,網(wǎng)絡(luò)側(cè)設(shè)備可以靠提升CPU處理能力,增加CPU核等手段滿足網(wǎng)絡(luò)演進(jìn)需求,但是個(gè)人手持終端、家庭工業(yè)互聯(lián)網(wǎng)行業(yè)終端要求低成本、低功耗,傳統(tǒng)方式下CPU無(wú)法滿足1Gbps、10Gbps級(jí)別的數(shù)據(jù)處理需求。
為了解決5G CPE終端性能與成本功耗沖突問(wèn)題,本文提出了包加速技術(shù),通過(guò)對(duì)Linux進(jìn)行傳輸優(yōu)化,數(shù)據(jù)包直接通過(guò)網(wǎng)絡(luò)設(shè)備進(jìn)行轉(zhuǎn)發(fā),減少轉(zhuǎn)發(fā)路徑的同時(shí)不影響正常的NAT、路由功能,在相同CPU處理能力下提升傳輸性能。
2、5G CPE介紹
CPE全稱(chēng)Customer Premise Equipment,即“客戶終端設(shè)備”。它的作用是將移動(dòng)通信信號(hào)(4G、5G等)或有線寬帶信號(hào)轉(zhuǎn)換成本地局域網(wǎng)信號(hào),供用戶設(shè)備使用。
5G CPE屬于5G終端設(shè)備,如圖1所示它接收運(yùn)營(yíng)商基站發(fā)出的5G信號(hào),然后轉(zhuǎn)換成Wi-Fi信號(hào)或有線信號(hào),讓更多本地設(shè)備(手機(jī)、平板、電腦、工業(yè)設(shè)備)上網(wǎng)。目前的5G CPE產(chǎn)品,支持SA/NSA組網(wǎng),兼容4G/5G信號(hào)。5G CPE應(yīng)用通常以2種方式出現(xiàn):面向家庭的toC場(chǎng)景和面向企業(yè)的toB市場(chǎng)。除了提供網(wǎng)絡(luò)連接功能外,5G CPE還可以與邊緣計(jì)算結(jié)合,成為一個(gè)下沉的邊緣計(jì)算節(jié)點(diǎn),為相關(guān)設(shè)備提供算力支持。
5G CPE由5G Modem和5G Router 2部分組成,如圖2所示,5G Modem負(fù)責(zé)5G UE協(xié)議棧、基帶、射頻處理,將5G信號(hào)轉(zhuǎn)化為網(wǎng)口信號(hào)。5G Router負(fù)責(zé)路由功能,將5G Modem的網(wǎng)口數(shù)據(jù)轉(zhuǎn)化為局域網(wǎng)內(nèi)Wi-Fi或者網(wǎng)口數(shù)據(jù)。本文主要針對(duì)5G CPE Router中的Linux TCP/IP以及網(wǎng)卡驅(qū)動(dòng)進(jìn)行優(yōu)化研究,實(shí)現(xiàn)5G CPE傳輸性能的提升。
3、引言
3.1 傳統(tǒng)方式的傳輸
傳統(tǒng)方式下Linux對(duì)TCP/IP數(shù)據(jù)包收發(fā)的流程如圖3所示。
Linux的IP數(shù)據(jù)發(fā)送流程為用戶進(jìn)程通過(guò)系統(tǒng)調(diào)用進(jìn)入內(nèi)核,調(diào)用發(fā)送函數(shù),通過(guò)內(nèi)存拷貝將數(shù)據(jù)從用戶空間拷貝到內(nèi)核空間,完成發(fā)送函數(shù)處理后,將數(shù)據(jù)封裝為標(biāo)準(zhǔn)SKB_BUFF,隨后進(jìn)入到IP協(xié)議棧處理,最后到達(dá)網(wǎng)卡驅(qū)動(dòng)。網(wǎng)卡驅(qū)動(dòng)通過(guò)一次拷貝或者通過(guò)DMA將數(shù)據(jù)添加到網(wǎng)卡的發(fā)送隊(duì)列,隨后網(wǎng)卡將數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)。
Linux的IP數(shù)據(jù)接收流程為網(wǎng)絡(luò)的數(shù)據(jù)包到達(dá)網(wǎng)卡后,網(wǎng)卡將數(shù)據(jù)放到DMA中,然后產(chǎn)生一個(gè)硬中斷通知數(shù)據(jù)包到達(dá),中斷處理程序調(diào)用網(wǎng)卡驅(qū)動(dòng)中的接受函數(shù)將網(wǎng)卡中的數(shù)據(jù)包通過(guò)拷貝或者DMA操作到SKB_BUFF,隨后CPU進(jìn)入軟中斷處理。在軟中斷的處理過(guò)程中,數(shù)據(jù)包進(jìn)入IP協(xié)議棧處理后,再進(jìn)入接受隊(duì)列,應(yīng)用程序通過(guò)系統(tǒng)調(diào)用進(jìn)入到內(nèi)核的接受函數(shù),并將數(shù)據(jù)從內(nèi)核空間拷貝到用戶空間,完成了數(shù)據(jù)接收流程。
當(dāng)前基于5G CPE產(chǎn)品進(jìn)行性能優(yōu)化時(shí)發(fā)現(xiàn)網(wǎng)卡接收數(shù)據(jù)時(shí)CPU占用率高,其中主要為softirq進(jìn)程占用。使用perf性能工具分析,CPU占用高的函數(shù)主要為linux網(wǎng)絡(luò)協(xié)議棧函數(shù)流程,該路徑消耗CPU過(guò)高。因此如何降低軟中斷的CPU占用率成為性能提升的關(guān)鍵。
3.2 包加速技術(shù)原理
為了解決5G CPE傳輸?shù)男阅芷款i問(wèn)題,本文提出了包加速技術(shù),即對(duì)Linux中的TCP/IP報(bào)文進(jìn)行快速轉(zhuǎn)發(fā),達(dá)到性能提升目的。如圖4所示,網(wǎng)卡接收到數(shù)據(jù)包如果sa_conn_tuple五元組未命中,數(shù)據(jù)轉(zhuǎn)交給IP Routing路徑,按照Linux 標(biāo)準(zhǔn)IP包處理流程處理,此時(shí)IP_Forward在FORWARD hook將flow entry加入到forward entry表中。如果命中sa_conn_tuple五元組,獲取forward entry項(xiàng)里的路由項(xiàng),解析出發(fā)送網(wǎng)卡的信息,直接轉(zhuǎn)發(fā)到對(duì)端網(wǎng)卡。
其中forward entry和sa_conn_tuple的定義如下。
- forward entry用于記錄路由表信息,發(fā)送網(wǎng)卡信息。由于缺少I(mǎi)P、ARP等支持,必須包含MAC和發(fā)送網(wǎng)卡設(shè)備信息,另外使用Tuple用來(lái)辨識(shí)數(shù)據(jù)流,Age用來(lái)記錄最后一次entry hit的jiffies。
- sa_conn_tuple用五元組來(lái)匹配發(fā)送數(shù)據(jù)包。
3.3 包加速技術(shù)實(shí)現(xiàn)
如圖5所示,網(wǎng)卡接收到數(shù)據(jù)包進(jìn)入到TCP/IP協(xié)議棧,如果匹配forward entry成功,則直接轉(zhuǎn)發(fā)到對(duì)端網(wǎng)卡,如果不成功,按原來(lái)流程發(fā)送,并將sa_conn_tuple記錄到forward entry中。
具體技術(shù)實(shí)現(xiàn)點(diǎn)如表1所示。
表1 包加速關(guān)鍵技術(shù)實(shí)現(xiàn)表
3.4 包加速實(shí)驗(yàn)測(cè)試
使用5G CPE在5G NSA網(wǎng)絡(luò)下使用TCP報(bào)文進(jìn)行測(cè)試,在5G CPE傳輸數(shù)據(jù)未消耗完CPU資源的場(chǎng)景下,采用包加速技術(shù)可以降低CPU損耗。5G CPE傳輸數(shù)據(jù)流量超過(guò)CPU負(fù)載能力時(shí),采用包加速可以提升5G CPE傳輸性能。具體測(cè)試結(jié)果如表2所示,本文所采用的5G CPE TCP未優(yōu)化前可以達(dá)到上行600 Mbps下行1 080 Mbps,采用加速技術(shù)后,下行提升到1 580 Mbps,上行由于網(wǎng)絡(luò)限制,跑滿600 Mbps時(shí)CPU占用率比未加速時(shí)降低39%。
表2 包加速測(cè)試數(shù)據(jù)表
4、結(jié)束語(yǔ)
網(wǎng)絡(luò)設(shè)備所有網(wǎng)絡(luò)處理都在操作系統(tǒng)內(nèi)核運(yùn)行,既有大量的中斷,又要參與內(nèi)核調(diào)度,所以協(xié)議棧效率低,消耗了大量的CPU資源,本文提出的運(yùn)行在5G CPE設(shè)備上的TCP/IP包加速技術(shù),縮短了網(wǎng)絡(luò)數(shù)據(jù)包在Linux中的處理路徑,對(duì)數(shù)據(jù)包進(jìn)行協(xié)議加速處理,提高了網(wǎng)絡(luò)處理效率,最后試驗(yàn)結(jié)果證明,采用包加速技術(shù)后設(shè)備的傳輸性能提高,CPU資源消耗降低。
目前包加速只能用在Linux平臺(tái),支持IPv4、IPv6的上傳下載加速,支持網(wǎng)絡(luò)內(nèi)部轉(zhuǎn)發(fā)及VLAN加速,數(shù)據(jù)包優(yōu)先級(jí)調(diào)度。但是不支持點(diǎn)對(duì)點(diǎn)設(shè)備、隧道設(shè)備以及數(shù)據(jù)包大于MTU的情況,這些將在后續(xù)繼續(xù)研究。