欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

對于拓?fù)渥兓袕椥缘姆植际桨创涡蜇?fù)載分布的制作方法

文檔序號:7821877閱讀:253來源:國知局
對于拓?fù)渥兓袕椥缘姆植际桨创涡蜇?fù)載分布的制作方法
【專利摘要】用于以對系統(tǒng)拓?fù)渥兓袕椥缘姆绞椒峙渚W(wǎng)絡(luò)負(fù)載的方法、裝置和系統(tǒng)。在多個負(fù)載拆分器上實施分配函數(shù)及相關(guān)聯(lián)操作,以使得如果負(fù)載拆分器成為無效的,則另一個或其他負(fù)載拆分器可以轉(zhuǎn)發(fā)對應(yīng)于以前由無效的負(fù)載拆分器處理的流的分組,而無需要求在負(fù)載拆分器之間保持流狀態(tài)同步。通過系統(tǒng)拓?fù)渥兓?,以將用于相同流的分組分配給相同服務(wù)器的方式實施分配函數(shù),解決了當(dāng)服務(wù)器故障和/或離線時,及當(dāng)這種服務(wù)器或替換服務(wù)器恢復(fù)在線時的情形。經(jīng)由使用被標(biāo)記以追蹤重分配流的重分配流列表和/或布隆過濾器而部分地促進(jìn)該技術(shù)。還公開了一種新穎的布隆過濾器再循環(huán)方案。
【專利說明】對于拓?fù)渥兓袕椥缘姆植际桨创涡蜇?fù)載分布

【背景技術(shù)】
[0001] 自從引入微處理器以來,計算機(jī)系統(tǒng)已經(jīng)變得越來越塊。大致按照摩爾定律(基 于預(yù)測集成電路上的晶體管數(shù)量每兩年加倍的Intel?公司共同創(chuàng)始人GordonMoore的 1965年出版物),在幾乎三十年中,速度增大以相當(dāng)均勻的速率急速上升。同時,存儲器和 非易失性儲存設(shè)備的尺寸也穩(wěn)定地增大,使得許多當(dāng)前個人計算機(jī)比僅僅10-15年之前的 超級計算機(jī)更強(qiáng)大。另外,類似地見證了網(wǎng)絡(luò)通信速度的極大增加。
[0002] 處理器速度、存儲器、儲存設(shè)備和網(wǎng)絡(luò)帶寬技術(shù)中的增大導(dǎo)致了具有不斷增大的 容量的網(wǎng)絡(luò)的擴(kuò)建和部署。最近,諸如由亞馬遜(例如,亞馬遜彈性計算云(EC2)和簡單儲 存服務(wù)(S3))和微軟(例如,Azure和0ffice365)所提供的基于云的服務(wù)的引入,導(dǎo)致了用 于公用網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)的額外的網(wǎng)絡(luò)擴(kuò)建以及大容量數(shù)據(jù)中心的增加,用以支持使用專用網(wǎng) 絡(luò)基礎(chǔ)結(jié)構(gòu)的這些服務(wù)。另外,在不久的進(jìn)來,預(yù)期新一代(例如4G)移動網(wǎng)絡(luò)數(shù)據(jù)服務(wù)會 相當(dāng)大地影響陸線網(wǎng)絡(luò)的使用。這些及其他考慮的結(jié)果是預(yù)期計算機(jī)網(wǎng)絡(luò)的使用在可預(yù)見 的未來以高速繼續(xù)增長。
[0003] 諸如電子商務(wù)網(wǎng)站、社交網(wǎng)站、內(nèi)容托管網(wǎng)站和新聞網(wǎng)站之類的用于云服務(wù)及其 他在線網(wǎng)站的公共架構(gòu)使用多層架構(gòu),所述多層架構(gòu)具有耦合到服務(wù)器(諸如應(yīng)用服務(wù)器 和數(shù)據(jù)庫或儲存服務(wù)器)的一層或多層的網(wǎng)絡(luò)服務(wù)器前端。網(wǎng)絡(luò)服務(wù)器層自身可以使用負(fù) 載分配方案,其以扇出模型方式使用多個級。負(fù)載分布還通常部署在網(wǎng)絡(luò)服務(wù)器與應(yīng)用服 務(wù)器層之間。
[0004] 在技術(shù)上,網(wǎng)絡(luò)服務(wù)器應(yīng)被更準(zhǔn)確地稱為HTTP(超文本傳輸協(xié)議)服務(wù)器。HTTP 采用使用客戶機(jī)-服務(wù)器模型的請求-應(yīng)答協(xié)議。HTTP是無狀態(tài)協(xié)議,最初實施它以便在 單一應(yīng)答對后關(guān)閉連接。在HTTP1.1中,增加了保持活動機(jī)制,其中,連接可以用于多個請 求;這些連接被稱為"持久"連接。另外,HTTP1.1引入了分塊傳輸編碼以支持使用持久連 接的數(shù)據(jù)流。
[0005] 每一個服務(wù)器都具有其自身的網(wǎng)絡(luò)地址,公共網(wǎng)絡(luò)服務(wù)器具有公共因特網(wǎng)協(xié)議 (IP)網(wǎng)絡(luò)地址,其被按照使用32位尋址方案的IPv4或者按照使用128位尋址方案的IPv6 進(jìn)行編碼。域名系統(tǒng)0NS)用于將網(wǎng)站URL映射到其公共IP地址。典型地,對于諸如www. facebook.com和www.youtube,com的網(wǎng)站的主頁,僅有單一公共IP地址。為了處理每天接 收到的上百萬的請求,這些網(wǎng)站實施負(fù)載分布方案,根據(jù)這個方案,使用扇出的一級或多級 在網(wǎng)站的專用網(wǎng)絡(luò)內(nèi)部路由每一個請求。
[0006] 早期的負(fù)載分布方案采用負(fù)載平衡器等,其使用簡單算法以便跨越多個服務(wù)器而 平衡輸入請求。例如,鑒于原始HTTP請求/應(yīng)答預(yù)期,采用了循環(huán)法方案等,根據(jù)這種方案, 如果存在1對n負(fù)載平衡器,則每個服務(wù)器就會處理每一第n個請求。根據(jù)在樹狀層級結(jié) 構(gòu)中將低層應(yīng)用服務(wù)器耦合到高層服務(wù)器的架構(gòu),僅可以經(jīng)由單一路由路徑訪問給定應(yīng)用 服務(wù)器。因而,對于這些架構(gòu)中的流連接,沿著相同路徑路由對應(yīng)于主機(jī)的專用網(wǎng)絡(luò)內(nèi)的連 接的所有分組。
[0007] 與專用IP網(wǎng)絡(luò)相反,因特網(wǎng)由大量相互連接的公用網(wǎng)絡(luò)組成,并且采用極其大量 的交換元件,例如交換機(jī)、路由器、橋接器等。根據(jù)因特網(wǎng)的基本概念,可以使用不同路線在 相同源與目的地端點(diǎn)之間路由分組,因而提供了如果一些交換元件成為被禁用情況下的彈 性,并實現(xiàn)了對網(wǎng)絡(luò)拓?fù)涞膭討B(tài)變化。但對于流連接等,在路線的公用因特網(wǎng)部分和路線的 專用網(wǎng)絡(luò)部分上,沿著相同路線路由分組是有利的。
[0008] 通常優(yōu)選的是,與流相關(guān)聯(lián)的分組按次序到達(dá)目的地。為了便于這樣,典型地將路 由器和交換機(jī)配置成對給定流選擇相同的下一跳。類似地,通常優(yōu)選地,負(fù)載平衡器和負(fù)載 拆分器被配置成將屬于相同流的分組發(fā)送到相同的服務(wù)器。

【專利附圖】

【附圖說明】
[0009] 通過結(jié)合附圖參考以下的詳細(xì)說明,會更易于意識到本發(fā)明的前述方案和許多伴 隨優(yōu)點(diǎn),并且會更好地理解它,在附圖中,除非另外指出,否則在貫穿各個視圖中相似的參 考標(biāo)記指代相似的部分:
[0010] 圖la是示例性系統(tǒng)架構(gòu)的示意圖,所述系統(tǒng)架構(gòu)采用多個負(fù)載拆分器來將分組 分配給多個服務(wù)器,而服務(wù)器又反過來提供對到由儲存層中的設(shè)備存儲的數(shù)據(jù)的訪問;
[0011] 圖lb顯示了圖la的系統(tǒng)拓?fù)渲械淖兓?,其中一個服務(wù)器成為不可用的;
[0012] 圖1C顯示了圖la和lb的系統(tǒng)拓?fù)渲械淖兓?,其中兩個服務(wù)器成為不可用的;
[0013] 圖Id顯示了系統(tǒng)拓?fù)渫ㄟ^使得不可用服務(wù)器之一恢復(fù)開機(jī)而從圖lc的配置返回 到圖lb的配置。
[0014] 圖le顯示了其中由備用服務(wù)器代替有故障的服務(wù)器的系統(tǒng)拓?fù)洌?br> [0015] 圖If顯示了圖lc的系統(tǒng)拓?fù)渲械淖兓渲胸?fù)載拆分器之一變?yōu)椴豢捎玫模?br> [0016] 圖2顯示了圖la的系統(tǒng)架構(gòu)的變化,其中,耦合到負(fù)載拆分器的服務(wù)器經(jīng)由LAN 連接到應(yīng)用服務(wù)器層中的應(yīng)用服務(wù)器;
[0017] 圖3a_3c示出了采用多個哈希算法和一維位向量的布隆過濾器如何操作;
[0018] 圖4a_4c示出了采用多個哈希算法和各自的位向量的布隆過濾器如何操作; [0019] 圖5顯示了根據(jù)一個實施例的用于一對布隆過濾器的位向量數(shù)據(jù)的時間流,用于 示出采用當(dāng)前和下一布隆過濾器的布隆過濾器方案的實現(xiàn)方式;
[0020] 圖6是示出根據(jù)一個實施例的有利于根據(jù)圖la-lf?中所示的實施例的通用分組分 配/再分配方案的操作和邏輯的流程圖;及
[0021] 圖7是示出被配置為實施本文公開的實施例的方案的裝置的架構(gòu)的示意圖。

