專利名稱:一種ef隊(duì)列的實(shí)現(xiàn)方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通信技術(shù)領(lǐng)域,特別涉及一種EF隊(duì)列的實(shí)現(xiàn)方法和設(shè)備。
背景技術(shù):
在采用FPGA(Field Programmable Gate Array,現(xiàn)場可編程陣列)作為核心完成高速報(bào)文轉(zhuǎn)發(fā)的網(wǎng)絡(luò)設(shè)備(路由器、防火墻等)中,將以前由CPU(CentralProcessingUnit,中央處理器)軟件實(shí)現(xiàn)的報(bào)文轉(zhuǎn)發(fā)、業(yè)務(wù)等處理下移到FPGA轉(zhuǎn)發(fā)引擎上來實(shí)現(xiàn)。FPGA轉(zhuǎn)發(fā)引擎能夠快速處理報(bào)文,但難以支撐復(fù)雜業(yè)務(wù),且FPGA資源較為有限。CPU將控制信息下發(fā)到FPGA,F(xiàn)PGA根據(jù)這些控制信息對報(bào)文進(jìn)行轉(zhuǎn)發(fā)和業(yè)務(wù)處理。如圖I所示,為現(xiàn)有技術(shù)中FPGA轉(zhuǎn)發(fā)引擎數(shù)據(jù)平面控制平面的示意圖。其中,具體的報(bào)文處理過程如下 FPGA轉(zhuǎn)發(fā)引擎收到報(bào)文(即圖I中所示的步驟I),如果該報(bào)文是首包,或者本機(jī)報(bào)文,或者根據(jù)控制平面的信息確定該報(bào)文是需要上送CPU的報(bào)文,則將該報(bào)文上送CPU(即圖I中所示的步驟2),CPU將處理后的報(bào)文下發(fā)到FPGA轉(zhuǎn)發(fā)引擎的數(shù)據(jù)平面(即圖I中所示的步驟3),數(shù)據(jù)平面查詢控制平面獲取控制信息,并將統(tǒng)計(jì)信息等寫回控制平面(即圖I中所示的步驟7和8),然后,數(shù)據(jù)平面將處理后的報(bào)文進(jìn)行發(fā)送(即圖I中所示的步驟4)。后續(xù)報(bào)文都會(huì)按照控制平面的控制信息進(jìn)行處理。需要指出的是,上述的FPGA轉(zhuǎn)發(fā)引擎的控制平面中的控制信息是由CPU協(xié)助下發(fā)的,而FPGA轉(zhuǎn)發(fā)引擎也會(huì)向CPU進(jìn)行相應(yīng)的信息反饋,具體說明如下一方面,CPU會(huì)將配置信息和控制信息,一并下發(fā)到FPGA轉(zhuǎn)發(fā)引擎的控制平面(即圖I中所示的步驟5),用于指導(dǎo)數(shù)據(jù)平面進(jìn)行報(bào)文處理。另一方面,控制平面也會(huì)將FPGA轉(zhuǎn)發(fā)引擎的狀態(tài)信息、統(tǒng)計(jì)信息等上送到CPU(即圖I中所示的步驟6)。在具體應(yīng)用中,為了適應(yīng)復(fù)雜的網(wǎng)絡(luò)環(huán)境,豐富的QoS (Quality of service,服務(wù)質(zhì)量)功能是路由器必不可少的特性。在QoS擁塞管理中,CBQ (Class Based Queuing,基于類的隊(duì)列)是對WFQ(Weighted Fair Queuing,加權(quán)公平排隊(duì))功能的擴(kuò)展,為用戶提供了定義類的支持。在網(wǎng)絡(luò)擁塞時(shí),CBQ根據(jù)用戶定義的類規(guī)則對報(bào)文進(jìn)行匹配,并使其進(jìn)入相應(yīng)的隊(duì)列,在入隊(duì)列之前必須進(jìn)行擁塞避免機(jī)制和帶寬限制的檢查。在報(bào)文出隊(duì)列時(shí),加權(quán)公平調(diào)度每個(gè)類對應(yīng)的隊(duì)列中的報(bào)文。CBQ包括以下隊(duì)列緊急隊(duì)列CBQ提供一個(gè)緊急隊(duì)列,緊急報(bào)文入該隊(duì)列,該隊(duì)列采用FIF0(FirstInput First Output,先入先出)調(diào)度,沒有帶寬限制。BQ(Bandwidth Queuing,帶寬保證隊(duì)列)即 AF(Assured Forwarding,確保轉(zhuǎn)發(fā))隊(duì)列。為AF業(yè)務(wù)提供嚴(yán)格、精確的帶寬保證,并且保證各類AF業(yè)務(wù)之間按一定的比例關(guān)系進(jìn)行隊(duì)列調(diào)度。
缺省隊(duì)列一個(gè)WFQ(Weighted Fair Queuing,加權(quán)公平隊(duì)列)隊(duì)列,用來支撐BE (Best Effort,盡力服務(wù))業(yè)務(wù),使用接口剩余帶寬進(jìn)行發(fā)送。LLQ (Low Latency Queuing,低延遲隊(duì)列)即 EF (Expedited Forwarding,快速轉(zhuǎn)發(fā))隊(duì)列。如果CBQ加權(quán)公平對待所有類的隊(duì)列,實(shí)時(shí)業(yè)務(wù)報(bào)文(包括語音與視頻業(yè)務(wù),對延遲比較敏感)就可能得不到及時(shí)發(fā)送。為此引入一個(gè)EF隊(duì)列,為實(shí)時(shí)業(yè)務(wù)報(bào)文提供嚴(yán)格優(yōu)先發(fā)送服務(wù)。LLQ將嚴(yán)格優(yōu)先隊(duì)列機(jī)制與CBQ結(jié)合起來使用,用戶在定義類時(shí)可以指定其享受嚴(yán)格優(yōu)先服務(wù),這樣的類稱作優(yōu)先類。所有優(yōu)先類的報(bào)文將進(jìn)入同一個(gè)優(yōu)先隊(duì)列,在入隊(duì)列之前需對各類報(bào)文進(jìn)行帶寬限制的檢查。報(bào)文出隊(duì)列時(shí),將首先發(fā)送優(yōu)先隊(duì)列中的報(bào)文,直到發(fā)送完后才發(fā)送其他類對應(yīng)的隊(duì)列的報(bào)文。為了不讓其他隊(duì)列中的報(bào)文延遲時(shí)間過長,在使用LLQ時(shí)將會(huì)為每個(gè)優(yōu)先類指定可用最大帶 寬,該帶寬值用于擁塞發(fā)生時(shí)監(jiān)管流量。如果擁塞未發(fā)生,優(yōu)先類允許使用超過分配的帶寬。如果擁塞發(fā)生,優(yōu)先類超過分配帶寬的數(shù)據(jù)包將被丟棄。在接口上,用戶可以定義多個(gè)類規(guī)則,并分別為其指定EF隊(duì)列及其帶寬,這樣,就需要根據(jù)用戶配置為接口分配多個(gè)EF隊(duì)列。受FPGA資源限制,F(xiàn)PGA隊(duì)列數(shù)量較為有限,因此,現(xiàn)有技術(shù)提出了一種可以節(jié)約FPGA隊(duì)列資源的EF隊(duì)列實(shí)現(xiàn)方法,同時(shí),降低了 FPGA隊(duì)列調(diào)度的復(fù)雜度。在接口上,當(dāng)用戶定義多個(gè)類規(guī)則,并分別為其指定EF隊(duì)列時(shí),根據(jù)用戶配置為接口上的每個(gè)類規(guī)則都分配一個(gè)相應(yīng)的EF隊(duì)列。報(bào)文入隊(duì)處理流程如下當(dāng)報(bào)文匹配某個(gè)類規(guī)則,需要入指定EF隊(duì)列時(shí),首先判斷該EF隊(duì)列狀態(tài)。如果隊(duì)列未擁塞(隊(duì)列為空),則將報(bào)文直接入隊(duì);如果隊(duì)列擁塞(隊(duì)列不空),則需要根據(jù)配置的帶寬對報(bào)文進(jìn)行評估,相當(dāng)于CAR (Committed Access Rate,約定訪問速率)評估。如果評估結(jié)果為超過指定帶寬,則將報(bào)文丟棄,否則,將報(bào)文入隊(duì)。在實(shí)現(xiàn)本發(fā)明的過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少存在以下問題在現(xiàn)有技術(shù)中,接口下的每個(gè)EF隊(duì)列都占用一個(gè)FPGA隊(duì)列,浪費(fèi)FPGA隊(duì)列資源,同時(shí),由于需要調(diào)度多個(gè)FPGA EF隊(duì)列,還增加了隊(duì)列調(diào)度處理的復(fù)雜度。
發(fā)明內(nèi)容
本發(fā)明提供一種EF隊(duì)列的實(shí)現(xiàn)方法和設(shè)備,解決現(xiàn)有技術(shù)中各EF隊(duì)列需要分別占用FPGA隊(duì)列所帶來的資源浪費(fèi)和調(diào)度復(fù)雜的問題。為達(dá)到上述目的,本發(fā)明一方面提供了一種EF隊(duì)列的實(shí)現(xiàn)方法,至少包括以下步驟當(dāng)接收到在現(xiàn)場可編程門陣列FPGA的接口上對類規(guī)則配置EF隊(duì)列及其帶寬的配置信息時(shí),中央處理器CPU判斷所述接口是否已經(jīng)分配了 FPGA EF隊(duì)列;如果判斷結(jié)果為否,所述CPU為所述接口分配一個(gè)FPGA EF隊(duì)列,并設(shè)置所述FPGAEF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值;所述CPU向所述接口下發(fā)相應(yīng)的約定訪問速率流量策略表項(xiàng),為所述接口配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列。另一方面,本發(fā)明還提供了一種報(bào)文轉(zhuǎn)發(fā)系統(tǒng),包括CPU和FPGA,其中,所述CPU,包括
接收模塊,用于接收在所述FPGA的接口上配置EF隊(duì)列及其帶寬的配置信息;判斷模塊,用于在所述接收模塊接收到在FPGA的接口上對類規(guī)則配置EF隊(duì)列及其帶寬的配置信息時(shí),判斷所述接口是否已經(jīng)分配了 FPGA EF隊(duì)列;第一配置模塊,用于在所述判斷模塊的判斷結(jié)果為否時(shí),為所述接口分配一個(gè)FPGAEF隊(duì)列,并設(shè)置所述FPGAEF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值;發(fā)送模塊,用于根據(jù)所述第一配置模塊的配置結(jié)果,向所述接口下發(fā)相應(yīng)的流量策略表項(xiàng),為所述接口配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列。與現(xiàn)有技術(shù)相比,本發(fā)明所提出的技術(shù)方案具有以下優(yōu)點(diǎn)通過應(yīng)用本發(fā)明的技術(shù)方案,當(dāng)在FPGA的一個(gè)接口上定義多個(gè)類規(guī)則,并分別指定EF隊(duì)列時(shí),CPU在該接口上采用CAR方式將其實(shí)現(xiàn)為多個(gè)虛擬EF隊(duì)列,同時(shí),CPU只為該接口分配一個(gè)FPGA EF隊(duì)列,并設(shè)置該FPGA EF隊(duì)列的帶寬值為各虛擬EF隊(duì)列的帶寬值之和,從而,使各虛擬EF隊(duì)列共享該FPGAEF隊(duì)列的資源。通過這樣的處理,不僅可以節(jié)省FPGA隊(duì)列資源,而且,在進(jìn)行隊(duì)列調(diào)度時(shí),由于每個(gè)接口只有一個(gè)FPGA EF隊(duì)列,即采用嚴(yán)格優(yōu)先調(diào)度的隊(duì)列只有一個(gè),不必考慮多個(gè)嚴(yán)格優(yōu)先調(diào)度隊(duì)列之間的公平調(diào)度問題,降低了隊(duì)列調(diào)度算法的復(fù)雜度。
圖I為現(xiàn)有技術(shù)中FPGA轉(zhuǎn)發(fā)引擎數(shù)據(jù)平面控制平面的示意圖;圖2為本發(fā)明實(shí)施例所提出的一種EF隊(duì)列的實(shí)現(xiàn)方法的流程示意圖;圖3為本發(fā)明實(shí)施例所提出的一種EF隊(duì)列的實(shí)現(xiàn)方法中的隊(duì)列配置過程的流程示意圖;圖4為本發(fā)明實(shí)施例所提出的一種EF隊(duì)列在FPGA中的配置的示意圖;圖5為本發(fā)明實(shí)施例所提出的一種具體應(yīng)用場景下的虛擬EF隊(duì)列處理場景的示意圖;圖6為本發(fā)明實(shí)施例所提出的一種EF隊(duì)列的實(shí)現(xiàn)方法中的報(bào)文處理過程的流程示意圖;
圖7為本發(fā)明實(shí)施例所提出的一種報(bào)文轉(zhuǎn)發(fā)系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式針對現(xiàn)有技術(shù)中每個(gè)EF隊(duì)列都需要分別占用一個(gè)FPGA隊(duì)列,從而造成FPGA資源浪費(fèi),以及FPGA隊(duì)列調(diào)度困難的問題,本發(fā)明提出一種EF隊(duì)列的實(shí)現(xiàn)方法,通過在一個(gè)接口上為不同的類規(guī)則分別建立虛擬EF隊(duì)列,并將多個(gè)虛擬EF隊(duì)列指定到同一個(gè)FPGA EF隊(duì)列的方式,實(shí)現(xiàn)多個(gè)虛擬EF隊(duì)列對同一個(gè)FPGA EF隊(duì)列的共享,從而,節(jié)約寶貴的FPGA隊(duì)列資源,并且,可以降低隊(duì)列調(diào)度算法的復(fù)雜度。如圖2所示,為本發(fā)明實(shí)施例所提出的一種EF隊(duì)列的實(shí)現(xiàn)方法的流程示意圖,該方法具體包括以下步驟步驟S201、當(dāng)接收到在FPGA的接口上對類規(guī)則配置EF隊(duì)列及其帶寬的配置信息時(shí),CPU判斷所述接口是否已經(jīng)分配了 FPGA EF隊(duì)列。如果判斷結(jié)果為否,則執(zhí)行步驟S202 ;如果判斷結(jié)果為是,則執(zhí)彳了步驟S204。在本步驟中,相應(yīng)的類規(guī)則配置EF隊(duì)列及其帶寬的配置信息可以是直接配置給FPGA的,也可以是通過第三方網(wǎng)絡(luò)設(shè)備所發(fā)送的配置指令,具體的配置信息的形式變化并不會(huì)影響本發(fā)明的保護(hù)范圍。步驟S202、所述CPU為所述接口分配一個(gè)FPGA E F隊(duì)列,并設(shè)置所述FPGAEF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值。本步驟為CPU對FPGA的FPGA EF隊(duì)列配置過程。由于該接口之前并沒有分配FPGA EF隊(duì)列,因此,需要先為該接口分配一個(gè)FPGAEF隊(duì)列,作為所配置的虛擬EF隊(duì)列所共享的FPGA隊(duì)列資源,并根據(jù)配置信息所配置的帶寬值設(shè)定該FPGA EF隊(duì)列的帶寬值,即保證該FPGA EF隊(duì)列可以為該虛擬EF隊(duì)列提供足夠的FPGA隊(duì)列資源。步驟S203、所述CPU向所述接口下發(fā)相應(yīng)的流量策略表項(xiàng),為所述接口配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列。需要指出的是,本步驟所提出的流量策略表項(xiàng)實(shí)現(xiàn)了對虛擬EF隊(duì)列的流量進(jìn)出速率限定,通過這樣的流量策略表項(xiàng),可以實(shí)現(xiàn)對該虛擬EF隊(duì)列所接收到的報(bào)文進(jìn)行流量評估,從而,確定該虛擬EF隊(duì)列所接收到的報(bào)文的流量是否超過了該虛擬EF隊(duì)列的預(yù)設(shè)帶寬,在具體的處理場景中,這樣的流量策略表項(xiàng)可以具體為CAR策略表項(xiàng),或者其他能夠設(shè)定流量限制的策略類型,具體策略表項(xiàng)類型的變化,并不會(huì)影響本發(fā)明的保護(hù)范圍。本步驟為CPU對FPGA的虛擬EF隊(duì)列配置過程。 通過前述的步驟S201,CPU確認(rèn)需要為該接口配置EF隊(duì)列,通過前述的步驟S202,CPU通過對該接口配置FPGA EF隊(duì)列,并設(shè)置相應(yīng)的帶寬,為在該接口配置虛擬EF隊(duì)列準(zhǔn)備了相應(yīng)的FPGA隊(duì)列資源,最后,通過本步驟,將相應(yīng)的流量策略表項(xiàng)發(fā)給FPGA,在FPGA的相應(yīng)接口上實(shí)現(xiàn)相應(yīng)的虛擬EF隊(duì)列的配置,同時(shí),通過將虛擬EF隊(duì)列指定到步驟S202中所配置的FPGAEF隊(duì)列,來實(shí)現(xiàn)虛擬EF隊(duì)列對FPGAEF隊(duì)列資源的共享。步驟S204、所述CPU調(diào)整所述接口上所分配的FPGA EF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值和所述接口上已配置的EF隊(duì)列的帶寬值之和。本步驟為CPU對FPGA的FPGA EF隊(duì)列的帶寬調(diào)整過程。由于該接口之前已經(jīng)分配了 FPGA EF隊(duì)列,但是該FPGA EF隊(duì)列的帶寬是按照之前該接口上所配置的虛擬EF隊(duì)列的資源需要進(jìn)行配置的,由于需要新增虛擬EF隊(duì)列,其所共享的FPGA EF隊(duì)列的帶寬需求必然進(jìn)一步增加,因此,需要對FPGA EF隊(duì)列的帶寬值進(jìn)行調(diào)整,其調(diào)整后的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值和該接口上已配置的EF隊(duì)列的帶寬值之和,即保證在新增虛擬EF隊(duì)列后,該FPGA EF隊(duì)列可以同時(shí)為所有的虛擬EF隊(duì)列提供FPGA隊(duì)列資源。本步驟完成后,CPU同樣執(zhí)行步驟S203,按照相應(yīng)配置信息,對該接口增加相應(yīng)的流量策略表項(xiàng)。通過前述的步驟S201,CPU根據(jù)接收到的配置信息確認(rèn)需要為該接口配置EF隊(duì)列,同時(shí),判斷之前已經(jīng)為該接口配置了 FPGA EF隊(duì)列,通過前述的步驟S204,CPU通過對該接口已配置的FPGA EF隊(duì)列的帶寬值進(jìn)行調(diào)整,為在該接口配置虛擬EF隊(duì)列準(zhǔn)備了相應(yīng)的FPGA隊(duì)列資源,最后,通過步驟S203,將相應(yīng)的流量策略表項(xiàng)發(fā)給FPGA,并在FPGA的相應(yīng)接口上實(shí)現(xiàn)相應(yīng)的虛擬EF隊(duì)列的配置。通過上述的步驟S201至步驟S204的處理,CPU完成了在相應(yīng)的接口上對于虛擬EF隊(duì)列的配置,并對各虛擬EF隊(duì)列指定了共享的FPGA EF隊(duì)列。通過這樣的處理,不僅可以節(jié)省FPGA隊(duì)列資源,而且,在進(jìn)行隊(duì)列調(diào)度時(shí),由于每個(gè)接口只有一個(gè)FPGA EF隊(duì)列,即采用嚴(yán)格優(yōu)先調(diào)度的隊(duì)列只有一個(gè),不必考慮多個(gè)嚴(yán)格優(yōu)先調(diào)度隊(duì)列之間的公平調(diào)度問題,降低了隊(duì)列調(diào)度算法的復(fù)雜度。進(jìn)一步的,本發(fā) 明還提出了相應(yīng)的虛擬EF隊(duì)列,以及FPGA EF隊(duì)列的取消配置流程,具體說明如下。當(dāng)接收到在所述接口上對虛擬EF隊(duì)列的取消配置信息時(shí),所述CPU在所述接口上對取消配置信息所對應(yīng)的流量策略表項(xiàng)進(jìn)行刪除,取消相對應(yīng)的虛擬EF隊(duì)列。在本步驟中,相應(yīng)的對虛擬EF隊(duì)列的取消配置信息可以是直接配置給FPGA的,也可以是通過第三方網(wǎng)絡(luò)設(shè)備所發(fā)送的配置指令,具體的配置信息的形式變化并不會(huì)影響本發(fā)明的保護(hù)范圍。在取消了相應(yīng)的虛擬EF隊(duì)列后,CPU判斷當(dāng)前該接口上是否還剩余至少一個(gè)虛擬EF隊(duì)列ο如果判斷結(jié)果為否,則表明該接口上不再有任何需要共享該FPGA EF隊(duì)列的虛擬EF隊(duì)列,因此,該接口上也就沒有了繼續(xù)配置FPGA EF隊(duì)列的必要,為了及時(shí)回收FPGA隊(duì)列資源,CPU釋放該接口上當(dāng)前所分配的FPGA EF隊(duì)列。如果判斷結(jié)果為是,則表明該接口上還有其他需要共享該FPGA EF隊(duì)列的虛擬EF隊(duì)列,但由于已經(jīng)取消了一個(gè)虛擬EF隊(duì)列,剩余的其他虛擬EF隊(duì)列所需要占用的資源必然減小,因此,為了節(jié)約寶貴的FPGA隊(duì)列資源,需要對為當(dāng)前該接口所配置的FPGA EF隊(duì)列的帶寬資源進(jìn)行及時(shí)調(diào)整,具體的調(diào)整同樣由CPU通過以下過程來實(shí)現(xiàn)。CPU調(diào)整所述接口已經(jīng)分配的FPGA EF隊(duì)列的帶寬值,調(diào)整后的帶寬值為該接口當(dāng)前剩余的虛擬EF隊(duì)列的帶寬值之和,即在取消虛擬EF隊(duì)列后,該接口所剩余的全部虛擬EF隊(duì)列的帶寬值之和。通過以上的處理過程,在對一個(gè)接口取消虛擬EF隊(duì)列的配置后,CPU及時(shí)對該接口所分配的FPGA EF隊(duì)列的帶寬進(jìn)行調(diào)整,將被取消的虛擬EF隊(duì)列所共享的FPGA隊(duì)列資源進(jìn)行釋放,直至在該接口上沒有虛擬EF隊(duì)列后,將為該接口分配的FPGA EF隊(duì)列釋放,通過這樣的處理,CPU可以根據(jù)接口上的虛擬EF隊(duì)列的配置情況,及時(shí)調(diào)整為該接口所分配的FPGA EF隊(duì)列的帶寬值,從而,最大限度的節(jié)約為相應(yīng)的接口所分配的FPGA隊(duì)列資源。進(jìn)一步的,在所述CPU完成上述的步驟S203的處理,即為所述接口配置了虛擬EF隊(duì)列,并將各虛擬EF隊(duì)列指定到共享的FPGA EF隊(duì)列之后,本發(fā)明還進(jìn)一步提出了在FPGA轉(zhuǎn)發(fā)引擎上通過相應(yīng)的虛擬EF隊(duì)列進(jìn)行報(bào)文處理的技術(shù)方案,具體包括以下步驟(I)當(dāng)FPGA轉(zhuǎn)發(fā)引擎(以下簡稱FPGA)上配置了相應(yīng)的虛擬EF隊(duì)列和FPGA EF隊(duì)列的接口接收到匹配優(yōu)先類的報(bào)文時(shí),所述FPGA確定所述報(bào)文所對應(yīng)的虛擬EF隊(duì)列,及所述虛擬EF隊(duì)列所指定到的所述FPGA EF隊(duì)列。通過此處理,F(xiàn)PGA完成對接收到的報(bào)文所對應(yīng)的隊(duì)列的識別,由于之前所配置的各虛擬EF隊(duì)列分別對應(yīng)了不同的類規(guī)則,因此,可以根據(jù)相應(yīng)的配置找到報(bào)文相對應(yīng)的虛擬EF隊(duì)列,并且,由于各虛擬EF隊(duì)列均制定了 FPGAEF隊(duì)列,在確定了虛擬EF隊(duì)列后,相應(yīng)的FPGA EF隊(duì)列也就隨之確定。需要指出的是,在本發(fā)明實(shí)施例所提出的技術(shù)方案中,在一個(gè)接口上,所有的虛擬EF隊(duì)列均指定到同一個(gè)FPGA EF隊(duì)列,因此,只要是此接口所接收到的報(bào)文,無論對應(yīng)哪個(gè)虛擬EF隊(duì)列,最終所指定到的FPGA EF隊(duì)列均相同。(2)所述FPGA根據(jù)所述虛擬EF隊(duì)列所對應(yīng)的流量策略表項(xiàng)對所述報(bào)文的流量進(jìn)行評估。具體的,F(xiàn)PGA對當(dāng)前虛擬EF隊(duì)列所接收到的報(bào)文需要占用的帶寬進(jìn)行評估,然后將評估結(jié)果與前述步驟S203為該虛擬EF隊(duì)列所設(shè)置的流量策略表項(xiàng)進(jìn)行比較,從而,確定當(dāng)前該虛擬EF隊(duì)列所接收到的報(bào)文的流量是否超過了該虛擬EF隊(duì)列的分配帶寬。(3)如果所述報(bào)文的流量未超過所述虛擬EF隊(duì)列的分配帶寬,所述FPGA對所述報(bào)文添加第一標(biāo)識,如果所述報(bào)文的流量超過了所述虛擬EF隊(duì)列的分配帶寬,所述FPGA對所述報(bào)文添加第二標(biāo)識。通過這樣的標(biāo)識添加處理,將超過分配帶寬的流量和未超過分配帶寬的流量進(jìn)行區(qū)分,以便在后續(xù)步驟中進(jìn)行區(qū)分處理。FPGA對于添加了所述第一標(biāo)識的報(bào)文直接發(fā)送到所述FPGA EF隊(duì)列;對于添加了所述第二標(biāo)識的報(bào)文,根據(jù)所述FPGA EF隊(duì)列的擁塞狀態(tài),按照預(yù)設(shè)的處理策略進(jìn)行相應(yīng)的處理。由于添加第一標(biāo)識的報(bào)文沒有超過分配帶寬,因此,可以直接進(jìn)行后續(xù)處理。而添加第二標(biāo)識的報(bào)文超過了分配帶寬,之前并沒有為這樣的流量分配足夠的帶寬資源,不能直接進(jìn)行后續(xù)處理,而由于后續(xù)的FPGA EF隊(duì)列是多個(gè)虛擬EF隊(duì)列所共享的,因此,可以識別當(dāng)前分配給其他虛擬EF隊(duì)列的資源是否閑置,如果閑置,則可以暫時(shí)占用這樣的閑置資源進(jìn)行超過分配帶寬的報(bào)文的傳輸,相反,如果沒有閑置資源,則直接將超過分配帶寬的報(bào)文進(jìn)行丟棄。在具體的處理場景中,此處所提及的對于添加了第二標(biāo)識的報(bào)文進(jìn)行處理所應(yīng)用的處理策略,具體可以為所述FPGA判斷所述FPGA EF隊(duì)列當(dāng)前是否處于擁塞狀態(tài)。如果判斷結(jié)果為否,所述FPGA將添加了所述第二標(biāo)識的報(bào)文直接發(fā)送到所述FPGA EF 隊(duì)列。如果判斷結(jié)果為是,所述FPGA將添加了所述第二標(biāo)識的報(bào)文丟棄。與現(xiàn)有技術(shù)相比,本發(fā)明所提出的技術(shù)方案具有以下優(yōu)點(diǎn)通過應(yīng)用本發(fā)明的技術(shù)方案,當(dāng)在FPGA的一個(gè)接口上定義多個(gè)類規(guī)則,并分別指定EF隊(duì)列時(shí),CPU在該接口上采用CAR方式將其實(shí)現(xiàn)為多個(gè)虛擬EF隊(duì)列,同時(shí),CPU只為該接口分配一個(gè)FPGA EF隊(duì)列,并設(shè)置該FPGA EF隊(duì)列的帶寬值為各虛擬EF隊(duì)列的帶寬值之和,從而,使各虛擬EF隊(duì)列共享該FPGAEF隊(duì)列的資源。通過這樣的處理,不僅可以節(jié)省 FPGA隊(duì)列資源,而且,在進(jìn)行隊(duì)列調(diào)度時(shí),由于每個(gè)接口只有一個(gè)FPGA EF隊(duì)列,即采用嚴(yán)格優(yōu)先調(diào)度的隊(duì)列只有一個(gè),不必考慮多個(gè)嚴(yán)格優(yōu)先調(diào)度隊(duì)列之間的公平調(diào)度問題,降低了隊(duì)列調(diào)度算法的復(fù)雜度。
為了進(jìn)一步闡述本發(fā)明的技術(shù)思想,現(xiàn)結(jié)合具體的應(yīng)用場景,對本發(fā)明的技術(shù)方案進(jìn)行說明。根據(jù)本發(fā)明實(shí)施例所提出的技術(shù)方案,對于FPGA轉(zhuǎn)發(fā)引擎的一個(gè)接口,如果同時(shí)定義了多個(gè)類規(guī)則,并分別為各類規(guī)則指定了 EF隊(duì)列及其帶寬,那么,可以采用約定流量(例如CAR)的方式,將這樣的EF隊(duì)列配置實(shí)現(xiàn)為多個(gè)虛擬EF隊(duì)列,并共享同一個(gè)FPGA EF隊(duì)列。這樣,可以節(jié)省寶貴的FPGA隊(duì)列資源,同時(shí),由于實(shí)際只有一個(gè)FPGAEF隊(duì)列配置給該接口,相應(yīng)的隊(duì)列調(diào)度復(fù)雜度也得到了降低。具體的,本發(fā)明實(shí)施例分別通過隊(duì)列配置和報(bào)文處理兩個(gè)階段對相應(yīng)的技術(shù)方案進(jìn)行說明。
I、隊(duì)列配置過程?;诒景l(fā)明實(shí)施例節(jié)約FPGA隊(duì)列資源的目的,限定對FPGA轉(zhuǎn)發(fā)引擎的每個(gè)接口最多只能分配一個(gè)FPGA EF隊(duì)列。當(dāng)該接口上配置第一個(gè)虛擬EF隊(duì)列時(shí),CPU可以為該接口分配一個(gè)FPGA EF隊(duì)列,作為該虛擬EF隊(duì)列所使用的FPGA隊(duì)列資源。后續(xù)再增加或取消虛擬EF隊(duì)列的配置時(shí),只需要調(diào)整該FPGA EF隊(duì)列的帶寬,匹配相應(yīng)的虛擬EF隊(duì)列的資源需求即可。而當(dāng)該接口上取消最后一個(gè)EF隊(duì)列配置時(shí),則表示該接口不再需要占用FPGA隊(duì)列資源,因此,取消該接口上所分配的FPGA EF隊(duì)列,即將配置給該接口的FPGA隊(duì)列資源進(jìn)行釋放?;谏鲜龅奶幚硭悸?,如圖3所示,為本發(fā)明實(shí)施例所提出的一種EF隊(duì)列的實(shí)現(xiàn)方法中的隊(duì)列配置過程的流程示意圖。步驟S301、接收到在一個(gè)接口上對某個(gè)類規(guī)則配置EF隊(duì)列及其帶寬的配置信息。步驟S302、CPU判斷該接口是否已經(jīng)分配了 FPGA EF隊(duì)列。如果否,則執(zhí)行步驟S303 ;如果是,則執(zhí)行步驟S304。步驟S303、CPU為該接口分配一個(gè)FPGA EF隊(duì)列。步驟S304、CPU設(shè)置該接口上所分配的FPGA EF隊(duì)列的帶寬,取值為EF隊(duì)列的配置下發(fā)后,該接口上EF隊(duì)列的帶寬之和。步驟S305、CPU根據(jù)前述配置的EF隊(duì)列帶寬向該接口下發(fā)FPGA CAR策略表項(xiàng),實(shí)現(xiàn)虛擬EF隊(duì)列的配置,并將該虛擬EF隊(duì)列指定到該接口所分配的FPGA EF隊(duì)列。通過這樣的處理,此接口上的EF隊(duì)列在FPGA中的配置如圖4所示。在此接口上,匹配某個(gè)類規(guī)則的報(bào)文需要進(jìn)入指定的EF隊(duì)列,而每個(gè)EF隊(duì)列在FPGA中用CAR實(shí)現(xiàn)為虛擬EF隊(duì)列,并且,此接口上所有的(虛擬)EF隊(duì)列共享I個(gè)FPGA EF隊(duì)列,該FPGA EF隊(duì)列的帶寬值為此接口上EF隊(duì)列的帶寬值之和。2、報(bào)文處理過程。按照現(xiàn)有技術(shù)中的配置,EF隊(duì)列的帶寬值用于在擁塞發(fā)生時(shí)監(jiān)管流量。如果發(fā)生擁塞,優(yōu)先類超過分配帶寬的數(shù)據(jù)包將被丟棄;如果未發(fā)生擁塞,允許優(yōu)先類使用超過分配的帶寬。
而在本發(fā)明實(shí)施例所提出的技術(shù)方案中,采用CAR等流量策略來實(shí)現(xiàn)虛擬EF隊(duì)列,對超出分配帶寬(例如CAR限速)的流量不能直接丟棄,否則,達(dá)不到未擁塞時(shí)允許優(yōu)先類使用超過分配的帶寬的目的?;谏鲜鏊悸罚瑢τ趫?bào)文流量的評估結(jié)果(例如CAR評估結(jié)果),對相應(yīng)的流量添加不同的流量標(biāo)識,例如,將報(bào)文所對應(yīng)的流量根據(jù)其是否超過相應(yīng)的虛擬EF隊(duì)列的分配帶寬,分別添加不同顏色的標(biāo)記,例如綠色標(biāo)記和紅色標(biāo)記,其中,綠色標(biāo)記代表未超過分配帶寬,紅色標(biāo)記代表已經(jīng)超出分配帶寬。相應(yīng)的虛擬EF隊(duì)列處理場景如圖5所示,報(bào)文通過虛擬EF隊(duì)列的CAR評估后,攜帶綠色或紅色標(biāo)記,到達(dá)指定FPGA EF隊(duì)列。標(biāo)記為綠色的報(bào)文直接入FPGA EF隊(duì)列;而在對標(biāo)記為紅色的報(bào)文進(jìn)行入隊(duì)處理前,需要先評估FPGA EF隊(duì)列的擁塞情況,如果當(dāng)前FPGA EF隊(duì)列長度達(dá)到或超過某個(gè)閾值(比如隊(duì)列允許最大長度的2/3),則認(rèn)為FPGA EF隊(duì)列發(fā)送擁塞,將標(biāo)記為紅色的報(bào)文直接丟棄;否則,認(rèn)為當(dāng)前FPGA EF隊(duì)列未擁塞,標(biāo)記為紅色的報(bào)文可以入FPGA EF隊(duì)列。最后,通過相應(yīng)的隊(duì)列調(diào)度處理將隊(duì)列中的報(bào)文出隊(duì)。基于上述的處理思路,如圖6所示,為本發(fā)明實(shí)施例所提出的一種EF隊(duì)列的實(shí)現(xiàn)方法中的報(bào)文處理過程的流程示意圖。步驟S601、FPGA轉(zhuǎn)發(fā)引擎的一個(gè)接口接收到報(bào)文。步驟S602、FPGA轉(zhuǎn)發(fā)引擎對該報(bào)文匹配優(yōu)先類,確定該報(bào)文所對應(yīng)的虛擬EF隊(duì)列,以及FPGA EF隊(duì)列的信息。步驟S603、FPGA轉(zhuǎn)發(fā)引擎根據(jù)相應(yīng)的虛擬EF隊(duì)列所對應(yīng)的CAR策略表項(xiàng),對該報(bào)文進(jìn)行CAR評估。步驟S604、FPGA轉(zhuǎn)發(fā)引擎確定當(dāng)前報(bào)文是否通過CAR評估。如果通過,即當(dāng)前報(bào)文的所對應(yīng)的流量沒有超過虛擬EF隊(duì)列的分配帶寬,則執(zhí)行步驟S605 ;如果沒有通過,即當(dāng)前報(bào)文的所對應(yīng)的流量超過了虛擬EF隊(duì)列的分配帶寬,則執(zhí)行步驟S606。步驟S605、FPGA轉(zhuǎn)發(fā)引擎為該報(bào)文添加綠色標(biāo)識。本步驟完成后,F(xiàn)PGA轉(zhuǎn)發(fā)引擎在對該報(bào)文進(jìn)行后續(xù)處理時(shí),可以直接執(zhí)行步驟S608。步驟S606、FPGA轉(zhuǎn)發(fā)引擎為該報(bào)文添加紅色標(biāo)識。本步驟完成后,F(xiàn)PGA轉(zhuǎn)發(fā)引擎在對該報(bào)文進(jìn)行后續(xù)處理時(shí),執(zhí)行步驟S607。步驟S607、FPGA轉(zhuǎn)發(fā)引擎判斷FPGA EF隊(duì)列當(dāng)前是否處于擁塞狀態(tài)。具體的判斷標(biāo)磚可以根據(jù)實(shí)際需要進(jìn)行設(shè)置,例如,F(xiàn)PGA轉(zhuǎn)發(fā)引擎評估FPGA EF隊(duì)列的擁塞情況,如果當(dāng)前FPGA EF隊(duì)列長度達(dá)到或超過某個(gè)閾值(比如隊(duì)列允許最大長度的2/3),則認(rèn)為FPGA EF隊(duì)列處于擁塞狀態(tài),相反,則認(rèn)為FPGA EF隊(duì)列未處于擁塞狀態(tài)。如果FPGA EF隊(duì)列當(dāng)前未處于擁塞狀態(tài),則執(zhí)行步驟S608。如果FPGA EF隊(duì)列當(dāng)前處于擁塞狀態(tài),執(zhí)行步驟S609。、
步驟S608、FPGA轉(zhuǎn)發(fā)引擎將該報(bào)文轉(zhuǎn)入FPGA EF隊(duì)列進(jìn)行轉(zhuǎn)發(fā)。步驟S609、FPGA轉(zhuǎn)發(fā)引擎將該報(bào)文丟棄。
與現(xiàn)有技術(shù)相比,本發(fā)明所提出的技術(shù)方案具有以下優(yōu)點(diǎn)通過應(yīng)用本發(fā)明的技術(shù)方案,當(dāng)在FPGA的一個(gè)接口上定義多個(gè)類規(guī)則,并分別指定EF隊(duì)列時(shí),CPU在該接口上采用CAR方式將其實(shí)現(xiàn)為多個(gè)虛擬EF隊(duì)列,同時(shí),CPU只為該接口分配一個(gè)FPGA EF隊(duì)列,并設(shè)置該FPGA EF隊(duì)列的帶寬值為各虛擬EF隊(duì)列的帶寬值之和,從而,使各虛擬EF隊(duì)列共享該FPGAEF隊(duì)列的資源。通過這樣的處理,不僅可以節(jié)省FPGA隊(duì)列資源,而且,在進(jìn)行隊(duì)列調(diào)度時(shí),由于每個(gè)接口只有一個(gè)FPGA EF隊(duì)列,即采用嚴(yán)格優(yōu)先調(diào)度的隊(duì)列只有一個(gè),不必考慮多個(gè)嚴(yán)格優(yōu)先調(diào)度隊(duì)列之間的公平調(diào)度問題,降低了隊(duì)列調(diào)度算法的復(fù)雜度。為了實(shí)現(xiàn)本發(fā)明的技術(shù)方案,本發(fā)明還提出了一種報(bào)文轉(zhuǎn)發(fā)系統(tǒng),包括CPU71和FPGA72,其結(jié)構(gòu)示意圖7所示。其中,所述CPU71,包括 接收模塊711,用于接收在所述FPGA的接口上配置EF隊(duì)列及其帶寬的配置信息;判斷模塊712,用于在所述接收模塊711接收到在FPGA的接口上對類規(guī)則配置EF隊(duì)列及其帶寬的配置信息時(shí),判斷所述接口是否已經(jīng)分配了 FPGAEF隊(duì)列;第一配置模塊713,用于在所述判斷模塊712的判斷結(jié)果為否時(shí),為所述接口分配一個(gè)FPGA EF隊(duì)列,并設(shè)置所述FPGA EF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值;發(fā)送模塊714,用于根據(jù)所述第一配置模塊713的配置結(jié)果,向所述接口下發(fā)相應(yīng)的流量策略表項(xiàng),為所述接口配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列。在另一種場景下,所述第一配置模塊713,還用于在所述判斷模塊712的判斷結(jié)果為是時(shí),調(diào)整所述接口上所分配的FPGA EF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值和所述接口上已配置的EF隊(duì)列的帶寬值之和;所述發(fā)送模塊714,還用于根據(jù)所述第一配置模塊713的調(diào)整結(jié)果,向所述接口下發(fā)相應(yīng)的流量策略表項(xiàng),為所述接口配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列。進(jìn)一步的,對應(yīng)于虛擬EF隊(duì)列取消配置的應(yīng)用場景所述接收模塊711,還用于接收在所述FPGA的接口上對虛擬EF隊(duì)列的取消配置信息;所述第一配置模塊713,還用于在所述接收模塊711接收到在所述接口上對虛擬EF隊(duì)列的取消配置信息時(shí),在所述接口上對所述取消配置信息所對應(yīng)的流量策略表項(xiàng)進(jìn)行刪除,取消相對應(yīng)的虛擬EF隊(duì)列;所述判斷模塊712,還用于在所述第一配置模塊713取消所述虛擬EF隊(duì)列之后,判斷所述接口上是否還剩余至少一個(gè)虛擬EF隊(duì)列,其中如果所述判斷模塊712的判斷結(jié)果為是,通知所述第一配置模塊713調(diào)整所述接口已經(jīng)分配的FPGA EF隊(duì)列的帶寬值為所述接口當(dāng)前剩余的虛擬EF隊(duì)列的帶寬值之和;如果所述判斷模塊712的判斷結(jié)果為否,則通知所述第一配置模塊713釋放所述接口上所分配的FPGA EF隊(duì)列。另一方面,所述FPGA72,包括
至少一個(gè)接口 721,用于接收和轉(zhuǎn)發(fā)報(bào)文;第二配置模塊722,用于接收所述CPU71所發(fā)送的與所述FPGA的一個(gè)接口 722相應(yīng)的流量策略表項(xiàng),為接口 722配置相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列;確定模塊723,用于在所述接口 721接收到匹配優(yōu)先類的報(bào)文時(shí),根據(jù)所述第二配置模塊722的配置信息確定所述報(bào)文所對應(yīng)的虛擬EF隊(duì)列,及所述虛擬EF隊(duì)列所指定的所述FPGA EF隊(duì)列;評估模塊724,用于根據(jù)所述第二配置模塊722所接收到的所述虛擬EF隊(duì)列所對應(yīng)的流量策略表項(xiàng),對所述報(bào)文的流量進(jìn)行評估 ;標(biāo)識模塊725,用于根據(jù)所述評估模塊724的評估結(jié)果,對未超過所述虛擬EF隊(duì)列的分配帶寬的報(bào)文添加第一標(biāo)識,對超過所述虛擬EF隊(duì)列的分配帶寬的流量添加第二標(biāo)識;處理模塊726,用于將添加了所述第一標(biāo)識的流量直接發(fā)送到所述FPGAEF隊(duì)列,根據(jù)所述FPGA EF隊(duì)列的擁塞狀態(tài),按照預(yù)設(shè)的處理策略對添加了所述第二標(biāo)識的流量進(jìn)行相應(yīng)的處理。在具體的應(yīng)用場景中,所述處理模塊726,具體用于判斷所述FPGA EF隊(duì)列當(dāng)前是否處于擁塞狀態(tài);如果判斷結(jié)果為否,將添加了所述第二標(biāo)識的流量直接發(fā)送到所述FPGAEF隊(duì)列;如果判斷結(jié)果為是,將添加了所述第二標(biāo)識的流量丟棄。與現(xiàn)有技術(shù)相比,本發(fā)明所提出的技術(shù)方案具有以下優(yōu)點(diǎn)通過應(yīng)用本發(fā)明的技術(shù)方案,當(dāng)在FPGA的一個(gè)接口上定義多個(gè)類規(guī)則,并分別指定EF隊(duì)列時(shí),CPU在該接口上采用CAR方式將其實(shí)現(xiàn)為多個(gè)虛擬EF隊(duì)列,同時(shí),CPU只為該接口分配一個(gè)FPGA EF隊(duì)列,并設(shè)置該FPGA EF隊(duì)列的帶寬值為各虛擬EF隊(duì)列的帶寬值之和,從而,使各虛擬EF隊(duì)列共享該FPGAEF隊(duì)列的資源。通過這樣的處理,不僅可以節(jié)省FPGA隊(duì)列資源,而且,在進(jìn)行隊(duì)列調(diào)度時(shí),由于每個(gè)接口只有一個(gè)FPGA EF隊(duì)列,即采用嚴(yán)格優(yōu)先調(diào)度的隊(duì)列只有一個(gè),不必考慮多個(gè)嚴(yán)格優(yōu)先調(diào)度隊(duì)列之間的公平調(diào)度問題,降低了隊(duì)列調(diào)度算法的復(fù)雜度。通過以上的實(shí)施方式的描述,本領(lǐng)域的技術(shù)人員可以清楚地了解到本發(fā)明可以通過硬件實(shí)現(xiàn),也可以借助軟件加必要的通用硬件平臺的方式來實(shí)現(xiàn)。基于這樣的理解,本發(fā)明的技術(shù)方案可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品可以存儲在一個(gè)非易失性存儲介質(zhì)(可以是⑶-R0M,U盤,移動(dòng)硬盤等)中,包括若干指令用以使得一臺計(jì)算機(jī)設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施場景所述的方法。本領(lǐng)域技術(shù)人員可以理解附圖只是一個(gè)優(yōu)選實(shí)施場景的示意圖,附圖中的模塊或流程并不一定是實(shí)施本發(fā)明所必須的。本領(lǐng)域技術(shù)人員可以理解實(shí)施場景中的裝置中的模塊可以按照實(shí)施場景描述進(jìn)行分布于實(shí)施場景的裝置中,也可以進(jìn)行相應(yīng)變化位于不同于本實(shí)施場景的一個(gè)或多個(gè)裝置中。上述實(shí)施場景的模塊可以合并為一個(gè)模塊,也可以進(jìn)一步拆分成多個(gè)子模塊。上述本發(fā)明序號僅僅為了描述,不代表實(shí)施場景的優(yōu)劣。以上公開的僅為本發(fā)明的幾個(gè)具體實(shí)施場景,但是,本發(fā)明并非局限于此,任何本領(lǐng)域的技術(shù)人員能思之的變化都應(yīng)落入本發(fā)明的保護(hù)范圍。 ·
權(quán)利要求
1.ー種加速轉(zhuǎn)發(fā)EF隊(duì)列的實(shí)現(xiàn)方法,其特征在于,至少包括以下步驟 當(dāng)接收到在現(xiàn)場可編程門陣列FPGA的接口上對類規(guī)則配置EF隊(duì)列及其帶寬的配置信息吋,中央處理器CPU判斷所述接ロ是否已經(jīng)分配了 FPGA EF隊(duì)列; 如果判斷結(jié)果為否,所述CPU為所述接ロ分配ー個(gè)FPGAEF隊(duì)列,并設(shè)置所述FPGAEF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值; 所述CPU向所述接口下發(fā)相應(yīng)的流量策略表項(xiàng),為所述接ロ配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGAEF隊(duì)列。
2.如權(quán)利要求I所述的方法,其特征在于,所述CPU判斷所述接ロ是否已經(jīng)分配了FPGAEF隊(duì)列之后,還包括 如果判斷結(jié)果為是,所述CPU調(diào)整所述接口上所分配的FPGA EF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值和所述接口上已配置的EF隊(duì)列的帶寬值之和; 所述CPU向所述接口下發(fā)相應(yīng)的流量策略表項(xiàng),為所述接ロ配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列。
3.如權(quán)利要求I或2所述的方法,其特征在于,所述CPU為所述接ロ配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列之后,還包括 當(dāng)接收到在所述接ロ上對虛擬EF隊(duì)列的取消配置信息時(shí),所述CPU在所述接ロ上對所述取消配置信息所對應(yīng)的流量策略表項(xiàng)進(jìn)行刪除,取消相對應(yīng)的虛擬EF隊(duì)列; 所述CPU判斷所述接口上是否還剰余至少ー個(gè)虛擬EF隊(duì)列; 如果判斷結(jié)果為是,所述CPU調(diào)整所述接ロ已經(jīng)分配的FPGAEF隊(duì)列的帶寬值為所述接ロ當(dāng)前剩余的虛擬EF隊(duì)列的帶寬值之和; 如果判斷結(jié)果為否,所述CPU釋放所述接口上所分配的FPGA EF隊(duì)列。
4.如權(quán)利要求I或2所述的方法,其特征在于,所述CPU為所述接ロ配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列之后,還包括 當(dāng)所述接ロ接收到匹配優(yōu)先類的報(bào)文時(shí),所述FPGA確定所述報(bào)文所對應(yīng)的虛擬EF隊(duì)列,及所述虛擬EF隊(duì)列所指定的所述FPGAEF隊(duì)列; 所述FPGA根據(jù)所述虛擬EF隊(duì)列所對應(yīng)的流量策略表項(xiàng)對所述報(bào)文的流量進(jìn)行評估;如果所述報(bào)文的流量未超過所述虛擬EF隊(duì)列的分配帶寬,所述FPGA對所述報(bào)文添加第一標(biāo)識,如果所述報(bào)文的流量超過了所述虛擬EF隊(duì)列的分配帶寬,所述FPGA對所述報(bào)文添加第二標(biāo)識; 所述FPGA對于添加了所述第一標(biāo)識的報(bào)文直接發(fā)送到所述FPGA EF隊(duì)列,對于添加了所述第二標(biāo)識的報(bào)文,根據(jù)所述FPGA EF隊(duì)列的擁塞狀態(tài),按照預(yù)設(shè)的處理策略進(jìn)行相應(yīng)的處理。
5.如權(quán)利要求4所述的方法,其特征在于,所述對于添加了所述第二標(biāo)識的報(bào)文,根據(jù)所述FPGA EF隊(duì)列的擁塞狀態(tài),按照預(yù)設(shè)的處理策略進(jìn)行相應(yīng)的處理,具體包括 所述FPGA判斷所述FPGAEF隊(duì)列當(dāng)前是否處于擁塞狀態(tài); 如果判斷結(jié)果為否,所述FPGA將添加了所述第二標(biāo)識的報(bào)文直接發(fā)送到所述FPGA EF隊(duì)列; 如果判斷結(jié)果為是,所述FPGA將添加了所述第二標(biāo)識的報(bào)文丟棄。
6.ー種報(bào)文轉(zhuǎn)發(fā)系統(tǒng),包括CPU和FPGA,其特征在于,所述CPU,包括接收模塊,用于接收在所述FPGA的接口上配置EF隊(duì)列及其帶寬的配置信息; 判斷模塊,用于在所述接收模塊接收到在FPGA的接口上對類規(guī)則配置EF隊(duì)列及其帶寬的配置信息時(shí),判斷所述接ロ是否已經(jīng)分配了 FPGA EF隊(duì)列; 第一配置模塊,用于在所述判斷模塊的判斷結(jié)果為否吋,為所述接ロ分配ー個(gè)FPGA EF隊(duì)列,并設(shè)置所述FPGA EF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值; 發(fā)送模塊,用于根據(jù)所述第一配置模塊的配置結(jié)果,向所述接口下發(fā)相應(yīng)的流量策略表項(xiàng),為所述接ロ配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGAEF隊(duì)列。
7.如權(quán)利要求6所述的報(bào)文轉(zhuǎn)發(fā)系統(tǒng),其特征在干, 所述第一配置模塊,還用于在所述判斷模塊的判斷結(jié)果為是時(shí),調(diào)整所述接口上所分配的FPGA EF隊(duì)列的帶寬值為所述配置信息所配置的EF隊(duì)列的帶寬值和所述接口上已配置的EF隊(duì)列的帶寬值之和; 所述發(fā)送模塊,還用于根據(jù)所述第一配置模塊的調(diào)整結(jié)果,向所述接口下發(fā)相應(yīng)的流量策略表項(xiàng),為所述接ロ配置與所述配置信息相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGA EF隊(duì)列。
8.如權(quán)利要求6或7所述的報(bào)文轉(zhuǎn)發(fā)系統(tǒng),其特征在干, 所述接收模塊,還用于接收在所述FPGA的接口上對虛擬EF隊(duì)列的取消配置信息;所述第一配置模塊,還用于在所述接收模塊接收到在所述接口上對虛擬EF隊(duì)列的取消配置信息吋,在所述接ロ上對所述取消配置信息所對應(yīng)的流量策略表項(xiàng)進(jìn)行刪除,取消相對應(yīng)的虛擬EF隊(duì)列; 所述判斷模塊,還用于在所述第一配置模塊取消所述虛擬EF隊(duì)列之后,判斷所述接ロ上是否還剰余至少ー個(gè)虛擬EF隊(duì)列,其中 如果所述判斷模塊的判斷結(jié)果為是,通知所述第一配置模塊調(diào)整所述接ロ已經(jīng)分配的FPGA EF隊(duì)列的帶寬值為所述接ロ當(dāng)前剩余的虛擬EF隊(duì)列的帶寬值之和; 如果所述判斷模塊的判斷結(jié)果為否,則通知所述第一配置模塊釋放所述接口上所分配的FPGA EF隊(duì)列。
9.如權(quán)利要求6所述的報(bào)文轉(zhuǎn)發(fā)系統(tǒng),其特征在于,所述FPGA,包括 至少ー個(gè)接ロ,用于接收和轉(zhuǎn)發(fā)報(bào)文;第二配置模塊,用于接收所述CPU所發(fā)送的與所述FPGA的一個(gè)接ロ相應(yīng)的流量策略表項(xiàng),為所述接ロ配置相對應(yīng)的虛擬EF隊(duì)列,并將所述虛擬EF隊(duì)列指定到所述FPGAEF隊(duì)列;確定模塊,用于在所述接ロ接收到匹配優(yōu)先類的報(bào)文時(shí),根據(jù)所述第二配置模塊的配置信息確定所述報(bào)文所對應(yīng)的虛擬EF隊(duì)列,及所述虛擬EF隊(duì)列所指定的所述FPGA EF隊(duì)列; 評估模塊,用于根據(jù)所述第二配置模塊所接收到的所述虛擬EF隊(duì)列所對應(yīng)的流量策略表項(xiàng),對所述報(bào)文的流量進(jìn)行評估; 標(biāo)識模塊,用于根據(jù)所述評估模塊的評估結(jié)果,對未超過所述虛擬EF隊(duì)列的分配帶寬的報(bào)文添加第一標(biāo)識,對超過所述虛擬EF隊(duì)列的分配帶寬的報(bào)文添加第二標(biāo)識; 處理模塊,用于將添加了所述第一標(biāo)識的報(bào)文直接發(fā)送到所述FPGA EF隊(duì)列,根據(jù)所述FPGA EF隊(duì)列的擁塞狀態(tài),按照預(yù)設(shè)的處理策略對添加了所述第二標(biāo)識的報(bào)文進(jìn)行相應(yīng)的處理。
10.如權(quán)利要求9所述的報(bào)文轉(zhuǎn)發(fā)系統(tǒng),其特征在于,所述處理模塊,具體用于 判斷所述FPGAEF隊(duì)列當(dāng)前是否處于擁塞狀態(tài); 如果判斷結(jié)果為否,將添加了所述第二標(biāo)識的報(bào)文直接發(fā)送到所述FPGAEF隊(duì)列; 如果判斷結(jié)果為是,將添加了所述第二標(biāo)識的報(bào)文丟棄。
全文摘要
本發(fā)明公開了一種EF隊(duì)列的實(shí)現(xiàn)方法和設(shè)備,通過應(yīng)用本發(fā)明的技術(shù)方案,當(dāng)在FPGA的一個(gè)接口上定義多個(gè)類規(guī)則,并分別指定EF隊(duì)列時(shí),CPU在該接口上采用CAR方式將其實(shí)現(xiàn)為多個(gè)虛擬EF隊(duì)列,同時(shí),CPU只為該接口分配一個(gè)FPGA EF隊(duì)列,并設(shè)置該FPGA EF隊(duì)列的帶寬值為各虛擬EF隊(duì)列的帶寬值之和,從而,使各虛擬EF隊(duì)列共享該FPGA EF隊(duì)列的資源。通過這樣的處理,不僅可以節(jié)省FPGA隊(duì)列資源,而且,在進(jìn)行隊(duì)列調(diào)度時(shí),由于每個(gè)接口只有一個(gè)FPGA EF隊(duì)列,即采用嚴(yán)格優(yōu)先調(diào)度的隊(duì)列只有一個(gè),不必考慮多個(gè)嚴(yán)格優(yōu)先調(diào)度隊(duì)列之間的公平調(diào)度問題,降低了隊(duì)列調(diào)度算法的復(fù)雜度。
文檔編號H04L29/06GK102664803SQ20121011936
公開日2012年9月12日 申請日期2012年4月23日 優(yōu)先權(quán)日2012年4月23日
發(fā)明者李佳, 王厚雪 申請人:杭州華三通信技術(shù)有限公司