張 亮,胡 芡,張?jiān)伹?/p>
(中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041)
針對(duì)文件在不同網(wǎng)系間跨網(wǎng)傳輸?shù)臉I(yè)務(wù)需求,跨網(wǎng)安全性成為文件跨網(wǎng)傳輸中的核心問題[1-2]。除了病毒查殺、惡意代碼掃描、深度檢測等傳統(tǒng)的安全防范手段,跨網(wǎng)文件傳輸?shù)男诺绤f(xié)議也成為網(wǎng)絡(luò)安全防范的重要關(guān)注點(diǎn)。近些年,跨網(wǎng)文件傳輸?shù)膯蜗蚬鈧鬏敗⒐獗P擺渡、內(nèi)存擺渡[3-4]等文件傳輸系統(tǒng)的應(yīng)用,從一定程度上解決了跨網(wǎng)系統(tǒng)文件傳輸信道協(xié)議方面的安全問題,降低了安全風(fēng)險(xiǎn)。但是隨著應(yīng)用業(yè)務(wù)系統(tǒng)的不斷拓展,對(duì)文件傳輸?shù)男阅芤笠苍絹碓礁?,傳統(tǒng)的光擺、內(nèi)存擺等系統(tǒng)的傳輸帶寬和時(shí)延等性能指標(biāo)難以滿足業(yè)務(wù)系統(tǒng)的需求。目前業(yè)界廣泛使用的類似于文件傳輸協(xié)議(File Transfer Protocol,F(xiàn)TP)、簡單文件傳輸協(xié)議(Trivial File Transfer Protocol,TFTP)等基于標(biāo)準(zhǔn)網(wǎng)絡(luò)的文件傳輸協(xié)議與擺渡系統(tǒng)相比,在傳輸帶寬和時(shí)延等性能指標(biāo)方面具有明顯的優(yōu)勢。但是通用的開源文件傳輸協(xié)議在網(wǎng)絡(luò)安全性方面大打折扣,被攻擊和隱秘竊取的風(fēng)險(xiǎn)極高[5],所以這類文件傳輸協(xié)議也不能滿足現(xiàn)代跨網(wǎng)文件傳輸?shù)男枨?。因此,急需一套適用于現(xiàn)代跨網(wǎng)交換系統(tǒng)的,且具有傳輸高效、協(xié)議私有、部署靈活等特征的文件傳輸系統(tǒng)。本文基于某跨網(wǎng)傳輸系統(tǒng)上的研究成果和已有的跨網(wǎng)傳輸系統(tǒng)平臺(tái),設(shè)計(jì)并實(shí)現(xiàn)一種基于私有傳輸協(xié)議的高速高效文件傳輸架構(gòu)。該架構(gòu)具有單文件并發(fā)、多文件并傳等特征,以解決當(dāng)代跨網(wǎng)文件傳輸?shù)耐袋c(diǎn)。
從文件傳輸?shù)陌踩?、可靠性、高效性出發(fā),同時(shí)考慮文件傳輸?shù)母卟l(fā)、高帶寬、靈活適配部署能力,提出了一套基于分層模型的私有文件傳輸協(xié)議。該文件傳輸協(xié)議區(qū)別于現(xiàn)有FTP等開源協(xié)議,從傳輸協(xié)議層面降低了被網(wǎng)絡(luò)攻擊和感染的風(fēng)險(xiǎn),滿足跨網(wǎng)文件傳輸?shù)母甙踩枨?。分層文件傳輸?shù)哪P图軜?gòu)既保證了文件傳輸?shù)目煽啃?,又滿足了適配部署的靈活性需求,可適用于跨網(wǎng)傳輸?shù)忍囟▓鼍?。同時(shí),該文件傳輸協(xié)議模型可以無縫適配文件并發(fā)傳輸?shù)恼{(diào)度和管理,保證了文件傳輸?shù)男阅芤?。此外,在該分層文件傳輸協(xié)議模型中的不同傳輸層面,可以友好的集成和擴(kuò)展第三方功能模塊,部署應(yīng)用到現(xiàn)代跨網(wǎng)交換系統(tǒng)中。文件安全傳輸分層協(xié)議模型如圖1所示。
在該文件傳輸協(xié)議模型中,文件幀作為最小的傳輸單元,一個(gè)文件可被拆分成若干個(gè)文件幀。文件幀的長度可以根據(jù)實(shí)際系統(tǒng)和網(wǎng)絡(luò)環(huán)境作相應(yīng)的調(diào)整,每個(gè)文件幀傳輸相互獨(dú)立,彼此互不影響互不依賴,且每個(gè)幀在傳輸過程中沒有先后順序要求。因此使得文件幀高速并發(fā)傳輸亂序成為了可能,同時(shí)也可適用于不同時(shí)延不同帶寬不同路徑的復(fù)雜網(wǎng)絡(luò)環(huán)境。
幀傳輸層主要負(fù)責(zé)文件幀的收發(fā),可根據(jù)不同的跨網(wǎng)應(yīng)用環(huán)境定制私有的幀協(xié)議、選擇校驗(yàn)和應(yīng)答機(jī)制、增減幀頭特定信息、選擇性適配不同跨網(wǎng)傳輸信道。
文件傳輸層主要完成單個(gè)文件的收發(fā)、單文件的幀拆分、單文件的幀還原、文件幀傳輸?shù)牟l(fā)任務(wù)分配和單文件的完整性校驗(yàn),在文件傳輸層可以集成文件本身安全性相關(guān)的病毒查殺、惡意代碼掃描、內(nèi)容深度查等功能模塊。
傳輸控制層主要負(fù)責(zé)文件傳輸管理、文件收發(fā)管理以及多文件任務(wù)時(shí)文件發(fā)送隊(duì)列任務(wù)的調(diào)度和維護(hù),在這一層可根據(jù)需求增加文件自動(dòng)同步、文件標(biāo)簽機(jī)制等文件業(yè)務(wù)邏輯功能,拓展應(yīng)用場景。
在該文件傳輸架構(gòu)中,為了滿足高性能指標(biāo)要求、實(shí)現(xiàn)單文件高速并發(fā)、多文件多路并傳,在此提出了兩套任務(wù)并發(fā)管理框架:一種為基于任務(wù)與任務(wù)處理器相統(tǒng)一的多任務(wù)并發(fā)管理框架,另一種為基于任務(wù)與任務(wù)處理器相分離的多任務(wù)并發(fā)管理框架。多任務(wù)管理框架可以完成多任務(wù)的隊(duì)列等待、任務(wù)自動(dòng)分配、任務(wù)自動(dòng)加載、不同任務(wù)間自動(dòng)調(diào)度、多任務(wù)并發(fā)執(zhí)行等功能。結(jié)合提出的分層文件傳輸協(xié)議模型,采用基于任務(wù)與任務(wù)處理器相統(tǒng)一的多任務(wù)并發(fā)框架來實(shí)現(xiàn)多文件多路并傳,采用基于任務(wù)與任務(wù)處理器相分離的多任務(wù)并發(fā)框架實(shí)現(xiàn)單文件多幀并發(fā)傳輸。
此種多任務(wù)并發(fā)框架主要包含任務(wù)等待隊(duì)列、當(dāng)前任務(wù)執(zhí)行集合、任務(wù)調(diào)度幾個(gè)關(guān)鍵模塊。任務(wù)對(duì)象中既包含任務(wù)的必要參數(shù)信息,也包含任務(wù)執(zhí)行流程。當(dāng)任務(wù)調(diào)度激活后,自動(dòng)開始異步執(zhí)行任務(wù)流程,任務(wù)流程執(zhí)行完成后通知任務(wù)調(diào)度器釋放已執(zhí)行完任務(wù)流程的任務(wù)對(duì)象,并從等待任務(wù)隊(duì)列中調(diào)度新的任務(wù)對(duì)象并執(zhí)行。該框架模型示意圖如圖2所示。
采用此種框架實(shí)現(xiàn)多文件并發(fā)傳輸?shù)目刂疲谠摽蚣苣P椭?,每個(gè)任務(wù)對(duì)象即為一個(gè)單一文件傳輸任務(wù),任務(wù)會(huì)負(fù)責(zé)將一個(gè)確定文件傳輸?shù)浇邮斩耍募鬏斖瓿珊笕蝿?wù)即執(zhí)行完成,釋放相關(guān)聯(lián)的對(duì)象資源。
此種多任務(wù)并發(fā)框架主要包含任務(wù)等待隊(duì)列、任務(wù)處理器集合、任務(wù)調(diào)度幾個(gè)關(guān)鍵模塊。任務(wù)實(shí)體中不包含任務(wù)執(zhí)行流程,只包含任務(wù)的必要參數(shù)信息,任務(wù)的執(zhí)行流程由任務(wù)處理器集合中的任務(wù)處理器完成。當(dāng)任務(wù)調(diào)度激活后,任務(wù)信息會(huì)分配加載到任務(wù)處理器中;任務(wù)處理器通過任務(wù)的參數(shù)信息開始異步執(zhí)行任務(wù)流;任務(wù)流程執(zhí)行完成后通知任務(wù)調(diào)度器標(biāo)記任務(wù)已完成的任務(wù)處理器,并從等待任務(wù)隊(duì)列中調(diào)度新的任務(wù)對(duì)象加載到空閑的任務(wù)處理器上執(zhí)行。框架模型示意圖如圖3所示。
采用此種框架實(shí)現(xiàn)多文件幀并發(fā)傳輸?shù)目刂?,在該框架模型中,每個(gè)任務(wù)為一個(gè)文件幀,每一個(gè)任務(wù)處理器為文件幀傳輸通道。任務(wù)處理器在得到新任務(wù)對(duì)象后會(huì)負(fù)責(zé)將對(duì)象的文件幀內(nèi)容傳輸?shù)浇邮斩?,一個(gè)文件幀處理完成后不會(huì)立即釋放傳輸通道資源,而是等待被加載下一個(gè)文件幀任務(wù)對(duì)象并傳輸新的任務(wù)對(duì)象文件幀。
在該文件傳輸架構(gòu)中,選用基于poll/epoll實(shí)現(xiàn)I/O(Input/Ouput)多路復(fù)用的libevent模型,以實(shí)現(xiàn)異步I/O處理。該事件處理機(jī)制具有事件驅(qū)動(dòng)、高性能、輕量級(jí)、專注于網(wǎng)絡(luò)、跨平臺(tái)支持性強(qiáng)等特點(diǎn)。使用該模型框架實(shí)現(xiàn)文件傳輸?shù)讓拥臄?shù)據(jù)收發(fā)處理,基于事件驅(qū)動(dòng)模型實(shí)現(xiàn)全異步化的數(shù)據(jù)接收和應(yīng)答處理,基于非阻塞的I/O復(fù)用實(shí)現(xiàn)高效高速數(shù)據(jù)收發(fā)處理,以此來保證件傳輸架構(gòu)的傳輸處理性能。與此同時(shí),在設(shè)備文件幀傳輸模塊中,將I/O接口邏輯與文件幀數(shù)據(jù)收發(fā)重組相分離,使文件傳輸架構(gòu)中文件傳輸協(xié)議接口和通信方式的多元化適配和拓展成為可能,可以適配不同跨網(wǎng)傳輸信道。
采用mmap文件映射內(nèi)存的方式來實(shí)現(xiàn)文件的讀取和寫入操作。采用mmap方式對(duì)要操作的文件進(jìn)行分段映射,使得每個(gè)文件映射塊的操作相互獨(dú)立。文件塊操作方式具備異步、同一文件不同塊操作對(duì)塊順序不敏感、同一文件可被多文件塊無鎖同步操作的特點(diǎn)。這種文件操作方式實(shí)現(xiàn)了單文件的同步并發(fā)讀寫,大大提高了文件讀寫的性能和磁盤操作效率,解決了文件傳輸中文件磁盤讀寫I/O性能瓶頸,保證了文件傳輸?shù)母咚俑咝?。文件無鎖并發(fā)讀寫的示意圖如圖4所示。
按照所設(shè)計(jì)的文件傳輸框架,編碼實(shí)現(xiàn)文件傳輸服務(wù)程序,在不同CPU系統(tǒng)平臺(tái)下分別測試文件傳輸?shù)男阅芎托Ч瑢?shí)驗(yàn)拓?fù)鋱D如圖5所示。實(shí)驗(yàn)選取了10 MB、50 MB、100 MB、200 MB、500 MB、1 GB、2 GB、4 GB幾種常見的不同大小測試文件進(jìn)行測試,測試文件列表如圖6所示。設(shè)定單文件最大并發(fā)數(shù)為10,重點(diǎn)測試了在x86處理器和申威sw1621處理器兩種平臺(tái)下的文件傳輸情況,測試效果及性能統(tǒng)計(jì)如圖7~圖10所示。
實(shí)驗(yàn)結(jié)果表明,在兩種處理器平臺(tái)下,在x86平臺(tái)下傳輸速率均可達(dá)800 Mb/s;在申威sw1621平臺(tái)下傳輸速率平均為750 Mb/s左右。在申威sw1621平臺(tái)上的性能只是略低于x86 CPU平臺(tái),因此該文件傳輸系統(tǒng)在國產(chǎn)化平臺(tái)上也有不錯(cuò)的表現(xiàn),在當(dāng)前大力推廣國產(chǎn)化平臺(tái)的趨勢下,可應(yīng)用于某些國產(chǎn)化需求強(qiáng)烈的特定場景。
本文基于分層的私有文件傳輸協(xié)議、兩種異步事件并發(fā)框架模型、異步I/O事件處理機(jī)制和文件無鎖并發(fā)讀寫機(jī)制設(shè)計(jì)實(shí)現(xiàn)了一種高速文件傳輸架構(gòu)。此外,詳細(xì)介紹了分層私有文件傳輸協(xié)議的核心思想,以及文件分層傳輸?shù)膶?shí)現(xiàn)方法;闡述了兩種異步事件并發(fā)模型框架的詳細(xì)設(shè)計(jì)方案,以及在該文件傳輸架構(gòu)中的詳細(xì)處理流程;還介紹了所采用的異步I/O事件處理機(jī)制和文件無鎖并發(fā)讀寫機(jī)制;實(shí)現(xiàn)了一種符合現(xiàn)代跨網(wǎng)文件傳輸系統(tǒng)需求的具有單文件并發(fā)、多文件并傳特性的高速文件傳輸方式,在文件傳輸?shù)陌踩?、傳輸效率、靈活應(yīng)用部署等方面具有較強(qiáng)優(yōu)勢。作為一種文件傳輸解決方案,后期可根據(jù)不同的跨網(wǎng)傳輸需求,修改文件幀協(xié)議信息、增加集成第三方安全檢查機(jī)制、適配不同跨網(wǎng)設(shè)備接口、集成標(biāo)簽管理機(jī)制等,應(yīng)用到更多的跨網(wǎng)系文件傳輸系統(tǒng)中。