国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

      基于sctp的多路徑并發(fā)傳輸方法

      文檔序號:7743191閱讀:192來源:國知局

      專利名稱::基于sctp的多路徑并發(fā)傳輸方法
      技術領域
      :基于SCTP的多路徑并發(fā)傳輸方法屬于互聯(lián)網傳輸
      技術領域
      ,主要涉及多地址主機之間的數據傳輸和通信。
      背景技術
      :近年來,由于GSM,GPRS,3G,Wifi,Wimax等不同技術特點的通訊技術標準的共存以及大規(guī)模工業(yè)生產帶來通訊模塊成本的降低,使智能移動終端朝著多Radio方向發(fā)展。如果端系統(tǒng)擁有多個同時可用的異質radio,或者多個以太網接口,端系統(tǒng)之間就會具有多條同時可用的鏈路。研究異構網絡端到端多路徑數據傳輸協(xié)議,從而有效利用多種網絡資源,為端到端的應用提供更好的支持是一個有重大研究價值的課題。然而,傳統(tǒng)的互聯(lián)網傳輸層協(xié)議,如使用最廣泛的TCP協(xié)議,由于其連接標識包括了單一的源地址和目的地址,所以端到端的數據傳輸只能使用單一路徑。流控制傳輸協(xié)議(SCTP,StreamControlTransmissionProtocol)相對于傳統(tǒng)的傳輸層協(xié)議進行了兩項主要的擴展,即支持多地址主機和支持單個SCTP關聯(lián)中使用多個流。例如,多流的HTTP服務器可以在一個關聯(lián)中利用兩條流同時加載HTML和圖像映像,從而表現(xiàn)出更好的響應性。但SCTP協(xié)議的同一個關聯(lián)中的多個流只是在邏輯意義上不同,并不是和不同的物理傳輸路徑相對應,實際上,加載HTML和圖像映像的兩條邏輯流的數據傳輸均在同一物理傳輸路徑上進行??梢?,多流只能在一定程度上提高并行化響應程度,但是并不會提高端到端的吞吐量。若要提高一個SCTP關聯(lián)中端到端的吞吐量,則需要利用SCTP支持多地址主機的特性。但標準SCTP協(xié)議利用多地址的目的僅在于增強連接的容錯性,一個關聯(lián)內的所有可用路徑中有一條被選為首選路徑,其余作為備選路徑。正常情況下,數據傳輸只在首選路徑上進行,只有當首選路徑的連通性出現(xiàn)問題時,才啟用備選路徑。即標準的SCTP協(xié)議僅在單一路徑上進行數據傳輸,因此無法充分利用多條路徑的網絡帶寬資源,也無法很好地提高端到端通信的吞吐量。
      發(fā)明內容本發(fā)明提出了基于SCTP的多路徑并發(fā)傳輸方法(以下簡稱為SCTP-MP,即Multi-PathSCTP),其特征在于,在一個SCTP關聯(lián)中,通過擴展標準SCTP協(xié)議中的主備路徑機制,使多條路徑同時可用于數據傳輸,并且不同于傳統(tǒng)SCTP協(xié)議實現(xiàn)中路徑只與目的地址相對應的路徑定義方法,本發(fā)明使用<源地址、目的地址>二元組來定義路徑,從而使得關聯(lián)中可用路徑的數量達到最大,同時也為實現(xiàn)更加復雜的路徑選擇算法提供了基礎。本發(fā)明基于Linux系統(tǒng)進行了代碼實現(xiàn),針對傳統(tǒng)路由系統(tǒng)無法確保數據分組能夠從指定的源地址所對應的物理接口進行發(fā)送的問題,提出了使用IP策略路由的方法,從而實現(xiàn)了在多條路徑可用的情況下,數據分組能夠嚴格按照指定源地址和目的地址進行傳送。本發(fā)明的特征在于所述方法是在客戶端和服務器端之間組成的互聯(lián)網中依次按以下步驟實現(xiàn)的步驟(1),在客戶端和服務器端之間建立多路徑并發(fā)傳輸的關聯(lián)時,按照流控制傳輸協(xié)議SCTP四步握手建立關聯(lián)時,在通信雙方建立可用路徑列表,并使可用路徑數量最大化,其步驟如下步驟(1.1),客戶端為本機用于此關聯(lián)的IP地址列表中每一個IP地址創(chuàng)建一個子路由表,該子路由表中默認網關為該接口IP地址對應的網關,以便被指定了源地址的分組會查找與該地址對應的子路由表,保證所述分組能從與指定源地址對應的網卡上發(fā)送出去,步驟(1.2),客戶端發(fā)送初始化通信INIT報文給已知的一個服務器端的IP地址addr-SO,而把源地址指定為客戶端所述IP地址列表中第一個與目的地址IP協(xié)議類型一致的本端地址,沒為addr-CO’,但在所述INIT報文中不僅要包含客戶端支持的IP協(xié)議類型,還要包含所有該類型的客戶端IP地址,所述IP協(xié)議類型是指IPv6,或IPv4,共有兩種協(xié)議類型,步驟(1.3),服務器端在收到所述INIT報文后,根據本端支持的IP協(xié)議類型和所述INIT報文中對端支持的IP協(xié)議類型,確定通信兩端共同支持的公共IP協(xié)議類型,然后把所有該類型的本端IP地址寫入INIT-ACK應答報文中,回復給客戶端,該應答報文的目的地址為addr-CO’,源地址指定為addr-SO,服務器端同時存儲所述INIT報文中列出的所有與所述公共協(xié)議類型一致的客戶端IP地址,步驟(1.4),客戶端收到所述INIT-ACK報文后,讀取本端存儲的所有該公共類型的IP地址,再與所述INIT-ACK報文中包含的對端服務器的IP地址共同組成路徑列表,并寫入數組中,該數組中包括從客戶端到服務器端所有可能的路徑,以及與所述的每一條可能的路徑對應的客戶端的源地址與服務器端的目的地址,同時發(fā)一個C00KIE-ECH0回復報文給服務器端,路徑指定為<addr-C0,,addr-SO〉,步驟(1.5),服務器端在收到所述C00KIE-ECH0報文后,加上路徑可達的狀態(tài)位標記,并按照步驟(1.4)中所述的方法建立本端的路徑列表,同時向客戶端發(fā)一個C00KIE-ACK回復報文,路徑指定為<addr-S0,addr-C0,>,并用HEARTBEAT報文探測除所述<addr-S0,addr-CO,>外其它路徑的可達性在指定的路徑上發(fā)送HEARTBEAT報文,若作為發(fā)送方的服務器端收到對端客戶端在反向路徑上回復的HEARTBEAT-ACK報文,則該路徑可達,并在該路徑上作一個狀態(tài)位標記;步驟(2),客戶端或服務器端依次按照以下步驟進行數據傳輸步驟(2.1),通信雙方按步驟(1.5)中所述分別使用所述HEARTBEAT報文周期性地探測本端所述路徑列表中每條路徑的可達性,步驟(2.2),每當有分組從應用層遞交給傳輸層進行發(fā)送時,發(fā)送方采用基于擁塞控制窗口的輪換式路徑選擇算法從所有可達的路徑中選擇一條作為該分組的發(fā)送路徑,步驟(2.3),在發(fā)送時發(fā)送方通過bindO函數指定分組的源地址為指定路徑中的源地址,分組在IP層經過路由查找后從一個該地址對應的所述子路由表中對應的網關上發(fā)送出去。通信雙方各自的IP地址是由應用程序指定的。通過實際網絡環(huán)境中的實驗證明,本方案通過實現(xiàn)<源地址、目的地址>二元組共同對應路徑的機制可有效地增加數據傳輸路徑、更加充分地利用線路帶寬,達到了較好的鏈路聚合??梢?,本方案具有較好的實際應用價值,是一個綜合的、高效的多路徑傳輸解決方案。圖1.客戶端(Client)多地址,服務器端(Server)單地址的情況。圖2.客戶端(Client)、服務器端(Server)均為雙地址的情況。圖3.圖2中客戶端(Client)到服務器端(Server)的可用路徑列表。圖4.SCTP-MP方案四步握手建立關聯(lián)過程中的關鍵操作。圖5.路徑選擇策略流程圖。具體實施例方式本發(fā)明包括以下步驟,用Client/Server模型進行說明步驟1,在SCTP四步握手建立關聯(lián)的過程中,在通信雙方建立可用路徑列表,并且使可用路徑數量最大化。步驟1.1,Client端發(fā)送初始化INIT報文給已知的一個Server端IP地址addr-SO(應用程序指定),源地址指定為Client端用于此關聯(lián)的IP地址列表中,第一個與目的地址IP協(xié)議類型(IPv4/IPv6)—致的本端地址,設為addr-CO’。INIT報文中包含Client端支持的IP協(xié)議類型以及所有該類型的Client端IP地址(也可由應用程序指定可以使用的IP地址,以下缺省為全部使用)。步驟1.2,Server端收到INIT報文后,根據本端支持的IP協(xié)議類型和INIT報文中的對端支持類型,確定通信兩端共同支持的公共IP協(xié)議類型;然后將所有該類型的本端IP地址寫入INIT-ACK應答報文中(也可由應用程序指定可以使用的IP地址,以下缺省為全部使用),回復給Client端,該應答報文的目的地址為addr-CO’,源地址指定為addr-SO;同時Server端存儲INIT報文所列出的所有與公共防議類型一致的Client端IP地址。步驟1.3,Client端收到INIT-ACK報文后,其中包含的對端IP地址類型,已經為兩端支持的公共IP地址類型。Client端讀取本端所有該類型的IP地址,然后與INIT-ACK報文中包含的對端IP地址共同組成路徑列表,并寫入數組currentAssociation->path_list[]中,列表大小為currentAssociation->no_of_paths。數組currentAssociation->path_list[]的建立方法如下與公共地址類型(IPv4/IPv6)—致的Server端地址存儲在數組dAddresses[]中,與公共地址類型一致的Client端地址存儲在數組sAddresses口中。對dAddresses口中的每一個地址dAddresses[i],將sAddesses[]中所有與它類型一致的地址sAddesses[k]與dAddresses[i]作為一條路徑的源地址和目的地址,按序寫入path_list[]中。以兩端均只支持IPv4的情況為例,若數組dAddresses[]大小為dn,數組sAddesses[]大小為sn,則數組currentAssociation->path_list[]大小為dn*sn,艮口currentAssociation->no_of_pathsdn氺sn。Client端回復COOKIE-ECHO報文給Server端,路徑指定為<addr_C0,,addr_S0>。步驟1.4,Server端按照步驟1.3中與Client端相同的方式建立本端的路徑列表,回復C00KIE-ACK報文,路徑指定為<addr-S0,addr-CO,>,并用HEARTBEAT報文探測除<addr-SO,addr-CO’>外的其它路徑的可達性。具體的探測方法與步驟2中相同。currentAssociation->path_list[]中的每條路經由一個對應的狀態(tài)位標明該路徑是否可達。路徑<addr-S0,addr-CO’>的狀態(tài)位初始標記為可達,其它路徑狀態(tài)位的值初始標記為未知,之后由HEARTBEAT報文的探測結果決定。步驟1.5,Client端收到C00KIE-ACK報文后,開始在路徑<addr_C0,,addr-S0>(狀態(tài)位初始標記為可達)上向Server端發(fā)送數據,并用HEARTBEAT報文探測currentAssociation->path_list[]中其它路徑的可達性。本方案中每條路經都擁有獨立的擁塞控制窗口,擁塞控制算法根據每條路徑上的數據發(fā)送情況對其窗口進行調整。步驟2,在數據傳輸過程中,通信雙方使用HEARTBEAT報文周期性地探測數組currentAssociation->path_list[]中每條路徑的可達性。探測方法為連接的一端在指定路徑上發(fā)送HEARTBEAT報文,對端收到后立即在反向路徑上回復HEARTBEAT-ACK報文,若發(fā)送方收到回復報文,則認為該路徑可達。狀態(tài)位標記為可達的路徑方可被選擇用來傳輸數據。步驟3,每當有分組從應用層遞交給傳輸層進行發(fā)送時,采用一定的路徑選擇算法,從所有可達路徑中選擇一條作為該分組的發(fā)送路徑。本方案可靈活使用多種路徑選擇算法,這里以一種基于擁塞控制窗口的輪換式路徑選擇算法為例進行介紹。本方案中每條路徑都會擁有獨立的擁塞控制窗口,該算法的路徑選擇策略是在當前可用路徑上發(fā)送數據分組,直至當前路徑的擁塞控制窗口被寫滿,然后切換到下一條擁塞控制窗口不為零的可用路徑上繼續(xù)發(fā)送數據,流程圖如圖5所示。步驟4,為保證數據傳輸過程中數據分組在指定的路徑<源IP地址,目的IP地址>上傳輸,在每個已經指定路徑的待發(fā)分組遞交給IP層之前,通過bindO函數指定分組的源地址為指定路徑中的源地址。分組在IP層經過路由查找之后從正確的接口(網卡)上發(fā)送出去。步驟5,由于傳統(tǒng)的系統(tǒng)路由規(guī)則只按照目的地址最長匹配原則查找路由表,然后確定待發(fā)分組的源地址,因此使用bindO函數也無法完全確保分組嚴格按照指定的源地址發(fā)送。所以在運行協(xié)議之前,需要根據本機接口(網卡)對應的IP地址設置基于分組源地址的策略路由規(guī)則,即為該主機上每一個IP地址創(chuàng)建一個子路由表,子路由表中默認網關為該接口IP地址對應的網關,這樣指定了源地址的分組會查找與該源地址對應的子路由表,保證分組從與指定源地址對應的接口(網卡)上發(fā)送出去。我們首先介紹本發(fā)明的總體情況。本多路徑傳輸方法(SCTP-MP)擴展了標準SCTP協(xié)議中的首選路徑和備選路徑機制,平等對待每條路徑,使其在相同條件下均可被路徑選擇算法選作傳送數據的路徑。并且,不同于傳統(tǒng)SCTP協(xié)議實現(xiàn)中路徑只與目的地址相對應的路徑定義方法,本發(fā)明使用<源地址、目的地址>二元組定義路徑,從而使得關聯(lián)中可用路徑的數量達到了最大,同時也為實現(xiàn)更加復雜的路徑選擇算法提供了基礎。另外,針對傳統(tǒng)的系統(tǒng)路由規(guī)則只按照目的地址最長匹配原則查找路由表以確定待發(fā)分組的源地址,從而無法確保分組嚴格按照指定路徑中的源地址進行發(fā)送的問題,本方案提出了使用IP策略路由的方法,從而實現(xiàn)了在多條可用路徑的情況下,數據分組能夠嚴格按照指定源地址和目的地址進行傳送。下面介紹本方案如何使一個SCTP關聯(lián)中可供使用的物理傳輸路徑數量達到最大。傳統(tǒng)的SCTP實現(xiàn)中將傳輸路徑與目的地址一一對應,發(fā)送端并不指定源地址,而是直接根據目的地址查詢主機路由表來獲得。而且在主機路由表中,一個目的地址僅對應一條有效路由表項,因此實際上對于每個目的地址,主機僅能使用一條路徑進行數據傳輸。在這種機制下,可用傳輸路徑的數量等于目的地址的數量,使得本端的多地址特性無法得到充分利用。如圖1中所示的情況,Client主機具有兩個IP地址,Server主機具有一個IP地址。在Client端向Server端傳輸數據的情況下,若可用路徑只與目的地址對應,則從Client端到Server端只有一條路徑可用。而實際上,Client端的兩個地址都可以到達Server端,即存在兩條可用物理傳輸路徑,在這種情況下,其中一條路徑的帶寬就沒有得到利用。本方案采用了新的路徑定義方式,即傳輸路徑定義為由〈源IP地址,目的IP地址>組成的二元組,即由一個源地址和一個目的地址共同組成一條完整的路徑。假設數據發(fā)送端與數據接收端地址數量分別為m、η,在傳統(tǒng)SCTP實現(xiàn)中目的地址對應路徑的機制下,關聯(lián)中可用的傳輸路徑數為η;而建立源地址、目的地址共同對應路徑的機制后,由于任意一個本端地址(源地址)到任意一個對端地址(目的地址)之間均存在一條路徑,所以關聯(lián)中可用的傳輸路徑數為m*n,相比于傳統(tǒng)機制可用路徑數量大大提高。對于圖1所示的情況,從Client端到Server端則可同時利用兩條路徑進行數據傳輸。再如圖2所示的情況,若Client端和Server端分別具有兩個IP地址,則從Client端到Server端存在4條路徑可用,可用路徑列表如圖3所示。同時利用4條路徑進行數據傳輸雖然增加了復雜性,但為實現(xiàn)更加復雜的路徑選擇算法提供了基礎。下面介紹在一個SCTP關聯(lián)中建立可用路徑列表的方法。標準SCTP協(xié)議通過四步握手建立一個關聯(lián),在此過程中,通信的雙方會交互各自用于此關聯(lián)的所有IP地址,在每一方都獲取對方的可用地址后,可建立此關聯(lián)的路徑列表。如圖4所示的報文交換過程為標準SCTP防議建立關聯(lián)的四步握手過程,采用傳統(tǒng)的Client/Server模型進行說明。Client端發(fā)送建立關聯(lián)請求之前,Server端需打開相應的服務進程準備響應。兩端地址的交互在4步握手的過程中完成。標準SCTP協(xié)議的4步握手過程如下。其中currentAssociation->destinationAddresses[]列表中的每一個元素的類型為unionsockunion,其定義如下,以同時支持IPv4和IPv6兩種協(xié)議。unionsockunion{structsockaddrsa;//thegenericsocketaddressstructurestructsockaddrinsin;//theInternet(IPv4)socketaddressstructurestructsockaddrin6sin6;//theIhternet(IPv6)socketaddressstructure};1)首先,Client端發(fā)送INIT報文,目的地址已知的一個Server端IP地址addr-S0(應用程序指定),源地址由路由表查詢結果決定,設為addr-CO。INIT報文中包含Client端支持的IP協(xié)議類型(IPv4/IPv6)以及Client端所有該類型的IP地址(也可由應用程序指定可以使用的IP地址,以下缺省為全部使用)。2)Server端收到INIT報文后,根據本端支持的IP協(xié)議類型和INIT報文中的對端支持類型,確定通信兩端共同支持的公共IP協(xié)議類型;然后將該類型的所有本端IP地址寫入INIT-ACK報文中回復給Client端(也可由應用程序指定可以使用的IP地址,以下缺省為全部使用),回復路徑的目的地址為addr-CO,源地址由路由表確定;同時Server端存儲INIT報文所列出的所有與公共協(xié)議類型一致的Client端IP地址。此時關聯(lián)尚未建立,Server端也不會為此關聯(lián)預先分配資源。3)Client端收到INIT-ACK報文后,將報文中包含的對端(Server端)IP地址寫AcurrentAssociation->destinationAddresses[]歹[J表中,此歹[J表艮口為可用的對端地址列表,也即路徑列表。列表大小,即路徑數量為currentAssociation->noOfNetworks。Client端回復COOKIE-ECHO報文給Server端,目的地址為addr-SO。4)Server端收到C00KIE-ECH0報文后,關聯(lián)正式建立,并為此關聯(lián)分配資源。同時把INIT報文所列出的所有與公共協(xié)議類型一致的Client端IP地址寫入currentAssociation->destinationAddresses[]歹[J表中,作為可用的對端地址歹[J表,艮口路徑列表。然后Server端回復C00KIE-ACK報文給Client端地址addr_C0,并用HEARTBEAT報文探測除addr-CO外其它對端地址的可達性。探測的方法為發(fā)送HEARTBEAT報文給特定的目的地址,Client端收到后立即回復HEARTBEAT-ACK報文,若Server端收到回復報文,則認為該目的地址可達。5)Client端收到C00KIE-ACK報文后,開始向Server端發(fā)送數據,目的地址為addr-S0,并用HEARTBEAT報文探測其它目的地址的可達性。為了建立SCTP-MP方案中<源地址、目的地址>共同對應一條完整路徑的機制,并實現(xiàn)并發(fā)傳輸,需要在標準SCTP協(xié)議4步握手交互地址的過程中,建立新的由<源地址、目的地址>對應的路徑列表,以替換原來單純的目的地址列表。對4步握手過程的修改如下,步驟編號與上文一致。圖4中列出了報文交換過程中每一步的關鍵操作。1),INIT報文的目的地址仍為應用程序指定的一個已知Server端地址addr-SO,源地址指定為Client端用于此關聯(lián)的IP地址列表中,第一個與目的地址IP協(xié)議類型一致的本端地址,設為addr-C0,。2)'Server端回復INIT-ACK報文的目的地址為addr-CO,,源地址指定為addr-SO。3)’Client端收到INIT-ACK報文后,其中包含的對端IP地址類型,已經為兩端支持的公共IP地址類型。Client端讀取本端地址中與此公共地址類型一致的用于此關聯(lián)的IP地址,然后與INIT-ACK報文中包含的對端IP地址共同組成路徑列表,并寫入新的數據結構currentAssociation->path_list[]中,列表大小為currentAssociation->no_of_pathsοcurrentAssociation->path_list[]數組中每一個成員為一個結構體,結構體定義為structpath—structure{unionsockunionsrc_addr;//sourceaddressofacertainpathunionsockuniondest_addr;//destinationaddressofthispath};其中Src_addr為路徑的源地址,destaddr為路徑的目的地址,即每一條路徑由一個源地址和一個目的地址共同組成。currentAssociation->path_list□的建立方法如下。設與公共地址類型一致的Server端地址存儲在數組dAddresses[]中,與公共地址類型一致的Client端地址存儲在數組sAddresses口中。對dAddresses口中的每一個地址dAddresses[i],將sAddesses口中所有與dAddresses[i]地址類型一致的地址sAddesses[k]與dAddresses[i]作為一條路徑的源地址和目的地址,按序寫入path_list[]中。這樣對同一種IP協(xié)議,可用路徑的數量就從0(η)提高到了0(η2)。Client端回復C00KIE-ECH0報文給Server端,路徑指定為<addr_C0,,addr_S0>。4),Server端按照3),中與Client端相同的方式建立本端的路徑列表。Server端回復C00KIE-ACK報文的路徑指定為<addr-S0,addr-CO,>,并用HEARTBEAT報文探測除<addr-S0,addr-C0'>外的其它路徑的可達性。具體的探測方法見下文。currentAssociation->path_list[]中的每條路經由一個對應的狀態(tài)位標明該路徑是否可達。路徑<addr-S0,addr-C0‘>的狀態(tài)位初始標記為可達,其它路徑狀態(tài)位的值初始標記為未知,之后由HEARTBEAT報文的探測結果決定。5),Client端收到C00KIE-ACK報文后,開始在路徑<addr_C0,,addr_S0>(狀態(tài)位初始標記為可達)上向Server端發(fā)送數據,并用HEARTBEAT報文探測路徑可達性。由原來白勺胃currentAssociation->destinationAddresses[]巾白勺目^^^ΜΜcurrentAssociation->path_list[]中除路徑<addr_C0,,addr_S0>外的其它路徑進行探測。本方案中每條路經都擁有獨立的擁塞控制窗口,擁塞控制算法根據每條路徑上的數據發(fā)送情況對窗口進行調整。下面介紹本方案中的路徑探測和路徑選擇策略。在數據傳輸的過程中,通信雙方對路徑列表currentAssociation->path_list[]中的每一條路徑,通過定期發(fā)送HEARTBEAT報文探測其可達性。探測方法為連接的一端在指定路徑上發(fā)送HEARTBEAT報文,對端收到后立即在反向路徑上回復HEARTBEAT-ACK報文,若發(fā)送方收到回復報文,則認為該路徑可達。只有可達的路徑方可被路徑選擇算法選作傳輸數據的路徑。由于一個關聯(lián)中可能同時有多條路徑可用于數據傳輸,所以需要一定的路徑選擇算法對數據進行分流,確定每一個數據分組發(fā)送時采用的具體路徑。本方案可靈活使用多種路徑選擇算法,這里以一種基于擁塞控制窗口的輪換式路徑選擇算法為例進行介紹。本方案中每條路徑都會擁有單獨的擁塞控制窗口,該算法路徑選擇的策略是在當前可用路徑上發(fā)送數據分組,直至當前路徑的擁塞控制窗口被寫滿,然后切換到下一條擁塞控制窗口不為零的可用路徑上繼續(xù)發(fā)送數據,流程圖如圖5所示。這種策略可以充分利用每條路徑的帶寬資源,有利于提高整個關聯(lián)的吞吐量。下面介紹程序實現(xiàn)中,確保數據分組在指定的路徑上進行傳輸的方法。由于在現(xiàn)有的主機操作系統(tǒng)中,傳輸層向網絡層遞交數據時僅指明目的地址,而源地址和實際發(fā)送接口(網卡)則是由網絡層根據路由查找結果來確定,因此無法保證數據分組能夠按照指定的路徑〈源IP地址,目的IP地址〉傳輸。而且,路由表中一個目的地址僅對應一條有效路由表項,因此實際上對于每個目的地址,主機僅能使用一條路徑進行數據傳輸。因此為保證數據分組在指定的路徑<源IP地址,目的IP地址>上傳輸,需要對發(fā)送端的數據發(fā)送過程進行修改,首先需要指定分組的源地址,然后需要保證分組從與指定源地址對應的接口(網卡)上發(fā)送出去。指定數據分組的源地址(unionsockunionsrc),可以通過調用套接字函數bindO來實現(xiàn)。實現(xiàn)語句如下(以IPv4套接字為例,下同)bind(sfd,(structsockaddr水)src,sizeof(structsockaddrin));但對套接字sfd使用bindO函數綁定地址src之后,該套接字只能接收目的地址為src的分組,而不能接收目的地址為src之外地址的分組。為使一個關聯(lián)中任一端的多個接口(對應著多個地址)都能同時收發(fā)分組,可以采用兩種方式來實現(xiàn)。第一種方式,在關聯(lián)的任一端只創(chuàng)建一個socket,每一個分組發(fā)送之前調用bindO函數為該socket綁定路徑中指定的源地址,調用sendtoO函數將分組發(fā)送之后,立即調用bindO函數為該socket綁定一個INADDR_ANY的套接字地址(structsockaddr_inlocalany),實現(xiàn)語句為bind(sfd,(structsockaddr氺)&local—any,sizeof(structsockaddr_in));其中l(wèi)ocal—any·sin_addr.s_addr=htonl(INADDR—ANY)這樣該套接字就可以接收本機上所有接口收到的數據。第二種方式,為關聯(lián)中使用的所有本機地址分別創(chuàng)建一個socket,即每一個socket都通過bindO函數綁定了一個本機地址。有分組發(fā)送時,在sendtoO函數的參數中使用與路徑中源地址對應的socket描述符,即可實現(xiàn)指定發(fā)送分組的源地址。這種方式通過在一個關聯(lián)中使用多個socket,使得該關聯(lián)可以接收所有本機接口上收到的數據。指定數據分組的源地址可以通過調用bindO函數來實現(xiàn),但僅通過指定源地址并不能確保分組從與源地址對應的接口(網卡)上發(fā)送出去,這是因為傳統(tǒng)的路由規(guī)則只根據待發(fā)分組的目的地址在路由表中按照最長匹配原則進行路由查找,從而確定分組從本機的哪個接口上發(fā)送出去,此過程與分組中指定的源地址無關。為確保分組從與指定源地址所對應的接口上發(fā)送出去,需要在傳統(tǒng)路由規(guī)則的基礎上創(chuàng)建基于源地址的策略路由。具體方法如下為該主機上每一個IP地址創(chuàng)建一個子路由表,子路由表中的默認網關為該接口IP地址對應的網關,這樣指定了源地址的分組會查找與該源地址對應的子路由表,從而保證了分組從與指定源地址對應的接口(網卡)上發(fā)送出去。在Linux系統(tǒng)中,上述規(guī)則可通過設置policyrouting來實現(xiàn),且不會影響本機上其它網絡應用正常的分組發(fā)送。以圖1中具有兩個接口的Client主機為例,policyrouting設置方法如下>路由規(guī)則iprule(優(yōu)先級操作)0fromalllookuplocal32764:from59.66.24.0/24lookupsubnet132765:from166.111.132.0/24lookupsubnet232766:fromalllookupmain32767:fromalllookupdefault>每個接口對應的子路由表tablesubnetl:defaultvia59.66.24.254devwlanOprotostatictablesubnet2:defaultvia166.111.132.1devethOprotostatic>系統(tǒng)默認路由表main,無須更改tablemain內核IP路由表目標網關子網掩碼標志躍點引用使用接口166.111.132.00.0.0.0255.255.255.0U100ethO59.66.24.00.0.0.0255.255.255.0U200wIanO0.0.0.0166.111.132.10.0.0.0UG000ethO下面介紹對本多路徑傳輸方法SCTP-MP的實驗驗證。本發(fā)明人基于Linux操作系統(tǒng)進行了代碼實現(xiàn)。對于一個關聯(lián)中本端所使用的IP地址,默認情況下是使用主機的全部IP地址,另外也可以通過命令行具體指明所需使用的一個或多個IP地址。本發(fā)明人在實際的Internet環(huán)境中對發(fā)明方案進行了性能測試。測試環(huán)境如圖1所示。Client端具有兩個可用IPv4地址(166.111.132.178和59.66.24.88,分別簡記為cl66和c59),Server端具有一個可用IPv4地址(202.112.35.141,簡記為s202)。測試內容為由Client端向Server端上傳文件,測定文件傳輸時端到端的吞吐量,傳輸層協(xié)議用本方案SCTP-MP和標準SCTP協(xié)議做比較,應用層協(xié)議均為TFTP協(xié)議。實驗環(huán)境中Client端主機位于清華大學校園網內,Server端主機位于校園網外。需要說明的是,目前清華大學對每一個校內IP地址訪問外網的速率進行了限制,速率限制為1Mbps,S卩128KB/S左右。測試一先后用標準SCTP協(xié)議和SCTP-MP協(xié)議傳輸相同文件,在用兩種協(xié)議傳輸時Client端和Server端之間均只建立一個SCTP關聯(lián),且Client端指定兩個地址均用于此關聯(lián)(cl66和c59),Server端指定唯一的一個地址用于關聯(lián)(s202)。由于標準SCTP協(xié)議實現(xiàn)中采用傳輸路徑只與目的地址相對應的路徑定義方法,因此只存在一條數據傳輸路徑可用(cl66->s202),而SCTP-MP協(xié)議則可同時使用兩條傳輸路徑(cl66_>s202、c59_>202)。測試結果如下表所示,數據單位為KB/s。由實驗結果可以看出1)標準SCTP協(xié)議實現(xiàn)使用單條路徑的傳輸速率較為穩(wěn)定,均值為118.13KB/s。2)SCTP-MP協(xié)議實現(xiàn)采用一定的路徑選擇策略同時使用兩條鏈路進行傳輸時,在兩條鏈路上的流量分配情況有輕微波動。但總體的傳輸速率均值為236.92KB/S,約為標準協(xié)議實現(xiàn)單條路徑傳輸速率的兩倍。實驗結果表明,在實際網絡環(huán)境中,采用多路徑并發(fā)傳輸方法,可以同時使用多條路徑并發(fā)地進行傳輸數據,并且該方案使關聯(lián)中可用的傳輸路徑數量達到了最大,從而使得總體傳輸速率有了較大的提高。測試二為了解SCTP-MP協(xié)議對多條鏈路帶寬的利用率,我們對同時建立兩個標準SCTP關聯(lián)分別使用不同路徑進行數據傳輸的情況進行了測試。這時Client端使用兩個SCTP關聯(lián)向Server端傳輸兩個文件,以此獲得兩條鏈路同時使用時總帶寬的近似理想值。Client端在兩個關聯(lián)中分別指定不同的本端地址。測試結果如下表所示。數據單位為KB/S??梢钥闯?,同時使用兩個關聯(lián)在兩條鏈路上傳輸不同文件時,兩條鏈路總的帶寬為237.82Kb/s,此值應是兩條鏈路帶寬之和的近似理想值。根據測試一,SCTP-MP協(xié)議采用一定的路徑選擇策略使用兩條鏈路上傳單一文件時,傳輸的總體傳輸速率均值為236.92KB/s,達到兩條鏈路完全并行使用時帶寬之和的99.53%??梢?,在實際網絡環(huán)境中,本方案通過實現(xiàn)<源地址、目的地址>二元組共同對應路徑的機制可有效地增加數據傳輸路徑、更加充分地利用線路帶寬,達到了較好的鏈路聚合??梢姡痉桨妇哂休^好的實際應用價值,是一個綜合的、高效的多路徑傳輸解決方案。權利要求基于SCTP的多路徑并發(fā)傳輸方法,其特征在于所述方法是在客戶端和服務器端之間組成的互聯(lián)網中依次按以下步驟實現(xiàn)的步驟(1),在客戶端和服務器端之間建立多路徑并發(fā)傳輸的關聯(lián)時,按照流控制傳輸協(xié)議SCTP四步握手建立關聯(lián)時,在通信雙方建立可用路徑列表,并使可用路徑數量最大化,其步驟如下步驟(1.1),客戶端為本機用于此關聯(lián)的IP地址列表中每一個IP地址創(chuàng)建一個子路由表,該子路由表中默認網關為該接口IP地址對應的網關,以便被指定了源地址的分組會查找與該地址對應的子路由表,保證所述分組能從與指定源地址對應的網卡上發(fā)送出去,步驟(1.2),客戶端發(fā)送初始化通信INIT報文給已知的一個服務器端的IP地址addr-S0,而把源地址指定為客戶端所述IP地址列表中第一個與目的地址IP協(xié)議類型一致的本端地址,設為addr-C0’,但在所述INIT報文中不僅要包含客戶端支持的IP協(xié)議類型,還要包含所有該類型的客戶端IP地址,所述IP協(xié)議類型是指IPv6,或IPv4,共有兩種協(xié)議類型,步驟(1.3),服務器端在收到所述INIT報文后,根據本端支持的IP協(xié)議類型和所述INIT報文中對端支持的IP協(xié)議類型,確定通信兩端共同支持的公共IP協(xié)議類型,然后把所有該類型的本端IP地址寫入INIT-ACK應答報文中,回復給客戶端,該應答報文的目的地址為addr-C0’,源地址指定為addr-S0,服務器端同時存儲所述INIT報文中列出的所有與所述公共協(xié)議類型一致的客戶端IP地址,步驟(1.4),客戶端收到所述INIT-ACK報文后,讀取本端存儲的所有該公共類型的IP地址,再與所述INIT-ACK報文中包含的對端服務器的IP地址共同組成路徑列表,并寫入數組中,該數組中包括從客戶端到服務器端所有可能的路徑,以及與所述的每一條可能的路徑對應的客戶端的源地址與服務器端的目的地址,同時發(fā)一個COOKIE-ECHO回復報文給服務器端,路徑指定為<addr-C0’,addr-S0>,步驟(1.5),服務器端在收到所述COOKIE-ECHO報文后,加上路徑可達的狀態(tài)位標記,并按照步驟(1.4)中所述的方法建立本端的路徑列表,同時向客戶端發(fā)一個COOKIE-ACK回復報文,路徑指定為<addr-S0,addr-C0’>,并用HEARTBEAT報文探測除所述<addr-S0,addr-C0’>外其它路徑的可達性在指定的路徑上發(fā)送HEARTBEAT報文,若作為發(fā)送方的服務器端收到對端客戶端在反向路徑上回復的HEARTBEAT-ACK報文,則該路徑可達,并在該路徑上作一個狀態(tài)位標記;步驟(2),客戶端或服務器端依次按照以下步驟進行數據傳輸步驟(2.1),通信雙方按步驟(1.5)中所述分別使用所述HEARTBEAT報文周期性地探測本端所述路徑列表中每條路徑的可達性,步驟(2.2),每當有分組從應用層遞交給傳輸層進行發(fā)送時,發(fā)送方采用基于擁塞控制窗口的輪換式路徑選擇算法從所有可達的路徑中選擇一條作為該分組的發(fā)送路徑,步驟(2.3),在發(fā)送時發(fā)送方通過bind()函數指定分組的源地址為指定路徑中的源地址,分組在IP層經過路由查找后從一個該地址對應的所述子路由表中對應的網關上發(fā)送出去。2.根據權利要求1所述的基于SCTP的多路徑并發(fā)傳輸方法,其特征在于,通信雙方各自的IP地址是由應用程序指定的。全文摘要基于SCTP的多路徑并發(fā)傳輸方法涉及多地址主機之間的數據傳輸和通信,其特征在于,在一個SCTP關聯(lián)中,通過擴展標準SCTP協(xié)議的主備路徑機制,采用一定的路徑探測和路徑選擇策略,實現(xiàn)了同時使用多條可達路徑進行端到端的數據傳輸;同時,區(qū)別于傳統(tǒng)SCTP協(xié)議實現(xiàn)中路徑只與目的地址相對應的機制,本發(fā)明使用<源地址、目的地址>二元組來共同定義路徑,使得關聯(lián)中可用路徑的數量達到了最大,也為實現(xiàn)更為復雜的路徑選擇算法提供了基礎;最后,本發(fā)明基于Linux系統(tǒng)進行了代碼實現(xiàn),實現(xiàn)了在多條路徑可用的情況下,數據分組嚴格按照指定源地址和目的地址發(fā)送。本發(fā)明在保持標準SCTP協(xié)議容錯性強的優(yōu)點的基礎上,有效提高了端到端數據傳輸的吞吐量。文檔編號H04L29/06GK101841463SQ20101012018公開日2010年9月22日申請日期2010年3月5日優(yōu)先權日2010年3月5日發(fā)明者吳茜,張文濤,李賀武,李風華,陽旺申請人:清華大學
      網友詢問留言 已有0條留言
      • 還沒有人留言評論。精彩留言會獲得點贊!
      1