【具體實施方式】
[0022] 本文說明了用于以對于拓?fù)渥兓袕椥缘姆绞絹矸峙渚W(wǎng)絡(luò)負(fù)載的系統(tǒng)、裝置、方 法的實施例。在以下說明中,闡述了許多具體細(xì)節(jié),例如負(fù)載拆分器的示例性實施例,以提 供對本發(fā)明的實施例的透徹理解。但相關(guān)領(lǐng)域技術(shù)人員會認(rèn)識到,可以無需一個或多個具 體細(xì)節(jié),或者借助其他方法、組件、材料等來實踐本發(fā)明。在其他實例中,沒有詳細(xì)顯示或說 明公知的結(jié)構(gòu)、材料或操作以避免使得本發(fā)明的方案模糊不清。
[0023] 在本說明書通篇中對"一個實施例"或"實施例"的提及表示結(jié)合實施例說明的特 定特征、結(jié)構(gòu)或特性包括在本發(fā)明的至少一個實施例中。因而,短語"在一個實施例中"或 "在實施例中"在本說明書通篇中多個位置的出現(xiàn)不一定全都指代相同的實施例。而且,可 以在一個或多個實施例中以任何適合的方式組合特定特征、結(jié)構(gòu)或特性。
[0024] 如上所述,在網(wǎng)絡(luò)中通常沿相同路徑來路由與相同流相關(guān)聯(lián)的分組。更具體地,也 可以稱為負(fù)載拆分器(本文所使用的)的負(fù)載平衡器被配置為將屬于相同流的分組轉(zhuǎn)發(fā)到 相同的服務(wù)器。對于將前端服務(wù)器連接到其他層上的服務(wù)器的樹狀層級而言,應(yīng)總是將與 給定服務(wù)和相同流相關(guān)聯(lián)的分組發(fā)送到用于實施該服務(wù)的相同服務(wù)器。例如,基于云的數(shù) 據(jù)上載或下載可以沿包括前端網(wǎng)絡(luò)服務(wù)器、被配置為服務(wù)數(shù)據(jù)文件訪問請求的應(yīng)用服務(wù)器 和在其上存儲數(shù)據(jù)的儲存服務(wù)器的路徑來路由分組??蛇x地,可以在相同服務(wù)器上實現(xiàn)網(wǎng) 絡(luò)服務(wù)器和應(yīng)用服務(wù)器功能。結(jié)合數(shù)據(jù)文件請求,打開持久連接,使用運(yùn)行在應(yīng)用服務(wù)器上 的應(yīng)用程序并結(jié)合使用在網(wǎng)絡(luò)服務(wù)器上實施的HTTP數(shù)據(jù)分塊而從儲存服務(wù)器流送數(shù)據(jù)或 向儲存服務(wù)器流送數(shù)據(jù)。由于HTTP數(shù)據(jù)分塊實際上涉及多個請求/應(yīng)答,每一個請求都由 相同的網(wǎng)絡(luò)服務(wù)器和應(yīng)用服務(wù)器來服務(wù)。
[0025] 為了支持使用相同的路由/轉(zhuǎn)發(fā)路徑,當(dāng)前使用的有兩個基本機(jī)制。本文所述的 這些機(jī)制適用于負(fù)載拆分器,但是可以由其他網(wǎng)絡(luò)元件(例如交換機(jī))來使用類似的機(jī)制。 根據(jù)第一機(jī)制,負(fù)載拆分器為每個當(dāng)前流保持狀態(tài):(流標(biāo)識符、選擇來轉(zhuǎn)發(fā)流的服務(wù)器)。 這存在兩個問題;一個是,尤其是借助分布式拒絕服務(wù)(DD0S)攻擊,該狀態(tài)或許變?yōu)楹谋M 的。另一個問題是如果服務(wù)器選擇是任意的(即,在流開始時選擇最小負(fù)載的服務(wù)器),如 果網(wǎng)絡(luò)路徑改變且將流路由到不同負(fù)載拆分器,則第二負(fù)載拆分器就會無法獲知由第一負(fù) 載拆分器所做出的選擇(在負(fù)載拆分器之間沒有極為昂貴的狀態(tài)同步)。
[0026] 第二個機(jī)制采用分組中選定字段值的哈希,以做出無狀態(tài)確定選擇。這允許另一 負(fù)載拆分器計算相同的選擇。但如果服務(wù)器組變化,就會不同地哈希處理所有流,從而不必 要移動流(不僅僅是前往現(xiàn)在的廢棄選擇的流)。
[0027] 根據(jù)本文所公開實施例的方案,解決了前述兩個問題,實現(xiàn)了網(wǎng)絡(luò)拓?fù)涓淖?,同時 確保由指定給給定請求的原始應(yīng)用服務(wù)器或者其他服務(wù)器服務(wù)于該請求以進(jìn)行完成。另 夕卜,該技術(shù)是可縮放的,使得多個負(fù)載拆分器可以實施相同的分配邏輯,如果這些負(fù)載拆分 器之一發(fā)生故障,則另一負(fù)載拆分器可以接管處理由故障的負(fù)載拆分器先前處理的流的分 配。此外,這可以以在負(fù)載拆分器之間無需昂貴的狀態(tài)同步的方式來完成。
[0028] 圖la示出了系統(tǒng)100,包括n個運(yùn)行服務(wù)器S(標(biāo)記為SI、S2、……、Sn)和兩個 備用服務(wù)器102-1與102-2,其耦合到三個負(fù)載拆分器L(標(biāo)記為LI、L2和L3)。每一個服 務(wù)器S和備用服務(wù)器102還耦合到包括多個大容量儲存設(shè)備106的儲存層104和儲存訪問 服務(wù)器或前端等(未示出),其提供對存儲在大容量儲存設(shè)備上的數(shù)據(jù)的訪問。負(fù)載拆分器 L1、L2和L3從系統(tǒng)外部的客戶端經(jīng)由適用的網(wǎng)絡(luò)基礎(chǔ)結(jié)構(gòu)(為了簡單和清楚而沒有示出) 接收輸入請求108。例如,系統(tǒng)100可以是基于云的儲存服務(wù)的部分,用戶使用URL門戶經(jīng) 由因特網(wǎng)進(jìn)行訪問。在由圖2中的系統(tǒng)200所示的另一配置中,服務(wù)器S包括網(wǎng)絡(luò)服務(wù)器, 其經(jīng)由局域網(wǎng)(LAN) 103耦合到應(yīng)用服務(wù)器層105,應(yīng)用服務(wù)器層105包括多個應(yīng)用服務(wù)器 107。另外,如果在應(yīng)用服務(wù)器層或者其他中間層中實現(xiàn)服務(wù)器S,則可以從諸如前端網(wǎng)絡(luò)服 務(wù)器層(未示出)的系統(tǒng)100中的另一層接收輸入請求108,或者否則就在系統(tǒng)架構(gòu)中的層 之間放置多個負(fù)載拆分器。
[0029] 每一個負(fù)載拆分器L都包括分配邏輯110,其被配置為將輸入請求路由/轉(zhuǎn)發(fā)到 服務(wù)器S。更具體地,配置分配邏輯110,以使得將對應(yīng)于給定流的所有分組轉(zhuǎn)發(fā)到用于服 務(wù)相關(guān)聯(lián)請求的相同服務(wù)器S,包括通過系統(tǒng)拓?fù)渥兓?,除非在流期間服務(wù)器變?yōu)楸唤玫?或者變?yōu)椴豢捎玫?。根?jù)常用術(shù)語,將可用于支持服務(wù)的服務(wù)器稱為"在線"、"開機(jī)"或"活 動",而將不可用的服務(wù)器稱為"離線"或"停機(jī)"或禁用的、有故障的等。其他服務(wù)器可以處 于備用,同時在技術(shù)上為在線且運(yùn)行中(盡管以減小的級別),但不可用于服務(wù)請求。出于 在這個詳細(xì)說明及以下權(quán)利要求書中的目的,將運(yùn)行中的、在線的和/或以其它方式可用 于服務(wù)請求的服務(wù)器稱為"可用的"服務(wù)器,而將停機(jī)的、離線的、被禁用的和/或以其它方 式不可用于服務(wù)請求的服務(wù)器稱為"不可用的"服務(wù)器。
[0030] 根據(jù)圖la中的系統(tǒng)100的配置,n個服務(wù)器是可用的,而兩個服務(wù)器是離線的處于 備用模式中,由"Sb"標(biāo)記。因此,分配邏輯110采用n路確定性分配函數(shù)(例如,在一個實 施例中是n路哈希函數(shù))來將輸入請求分配到n個可用服務(wù)器。在所示的示例中,在每一 個輸入分組報頭中的字段的元組上進(jìn)行哈希處理,例如用于IP分組報頭的公知的5元組哈 希。這個方案通常稱為k元組哈希。也可以使用其他公知的哈希函數(shù)。出于說明性目的, 隨后使用n作為除數(shù),計算k元組哈希結(jié)果的余數(shù)R,其中,R識別將分組路由到哪個服務(wù)器 S。相應(yīng)的查找表(未示出)用于將分配函數(shù)結(jié)果(例如余數(shù)R)映射到相應(yīng)服務(wù)器S的地 址,隨后將分組轉(zhuǎn)發(fā)到該服務(wù)器。由于用于屬于給定流的所有分組的元組字段值會是相同 的(借助定義,根據(jù)標(biāo)準(zhǔn)流分類方案),所以哈希計算和余數(shù)結(jié)果同樣總是相同的,為相同 流中的所有分組產(chǎn)生相同的余數(shù)R。
[0031] 圖lb顯示了系統(tǒng)100的配置,其中服務(wù)器S2成為無效的或者成為不可用的,由 "X"標(biāo)記。結(jié)果,當(dāng)前有n-1個服務(wù)器S可用。根據(jù)傳統(tǒng)方案,將重新配置每一個負(fù)載拆分 器L1、L2和L3中的分配邏輯,以將新的輸入請求分配到(當(dāng)前)n-l個可用服務(wù)器。例如, 這可以使用與圖la中所示的相同的哈希函數(shù)來完成,其中,以n-1代替模數(shù)n。而這通過 在n-1個可用服務(wù)器S中拆分輸入請求108,而有利于負(fù)載平衡目的,(n-1)路確定性哈希 函數(shù)可以為給定流產(chǎn)生與為n路確定性哈希函數(shù)所獲得的結(jié)果不同的結(jié)果R。
[0032] 前述是存在問題的,因為會將配置變化后的輸入分組不必要地轉(zhuǎn)發(fā)到不同服務(wù) 器。本應(yīng)前往保持開機(jī)的服務(wù)器的流仍會被路由到那些服務(wù)器,但本應(yīng)路由到不可達(dá)的服 務(wù)器的流會被重新定向到不同的服務(wù)器。此外,一旦服務(wù)器恢復(fù),從該服務(wù)器重新定向的流 會保持重新定向到替換服務(wù)器,直到流完成。典型地,將對應(yīng)于在前請求的分組轉(zhuǎn)發(fā)到不同 服務(wù)器會導(dǎo)致請求的服務(wù)不得不重新開始,或者至少產(chǎn)生額外的開銷,這取決于所請求的 服務(wù)的類型。盡管有可能構(gòu)造系統(tǒng)以在無需請求重新開始的情況下支持中游傳輸,但這引 起大量開銷(例如狀態(tài)同步、負(fù)載拆分器上額外的狀態(tài)信息等),并且不可縮放。相反,實施 了技術(shù),以確保不管配置如何變化,都將與給定流相關(guān)聯(lián)的分組轉(zhuǎn)發(fā)到相同服務(wù)器,只要該 服務(wù)器在整個流中保持可用。根據(jù)傳統(tǒng)實踐,這通過使用輔助信息(例如流識別和映射、流 狀態(tài)數(shù)據(jù)等)和邏輯來完成,這會在DD0S攻擊下被壓制和/或增大負(fù)載拆分器復(fù)雜性和成 本。
[0033] 根據(jù)圖la-lc中所示的實施例的方案,使用了不同的成本較低的方案。不是將確 定性分配函數(shù)從n路哈希函數(shù)改變?yōu)椋╪-1)路哈希函數(shù),而是在第一分配迭代期間使用相 同的n路哈希函數(shù)。在一個實施例中,每一個負(fù)載拆分器L保留服務(wù)器S及其可用狀況的 列表。如果n路分配函數(shù)的結(jié)果導(dǎo)致到可用服務(wù)器S的映射(稱為"命中"),則將分組簡單 地轉(zhuǎn)發(fā)到該服務(wù)器。但如果n路分配函數(shù)導(dǎo)致到不可用服務(wù)器的映射(稱為"未命中"), 例如圖lb中的服務(wù)器S2,則執(zhí)行第二(n-1)路確定性分配函數(shù),其會導(dǎo)致將分組分配給可 用的n-1個服務(wù)器S之一。如圖lc進(jìn)一步所示的,如果(n-1)路分配函數(shù)導(dǎo)致另一個未命 中,則執(zhí)行第三(n_2)路分配函數(shù)。如果(n-2)路分配函數(shù)導(dǎo)致未命中,則執(zhí)行第四(n-3) 路分配函數(shù),以此方式繼續(xù),直至分配函數(shù)結(jié)果映射到可用服務(wù)器。
[0034] 前述方案確保了將對應(yīng)于現(xiàn)有流的分組轉(zhuǎn)發(fā)到借助對應(yīng)于圖la中所示的原始系 統(tǒng)100配置的n路分配函數(shù)將流原始分配到的相同服務(wù)器(只要該服務(wù)器可用)。此外,這 在無需要求負(fù)載拆分器保留傳統(tǒng)方案所需的流狀態(tài)的級別和映射信息的情況下實現(xiàn)了這 個結(jié)果。另外,這個方案對于DD0S攻擊更具有彈性,因為它無需為每一個流保持相同級別 的狀態(tài)信息。
[0035] 盡管圖la-lc中所示的和以上論述的技術(shù)實現(xiàn)了在無需相當(dāng)大的流級別追蹤信 息的情況下,將分組流分配給相同服務(wù)器,但它沒有解決當(dāng)由于(以前)不可用服務(wù)器恢復(fù) 在線(因而再次成為可用的)而引起可用服務(wù)器的數(shù)量增大時的分配。例如,如果圖lb和 lc中的無效服務(wù)器S2或者S4的任意一個恢復(fù)在線時,會發(fā)生這種增大。
[0036] 假定服務(wù)器S2恢復(fù)在線,并且可再次用于服務(wù)輸入請求。在服務(wù)器S2不可用時, 一個或多個負(fù)載拆分器L(如果適用的話)將正常情況下哈希處理到服務(wù)器S2 (假定原始 的n個服務(wù)器可用)的流分配給一個或多個其他服務(wù)器S。期望的是,負(fù)載拆分器104能夠 開始將對應(yīng)于新請求的流分配給服務(wù)器S2,而不是移動在服務(wù)器S2不可用時重新分配給 另一服務(wù)器的現(xiàn)有流。因此,每一個負(fù)載拆分器104應(yīng)能夠識別它在服務(wù)器S2不可用時分 配給其他服務(wù)器的流,并實施這樣的流分配機(jī)制:其將對應(yīng)于重新定向的流的分組轉(zhuǎn)發(fā)到 在服務(wù)器S2不可用時將每一個重新定向的流所重新定向到的服務(wù)器,直至該流完成。如本 文所用的,將轉(zhuǎn)發(fā)到其他服務(wù)器的流稱為"重分配的"流,因為它們被轉(zhuǎn)發(fā)到與由分組的分 配函數(shù)的初始迭代所識別出的服務(wù)器不同的服務(wù)器(換句話說,分組必須從不可用服務(wù)器 重分配給另一個服務(wù)器)。
[0037] 根據(jù)各個實施例,每一個負(fù)載拆分器保留重分配流的一個或多個列表,使用一個 或多個布隆過濾器,或者使用二者的組合,其中,使用具有預(yù)定或可變尺寸的列表或表格, 隨后在沒有更多空間來將額外重分配的流添加到列表/表格時,使用布隆過濾器。當(dāng)流哈 希處理到服務(wù)器S2時,處理分組的負(fù)載拆分器核對以查看它是否對應(yīng)于在服務(wù)器S2不可 用時重分配給另一服務(wù)器S的流的列表中的流(或者由布隆過濾器標(biāo)記的流)。如果流在 列表中,那么更新與何時最后見到來自流的分組相關(guān)聯(lián)的計時器,并按照重分配的結(jié)果重 新定向流。對于下述的當(dāng)前/下一個布隆過濾器方案,如果流在當(dāng)前布隆過濾器中,那么將 相應(yīng)的位設(shè)定在下一個布隆過濾器中,并重新定向流。如果流既不在列表中也不在布隆過 濾器中,那么將它發(fā)送到由分配函數(shù)所識別的服務(wù)器。
[0038] 假定系統(tǒng)100配置是圖Id中所示的,而在前配置(在服務(wù)器S2恢復(fù)在線之前)是 圖lc中所示的。在保留重分配流列表114和/或布隆過濾器116的負(fù)載拆分器L1處接收 新的分組112。在所示的實施例中,重分配流列表114為每一個服務(wù)器S,或者可任選地,為 近來不可用的每一個服務(wù)器存儲重分配流條目的列表。在一個實施例中,重分配流由它們 的FlowID識別。通常,可以使用用于定義并確定FlowID的幾個公知的技術(shù)的任意一個來確 定用于給定流的FlowID,諸如在多個分組報頭字段值上執(zhí)行哈希函數(shù),例如在前述n元組 哈希中所使用的,或者簡單地串聯(lián)多個字段值。在一個實施例中,哈希函數(shù)與用于流分配的 類似或相同,但沒有模數(shù)運(yùn)算。例如,在一個實施例中,分配函數(shù)是在分組的相關(guān)聯(lián)FlowID上執(zhí)行的簡單模數(shù)運(yùn)算。如下所述的,典型地在分組分類過程中執(zhí)行用于分組的FlowID。 此外,可以緩存分組,以使得可以取回它們的(已經(jīng)確定的)FlowID,而無需在流分配函數(shù) 中執(zhí)行類似的哈希函數(shù)。
[0039] 繼續(xù)分組112的處理,假定在分組112上的n路分配哈希處理導(dǎo)致將分組轉(zhuǎn)發(fā)到 不可用的服務(wù)器S4。如前所述,將執(zhí)行第二(n-1)路分配哈希處理,如有必要則重復(fù),直至 分配哈希處理導(dǎo)致將分組轉(zhuǎn)發(fā)到可用服務(wù)器?,F(xiàn)在假定在分組120上的n路分配哈希處理 導(dǎo)致將分組轉(zhuǎn)發(fā)到服務(wù)器S2。由于這個服務(wù)器近來不可用,所以可以有在重新哈希處理的 流列表114中的一個或多個條目或者布隆過濾器116之一中的標(biāo)記,其識別如果服務(wù)器S2 可用時會分配給它的、但需要一個或多個重新哈希處理的一個或多個以前的流,導(dǎo)致將一 個或多個流被重分配給不同的一個或多個服務(wù)器。
[0040] 考慮到與重分配流相關(guān)聯(lián)的分組的可能性,在一個實施例中,為每一個接收到的 分組執(zhí)行重分配流列表114的查找。由于重分配流列表可以存儲為表格,所以可以使用例 如對應(yīng)于服務(wù)器S2的ServerlD執(zhí)行針對表格的相應(yīng)查詢,ServerlD是針對包含ServerlD 值的索引(或者簡單地,包含ServerlD值的列)而查詢的,或者計算或取回FlowID,并用作 用于查找的輸入值。取決于恢復(fù)開機(jī)或被代替的以前不可用服務(wù)器的數(shù)量,可能需要執(zhí)行 分配函數(shù)的額外迭代。以下參考圖6中的流程圖600論述用于處理多個服務(wù)器可用性配置 的更普遍過程。
[0041] 響應(yīng)于服務(wù)器故障等(例如,為了維護(hù)、重配置等而離線),一般慣例是用備用服 務(wù)器代替有故障的或不可用的服務(wù)器。圖le中示出了這種代替的示例,其中,故障服務(wù)器 S2由備用服務(wù)器102-1代替。通常,在服務(wù)器變?yōu)椴豢捎玫臅r間與替換服務(wù)器被配置和開 機(jī)并運(yùn)行和使其可用以接管由不可用服務(wù)器提供的服務(wù)及其他操作的時間之間會存在某 一時間段。在這個時間段,可以將分組流重分配給其他服務(wù)器,如前所述。但不是故障服務(wù) 器(例如服務(wù)器S2)恢復(fù)開機(jī)并使其可用以再次接收流,而是那些流現(xiàn)在會轉(zhuǎn)發(fā)到替換服 務(wù)器。
[0042] 在一個實施例中,希望服務(wù)器替換的實現(xiàn)方式對于與實際中同樣多的系統(tǒng)是透明 的。在圖le所示的實施例中,保留了服務(wù)器映射表120,其將ServerlD映射到物理或虛擬 服務(wù)器及其相應(yīng)的IP地址。可任選地,可以將服務(wù)器映射到用于使用層2轉(zhuǎn)發(fā)的系統(tǒng)的 MAC地址。從分配函數(shù)的一個實施例的角度來看,函數(shù)輸出整數(shù),使用該服務(wù)器的IP地址 將流分配到與所述整數(shù)相關(guān)聯(lián)的服務(wù)器。通過更新要被替換的服務(wù)器的映射信息,以使得 ServerlD現(xiàn)在映射到替換服務(wù)器的IP地址,可以部分地有利于服務(wù)器替換。如圖le所示 的,用于ServerlD2的IP地址從分配給服務(wù)器S2的10. 0. 10. 102更新為分配給替換服務(wù) 器 102-1 的 10.0?10.110。
[0043] 如上所述,在一些實施例中,布隆過濾器用于追蹤被重分配的流。布隆過濾器是空 間高效的數(shù)據(jù)結(jié)構(gòu),其用于概率性地測試元素是否是集合的成員。最簡單形式的布隆過濾 器采用單一哈希算法,其用于在適用的位位置為元素的單行或列產(chǎn)生位值,通常稱為一維 位向量。另一個布隆過濾器方案采用多個哈希算法,其具有映射到一維位向量的位結(jié)果。根 據(jù)更高級的布隆過濾器,用于多個哈希算法中每一個的位向量存儲在各自的位向量中,其 也可以稱為多維位向量。
[0044] 在圖3a_3c中顯示了使用具有映射到一維位向量中的位值的多個哈希算法來實 施的布隆過濾器的示例。在這個示例中,存在三個哈希算法,示為仏〇〇、11 2〇〇和成〇〇,其 中,元素1是輸入值。對于給定輸入11,計算每一個哈希算法111〇〇、11 2〇〇和113〇〇的結(jié) 果,并在對應(yīng)于哈希結(jié)果的位位置標(biāo)記(例如設(shè)置為1)相應(yīng)的位。例如,如圖3a所示的, 哈希函數(shù)氏〇〇的結(jié)果是26,H2(Xl)是43、成〇〇是14。因此,設(shè)置在位置26、43和14的 位(例如將位值從"0"(清除)翻轉(zhuǎn)為"1"(置位))。隨后為后續(xù)輸入Xi值重復(fù)這個過程, 結(jié)果得到圖3b中所示的位向量,其中,設(shè)置的位以灰色和黑色示出。圖3b還示出了對于輸 入^的命中的結(jié)果(以黑色示出的位)。通過使用^作為輸入值來應(yīng)用每一個布隆過濾 器的哈希算法來驗證命中(也稱為對元素x2的查詢),隨后確認(rèn)對于每一個哈希算法結(jié)果, 在位位置是否存在位設(shè)置。例如,如果對于每一個哈希算法結(jié)果的位置存在位設(shè)置,則結(jié)果 就是命中,表示元素xk對應(yīng)于應(yīng)用了哈希算法并設(shè)置了相應(yīng)位的以前輸入值\的概率很高 (取決于位向量的稀疏性)。
[0045] 圖3c顯示了對于輸入&的未命中的結(jié)果。在此情況下,沒有設(shè)置對應(yīng)于哈希算法 結(jié)果的位向量中的一個或多個位位置。圖3b和3c示出了布隆過濾器所固有的幾個特點(diǎn)。 首先,布隆過濾器可能產(chǎn)生錯誤肯定。這是因為通過相對于多個輸入x評價哈希算法所形 成的位向量是對于每一個輸入x的單個結(jié)果的合并。因此,可以存在設(shè)置位位置的組合,該 設(shè)置位位置對于在針對布隆過濾器的位向量應(yīng)用時的測試輸入Xi產(chǎn)生命中結(jié)果,而輸入Xi 不用于產(chǎn)生位向量。這稱為錯誤肯定。布隆過濾器的另一個固有特點(diǎn)是它們不產(chǎn)生錯誤否 定。如果在應(yīng)用于布隆過濾器的位向量時的輸入Xi的評價得到未命中,則必然會知道Xif 是以前布隆過濾器輸入的集合的成員。
[0046] 圖4a_4c示出了為每一個布隆過濾器哈希算法保留單獨(dú)的表格行(和一維位向 量)的布隆過濾器的示例。盡管將每一行示出為具有相同的長度,但可以是不同哈希算法 會產(chǎn)生不同長度的位向量。在針對輸入x值(例如圖4a中針對Xl)評價哈希算法時,在對應(yīng) 于哈希算法結(jié)果的表格行的位位置處設(shè)置相應(yīng)的位。如同以前一樣,輸入^導(dǎo)致命中(無 論是真實命中還是錯誤肯定),而輸入x3導(dǎo)致未命中。
[0047] 由于哈希算法對于兩個或更多個不同輸入可以產(chǎn)生相同的結(jié)果(因而在布隆過 濾器位向量中設(shè)置相同位),所以不可能在保證不清除對應(yīng)于其他輸入結(jié)果的位的同時,去 除單個集合成員(通過清除它們的位)。因而,傳統(tǒng)布隆過濾器技術(shù)是單向的:僅對應(yīng)于將 額外成員添加到集合,而將額外的位添加到位向量。
[0048]添加額外集合成員的問題是減小了位向量稀疏性,這導(dǎo)致錯誤肯定的增加,如上 所述。同時,期望在持續(xù)的基礎(chǔ)上繼續(xù)添加新的集合成員,以有效地存儲便于確定是否重分 配流的標(biāo)記。根據(jù)采用布隆過濾器的一些實施例的方案,提供了一種新穎的技術(shù),其實現(xiàn)了 布隆過濾器追蹤重分配的流,同時保持布隆過濾器稀疏。
[0049]更具體地,如下實施技術(shù)的一個實施例。參考圖5,為根據(jù)傳統(tǒng)方案會使用的每一 個單一布隆過濾器保留兩個布隆過濾器。例如,在一個實施例中,存在每個服務(wù)器S保留一 對布隆過濾器。布隆過濾器的目的是保持追蹤從服務(wù)器S重新定向到另一個服務(wù)器的重新 定向的流。根據(jù)一個方案,以循環(huán)方式交換布隆過濾器的狀態(tài),一個布隆過濾器的狀態(tài)稱為 "當(dāng)前"布隆過濾器,而另一個布隆過濾器的狀態(tài)稱為"下一個"布隆過濾器。當(dāng)服務(wù)器S停 機(jī)時,隨著重分配新的流,在當(dāng)前和下一個布隆過濾器中設(shè)置相同的位(或者將相同的位 添加到下一個布隆過濾器,用于屬于在當(dāng)前布隆過濾器中已經(jīng)標(biāo)記的流的分組),同時僅針 對當(dāng)前布隆過濾器應(yīng)用命中測試。當(dāng)服務(wù)器S開機(jī)時,當(dāng)前布隆過濾器僅用于測試分組是 否屬于重新定向的流;不將新的位添加到當(dāng)前布隆過濾器。只有在分組屬于進(jìn)行中的重新 定向的流時,才在下一個布隆過濾器中設(shè)置用于該分組的布隆過濾器位,如以下進(jìn)一步詳 細(xì)解釋的。
[0050] 最初,清除在第一當(dāng)前布隆過濾器和第一下一個布隆過濾器中的所有位,如圖5 中在時間h所示的。正是對于這些第一當(dāng)前和第一下一個布隆過濾器,隨著在第一時間 段中處理新的重分配流,將新設(shè)置位(以灰色示出)僅添加到第一當(dāng)前布隆過濾器。此時 (時間,在如由在時間h和t2之間的時間差所示的第二時間段中,將新的設(shè)置位添加到 第一當(dāng)前和第一下一個布隆過濾器。在一個實施例中,第一和第二(及隨后的)時間段相 同。以黑色顯示在第二時間段中已經(jīng)添加到第一當(dāng)前和第一下一個布隆過濾器中的位向量 的設(shè)置位。由于在比第一下一個布隆過濾器更長的時間段中將設(shè)置位添加到第一當(dāng)前布隆 過濾器中的位向量(在下一個和當(dāng)前布隆過濾器中的填充位在時間上偏移),所以在第一 當(dāng)前布隆過濾器(及隨后的當(dāng)前布隆過濾器)中的位向量會總是不如第一下一個布隆過濾 器(及隨后的下一個布隆過濾器)中的稀疏,除非在給定循環(huán)周期中沒有將設(shè)置位添加到 任一布隆過濾器。
[0051] 在此階段,如在時間t2+所示的(" + "指示剛剛在時間12之后),將第一下一個布 隆過濾器提生成為第二當(dāng)前布隆過濾器,而第一布隆過濾器再循環(huán)并再用作第二下一個布 隆過濾器。結(jié)合當(dāng)前布隆過濾器的再循環(huán),清除其位向量。如果在時間&和〖 2之間的時間 段中已經(jīng)將設(shè)置位添加到第一當(dāng)前和第一下一個布隆過濾器,那么當(dāng)?shù)谝划?dāng)前布隆過濾器 再循環(huán)時,新的當(dāng)前布隆過濾器位向量將包括設(shè)置的至少一些位,而新的下一個布隆過濾 器位向量將不包括設(shè)置位,如圖5所示。
[0052] 隨后在進(jìn)行中的基礎(chǔ)上重復(fù)前述布隆過濾器提升和再循環(huán)過程,當(dāng)前布隆過濾器 再循環(huán)并以下一個布隆過濾器代替。例如,借助在時間t3和t3+所示的布隆過濾器位向量, 在圖5中示出了從第二當(dāng)前與下一個布隆過濾器到第三當(dāng)前與下一個布隆過濾器的序列。
[0053] 使用重分配流列表和布隆過濾器的組合可以提供優(yōu)于單獨(dú)的重分配流列表或者 布隆過濾器的優(yōu)點(diǎn)。與借助布隆過濾器不同,由于重分配流列表中的每一個條目都對應(yīng)于 各自的重分配流,所以錯誤肯定是不可能的。如上所述,布隆過濾器為驗證條目是否是由布 隆過濾器位向量數(shù)據(jù)所標(biāo)記的條目集合的成員提供了極為有效的機(jī)制。通過組合兩個方 案,重分配流列表可以用于主要命中測試,如果空間可用則將FlowID或其他標(biāo)記添加到重 分配流列表,同時布隆過濾器可以用于溢出情況(例如,當(dāng)重分配流列表空間耗盡時)。與 布隆過濾器不同,當(dāng)條目不再相關(guān)時,例如當(dāng)流完成時,條目可以并且優(yōu)選地應(yīng)從重分配流 列表中去除。可以使用幾個公知的技術(shù)之一來確定流完成的指示,在一個實施例中,響應(yīng)于 確定已經(jīng)完成重分配流,從重分配流列表中去除用于該流的FlowID或其他標(biāo)記。
[0054] 還存在將經(jīng)由布隆過濾器標(biāo)記的現(xiàn)有重分配流"添加"到重分配流列表是有利的 情況。如果在用于不可用服務(wù)器的重分配流列表已滿的同時,重分配用于重分配流的第一 分組,則將用于流的相應(yīng)標(biāo)記(設(shè)置位)添加到與服務(wù)器相關(guān)聯(lián)的布隆過濾器(或者在使 用布隆過濾器再循環(huán)方案的情況下,添加到當(dāng)前和下一個布隆過濾器兩者)。如果在重分配 流列表中具有FlowID或其他標(biāo)記的重分配流完成,則可以從列表去除那些條目,從而釋放 空間以添加新的條目。如果是對應(yīng)于在布隆過濾器中標(biāo)記的、但不在重分配流列表中的現(xiàn) 有重分配流的分組,并且列表中有空間,則可以將相應(yīng)的標(biāo)記添加到重分配流列表,同時不 影響布隆過濾器位。最后,對應(yīng)于布隆過濾器中的流的位會老化移出,僅留下與重分配流列 表中的流相關(guān)的標(biāo)記。
[0055] 在一個實施例中,使用了以下技術(shù)。響應(yīng)于將用于流的分組哈希處理到服務(wù)器Si, 執(zhí)行以下操作。
[0056] 針對重分配流的列表檢查分組。如果它被列出,那么按照列表中所指示的重分配 流(或者如果你沒有標(biāo)記將特定流重新定向到的服務(wù)器的列表條目,則進(jìn)行重新哈希處 理)。
[0057] 否則(列表中沒有),就針對布隆過濾器檢查它。如果布隆過濾器指示不存在流, 那么將流轉(zhuǎn)發(fā)到服務(wù)器Si。
[0058] 否則(不在列表中,但在當(dāng)前布隆過濾器中),那么(不修改下一個布隆過濾器) 將用于該特定流的標(biāo)記(例如FlowID)添加到重分配流的列表。
[0059] 最后,如果你運(yùn)氣好,從Si重新定向的僅有的流會是幾個極其長時間的流,在再 循環(huán)布隆過濾器一次或多次后,布隆過濾器將保持全為零,因為識別所有長時間流的標(biāo)記 都將進(jìn)入到重分配流列表中。
[0060] 圖6是示出了使用架構(gòu)100并根據(jù)圖la-lf中所示實施例來促進(jìn)通用分組分配/ 重分配方案的操作和邏輯的流程圖600。首先,在塊602中,確定初始數(shù)量的可用服務(wù)器n。 如由開始和結(jié)束循環(huán)塊604和624所示的,在由負(fù)載拆分器接收并屬于要轉(zhuǎn)發(fā)到服務(wù)器S 之一的流的每一個分組上執(zhí)行在流程圖的外循環(huán)內(nèi)所示的操作和邏輯。在塊606中,將整 數(shù)計數(shù)i初始化為n;i用作整數(shù)變量,其借助由開始和結(jié)束循環(huán)塊610和616所示的內(nèi)循 環(huán)中的分配函數(shù)的每一次迭代而倒計數(shù)。
[0061] 在塊608中,執(zhí)行流分類操作以分類分組。流分類是本領(lǐng)域中公知的,可以使用各 種不同的流分類方案,包括上述的n元組哈希分類方案。在所示的實施例中,為每一個流確 定FlowID,并利用FlowID將分組與流相關(guān)聯(lián)。例如,可以以通過指針或其他類型的鏈接機(jī) 制將每一個分組鏈接到其FlowID的方式緩存分組。優(yōu)選地,用于得到FlowID的技術(shù)應(yīng)保 證每一個流都具有唯一的FlowID(在預(yù)期的操作參數(shù)內(nèi))。
[0062] 如上提及的,開始和結(jié)束循環(huán)塊610和616描繪了內(nèi)循環(huán),重復(fù)執(zhí)行該內(nèi)循環(huán),直 至循環(huán)退出到塊622。更具體地,在開始循環(huán)塊610中,將分組的FlowID用作函數(shù)輸入以識 別應(yīng)將分組分配到的服務(wù)器S,來實施使用當(dāng)前值的i路分配函數(shù)。在決策塊612中,確定 所識別的服務(wù)器是否是可用服務(wù)器。如果所識別的服務(wù)器不可用,則不能將分組轉(zhuǎn)發(fā)到該 服務(wù)器。因而,對決策塊612的回答是"否",邏輯前進(jìn)到塊614,其中,要么將FlowID添加 到用于所識別的不可用服務(wù)器的重分配流列表,要么將相應(yīng)的位添加到當(dāng)前和下一個布隆 過濾器。在一個實施例中,如果存在可用空間以添加新的條目,則將FlowID添加到不可用 服務(wù)器的重分配流列表,如果不存在可用空間,那么就將適用的位標(biāo)記(添加)到當(dāng)前和下 一個布隆過濾器。邏輯隨后前進(jìn)到結(jié)束循環(huán)塊616,其中,i遞減1,循環(huán)返回到開始循環(huán)塊 610,以使用分組FlowID作為函數(shù)輸入來執(zhí)行下一個i路分配函數(shù),其中,隨著每一次循環(huán) 迭代,i減小1。
[0063] 返回到?jīng)Q策塊612,如果所識別的服務(wù)器是可用服務(wù)器,則回答為"是",邏輯流 動到?jīng)Q策塊618,其中,確定分組是否對應(yīng)于重分配流。在一個實施例中,通過使用分組 的FlowID作為用于所識別的服務(wù)器的重分配流列表的查找以檢查FlowID是否在列表中, 來執(zhí)行這個確定。如果查找檢查結(jié)果得到未命中,那么就針對當(dāng)前布隆過濾器,通過使用 FlowID作為到命中測試的輸入來執(zhí)行第二檢查。如果重分配流列表檢查或者當(dāng)前布隆過 濾器檢查結(jié)果得到命中,則分組就屬于重分配流(對于決策塊618的"是"結(jié)果),邏輯前 進(jìn)到塊620,其中,如果FlowID在重分配流列表中,則更新用于FlowID的時間戳以反映當(dāng) 前時間(時間戳表示重分配流的最近的分組),或者,如果不在列表中,則將從FlowID得到 的相應(yīng)位添加到用于下一個布隆過濾器的位向量數(shù)據(jù);無需將這些位添加到當(dāng)前布隆過濾 器,因為以前在塊614中為流中較早的分組已經(jīng)添加了它們。邏輯隨后前進(jìn)到結(jié)束循環(huán)塊 616,使得i遞減1,且在開始循環(huán)塊610開始循環(huán)的下一迭代。
[0064] 這個循環(huán)迭代繼續(xù),直至由i路分配函數(shù)所識別的服務(wù)器是沒有為其重分配分組 的流的可用服務(wù)器,結(jié)果得到在決策塊612的"是"和在決策塊618的"否"。這導(dǎo)致邏輯退 出循環(huán),并前進(jìn)到塊622,其中,將分組轉(zhuǎn)發(fā)到所識別的服務(wù)器。這完成了分組的處理,并且 邏輯循環(huán)從結(jié)束循環(huán)塊624返回到開始循環(huán)塊604,以開始處理由負(fù)載拆分器接收到的下 一分組。
[0065] 在一個實施例中,在周期性基礎(chǔ)上檢查用于重分配流列表中的FlowID的時間戳, 以確定在當(dāng)前時間與FlowID時間戳之間的差是否超過某一預(yù)定值。這個時間差表示自接 收到給定重分配流的最后分組以來的時間;超過預(yù)定值表示完成了流。結(jié)果,從用于適用服 務(wù)器的重分配流列表去除FlowID。
[0066] 圖7顯示了示例性負(fù)載拆分器700的示意性框圖架構(gòu),其可以被配置為實施本文 公開的實施例的方案。負(fù)載拆分器700包括多個網(wǎng)絡(luò)端口 702,每一個都包括物理(PHY)層 塊704、出口緩沖器E和入口緩沖器I。每一個網(wǎng)絡(luò)端口 702還可以包括其他組件,它們是 網(wǎng)絡(luò)【技術(shù)領(lǐng)域】中技術(shù)人員所公知的,為了簡單和清楚而沒有示出這些組件。多個網(wǎng)絡(luò)端口 702的每一個都包括標(biāo)記為U(上游)、D(下游)或M(管理)的塊。當(dāng)部署并運(yùn)行于負(fù)載拆 分器位于網(wǎng)絡(luò)705與網(wǎng)絡(luò)服務(wù)器層之間的系統(tǒng)中時,全部或部分上游端口將連接到服務(wù)器 S,一個或多個下游端口將連接到網(wǎng)絡(luò)705。在另一系統(tǒng)環(huán)境中(未示出),負(fù)載拆分器700 將在不同服務(wù)器層之間實施,例如在網(wǎng)絡(luò)服務(wù)器層與應(yīng)用服務(wù)器層之間。因此,上游端口會 連接到應(yīng)用服務(wù)器層中的服務(wù)器,而下游端口會連接到網(wǎng)絡(luò)服務(wù)器層中的服務(wù)器。
[0067] 管理端口通??梢杂糜诠芾淼哪康?,例如從管理計算機(jī)706等將軟件下載到負(fù)載 拆分器,配置負(fù)載拆分器,從負(fù)載拆分器接收數(shù)據(jù),等等??蛇x地,可以經(jīng)由上游端口或下游 端口中的一個傳送管理操作。在一些實施例中,管理端口(或另一端口,未示出)可以耦合 到另一負(fù)載拆分器L,實現(xiàn)多個負(fù)載拆分器共享信息,例如關(guān)于重分配流的信息、布隆過濾 器數(shù)據(jù)、統(tǒng)計數(shù)據(jù)等。注意,由于用于布隆過濾器的位向量可以作為整數(shù)傳送到另一負(fù)載拆 分器,所以用于在負(fù)載拆分器之間共享布隆過濾器數(shù)據(jù)的開銷極低。
[0068] 負(fù)載拆分器700進(jìn)一步包括主緩沖器708、存儲器710、存儲器控制器712、指令存 儲器714、互連716和處理器718。出口緩沖器E和入口緩沖器I中的每一個都可操作地耦 合到主緩沖器708,它們可以實施為存儲器710的部分,或者可以單獨(dú)實施。存儲器710包 括一類動態(tài)隨機(jī)存取存儲器(DRAM),在所示實施例中經(jīng)由存儲器控制器712進(jìn)行訪問。可 選地,處理器718可以具有一個或多個集成的存儲器控制器或者代理,其被配置為支持對 存儲器710的訪問。在運(yùn)行時間操作期間,出于多個目的,分配存儲器710的地址空間內(nèi)的 存儲器的塊,包括儲存重分配流列表720、布隆過濾器722和一個或多個應(yīng)用,如由應(yīng)用空 間724所示的。對應(yīng)于服務(wù)器可用性歷史725的數(shù)據(jù)也可存儲在存儲器710中,如果此類 數(shù)據(jù)被追蹤的話。
[0069] 處理器718通??梢园ㄍㄓ锰幚砥?,包括一個或多個核心726,或者專用處理 器,例如網(wǎng)絡(luò)處理單元(NPU),包括諸如核心、微引擎等的多個處理元件。處理器718還可以 包括哈希單元728,如圖所示。在運(yùn)行時間操作期間,將指令從指令存儲器714載入應(yīng)用空 間724,或者直接載入與核心或微引擎726相關(guān)聯(lián)的高速緩沖存儲器級,并在核心或微引擎 上執(zhí)行以實現(xiàn)為其配置指令的操作。通過示例而非限制,將指令存儲器714示出為存儲用 于多個模塊的指令,包括分組識別/流分類模塊730、分配邏輯732、統(tǒng)計引擎734和網(wǎng)絡(luò)堆 棧736。公知的,負(fù)載拆分器等通??梢园ㄆ渌噶?,以實現(xiàn)通常由負(fù)載拆分器執(zhí)行的其 他操作;為了清楚,沒有顯示這些指令。
[0070] 分組識別/流分類模塊730包括被配置為識別和/或分類從網(wǎng)絡(luò)705接收到的 輸入分組的指令。例如,如上所述,基于在分組的報頭字段中的信息,可以使給定分組與 FlowID相關(guān)聯(lián)。流分類和/或分配函數(shù)可以采用哈希單元728,它是基于硬件的組件,被配 置為使用一個或多個哈希算法執(zhí)行哈希運(yùn)算??蛇x地,可以經(jīng)由由處理器718執(zhí)行軟件指 令,或者經(jīng)由分離的基于硬件的組件(未示出)來實施全部或部分哈希算法。
[0071] 分配邏輯732包括被配置為實施本文所述的分組分配和重分配操作的指令。在一 些實施例中,這個模塊傳送用于分組的FlowID,隨后使用諸如本文所述的哈希函數(shù)的可適 用的確定性分配函數(shù)將分組分配給適當(dāng)?shù)姆?wù)器S。分配邏輯還被配置為實現(xiàn)重分配流列 表720和布隆過濾器722。在一些實施例中,使用以上參考圖5所述的當(dāng)前/下一個布隆過 濾器再循環(huán)方案來實施布隆過濾器。
[0072] 統(tǒng)計引擎734包括被配置為實施統(tǒng)計運(yùn)算的指令,包括但不限于收集用于分組流 的統(tǒng)計信息,并計算由負(fù)載拆分器700使用的各種配置參數(shù)。例如,統(tǒng)計引擎734可以被配 置為響應(yīng)于相應(yīng)分組流數(shù)據(jù)的處理,動態(tài)重配置布隆過濾器再循環(huán)頻率。另外或者可選地, 統(tǒng)計引擎734可以被配置為從管理計算機(jī)706和/或從另一負(fù)載拆分器接收統(tǒng)計數(shù)據(jù)。此 夕卜,統(tǒng)計引擎734可以被配置為從一個或多個服務(wù)器S接收統(tǒng)計數(shù)據(jù)。例如,可以采用使用 專用邏輯端口的管理通道,以便于在負(fù)載拆分器700與服務(wù)器S之間的非業(yè)務(wù)數(shù)據(jù)的傳送。
[0073] 網(wǎng)絡(luò)堆棧736包括用于傳送源自負(fù)載拆分器700或者以負(fù)載拆分器700為目的地 的數(shù)據(jù)的指令。例如,這種傳送可以在負(fù)載拆分器700與管理計算機(jī)706、另一負(fù)載拆分器 L、和/或服務(wù)器S之間。在一些實例中,可以使用公知的TCP/IP網(wǎng)絡(luò)堆棧來實施這種傳送。 另外,可以使用其他公知的協(xié)議。
[0074] 在一個實施例中,指令存儲器714包括非易失性儲存設(shè)備,例如閃存或大容量儲 存設(shè)備(例如硬盤)。可任選地,用于一個或多個前述模塊的指令可以結(jié)合負(fù)載拆分器的初 始化而從管理計算機(jī)706或通過網(wǎng)絡(luò)705下載。另外,可以經(jīng)由管理端口或另一端口下載 對這些模塊的更新。
[0075] 除了經(jīng)由在通用或?qū)S锰幚砥魃蠄?zhí)行指令來實施操作以外,可以使用嵌入式邏輯 等來實施由本文所述實施例執(zhí)行的各種操作。此外,負(fù)載拆分器700可以采用多個處理器, 包括一個或多個通用處理器和專用處理器的組合。另外,一個或多個網(wǎng)絡(luò)端口 702可以采 用嵌入式邏輯,以執(zhí)行本文所述的一個或多個操作。例如,可以使用被配置為執(zhí)行分組識別 和/或流分類的高級單端口或多端口網(wǎng)絡(luò)接口控制器(NIC),以代替經(jīng)由在處理器718上執(zhí) 行指令而執(zhí)行的這些操作。
[0076] 根據(jù)本文公開的實施例的原理和教導(dǎo)的分配邏輯及相關(guān)聯(lián)操作的實現(xiàn)方式提供 了比當(dāng)前技術(shù)更顯著的優(yōu)勢。例如,根據(jù)在相同層中使用多個負(fù)載拆分器的系統(tǒng)架構(gòu),在其 中可以由兩個或更多個不同負(fù)載拆分器接收與相同流相關(guān)聯(lián)的分組,傳統(tǒng)方案要求相當(dāng)大 程度的流狀態(tài)信息在負(fù)載拆分器之間同步。這個流狀態(tài)信息通常包括與由負(fù)載拆分器處理 的每一個流相關(guān)的狀態(tài)信息。作為簡化示例,這種信息可以表述(大意是)屬于FlowID3 的分組要被輸送到ServerlDS5。盡管這個技術(shù)對于處理在連接到單一負(fù)載拆分器的上游 層中的拓?fù)渥兓m用,但它不能很好地縮放,因為相同的信息需要在其他負(fù)載拆分器可用, 以便那些負(fù)載拆分器獲知將屬于流的分組轉(zhuǎn)發(fā)到何處,所述流包括已經(jīng)或?qū)⒁闪硪回?fù)載 拆分器處理的分組。
[0077] 根據(jù)本文的實施例,由于考慮到系統(tǒng)拓?fù)渥兓?,結(jié)合適于分配函數(shù)的方案使用分 配函數(shù)來轉(zhuǎn)發(fā)分組,所以每一個負(fù)載拆分器都可以將分組轉(zhuǎn)發(fā)到適當(dāng)?shù)姆?wù)器,而無需共 享流狀態(tài)信息,或者甚至無需預(yù)先獲知這種流狀態(tài)信息。
[0078] 在圖If中示出了這個功能的示例,其將負(fù)載拆分器L1示為有故障且不可用于轉(zhuǎn) 發(fā)輸入分組。如由分組112a和118a所示的,與以前由負(fù)載拆分器L1在它成為不可用之前 處理的流相關(guān)聯(lián)的分組(例如,分組112和118)現(xiàn)在示出為由負(fù)載拆分器L2處理。由于 每一個負(fù)載拆分器L1和L2都使用相同的分配函數(shù)和邏輯,所以負(fù)載拆分器L2會將相同的 分組轉(zhuǎn)發(fā)到適當(dāng)?shù)姆?wù)器,其被指定為處理與分組相關(guān)聯(lián)的流。此外,在需要重分配的情況 下,兩個負(fù)載拆分器L1和L2會將對應(yīng)于相同流的分組重分配給相同的服務(wù)器。盡管未示 出,但負(fù)載拆分器L3也被配置為以類似的方式將分組轉(zhuǎn)發(fā)到適當(dāng)?shù)姆?wù)器。
[0079] 除了在負(fù)載拆分器上實現(xiàn)外,實施例的方案可以更普遍地在任意類型的網(wǎng)絡(luò)交換 或轉(zhuǎn)發(fā)元件上實施,其利用流分配和/或轉(zhuǎn)發(fā)分組,其中將與相同流相關(guān)聯(lián)的分組分配和/ 或轉(zhuǎn)發(fā)出相同的網(wǎng)絡(luò)端口,朝向相同的下一跳(如另一網(wǎng)絡(luò)元件)或者到相同的端點(diǎn)(例 如,服務(wù)器、計算機(jī)等)。
[0080] 除了使用物理負(fù)載拆分器或者其他物理交換元件實現(xiàn)外,該技術(shù)也可以部署在虛 擬環(huán)境中,例如通常用于數(shù)據(jù)中心和服務(wù)器群中的那些環(huán)境。例如,服務(wù)器平臺可以被配置 為從網(wǎng)絡(luò)接收分組,并將那些分組分配給由服務(wù)器平臺托管的多個虛擬服務(wù)器實例。根據(jù) 此類實現(xiàn)方式,交換元件以軟件實現(xiàn)為虛擬交換機(jī)、負(fù)載拆分器、負(fù)載平衡器等。
[0081] 盡管參考特定實現(xiàn)方式描述了一些實施例,但根據(jù)一些實施例,其他實現(xiàn)方式也 是可能的。另外,無需以附圖所示和本文所述的特定方式布置所示和/或所述的元件或其 他特征的布置和/或順序。根據(jù)一些實施例,許多其他布置是可能的。
[0082] 在附圖中所示的每一個系統(tǒng)中,在一些情況下,元件中的每一個都可以具有相同 的參考標(biāo)記或不同的參考標(biāo)記,以暗示所示元件可以是不同的和/或相似的。但元件可以 足夠靈活以具有不同實現(xiàn)方式,并與本文所示或所述的一些或全部系統(tǒng)工作。附圖中所示 的各種元件可以是相同的或不同的。將哪一個稱為第一元件和將哪一個稱為第二元件是任 意的。
[0083] 在說明書和權(quán)利要求書中,可以使用術(shù)語"耦合"和"連接"及其派生詞。應(yīng)理解, 這些術(shù)語并非旨在作為彼此的同義詞。相反,在特定實施例中,"連接"可以用于指示兩個或 更多個元件彼此直接物理或電氣接觸。"耦合"可以表示兩個或更多個元件直接物理或電氣 接觸。但"耦合"也可以表示兩個或更多個元件彼此沒有直接接觸,但仍彼此協(xié)作或相互作 用。
[0084] 實施例是本發(fā)明的實現(xiàn)方式或示例。說明書中對"實施例"、"一個實施例"、"一些 實施例"或者"其他實施例"的提及表示結(jié)合實施例說明的特定特征、結(jié)構(gòu)或特性包括在本 發(fā)明的至少一些實施例中,但不一定是所有實施例中。"實施例"、"一個實施例"或"一些實 施例"的多次出現(xiàn)不一定全都指代相同的實施例。
[0085] 本文所述和所示的全部組件、特征、結(jié)構(gòu)、特性等并非都需要包括在特定的一個或 多個實施例中。例如,如果說明書表述"可以"、"或許"、"能夠"或者"可能"包括了組件、特 征、結(jié)構(gòu)或特性,則該特定組件、特征、結(jié)構(gòu)或特性不是必需被包括。如果說明書或權(quán)利要求 書提及"一(a)"或"一(an)"元件,其并非表示僅有一個元件。如果說明書或權(quán)利要求書 提及"另外的"元件,其不排除存在多于一個另外的元件。
[0086] 如上所述,通過相應(yīng)的軟件和/或固件組件和應(yīng)用可以便于本文實施例的多個方 案,例如由在負(fù)載拆分器上的處理器或NPU執(zhí)行的軟件或固件。因而,本發(fā)明的實施例可 以用作或者支持在某一形式的處理核心(例如處理器或NPU,或者多核處理器的一個或多 個核心)上執(zhí)行的軟件程序、軟件模塊、固件、和/或分布式軟件、運(yùn)行在處理器或核心上的 或者在機(jī)器可讀介質(zhì)上或內(nèi)實施或?qū)崿F(xiàn)的虛擬機(jī)。機(jī)器可讀介質(zhì)包括用于存儲或發(fā)送以機(jī) 器(例如計算機(jī))可讀形式的信息的任何機(jī)制。例如,機(jī)器可讀介質(zhì)可以包括只讀存儲器 (ROM);隨機(jī)存取存儲器(RAM);磁盤儲存介質(zhì);光儲存介質(zhì);和閃存設(shè)備等。
[0087] 本發(fā)明的所示實施例的以上說明,包括在摘要中所述的,并非旨在是窮舉性的,或 者將本發(fā)明局限于公開的準(zhǔn)確形式。盡管在此出于示例性目的說明了本發(fā)明的特定實施例 和示例,但如相關(guān)領(lǐng)域技術(shù)人員會認(rèn)識到的,在本發(fā)明的范圍內(nèi)的多個等效修改是可能的。 [0088] 按照以上的詳細(xì)說明可以做出這些修改。用于以下權(quán)利要求書中的詞語不應(yīng)解釋 為將本發(fā)明局限于在說明書和附圖中公開的特定實施例。相反,本發(fā)明的范圍由以下權(quán)利 要求書整體上確定,其應(yīng)按照權(quán)利要求解釋的既定原則來解釋。
【權(quán)利要求】
1. 一種由負(fù)載拆分器實施的方法,所述負(fù)載拆分器被配置為接收輸入分組并將所述分 組分配給耦合到所述負(fù)載拆分器的多個服務(wù)器,所述方法包括: 檢測到η個服務(wù)器能用于接收分組; 采用η路分配函數(shù)來將分組分配給所述η個服務(wù)器,其中,所述η路分配函數(shù)被配置為 使得將屬于相同流的分組分配給相同的服務(wù)器; 檢測到所述η個服務(wù)器的第一服務(wù)器不能用于接收分組,留下η-1個能用服務(wù)器; 在存在η-1個能用服務(wù)器時, 響應(yīng)于接收到第一分組, 將所述第一分組分類以將所述第一分組與流相關(guān)聯(lián);以及 在所述分組上執(zhí)行所述η路分配函數(shù); 如果所述η路分配函數(shù)的結(jié)果指示將所述第一分組分配給能用服務(wù)器,則將所述第一 分組轉(zhuǎn)發(fā)到所述能用服務(wù)器; 如果所述η路分配函數(shù)的結(jié)果指示將所述第一分組分配給第一不能用服務(wù)器,則 采用(η-1)路分配函數(shù)來確定能用服務(wù)器,以將所述第一分組重分配到所述服務(wù)器, 并將所述第一分組轉(zhuǎn)發(fā)到所述服務(wù)器; 存儲指示與用于所述第一分組的流相關(guān)聯(lián)的分組屬于重分配流的標(biāo)記;以及 當(dāng)能用服務(wù)器的數(shù)量返回到η個服務(wù)器時, 將隨后接收到的與所述重分配流相關(guān)聯(lián)的分組轉(zhuǎn)發(fā)到將所述第一分組重分配到的相 同的服務(wù)器。
2. 根據(jù)權(quán)利要求1所述的方法,進(jìn)一步包括: 響應(yīng)于接收到分組, 初始化整數(shù)i = η ; (a) 執(zhí)行i路分配函數(shù),以識別將所述分組分配或重分配到的服務(wù)器; (b) 如果所述i路分配函數(shù)的結(jié)果識別出能用服務(wù)器,則確定所述分組是否與用于所 述能用服務(wù)器的重分配流相關(guān)聯(lián);及 i. 如果所述分組與用于所述能用服務(wù)器的重分配流相關(guān)聯(lián),則將i遞減1,并返回到 (a);否則, ii. 將所述分組轉(zhuǎn)發(fā)到所述能用服務(wù)器; (c) 如果所述i路分配函數(shù)的結(jié)果識別出不能用服務(wù)器,則存儲指示屬于與所述分組 相關(guān)聯(lián)的流的分組屬于重分配流的標(biāo)記,將i遞減1,并返回到(a);及 (d) 在適用情況下,重復(fù)操作(a)、(b)、(b) i和(c),直至在操作(b)中所述i路分配函 數(shù)識別出不具有與所述分組相關(guān)聯(lián)的重分配流的能用服務(wù)器。
3. 根據(jù)權(quán)利要求2所述的方法,進(jìn)一步包括: 對于每個接收到的分組,執(zhí)行流分類操作,以識別與所述分組相關(guān)聯(lián)的流,所述流具有 流標(biāo)識符(FlowID);以及 采用所述FIowID作為到所述i路分配函數(shù)的輸入。
4. 根據(jù)權(quán)利要求3所述的方法,進(jìn)一步包括:采用用于被重分配的流的FIowID作為標(biāo) 記,所述標(biāo)記指示與那些流相關(guān)聯(lián)的分組是重分配流。
5. 根據(jù)權(quán)利要求2-4中任意一項所述的方法,進(jìn)一步包括: 采用用于向其重分配流的服務(wù)器的重分配流列表,其中, 在操作(C)中,將包含標(biāo)記的重分配流條目添加到用于所述服務(wù)器的重分配流列表, 所述標(biāo)記指示將與所述流相關(guān)聯(lián)的分組被重分配給另一服務(wù)器; 在操作(b)中,通過確定與分組相關(guān)聯(lián)的流,并針對用于所述服務(wù)器的重分配流列表 執(zhí)行查找,以確定是否存在與和分組相關(guān)聯(lián)的流匹配的條目,來確定所述分組是否與用于 所述能用服務(wù)器的重分配流相關(guān)聯(lián);以及 在操作(b)i中,更新用于對應(yīng)于與所述分組相關(guān)聯(lián)的重分配流的重分配流條目的時 間戳。
6. 根據(jù)權(quán)利要求2-5中任意一項所述的方法,進(jìn)一步包括: 采用一對布隆過濾器來存儲位向量數(shù)據(jù),所述位向量數(shù)據(jù)被配置為促進(jìn)確認(rèn)流是否包 括用于與布隆過濾器對相關(guān)聯(lián)的服務(wù)器的重分配流; 通過用下一個布隆過濾器代替當(dāng)前布隆過濾器來周期性地再循環(huán)當(dāng)前布隆過濾器,其 中,所述下一個布隆過濾器成為新的當(dāng)前布隆過濾器,清除所述當(dāng)前布隆過濾器中的位向 量數(shù)據(jù),并且所述當(dāng)前布隆過濾器成為新的下一個布隆過濾器; 在操作(c)中,在與所述不能用服務(wù)器相關(guān)聯(lián)的所述當(dāng)前布隆過濾器和所述下一個布 隆過濾器中設(shè)置位,指示將與所述流相關(guān)聯(lián)的分組重分配到另一服務(wù)器; 在操作(b)中,通過確定與所述分組相關(guān)聯(lián)的流,并針對用于所述服務(wù)器的所述當(dāng)前 布隆過濾器執(zhí)行查找,以確定是否存在與和所述分組相關(guān)聯(lián)的流匹配的條目,來確定所述 分組是否與用于所述能用服務(wù)器的重分配流相關(guān)聯(lián);以及 在操作(b)i中,在所述下一個布隆過濾器中設(shè)置位,指示將與所述流相關(guān)聯(lián)的分組重 分配到另一服務(wù)器。
7. 根據(jù)前述權(quán)利要求中任意一項所述的方法,進(jìn)一步包括: 在所述服務(wù)器的數(shù)量小于η個服務(wù)器時, 保留包含數(shù)據(jù)的重分配流標(biāo)記,所述數(shù)據(jù)為當(dāng)前或者過去不能用的每一個服務(wù)器識別 哪些流現(xiàn)在或者過去被從所述服務(wù)器重分配到另一服務(wù)器, 當(dāng)能用服務(wù)器的數(shù)量返回到η個服務(wù)器時, 響應(yīng)于接收到下一分組, 對所述下一分組進(jìn)行分類,以將所述下一分組與流相關(guān)聯(lián),并在所述分組上執(zhí)行η路 分配函數(shù); 檢查用于由所述η路分配函數(shù)識別的服務(wù)器的重分配流標(biāo)記;以及 如果與所述下一分組相關(guān)聯(lián)的流是由所述重分配流標(biāo)記識別的流,則將所述分組重定 向到與被重新分配的流相關(guān)聯(lián)的服務(wù)器分組。
8. 根據(jù)前述權(quán)利要求中任意一項所述的方法,進(jìn)一步包括:保留包含數(shù)據(jù)的至少一個 重分配流列表,所述數(shù)據(jù)為當(dāng)前或者過去不能用的每一個服務(wù)器識別哪些流現(xiàn)在或者過去 被從所述服務(wù)器重分配到另一服務(wù)器。
9. 根據(jù)前述權(quán)利要求中任意一項所述的方法,進(jìn)一步包括: 采用至少一對布隆過濾器來存儲位向量數(shù)據(jù),所述位向量數(shù)據(jù)被配置為促進(jìn)已經(jīng)被重 分配的流的識別; 對于每一對布隆過濾器, 以時間上偏移的方式填充所述布隆過濾器中的所述位向量數(shù)據(jù),以使得所述布隆過濾 器中的一個具有比另一個更多的位設(shè)置,將具有更多位設(shè)置的布隆過濾器指定為當(dāng)前布隆 過濾器,并將另一個布隆過濾器指定為下一個布隆過濾器; 周期性將所述下一個布隆過濾器提升成為新的當(dāng)前布隆過濾器,并再循環(huán)所述當(dāng)前布 隆過濾器,以用作新的下一個布隆過濾器,其中,再循環(huán)當(dāng)前布隆過濾器向量清除其位向量 數(shù)據(jù);以及 針對作為當(dāng)前布隆過濾器的布隆過濾器執(zhí)行流識別命中測試。
10. 根據(jù)前述權(quán)利要求中任意一項所述的方法,進(jìn)一步包括: 為多個服務(wù)器的每一個服務(wù)器關(guān)聯(lián)一對布隆過濾器; 對于每一對布隆過濾器, 指定一個布隆過濾器的狀態(tài)為當(dāng)前布隆過濾器,另一個布隆過濾器的狀態(tài)為下一個布 隆過濾器,其中,每一個布隆過濾器的狀態(tài)在當(dāng)前布隆過濾器狀態(tài)與下一個布隆過濾器狀 態(tài)之間周期性循環(huán), 當(dāng)服務(wù)器在第一時間段中不能用時,響應(yīng)于檢測到被從與布隆過濾器對相關(guān)聯(lián)的服務(wù) 器重分配出去的流,在所述第一時間段中初始僅以位向量數(shù)據(jù)填充第一當(dāng)前布隆過濾器; (a) 在下一時間段中,響應(yīng)于在所述下一時間段中檢測到被從所述服務(wù)器重分配出去 的流,以位向量數(shù)據(jù)填充所述第一當(dāng)前布隆過濾器和第一下一個布隆過濾器; (b) 在下一時間段完成后,將所述第一下一個布隆過濾器提升為新的當(dāng)前布隆過濾器, 并再循環(huán)所述第一當(dāng)前布隆過濾器,以用作新的下一個布隆過濾器,其中,當(dāng)再循環(huán)布隆過 濾器時,清除用于所述布隆過濾器的位向量數(shù)據(jù);以及 在持續(xù)的基礎(chǔ)上重復(fù)操作(a)和(b)。
11. 根據(jù)前述權(quán)利要求中任意一項所述的方法,進(jìn)一步包括: 保留包含數(shù)據(jù)的至少一個重分配流列表,所述數(shù)據(jù)為當(dāng)前或者過去不能用的每一個服 務(wù)器識別哪些流的至少一部分現(xiàn)在或者過去被從所述服務(wù)器重分配到另一服務(wù)器;以及 為所述當(dāng)前或者過去不能用的每一個服務(wù)器采用至少一個布隆過濾器來存儲位向量 數(shù)據(jù),所述位向量數(shù)據(jù)被配置為促進(jìn)確認(rèn)流是否包括當(dāng)前或過去被從與包含所述位向量數(shù) 據(jù)的布隆過濾器相關(guān)聯(lián)的服務(wù)器重分配出去的流。
12. -種裝置,包括: 多個上游網(wǎng)絡(luò)端口; 至少一個下游網(wǎng)絡(luò)端口; 其中,所述裝置被配置為安裝在系統(tǒng)中,并實施為負(fù)載拆分器,其將在所述至少一個下 游端口處接收到的分組分配給與所述多個上游端口通信耦合的多個服務(wù)器,其中,服務(wù)器 的初始數(shù)量是n,當(dāng)被安裝在所述系統(tǒng)中并運(yùn)行時,所述裝置進(jìn)一步被配置為執(zhí)行包括以下 的操作, 響應(yīng)于接收到分組, 初始化整數(shù)i = η ; 識別與所述分組相關(guān)聯(lián)的流; (a) 執(zhí)行i路分配函數(shù),以識別將所述分組分配或重分配到的服務(wù)器; (b) 如果所述i路分配函數(shù)的結(jié)果識別出能用服務(wù)器,則確定所述分組是否與用于所 述能用服務(wù)器的重分配流相關(guān)聯(lián);以及 i. 如果所述分組與用于所述能用服務(wù)器的重分配流相關(guān)聯(lián),則將i遞減1,并返回到 (a);否則, ii. 將所述分組轉(zhuǎn)發(fā)到所述能用服務(wù)器; (c) 如果所述i路分配函數(shù)的結(jié)果識別出不能用服務(wù)器,則存儲指示屬于與所述分組 相關(guān)聯(lián)的流的分組屬于重分配流的標(biāo)記,將i遞減1,并返回到(a);以及 (d) 在適用情況下,重復(fù)操作(a)、(b)、(b) i和(c),直至在操作(b)中所述i路分配函 數(shù)識別出不具有與所述分組相關(guān)聯(lián)的重分配流的能用服務(wù)器,導(dǎo)致在(b)ii中將所述分組 轉(zhuǎn)發(fā)到所述能用服務(wù)器。
13. 根據(jù)權(quán)利要求12所述的裝置,其中,當(dāng)被安裝在所述系統(tǒng)中并運(yùn)行時,所述裝置進(jìn) 一步被配置為執(zhí)行包括以下的操作: 對于每個接收到的分組,執(zhí)行流分類操作,以識別與所述分組相關(guān)聯(lián)的流,所述流具有 流標(biāo)識符(FlowID); 采用所述FIowID作為到所述η路和(η-I)路分配函數(shù)的輸入;以及 使用用于重分配流的FlowID,追蹤與被重分配的分組相關(guān)聯(lián)的重分配流。
14. 根據(jù)權(quán)利要求13所述的裝置,其中,當(dāng)被安裝在所述系統(tǒng)中并運(yùn)行時,所述裝置進(jìn) 一步被配置為:使用包含數(shù)據(jù)的至少一個重分配流列表追蹤已經(jīng)被重分配的流,所述數(shù)據(jù) 為當(dāng)前或者過去不能用的每一個服務(wù)器識別當(dāng)所述服務(wù)器現(xiàn)在或過去不能用時哪些流現(xiàn) 在或者過去被從所述服務(wù)器重分配到另一服務(wù)器。
15. 根據(jù)權(quán)利要求14所述的裝置,其中,當(dāng)被安裝在所述系統(tǒng)中并運(yùn)行時,所述裝置進(jìn) 一步被配置為: 在操作(c)中,將包含標(biāo)記的重分配流條目添加到用于所述服務(wù)器的重分配流列表, 所述標(biāo)記指示將與所述流相關(guān)聯(lián)的分組重分配給另一服務(wù)器; 在操作(b)中,通過確定與分組相關(guān)聯(lián)的流,并針對用于所述服務(wù)器的重分配流列表 執(zhí)行查找,以確定是否存在與和分組相關(guān)聯(lián)的流匹配的條目,來確定所述分組是否與用于 所述能用服務(wù)器的重分配流相關(guān)聯(lián); 在操作(b)i中,更新用于對應(yīng)于與所述分組相關(guān)聯(lián)的重分配流的重分配流條目的時 間戳;以及 如果在重分配流條目的時間戳與當(dāng)前時間之間的時間差超過預(yù)定值,則去除所述重分 配流條目。
16. 根據(jù)權(quán)利要求12-15任意一項所述的裝置,其中,當(dāng)被安裝在所述系統(tǒng)中并運(yùn)行 時,所述裝置進(jìn)一步被配置為執(zhí)行包括以下的操作: 為操作性地耦合到所述上游網(wǎng)絡(luò)端口的多個服務(wù)器中的每一個服務(wù)器關(guān)聯(lián)一對布隆 過濾器; 對于每一對布隆過濾器, 指定一個布隆過濾器的狀態(tài)為當(dāng)前布隆過濾器,另一個布隆過濾器的狀態(tài)為下一個布 隆過濾器,其中,每一個布隆過濾器的狀態(tài)在所述當(dāng)前布隆過濾器狀態(tài)與所述下一個布隆 過濾器狀態(tài)之間周期性循環(huán), 在服務(wù)器在第一時間段中不能用時,響應(yīng)于檢測到被從與布隆過濾器對相關(guān)聯(lián)的服務(wù) 器重分配出去的流,在所述第一時間段中初始僅以位向量數(shù)據(jù)填充第一當(dāng)前布隆過濾器; (a) 在下一時間段中,響應(yīng)于在所述下一時間段中檢測到被從所述服務(wù)器重分配出去 的流,以位向量數(shù)據(jù)填充所述第一當(dāng)前布隆過濾器和第一下一個布隆過濾器; (b) 在下一時間段完成后,將所述第一下一個布隆過濾器提升為新的當(dāng)前布隆過濾器, 并再循環(huán)所述第一當(dāng)前布隆過濾器,以用作新的下一個布隆過濾器,其中,當(dāng)再循環(huán)布隆過 濾器時,清除用于所述布隆過濾器的位向量數(shù)據(jù);以及 在持續(xù)的基礎(chǔ)上重復(fù)操作(a)和(b)。
17. 根據(jù)權(quán)利要求16所述的裝置,其中,當(dāng)被安裝在所述系統(tǒng)中并運(yùn)行時,所述裝置進(jìn) 一步被配置為執(zhí)行包括以下的操作: 在操作(c)中,在與所述不能用服務(wù)器相關(guān)聯(lián)的所述當(dāng)前布隆過濾器和所述下一個布 隆過濾器中設(shè)置位,指示將與所述流相關(guān)聯(lián)的分組重分配到另一服務(wù)器; 在操作(b)中,通過針對用于所述服務(wù)器的所述當(dāng)前布隆過濾器執(zhí)行查找,以確定是 否存在與和所述分組相關(guān)聯(lián)的流匹配的條目,來確定所述分組是否與用于所述能用服務(wù)器 的重分配流相關(guān)聯(lián);以及 在操作(b)i中,在所述下一個布隆過濾器中設(shè)置位,指示將與所述流相關(guān)聯(lián)的分組重 分配到另一服務(wù)器。
18. 根據(jù)權(quán)利要求16所述的裝置,其中,當(dāng)被安裝在所述系統(tǒng)中并運(yùn)行時,所述裝置進(jìn) 一步被配置為: 保留包含數(shù)據(jù)的至少一個重分配流列表,所述數(shù)據(jù)為當(dāng)前或者過去不能用的每一個服 務(wù)器識別哪些流的至少一部分現(xiàn)在或者過去被從所述服務(wù)器重分配到另一服務(wù)器; 響應(yīng)于接收到流的第一分組, 如果用于分組的所述i路重分配函數(shù)識別出不能用的服務(wù)器,則確定在用于所述不能 用服務(wù)器的重分配流列表中是否存在能用于增加新的重分配流條目的任何空間;以及 如果存在能用的空間,則將對應(yīng)于用于所述第一分組的流的新的重分配流條目增加到 所述重分配流列表;否則 將位向量數(shù)據(jù)增加到與所述不能用服務(wù)器相關(guān)聯(lián)的所述當(dāng)前和下一個布隆過濾器,以 指示所述流是重分配流。
19. 根據(jù)權(quán)利要求12-18中任意一項所述的裝置,其中,所述裝置進(jìn)一步包括: 處理器,具有一個或多個處理元件; 至少一個存儲器,操作性地耦合到所述處理器; 儲存設(shè)備,所述儲存設(shè)備具有存儲于其中的指令,所述指令被配置為在所述處理器上 執(zhí)行,以使得當(dāng)所述裝置被安裝在所述系統(tǒng)中并運(yùn)行時,執(zhí)行所述的操作。
20. 根據(jù)權(quán)利要求13所述的裝置,其中,所述裝置進(jìn)一步包括管理網(wǎng)絡(luò)端口,當(dāng)被安裝 在采用具有類似配置的第二裝置的系統(tǒng)中時,所述裝置被配置為與所述第二裝置共享關(guān)于 重分配流的信息。
21. -種有形非暫時性機(jī)器可讀介質(zhì),具有存儲于其上的指令,所述指令被配置為由負(fù) 載拆分器上的至少一個處理元件執(zhí)行,以使得當(dāng)負(fù)載拆分器被安裝在系統(tǒng)中并運(yùn)行時,所 述負(fù)載拆分器能夠?qū)崿F(xiàn)分組分配和重分配操作,所述分組分配和重分配操作包括: 響應(yīng)于接收到分組, 初始化整數(shù)i = η ; 識別與所述分組相關(guān)聯(lián)的流; (a) 執(zhí)行i路分配函數(shù),以識別將所述分組分配或重分配到的服務(wù)器; (b) 如果所述i路分配函數(shù)的結(jié)果識別出能用服務(wù)器,則確定所述分組是否與用于所 述能用服務(wù)器的重分配流相關(guān)聯(lián);以及 i. 如果所述分組與用于所述能用服務(wù)器的重分配流相關(guān)聯(lián),則將i遞減1,返回到(a); 否則, ii. 將所述分組轉(zhuǎn)發(fā)到所述能用服務(wù)器; (c) 如果所述i路分配函數(shù)的結(jié)果識別出不能用服務(wù)器,則存儲指示屬于與所述分組 相關(guān)聯(lián)的流的分組屬于重分配流的標(biāo)記,將i遞減1,并返回到(a);以及 (d) 在適用情況下,重復(fù)操作(a)、(b)、(b) i和(c),直至在操作(b)中所述i路分配函 數(shù)識別出不具有與所述分組相關(guān)聯(lián)的重分配流的能用服務(wù)器,導(dǎo)致在(b)ii中將所述分組 轉(zhuǎn)發(fā)到所述能用服務(wù)器。
22. 根據(jù)權(quán)利要求21所述的有形非暫時性機(jī)器可讀介質(zhì),其中,所述指令被配置為執(zhí) 行進(jìn)一步的操作,在執(zhí)行時,包括: 對于每個接收到的分組,執(zhí)行流分類操作,以識別與所述分組相關(guān)聯(lián)的流,所述流具有 流標(biāo)識符(FlowID),或者取回通過先前的流分配操作產(chǎn)生的與所述分組相關(guān)聯(lián)的FIowID ; 采用所述FIowID作為到所述i路分配函數(shù)的輸入;以及 使用用于重分配流的FlowID,追蹤與被重分配的分組相關(guān)聯(lián)的重分配流。
23. 根據(jù)權(quán)利要求21或22所述的有形非暫時性機(jī)器可讀介質(zhì),其中,所述指令被配置 為執(zhí)行進(jìn)一步的操作,在執(zhí)行時,包括: 使用包含數(shù)據(jù)的至少一個重分配流列表追蹤已經(jīng)被重分配的流,所述數(shù)據(jù)為當(dāng)前或者 過去不能用的每一個服務(wù)器識別當(dāng)所述服務(wù)器現(xiàn)在或過去不能用時現(xiàn)在或過去被重分配 的流; 在操作(c)中,將包含標(biāo)記的重分配流條目添加到用于所述服務(wù)器的重分配流列表, 所述標(biāo)記指示將與所述流相關(guān)聯(lián)的分組重分配給另一服務(wù)器; 在操作(b)中,通過確定與分組相關(guān)聯(lián)的流,并針對用于所述服務(wù)器的重分配流列表 執(zhí)行查找,以確定是否存在與和分組相關(guān)聯(lián)的流匹配的條目,來確定所述分組是否與用于 所述能用服務(wù)器的重分配流相關(guān)聯(lián); 在操作(b)i中,更新用于對應(yīng)于與所述分組相關(guān)聯(lián)的重分配流的重分配流條目的時 間戳;以及 如果在重分配流條目的時間戳與當(dāng)前時間之間的時間差超過預(yù)定值,則去除所述重分 配流條目。
24. 根據(jù)權(quán)利要求21-23中任意一項所述的有形非暫時性機(jī)器可讀介質(zhì),其中,所述指 令被配置為執(zhí)行進(jìn)一步的操作,在執(zhí)行時,包括: 為操作性地耦合到上游網(wǎng)絡(luò)端口的多個服務(wù)器中的每一個服務(wù)器關(guān)聯(lián)一對布隆過濾 器; 對于每一對布隆過濾器, 指定一個布隆過濾器的狀態(tài)為當(dāng)前布隆過濾器,另一個布隆過濾器的狀態(tài)為下一個布 隆過濾器,其中,每一個布隆過濾器的狀態(tài)在所述當(dāng)前布隆過濾器狀態(tài)與所述下一個布隆 過濾器狀態(tài)之間周期性循環(huán), 在服務(wù)器在第一時間段中不能用時,響應(yīng)于檢測到被從與布隆過濾器對相關(guān)聯(lián)的服務(wù) 器重分配出去的流,在所述第一時間段中初始僅以位向量數(shù)據(jù)填充第一當(dāng)前布隆過濾器; (a) 在下一時間段中,響應(yīng)于在所述下一時間段中檢測到被從所述服務(wù)器重分配出去 的流,以位向量數(shù)據(jù)填充所述第一當(dāng)前布隆過濾器和第一下一個布隆過濾器; (b) 在下一時間段完成后,將所述第一下一個布隆過濾器提升為新的當(dāng)前布隆過濾器, 并再循環(huán)所述第一當(dāng)前布隆過濾器,以用作新的下一個布隆過濾器,其中,當(dāng)再循環(huán)布隆過 濾器時,清除用于所述布隆過濾器的位向量數(shù)據(jù);以及 在持續(xù)的基礎(chǔ)上重復(fù)操作(a)和(b)。
25.根據(jù)權(quán)利要求24所述的有形非暫時性機(jī)器可讀介質(zhì),其中,所述指令被配置為執(zhí) 行進(jìn)一步的操作,在執(zhí)行時,包括: 在操作(c)中,在與所述不能用服務(wù)器相關(guān)聯(lián)的所述當(dāng)前布隆過濾器和所述下一個布 隆過濾器中設(shè)置位,指示將與所述流相關(guān)聯(lián)的分組重分配到另一服務(wù)器; 在操作(b)中,通過針對用于所述服務(wù)器的所述當(dāng)前布隆過濾器執(zhí)行查找,以確定是 否存在與和所述分組相關(guān)聯(lián)的流匹配的條目,來確定所述分組是否與用于所述能用服務(wù)器 的重分配流相關(guān)聯(lián);以及 在操作(b)i中,在所述下一個布隆過濾器中設(shè)置位,指示將與所述流相關(guān)聯(lián)的分組重 分配到另一服務(wù)器。
【文檔編號】H04L29/08GK104519125SQ201410729357
【公開日】2015年4月15日 申請日期:2014年9月26日 優(yōu)先權(quán)日:2013年9月27日
【發(fā)明者】R·珀爾曼 申請人:英特爾公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點(diǎn)贊!
1
京山县| 社会| 北碚区| 高青县| 无为县| 巴南区| 抚宁县| 泰宁县| 山西省| 沧源| 阳曲县| 奇台县| 唐河县| 聂荣县| 越西县| 昭平县| 安多县| 宁国市| 义马市| 济源市| 台北县| 独山县| 万山特区| 孟津县| 游戏| 遵化市| 喀喇| 镇安县| 甘孜| 清徐县| 高州市| 乌兰浩特市| 桐乡市| 军事| 阳城县| 甘泉县| 利津县| 呼伦贝尔市| 襄城县| 修文县| 平山县|