優(yōu)先級(jí)單獨(dú)執(zhí)行窗口分配過(guò)程。出口裝置維持每個(gè)優(yōu)先級(jí)的平均可用窗口量。平均值通過(guò)供應(yīng)瞬時(shí)可用窗口到一階濾波器來(lái)維持。如果共享的可用窗口池為正,瞬時(shí)可用窗口僅僅是保留且共享的可用窗口池的總和,如果剩余共享的可用窗口池變?yōu)樨?fù),瞬時(shí)可用窗口等于保留的窗口池。
[0090]圖9圖示了用于交換機(jī)內(nèi)部傳輸協(xié)議控制的示例網(wǎng)絡(luò)設(shè)備101。網(wǎng)絡(luò)設(shè)備101可以包括被編程或設(shè)計(jì)成轉(zhuǎn)發(fā)數(shù)據(jù)分組的一個(gè)或多個(gè)集成電路。例如,網(wǎng)絡(luò)設(shè)備101可以包括專(zhuān)用集成電路(ASIC)。可以使用不同于ASIC的其他裝置,例如,現(xiàn)場(chǎng)可編程門(mén)陣列或通用處理器。網(wǎng)絡(luò)設(shè)備101至少包括控制器300、存儲(chǔ)器302、輸入通信接口 304和輸出通信接口 305。網(wǎng)絡(luò)設(shè)備101還可以與工作站309通信。
[0091]控制器300可以被配置成控制入口裝置,或在替代方式中控制出口裝置,或作為單個(gè)控制器控制入口裝置和出口裝置二者??刂破?00被配置成執(zhí)行在上述實(shí)施例中描述的操作和功能。存儲(chǔ)器302可以是根據(jù)上述實(shí)施例中描述的隊(duì)列分配且分布的單個(gè)存儲(chǔ)器或多個(gè)存儲(chǔ)器。
[0092]在一個(gè)示例中,關(guān)于網(wǎng)絡(luò)設(shè)備101的出口裝置方面,存儲(chǔ)器302被配置成根據(jù)預(yù)定帶寬以及多個(gè)入口端口與一出口端口之間的往返時(shí)間來(lái)存儲(chǔ)最大窗口大小。最大的窗口大小可以由控制器300來(lái)計(jì)算或者可以預(yù)存儲(chǔ)在存儲(chǔ)器302中。
[0093]控制器300被配置成基于最大窗口大小計(jì)算多個(gè)入口端口之一的分派窗口值。分派窗口值可以根據(jù)入口裝置之間的最大窗口大小的平均分布來(lái)初步設(shè)置。隨后,控制器300可以被配置成根據(jù)入口裝置的使用來(lái)調(diào)節(jié)分派的窗口值。與具有較大的流(在VOQ隊(duì)列中高水平)的入口裝置相比,具有較小的流(在VOQ隊(duì)列中低水平)的入口裝置被分派較小的窗口。此外,分派的窗口值根據(jù)平均分配的窗口值被分派。也就是說(shuō),未來(lái)的窗口分派不能超過(guò)相關(guān)聯(lián)入口裝置之間的當(dāng)前平均分配。
[0094]控制器300被配置成生成包括用于多個(gè)入口端口之一的分派窗口值的確認(rèn)消息。確認(rèn)消息是用于使入口裝置滑動(dòng)分派的窗口并且發(fā)送一個(gè)或多個(gè)新的數(shù)據(jù)分組的單個(gè)消息。確認(rèn)消息也可以包括擁堵的指示。擁堵的指示可以基于來(lái)自已經(jīng)丟失分組或者存在擁堵的交換結(jié)構(gòu)中的節(jié)點(diǎn)的消息。擁堵的指示可以基于作為未來(lái)?yè)矶碌念A(yù)測(cè)器的滯后的出口隊(duì)列。
[0095]在一個(gè)示例中,關(guān)于網(wǎng)絡(luò)設(shè)備101的入口裝置方面,存儲(chǔ)器302被配置成存儲(chǔ)用于出口裝置的出口計(jì)數(shù)水平。出口計(jì)數(shù)水平是存儲(chǔ)在出口隊(duì)列中的數(shù)據(jù)量,其涉及過(guò)去的數(shù)據(jù)傳輸。
[0096]控制器300被配置成檢測(cè)數(shù)據(jù)分組在出口隊(duì)列處到達(dá)并且根據(jù)數(shù)據(jù)分組的大小計(jì)算延遲時(shí)間段。延遲時(shí)間段與數(shù)據(jù)分組大小成比例。例如,延遲時(shí)間段可以根據(jù)計(jì)數(shù)器來(lái)確定,該計(jì)數(shù)器根據(jù)數(shù)據(jù)分組大小而增量并且隨時(shí)間變化以漏出速率減量??刂破?00也被配置成生成與過(guò)了延遲時(shí)間段之后生成的數(shù)據(jù)分組對(duì)應(yīng)的確認(rèn)消息。漏出速率可以是由控制器300根據(jù)交換結(jié)構(gòu)擁堵和出口隊(duì)列的存儲(chǔ)大小的函數(shù)計(jì)算的可變速率。
[0097]控制器300可以包括通用處理器、數(shù)字信號(hào)處理器、專(zhuān)用集成電路(ASIC)、現(xiàn)場(chǎng)可編程門(mén)陣列(FPGA)、模擬電路、數(shù)字電路、它們的組合或者其他現(xiàn)在已知的或以后開(kāi)發(fā)的處理器??刂破?00可以是單個(gè)裝置或裝置的組合,例如,與網(wǎng)絡(luò)、分布式處理或云計(jì)算相關(guān)耳關(guān)。
[0098]存儲(chǔ)器302可以是易失存儲(chǔ)器或非易失存儲(chǔ)器。存儲(chǔ)器302可以包括一個(gè)或多個(gè)只讀存儲(chǔ)器(ROM)、隨機(jī)存取存儲(chǔ)器(RAM)、閃存、電可擦除編程只讀存儲(chǔ)器(EEPROM)或其他類(lèi)型的存儲(chǔ)器。存儲(chǔ)器302可以是可從網(wǎng)絡(luò)設(shè)備101移除的,例如,安全數(shù)據(jù)(SD)存儲(chǔ)卡。
[0099]除了入口端口和出口端口之外,輸入通信接口 304和輸出通信接口 305可以包括任何可操作連接。可操作的連接可以是其中可以發(fā)送并且/或者接收信號(hào)、物理通信和/或邏輯通信的連接??刹僮鞯倪B接可以包括物理接口、電氣接口和/或數(shù)據(jù)接口。
[0100]圖10圖示了用于交換機(jī)內(nèi)部流控制的出口裝置的操作的示例流程圖。在動(dòng)作S301,出口裝置存儲(chǔ)與掛起的數(shù)據(jù)傳輸相關(guān)的出口計(jì)數(shù)水平。出口計(jì)數(shù)水平可以描述出口隊(duì)列中的當(dāng)前存儲(chǔ)水平。出口計(jì)數(shù)水平可以以分配給出口隊(duì)列的存儲(chǔ)器的大致一半為目標(biāo)。
[0101]在動(dòng)作S303,出口裝置基于出口計(jì)數(shù)水平選擇出口隊(duì)列處的數(shù)據(jù)分組。例如,可以選擇來(lái)自一組出口裝置的最小的計(jì)數(shù)水平??商娲兀x擇算法可以半隨機(jī)地選擇數(shù)據(jù)分組。半隨機(jī)的意思是出口裝置首先確定一組合適的出口隊(duì)列,然后在該組中隨機(jī)選擇一個(gè)出口隊(duì)列。選擇的數(shù)據(jù)分組在出口端口可用時(shí)立即被轉(zhuǎn)發(fā)。
[0102]在動(dòng)作S305,出口裝置生成與數(shù)據(jù)分組對(duì)應(yīng)的確認(rèn)消息。確認(rèn)消息列出被轉(zhuǎn)發(fā)的數(shù)據(jù)分組的分組標(biāo)識(shí),并且可以任選地包括擁堵信息和窗口信息。在步驟S307,出口裝置被配置成將下一個(gè)ACK的傳輸延遲與數(shù)據(jù)分組的大小成比例的時(shí)間段。通過(guò)使用根據(jù)數(shù)據(jù)分組大小而增量并且隨時(shí)間變化以漏出速率減量的計(jì)數(shù)器可以執(zhí)行延遲。
[0103]延遲是定步確認(rèn)消息的示例。即使分派的窗口不精確,定步ACK也允許精確的速率控制。要使源達(dá)到速率R,需要比帶寬乘以系統(tǒng)的往返時(shí)間更大的窗口。更大的窗口不會(huì)自動(dòng)導(dǎo)致交換結(jié)構(gòu)中存在更多的數(shù)據(jù)分組。在穩(wěn)態(tài)下,當(dāng)源使用整個(gè)可用窗口時(shí),過(guò)量的窗口作為目的地處接收的(可能發(fā)出的)、但仍待確認(rèn)的數(shù)據(jù)存在。然而,分派大窗口增加了源進(jìn)行突發(fā)的風(fēng)險(xiǎn)。
[0104]在多路徑交換結(jié)構(gòu)中,分組可以無(wú)序到達(dá)出口。如果目的地緩沖器填滿(mǎn)了無(wú)序分組,就會(huì)發(fā)生鎖死情形。有可能目的地的緩沖器已經(jīng)填滿(mǎn)并且序列中存在空隙。在這種情況下無(wú)法出列。因?yàn)樾碌臄?shù)據(jù)無(wú)法進(jìn)入,緩沖器永遠(yuǎn)保持滿(mǎn)的狀態(tài)。如果目的地可以丟棄尚待確認(rèn)的分組以騰出用于完成分組重排序的空間,這個(gè)問(wèn)題就會(huì)消失。為了在控制目的地緩沖器大小的同時(shí)保留端對(duì)端無(wú)丟失行為,源可以具有重發(fā)丟失的分組的能力以確保目的地最終獲得數(shù)據(jù)。重發(fā)的另一個(gè)益處在于交換結(jié)構(gòu)可以丟棄分組以通過(guò)減少線端擁塞來(lái)保持其高效率。這將緩沖器要求推至源虛擬輸出隊(duì)列。用于覆蓋往返延遲的額外緩沖器容量是入口緩沖器大小的一小部分。
[0105]網(wǎng)絡(luò)設(shè)備101可以是網(wǎng)絡(luò)中的節(jié)點(diǎn)。網(wǎng)絡(luò)設(shè)備101可以是交換機(jī)內(nèi)的節(jié)點(diǎn)。網(wǎng)絡(luò)設(shè)備可以是目的地節(jié)點(diǎn)或源節(jié)點(diǎn),或者包括目的地節(jié)點(diǎn)和源節(jié)點(diǎn)兩者。一般來(lái)講,源節(jié)點(diǎn)通過(guò)各種路徑發(fā)送通信量到目的地節(jié)點(diǎn)。從目的地節(jié)點(diǎn)到源節(jié)點(diǎn)的周期性的一系列分組包括表示擁堵值的數(shù)據(jù)。擁堵值可以以分組(數(shù)量)、帶寬(位/秒)或總?cè)萘?字節(jié))來(lái)測(cè)量。目的地節(jié)點(diǎn)限定可接受量的通信量,使得它不會(huì)超過(guò)源節(jié)點(diǎn)與目的地節(jié)點(diǎn)之間的鏈路的速度。可以有多個(gè)通信路徑貫穿源節(jié)點(diǎn)與目的地節(jié)點(diǎn)之間的多個(gè)中間節(jié)點(diǎn)。中間節(jié)點(diǎn)可能具有不同水平的擁堵。
[0106]多播可以通過(guò)一組輸出隊(duì)列復(fù)制用于目的地的接收的數(shù)據(jù)分組到一組輸出口端口來(lái)實(shí)施。多路傳送數(shù)據(jù)分組包括用于多路傳送組的標(biāo)簽,該標(biāo)簽限定用于多路傳送數(shù)據(jù)分組的目的地。位圖(例如,交換結(jié)構(gòu)出口(FPOE)位圖)可以限定多路傳送數(shù)據(jù)分組將要轉(zhuǎn)發(fā)到哪組輸出隊(duì)列以便達(dá)到目的地。
[0107]網(wǎng)絡(luò)可以包括有線網(wǎng)絡(luò)、無(wú)線網(wǎng)絡(luò)或它們的組合。無(wú)線網(wǎng)絡(luò)可以是蜂窩電話網(wǎng)絡(luò),802.11,802.16,802.20或WiMax網(wǎng)絡(luò)。另外,網(wǎng)絡(luò)可以是公用網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))、專(zhuān)用網(wǎng)絡(luò)(例如,內(nèi)聯(lián)網(wǎng))或它們的組合,并且可以利用現(xiàn)在可用的或以后開(kāi)發(fā)的各種網(wǎng)絡(luò)協(xié)議,包括但不限于基于TCP/IP的網(wǎng)絡(luò)協(xié)議。
[0108]盡管計(jì)算機(jī)可讀介質(zhì)被示出為單個(gè)介質(zhì),但術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”包括單個(gè)介質(zhì)或多個(gè)介質(zhì),例如,集中式或分布式數(shù)據(jù)庫(kù),和/或存儲(chǔ)一個(gè)或多個(gè)指令集的相關(guān)聯(lián)緩存和服務(wù)器。術(shù)語(yǔ)“計(jì)算機(jī)可讀介質(zhì)”還應(yīng)當(dāng)包括能存儲(chǔ)、編碼或執(zhí)行由處理器執(zhí)行的指令集或者使計(jì)算機(jī)系統(tǒng)執(zhí)行本文公開(kāi)的任何一種或多種方法或操作的任何介質(zhì)。
[0109]在具體的非限制性示例實(shí)施例中,計(jì)算機(jī)可讀介質(zhì)可以包括固態(tài)存儲(chǔ)器,例如,存儲(chǔ)卡,或容納一個(gè)或多個(gè)非易失性只讀存儲(chǔ)器的其他封裝。另外,計(jì)算機(jī)可讀介質(zhì)可以是隨機(jī)存取存儲(chǔ)器或其他易失性可重寫(xiě)存儲(chǔ)器。另外,計(jì)算機(jī)可讀介質(zhì)可以包括磁光介質(zhì)或光介質(zhì),例如,磁盤(pán)或磁帶或捕獲載波信號(hào)(例如,通過(guò)傳輸介質(zhì)傳送的信號(hào))的其他存儲(chǔ)裝置。電子郵件的數(shù)字文件附件或其他自包含(self-contained)信息文檔或文檔組可以被認(rèn)為是作為有形存儲(chǔ)介質(zhì)的分布式介質(zhì)。因此,本公開(kāi)被認(rèn)為包括其中可以存儲(chǔ)數(shù)據(jù)或指令的計(jì)算機(jī)可讀介質(zhì)或分布式介質(zhì)和其他等同物和繼承介質(zhì)中的任意一個(gè)或多個(gè)。計(jì)算機(jī)可讀介質(zhì)可以是非瞬態(tài)的,其包括所有有形的計(jì)算機(jī)可讀介質(zhì)。
[0110]在替代實(shí)施例中,專(zhuān)用硬件實(shí)施方式,例如,專(zhuān)用集成電路、可編程邏輯陣列和其他硬件裝置,可以被構(gòu)造成實(shí)施本文所述的一個(gè)或多個(gè)方法。可以包括各種實(shí)施例的設(shè)備和系統(tǒng)的應(yīng)用可以寬泛地包括各種電子設(shè)備和計(jì)算機(jī)系統(tǒng)。本文所述的一個(gè)或多個(gè)實(shí)施例可以使用兩個(gè)或更多個(gè)特定互連硬件模塊或具有可以在模塊之間并且通過(guò)模塊傳送的相關(guān)控制和數(shù)據(jù)信號(hào)的裝置或者作為專(zhuān)用集成電路的一部分來(lái)實(shí)施功能。因此,本系統(tǒng)包括軟件、固件、和硬件實(shí)施方式。
[0111]根據(jù)本公開(kāi)的各種實(shí)施例,本文所述的方法可以由計(jì)算機(jī)程序執(zhí)行的軟件程序來(lái)實(shí)施。另外,在示例性的非限制性實(shí)施例中,實(shí)施方式可以包括分布式處理、組件/對(duì)象分布式處理和并行處理??商娲兀摂M計(jì)算機(jī)系統(tǒng)處理可以被構(gòu)造成實(shí)施如本文所述的一個(gè)或多個(gè)方法或功能。
[0112]盡管本說(shuō)明書(shū)參照具體標(biāo)準(zhǔn)和協(xié)議描述了可以在具體實(shí)施例中實(shí)施的部件和功能,但是本發(fā)明不限于這些標(biāo)準(zhǔn)和協(xié)議。例如,互聯(lián)網(wǎng)和其他分組交換網(wǎng)絡(luò)傳輸?shù)臉?biāo)準(zhǔn)(例如,TCP/IP、UDP/IP、HTML、HTTP、HTTPS)代表現(xiàn)有技術(shù)的示例。這些標(biāo)準(zhǔn)周期性地被本質(zhì)上具有相同功能的更快或更高效的等同物取代。因此,具有與本文公開(kāi)的標(biāo)準(zhǔn)和協(xié)議相同或相似的功能的替代標(biāo)準(zhǔn)和協(xié)議被認(rèn)為是其等同物。
[0113]計(jì)算機(jī)程序(也稱(chēng)為程序、軟件、軟件應(yīng)用、腳本或代碼)可以寫(xiě)成任何形式的編程語(yǔ)言,包括編譯或解釋語(yǔ)言,并且可以配置成任何形式,包括作為單獨(dú)的程序或作為模塊、組件、子程序或適合在計(jì)算環(huán)境中使用的其他單元。計(jì)算機(jī)程序未必與文件系統(tǒng)中的文件對(duì)應(yīng)。程序可以存儲(chǔ)在容納其他程序或數(shù)據(jù)(例如,存儲(chǔ)在標(biāo)記語(yǔ)言文件中的一個(gè)或多個(gè)腳本)的文件的一部分中,存儲(chǔ)在討論中的程序?qū)S玫膯蝹€(gè)文件中,或者存儲(chǔ)在多個(gè)協(xié)調(diào)文件(例如,存儲(chǔ)一個(gè)或多個(gè)模塊、子程序或代碼的部分的文件)中。計(jì)算機(jī)程序可以被部署成在一個(gè)計(jì)算機(jī)或多個(gè)計(jì)算機(jī)上被執(zhí)行,這些計(jì)算機(jī)位于一個(gè)站點(diǎn)或者分布在多個(gè)站點(diǎn)并且由通信網(wǎng)絡(luò)互聯(lián)。
[0114]本說(shuō)明書(shū)中描述的過(guò)程和邏輯流可以由一個(gè)或多個(gè)可編程處理器執(zhí)行,所述可編程處理器執(zhí)行一個(gè)或多個(gè)計(jì)算機(jī)程序以通過(guò)操作輸入數(shù)據(jù)并且生成輸出來(lái)執(zhí)行功能。過(guò)程和邏輯流也可以由專(zhuān)用邏輯電路(例如,F(xiàn)PGA(現(xiàn)場(chǎng)可編程門(mén)陣列)或ASIC(專(zhuān)用集成電路))執(zhí)行,并且設(shè)備也可以實(shí)施為所述專(zhuān)用邏輯電路。
[0