- 相關(guān)推薦
移動網(wǎng)絡(luò)接口的研究與設(shè)計論文
摘要:移動設(shè)備面臨著多樣化和動態(tài)的網(wǎng)絡(luò)選項,要想充分地使用這些選項要求知道應(yīng)用程序的意圖。移動網(wǎng)絡(luò)接口是一個簡單而強(qiáng)大的處理網(wǎng)絡(luò)多樣性的機(jī)制。應(yīng)用程序為網(wǎng)絡(luò)傳輸提供一個聲明標(biāo)簽,并將系統(tǒng)匹配到最合適的網(wǎng)絡(luò)。移動網(wǎng)絡(luò)接口還可以推遲和重新排序傳輸?shù)臄?shù)據(jù),提供應(yīng)用程序互斥和排序約束機(jī)制。
關(guān)鍵詞:移動網(wǎng)絡(luò);接口設(shè)計;數(shù)據(jù)傳輸
1引言
移動設(shè)備面臨著一個多元、動態(tài)的網(wǎng)絡(luò)選項。這些選項有各種各樣的優(yōu)點和缺點。因此,在所有情況下沒有單一的“最佳選擇”,基礎(chǔ)設(shè)施的多樣性既是挑戰(zhàn),也是機(jī)遇。面臨的挑戰(zhàn)是管理這些不斷變化的選項以滿足每個應(yīng)用程序的需求,這本身隨時間變化。通過這樣做,應(yīng)用程序帶來了顯著效益,同時利用多個網(wǎng)絡(luò)和規(guī)劃未來的傳輸智能。目前解決這個問題的方法是不充分的。一個極端,操作系統(tǒng)或中間件層代表應(yīng)用程序的所有路由和接口決定。然而,因為這些決定不知道應(yīng)用程序的使用網(wǎng)絡(luò)意圖,他們經(jīng)常錯過優(yōu)化機(jī)會。另一個極端,系統(tǒng)直接暴露底層細(xì)節(jié)給應(yīng)用程序,使應(yīng)用程序知道網(wǎng)絡(luò)變化,應(yīng)用程序必須顯式地選擇可用的選項。這種方法表達(dá),需要管理多個無線網(wǎng)絡(luò)不必要復(fù)雜的應(yīng)用程序任務(wù)。設(shè)計的網(wǎng)絡(luò)介于兩者之間,系統(tǒng)管理發(fā)現(xiàn)和描述可用網(wǎng)絡(luò)選項的細(xì)節(jié),應(yīng)用程序用少量的聲明標(biāo)簽來提供關(guān)于通信量的提示。然后,該系統(tǒng)將匹配的網(wǎng)絡(luò)流量提供給可用的接口。設(shè)計的移動網(wǎng)絡(luò)系統(tǒng)提供了一個可移植的、用戶級別的實現(xiàn)方法。
2移動網(wǎng)絡(luò)接口設(shè)計原理
設(shè)計遵循經(jīng)典的分離原則機(jī)制。應(yīng)用程序確定使用網(wǎng)絡(luò)的實際意圖,這一意圖表示數(shù)據(jù)應(yīng)如何傳輸?shù)牟呗。另一方面,操作系統(tǒng)或中間件庫是最佳的位置,以提供一個共有機(jī)制來實現(xiàn)指定的策略。每個應(yīng)用程序必須提供使用網(wǎng)絡(luò)意圖的提示,因此共有機(jī)制使得部署新應(yīng)用程序使用多個移動網(wǎng)絡(luò)容易。處理多個異構(gòu)和間歇性的移動網(wǎng)絡(luò)的細(xì)節(jié)被封裝在系統(tǒng)的底層。共有機(jī)制也可以從多個應(yīng)用程序聚集異構(gòu)數(shù)據(jù)傳輸。因此,網(wǎng)絡(luò)設(shè)計通過數(shù)據(jù)傳輸標(biāo)簽和系統(tǒng)底層實現(xiàn)的分離,制定政策數(shù)據(jù)映射到網(wǎng)絡(luò)最佳匹配時的數(shù)據(jù)傳輸?shù)臉?biāo)簽。設(shè)計希望接口盡可能簡單,要求每一個應(yīng)用程序公開定量規(guī)格的特性,它希望產(chǎn)生的流量,以及它所需要的服務(wù)質(zhì)量。這一原則導(dǎo)致了幾項決定,應(yīng)用程序使用定性屬性的數(shù)據(jù)表示他們的意圖,而不是使用量化規(guī)范,即,不管是小的還是大的,不管是前臺互動的還是后臺的流量。不要求什么是“小”和“大”。允許該應(yīng)用程序使用它認(rèn)為合適標(biāo)簽。并發(fā)系統(tǒng)包括允許程序員排除不正確的排序機(jī)制,增加了同步抽象表達(dá)原子和之前發(fā)生的約束。除了表達(dá)這類排序約束,還需要處理部分失敗的機(jī)制。有些時候一些信息量將由任何可用的傳輸轉(zhuǎn)換提供錯誤的服務(wù)。因此,提供了一種回調(diào)機(jī)制來處理延遲傳輸或斷開連接。
3移動網(wǎng)絡(luò)接口設(shè)計方案
在本節(jié)中,描述網(wǎng)絡(luò)應(yīng)用程序接口。首先描述基本的抽象接口。應(yīng)用程序使用標(biāo)簽來傳達(dá)他們的意圖。表達(dá)信息單位稱為IROBs(IsolatedReliableOrderedBytestreams)。IROBs提供原子性(互斥);應(yīng)用程序還可以指定IROBs之間順序約束。當(dāng)操作必須延遲,應(yīng)用程序可以注冊thunks恢復(fù)他們。
3.1標(biāo)簽
標(biāo)簽是應(yīng)用程序的主要抽象信息,應(yīng)用程序聲明任何特定網(wǎng)絡(luò)信息屬性的機(jī)制。標(biāo)簽是系統(tǒng)定義的定性屬性的消息。目前只支持4個標(biāo)簽,兩個維度,交互性和規(guī)模,如表1所示。如果用戶事件正在等待響應(yīng),消息的標(biāo)簽設(shè)置為Fore-ground,如果它的及時傳遞不是行為的關(guān)鍵,則消息的標(biāo)簽是Background。例如,許多提示不需要發(fā)送。Small標(biāo)簽描述單包的RPC等消息,Large標(biāo)簽描述其他消息,如包含多媒體數(shù)據(jù)。
3.2多模式數(shù)據(jù)來源處理
標(biāo)簽與標(biāo)簽感知套接口一起使用。我們稱這種套接口為multi-sockets。直觀地說,一個multi-socket將幾個不同標(biāo)簽單一虛擬套接口復(fù)合在一起。在大多數(shù)情況下,multi-sockets行為是正常的。然而,multi-socket發(fā)送調(diào)用需要一個標(biāo)簽。請注意,發(fā)件人是負(fù)責(zé)分配標(biāo)簽的實體,作為結(jié)果,接收不需要標(biāo)簽。可以想象用一個標(biāo)簽來實現(xiàn)過濾的接收。multi-socket是一個邏輯連接,動態(tài)實例化,并使用實際TCP連接在一個或多個物理接口。multi-sockets提供封裝:它們隱藏多個網(wǎng)絡(luò)接口、路由和連接的應(yīng)用程序。Multi-sockets也封裝瞬時斷開連接,如通過無線死區(qū)。應(yīng)用程序指定標(biāo)簽,網(wǎng)絡(luò)流量管理器利用標(biāo)簽選擇正確的網(wǎng)絡(luò)發(fā)送數(shù)據(jù)。應(yīng)用程序被每一個標(biāo)簽通知網(wǎng)絡(luò)不可用,通過使用thunk技術(shù),當(dāng)事件發(fā)生時執(zhí)行遞延執(zhí)行環(huán)境。像TCP套接口,multi-sockets支持可靠傳遞抽象。然而,multi-sockets放松了TCP排序約束,允許字節(jié)被記錄到指定的互斥和排序約束中的應(yīng)用,在后面兩節(jié)中描述。
3.3IROBs字節(jié)流
帶有標(biāo)簽的IROB是網(wǎng)絡(luò)傳輸信息的基本單位,multi-socket接口保證每個IROB自動接收;即,指令中產(chǎn)生的IROB字節(jié)流不影響其他網(wǎng)絡(luò)傳輸字節(jié)流。然而,單個IROB可能被重新排序到另一個地方。換句話說,來自接收multi-socket接口的先前發(fā)送的IROB首先被正在讀取數(shù)據(jù)的應(yīng)用程序看到。然而,來自于兩個IROB的字節(jié)永遠(yuǎn)不會混合。IROBs以同樣的方式提供互斥操作,在多線程程序中,鎖提供互斥的線程。
3.4排序約束
因為有些應(yīng)用程序需要訂購IROBs之間的約束,所以multi-socket接口支持這樣的約束聲明。每個multi-socket接口分配一個獨(dú)一無二的,單調(diào)增加的標(biāo)識符給每個IROB。當(dāng)創(chuàng)建一個新的IROB時,應(yīng)用程序可以指定任何IROB的標(biāo)識符,但必須接收到之前被創(chuàng)造出來的標(biāo)識符。排序約束可能只指定IROBs有較低的唯一標(biāo)識符,這可以保證這樣的約束是無死鎖的。TCP套接字指定每個IROB必須收到最低的標(biāo)識符,應(yīng)用程序處理連續(xù)的字節(jié)流,API提供了簡單的默認(rèn)發(fā)送調(diào)用機(jī)制。然而,許多應(yīng)用程序擁有更為寬松的約束條件;例如,BlueFS文件系統(tǒng)客戶端允許異步寫入。multi-sockets中的排序約束類似于多線程程序提供線程的條件變量。
3.5Thunks技術(shù)
帶標(biāo)簽的IROB在發(fā)送時沒有任何“合適的”網(wǎng)絡(luò)可以利用,這種情況是可能的。例如,批量傳輸開始時只有一個低帶寬鏈接是可用的;或者移動計算機(jī)可能是在一個無線死區(qū),沒有連接。這種傳輸最好在稍后遇到一個高帶寬鏈接時處理。當(dāng)然,不希望應(yīng)用程序輪詢鏈接,也不希望應(yīng)用程序建立新連接后短時間內(nèi)瞬時斷開。創(chuàng)建IROBs操作設(shè)置一個可選的Thunk參數(shù),這個函數(shù)/參數(shù)對將用于告知應(yīng)用程序IROBs由于缺少合適的網(wǎng)絡(luò)不能立即發(fā)送。當(dāng)一個IROB延期時,帶有Thunk參數(shù)的調(diào)用返回一個特殊的返回代碼。指定標(biāo)簽數(shù)據(jù)被下一次傳輸時,庫通過調(diào)用thunk指定參數(shù)的函數(shù)通知應(yīng)用程序。處理程序必須為Thunk參數(shù)資源關(guān)系負(fù)責(zé),Thunk可能會被取消,例如,前一個Thunk是無效的,后續(xù)的將取消。Thunk對于定期發(fā)送消息的應(yīng)用程序是有用的,如檢查新郵件。在斷開連接期間緩沖冗余消息,以后將所有信息發(fā)送這是不可取的。相反,應(yīng)用程序注冊一個發(fā)送thunk,合適的網(wǎng)絡(luò)可用時獲得通知。Thunk處理程序只發(fā)送輪詢請求,從而保護(hù)寶貴的網(wǎng)絡(luò)帶寬。
3.6API函數(shù)
表2列出了最重要的改進(jìn)的移動網(wǎng)絡(luò)API函數(shù)。ms_sock-et函數(shù)創(chuàng)建一個新的multi-socket,ms_connect函數(shù)連接到遠(yuǎn)程端點,ms_connect函數(shù)和標(biāo)準(zhǔn)的connect函數(shù)唯一不同是調(diào)用的第一個參數(shù)是multi-socket。一般使用ms_*修改應(yīng)用程序替換socket,connect等函數(shù)。應(yīng)用程序使用ms_begin_irob函數(shù)創(chuàng)建一個新的IROB,通過一個標(biāo)簽來描述原子信息以及排序約束。應(yīng)用程序調(diào)用ms_irob_send函數(shù)指定IROB部分?jǐn)?shù)據(jù)發(fā)送;交替調(diào)用send和ms_irob_send函數(shù)。應(yīng)用程序使用ms_end_irob函數(shù)通知庫沒有IROB數(shù)據(jù)發(fā)送。ms_send函數(shù)調(diào)用提供便利,它根據(jù)所有以前的IROBs創(chuàng)建一個新的IROB,并結(jié)束IROB。如果應(yīng)用程序使用ms_send調(diào)用,它將提供帶標(biāo)簽的TCP連接,盡管沒有重新排序。ms_recv函數(shù)調(diào)用返回一個標(biāo)簽。服務(wù)器應(yīng)用程序希望使用客戶端原始請求提供的標(biāo)簽回復(fù)客戶請求。例如,IMAP服務(wù)器可能希望用Background標(biāo)簽回復(fù)客戶后臺請求,使用Foreground標(biāo)簽回復(fù)客戶前臺請求。表2顯示了創(chuàng)建和使用multi-sockets移動網(wǎng)絡(luò)的API。除了顯示的功能外,multi-sockets還支持傳統(tǒng)的套接口函數(shù);例如,accept,select等。
3.7討論
設(shè)計移動網(wǎng)絡(luò)接口時要考慮應(yīng)用程序需要提供自己的事件,才能實現(xiàn)應(yīng)用程序感知功能。首先,應(yīng)用程序需要發(fā)現(xiàn)新的網(wǎng)絡(luò)選項,為每個網(wǎng)絡(luò)選項打開套接口,并監(jiān)控各網(wǎng)絡(luò)的連接質(zhì)量,以便決定用于傳輸?shù)木W(wǎng)絡(luò)。按通信量需求排序,應(yīng)用程序可能會創(chuàng)建每個網(wǎng)絡(luò)的多個套接字,然后使用特定于平臺的方法優(yōu)先考慮通信量從一個套接口到另一個。應(yīng)用程序也需要傳輸介質(zhì)跨越連接來提高吞吐量,然后管理必然函數(shù)名稱參數(shù)和返回的值ms_socket(INfamily,INtype,INprotocol,OUTmulti-socket);ms_begin_irob(INmulti-socket,INlabel,INdependencies,INthunk,INthunk_data,OUTirob_id);ms_irob_send(INirob_id,INbuf,INlength,INflags,OUTbytes_sent);ms_end_irob(INirob_id)ms_send(INmulti-socket,INbuffer,INlength,INflags,INlabel,INthunk,INthunk_data,OUTbytes_sent);ms_recv(INmulti-socket,INbuffer,INlength,INflags,OUTlabel,OUTbytes_rcvd);產(chǎn)生的數(shù)據(jù)分段排序。最后,應(yīng)用程序可能會輪詢來實現(xiàn)Thunk的功能,Thunk允許鏈接被修改,如果當(dāng)前沒有合適的網(wǎng)絡(luò)也可以刪除。
4移動網(wǎng)絡(luò)接口的通信過程
對于每個multi-socket,庫動態(tài)創(chuàng)建單獨(dú)的TCP套接字決定每個接口發(fā)送數(shù)據(jù)。multi-socket連接持續(xù)下去,直到?jīng)]有TCP連接可以使用任何網(wǎng)絡(luò)接口(例如,如果移動計算機(jī)移出WiFi接入點的范圍內(nèi),沒有其他網(wǎng)絡(luò)選項可用),或multi-socket關(guān)閉。為簡單起見,選擇使用TCP。TCP可靠性機(jī)制限制必須在IROB內(nèi)實現(xiàn)命令交付的字節(jié)或由于網(wǎng)絡(luò)擁塞丟失字節(jié)重新傳輸?shù)墓ぷ髁。?dāng)?shù)谝粋TCP套接字建立初始連接時,移動客戶端為每一個連接發(fā)送其對等數(shù)據(jù),包括可用的IP地址、估計的帶寬和延遲。它搭載更新網(wǎng)絡(luò)標(biāo)題信息,同伴可以建立一個新的TCP連接,新的連接將是最適合于一個特定的標(biāo)簽數(shù)據(jù)。庫使用主動和被動估計網(wǎng)絡(luò)帶寬和延遲的方式將標(biāo)簽映射到TCP連接。當(dāng)一個新的網(wǎng)絡(luò)選項被發(fā)現(xiàn)時,連接偵查器提供連接質(zhì)量的初步測量。庫通過連接發(fā)送數(shù)據(jù),測量單個傳輸?shù)捻憫?yīng)時間產(chǎn)生被動測量。連接偵察器提供周期性的主動測量,用于評估在沒有數(shù)據(jù)傳輸和被動測量不可用時網(wǎng)絡(luò)質(zhì)量。主動和被動測量結(jié)合使用觸發(fā)濾波器獲得運(yùn)行當(dāng)前連接質(zhì)量的估計。庫使用以下策略映射標(biāo)簽TCP連接。前臺數(shù)據(jù)具有最高優(yōu)先級,帶有{Foreground,Small}標(biāo)簽的IROBs通過低延遲的TCP連接發(fā)送。帶有{Foreground,Large}標(biāo)簽的IROBs通過高寬帶連接發(fā)送。這些可能是相同的連接(例如,當(dāng)前只有一個接口提供連接)。用于特定標(biāo)簽的實際物理接口可能隨時間變化鏈接特征有所不同。后臺數(shù)據(jù)比前臺數(shù)據(jù)優(yōu)先級低。當(dāng)前不發(fā)送前臺數(shù)據(jù)的網(wǎng)絡(luò)發(fā)送后臺IROBs,大的后臺IROBs被拆分成小塊,每一個都可能被送到另一個網(wǎng)絡(luò)。Foreground標(biāo)簽要求低響應(yīng)時間;不幸的是,分段可以增加最后一個數(shù)據(jù)包的延遲到達(dá),除非網(wǎng)絡(luò)層能為每個鏈接正確預(yù)測瞬時延遲。相比之下,Background標(biāo)簽指定的數(shù)據(jù)對延遲不敏感;因此,分段策略最大化利用每個鏈接是理想的。一個鏈表以先進(jìn)先出順序索引所有IROBs標(biāo)簽。每個TCP連接都有當(dāng)前合適發(fā)送標(biāo)簽的列表。當(dāng)網(wǎng)絡(luò)能夠發(fā)送數(shù)據(jù)時,庫從具有最高優(yōu)先級的標(biāo)簽相關(guān)聯(lián)的列表中取出第一個IROB數(shù)據(jù)。庫用32字節(jié)特定的網(wǎng)絡(luò)標(biāo)頭封裝IROB數(shù)據(jù),包括IROB標(biāo)識符和它的標(biāo)簽以及IROB的順序約束。在一次連接時,庫并不限制發(fā)送所有IROB的字節(jié),它可能決定一個IROB分解成小塊,每一個都要發(fā)送一個單獨(dú)的頭。IROB塊通過多個TCP連接發(fā)送,每個IROB的字節(jié)能有序地自動傳送,接收庫對其確認(rèn)和重組。當(dāng)多個網(wǎng)絡(luò)應(yīng)用程序同時執(zhí)行時,所有進(jìn)程的活動都通過共享內(nèi)存變量和同步進(jìn)行協(xié)調(diào)。我們假設(shè)鏈接接近移動計算機(jī)的瓶頸,大多數(shù)感興趣的是所有路徑共享。因此,庫實例更新共享變量,包含每個網(wǎng)絡(luò)上未發(fā)送數(shù)據(jù)的緩沖數(shù)量。這樣的數(shù)據(jù)在所有進(jìn)程的總量不得超過限制先行調(diào)度算法,以保證良好的前臺性能。網(wǎng)絡(luò)應(yīng)用程序?qū)⒄{(diào)整其在執(zhí)行過程中被動觀測網(wǎng)絡(luò)質(zhì)量的估計,因此,將考慮在其決定的競爭流量。庫通過建立可能的接口對處理兩個移動設(shè)備與多個接口之間的連接。
5結(jié)語
移動節(jié)點面臨著不斷變化的各種網(wǎng)絡(luò)選項,每一種都有不同的優(yōu)點和缺點。因此,對應(yīng)用程序而言,選擇一個最佳的網(wǎng)絡(luò)選項,這種情況是很少見的。通過合理使用可用的選項,應(yīng)用程序的服務(wù)得到了顯著改善。不幸的是,這樣會暴露可用網(wǎng)絡(luò)的低層細(xì)節(jié)給應(yīng)用程序,不太可能引起很大的關(guān)注。設(shè)計的移動網(wǎng)絡(luò)解決了這一僵局。它為應(yīng)用程序提供一個簡單的聲明接口來表達(dá)每一個網(wǎng)絡(luò)消息背后的意圖。系統(tǒng)匹配當(dāng)前網(wǎng)絡(luò)通信量到最佳可用的接口。如果沒有合適的可用網(wǎng)絡(luò),該通信量被推遲,直到網(wǎng)絡(luò)可用。延緩某些類型的通信量會導(dǎo)致重新排序。設(shè)計的移動網(wǎng)絡(luò)接口提供了表達(dá)互斥和排序約束機(jī)制,使他們的通信量匹配到應(yīng)用程序的限制。
作者:楊彬 李邐 單位:遼寧行政學(xué)院信息技術(shù)系
參考文獻(xiàn):
[1]朱孫鵬,葉宇煌.基于北斗RDSS的GNSS位置信息轉(zhuǎn)發(fā)接口軟件設(shè)計[J].莆田學(xué)院學(xué)報,2015,22(5):60-63.
[2]尹星,張三峰.一種多路由器多接口的移動網(wǎng)絡(luò)多宿方案[J].計算機(jī)科學(xué),2015,42(5):142-147.
【移動網(wǎng)絡(luò)接口的研究與設(shè)計論文】相關(guān)文章:
IP網(wǎng)絡(luò)存儲·什么是網(wǎng)絡(luò)接口04-26
網(wǎng)絡(luò)加速及優(yōu)化·什么是網(wǎng)絡(luò)接口04-26
場館無線網(wǎng)絡(luò)覆蓋設(shè)計研究論文04-29
計費(fèi)系統(tǒng)·什么是網(wǎng)絡(luò)接口04-26
利用FPGA實現(xiàn)MMC2107與SDRAM接口設(shè)計論文12-02
網(wǎng)絡(luò)環(huán)境下教與學(xué)的實踐研究論文05-01