標籤:底層實現 accept 屬性 還需要 ddl 聚集 fan 錯誤 多個
移動網路介面設計
摘要:行動裝置面臨著多樣化和動態網路選項,要想充分地使用這些選項要求知道應用程式的意圖。移動網路介面是一個簡單而強大的處理網路多樣性的機制。應用程式為網路傳輸提供一個聲明標籤,並將系統匹配到最合適的網路。移動網路介面還可以延遲和重新排序傳輸的資料,提供應用程式互斥和排序約束機制。
關鍵詞:移動網路;介面設計;資料轉送
1引言
行動裝置面臨著一個多元、動態網路選項。這些選項有各種各樣的優點和缺點。因此,在所有情況下沒有單一的“最佳選擇”,基礎設施的多樣性既是挑戰,也是機遇。面臨的挑戰是管理這些不斷變化的選項以滿足每個應用程式的需求,這本身隨時間變化。通過這樣做,應用程式帶來了顯著效益,同時利用多個網路和規劃未來的傳輸智能。目前解決這個問題的方法是不充分的。一個極端,作業系統或中介軟體層代表應用程式的所有路由和介面決定。然而,因為這些決定不知道應用程式的使用網路意圖,他們經常錯過最佳化機會。另一個極端,系統直接暴露底層細節給應用程式,使應用程式知道網路變化,應用程式必須顯式地選擇可用的選項。這種方法表達,需要管理多個無線網路不必要複雜的應用程式任務。設計的網路介於兩者之間,系統管理發現和描述可用網路選項的細節,應用程式用少量的聲明標籤來提供關於通訊量的提示。然後,該系統將匹配的網路流量提供給可用的介面。設計的移動網路系統提供了一個可移植的、使用者層級的實現方法。
2移動網路介面設計原理
設計遵循經典的分離原則機制。應用程式確定使用網路的實際意圖,這一意圖表示資料應如何傳輸的策略。另一方面,作業系統或中介軟體庫是最佳的位置,以提供一個共有機制來實現指定的策略。每個應用程式必須提供使用網路意圖的提示,因此共有機制使得部署新應用程式使用多個移動網路容易。處理多個異構和間歇性的移動網路的細節被封裝在系統的底層。共有機制也可以從多個應用程式聚集異構資料轉送。因此,網路設計通過資料轉送標籤和系統底層實現的分離,制定政策資料對應到網路首選時的資料轉送的標籤。設計希望介面儘可能簡單,要求每一個應用程式公開定量規格的特性,它希望產生的流量,以及它所需要的服務品質。這一原則導致了幾項決定,應用程式使用定性屬性的資料表示他們的意圖,而不是使用量化規範,即,不管是小的還是大的,不管是前台互動的還是背景流量。不要求什麼是“小”和“大”。允許該應用程式使用它認為合適標籤。並發系統包括允許程式員排除不正確的排序機制,增加了同步抽象表達原子和之前發生的約束。除了表達這類排序約束,還需要處理部分失敗的機制。有些時候一些資訊量將由任何可用的傳輸轉換提供錯誤的服務。因此,提供了一種回調機制來處理延遲傳輸或中斷連線。
3移動網路介面設計方案
在本節中,描述網路應用程式介面。首先描述基本的抽象介面。應用程式使用標籤來傳達他們的意圖。表達資訊單位稱為IROBs(IsolatedReliableOrderedBytestreams)。IROBs提供原子性(互斥);應用程式還可以指定IROBs之間順序約束。當操作必須延遲,應用程式可以註冊thunks恢複他們。
3.1標籤
標籤是應用程式的主要抽象資訊,應用程式聲明任何特定網路資訊屬性的機制。標籤是系統定義的定性屬性的訊息。目前只支援4個標籤,兩個維度,互動性和規模,如果使用者事件正在等待響應,訊息的標籤設定為Fore-ground,如果它的及時傳遞不是行為的關鍵,則訊息的標籤是Background。例如,許多提示不需要發送。Small標籤描述單包的RPC等訊息,Large標籤描述其他訊息,如包含多媒體資料。
3.2多模式資料來源處理
標籤與標籤感知套介面一起使用。我們稱這種套介面為multi-sockets。直觀地說,一個multi-socket將幾個不同標籤單一虛擬套介面複合在一起。在大多數情況下,multi-sockets行為是正常的。然而,multi-socket發送調用需要一個標籤。請注意,寄件者是負責分配標籤的實體,作為結果,接收不需要標籤。可以想象用一個標籤來實現過濾的接收。multi-socket是一個邏輯串連,動態執行個體化,並使用實際TCP串連在一個或多個物理介面。multi-sockets提供封裝:它們隱藏多個網路介面、路由和連線應用程式程式。Multi-sockets也封裝瞬時中斷連線,如通過無線死區。應用程式指定標籤,網路流量管理員利用標籤選擇正確的網路發送資料。應用程式被每一個標籤通知網路不可用,通過使用thunk技術,當事件發生時執行遞延執行環境。像TCP套介面,multi-sockets支援可靠傳遞抽象。然而,multi-sockets放鬆了TCP排序約束,允許位元組被記錄到指定的互斥和排序約束中的應用,在後面兩節中描述。
3.3IROBs位元組流
帶有標籤的IROB是網路傳輸資訊的基本單位,multi-socket介面保證每個IROB自動接收;即,指令中產生的IROB位元組流不影響其他網路傳輸位元組流。然而,單個IROB可能被重新排序到另一個地方。換句話說,來自接收multi-socket介面的先前發送的IROB首先被正在讀取資料的應用程式看到。然而,來自於兩個IROB的位元組永遠不會混合。IROBs以同樣的方式提供互斥操作,在多線程程式中,鎖提供互斥的線程。
3.4排序約束
因為有些應用程式需要訂購IROBs之間的約束,所以multi-socket介面支援這樣的約束聲明。每個multi-socket介面分配一個獨一無二的,單調增加的標識符給每個IROB。當建立一個新的IROB時,應用程式可以指定任何IROB的標識符,但必須接收到之前被創造出來的標識符。排序約束可能只指定IROBs有較低的唯一識別碼,這可以保證這樣的約束是無死結的。TCP通訊端指定每個IROB必須收到最低的標識符,應用程式處理連續的位元組流,API提供了簡單的預設發送調用機制。然而,許多應用程式擁有更為寬鬆的約束條件;例如,BlueFS檔案系統用戶端允許非同步寫入。multi-sockets中的排序約束類似於多線程程式提供線程的條件變數。
3.5Thunks技術
帶標籤的IROB在發送時沒有任何“合適的”網路可以利用,這種情況是可能的。例如,批量傳輸開始時只有一個低頻寬連結是可用的;或者移動電腦可能是在一個無線死區,沒有串連。這種傳輸最好在稍後遇到一個高頻寬連結時處理。當然,不希望應用程式輪詢連結,也不希望應用程式建立新串連後短時間內瞬時斷開。建立IROBs操作設定一個可選的Thunk參數,這個函數/參數對將用於告知應用程式IROBs由於缺少合適的網路不能立即發送。當一個IROB延期時,帶有Thunk參數的調用返回一個特殊的傳回碼。指定標籤資料被下一次傳輸時,庫通過調用thunk指定參數的函數通知應用程式。處理常式必須為Thunk參數資源關係負責,Thunk可能會被取消,例如,前一個Thunk是無效的,後續的將取消。Thunk對於定期發送訊息的應用程式是有用的,如檢查新郵件。在中斷連線期間緩衝冗餘訊息,以後將所有資訊發送這是不可取的。相反,應用程式註冊一個發送thunk,合適的網路可用時獲得通知。Thunk處理常式只發送輪詢請求,從而保護寶貴的網路頻寬。
3.6API函數
列出了最重要的改進的移動網路API函數。ms_sock-et函數建立一個新的multi-socket,ms_connect函數串連到遠程端點,ms_connect函數和標準的connect函數唯一不同是調用的第一個參數是multi-socket。一般使用ms_*修改應用程式替換socket,connect等函數。應用程式使用ms_begin_irob函數建立一個新的IROB,通過一個標籤來描述原子資訊以及排序約束。應用程式調用ms_irob_send函數指定IROB部分資料發送;交替調用send和ms_irob_send函數。應用程式使用ms_end_irob函數通知庫沒有IROB資料發送。ms_send函數調用提供便利,它根據所有以前的IROBs建立一個新的IROB,並結束IROB。如果應用程式使用ms_send調用,它將提供帶標籤的TCP串連,儘管沒有重新排序。ms_recv函數調用返回一個標籤。伺服器應用程式希望使用用戶端原始請求提供的標籤回複客戶請求。例如,IMAP伺服器可能希望用Background標籤回複客戶後台請求,使用Foreground標籤回複客戶前台請求。表2顯示了建立和使用multi-sockets移動網路的API。除了顯示的功能外,multi-sockets還支援傳統的套介面函數;例如,accept,select等。
3.7討論
設計移動網路介面時要考慮應用程式需要提供自己的事件,才能實現應用程式感知功能。首先,應用程式需要發現新的網路選項,為每個網路選項開啟套介面,並監控各網路的串連品質,以便決定用於傳輸的網路。按通訊量需求排序,應用程式可能會建立每個網路的多個通訊端,然後使用特定於平台的方法優先考慮通訊量從一個套介面到另一個。應用程式也需要傳輸介質跨越串連來提高輸送量,然後管理必然產生的資料分段排序。最後,應用程式可能會輪詢來實現Thunk的功能,Thunk允許連結被修改,如果當前沒有合適的網路也可以刪除。
4移動網路介面的通訊過程
對於每個multi-socket,庫動態建立單獨的TCP通訊端決定每個介面發送資料。multi-socket串連持續下去,直到沒有TCP串連可以使用任何網路介面(例如,如果移動電腦移出WiFi存取點的範圍內,沒有其他網路選項可用),或multi-socket關閉。為簡單起見,選擇使用TCP。TCP可靠性機制限制必須在IROB內實現命令交付的位元組或由於網路擁塞丟失位元組重新傳輸的工作量。當第一個TCP通訊端建立初始串連時,移動用戶端為每一個串連發送其對等資料,包括可用的IP地址、估計的頻寬和延遲。它搭載更新網路標題資訊,同伴可以建立一個新的TCP串連,新的串連將是最適合於一個特定的標籤資料。庫使用主動和被動估計網路頻寬和延遲的方式將標籤映射到TCP串連。當一個新的網路選項被發現時,串連偵查器提供串連品質的初步測量。庫通過串連發送資料,測量單個傳輸的回應時間產生被動測量。串連偵察器提供周期性的主動測量,用於評估在沒有資料轉送和被動測量不可用時網路品質。主動和被動測量結合使用觸發濾波器獲得運行當前串連品質的估計。庫使用以下策略映射標籤TCP串連。前台資料具有最高優先順序,帶有{Foreground,Small}標籤的IROBs通過低延遲的TCP串連發送。帶有{Foreground,Large}標籤的IROBs通過高寬頻連線發送。這些可能是相同的串連(例如,當前只有一個介面提供串連)。用於特定標籤的實際物理介面可能隨時間變化連結特徵有所不同。後台資料比前台資料優先順序低。當前不發送前台資料的網路發送後台IROBs,大的後台IROBs被拆分成小塊,每一個都可能被送到另一個網路。Foreground標籤要求低回應時間;不幸的是,分段可以增加最後一個資料包的延遲到達,除非網路層能為每個連結正確預測瞬時延遲。相比之下,Background標籤指定的資料對延遲不敏感;因此,分段策略最大化利用每個連結是理想的。一個鏈表以先進先出順序索引所有IROBs標籤。每個TCP串連都有當前合適發送標籤的列表。當網路能夠發送資料時,庫從具有最高優先順序的標籤相關聯的列表中取出第一個IROB資料。庫用32位元組特定的網路標題封裝IROB資料,包括IROB標識符和它的標籤以及IROB的順序約束。在一次串連時,庫並不限制發送所有IROB的位元組,它可能決定一個IROB分解成小塊,每一個都要發送一個單獨的頭。IROB塊通過多個TCP串連發送,每個IROB的位元組能有序地自動傳送,接收庫對其確認和重組。當多個網路應用程式同時執行時,所有進程的活動都通過共用記憶體變數和同步進行協調。我們假設連結接近移動電腦的瓶頸,大多數感興趣的是所有路徑共用。因此,庫執行個體更新共用變數,包含每個網路上未發送資料的緩衝數量。這樣的資料在所有進程的總量不得超過限制先行調度演算法,以保證良好的前台效能。網路應用程式將調整其在執行過程中被動觀測網路品質的估計,因此,將考慮在其決定的競爭流量。庫通過建立可能的介面對處理兩個行動裝置與多個介面之間的串連。
5結語
移動節點面臨著不斷變化的各種網路選項,每一種都有不同的優點和缺點。因此,對應用程式而言,選擇一個最佳的網路選項,這種情況是很少見的。通過合理使用可用的選項,應用程式的服務得到了顯著改善。不幸的是,這樣會暴露可用網路的低層細節給應用程式,不太可能引起很大的關注。設計的移動網路解決了這一僵局。它為應用程式提供一個簡單的聲明介面來表達每一個網路訊息背後的意圖。系統匹配當前網路通訊量到最佳可用的介面。如果沒有合適的可用網路,該通訊量被延遲,直到網路可用。延緩某些類型的通訊量會導致重新排序。設計的移動網路介面提供了表達互斥和排序約束機制,使他們的通訊量匹配到應用程式的限制。
參考文獻
[1]尹星. 網路移動性支援關鍵技術研究[D].東南大學,2016.
[2]楊彬,李邐. 移動網路介面的研究與設計[J]. 電腦編程技巧與維護,2016,(02):38-39+44.
[3]李瑩. 分布式多層次移動感知多媒體資料管理與檢索系統的設計與實現[D].北京郵電大學,2015.
[4]閻潔. 面向客戶感知的網路品質評估系統的設計與實現[D].電子科技大學,2015.
[5]王子鶴. 基於AOIP的MSC-POOL技術研究[D].蘭州交通大學,2014.
[6]蔡正翔. 基於軟體無線電的空中介面監測系統研究[D].廣西師範大學,2014
[7] Luis P.Backfill. A Theory of Distribution Camel Structure[J].press of Caliph.0niaUniVersity,2001,21.
[8] Louis Stem and Ambary.Marketing Chillier.5thed.Upper Saddle Riving[J],yinghuiyun.com,prentice Hall,2003,14-15.
[9] Coughlin, Anent, Erin Anderson, Louis W. Stefan. El-Ambary. Marketing Channels (6thed)[M].Beijing: Tsinghai University Press,2001,20.
文章來源:http://www.yinghuiyun.com/fanwen/jisuanji/
移動網路介面設計