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