專利名稱::用于數據傳輸的自適應控制的方法和裝置的制作方法
技術領域:
:本發(fā)明總體上涉及一種改進的數據處理系統,具體地說,涉及一種用于傳輸數據的計算機實施的方法和裝置。更具體地說,本發(fā)明涉及一種自適應地控制用于傳輸數據的帶寬的計算機實施的方法、裝置和計算機可用程序代碼。
背景技術:
:隨著網絡和因特網的普遍使用,商業(yè)上的通信已經發(fā)生變革。網絡普遍用于傳輸數據。許多分布式應用利用大后臺傳輸來提高服務質量。利用這些類型的后臺傳輸,用戶無需在執(zhí)行其它動作之前等待這些傳輸完成。包括例如數據備份、預取(prefetch)、企業(yè)數據分布、因特網內容分布、端對端存儲的廣大范圍的應用和服務采用后臺傳輸。這些和其它類型的應用增加了網絡帶寬消耗。這些服務中的一些具有潛在無限的帶寬需求,其中增量式地更多的帶寬的使用提供增量式地更好的服務。這些類型的應用的一個問題在于,大多數網絡僅具有可用于傳輸數據的限量帶寬。一些應用執(zhí)行關鍵的功能而其它是非關鍵的。典型地,后臺傳輸是非關鍵的并且可以使用所有的可用帶寬,從而使關鍵的網絡業(yè)務變慢。自適應帶寬控制已被用來自動地適應網絡狀況,以減少對網絡的影響。目前,不同的自適應帶寬控制處理和算法用于控制不同應用所使用的帶寬量以避免擁塞。當前可用的自適應帶寬控制處理考慮到了本地接口水平的服務器或客戶計算機上的網絡狀況,而不能夠考慮到數據傳輸中可能存在的其它狀況。因而,擁有改進的計算機實施的方法、裝置和計算機可用程序代碼以自適應地控制傳輸數據中的帶寬使用將是有利的。
發(fā)明內容本發(fā)明提供了一種計算機實施的方法、裝置和計算機可用程序代碼,以監(jiān)視數據到目的地的傳輸。對數據傳輸是否超出閾值進行判定。如果數據傳輸超出閾值,則使用自適應帶寬控制處理來控制用于傳送數據到目的地的帶寬,其中,對于數據傳輸確保帶寬的最小量。在所附的權利要求中闡述了認為是本發(fā)明特性的新穎特征。然而,通過結合附圖參考下述說明性實施例的詳細描述,將最佳地理解本發(fā)明本身,以及使用的最佳方式,本發(fā)明的進一步目的和優(yōu)點,在所述附圖中圖1是其中可以實施本發(fā)明的方面的數據處理系統網絡的圖形表示;圖2是其中可以實施本發(fā)明的方面的數據處理系統的框圖;圖3是圖示根據本發(fā)明說明性實施例的自適應帶寬控制中所使用的組件的圖;圖4是根據本發(fā)明說明性實施例的傳輸控制協議/因特網協議(TCP/IP)和類似協議的圖;圖5是圖示根據本發(fā)明說明性實施例的提供自適應帶寬控制過程中使用的軟件處理和組件的圖;圖6是根據本發(fā)明說明性實施例的用于配置用戶對參數的設置的處理的流程圖;圖7是根據本發(fā)明說明性實施例的、發(fā)送線程的處理的流程圖;圖8是根據本發(fā)明說明性實施例的、分組監(jiān)聽(sniff)線程的處理的流程圖;圖9是根據本發(fā)明說明性實施例的、擁塞控制線程的處理的流程圖;以及圖10是根據本發(fā)明說明性實施例的、進行自適應帶寬控制的處理的流程圖。具體實施例方式圖1-2作為其中可以實施本發(fā)明實施例的數據處理環(huán)境的示例性圖而給出。應該理解,圖1-2僅是示例性的,而不意欲聲稱或暗示關于其中可以實施本發(fā)明實施例或多個方面的環(huán)境的任何限制??梢詫λ枥L的環(huán)境進行許多修改,而不背離本發(fā)明的精神和范圍。現參考附圖,圖1描繪了其中可以實施本發(fā)明多個方面的數據處理系統網絡的圖形表示。網絡數據處理系統100是其中可以實施本發(fā)明實施例的計算機網絡。網絡數據處理系統100包含網絡102,其是用于提供網絡數據處理系統100內連接到一起的計算機和各種設備之間的通信鏈路的介質。網絡102可以包括諸如有線、無線通信鏈路或光導纖維電纜的連接。在所描繪的示例中,服務器104和服務器106連同存儲單元108一起連接到網絡102。此外,客戶機110、112、114連接到網絡102。這些客戶機110、112、114可以是例如個人計算機或者網絡計算機。在所描繪的示例中,服務器104向客戶機110、112、114提供諸如引導文件、操作系統映像、應用程序的數據。在此示例中,客戶機110、112、114是服務器104的客戶機。網絡數據處理系統100可以包括未示出的另外的服務器、客戶機和其它設備。在所描繪的示例中,網絡數據處理系統100是因特網,其中的網絡102代表使用傳輸控制協議/因特網協議(TCP/IP)協議集來互相通信的網絡和網關的全球連接。在該因特網的中心是主節(jié)點或主機之間的高速數據通信線路的主干,其包括路由傳輸數據和消息的數千的商業(yè)、政府、教育和其它計算機系統。當然,網絡數據處理系統100也可以被實施為許多不同類型的網絡,諸如,作為示例,內聯網、局域網(LAN)或廣域網(WAN)。圖1旨在作為示例,而非作為對本發(fā)明不同實施例的架構限制?,F參考圖2,示出了其中可以實施本發(fā)明各個方面的數據處理系統的框圖。數據處理系統200是諸如圖1中的服務器104或客戶機110的計算機示例,其中設置有實施本發(fā)明實施例的處理的計算機可用代碼或指令。在所描繪的示例中,數據處理系統200采用包括北橋和存儲器控制器集線器(MCH)202與南橋和輸入/輸出(I/O)控制器集線器(ICH)204的集線器架構。處理單元206、主存儲器208、圖形處理器210連接到北橋和存儲器控制器集線器202。圖形處理器210可以通過加速圖形端口(AGP)連接到北橋和存儲器控制器集線器202。在所描繪的示例中,局域網(LAN)適配器212連接到南橋和輸入/輸出(I/O)控制器集線器204。音頻適配器216、鍵盤和鼠標適配器220、調制解調器222、只讀存儲器(ROM)224、硬盤驅動器(HDD)226、CD-ROM驅動器230、通用串行總線(USB)端口和其它通信端口232、PCI/PCIe設備234通過總線238和總線240連接到南橋和輸入/輸出(I/O)控制器集線器204。PCI/PCIe設備可以包括,例如,以太網適配器、附加卡(add-incard)和用于筆記本計算機的PC卡。PCI使用卡總線控制器,而PCIe不使用。ROM224可以是例如快閃二進制輸入/輸入系統(BIOS)。硬盤驅動器226和CD-ROM驅動器230通過總線240連接到南橋和輸入/輸出(I/O)空制器集線器204。硬盤驅動器226和CD-ROM驅動器230可以使用例如集成驅動電子設備(IDE)或串行高級技術附加設備(SATA)接口。超級I/O(SIO)設備236可以連接到南橋和輸入/輸出(I/O)控制器集線器204。操作系統運行于處理單元206之上,并且協調并提供圖2中數據處理系統200內各種組件的控制。作為客戶機,操作系統可以是商業(yè)上可得的操作系統,諸如MicrosoftWindowsXP(Microsoft和Windows是美國,其它國家或者兩者中的微軟公司的商標)。諸如JavaTM編程系統的面向對象的編程系統可以與操作系統協同運行并且提供從在數據處理系統200上執(zhí)行的Java程序或應用(Java是美國、其它國家或者兩者中的Sun微系統公司的商標)對操作系統的調用。作為服務器,數據處理系統200可以是例如運行高級交互執(zhí)行體(AIX)操作系統或LINUX操作系統的IBMeServerTMpSeries計算機系統(eServer,pSeries和AIX是美國、其它國家或者兩者中的國際商業(yè)機器公司的商標,而Linux是美國、其它國家或者兩者中的LinusTorvalds的商標)。數據處理系統200可以是處理單元206中包括多個處理器的對稱多處理器(SMP)系統?;蛘?,可以采用單處理器系統。操作系統的指令、面向對象編程系統、應用或程序位于諸如硬盤驅動器226的存儲設備上,并且可以被加載到主存儲器208中以由處理單元206執(zhí)行。由處理單元206使用計算機可用程序代碼執(zhí)行本發(fā)明實施例的處理,該計算機可用程序代碼可以位于諸如例如主存儲器208、只讀存儲器224的存儲器中,或者位于一個或多個外圍設備226和230中。本領域普通技術人員將理解,圖1-2中的硬件可以依據實施而變化。其它內部硬件或者外圍設備,諸如快閃存儲器、等同非易失性存儲器或者光盤驅動器等可以在圖1-2中所描繪的硬件之外被使用,或者被用來替代圖1-2中所描繪的硬件。而且,本發(fā)明的處理可以被應用于多處理器數據處理系統。在某些說明性示例中,數據處理系統200可以是個人數字助理(PDA),其配置有快閃存儲器以提供用于存儲操作系統文件和/或用戶生成數據的非易失性存儲器??偩€系統可以包括一個或多個總線,諸如圖2中所示的總線238或總線240。當然,總線系統可以使用任意類型的通信結構或架構來實施,該通信結構或架構在附著于該結構或架構的不同組件或設備之間提供數據傳輸。通信單元可以包括用于發(fā)送和接收數據的一個或多個設備,諸如圖2的調制解調器222或網絡適配器212。存儲器可以是,例如諸如圖2中北橋和存儲器控制器集線器202中所發(fā)現的主存儲器208、只讀存儲器224或者高速緩沖存儲器。圖1-2中所描繪的示例和上述示例并不旨在暗示架構限制。例如,數據處理系統200除了采用PDA形式之外也可以是平板(tablet)計算機、膝上型計算機或者電話設備。本發(fā)明的多個方面提供了一種用于自適應地控制傳輸數據過程中使用的帶寬的計算機實施的方法、裝置、計算機可用程序代碼。本發(fā)明的多個方面能夠自適應地控制數據傳輸,從而對于在網絡上傳輸數據確保某最小量的帶寬。在這些示例中,通過發(fā)送使用正常的高耐沖性(high-impact)TCP/IP處理相對低耐沖性自適應處理的數據來確保帶寬。換言之,以與網絡將允許的最小量帶寬相同的快速來發(fā)送數據。在某些情況下,即使利用所確保量的帶寬,可以傳輸的數據量也可能由于網絡狀況而不能達到該最小量。本發(fā)明的多個方面認識到,傳輸數據的當前自適應分布機制并沒有提供任何量的確保。本發(fā)明的多個方面也提供了其間沒有使用自適應帶寬控制處理的某最小水平的帶寬。當帶寬超過該量時,使用自適應控制處理來確定在高于最小量的數據傳輸速度或速率可以采用何帶寬。盡管這些說明性示例針對自適應帶寬控制,但是本發(fā)明的多個方面可以應用于向一個或多個目的地數據處理系統傳輸大塊(bulk)數據的任何類型?,F轉向圖3,根據本發(fā)明說明性實施例描繪了圖示自適應帶寬控制中使用組件的圖。在該示例中,自適應發(fā)送器300向接收器302、304、306發(fā)送數據。通過向諸如路由器310的路由機制發(fā)送分組308而發(fā)送數據。路由器310是用于基于分組308中所發(fā)現的路由數據而將分組308路由或發(fā)送到適當接收器的設備。當路由器310被迫處理太多的分組時,其被稱作積壓(backlog)路由器。換言之,積壓路由器是在其隊列中具有最大負載或最大數目分組的路由器。在發(fā)送器和接收器之間可以有零或者多個路由器。發(fā)送器是分組的源而接收器是確認的源。當這些接收器接收分組308時,其向自適應發(fā)送器300返回確認312。在本示例中,確認是常規(guī)TCP/IP通信的一部分。在這些說明性示例中,自適應發(fā)送器300可以被實施為諸如圖1中的服務器104的數據處理系統中的處理。接收器302、304、306是可以在諸如圖1中的客戶機108、110、112的接收設備上執(zhí)行的處理。具體地,可以在諸如圖2的數據處理系統200的數據處理系統上實施這些不同的處理。自適應發(fā)送器300跟蹤向每個接收器發(fā)送的分組308。確認312的接收也被跟蹤并且用于標識參數,所述參數諸如往返時間。往返時間是自發(fā)送分組時起到接收確認時止的時間。在本示例中,往返時間基于自適應發(fā)送器300的視角(perspective)。此外,該信息用于標識塊。當任意分組被發(fā)送時塊開始;對于塊中的所有分組保持統計數據直到開始該塊的初始分組被接收器確認。當對于該任意分組的確認被返回時,自適應發(fā)送器300計算該分組塊的統計。換言之,取決于在塊開始中的該任意分組的確認被返回之前發(fā)送多少分組,在塊中可以存在一個或多個分組。此外,自適應發(fā)送器300還標識窗口。窗口是網絡中被發(fā)送而沒有接收到確認的分組的數目。此外,自適應發(fā)送器300還估計位于路由器310中的分組的數目。使用當前往返時間來計算未被確認的分組的預期數目相對未被確認的分組的真實數目,來確定該信息。例如,如果由于當前往返時間五個分組應該存在于網絡上并且自適應發(fā)送器300標識出8個未確認的分組,則自適應發(fā)送器300可以估計三個分組位于路由器310上。自適應發(fā)送器300在試圖保持路由器310上所選數目分組的同時通過增加或減少預期窗口大小而控制速度。大窗口更有攻擊性(aggressive),因為路由器310相對于其它網絡業(yè)務在處理自適應分組上花費更多時間。通過這種方式,自適應發(fā)送器300可以調諧針對路由器310的阿爾法(alpha)和貝塔(beta)參數。阿爾法是下述整數,其指示在將窗口增加一個分組之前每個連接的路由器310中的最小分組數目。貝塔是下述整數,其指示在將窗口減少一個分組之前每個連接的積壓路由器中的最大分組數目。通過基于阿爾法和貝塔調整窗口,這些參數允許速度上的小增加或降低。另一參數,閾值,在塊中50%的分組滿足該閾值條件時允許速度上的迅速降低。在本示例中,閾值是從基(base)往返時間到最大往返時間的路途的可配置百分比。在該說明性示例中,自適應發(fā)送器300基于自適應帶寬控制處理而改變向端點或目的地發(fā)送數據的速率。在這些示例中,使用該控制處理以用于在數據傳輸的某閾值水平之上傳輸數據??梢砸栽S多不同方式執(zhí)行該閾值配置和數據傳輸的測量。例如,該測量可以是在某時間段傳輸的數據量或者鏈路速度總量的百分比。轉向圖4,根據本發(fā)明說明性實施例描繪了傳輸控制協議/因特網協議(TCP/IP)和類似協議的圖。通信架構400利用TCP/IP和類似協議。在本示例中,通信架構400是4層系統。該架構包括應用層402、傳輸層404、網絡層406和鏈路層408。每層負責處理各種通信任務。鏈路層408也稱作數據鏈路層或網絡接口層,并且正常地包括操作系統中的設備驅動器和計算機中相應的網絡接口卡。該層處理與所使用的諸如光纜或以太網電纜的網絡介質物理上接口的所有硬件細節(jié)。網絡層406也稱作因特網層,并且處理網絡周圍數據分組的移動。例如,網絡層406處理網絡上傳輸的各種數據分組的路由。TCP/IP集中的網絡層406包含幾個協議,包括因特網協議(IP)、因特網控制報文協議(ICMP)、因特網群組管理協議(IGMP)。接下來,傳輸層404提供網絡層406和應用層402之間的接口,其便利于兩個主計算機之間的數據傳輸。傳輸層涉及下述事宜,諸如,例如,將從應用傳遞給其的數據劃分成對于下面的網絡層適當大小的塊,確認所接收的分組,以及設置超時以確定另一端確認所發(fā)送的分組。在TCP/IP協議集中,存在兩個截然不同的傳輸協議,TCP和用戶數據報協議(UDP)。TCP提供可靠的服務以確保數據在兩個主機之間適當傳輸,包括丟失檢測和重傳服務。相反地,UDP通過僅僅從一個主機向另一個發(fā)送稱為數據報的數據分組而向應用層提供簡單得多的服務,而不提供確保適當傳輸數據的任何機制。當使用UDP時,應用層必須執(zhí)行可靠的功能。應用層402處理具體應用的細節(jié)。對于幾乎每個實施都存在許多公共的TCP/IP應用,包括用于遠程登錄的Telnet;文件傳輸協議(FTP);用于電子郵件的簡單郵件傳輸協議(SMTP);以及簡單網絡管理協議(SNMP)。在這些說明性示例中,在應用層402中實施本發(fā)明的各個方面,以便以允許用戶輸入用戶設置的方式自適應地控制數據傳輸。通過這種方式,用戶可以改變用于控制如何在網絡上發(fā)送分組的不同設置,以用于自適應帶寬控制。通過允許從應用層輸入用戶設置,用戶可以針對通常自適應帶寬控制處理不加以考慮的不同類型的網絡和不同的網絡狀況而進行改變。用戶可以設置的一個設置是用于數據傳輸的最小帶寬量的閾值水平。當數據傳輸超過該閾值時,使用自適應帶寬控制處理以進行更高速率的數據傳輸。通過這種方式,可以考慮除客戶機上的狀況之外的狀況。例如,本發(fā)明的多個方面允許用戶基于因子標識來改變設置,所述因子諸如到接收器的路徑上的中繼段(hop)數目以及在到接收器的路徑上的具有大量業(yè)務或擁塞的鏈路。盡管說明性示例是在應用層402上實施的,但是本發(fā)明的多個方面可以在諸如傳輸層404的其它層上實施。所使用的具體層可以依據具體實施而改變?,F參考圖5,根據本發(fā)明說明性實施例描繪了圖示提供自適應帶寬控制過程中所使用的軟件處理和組件的圖。在該示例中,自適應發(fā)送器500是圖3中的自適應發(fā)送器300內處理的更詳細圖示。自適應發(fā)送器500在本說明性示例中包括三個線程。發(fā)送線程502、擁塞控制線程504、分組監(jiān)聽線程506是被用來自適應地向一個或多個接收器發(fā)送數據的組件。發(fā)送線程502用于通過調用套接字(socket)來發(fā)送數據。套接字是將應用連接到諸如TCP/IP堆中的TCP/IP協議的網絡協議的軟件對象。發(fā)送線程502傳輸分組512中的數據。如果連接或鏈路所允許的傳輸速率超過閾值或帶寬的最小水平,則發(fā)送線程502向擁塞控制線程504發(fā)送請求508以詢問多少數據可以由發(fā)送線程502發(fā)送。擁塞控制線程504返回答復510,告訴可以發(fā)送多少數據。發(fā)送線程502使用答復510來發(fā)送分組512以傳輸。在使用答復510過程中,如果由于某種原因,將發(fā)送的數據少于所確保的量或閾值水平,則發(fā)送線程502忽略該答復,并且不再從擁塞控制線程504請求該信息,直到再次超過最小帶寬量。這些分組被存儲在積壓路由器隊列514中,直到積壓路由器將分組路由傳輸到它們的目的地。積壓路由器隊列514位于諸如圖3中的路由器310的積壓路由器上。當該分組被接收時把確認516返回到自適應發(fā)送器500。在此示例中,出于說明的目的,由發(fā)送線程502執(zhí)行基于確保量發(fā)送數據的處理或邏輯。當然,該具體處理可以在擁塞控制線程504中實施。在此類型的實施中,發(fā)送線程502將每次詢問擁塞控制線程504可以發(fā)送多少數據。擁塞控制線程504通過執(zhí)行自適應帶寬控制處理而標識將發(fā)送的數據量。這些示例中的擁塞控制線程504使用自適應帶寬控制處理來響應于網絡狀況的變化而自適應地標識在網絡上傳輸數據分組的傳輸速率。這些網絡狀況包括,例如,除了由自適應發(fā)送器處理的數據傳輸之外還由于各種其它數據傳輸而導致的網絡上的擁塞量。換言之,可以發(fā)送數據的速度速率根據網絡狀況而變化。擁塞控制線程504基于用戶設置的不同參數而標識加速或減速的不同速率以維持最小的網絡沖擊。該處理使用位于隊列518中的信息。具體地,分組監(jiān)聽線程506從網絡捕獲分組并確認,并且將分組信息520和確認信息522放入隊列518中。分組監(jiān)聽線程506過濾這些分組并確認,以將擁塞控制線程504所需的適當數據放入隊列518中?;蛘撸梢詫⑺蟹纸M和確認放入隊列518中以由擁塞控制線程504處理。隊列518中的信息由擁塞控制線程504使用,來標識參數,諸如從發(fā)送分組時起到接收對于該分組的確認時止的往返時間。可以由擁塞控制線程504從隊列518中的信息標識和維持的其它參數包括塊、窗口、積壓路由器中的分組。此外,本發(fā)明的多個方面包括用戶接口524,其可以用來設置用戶定義的參數526。用戶接口524由參數線程528提供。典型地,在系統中首次建立自適應處理時設立參數。可以通過用戶接口524和參數線程528改變這些參數。將用戶定義的參數526存儲在諸如盤的非易失性存儲器中。以后當自適應帶寬處理啟動時可以讀取這些參數。用戶接口524允許用戶選擇或輸入各種參數以由擁塞控制線程504在執(zhí)行自適應帶寬控制處理過程中使用。在這些說明性示例中,本發(fā)明的多個方面允許用戶輸入或選擇閾值,其用作在不使用自適應控制處理的情況下的數據傳輸的最小水平或速度。本發(fā)明的多個方面使用閾值以向目的地或目標發(fā)送數據。當數據傳輸超過該閾值時,則啟動自適應帶寬控制處理以用于傳輸數據。如果由于某種原因自適應帶寬控制處理指示所傳輸的數據量少于該閾值,則該指示被發(fā)送數據的處理忽略。通過這種方式,本發(fā)明的多個方面以確保的傳輸速率在發(fā)送數據過程中提供自適應帶寬控制。在這些示例中,可以設置的其它參數包括閾值、往返時間最大變化、貝塔、往返時間平滑、最大等待時間。往返時間最大變化是用于限制當前所測量的往返時間相對于先前所測量的往返時間的變化量的參數。該處理跟蹤當前往返時間、最大往返時間、基往返時間。擁塞控制線程跟蹤以每個套接字為基礎的往返時間和序列。如果一個分組具有往返時間10而第二分組具有往返時間20,則由往返時間最大變化值一點五(1.5)來限制該第二分組往返時間。即使真實的往返時間是20,該往返時間值也被記錄為十乘以一點五等于十五(10×1.5=15)。然后,隨后的分組可以具有最多一點五乘以十五(1.5×15)的往返時間,即針對第二分組所記錄的往返時間。網絡通常具有一定量的隨機性。該參數允許自適應帶寬控制處理忽略過大或過小的往返時間,不過如果大往返時間充分地經常發(fā)生,則仍允許大往返時間。該參數允許用戶配置容許多大的變化。這些示例中的往返時間平滑參數是用于指示通過指數衰減應將往返時間測量平滑多少的整數。通過平均先前的測量來執(zhí)行該指數衰減。在自適應帶寬控制處理通過過度補償往返時間上的波動而表現不規(guī)律的情況下,該參數可以有益。該平滑通常在考慮最大變化參數之前發(fā)生。最大等待時間是這樣的參數,其指示在放棄和重新設置之前連接將等待多少個最大往返時間才發(fā)送。有時在網絡上可能丟失確認,導致發(fā)送器在發(fā)送另外數據之前等待長時間段。如果在發(fā)送數據之前過去了太多時間,則這是復位自適應帶寬控制的處理的復位值。關于閾值參數,當在套接字上發(fā)送分組的往返時間時,該時間傾向于落入所選擇的范圍內。此情況在網絡空閑時尤其真實。該閾值是從最小往返時間到最大往返時間的途徑的百分比。例如,百分之二十的閾值意味著該閾值是從基往返時間到最大往返時間的途徑的百分之二十。取決于網絡類型,往返時間將具有或多或少的變化。不同的變化通常需要不同的閾值。例如,表現良好的局域網將具有非常小的往返時間變化,從而允許低的閾值。廣域網將具有較高的往返時間變化。利用該類型的網絡,需要較高的閾值。該具體參數是用戶可配置的,以考慮發(fā)送數據過程中可能遇到的不同類型的網絡。關于閾值參數,當在套接字上發(fā)送分組的往返時間時,該時間傾向于落入所選擇的范圍內。此情況在網絡空閑時尤其真實。如果分組的往返時間比該閾值慢,則認為該分組慢。如果塊中百分之五十的分組被認為慢,則可以將窗口削去一半,從而大大降低分布的速度。結果是,用戶配置該值的允許使得允許考慮不同的網絡類型和狀況?,F參考圖6,根據本發(fā)明說明性實施例描繪了用于配置用戶對參數的設置的處理的流程圖。圖6中所圖示的處理可以在圖5中的發(fā)送線程502中實施。該處理用于允許用戶定義或改變自適應帶寬控制中所使用的參數。在這些示例中,這些參數是閾值、往返時間最大變化、往返時間平滑、最大等待時間、貝塔閾值。該處理由呈現用戶設置開始(步驟600)??梢栽谥T如圖5中的用戶接口524的用戶接口中呈現這些設置。該處理然后接收用戶輸入(步驟602)。關于用戶輸入是否改變了參數中的設置作出判定(步驟604)。如果用戶輸入改變了設置,則舊的設置被新的設置代替(步驟606)。之后,處理返回到步驟600以將這些設置呈現給用戶。再次參考步驟604,如果用戶輸入沒有改變設置,則關于用戶輸入是否結束改變用戶設置的處理作出判定(步驟608)。如果用戶輸入不結束該處理,則處理返回到步驟600。否則,保存用戶設置(步驟610),之后該處理終止。這些設置保存為這些示例中圖5中的用戶定義的參數526。現轉向圖7,根據本發(fā)明說明性實施例描繪了發(fā)送線程處理的流程圖。圖7中所示的處理可以在諸如圖5中的發(fā)送線程502的發(fā)送線程中實施。該處理由發(fā)送將被接收的數據開始(步驟700)。之后,關于是否存在將被發(fā)送到接收器的更多數據作出判定(步驟702)。如果存在待發(fā)送的更多數據,則關于數據傳輸是否超過第一閾值作出判定(步驟704)。可以通過許多不同方式進行步驟704中的判定。例如,發(fā)送的數據量和需要發(fā)送該數據的時間可以用于確定是否超過該閾值。該閾值還可以是關于是否正在使用超過連接的速度的某百分比的判定。該閾值用于設置超過其則執(zhí)行自適應帶寬控制的水平。如果數據傳輸超過第一閾值,則該處理向擁塞控制線程發(fā)送關于可以發(fā)送多少數據的請求(步驟706)。之后,該處理接收答復(步驟708)。該答復指定可以向接收器發(fā)送的數據量。接下來,關于該數據量是否小于或等于第二閾值作出判定(步驟700)。該第二閾值用于設置被確保用于發(fā)送數據的最小帶寬量。第二閾值依賴于具體實施可以是與第一閾值相同的值。如果答復中的數據量不少于或等于第二閾值,則僅使用多達答復中所指定的數據量來發(fā)送數據(步驟712)。接下來,關于是否存在另外的數據待發(fā)送作出判定(步驟714)。如果不存在另外的數據,則處理終止。否則,處理返回步驟706以向擁塞處理線程發(fā)送另一請求。再次參考步驟710,如果答復中的數據量少于或等于第二閾值,則忽略該答復(步驟716),該處理返回到步驟700以發(fā)送數據。再次參考步驟702,如果不存在另外的數據待發(fā)送,則處理終止。接下來轉向圖8,根據本發(fā)明的說明性實施例描繪分組監(jiān)聽線程的處理的流程圖。圖8中所示的處理可以在圖5中的分組監(jiān)聽線程506中實施。該處理由確定是否檢測到了分組開始(步驟800)。如果檢測到了分組,則處理從該分組中提取分組標識符和時間戳(步驟802)。該處理然后將數據存儲于隊列中(步驟804)。該隊列可由擁塞控制線程訪問,從而在確定往返時間和執(zhí)行自適應帶寬控制過程中可以使用該數據。再次參考步驟800,如果沒有檢測到分組,則關于是否檢測到了確認作出判定(步驟806)。如果沒有檢測到確認,則處理返回到步驟800。如果在步驟806中檢測到了確認,則提取該確認的分組標識符和時間戳(步驟808)。如上所述,處理然后前進到步驟804?,F參考圖9,根據本發(fā)明說明性實施例描繪了擁塞控制線程處理的流程圖。在該示例中,圖9中所示的處理可以在圖5中的擁塞控制線程504中實施。該處理由接收來自發(fā)送線程的請求開始(步驟900)。該請求請求可以發(fā)送多少數據的標識。之后,從隊列拖動數據(步驟902)。該數據包括達到時間和分組標識符。之后,從隊列中的數據標識往返時間(步驟904)。然后獲取用戶定義的參數(步驟906)。這些參數來自圖5中的用戶定義參數526。之后,該處理執(zhí)行自適應帶寬控制處理(步驟908)。該處理可以是例如擁塞控制線程中所包含的步驟。或者,該線程可以在步驟908調用函數或外部處理。該處理然后獲得結果(步驟910),以及返回具有可以發(fā)送的數據量的答復(步驟912),之后處理終止。接下來轉向圖10,根據本發(fā)明的說明性實施例描繪了用于執(zhí)行自適應帶寬控制的處理的流程圖。圖10中所描繪的處理是圖9中步驟908的更詳細描述。該處理由標識最小往返時間和最大往返時間開始(步驟1000)。之后,標識窗口(步驟1002)。該處理然后標識每個確認高于及低于閾值的分組數(步驟1004)。接下來,處理確定是否塊中分組的百分之五十高于該閾值(步驟1006)。如果并非塊中分組的百分之五十高于該閾值,則計算預期吞吐量(步驟1008)。在步驟1008中,如下計算預期吞吐量E←WminRTT]]>E是預期吞吐量,W是窗口,minRTT是由從隊列中獲得的往返時間得知的最小往返時間。之后,處理標識實際吞吐量(步驟1010)。使用下式標識該實際吞吐量A←WobservedRTT]]>A是實際吞吐量,W是窗口,observedRTT是使用發(fā)送分組時的時刻和接收確認時的時刻的差而測量的值。結果,預期吞吐量基于最小往返時間,因為在發(fā)送分組的結果總是最小往返時間的空閑網絡上存在預期。實際吞吐量基于其中當前往返時間大于最小往返時間的當前網絡狀況。在這些示例中,最小往返時間與基往返時間相同。該處理然后計算積壓路由器上分組的數目(步驟1012)。使用下式估計實際分組數目Diff←(E-A)·minRTTDiff是積壓路由器上分組的數目,E是預期吞吐量,A是實際吞吐量,以及minRTT是得知的最小往返時間。接下來,關于積壓路由器上分組的數目是否小于阿爾法作出判定(步驟1014)。如上所述,阿爾法是下述整數,其指示在將窗口增加一個分組之前每個連接的積壓路由器中應該存在的分組的數字數目。如果積壓路由器上分組的數目小于阿爾法,則處理將窗口增加一(步驟1022)。之后,處理指示發(fā)送數據達窗口大小沒有問題(步驟1018),之后處理終止。再次參考步驟1014,如果積壓路由器上分組的數目不小于阿爾法,則關于分組數目是否大于貝塔作出判定(步驟1016)。如果分組數目大于貝塔,則將窗口大小減一(步驟1024)。該處理然后前進到如上所述的步驟1018。否則,處理在不改變窗口大小的情況下前進到步驟1018?;剡^來參考步驟1006,如果塊中分組的百分之五十高于閾值,則將窗口減半(步驟1020)。該處理然后前進到如上所述的步驟1018。上面圖10中所示的處理基于對當前可得的帶寬控制算法的修正,所述算法諸如在Venkataramani等“TCPNiceAMechanismforBackgroundTransfers”,ACMSIGOPSOperatingSystemsReview,Vol.36,IssueSIWinter2002,pp.1-15中描述的Nice算法,其并入本文作為參考。NICE_FAST_RETURN-當設置時,基于具有EWOULDBLOCK的錯誤號(errno)的第一失敗的send()而退出快速開始階段。這將最小化快速開始模式下所花費的時間量,其并不服從于網關,這是因為填充套接字的外出(outgoing)隊列將非???。設置缺省。NICE_INTERFACE-將由nice使用的接口(網卡標識符)。這時,自適應帶寬控制處理不能夠動態(tài)確定正確的接口。因而,如果接口不是第一活動(active)接口則需要手動設置該接口。通常,這將被設置為像“ethl”的事項。不設置缺省。NICE_MAX_MULT-指定作為多個baseRTT(基往返時間)的maxRTT(最大往返時間)的最小值的浮點數。當被設置時,其有助于防止maxRTT的不合理低的值以及易于伴隨于其的低吞吐量。缺省為0.0。NICE_MIN_MSS-指示將使用的最小MSS的整數。為了效率,有利于NICE_DEFAULT_MSS而忽略操作系統所提供地較低值。缺省為1000。NICE_MIN_PACKET-指定單次應該發(fā)送的數據的最小量的整數。其與NICE_MIN_SEND不同之處在于,如果ok_to_send小于所指定的值,則其被設置為0。這是為了避免其中擁塞控制線程保持告訴發(fā)送線程發(fā)送像1個字節(jié)的非常小的值的情形。通過將該值設置為10,擁塞控制線程將等待,直到可以發(fā)送至少10個字節(jié)(返回0,直到計算指定10)。缺省為0。NICE_MIN_SEND-指定ok_to_send的最小值的整數,這意味著擁塞控制線程將一直告訴發(fā)送線程至少發(fā)送該量的數據。通過將此設置為10,則即使自適應計算指定3,擁塞控制線程也將返回10。缺省為0。NICE_NANO_FIXED-指定內部回調函數select_delay()當使用時將休眠的微秒數的整數。當回調被設置為不同于select_delay()的某事項時,NICE_NANO_FIXED不起作用。當沒有設置時,基于為了具有如上塊的吞吐量(由上塊中最快分組的RTT和塊的大小確定)所指示的用于發(fā)送分組的足夠空間應該花費多長時間,來動態(tài)地計算延遲。當設置為1234時,不調用nanosleep()不設置-動態(tài)地計算延遲0-以值0調用nanosleep(),在某系統上其可以是長達10ms的延遲,1234-不調用nanosleep(),其它-以所指定的微秒數調用nanosleep(),缺省為0。NICE_PCAP_TIMEOUT-指示操作系統在返回所捕捉的分組列表之前應該等待多長時間的整數。該變量對Linux系統不起作用,這是因為Linux系統在一個分組可得之前僅僅等待,而不管其花費多長時間。在諸如Solaris的該變量起作用的系統上,在超時(time-out)設置為低時獲得準確的RTT以及當網絡空閑時浪費CPU時間之間存在折衷。缺省為10ms(Solaris上的最低支持值)。NICE_QUEUE_LIMIT-指定由監(jiān)聽線程寫入、由擁塞控制線程讀取的分組的隊列的最大長度的整數。隊列越長,nice響應越小,這是因為擁塞控制線程作用于這樣的信息,所述信息由分組通過隊列以其方式工作花費多長時間而延遲。缺省為10。NICE_RTT_MAX_CHANGE-指示基和最大RTT相對于先前值所允許改變的最大量的整數。當設置時,自適應帶寬控制處理將更能容忍偽(spurious)極端RTT值。缺省為1.5。NICE_RTT_MIN_STDS-指示高于基RTT的標準偏差的最小數目的整數,將不得不在基RTT之上考慮RTT。缺省為0。NICE_RTT_SMOOTHING-指示RTT(往返時間)測量將由指數衰減平滑多少的整數,該指數衰減是通過平均先前測量而完成的。在nice通過過度補償RTT的每個波動而表現不規(guī)律的情況下此設置是有益的。缺省為50。NICE_RTT_STD_SMOOTH-類似于NICE_RTT_SMOOTHING的整數,不過是用于標準偏差的。該標準偏差基于最近RTT測量的加權平均。缺省為0。NICE_SEND_RTX_Q-當設置時,發(fā)送線程將添加或更新每個外出分組的估計至rtx_q。發(fā)送線程具有其不丟失分組的優(yōu)點,但是其對外出時間的估計可能不準確。缺省設置。NICE_THROUGHPUT_AVG-指示多少最近的分組將被包括于吞吐量計算中的整數。較大的值將得到更準確的吞吐量計算,但代價是較少響應。缺省為20。NICE_THROUGHPUT_START-指示在開始吞吐量計算之前必須被發(fā)送的分組的最小數目的整數。這是為了考慮初始為空的慢鏈路隊列,從而套接字的早期部分期間的吞吐量可能不是典型的套接字并且應該被忽略。缺省為100。NICE_WAIT_BASE-指示在放棄或者復位snd_nxt和snd_una之前連接將等待多少v_baseRTT(全局最小RTT)才發(fā)送的整數。所計算的超時被添加到NICE_WAIT_MAX的超時上。缺省為0。NICE_WAIT_MAX-指示在放棄或者復位之前連接將等待多少v_maxRTT(全局最大RTT)才發(fā)送的整數。缺省基于優(yōu)先級。這樣,本發(fā)明的多個方面提供了用于調整數據傳輸速率的計算機實施的方法、裝置和計算機可用程序代碼。本發(fā)明可以采取完全硬件實施、完全軟件實施、包含硬件和元件元件兩者的實施的方式。在優(yōu)選實施例中,本發(fā)明以軟件實施,其包括但不限于固件、駐留軟件、微代碼等。此外,本發(fā)明可以采取可從提供下述程序代碼的計算機可用或計算機可讀介質訪問的計算機程序產品的形式,該程序代碼供計算機或者任何指令執(zhí)行系統使用或者與計算機或任何指令執(zhí)行系統有關。為了描述的目的,計算機可用或計算機可讀介質可以是包含、存儲、通信、傳播或傳輸供指令執(zhí)行系統、裝置或設備使用、或者與指令執(zhí)行系統、裝置或設備有關的程序的任何有形裝置。該介質可以是電子的、磁的、光的、電磁的、紅外線的或半導體的系統(或裝置或設備)或傳播介質。計算機可讀介質的示例包括半導體或固態(tài)存儲器、磁帶、可移動計算機磁盤、隨機存取存儲器(RAM)、只讀存儲器(ROM)、剛性磁盤和光盤。目前光盤的示例包括致密盤-只讀存儲器(CD-ROM)、致密盤-讀/寫(CD-R/W)和DVD。適于存儲和/或執(zhí)行程序代碼的數據處理系統將包括通過系統總線直接或間接耦接到存儲元件的至少一個處理器。該存儲元件包括在實際執(zhí)行程序代碼期間采用的本地存儲器、大容量存儲設備、高速緩沖存儲器,所述高速緩沖存儲器提供至少某些程序代碼的臨時存儲以便減少代碼在執(zhí)行期間必須從大容量存儲設備提取的次數。輸入/輸出或I/O設備(包括但不限于鍵盤、顯示器、定點設備等)可以直接或者通過居間的I/O控制器耦接到系統。網絡適配器也可以耦接到系統以使得數據處理系統能夠變?yōu)橥ㄟ^居間私有或公共網絡耦接到其它數據處理系統或遠程打印機或者存儲設備。調制解調器、電纜調制解調器和以太網卡僅是一些目前可得類型的網絡適配器。本發(fā)明的描述出于說明的目的而給出,而非意欲窮盡或者局限于所公開形式的發(fā)明。許多修改和變化對本領域技術人員將是明顯的。選取和描述實施例,以便最佳解釋本發(fā)明的原理、實際應用,以及使得本領域技術人員能夠理解本發(fā)明的適于所構想的具體用途的、具有各種修改的各種實施例。權利要求1.一種自適應控制數據傳輸的計算機實施的方法,所述計算機實施的方法包括監(jiān)視到目的地的數據傳輸;判定該數據傳輸是否超過閾值;以及如果與該數據傳輸相關聯的參數超過該閾值,則使用自適應帶寬控制處理來控制用于向目的地傳輸數據的帶寬,其中對于該數據傳輸確保最小帶寬量。2.如權利要求1所述的計算機實施的方法,其中,該判定步驟包括標識數據的傳輸速度;以及將該傳輸速度與該閾值進行比較。3.如權利要求1所述的計算機實施的方法,其中,該判定步驟包括標識用于向目的地傳輸數據的總線路速度的百分比;以及將所使用的總線路速度的百分比與該閾值進行比較。4.如權利要求1所述的計算機實施的方法,還包括判定該數據傳輸是否小于或等于第二閾值;以及如果該數據傳輸小于或者等于第二閾值則停止使用該自適應帶寬控制處理。5.如權利要求4所述的計算機實施的方法,其中,該閾值等于該第二閾值。6.如權利要求1所述的計算機實施的方法,其中,該控制步驟在應用層實施。7.如權利要求1所述的計算機實施的方法,其中,該控制步驟在傳輸層實施。8.一種計算機程序產品,包括具有用于自適應控制數據傳輸的計算機可用程序代碼的計算機可用介質,該計算機程序產品包括用于實施前述方法權利要求中的任何一個方法的計算機可用程序代碼。9.一種數據處理系統,包括總線;通信單元,連接到該總線;存儲器,連接到該總線,其中,存儲設備包括一組計算機可用程序代碼;以及處理器單元,連接到該總線,其中,該處理器單元執(zhí)行該組計算機可用程序代碼,以監(jiān)視到目的地的數據傳輸;判定該數據傳輸是否超過閾值;以及如果與該數據傳輸相關聯的參數超過該閾值,則使用自適應帶寬控制處理來控制用于向目的地傳輸數據的帶寬,其中,對于該數據傳輸確保最小帶寬量。10.如權利要求9所述的數據處理系統,其中,該處理器單元還執(zhí)行該計算機可用程序代碼,以標識數據的傳輸速度;以及將該傳輸速度與該閾值進行比較。11.如權利要求9所述的數據處理系統,其中,該處理器單元還執(zhí)行該計算機可用程序代碼,以標識用于向目的地傳輸數據的總線路速度的百分比;以及將所使用的總線路速度的百分比與該閾值進行比較。12.如權利要求9所述的數據處理系統,其中,該處理器單元還執(zhí)行該計算機可用程序代碼,以判定該數據傳輸是否小于或等于第二閾值;以及如果該數據傳輸小于或者等于第二閾值則停止使用該自適應帶寬控制處理。13.如權利要求12所述的數據處理系統,其中,該閾值等于該第二閾值。14.如權利要求9所述的數據處理系統,其中,該處理器單元還執(zhí)行該計算機可用程序代碼,以便如果該數據傳輸超過該閾值,則使用自適應帶寬控制處理來控制用于向目的地傳輸數據的帶寬,其中,對于該數據傳輸確保最小帶寬量,在應用層實施。全文摘要一種監(jiān)視到目的地的數據傳輸的計算機實施的方法、裝置和計算機可用程序代碼。關于該數據傳輸是否超過閾值作出判定。如果該數據傳輸超過該閾值,則使用自適應帶寬控制處理來控制用于向目的地傳輸數據的帶寬,其中對于該數據傳輸確保最小帶寬量。文檔編號H04L1/00GK1953351SQ20061008421公開日2007年4月25日申請日期2006年5月29日優(yōu)先權日2005年10月21日發(fā)明者格雷戈里·J·庫達米克,史蒂文·埃利奧特,克里斯托弗·V·拉扎羅,撒恩·K·特蘭申請人:國際商業(yè)機器公司