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

圖1 數據包傳輸方式
綜上所述,在本次測驗中,由于嵌入式裝置要求大數據量的實時傳導,相關的工作人員基于嵌入式Linux系統設計了雙網卡傳輸系統。通過對系統屬性等多方面地分析,發現這一技術高效地提高了網絡傳輸的速率,處理了當下嵌入式設備傳輸速率還不太理想的問題,這對于大數據量的實時傳輸具有很強的現實價值,因而值得更大范圍地推廣及運用。