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