丁擇鑫
(甘肅紫光智能交通與控制技術(shù)有限公司,甘肅 蘭州 730010)
伴隨我國(guó)互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,嵌入式裝置正在從工業(yè)領(lǐng)域逐漸向普通人的日常生活轉(zhuǎn)移。人們?cè)絹碓揭蕾囉谑褂么髷?shù)據(jù)技術(shù),同時(shí)對(duì)網(wǎng)絡(luò)帶寬的需求標(biāo)準(zhǔn)也提高了要求。但是普通嵌入式裝置的網(wǎng)絡(luò)傳輸速率僅僅為2至5Mbps,而這一傳輸速率無法達(dá)到實(shí)際要求,所以有必要探尋提高網(wǎng)絡(luò)傳輸速率的方式[1]。嵌入式裝置通常利用無線Wi-Fi、移動(dòng)通信網(wǎng)絡(luò)進(jìn)行數(shù)據(jù)傳輸,不僅受帶寬的約束,而且還受到網(wǎng)絡(luò)堵塞、延遲等因素的影響,無法充分地發(fā)揮大數(shù)據(jù)技術(shù)的優(yōu)勢(shì)?;诖?,本文將詳細(xì)地闡述一項(xiàng)在嵌入式裝置中運(yùn)用的雙網(wǎng)卡接入網(wǎng)絡(luò)的方式,希望由此能提高嵌入式設(shè)備網(wǎng)絡(luò)傳輸?shù)男省?/p>
相關(guān)的工作人員在應(yīng)用C/S服務(wù)模式下開始測(cè)驗(yàn)分析,網(wǎng)絡(luò)環(huán)境由路由器進(jìn)行模擬,同時(shí)客戶端則采用專門的嵌入式開發(fā)板。在此次測(cè)驗(yàn)中,路由器提供較為穩(wěn)定的網(wǎng)絡(luò)環(huán)境,服務(wù)器通過有線的形式接入路由,而嵌入式開發(fā)板的雙網(wǎng)卡則各自利用有線以及無線Wi-Fi的形式接入路由。在本次測(cè)驗(yàn)中,嵌入式開發(fā)板各自采取兩個(gè)網(wǎng)卡向服務(wù)器傳輸文件,通過比較單網(wǎng)卡以及雙網(wǎng)卡的實(shí)際數(shù)據(jù)傳輸速率,由此核驗(yàn)雙網(wǎng)卡在嵌入式裝置中的傳輸作用。
在本次測(cè)驗(yàn)中,其文件傳導(dǎo)的流程是基于TCP/IP協(xié)議設(shè)置的,在研究前期,相關(guān)的工作人員直接采用數(shù)據(jù)報(bào)套接字以及UDP協(xié)議,然后各自從兩處網(wǎng)卡傳導(dǎo)相關(guān)的信息數(shù)據(jù)。在此之后,相關(guān)的工作人員要采取原始套接字的手段,這一手段即通過原始套接字,分別得到雙網(wǎng)卡的硬件數(shù)據(jù)以及接口信息,接著再進(jìn)一步構(gòu)造及封裝以太幀,同時(shí)再從數(shù)據(jù)鏈路層傳輸數(shù)據(jù)包??紤]到這一手段利用了UDP協(xié)議,在傳輸文件數(shù)據(jù)的過程中缺少安全性,所以,相關(guān)的工作人員務(wù)必要在應(yīng)用層中增添明確數(shù)據(jù)、排序和重傳等功能,從而提升傳輸文件信息的精準(zhǔn)程度。
套接字屬于TCP/IP網(wǎng)絡(luò)通信中的重要組成部分,一般都是利用套接字傳輸網(wǎng)絡(luò)主機(jī)間的通信信息。而數(shù)據(jù)報(bào)套接字優(yōu)先采取UDP數(shù)據(jù)報(bào)協(xié)議,從而給數(shù)據(jù)傳輸帶來了一種無連接的服務(wù)項(xiàng)目。這一服務(wù)并不可以確保傳輸數(shù)據(jù)的安全可靠性,在傳輸期間,極易出現(xiàn)數(shù)據(jù)丟失或者重復(fù)的問題,同時(shí)也很難確保數(shù)據(jù)能夠被按照既定次序來傳輸。但是UDP數(shù)據(jù)報(bào)套接字的優(yōu)勢(shì)就體現(xiàn)在其所占據(jù)的系統(tǒng)容量相對(duì)很少,協(xié)議封裝字節(jié)不多,因此網(wǎng)絡(luò)傳輸?shù)乃俾瘦^快[2]。
根據(jù)有關(guān)數(shù)據(jù)顯示,在不同帶寬情形之下,雙網(wǎng)卡的傳輸速率基本和單網(wǎng)卡的基本一致。通過解析系統(tǒng)內(nèi)網(wǎng)卡信息的傳輸量,不難看出,其中一個(gè)網(wǎng)卡的數(shù)據(jù)浮動(dòng)和文件數(shù)據(jù)大小保持同步,而另一個(gè)網(wǎng)卡數(shù)據(jù)變化量則保持為零。相關(guān)的工作人員采取數(shù)據(jù)報(bào)套接字手段,而Linux系統(tǒng)則會(huì)依據(jù)系統(tǒng)路由表,智能化地選取優(yōu)先等級(jí)較高的一個(gè)網(wǎng)卡傳輸信息。雖然選取了兩個(gè)傳輸率差異較大的網(wǎng)卡,此時(shí)另一個(gè)優(yōu)先等級(jí)較低的網(wǎng)卡在第一張網(wǎng)卡不可用的條件下方可運(yùn)作;雖然調(diào)整了路由表,其信息也僅僅會(huì)由一處網(wǎng)卡傳輸信息。盡管部分工作人員采取bind函數(shù)綁定網(wǎng)卡,該函數(shù)僅僅將傳輸網(wǎng)卡的IP地址名稱替換成地址,而不對(duì)網(wǎng)卡予以操作,這就很難讓應(yīng)用層完成對(duì)數(shù)據(jù)鏈路層硬件接口的讀寫工作。所以,相關(guān)的工作人員要采取另一種手段,即原始套接字。該手段的獨(dú)特之處就在于其能夠直接分析內(nèi)核中獲取到的全部IP數(shù)據(jù)報(bào),進(jìn)一步自行搭建網(wǎng)絡(luò)幀,從而合理地選取網(wǎng)絡(luò)接口傳輸出去。
最為普遍的網(wǎng)絡(luò)編程即對(duì)應(yīng)用層的報(bào)文展開相關(guān)的收發(fā)操作,而應(yīng)用層的數(shù)據(jù)包均是通過系統(tǒng)給出的協(xié)議予以完成的,系統(tǒng)會(huì)協(xié)助使用者排除掉諸多無效且容易出現(xiàn)偏差的數(shù)據(jù)報(bào)文,人們只需要填寫應(yīng)用層報(bào)文方可,通過系統(tǒng)輸入底層報(bào)文頭,然后再依據(jù)系統(tǒng)路由表智能化地選取一個(gè)網(wǎng)卡傳輸信息。在本次測(cè)驗(yàn)中,相關(guān)的工作人員選取了更為底層的原始套接字,利用系統(tǒng)中網(wǎng)卡的實(shí)際情況自行選取適合的網(wǎng)卡傳導(dǎo)信息。
UDP是一種無連接的數(shù)據(jù)報(bào)方式。因?yàn)閁DP協(xié)議缺少一定的可靠性,所以在傳輸U(kuò)DP的過程中,就要求應(yīng)用層具備相應(yīng)的確認(rèn)機(jī)制。在本次測(cè)驗(yàn)中所采取的機(jī)制即:一旦服務(wù)器端獲取到客戶端傳輸?shù)臄?shù)據(jù)包,就可以得到數(shù)據(jù)包的包序號(hào)。服務(wù)器再把清晰的標(biāo)記位以及包序號(hào)傳輸至客戶端的網(wǎng)卡之上。一旦客戶端獲取到信息,就要在第一時(shí)間從傳輸隊(duì)列內(nèi)消除掉這一UDP包,如果沒有獲取到數(shù)據(jù)包,那么就要再次進(jìn)行傳輸。為了確保文件可以較為順利地傳送至服務(wù)器,那么就要求設(shè)置客戶端以及服務(wù)器間傳輸數(shù)據(jù)的格式[3]。
在最初傳輸數(shù)據(jù)信息的時(shí)候,要求相關(guān)的工作人員向服務(wù)器傳輸文件的大小及名稱。在服務(wù)器獲取到文件的有關(guān)數(shù)據(jù)后,就需要給客服端反饋確認(rèn),也就是要求客戶端傳輸數(shù)據(jù)包。通常來說,數(shù)據(jù)包格式就涵括了基本的數(shù)據(jù)標(biāo)識(shí),這就說明所傳輸?shù)膬?nèi)容即數(shù)據(jù)。同時(shí)還涵括了包序號(hào)以及數(shù)據(jù)內(nèi)容,這就代表服務(wù)器可以依據(jù)包序號(hào)把信息內(nèi)容納入到既定的文件之中。在客戶端獲取到服務(wù)器所傳輸?shù)拇_認(rèn)包之后,就要求把傳輸隊(duì)列內(nèi)相應(yīng)的包序號(hào)剔除掉,然后再繼續(xù)添入新的包。而客戶端以及服務(wù)器間傳輸數(shù)據(jù)包的活動(dòng)就是通信的過程。
通信過程主要包括三個(gè)階段:其一,客戶端逐步傳輸文件數(shù)據(jù)到服務(wù)器之中,直至獲取服務(wù)器對(duì)文件數(shù)據(jù)的確認(rèn)包。其二,一旦客戶端獲取到相應(yīng)的確認(rèn)包后,接著再朝著服務(wù)器傳輸數(shù)據(jù)包;且一旦獲取相應(yīng)的確認(rèn)包后,就在第一時(shí)間內(nèi)刪除數(shù)據(jù)包隊(duì)列內(nèi)的包。其三,一旦客戶端傳輸隊(duì)列空缺,那么就代表文件傳輸完成。
為了進(jìn)一步提升系統(tǒng)運(yùn)作的安全性,針對(duì)數(shù)據(jù)報(bào),相關(guān)的工作人員要依據(jù)網(wǎng)卡網(wǎng)速分配傳輸任務(wù),實(shí)現(xiàn)提升系統(tǒng)傳輸速率,由此達(dá)到網(wǎng)卡資源利用最大化的目的。所以在本次測(cè)驗(yàn)中,規(guī)范了網(wǎng)卡傳輸數(shù)據(jù)的方式。在傳輸文件期間,兩個(gè)網(wǎng)卡各自調(diào)用了兩個(gè)不同的線程,統(tǒng)一的數(shù)據(jù)包隊(duì)列、規(guī)定數(shù)據(jù)包隊(duì)列的順序即包序號(hào)以及傳輸包的時(shí)長(zhǎng)。一旦客戶端獲取服務(wù)器所反饋的接收確認(rèn)包,此時(shí)就要求從隊(duì)列內(nèi)剔除掉對(duì)應(yīng)的包序號(hào),同時(shí)在隊(duì)尾添入新的包,直至添完所有包。在數(shù)據(jù)包隊(duì)列之中,相關(guān)的工作人員要加入數(shù)據(jù)包,同時(shí)要添入此數(shù)據(jù)包的創(chuàng)建時(shí)間,而且如果在既定周期內(nèi)未收到確認(rèn)包,那么就要再次傳輸這一數(shù)據(jù)包,直至收到且確認(rèn)為止。若數(shù)據(jù)包隊(duì)列長(zhǎng)度為零,那么就說明文件傳輸完畢。不容忽視的是,在傳輸及獲取最末端的數(shù)據(jù)包時(shí),此時(shí)數(shù)據(jù)包的容量一般要少于最大傳輸單元,所以一旦服務(wù)器獲取到末尾數(shù)據(jù)包,那么就要評(píng)判其的包序號(hào),如果包序號(hào)屬于最后一個(gè)數(shù)據(jù)包,那么只要求向文件內(nèi)加入一定字節(jié)數(shù)的信息[4]。通常來說,數(shù)據(jù)包隊(duì)列的格式指明了網(wǎng)卡在傳輸數(shù)據(jù)包隊(duì)列期間的方式。若當(dāng)前的位置標(biāo)記為0,此時(shí)就要在第一時(shí)間向服務(wù)器傳輸本數(shù)據(jù)包,同時(shí)把它們標(biāo)記設(shè)置為1,接著再登記好實(shí)際傳輸?shù)臅r(shí)間,若當(dāng)下位置標(biāo)記是1,那么就說明這一數(shù)據(jù)包已經(jīng)發(fā)送,不過還沒有獲取到確認(rèn)的信息,此時(shí)就可以評(píng)判當(dāng)下時(shí)間以及發(fā)送時(shí)間上的差值,若差值已經(jīng)大于設(shè)定值,此時(shí)就要求再次傳輸這一數(shù)據(jù)包,同時(shí)要及時(shí)更新傳輸?shù)臅r(shí)間。如下圖1所示,網(wǎng)卡1以及網(wǎng)卡2各自采取了差異化的線程,而傳輸完當(dāng)下數(shù)據(jù)包就去數(shù)據(jù)包隊(duì)列內(nèi)得到下一個(gè)亟待傳輸?shù)臄?shù)據(jù)包,由此保證網(wǎng)卡不會(huì)出現(xiàn)閑置的問題,而且也能夠確保數(shù)據(jù)包發(fā)送是根據(jù)網(wǎng)卡的傳輸速率分配的,最終提升實(shí)際的網(wǎng)速[5]。
圖1 數(shù)據(jù)包傳輸方式
綜上所述,在本次測(cè)驗(yàn)中,由于嵌入式裝置要求大數(shù)據(jù)量的實(shí)時(shí)傳導(dǎo),相關(guān)的工作人員基于嵌入式Linux系統(tǒng)設(shè)計(jì)了雙網(wǎng)卡傳輸系統(tǒng)。通過對(duì)系統(tǒng)屬性等多方面地分析,發(fā)現(xiàn)這一技術(shù)高效地提高了網(wǎng)絡(luò)傳輸?shù)乃俾?,處理了?dāng)下嵌入式設(shè)備傳輸速率還不太理想的問題,這對(duì)于大數(shù)據(jù)量的實(shí)時(shí)傳輸具有很強(qiáng)的現(xiàn)實(shí)價(jià)值,因而值得更大范圍地推廣及運(yùn)用。