• 
    

    
    

      99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看

      ?

      無鎖結(jié)構(gòu)在國(guó)產(chǎn)防火墻上的應(yīng)用與研究*

      2020-12-23 06:12:52原蓓蓓
      通信技術(shù) 2020年10期
      關(guān)鍵詞:線程調(diào)用字節(jié)

      李 雷,焦 哲,原蓓蓓,艾 磊

      (1.中國(guó)電子科技集團(tuán)公司第三十研究所,四川 成都 610041;2.成都衛(wèi)士通信息產(chǎn)業(yè)股份有限公司,四川 成都 610041)

      0 引言

      隨著網(wǎng)絡(luò)技術(shù)的不斷發(fā)展,傳統(tǒng)的基于內(nèi)核的報(bào)文收發(fā)方式造成大量的性能開銷,網(wǎng)絡(luò)傳輸速率很難得到提高。為了實(shí)現(xiàn)網(wǎng)絡(luò)的高速傳輸,Intel 設(shè)計(jì)了高性能的數(shù)據(jù)包處理框架 DPDK(Data Plane Development Kit)。近年來,通過不斷地對(duì)dpdk 技術(shù)進(jìn)行改造,在國(guó)產(chǎn)申威處理器平臺(tái)上已實(shí)現(xiàn)了網(wǎng)絡(luò)數(shù)據(jù)的高速轉(zhuǎn)發(fā)[1]。

      隨著國(guó)產(chǎn)多核處理器的普遍使用,高并發(fā)數(shù)據(jù)結(jié)構(gòu)變得越來越重要[2]。為了充分發(fā)揮多核處理器的性能,軟件人員必須編寫可擴(kuò)展的并發(fā)程序才能使其在多核環(huán)境下具有高的性能。并發(fā)程序編寫存在一個(gè)重要問題,就是多個(gè)線程/進(jìn)程對(duì)共享資源的同步訪問問題。網(wǎng)絡(luò)安全設(shè)備多核并行協(xié)議棧運(yùn)行過程中,不可避免地要在核間共享數(shù)據(jù),比如:ddos 統(tǒng)計(jì)表,nat 轉(zhuǎn)換表,aspf 表等。保證數(shù)據(jù)一致性的通用方法是加鎖,但鎖機(jī)制的引入帶來了數(shù)據(jù)處理的串行化,大大降低了安全設(shè)備的網(wǎng)絡(luò)轉(zhuǎn)發(fā)性能,同時(shí)又增加死鎖和數(shù)據(jù)競(jìng)爭(zhēng)的風(fēng)險(xiǎn)。近年來,工程人員開始對(duì)無鎖(lockfree)數(shù)據(jù)結(jié)構(gòu)進(jìn)行研究,使用CAS(compare and swap)細(xì)粒度同步原語的無鎖數(shù)據(jù)結(jié)構(gòu)能夠擺脫死鎖和數(shù)據(jù)競(jìng)爭(zhēng)問題,更重要的是它對(duì)多核是可擴(kuò)展的[3]。

      針對(duì)以上問題與現(xiàn)狀,結(jié)合對(duì)國(guó)產(chǎn)處理器平臺(tái)的研究與應(yīng)用[4],本文提出了一種無鎖結(jié)構(gòu)在國(guó)產(chǎn)防火墻上的應(yīng)用方案。在并行處理的協(xié)議棧間使用無鎖結(jié)構(gòu)進(jìn)行數(shù)據(jù)共享,減少數(shù)據(jù)競(jìng)爭(zhēng)時(shí)的等待時(shí)間,從而提高網(wǎng)絡(luò)轉(zhuǎn)發(fā)速率。實(shí)驗(yàn)表明,該方案在小包(64 字節(jié))數(shù)據(jù)轉(zhuǎn)發(fā)時(shí),吞吐率性能比常規(guī)方法提升23.68%。

      1 關(guān)鍵技術(shù)

      程序方法的調(diào)用到執(zhí)行完成需要時(shí)間,從某個(gè)方法調(diào)用事件的開始到執(zhí)行結(jié)束過程中,當(dāng)這個(gè)方法調(diào)用事件開始而執(zhí)行未結(jié)束,稱其調(diào)用是未決的。并發(fā)程序方法的執(zhí)行可以相互重疊,而單線程程序方法的執(zhí)行總是順序無重疊的。在一個(gè)程序中,當(dāng)方法的未決調(diào)用能夠延遲其他方法的未決調(diào)用時(shí),我們稱其是阻塞的;相反,當(dāng)方法的未決調(diào)用不會(huì)延遲其他方法的未決調(diào)用時(shí),我們稱其是非阻塞的。在一個(gè)程序中,一個(gè)方法的無限次調(diào)用能夠在有限次內(nèi)完成,我們稱其是無鎖(lockfree)的;一個(gè)方法的每次調(diào)用都能在有限次內(nèi)完成,我們稱其是無等待(waitfree)的;一個(gè)方法調(diào)用存在著關(guān)于它的操作次數(shù)的確定界限,我們稱其是有界無等待(waitfree bounded)的[3]。無鎖結(jié)構(gòu)實(shí)現(xiàn)的方法也是無鎖的,其實(shí)現(xiàn)的基礎(chǔ)是CAS,且大多數(shù)國(guó)產(chǎn)處理器已硬件實(shí)現(xiàn)。CAS 可以保證需要更新的地址在沒有被其他線程或進(jìn)程改動(dòng)過的情況下安全地寫入新數(shù)據(jù),保證讀寫操作的一致性,不出現(xiàn)臟數(shù)據(jù)。而這個(gè)地址內(nèi)存空間也是我們通常在鎖機(jī)制中需要加鎖重點(diǎn)保護(hù)的。

      2 國(guó)產(chǎn)防火墻無鎖結(jié)構(gòu)的實(shí)現(xiàn)

      2.1 國(guó)產(chǎn)防火墻簡(jiǎn)介

      基于dpdk 技術(shù)的國(guó)產(chǎn)防火墻架構(gòu)如圖1 所示。

      圖1 國(guó)產(chǎn)防火墻架構(gòu)

      該防火墻在國(guó)產(chǎn)化多核處理器核和國(guó)產(chǎn)化多隊(duì)列網(wǎng)卡的基礎(chǔ)上,對(duì)dpdk 技術(shù)進(jìn)行改造,構(gòu)建一個(gè)高速的二層轉(zhuǎn)發(fā)平臺(tái)。在dpdk 驅(qū)動(dòng)上構(gòu)建一個(gè)多核并行運(yùn)行的用戶態(tài)協(xié)議棧,各協(xié)議棧與處理器核綁定且獨(dú)立運(yùn)行,并行協(xié)議棧間通過共享數(shù)據(jù)進(jìn)行傳遞信息,運(yùn)用無鎖結(jié)構(gòu)及其操作進(jìn)行數(shù)據(jù)同步,保證一致性。

      2.2 無鎖結(jié)構(gòu)的實(shí)現(xiàn)方法

      (1)初始化

      設(shè)備上電啟動(dòng)過程中,由協(xié)議棧0 所運(yùn)行的線程或進(jìn)程在dpdk 大頁中使用rte_memzone_reserve方法申請(qǐng)共享內(nèi)存,并進(jìn)行初始化。

      (2)共享數(shù)據(jù)的獲取

      協(xié)議棧并行運(yùn)行時(shí),各個(gè)協(xié)議棧使用rte_memzone_lookup 方法獲取共享內(nèi)存,再根據(jù)其具體使用的數(shù)據(jù)結(jié)構(gòu)方法獲取所需的數(shù)據(jù)。比如:hash表可通過hash 值獲取。

      (3)共享數(shù)據(jù)的更新

      各個(gè)協(xié)議棧在獲取共享內(nèi)存后采用無鎖機(jī)制對(duì)共享數(shù)據(jù)進(jìn)行操作。無鎖化機(jī)制的核心原語為CAS,其在大多數(shù)國(guó)產(chǎn)處理器中已經(jīng)實(shí)現(xiàn)。比如龍芯平臺(tái)的CAS 原語實(shí)現(xiàn)方法如下:

      在應(yīng)用程序的線程或進(jìn)程中,對(duì)64 位共享數(shù)據(jù)的更新方法如下:

      其中A 為被更新的數(shù)據(jù),A*為更新后的數(shù)據(jù)。

      2.3 性能分析

      相比于加鎖的方式,采用硬件原語CAS 實(shí)現(xiàn)的無鎖數(shù)據(jù)結(jié)構(gòu)在進(jìn)行操作時(shí),將縮短數(shù)據(jù)競(jìng)爭(zhēng)時(shí)的等待時(shí)間,從而提高網(wǎng)絡(luò)轉(zhuǎn)發(fā)速率。在程序運(yùn)行的整個(gè)周期中,數(shù)據(jù)競(jìng)爭(zhēng)等待時(shí)間減少,則并行可執(zhí)行部分將變大。著名的阿姆達(dá)爾定律指出:數(shù)據(jù)結(jié)構(gòu)并發(fā)程序的優(yōu)化取決于并發(fā)可執(zhí)行部分占整個(gè)程序的比例和并發(fā)線程數(shù),其表達(dá)式如下[5]:

      其中,S為程序加速比,n為并發(fā)線程數(shù),P為并發(fā)可執(zhí)行部分。當(dāng)并發(fā)線程數(shù)n一定時(shí),并發(fā)可執(zhí)行部分P越大,則程序加速比S越大。

      無鎖結(jié)構(gòu)降低了數(shù)據(jù)競(jìng)爭(zhēng)的等待時(shí)間,則增大了程序并發(fā)可執(zhí)行部分,進(jìn)而提高了程序加速比。程序加速比的提高,使并行協(xié)議棧的網(wǎng)絡(luò)處理能力增強(qiáng)。

      3 實(shí)驗(yàn)與分析

      3.1 實(shí)驗(yàn)環(huán)境

      實(shí)驗(yàn)硬件平臺(tái)采用8 核龍芯3A3000 處理器,主頻1399MHz,PCIE 接口為4 口、8 隊(duì)列SF400T千兆網(wǎng)卡,中標(biāo)麒麟操作系統(tǒng)。

      3.2 吞吐率測(cè)試

      采用spirent testcenter 儀表進(jìn)行rfc2544 吞吐率測(cè)試。多核并行協(xié)議棧環(huán)境下,核間數(shù)據(jù)競(jìng)爭(zhēng),將有鎖機(jī)制與無鎖機(jī)制下的吞吐率進(jìn)行對(duì)比。實(shí)驗(yàn)采用dpdk 提供的共享內(nèi)存rte_memzone,dpdk 讀寫鎖rte_rwlock_write_lock,cas64 原語及無鎖方法。實(shí)驗(yàn)分別測(cè)試udp 包長(zhǎng)為64 字節(jié)、128 字節(jié)、256 字節(jié)、512 字節(jié)、1024 字節(jié)、1280 字節(jié)、1518 字節(jié)時(shí)的網(wǎng)絡(luò)吞吐率,其儀表連接關(guān)系如圖2 所示。

      圖2 實(shí)驗(yàn)儀表連接示意圖

      Spirent TestCenter 的PORT1 和PORT2 通過直連網(wǎng)線與國(guó)產(chǎn)防火墻的ETH1 和ETH2 相連。

      實(shí)驗(yàn)采用統(tǒng)計(jì)UDP 目的端口包數(shù)的方法使共享數(shù)據(jù)產(chǎn)生競(jìng)爭(zhēng),處理器核數(shù)為8,端口數(shù)為4 且儀表使用遞增的方式發(fā)包,則理論上同一時(shí)刻有2個(gè)線程或進(jìn)程競(jìng)爭(zhēng)一個(gè)數(shù)據(jù),此時(shí)測(cè)得結(jié)果如表1所示:

      表1 吞吐率結(jié)果表

      防火墻在全速轉(zhuǎn)發(fā)的情況下,無鎖結(jié)構(gòu)同步機(jī)制比加鎖結(jié)構(gòu)同步機(jī)制的性能在包長(zhǎng)64 字節(jié)時(shí)提升23.68%,包長(zhǎng)128 字節(jié)時(shí)提升22.61%。包長(zhǎng)為256、512、1024、1280、1518 時(shí),無鎖結(jié)構(gòu)的同步機(jī)制與加鎖結(jié)構(gòu)的同步機(jī)制轉(zhuǎn)發(fā)速率均達(dá)到限速。

      3.3 數(shù)據(jù)競(jìng)爭(zhēng)時(shí)延測(cè)試

      按照?qǐng)D2 儀表連接方法,儀表以1Gb/s 速度發(fā)送500000 包的同時(shí),防火墻程序記錄下并發(fā)不可執(zhí)行部分(更新共享數(shù)據(jù))所消耗的時(shí)間。程序使用CPU 的運(yùn)行周期作為時(shí)間單位進(jìn)行統(tǒng)計(jì),將加鎖和無鎖環(huán)境下更新共享數(shù)據(jù)所消耗的時(shí)間進(jìn)行對(duì)比,其測(cè)試結(jié)果如表2 所示。

      表2 時(shí)間消耗表

      從實(shí)驗(yàn)結(jié)果可以看出,無鎖環(huán)境更新共享數(shù)據(jù)所消耗的時(shí)間短于有鎖環(huán)境,則根據(jù)阿姆達(dá)爾定律可知,多核并行協(xié)議棧并行可執(zhí)行部分大,程序加速比高,有利于網(wǎng)絡(luò)轉(zhuǎn)發(fā)性能的提高。

      4 結(jié)語

      本文在國(guó)產(chǎn)化背景下,提出了一種無鎖結(jié)構(gòu)在國(guó)產(chǎn)防火墻上的應(yīng)用方案。實(shí)驗(yàn)表明,其提高了防火墻在實(shí)際工作中的網(wǎng)絡(luò)吞吐率,且為后續(xù)構(gòu)建國(guó)產(chǎn)化高速網(wǎng)絡(luò)安全平臺(tái)提供指導(dǎo)。尤其是無鎖化共享數(shù)據(jù)結(jié)構(gòu)的應(yīng)用進(jìn)一步提高了防火墻這類安全設(shè)備的實(shí)際網(wǎng)絡(luò)吞吐率。但是,本方案在設(shè)計(jì)和實(shí)驗(yàn)過程中并未針對(duì)ABA 問題進(jìn)行分析,這是后續(xù)工作中需要研究的要點(diǎn)之一。

      猜你喜歡
      線程調(diào)用字節(jié)
      No.8 字節(jié)跳動(dòng)將推出獨(dú)立出口電商APP
      核電項(xiàng)目物項(xiàng)調(diào)用管理的應(yīng)用研究
      No.10 “字節(jié)跳動(dòng)手機(jī)”要來了?
      LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
      簡(jiǎn)談MC7字節(jié)碼
      淺談linux多線程協(xié)作
      基于系統(tǒng)調(diào)用的惡意軟件檢測(cè)技術(shù)研究
      利用RFC技術(shù)實(shí)現(xiàn)SAP系統(tǒng)接口通信
      Linux線程實(shí)現(xiàn)技術(shù)研究
      人類進(jìn)入“澤它時(shí)代”
      岑巩县| 鄂托克旗| 英德市| 西和县| 信阳市| 陵水| 竹山县| 阿尔山市| 玛纳斯县| 扎鲁特旗| 黔南| 长兴县| 新巴尔虎左旗| 伊宁县| 瑞金市| 嘉黎县| 连南| 平安县| 淳安县| 昌吉市| 汕头市| 邹平县| 铜陵市| 襄垣县| 武鸣县| 峨边| 出国| 黑河市| 屏东县| 衢州市| 凌海市| 萍乡市| 荥经县| 乐至县| 新竹市| 吉林市| 南通市| 义乌市| 子洲县| 仁怀市| 普定县|