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