用于重新指向大流子組到輕載荷路徑的流重平衡表,因此,導(dǎo)致相同出口路徑組(例如,ECMP路徑組或LAG)中的不同出口路徑上更均勻的帶寬分布。
[0043]圖5是圖示根據(jù)本發(fā)明的實(shí)施例的路徑選擇裝置的示意圖。顯示于圖1中的路徑選擇裝置104可以使用顯示于圖5中的路徑選擇裝置500來實(shí)施。路徑選擇裝置500包含基于哈希的路徑選擇電路502、動(dòng)態(tài)載荷平衡電路504以及復(fù)用器(MUX) 506。具體地,基于哈希的路徑選擇電路502用于實(shí)現(xiàn)顯示于圖1中的基于流組的路徑選擇電路112,以及動(dòng)態(tài)載荷平衡電路504用于實(shí)現(xiàn)顯示于圖1中的基于流子組的路徑選擇電路114。
[0044]當(dāng)有分組即將轉(zhuǎn)發(fā)時(shí),檢查出口路徑組表(未示出),以確定應(yīng)該使用哪個(gè)出口路徑組。例如,選擇具有出口路徑組索引eCmp_grp_idx = 2的出口路徑組,其中,所選擇的出口路徑組包含由顯示于圖3中的監(jiān)測(cè)電路306_1-306_N監(jiān)測(cè)的N個(gè)出口路徑,且通過所選擇的出口路徑組的出口路徑轉(zhuǎn)發(fā)的流子組由顯示于圖4中的大流監(jiān)測(cè)控制器402所監(jiān)測(cè)。此外,生成哈希結(jié)果pkt_hash用于即將轉(zhuǎn)發(fā)的分組。例如,哈希結(jié)果pkt_hash可以分割到流組索引FGI和流子組索引FsGI。應(yīng)該注意到,哈希結(jié)果pkt_hash,包含流組索引FGI和流子組索引FsGI,用于識(shí)別哪個(gè)即將轉(zhuǎn)發(fā)的分組分類到的流子組,且流組索引FGI用于識(shí)別哪個(gè)即將轉(zhuǎn)發(fā)的分組分類到的流組。
[0045]如上所述,顯示于圖3中的查找表302中的每個(gè)表?xiàng)l目的條目索引是存儲(chǔ)器地址。因此,路徑選擇信號(hào)ecmpjdx由查找表302的一個(gè)表?xiàng)l目(其包含下一跳信息)儲(chǔ)存在其中的存儲(chǔ)器地址設(shè)置?;诠5穆窂竭x擇電路502可采用任何已知的基于哈希的路徑選擇算法,以基于流組索引FGI,生成第一路徑選擇信號(hào)ADDR。。例如,哈希閾值算法可以由基于哈希的路徑選擇電路502采用。
[0046]關(guān)于動(dòng)態(tài)載荷平衡電路504,其包含存儲(chǔ)裝置512和加法器514。存儲(chǔ)裝置512用于儲(chǔ)存流重平衡表516。在一個(gè)示范性設(shè)計(jì)中,流重平衡表516可在不同的出口路徑組之間共享。流重平衡表至少部分基于路徑率監(jiān)測(cè)值來更新。因此,如圖5所示,流重平衡表516的每個(gè)表?xiàng)l目的條目索引是出口路徑組索引ecmp_grp_idx和哈希結(jié)果pkt_hash的組合。當(dāng)選中表?xiàng)l目時(shí),地址偏移idx_ofS從流重平衡表516輸出到加法器514。在本實(shí)施例中,條目索引可以儲(chǔ)存在CAM或SRAM,以及地址偏移可以儲(chǔ)存在SRAM,因此,流重平衡表516可以用基于SRAM的搜尋表來實(shí)施。接下來,加法器514將地址偏移idX_ofs加到基本地址ADDRbase,以生成第二路徑選擇信號(hào) ADDRiq SPjADDR1= ADDRbase+idx_ofs。
[0047]顯示于圖3中的查找表302還可以在不同的出口路徑組之間共享。優(yōu)選,與相同出口路徑組關(guān)聯(lián)的表?xiàng)l目可以用連續(xù)的存儲(chǔ)器地址儲(chǔ)存在分配的存儲(chǔ)器空間。因此,一個(gè)與相同出口路徑組關(guān)聯(lián)的表?xiàng)l目可以由用作基本地址的存儲(chǔ)器地址來索引,且剩余的表?xiàng)l目可以由存儲(chǔ)器地址來索引,每個(gè)為基本地址加上一個(gè)地址偏移。為了減少表大小,流重平衡表516可僅僅儲(chǔ)存地址偏移,如圖5所示。然而,此并非用于作為本發(fā)明的限制。備選地,加法器514可省略,且流重平衡表516可修改為儲(chǔ)存查找表302中的表?xiàng)l目的條目索引。因此,當(dāng)選中流重平衡表516的表?xiàng)l目時(shí),儲(chǔ)存的存儲(chǔ)器地址(即,查找表302中的表?xiàng)l目的條目索引)從流重平衡表516輸出以作為第二路徑選擇信號(hào)ADDRp
[0048]復(fù)用器506用于選擇第一路徑選擇信號(hào)ADDRtl和第二路徑選擇信號(hào)ADDR i中的一個(gè)作為其輸出。具體地,當(dāng)選中流重平衡表516的一個(gè)表?xiàng)l目時(shí),表示動(dòng)態(tài)載荷平衡功能應(yīng)用應(yīng)用到分組的轉(zhuǎn)發(fā),復(fù)用器506輸出第二路徑選擇信號(hào)ADDR1作為路徑選擇信號(hào)ecmp_idx ;以及當(dāng)沒有選中流重平衡表516的表?xiàng)l目時(shí),表示不需要將動(dòng)態(tài)載荷平衡功能應(yīng)用到分組的轉(zhuǎn)發(fā),復(fù)用器506輸出第一路徑選擇信號(hào)ADDRtl作為路徑選擇信號(hào)ecmpjdx。
[0049]考慮一種使能動(dòng)態(tài)載荷平衡功能用于具有出口路徑組索引ecmp_grp_idx = 2的出口路徑組的情況。初始地,流重平衡表516不包含用于出口路徑組的載荷平衡的表?xiàng)l目。因?yàn)闆]有選中流重平衡表516的表?xiàng)l目,路徑選擇信號(hào)ecmpjdx對(duì)應(yīng)于分類到與具有出口路徑索引eCmp_grp_idX = 2的分組出口路徑組關(guān)聯(lián)的流組的分組,由基于哈希的路徑選擇電路502來設(shè)置。當(dāng)使能動(dòng)態(tài)載荷平衡功能用于出口路徑組時(shí),路徑率監(jiān)測(cè)器300和大流監(jiān)測(cè)器500有效地執(zhí)行如上所述預(yù)期的功能。初始地,用于具有出口路徑組索引ecmp_grp_idx = 2的出口路徑組的出口路徑的所有瞬時(shí)路徑率值PRo1kJ-PRo^N和平均路徑率值PRAV(;_1-PRAV(;_N,由初始值(例如,O)設(shè)置。此外,初始地,沒有通過具有出口路徑組索引ecmp_grp_idx = 2的出口路徑組的出口路徑轉(zhuǎn)發(fā)的大流子組由大流監(jiān)測(cè)器500俘獲。當(dāng)選擇出口路徑組中的一個(gè)或多個(gè)路徑用于分組轉(zhuǎn)發(fā)時(shí),路徑率監(jiān)測(cè)器300將更新一個(gè)或多個(gè)路徑率監(jiān)測(cè)值(即,平均路徑率值PRATC_1-PRAV(;_N),且大流監(jiān)測(cè)器500將俘獲一個(gè)或多個(gè)新大流子組和/或更新一個(gè)或多個(gè)現(xiàn)存的俘獲的大流子組。
[0050]當(dāng)比較電路304檢測(cè)到一個(gè)路徑率監(jiān)測(cè)值(即,平均路徑率值PRatc_1-PRatc_N)超過預(yù)定閾值TH_R時(shí),比較電路304生成指示信號(hào)Sind以通知控制器102。例如,當(dāng)控制器102是運(yùn)行固件FW的處理器時(shí),指示信號(hào)Sind可以是處理器的中斷。接下來,控制器102讀取狀態(tài)寄存器以找出哪個(gè){出口路徑組,路徑}觸發(fā)中斷。另外,控制器102從路徑率監(jiān)測(cè)器300讀取出口路徑組的路徑率監(jiān)測(cè)值(即,平均路徑率值PRATC_1-PRAV(;_N),并讀取任何從大流監(jiān)測(cè)器400俘獲的大流子組的標(biāo)識(shí)符??刂破?02參考路徑率監(jiān)測(cè)值以找出至少一個(gè)輕載荷路徑,并將至少一個(gè)輕載荷路徑看作一個(gè)或多個(gè)流子組重指向的至少一個(gè)目的路徑。此外,控制器102參考所俘獲的大流子組,以找出哪個(gè)流子組應(yīng)該重指向。換句話說,基于從路徑率監(jiān)測(cè)器300和大流監(jiān)測(cè)器500給出的信息,控制器102在怎樣編程/更新流重平衡表516上作出決定。在更新了流重平衡表516后,分類到大流子組的分組可以重指向輕負(fù)載路徑。
[0051]如上所述,當(dāng)控制器102由指示信號(hào)Sind通知時(shí),流重平衡表516可以通過增加新的表?xiàng)l目和/或替換舊的表?xiàng)l目來更新。另外,因?yàn)榇鎯?chǔ)裝置512具有有限的存儲(chǔ)空間,流重平衡表516的每個(gè)表?xiàng)l目可以老化以釋放占用的存儲(chǔ)空間。除了老化,控制器102可采用表管理策略以更新流重平衡表516。
[0052]例如,控制器102還用于當(dāng)特定流組的特定大流子組從大流子組分離出來時(shí),更新具有對(duì)應(yīng)于與出口路徑組關(guān)聯(lián)的特定流組的特定大流子組的條目的流重平衡表516。換句話說,當(dāng)由大流監(jiān)測(cè)控制器402之前俘獲的特定流子組被具有更多業(yè)務(wù)載荷的另一流子組替換時(shí),特定流子組現(xiàn)在不是前M個(gè)大流子組之一了。因此,流重平衡表516需要通過替換或移除與特定流子組關(guān)聯(lián)的表?xiàng)l目來更新。
[0053]對(duì)于另一示例,控制器102還用于當(dāng)由于路徑/鏈路下降事件特定出口路徑從出口路徑組移除時(shí),更新具有對(duì)應(yīng)于出口路徑組的特定出口路徑的條目的流重平衡表516。換句話說,流重平衡表516在出口路徑組的路徑移除中需要管理。
[0054]在一個(gè)示范性設(shè)計(jì)中,每個(gè)出口路徑組還在出口路徑組表中分配使能位DLB_en。使能位DLB_en可以由控制器(例如,運(yùn)行固件FW的處理器)102設(shè)置,以指示所提出的動(dòng)態(tài)載荷平衡功能是否應(yīng)該使能用于對(duì)應(yīng)出口路徑組。例如,當(dāng)DLB_en = I用于具有出口路徑組索引eCmp_grp_idx = 2的出口路徑組時(shí),使能動(dòng)態(tài)載荷平衡功能,用于分類到與具有出口路徑組索引eCmp_grp_idx = 2的出口路徑組關(guān)聯(lián)的流組的分組。當(dāng)DLB_en = O用于具有出口路徑組索引eCmp_grp_idx = 2的出口路徑組時(shí),禁能動(dòng)態(tài)載荷平衡功能,用于分類到具有與出口路徑組索引ecmp_grp_idx = 2的出口路徑組關(guān)聯(lián)的流組的分組。
[0055]簡(jiǎn)而言之,當(dāng)接收到分組時(shí),訪問出口路徑組表以讀取使能位DLB_en和出口路徑組的出口路徑組索引,其中使能位DLB_en用于確定使能動(dòng)態(tài)載荷平衡功能是否用于出口路徑組,且當(dāng)使能用于出口路徑組的動(dòng)態(tài)載荷平衡功能時(shí),出口路徑組索引用于執(zhí)行表查找用于路徑選擇/下一跳選擇。
[0056]在使能位DLB_en指示所提出的動(dòng)態(tài)載荷平衡功能不使能用于所選擇的出口路徑組的情況中,基于流組的路徑選擇電路112(例如,基于哈希的路徑選擇電路502)用于從所選擇的出口路徑組選擇目的路徑,基于流子組的路徑選擇電路114(例如,動(dòng)態(tài)載荷平衡電路504)不用于從所選擇的出口路徑組選擇目的路徑,路徑率監(jiān)測(cè)器106 (例如,路徑率監(jiān)測(cè)器300)不需要更新任何路徑率監(jiān)測(cè)值用于所選擇的出口路徑組,以及大流監(jiān)測(cè)器108 (例如,大流監(jiān)測(cè)器400)不需要追蹤通過所選擇的出口路徑組的出口路徑轉(zhuǎn)發(fā)的任何大流子組。
[0057]在使能位DLB_en指示提出的動(dòng)態(tài)載荷平衡功能應(yīng)該使能用于所選擇的出口路徑組的另一情況中,基于流組的路徑選擇電路112(例如,基于哈希的路徑選擇電路502)和基于流子組的路徑選擇電路114(例如,動(dòng)態(tài)載荷平衡電路504)中的一個(gè)用于從所選擇的出口路徑組中選擇目的路徑。當(dāng)由于表?xiàng)l目缺失,基于流子組的路徑選擇電路114(例如,動(dòng)態(tài)載荷平衡電路504)不用于從所選擇的出口路徑組選擇目的路徑用于分組時(shí),路徑率監(jiān)測(cè)器106 (例如,路徑率監(jiān)測(cè)器300)不需要更新對(duì)應(yīng)于由基于流組的路徑選擇電路112 (例如,基于哈希的路徑選擇電路502)選擇的目的路徑的路徑率監(jiān)測(cè)值來轉(zhuǎn)發(fā)分組,且大流監(jiān)測(cè)器108 (例如,大流監(jiān)測(cè)器400)不需要更新對(duì)應(yīng)于所選擇的出口路徑組的大流子組的當(dāng)前追蹤結(jié)果。然而,當(dāng)由于選中表?xiàng)l目,基于流子組的路徑選擇電路11