邢亮 路帥
[摘要]隨著綜合化航電的深入發(fā)展,分區(qū)操作系統(tǒng)下文件傳輸服務已成為新的應用需求。本文從VxworksAE653操作系統(tǒng)的體系架構(gòu)出發(fā),結(jié)合簡單文件傳輸協(xié)議(Trivial File Transfer Protocol,TFTP)的工作模式,引入選項協(xié)商機制對協(xié)議進行了擴展,給出了在分區(qū)機制操作系統(tǒng)VxworksAE653下TFTP的實現(xiàn)方法。
[關(guān)鍵詞]綜合化航電;分區(qū)操作系統(tǒng);簡單文件傳輸協(xié)議;選項協(xié)商
引言
隨著航電系統(tǒng)綜合化的不斷發(fā)展、新一代航電系統(tǒng)中對于數(shù)據(jù)傳輸要求的不斷提高,航電系統(tǒng)中傳輸?shù)牟粌H僅是命令和狀態(tài)數(shù)據(jù),而且還有大量的中間結(jié)果、可加載的應用軟件等,文件傳輸服務在分區(qū)機制操作系統(tǒng)下廣泛應用已成為航電系統(tǒng)新的需求。在分區(qū)操作系統(tǒng)下實現(xiàn)文傳傳輸服務,將為綜合化航電系統(tǒng)文件傳輸應用的開發(fā)提供有力的支持。
1.VxwoksAE653操作系統(tǒng)簡介
VxworksAE653操作系統(tǒng)美國WindRiver公司依據(jù)ARINC653標準推出的具備分區(qū)機制的高安全操作系統(tǒng)。操作系統(tǒng)分為上下兩層,下層操作系統(tǒng)稱之為核心操作系統(tǒng),上層操作系統(tǒng)稱之為分區(qū)操作系統(tǒng)。核心操作系統(tǒng)提供分區(qū)機制,并且提供最基本的分區(qū)相關(guān)服務,如根據(jù)主時間框架內(nèi)分配給分區(qū)的時間窗口調(diào)度分區(qū);利用處理器的MMU對分區(qū)的空間進行保護。分區(qū)操作系統(tǒng)主要負責與分區(qū)無關(guān)的分區(qū)內(nèi)進程的管理,如分區(qū)內(nèi)的進程管理、進程調(diào)度、進程間通信、分區(qū)內(nèi)端口的管理等。在該結(jié)構(gòu)下,分區(qū)機制的實現(xiàn)依賴于核心操作系統(tǒng)及其支撐硬件,與分區(qū)無關(guān)的進程管理依賴于每個分區(qū)自己的分區(qū)操作系統(tǒng),本文中TFTP軟件是基于VxworksAE653操作系統(tǒng)設(shè)計和實現(xiàn)的。
2.TFTP簡介
TFTP是一種基于UDP的用來傳輸文件的簡單文件傳輸協(xié)議,它是基于客戶/服務器模式,主要功能是從遠程服務器上讀取文件或者將文件傳輸給遠程服務器。
2.1 TFTP數(shù)據(jù)報文格式
TFTP數(shù)據(jù)以定長512字節(jié)傳輸。一個TFTP包頭含以下兩個部分: TFTP操作碼和數(shù)據(jù)。圖1為5種TFTP報文格式。
圖1 TFTP報文格式
2.2 TFTP的工作模式
TFTP的工作模式為客戶/服務器(C/S)模式。創(chuàng)建連接后,客戶端和服務器端通過協(xié)議包進行信息交互。下面是一個客戶端向服務器端發(fā)送文件的例子,(1)客戶端通過發(fā)送端口向服務器端的接收端口上發(fā)送WRQ請求。(2)服務器端的接收端口接收到請求后,通過發(fā)送端口向客戶端發(fā)出ACK,塊號為0。(3)客戶端接收到塊號為0的ACK包后,連接建立。(4)客戶端依次向服務器端發(fā)送DATA包,DATA包序列從1開始,同時客戶端檢查ACK包序列,如ACK包檢查有誤,中止傳輸。如ACK包序列正確,繼續(xù)傳輸直至傳輸結(jié)束。
圖2 客戶端和服務端工作過程
3.TFTP在分區(qū)機制操作系統(tǒng)下的設(shè)計
TFTP的客戶端和服務器段分別處于VxworksAE653操作系統(tǒng)的應用分區(qū)中,應用分區(qū)中支持滿足ARINC653標準的接口。TFTP的任何一個傳輸服務都以客戶端申請寫文件或者讀文件請求發(fā)起連接,如果服務器同意連接請求,則連接成功。文件中的數(shù)據(jù)以定長的字節(jié)傳輸,每個數(shù)據(jù)包都包含一個數(shù)據(jù)塊,在發(fā)送一個數(shù)據(jù)包之前,前一個數(shù)據(jù)必須得到確認。在VxworksAE653操作系統(tǒng)下,TFTP的設(shè)計需要考慮通信和文件系統(tǒng)配置、超時重傳機制、協(xié)議包的合法性檢查、協(xié)議包序列號驗證以及協(xié)議的可擴展性問題。
圖3 分區(qū)操作系統(tǒng)下TFTP軟件的總體結(jié)構(gòu)
3.1 通信配置
VxworksAE653操作系統(tǒng)下,核心操作系統(tǒng)提供了一組設(shè)備管理接口,系統(tǒng)集成人員通過調(diào)用該接口可向核心操作系統(tǒng)注冊網(wǎng)絡設(shè)備驅(qū)動。本文中的TFTP軟件所使用的網(wǎng)絡為以太網(wǎng)UDP驅(qū)動。通過將以太網(wǎng)UDP驅(qū)動注冊到核心操作系統(tǒng)可完成網(wǎng)絡驅(qū)動配置。分區(qū)間通信為端口-通道-虛端口機制,分區(qū)中通過端口進行數(shù)據(jù)收發(fā),虛端口可直接訪問下層設(shè)備進行數(shù)據(jù)收發(fā),端口和虛端口之間通過通道連接。在VxworksAE653操作系統(tǒng)的配置藍圖中,分別為TFTP客戶端和服務器端配置通信端口,使得TFTP客戶端和服務器端可通過端口進行數(shù)據(jù)通信。
3.2 文件系統(tǒng)配置
TFTP軟件通過以文件的形式對數(shù)據(jù)進行管理。VxworksAE653操作系統(tǒng)提供了系統(tǒng)調(diào)用機制,分區(qū)可通過系統(tǒng)調(diào)用的形式使用核心操作系統(tǒng)的服務,通過在核心操作系統(tǒng)向分區(qū)擴展文件系統(tǒng)服務接口,分區(qū)中運行的TFTP軟件可以通過系統(tǒng)調(diào)用的方式訪問文件系統(tǒng)服務。
3.3 超時重傳
TFTP協(xié)議通過超時和重傳機制在協(xié)議層保證數(shù)據(jù)傳輸?shù)目煽啃浴FTP超時和重傳策略為:TFTP發(fā)送一個數(shù)據(jù)包,接收方收到此數(shù)據(jù)包后,必須對發(fā)送方做出應答。發(fā)送方在設(shè)定的超時時間內(nèi)如果沒有收到應答,將重新發(fā)送此數(shù)據(jù)包,如果在限定的發(fā)送次數(shù)內(nèi)仍然沒有收到應答包,則此次文件傳輸失敗。
3.4 協(xié)議包序號檢查
在數(shù)據(jù)傳輸過程中,如果數(shù)據(jù)的源序列號和期望的序列號不同,這個包則被認為是一個無效的包而丟棄。設(shè)想發(fā)送方發(fā)出一個數(shù)據(jù)包,這個數(shù)據(jù)包由于某種原因在網(wǎng)絡設(shè)備中被復制成兩個包,接收方將先后接受兩個包。接收方在接收到第一個包后,期望的數(shù)據(jù)序列號會自動加1,當?shù)诙€包到達后,數(shù)據(jù)序列號和期望序列號不同,所以第一個包被丟棄,而不會導致一個數(shù)據(jù)包接收兩次。TFTP協(xié)議包需要檢查序號的數(shù)據(jù)包為DATA包和ACK包。
3.5 異常處理
TFTP軟件在進行文件傳輸過程中,在客戶端/服務器端可能會出現(xiàn)一些異常情況(如文件未找到、訪問越界、非法的TFTP操作等),當出現(xiàn)異常情況后,異常的發(fā)現(xiàn)方立即組織一個ERROR,發(fā)給對方,同時退出連接。ERROR包的接收方收到消息后,退出連接。
3.6 協(xié)議擴展
RFC1350標準推薦的協(xié)議數(shù)據(jù)包大小為512字節(jié),超時時間為2S,重傳次數(shù)為3次。TFTP協(xié)議在設(shè)計中在RFC1350標準的基礎(chǔ)上參考RFC2347標準加入了選項協(xié)商機制。選項協(xié)商機制是在原有的WRQ和RRQ包中擴展了數(shù)據(jù)包長度、重傳次數(shù)和超時時間協(xié)商選項,引入了OACK包回應選項協(xié)商。文件傳輸?shù)陌l(fā)起方在發(fā)送WRQ或RRQ包的時候,將建議的數(shù)據(jù)報長度、重傳次數(shù)、超時時間寫入到WRQ或RRQ包中,接收收方接收并解析WRQ或RRQ包后,如果支持選項協(xié)商中的一項或者多項,發(fā)送OACK包進行回應。如果接收方不支持選項協(xié)商機制,發(fā)送ACK包進行回應,傳輸雙方按照RFC1350標準推薦的協(xié)議設(shè)置工作。
圖4 引入?yún)f(xié)商機制后的TFTP協(xié)議包結(jié)構(gòu)
4.TFTP的軟件實現(xiàn)
TFTP軟件的客戶端軟件和服務器端軟件分別駐留的不同硬件模塊上的VxworksAE653操作系統(tǒng)分區(qū)中,通過應用分區(qū)中的應用端口進行數(shù)據(jù)通信,通過文件系統(tǒng)對文件數(shù)據(jù)進行存儲和訪問。
4.1 TFTP客戶端的實現(xiàn)
TFTP的客戶端軟件首先在WRQ和RRQ包中設(shè)置選項協(xié)商參數(shù),包括TFTP數(shù)據(jù)包大小、重傳次數(shù)和超時時間,然后將讀/寫命令請求發(fā)送出去,接收服務端的回應信息,若連接失敗,退出本次服務;如果和服務器端連接成功,在服務器端的回應信息中判定服務器端是否支持選項協(xié)商機制,如果服務器端不支持選項協(xié)商機制,則恢復缺省協(xié)議參數(shù)后開始上傳/下載文件數(shù)據(jù)傳輸。如果服務器端支持選項協(xié)商機制,則直接開始上傳/下載文件數(shù)據(jù)傳輸。上傳文件時,從本地文件中讀出協(xié)議參數(shù)規(guī)定長度的數(shù)據(jù),從發(fā)送端口將數(shù)據(jù)發(fā)送到服務器的接收端口上,同時在接收端口上等待來自服務器端的應答包。如果在協(xié)議參數(shù)設(shè)定的時間內(nèi)接收端口上接收到了應答包,且應答包包序列正確,說明服務器端口已經(jīng)確認數(shù)據(jù)包已經(jīng)收到,接下來進行下一包數(shù)據(jù)的傳送,如果在設(shè)定的時間內(nèi)接收端口上沒有收到應答信息,則客戶端認為服務器端沒有接收到數(shù)據(jù)包,繼續(xù)對此數(shù)據(jù)進行重傳。若按照協(xié)議參數(shù)設(shè)定的次數(shù)連續(xù)重傳后仍然沒有收到應答包,則認為此次上傳任務失敗??蛻舳藢⑼顺鲞B接。下載文件時,客戶端程序在在協(xié)議限定的時間內(nèi)(超時時間和重傳次數(shù)相乘)接收數(shù)據(jù),如果沒有收到數(shù)據(jù),則退出,如果能收到數(shù)據(jù),則將收到的數(shù)據(jù)寫入文件,同時向遠程服務器發(fā)送回應消息。重復此過程,直至接收完所有的文件數(shù)據(jù)。
4.2 TFTP服務端的實現(xiàn)
TFTP服務端工作流程如下:1)服務器端接收客戶端發(fā)送的命令。2)服務器端解析客戶端命令請求。解析客戶端WRQ/RRQ協(xié)議包,若客戶端發(fā)送的WRQ/RRQ具備協(xié)議協(xié)商機制要求,同步服務端的協(xié)議參數(shù),發(fā)送OACK協(xié)議包進行應答。3)根據(jù)(2)的解析結(jié)果,在分區(qū)操作系統(tǒng)中創(chuàng)建文件上傳/下載傳輸任務進行文件傳輸,服務器端上傳/下載傳輸與客戶端相應服務處理流程相同。
5.結(jié)束語
本文在研究分區(qū)操作系統(tǒng)VxWorksAE653架構(gòu)的基礎(chǔ)上,介紹了TFTP的數(shù)據(jù)報文格式和工作過程,并結(jié)合相關(guān)協(xié)議標準對TFTP協(xié)議進行了擴展設(shè)計,給出了分區(qū)機制操作系統(tǒng)VxWorksAE653下TFTP的設(shè)計思路和實現(xiàn)方法,在開發(fā)實例測試中,Vxworks653平臺下的TFTP軟件穩(wěn)定運行,在傳輸過程中,客戶端軟件與Windows平臺下的TFTP服務器可以兼容工作,出現(xiàn)網(wǎng)絡故障時,可以進行超時重傳,具有良好的容錯能力。
參考文獻
[1]徐曉光,員海順等.分區(qū)操作系統(tǒng)下的分區(qū)間通信設(shè)計[J],現(xiàn)代電子技術(shù).2013,36(14):58-64.
[2]李偉,李杰濤等.VxWorks下文件傳輸?shù)脑O(shè)計和實現(xiàn)[J],科技創(chuàng)新導報.2013.19:38-39.
[3]Sollins K. RFC2347,The TFTP Protocol ( Revision 2) [S].USA: IETF,2010.
作者簡介
邢亮,1983.7,男,陜西寶雞人,工程師,碩士,主要研究方向:嵌入式軟件及軟件工程化.