專(zhuān)利名稱(chēng):實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法和裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)傳輸中的流量控制技術(shù),特別涉及一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng) 態(tài)檢測(cè)的方法、 一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置。
背景技術(shù):
現(xiàn)有基于交換網(wǎng)技術(shù)的分布式路由系統(tǒng)中,包括多個(gè)路由設(shè)備,每個(gè)路 由設(shè)備均通過(guò)交換網(wǎng)與其他路由設(shè)備相連。
其中,每個(gè)路由設(shè)備均可作為分布式路由系統(tǒng)的入接口 , ^妻收來(lái)自系統(tǒng) 外部的報(bào)文,并通過(guò)系統(tǒng)中的交換網(wǎng)傳輸?shù)阶鳛槌鼋涌诘钠渌酚稍O(shè)備,再 由作為出接口的路由設(shè)備將報(bào)文轉(zhuǎn)發(fā)到系統(tǒng)之外。
圖1為現(xiàn)有分布式路由系統(tǒng)的示例性結(jié)構(gòu)圖。如圖l所示,該系統(tǒng)中包
括3個(gè)路由設(shè)備,即接口板LPU—a、接口板LPU—b、接口板LPU—c,每個(gè) 接口板均通過(guò)交換(Switch )芯片與另外2個(gè)接口板相連,Switch芯片看作 交換網(wǎng)。其中,LPU—a和LPU一b作為入接口板,將來(lái)自系統(tǒng)外的報(bào)文通過(guò) 作為交換網(wǎng)的Switch芯片發(fā)送給作為出接口板的LPU—c, LPU—c將來(lái)自 LPU—a和LPU一b的報(bào)文轉(zhuǎn)發(fā)到系統(tǒng)外,單向箭頭曲線表示報(bào)文流的流向。
上述系統(tǒng)中,每個(gè)接口板中均包括一個(gè)用于板間流量控制的現(xiàn)場(chǎng)可編程 門(mén)陣列(FPGA)、以及一個(gè)用于才艮文轉(zhuǎn)發(fā)的中央處理單元(CPU) 。 FPGA 與CPU之間采用第四級(jí)數(shù)據(jù)速率的系統(tǒng)包接口 ( SPI4 )。
如圖2示,對(duì)于作為出接口板的LPU_c,其FPGA中的FIFO—1接收來(lái) 自LPU—a和LPU—b的報(bào)文進(jìn)行緩存,然后,F(xiàn)PGA將FIFO—1中緩存的待發(fā) 送報(bào)文再緩存到FIFO—2,由FIFO—2通過(guò)SPI4接口發(fā)往CPU中該SPI4接 口的FIFO 3。
通常情況,接口板的CPU側(cè)通常采用緩沖區(qū)描述(BD)機(jī)制處理從 FPGA接收到的報(bào)文,各BD表示不同的內(nèi)存空間存儲(chǔ)狀態(tài)。出接口板LPU—c 中CPU基于BD機(jī)制處理報(bào)文的具體過(guò)程包括
a、 CPU側(cè)如圖2所示的SPI4接口硬件查詢空閑BD,并在申請(qǐng)到數(shù)據(jù) 總線占用權(quán)后,依次將緩存在FIFO—3中的待發(fā)送報(bào)文發(fā)送至空閑BD對(duì)應(yīng) 的內(nèi)存空間,即SPI4接口硬件依次將緩存在FIFO一3中的待發(fā)送報(bào)文直接存 儲(chǔ)器接入(DMA)到空閑BD指定的內(nèi)存空間,然后改寫(xiě)該空閑BD的信息, 例如寫(xiě)入報(bào)文長(zhǎng)度等信息,并將該BD設(shè)置為已用狀態(tài)。
b、 SPI4接口硬件向CPU中的處理內(nèi)核(圖中未示出)產(chǎn)生中斷。
c、 CPU中的處理內(nèi)核在響應(yīng)接口硬件中斷后,獲知有才艮文需要處理, 并通知其內(nèi)部用于處理報(bào)文的任務(wù)。
d、 CPU中的處理內(nèi)核在執(zhí)行用于報(bào)文處理的任務(wù)時(shí),將接收到的報(bào)文 進(jìn)行相應(yīng)處理,并在處理完成后,將此報(bào)文占用的內(nèi)存空間所對(duì)應(yīng)的BD設(shè) 置為空閑狀態(tài),即釋放BD。
基于上述流程,出接口板LPU—c實(shí)現(xiàn)了其CPU對(duì)報(bào)文的轉(zhuǎn)發(fā)。 假設(shè)LPU—c中的CPU中處理內(nèi)核的處理能力只有1Gbps,而FPGA當(dāng) 前發(fā)送的報(bào)文流量遠(yuǎn)大于1Gbps(LPU—c中的FPGA當(dāng)前發(fā)送的報(bào)文流量等 于來(lái)自LPU—a和LPU—b的才艮文流量之和),貝'J CPU中FIFO—3將4艮快達(dá)到 幾乎滿(AlmostFull)狀態(tài),從而通過(guò)SPI4接口產(chǎn)生反壓信號(hào),令FPGA暫 停發(fā)送報(bào)文流。
這樣,F(xiàn)PGA暫停向CPU發(fā)送報(bào)文流后,由于FIFO一l仍然接收到來(lái)自 LPU—a和LPU—b的報(bào)文,使得SPI4接口側(cè)的FIFO—2將會(huì)在一定時(shí)間內(nèi)也 達(dá)到AlmostFull狀態(tài)。在FIFO—2達(dá)到AlmostFull狀態(tài)后,F(xiàn)IFO—1中的報(bào) 文則無(wú)法再發(fā)送到FIFO—2,從而使得FIFO—l發(fā)生溢出,而溢出的結(jié)果就是 板間丟包,即LPU—c丟失來(lái)自LPU—a和LPU—b的報(bào)文。
可見(jiàn),現(xiàn)有基于交換網(wǎng)技術(shù)的分布式路由系統(tǒng)中,由于無(wú)法獲知出接口 板的CPU轉(zhuǎn)發(fā)能力,因而無(wú)法保證對(duì)應(yīng)的所有入接口的報(bào)文流量之和不會(huì)
超出(或者不會(huì)長(zhǎng)時(shí)間超出)出接口的CPU轉(zhuǎn)發(fā)能力,也就無(wú)法避免出接
口處丟包,從而造成交換網(wǎng)流量浪費(fèi)。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供了一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法、 一種實(shí)現(xiàn) 轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置、以及一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的系統(tǒng),能夠?yàn)?避免出接口處丟包提供保障。
本發(fā)明提供的 一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法,應(yīng)用于分布式路由系 統(tǒng)中,為出接口板內(nèi)存中的各內(nèi)存空間分別設(shè)置對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí),該方
法包括
出接口板CPU接收到報(bào)文后,將該報(bào)文存儲(chǔ)在空閑存儲(chǔ)狀態(tài)標(biāo)識(shí)所對(duì) 應(yīng)的內(nèi)存空間中,并將該存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為已用狀態(tài);CPU在完成報(bào)文的 處理后,將存儲(chǔ)該報(bào)文的內(nèi)存空間所對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為空閑狀態(tài); 檢測(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否達(dá)到預(yù)設(shè)的上限閾值; 當(dāng)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)達(dá)到預(yù)設(shè)的上限閾值時(shí),確定該CPU 的轉(zhuǎn)發(fā)能力不足。
每次將存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為已用狀態(tài)之后,執(zhí)行一次所述檢測(cè)已用狀態(tài) 的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否達(dá)到預(yù)設(shè)的上限閾值。
在確定該CPU的轉(zhuǎn)發(fā)能力不足之后,該方法進(jìn)一步包括
向該CPU所在出接口板的現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA發(fā)送表示該 CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文;
該CPU所在出接口板的FPGA向?qū)?yīng)的入接口板發(fā)送表示該CPU轉(zhuǎn)發(fā) 能力不足的板間控制報(bào)文。
所迷向該CPU所在出接口板的FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的 板內(nèi)控制才艮文之前,該方法進(jìn)一步包括
判斷是否已向該CPU所在出接口板的FPGA發(fā)送過(guò)所述表示該CPU轉(zhuǎn) 發(fā)能力不足的板內(nèi)控制報(bào)文,如果沒(méi)有,則執(zhí)行所述向該CPU所在出接口
板的FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文。
所述向?qū)?yīng)的入接口板發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板間控制報(bào)文
之后,該方法進(jìn)一步包4舌
入接口板停止向所述出接口板發(fā)送報(bào)文或減少向所述出接口板發(fā)送的
才艮文流量。
每次將對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為空閑狀態(tài)之后,該方法進(jìn)一步包括 檢測(cè)出接口板CPU側(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否降至預(yù)設(shè)的下 P艮閾4直;
當(dāng)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)降至預(yù)設(shè)的下限閾值時(shí),確定該CPU
有足夠的轉(zhuǎn)發(fā)能力。
在確定該CPU有足夠的轉(zhuǎn)發(fā)能力之后,該方法進(jìn)一步包括
向該CPU所在出接口板的FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)有足夠轉(zhuǎn)發(fā)能力
的板內(nèi)控制報(bào)文;
該CPU所在出接口板的FPGA向?qū)?yīng)的入接口板發(fā)送表示該CPU有足 夠轉(zhuǎn)發(fā)能力的板間控制報(bào)文。
所述向該CPU所在出接口板的FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)有足夠轉(zhuǎn)發(fā) 能力的板內(nèi)控制報(bào)文之前,該方法進(jìn)一步包括
判斷是否已向該CPU所在出接口板的FPGA發(fā)送過(guò)表示該CPU轉(zhuǎn)發(fā)有 足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文,如果沒(méi)有,則執(zhí)行所述向該CPU所在出接 口板的FPGA發(fā)送過(guò)表示該CPU有足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文。
所述向?qū)?yīng)的入接口板發(fā)送表示該CPU有足夠轉(zhuǎn)發(fā)能力的板間控制報(bào) 文之后,該方法進(jìn)一步包括
入接口板繼續(xù)向所迷出接口板發(fā)送報(bào)文或增加向所述出接口板發(fā)送的 才良文流量。
所述上限閾值小于等于總存儲(chǔ)狀態(tài)標(biāo)識(shí)數(shù)量與報(bào)文到達(dá)對(duì)端時(shí)間內(nèi)所 需最大內(nèi)存空間所對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)數(shù)量之差。
所述下限閾值大于等于報(bào)文到達(dá)對(duì)端時(shí)間內(nèi)CPU能夠處理的最大報(bào)文 數(shù)量。
所述存儲(chǔ)狀態(tài)標(biāo)識(shí)為緩沖區(qū)描述BD。
本發(fā)明提供的 一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置,用于分布式路由系統(tǒng) 中的出接口,該裝置包括內(nèi)存和CPU,其中,
所述內(nèi)存中的各內(nèi)存空間分別對(duì)應(yīng)不同存儲(chǔ)狀態(tài)標(biāo)識(shí);
所述CPU接收到報(bào)文后,將該報(bào)文存儲(chǔ)在空閑存儲(chǔ)狀態(tài)標(biāo)識(shí)所對(duì)應(yīng)的
內(nèi)存空間中,并將該存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為已用狀態(tài);在完成報(bào)文的處理后,
將存儲(chǔ)該報(bào)文的內(nèi)存空間所對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為空閑狀態(tài);
所述CPU檢測(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否達(dá)到預(yù)設(shè)的上限閾
值;當(dāng)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)達(dá)到預(yù)設(shè)的上限閾值時(shí),確定該CPU
的轉(zhuǎn)發(fā)能力不足。
所述CPU在將存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為已用狀態(tài)之后,執(zhí)行所述檢測(cè)已用 狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否達(dá)到預(yù)設(shè)的上限閾值。 該裝置進(jìn)一步包括現(xiàn)場(chǎng)可編程門(mén)陣列FPGA;
所述CPU在確定其轉(zhuǎn)發(fā)能力不足之后,進(jìn)一步向所述FPGA發(fā)送表示 該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文;
所述FPGA向?qū)?yīng)的外部入接口發(fā)送表示所述CPU轉(zhuǎn)發(fā)能力不足的板 間控制報(bào)文。
所述CPU向所述FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文 之前,進(jìn)一步判斷是否已向所述FPGA發(fā)送過(guò)所述表示該CPU轉(zhuǎn)發(fā)能力不 足的板內(nèi)控制報(bào)文,如果沒(méi)有,則執(zhí)行所述向FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā) 能力不足的板內(nèi)控制報(bào)文。
所述CPU將對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為空閑狀態(tài)之后,進(jìn)一步檢測(cè)出 接口板CPU側(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否降至預(yù)設(shè)的下限閾值;當(dāng) 已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)降至預(yù)設(shè)的下限闊值時(shí),確定該CPU有足夠 的轉(zhuǎn)發(fā)能力。
所述CPU在確定該CPU有足夠的轉(zhuǎn)發(fā)能力之后,進(jìn)一步向所述FPGA
發(fā)送表示該CPU轉(zhuǎn)發(fā)有足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文;
所述FPGA向?qū)?yīng)的外部入接口板發(fā)送表示所述CPU有足夠轉(zhuǎn)發(fā)能力 的板間控制報(bào)文。
所述CPU在向所述FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào) 文之前,進(jìn)一步判斷是否已向所述FPGA發(fā)送過(guò)表示該CPU轉(zhuǎn)發(fā)能力不足 的板內(nèi)控制報(bào)文,如果沒(méi)有,則執(zhí)行所述向所述FPGA發(fā)送過(guò)表示該CPU 有足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文。
所述上限閾值小于等于總存儲(chǔ)狀態(tài)標(biāo)識(shí)數(shù)量與報(bào)文到達(dá)對(duì)端時(shí)間內(nèi)所 需最大內(nèi)存空間所對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)數(shù)量之差。
所述下限閾值大于等于報(bào)文到達(dá)對(duì)端時(shí)間內(nèi)CPU能夠處理的最大報(bào)文 數(shù)量。
所述存儲(chǔ)狀態(tài)標(biāo)識(shí)為緩沖區(qū)描述BD。
由上述技術(shù)方案可見(jiàn),本發(fā)明通過(guò)探測(cè)CPU側(cè)對(duì)應(yīng)各內(nèi)存空間的存儲(chǔ) 狀態(tài)標(biāo)識(shí)狀態(tài)即可檢測(cè)該CPU的當(dāng)前處理能力,從而能夠獲得該CPU的轉(zhuǎn) 發(fā)能力。這樣,將出接口 CPU轉(zhuǎn)發(fā)能力通知對(duì)應(yīng)的各入接口 ,用以各入接 口確定自身向該出接口所發(fā)送的報(bào)文流量,以有效的實(shí)現(xiàn)板間流控,保證對(duì) 應(yīng)的所有入接口的報(bào)文流量之和不會(huì)超出出接口的CPU轉(zhuǎn)發(fā)能力,從而為 避免出接口處丟包提供保障,避免交換網(wǎng)流量浪費(fèi)。
而且,當(dāng)CPU側(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)少于一定數(shù)量時(shí),還可通知 對(duì)應(yīng)的各入接口增加傳輸?shù)膱?bào)文總量,從而能夠避免出接口 CPU轉(zhuǎn)發(fā)能力 的浪費(fèi)。
圖1為現(xiàn)有分布式路由系統(tǒng)的示例性結(jié)構(gòu)圖。
圖2為現(xiàn)有分布式路由系統(tǒng)中的接口板的結(jié)構(gòu)示意圖。
圖3為本發(fā)明中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法的示例性流程圖。
圖4為本發(fā)明實(shí)施例中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法流程示意圖。圖5為本發(fā)明實(shí)施例中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置結(jié)構(gòu)示意圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點(diǎn)更加清楚明白,以下參照附圖并舉 實(shí)施例,對(duì)本發(fā)明進(jìn)一步詳細(xì)說(shuō)明。
本發(fā)明中為出接口板內(nèi)存中的各內(nèi)存空間,分別設(shè)置對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo) 識(shí),并通過(guò)探測(cè)CPU側(cè)各存儲(chǔ)狀態(tài)標(biāo)識(shí)獲知各內(nèi)存空間的狀態(tài),從而才企測(cè) 到CPU的當(dāng)前處理能力,從而獲得該CPU的轉(zhuǎn)發(fā)能力。
通常情況下,CPU均采用BD^L制實(shí)現(xiàn)對(duì)內(nèi)存空間的管理,因此,以下 以存儲(chǔ)狀態(tài)標(biāo)識(shí)為BD為例,對(duì)本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)說(shuō)明。
圖3為本發(fā)明中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法的示例性流程圖。該方法 可應(yīng)用于分布式路由系統(tǒng)中,如圖3所示,該方法包括
步驟300, CPU每接收到一個(gè)來(lái)自其所在出接口板的FPGA發(fā)送的報(bào)文 后,均將該凈艮文存〗諸在空閑BD所對(duì)應(yīng)的內(nèi)存空間中,并將該BD i殳置為已 用狀態(tài);CPU在每完成一個(gè)報(bào)文的處理后,均將存儲(chǔ)該報(bào)文的內(nèi)存空間所對(duì) 應(yīng)的BD設(shè)置為空閑狀態(tài)。
步驟301,出接口板CPU^r測(cè)該板CPU側(cè)處于已用狀態(tài)的BD總數(shù)是 否達(dá)到預(yù)設(shè)的上限閾值。
步驟302,當(dāng)已用狀態(tài)的BD總數(shù)達(dá)到預(yù)設(shè)的上限閾值時(shí),確定該CPU 的轉(zhuǎn)發(fā)能力不足。
至此,本流程結(jié)束。
當(dāng)然,上述流程中還可以檢測(cè)出接口板CPU側(cè)已用狀態(tài)的BD總數(shù)是 否降至預(yù)設(shè)的下限閾值,并在已用狀態(tài)的BD總數(shù)降至預(yù)設(shè)的下限閾值時(shí), 確定該CPU有足夠的轉(zhuǎn)發(fā)能力。
這樣,根據(jù)確定的出接口 CPU轉(zhuǎn)發(fā)能力,通過(guò)表示CPU轉(zhuǎn)發(fā)能力不足 或表示CPU有足夠轉(zhuǎn)發(fā)能力的控制報(bào)文通知對(duì)應(yīng)的各入接口 ,減少或增加 發(fā)送給該出接口的才艮文流量,,人而實(shí)現(xiàn)^反間流控,以〗呆i正對(duì)應(yīng)的所有入4妄口
的報(bào)文流量之和不會(huì)超出出接口的CPU轉(zhuǎn)發(fā)能力,從而避免出接口處丟包,
避免交換網(wǎng)流量浪費(fèi)。
下面,結(jié)合具體實(shí)施例對(duì)本發(fā)明中的技術(shù)方案進(jìn)行進(jìn)一步說(shuō)明。
為了能夠?qū)⒊鼋涌?CPU的轉(zhuǎn)發(fā)能力通知給各入接口,本發(fā)明提供了兩 種板內(nèi)控制才艮文CBUSY和n—CBUSY,以及兩種氺反間控制l艮文FBUSY和 n—FBUSY。
其中,CBUSY表示CPU轉(zhuǎn)發(fā)能力不足、n—CBUSY表示CPU有足夠轉(zhuǎn) 發(fā)能力。當(dāng)已用BD總數(shù)達(dá)到預(yù)設(shè)的上限閾值從而確定出接口 CPU轉(zhuǎn)發(fā)能 力不足后,CPU向FPGA發(fā)送CBUSY才艮文;當(dāng)已用BD總數(shù)達(dá)到預(yù)設(shè)的下 限閾值從而確定CPU轉(zhuǎn)發(fā)能力已恢復(fù)時(shí),向FPGA發(fā)送n—CBUSY報(bào)文。
一般情況下,CPU向FPGA發(fā)送的板內(nèi)報(bào)文都會(huì)附帶一個(gè)用于存儲(chǔ)控 制信息的控制頭,該控制頭中包括了例如該報(bào)文的目的板ID、報(bào)文優(yōu)先級(jí) 等信息,同時(shí)還具有空閑的可用空間。這樣,本發(fā)明中的板內(nèi)控制報(bào)文 CBUSY和n—CBUSY所表示的信息可以只占用控制頭中的兩個(gè)比特,而且 該板內(nèi)控制報(bào)文的總長(zhǎng)度只需設(shè)置為CPU與FPGA之間的最小報(bào)文長(zhǎng)度。
FBUSY表示本板的CPU轉(zhuǎn)發(fā)能力不足、n—FBUSY表示本板的CPU有 足夠轉(zhuǎn)發(fā)能力。
FPGA在接收到其所在出接口板的CPU發(fā)來(lái)的板內(nèi)控制報(bào)文CBUSY或 n—CBUSY后,需要轉(zhuǎn)換為對(duì)應(yīng)的板間控制報(bào)文FBUSY或n—FBUSY,以使 該FPGA所在出接口板對(duì)應(yīng)的入接口板的FPGA可識(shí)別。
同樣的,板間控制報(bào)文FBUSY和n一FBUSY所表示的信息也可以只占 用控制頭中的兩個(gè)比特,而且該板間控制報(bào)文的長(zhǎng)度只需設(shè)置為板間流控報(bào) 文的最小報(bào)文長(zhǎng)度。
圖4為本發(fā)明實(shí)施例中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法流程示意圖。該方 法可應(yīng)用于分布式路由系統(tǒng)中,如圖4所示,該方法包括
步驟400,設(shè)置上限閾值BD—USED—HIGH和下限閾值BD—USED—LOW; 設(shè)置一個(gè)初值為0的變量BD—used—num,用于表示當(dāng)前已用狀態(tài)的BD數(shù)量;
設(shè)置一個(gè)初值為0的變量Busy—send,用于表示最近是否發(fā)送過(guò)CBUSY報(bào) 文。
步驟401, CPU將其所在出接口板的FPGA發(fā)送的板間報(bào)文存儲(chǔ)在空閑 BD所對(duì)應(yīng)的內(nèi)存空間內(nèi),即占用一個(gè)BD后,該CPU將存儲(chǔ)板間報(bào)文的內(nèi) 存空間所對(duì)應(yīng)的BD設(shè)置為已用狀態(tài)、并將BD—used—num力。1,同時(shí)判斷 BD—used—num是否大于等于BD—USED—HIGH,如果是、且Busy—send為0 表示最近未發(fā)送過(guò)CBUSY報(bào)文,則生成板內(nèi)控制報(bào)文CBUSY發(fā)送給該CPU 所在出接口板的FPGA,同時(shí)將Busy一send設(shè)置為1,表示最近發(fā)送過(guò)板內(nèi) 控制報(bào)文CBUSY。
步驟402,每當(dāng)CPU處理完一個(gè)板間報(bào)文,即釋放一個(gè)BD后,該CPU 將存儲(chǔ)該板間報(bào)文的內(nèi)存空間所對(duì)應(yīng)的BD設(shè)置為空閑狀態(tài)、并將 BD—used—num減1 ,同時(shí)判斷BD—used—num是否小于等于BD—USED—LOW, 如果是、且Busy一send為l表示最近已發(fā)送過(guò)CBUSY報(bào)文,則生成板內(nèi)控 制報(bào)文n—CBUSY發(fā)送給該CPU所在出口板的FPGA,同時(shí)將Busy—send設(shè) 置為0,表示最近未發(fā)送過(guò)板內(nèi)控制報(bào)文CBUSY。
步驟403,出接口板的FPGA對(duì)來(lái)自本板CPU的板內(nèi)控制報(bào)文進(jìn)行識(shí) 別判斷,如果是CBUSY或n—CBUSY控制報(bào)文,則將其轉(zhuǎn)換為相應(yīng)的板間 控制報(bào)文FBUSY或n—FBUSY,以使入接口板的FPGA可識(shí)別板間控制報(bào)文 并獲知出接口板的CPU轉(zhuǎn)發(fā)能力。
步驟404,如果入接口板的FPGA收到板間控制報(bào)文FBUSY,則該入 接口板根據(jù)報(bào)文中攜帶的源板ID,即出接口板的ID,停止向?qū)?yīng)出接口板 發(fā)送報(bào)文或減少向出接口板發(fā)送的報(bào)文流量;如果入接口板的FPGA接收到 板間控制報(bào)文n—FBUSY報(bào)文,則該入接口板保持當(dāng)前向?qū)?yīng)出接口發(fā)送的 報(bào)文流量、或增加向出接口板發(fā)送的報(bào)文流量。
至此,本流程結(jié)束。
需要說(shuō)明的是,上述流程中的步驟401和步驟402為反復(fù)循環(huán)執(zhí)行的處 理過(guò)程。
實(shí)際應(yīng)用中,較佳地,上限閾值BD—USED—HIGH應(yīng)小于等于總BD數(shù) 量與板內(nèi)控制報(bào)文傳輸、及板間控制報(bào)文傳輸總時(shí)間內(nèi),即報(bào)文到達(dá)對(duì)端的 時(shí)間內(nèi)所需最大內(nèi)存空間所對(duì)應(yīng)的BD數(shù)量之差,以避免出接口板CPU側(cè) 的空閑BD不足以存儲(chǔ)在上述時(shí)間內(nèi)接收的報(bào)文而導(dǎo)致丟包;而下限閾值 BD—USED—LOW則應(yīng)大于等于報(bào)文到達(dá)對(duì)端的時(shí)間內(nèi)CPU能夠處理的最大 報(bào)文數(shù)量,以避免出接口板CPU側(cè)的BD全部空閑而導(dǎo)致出接口板CPU空 閑。
假設(shè)CPU發(fā)往本板FPGA的最小報(bào)文長(zhǎng)度為16字節(jié),則報(bào)文到達(dá)對(duì)端 的時(shí)間,即從CPU中處理內(nèi)核產(chǎn)生CBUSY或n—CBUSY報(bào)文到FPGA收到 需要的時(shí)間主要包括CPU處中斷處理的延時(shí)(約1000ns)和接口延時(shí)(16 x 8/10=12.8ns)。
FPGA處理CBUSY或n—CBUSY報(bào)文需要的時(shí)間相當(dāng)于一個(gè)最小數(shù)據(jù) 報(bào)文在FPGA內(nèi)部處理的延時(shí)(約300ns)。
可見(jiàn),板內(nèi)控制報(bào)文傳輸時(shí)間為1000+ 12.8 + 300+ 102.4= 1415.2 ns。
假設(shè)板間控制報(bào)文的最小報(bào)文長(zhǎng)度為64字節(jié),則板間控制報(bào)文FBUSY 或n—FBUSY在出接口板和入接口板間傳送的延時(shí)包括兩個(gè)物理層接口如 SPI4的接口延時(shí)(2x 64x 8/10= 102.4ns )、以及交換網(wǎng)固有延時(shí)(約2000ns )。
入接口板FPGA對(duì)板間控制報(bào)文FBUSY或n—FBUSY的處理延時(shí)約 lOOns。
可見(jiàn),板間控制才艮文傳輸時(shí)間為2000+ 100 = 2100 ns。 這樣,板內(nèi)控制報(bào)文傳輸、及板間控制報(bào)文傳輸總時(shí)間為1000+ 12.8 + 300+ 102.4 + 2000+ 100= 3515.2ns。
如上述流程所述,出接口板CPU側(cè)的已用BD數(shù)量達(dá)到預(yù)設(shè)的上限閾 值BDJJSED—HIGH后,將由出接口板的FPGA向?qū)?yīng)入接口板發(fā)送表示出 接口板CPU處理能力不足的板間控制報(bào)文FBUSY ,此報(bào)文在出接口板和入 接口板間的傳送需要大約3500ns的時(shí)間。最壞情況下,在此3500ns時(shí)間內(nèi) 出接口 CPU—直以最大速率(10Gbps)收包并且不作處理,則最多將接收3500 x 10 / 8 = 4375字節(jié)的流量,假設(shè)收到的板間報(bào)文全部是64字節(jié)的最小 報(bào)文,則在此3500 ns時(shí)間內(nèi)收到的總報(bào)文數(shù)為68,因而在出接口板CPU 發(fā)送板內(nèi)控制報(bào)文CBUSY時(shí)需要保證空閑BD數(shù)應(yīng)大于68。因此, BD—USED—HIGH閾值的設(shè)置應(yīng)滿足BD—USED—HIGH《BD總數(shù)-68。
同樣,出接口板CPU側(cè)的已用BD數(shù)量達(dá)到預(yù)設(shè)的下限閾值 BD一USED一LOW后,將由出接口板的FPGA向?qū)?yīng)入接口板發(fā)送表示出接 口板CPU處理能力不足的FBUSY報(bào)文,此報(bào)文在板間傳送需要大約3500ns 的時(shí)間;最樂(lè)觀的情況是,在此3500ns時(shí)間內(nèi)CPU —直以最大處理能力 (3Mpps)處理該緩存的報(bào)文,3500ns x3Mpps= 10.5,即需要保證在出接口 板的CPU發(fā)送板內(nèi)控制報(bào)文n—BUSY時(shí),已用BD數(shù)應(yīng)大于ll,否則將有 可能造成出接口板CPU能力的浪費(fèi)。
以上是對(duì)本發(fā)明實(shí)施例中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法的詳細(xì)說(shuō)明。下 面再對(duì)本發(fā)明實(shí)施例中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置進(jìn)行說(shuō)明。
本發(fā)明中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置,可作為分布式路由系統(tǒng)中的出 接口,該裝置包括內(nèi)存和CPU。
內(nèi)存中的各內(nèi)存空間分別對(duì)應(yīng)不同BD。
CPU中的SPI4接口硬件在接收到報(bào)文后,將該報(bào)文存儲(chǔ)在空閑BD所 對(duì)應(yīng)的內(nèi)存空間中,并將該BD設(shè)置為已用狀態(tài);CPU中的處理內(nèi)核在完成 報(bào)文的處理后,將存儲(chǔ)該報(bào)文的內(nèi)存空間所對(duì)應(yīng)的BD設(shè)置為空閑狀態(tài)。
同時(shí),CPU中的處理內(nèi)核在處理SPI4接口硬件產(chǎn)生的中斷時(shí),還檢測(cè) 已用狀態(tài)的BD總數(shù)是否達(dá)到預(yù)設(shè)的上限閾值;當(dāng)已用狀態(tài)的BD總數(shù)達(dá)到 預(yù)設(shè)的上限閾值時(shí),確定該CPU的轉(zhuǎn)發(fā)能力不足。CPU中的處理內(nèi)核將對(duì) 應(yīng)的BD設(shè)置為空閑狀態(tài)之后,還可以檢測(cè)出接口板CPU側(cè)已用狀態(tài)的BD 總數(shù)是否降至預(yù)設(shè)的下限閾值;當(dāng)已用狀態(tài)的BD總數(shù)降至預(yù)設(shè)的下限閾值 時(shí),確定該CPU有足夠的轉(zhuǎn)發(fā)能力。
為了實(shí)現(xiàn)流控,本發(fā)明中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置可以包括 FPGA。這樣,CPU在確定其轉(zhuǎn)發(fā)能力不足之后,可以向FPGA發(fā)送表示該
CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文,由FPGA向?qū)?yīng)的外部入接口發(fā)送表 示本板CPU轉(zhuǎn)發(fā)能力不足的板間控制報(bào)文;CPU在確定該CPU有足夠的轉(zhuǎn) 發(fā)能力之后,也可以向FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)有足夠轉(zhuǎn)發(fā)能力的板內(nèi) 控制報(bào)文,由FPGA向?qū)?yīng)的外部入接口板發(fā)送表示本板CPU有足夠轉(zhuǎn)發(fā) 能力的板間控制報(bào)文。
下面,結(jié)合一具有較佳結(jié)構(gòu)的實(shí)施例對(duì)上述裝置進(jìn)行進(jìn)一步說(shuō)明。 圖5為本發(fā)明實(shí)施例中實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置結(jié)構(gòu)示意圖。如圖 5所示,該裝置可作為分布式路由系統(tǒng)中的出接口,包括內(nèi)存、CPU和 FPGA。
其中,內(nèi)存中的各內(nèi)存空間分別對(duì)應(yīng)不同BD。
CPU包括SPI4接口硬件、以及處理內(nèi)核,而處理內(nèi)核又包括BD管理 單元和^f壬務(wù)處理單元。
SPI4接口硬件,可以包括一FIFO,接收來(lái)自FPGA的報(bào)文,并將接收 到的報(bào)文存儲(chǔ)在內(nèi)存中與空閑BD對(duì)應(yīng)的內(nèi)存空間內(nèi),向BD管理單元發(fā)出 中斷請(qǐng)求,并將該BD設(shè)置為已用狀態(tài)。
BD管理單元,根據(jù)SPI4接口硬件發(fā)出的中斷請(qǐng)求獲知其接收到的報(bào)文 已存儲(chǔ)在內(nèi)存中與空閑BD對(duì)應(yīng)的內(nèi)存空間內(nèi),并在接口硬件將接收到的報(bào) 文存儲(chǔ)在內(nèi)存中與空閑BD對(duì)應(yīng)的內(nèi)存空間內(nèi)后,檢測(cè)已用狀態(tài)的BD總數(shù) 是否達(dá)到預(yù)設(shè)的上限閾值;當(dāng)已用狀態(tài)的BD總數(shù)達(dá)到預(yù)設(shè)的上限閾值時(shí), 確定其所在CPU的轉(zhuǎn)發(fā)能力不足;在任務(wù)處理單元完成報(bào)文的處理后,將 存儲(chǔ)該報(bào)文的內(nèi)存空間所對(duì)應(yīng)的BD設(shè)置為空閑狀態(tài)。
任務(wù)處理單元,對(duì)接收到的報(bào)文進(jìn)行處理并轉(zhuǎn)發(fā),并在完成報(bào)文的處理 后通知BD管理單元。
為了實(shí)現(xiàn)板間流控,以避免由CPU的溢出而導(dǎo)致的板間丟包,BD管理 單元在確定其所在CPU的轉(zhuǎn)發(fā)能力不足之后,進(jìn)一步通過(guò)SPI4接口向FPGA 發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的^1內(nèi)控制凈艮文;FPGA向?qū)?yīng)的外部入4妄 口發(fā)送表示CPU轉(zhuǎn)發(fā)能力不足的板間控制報(bào)文。
在向FPGA發(fā)送表示其所在CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文之前,
力不足的板內(nèi)控制報(bào)文,如果沒(méi)有,再通過(guò)SPI4接口向FPGA發(fā)送表示該 CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文。
當(dāng)然,將對(duì)應(yīng)的BD設(shè)置為空閑狀態(tài)之后,BD管理單元可以進(jìn)一步檢 測(cè)出接口板CPU側(cè)已用狀態(tài)的BD總數(shù)是否降至預(yù)設(shè)的下限閾值;當(dāng)已用 狀態(tài)的BD總數(shù)降至預(yù)設(shè)的下限閾值;當(dāng)已用狀態(tài)的BD總數(shù)達(dá)到預(yù)設(shè)的下 限闊值時(shí),確定其所在CPU有足夠的轉(zhuǎn)發(fā)能力。
為了實(shí)現(xiàn)板間流控,以避免CPU空閑而導(dǎo)致CPU的轉(zhuǎn)發(fā)能力浪費(fèi),在 確定其所在CPU有足夠的轉(zhuǎn)發(fā)能力之后,BD管理單元可以進(jìn)一步通過(guò)SPI4 接口向FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)有足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文;FPGA 則向?qū)?yīng)的外部入接口板發(fā)送表示該CPU有足夠轉(zhuǎn)發(fā)能力的板間控制報(bào)文。
在向FPGA發(fā)送表示CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文之前,BD管理 單元可以進(jìn)一步判斷是否已向FPGA發(fā)送過(guò)表示該CPU轉(zhuǎn)發(fā)能力不足的板 內(nèi)控制報(bào)文,如果沒(méi)有,再通過(guò)SPI4接口向FPGA發(fā)送表示其所在CPU有 足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文。
由上述實(shí)施例可見(jiàn),通過(guò)纟罙測(cè)CPU側(cè)的各BD的狀態(tài)即可4企測(cè)該CPU 的當(dāng)前處理能力,從而能夠獲得該CPU的轉(zhuǎn)發(fā)能力。這樣,將出接口 CPU 轉(zhuǎn)發(fā)能力通知對(duì)應(yīng)的各入接口 ,用以各入接口確定自身向該出接口所發(fā)送的 報(bào)文流量,以有效的實(shí)現(xiàn)斧反間流控,保證對(duì)應(yīng)的所有入接口的報(bào)文流量之和 不會(huì)超出出接口的CPU轉(zhuǎn)發(fā)能力,從而避免出接口處丟包,避免交換網(wǎng)流 量浪費(fèi)。
而且,當(dāng)CPU側(cè)已用狀態(tài)的BD少于一定凄t量時(shí),還可通知對(duì)應(yīng)的各 入接口增加傳輸?shù)膱?bào)文總量,從而能夠避免出接口 CPU轉(zhuǎn)發(fā)能力的浪費(fèi)。
以上僅僅是以CPU均采用BD機(jī)制實(shí)現(xiàn)對(duì)內(nèi)存空間的管理、存儲(chǔ)狀態(tài) 標(biāo)識(shí)為BD為例。實(shí)際應(yīng)用中,CPU也可以采用其他方式實(shí)現(xiàn)對(duì)內(nèi)存空間的 管理,相應(yīng)地,存儲(chǔ)狀態(tài)標(biāo)識(shí)也可以通過(guò)其他方式來(lái)實(shí)現(xiàn)。以上所述僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范 圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換以及改進(jìn)等, 均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1、一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法,應(yīng)用于分布式路由系統(tǒng)中,其特征在于,為出接口板內(nèi)存中的各內(nèi)存空間分別設(shè)置對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí),該方法包括出接口板CPU接收到報(bào)文后,將該報(bào)文存儲(chǔ)在空閑存儲(chǔ)狀態(tài)標(biāo)識(shí)所對(duì)應(yīng)的內(nèi)存空間中,并將該存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為已用狀態(tài);CPU在完成報(bào)文的處理后,將存儲(chǔ)該報(bào)文的內(nèi)存空間所對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為空閑狀態(tài);檢測(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否達(dá)到預(yù)設(shè)的上限閾值;當(dāng)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)達(dá)到預(yù)設(shè)的上限閾值時(shí),確定該CPU的轉(zhuǎn)發(fā)能力不足。
2、 如權(quán)利要求1所述的方法,其特征在于,每次將存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置 為已用狀態(tài)之后,執(zhí)行所述檢測(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否達(dá)到預(yù)設(shè) 的上限閾值。
3、 如權(quán)利要求2所述的方法,其特征在于,在確定該CPU的轉(zhuǎn)發(fā)能力 不足之后,該方法進(jìn)一步包括向該CPU所在出接口板的現(xiàn)場(chǎng)可編程邏輯門(mén)陣列FPGA發(fā)送表示該 CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文;能力不足的板間控制報(bào)文。
4、 如權(quán)利要求3所述的方法,其特征在于,所述向該CPU所在出接口 板的FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文之前,該方法進(jìn) 一步包括判斷是否已向該CPU所在出接口板的FPGA發(fā)送過(guò)所述表示該CPU轉(zhuǎn) 發(fā)能力不足的板內(nèi)控制報(bào)文,如果沒(méi)有,則執(zhí)行所述向該CPU所在出接口 板的FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文。
5、 如權(quán)利要求3所述的方法,其特征在于,所述向?qū)?yīng)的入接口板發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板間控制報(bào)文之后,該方法進(jìn)一步包括入接口板停止向所述出接口板發(fā)送報(bào)文或減少向所述出接口板發(fā)送的 報(bào)文流量。
6、 如權(quán)利要求1至5中任意一項(xiàng)所述的方法,其特征在于,每次將對(duì) 應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為空閑狀態(tài)之后,該方法進(jìn)一 步包括限閾值;當(dāng)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)降至預(yù)設(shè)的下限閾值時(shí),確定該CPU 有足夠的轉(zhuǎn)發(fā)能力。
7、 如權(quán)利要求6所述的方法,其特征在于,在確定該CPU有足夠的轉(zhuǎn) 發(fā)能力之后,該方法進(jìn)一步包括向該CPU所在出接口板的FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)有足夠轉(zhuǎn)發(fā)能力 的板內(nèi)控制報(bào)文;該CPU所在出接口板的FPGA向?qū)?yīng)的入接口板發(fā)送表示該CPU有足 夠轉(zhuǎn)發(fā)能力的板間控制報(bào)文。
8、 如權(quán)利要求7所述的方法,其特征在于,所述向該CPU所在出接口 板的FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)有足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文之前,該 方法進(jìn)一步包括判斷是否已向該CPU所在出接口板的FPGA發(fā)送過(guò)表示該CPU轉(zhuǎn)發(fā)有 足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文,如果沒(méi)有,則執(zhí)行所述向該CPU所在出接 口板的FPGA發(fā)送過(guò)表示該CPU有足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文。
9、 如權(quán)利要求7所述的方法,其特征在于,所述向?qū)?yīng)的入接口板發(fā) 送表示該CPU有足夠轉(zhuǎn)發(fā)能力的板間控制報(bào)文之后,該方法進(jìn)一步包括入接口板保持當(dāng)前向所述出接口板發(fā)送的報(bào)文流量、或增加向所述出接 口板發(fā)送的報(bào)文流量。
10、 如權(quán)利要求6所述的方法,其特征在于,所述上限閾值小于等于總 存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)與報(bào)文到達(dá)對(duì)端時(shí)間內(nèi)所需最大內(nèi)存空間所對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)數(shù)量之差;所述下限閾值大于等于報(bào)文到達(dá)對(duì)端時(shí)間內(nèi)CPU能夠處理的最大報(bào)文 數(shù)量。
11、 如權(quán)利要求l所述的方法,其特征在于,所述存儲(chǔ)狀態(tài)標(biāo)識(shí)為緩沖 區(qū)描述BD。
12、 一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的裝置,用于分布式路由系統(tǒng)中的出接 口,其特征在于,該裝置包括內(nèi)存和CPU,其中,所述內(nèi)存中的各內(nèi)存空間分別對(duì)應(yīng)不同存儲(chǔ)狀態(tài)標(biāo)識(shí);所述CPU接收到報(bào)文后,將該報(bào)文存儲(chǔ)在空閑存儲(chǔ)狀態(tài)標(biāo)識(shí)所對(duì)應(yīng)的內(nèi)存空間中,并將該存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為已用狀態(tài);在完成報(bào)文的處理后,將存儲(chǔ)該報(bào)文的內(nèi)存空間所對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為空閑狀態(tài);所述CPU檢測(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否達(dá)到預(yù)設(shè)的上限閾值;當(dāng)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)達(dá)到預(yù)設(shè)的上限閾值時(shí),確定該CPU的轉(zhuǎn)發(fā)能力不足。
13、 如權(quán)利要求12所述的裝置,其特征在于,所述CPU在將存儲(chǔ)狀態(tài) 標(biāo)識(shí)設(shè)置為已用狀態(tài)之后,執(zhí)行所述檢測(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否 達(dá)到預(yù)設(shè)的上限閾值。
14、 如權(quán)利要求13所述的裝置,其特征在于,該裝置進(jìn)一步包括現(xiàn) 場(chǎng)可編程門(mén)陣列FPGA;所述CPU在確定其轉(zhuǎn)發(fā)能力不足之后,進(jìn)一步向所述FPGA發(fā)送表示 該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文;所述FPGA向?qū)?yīng)的外部入接口發(fā)送表示所述CPU轉(zhuǎn)發(fā)能力不足的板 間控制報(bào)文。
15、 如權(quán)利要求14所述的裝置,其特征在于,所述CPU向所述FPGA 發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文之前,進(jìn)一步判斷是否已向 所述FPGA發(fā)送過(guò)所述表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文,如果沒(méi) 有,則執(zhí)行所述向FPGA發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文。
16、 如權(quán)利要求14或15所述的裝置,其特征在于,所述CPU將對(duì)應(yīng) 的存儲(chǔ)狀態(tài)標(biāo)識(shí)設(shè)置為空閑狀態(tài)之后,進(jìn)一步4企測(cè)出接口板CPU側(cè)已用狀 態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)總數(shù)是否降至預(yù)設(shè)的下限閾值;當(dāng)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo) 識(shí)總數(shù)降至預(yù)設(shè)的下限閾值時(shí),確定該CPU有足夠的轉(zhuǎn)發(fā)能力。
17、 如權(quán)利要求16所述的裝置,其特征在于,所述CPU在確定該CPU有足夠的轉(zhuǎn)發(fā)能力之后,進(jìn)一步向所述FPGA 發(fā)送表示該CPU轉(zhuǎn)發(fā)有足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào)文;所述FPGA向?qū)?yīng)的外部入接口板發(fā)送表示所述CPU有足夠轉(zhuǎn)發(fā)能力 的板間控制報(bào)文。
18、 如權(quán)利要求17所述的裝置,其特征在于,所述CPU在向所述FPGA 發(fā)送表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文之前,進(jìn)一步判斷是否已向 所述FPGA發(fā)送過(guò)表示該CPU轉(zhuǎn)發(fā)能力不足的板內(nèi)控制報(bào)文,如果沒(méi)有, 則執(zhí)行所述向所述FPGA發(fā)送過(guò)表示該CPU有足夠轉(zhuǎn)發(fā)能力的板內(nèi)控制報(bào) 文。
19、 如權(quán)利要求16所述的裝置,其特征在于,所述上限閾值小于等于總存儲(chǔ)狀態(tài)標(biāo)識(shí)數(shù)量與報(bào)文到達(dá)對(duì)端時(shí)間內(nèi)所 需最大內(nèi)存空間所對(duì)應(yīng)的存儲(chǔ)狀態(tài)標(biāo)識(shí)數(shù)量之差;所述下限閾值大于等于報(bào)文到達(dá)對(duì)端時(shí)間內(nèi)CPU能夠處理的最大報(bào)文數(shù)量。
20、 如權(quán)利要求12所述的裝置,其特征在于,所述存儲(chǔ)狀態(tài)標(biāo)識(shí)為緩 沖區(qū)描述BD。
全文摘要
本發(fā)明公開(kāi)了一種實(shí)現(xiàn)轉(zhuǎn)發(fā)能力動(dòng)態(tài)檢測(cè)的方法和裝置。本發(fā)明通過(guò)探測(cè)CPU側(cè)對(duì)應(yīng)各內(nèi)存空間的存儲(chǔ)狀態(tài)標(biāo)識(shí)狀態(tài)即可檢測(cè)該CPU的當(dāng)前處理能力,從而能夠獲得該CPU的轉(zhuǎn)發(fā)能力。這樣,將出接口CPU轉(zhuǎn)發(fā)能力通知對(duì)應(yīng)的各入接口,用以各入接口確定自身向該出接口所發(fā)送的報(bào)文流量,以有效的實(shí)現(xiàn)板間流控,保證對(duì)應(yīng)的所有入接口的報(bào)文流量之和不會(huì)超出出接口的CPU轉(zhuǎn)發(fā)能力,為避免出接口處丟包提供保障,避免交換網(wǎng)流量浪費(fèi)。而且,當(dāng)CPU側(cè)已用狀態(tài)的存儲(chǔ)狀態(tài)標(biāo)識(shí)少于一定數(shù)量時(shí),還可通知對(duì)應(yīng)的各入接口增加傳輸?shù)膱?bào)文總量,從而能夠避免出接口CPU轉(zhuǎn)發(fā)能力的浪費(fèi)。
文檔編號(hào)H04L12/56GK101188560SQ20071017981
公開(kāi)日2008年5月28日 申請(qǐng)日期2007年12月18日 優(yōu)先權(quán)日2007年12月18日
發(fā)明者張德寧, 廣 趙, 鄧新紅 申請(qǐng)人:杭州華三通信技術(shù)有限公司