專利名稱:一種硬件收幀控制方法與裝置的制作方法
技術領域:
本發明涉及計算機與通信技術領域,尤其涉及一種硬件收幀控制方法與裝
背景技術:
現有的交換機系統中,數據流通常都是通過硬件(即交換芯片)來處理和 轉發的,而控制流和一些特殊報文則需要由軟件進行處理,例如地址解析協議
(ARP, Address Resolution Protocol)報文,各種路由協議報文等。此模型通常的 工作方式是由交換芯片識別出需要軟件處理的報文,再通過交換芯片與CPU 之間的通信機制,將這些報文送到CPU,再由軟件進行處理。通常交換芯片與 CPU之間是通過內存來通信的,如圖l所示,交換芯片將報文寫到內存的某個 約定好的區域中,再通知CPU有報文產生,CPU知道這個事件后,從約定好 的該區域中將報文內容讀取出來。
在交換機系統中,軟件大致可以分為三層驅動層、數據《連路層和網絡層 以上層(包含網絡層)。CPU在收到報文后,報文最先經過驅動層,然后由驅動 層送到數據鏈路層,最后送達網絡層以上層,如圖2所示。根據報文類型的不 同,報文在每一個層次都有可能被處理掉,如果被處理掉就不再往上送。我們 把驅動層以上的層次稱為上層軟件。
收幀驅動就是管理從CPU收到事件到從內存指定區域中讀出報文的過程 的軟件。在收幀過程中,存放報文數據內容的內存區域稱為收幀緩沖。報文沒 有處理完畢的情況下,此緩沖不能被其他報文使用,只有報文處理完畢釋放緩 沖之后,這塊緩沖區域才能夠被其他報文使用。
CPU與交換芯片之間的報文交互是通過收幀緩沖完成的,在啟動收幀驅動
以前,相應軟件需要完成以下工作
1、 事先將空閑的收幀緩沖準備好;
2、 告知交換芯片每個收幀緩沖的起始地址和長度,以及緩沖數量,通常一 個緩沖對應一個報文,這一過程稱為掛接緩沖。
3、 啟動交換悉片收幀。 . 交換芯片在收到報文后需要通知CPU,由相應軟件從收幀緩沖中將報文取
走進行處理。交換芯片通常提供兩種中斷來通知CPU:
1、 每收到一個報文,產生一次中斷,這種中斷稱為報文中斷;
2、 所有緩沖區都使用完畢,產生中斷。這種中斷是為了讓CPU知道收幀 緩沖已經用完,需要準備新的緩沖以進行下一次收幀。這種中斷稱為緩沖結束 中斷。
對于交換機系統而言,交換芯片送CPU的報文通常都是比較重要的報文, 這些報文必須要及時處理才能保證上層協議軟件的正確運行。因此,系統對于 這些報文的響應要盡可能的快,通常收幀驅動的優先級都比上層軟件高,換句 話說,只要有報文送到CPU,那么收幀驅動會打斷上層協議的運行而優先運行。 通常的收幀驅動中,收幀緩沖處理邏輯如圖3所示。
圖3中,CPU申請收幀緩沖,如果申請成功,則將收幀通道掛接新申請 的收幀緩沖,啟動收幀。而如果申請不成功,也就是說,沒有新的收幀緩沖用 以分配的時候,需要等當前的收幀緩沖釋放(或強行釋放當前的收幀緩沖)以 后,再掛接當前的收幀緩沖,啟動收幀。
交換芯片在一次收幀結束后,相應軟件會立刻申請空閑緩沖,掛接緩沖并 啟動收幀,這樣,只要內存空間足夠,只要有幀進來收幀就不會停止。由于 CPU的處理能力是有限的,當CPU運行收幀驅動的時候一般情況下是在中斷 中進行,此時除了中斷之外其它進程包括上^軟件進程就得不到運行,那么, 當有大量的報文持續送CPU的時候,收幀驅動會一直運行,報文雖然送到了 上層,但上層軟件進程卻無法運行,這些報文也就得不到處理。如此持續下去,
網絡協議的運行就變得異常。
現有技術中,底層驅動可以通過限制收幀速率來讓出CPU,但這同時也會
帶來幾個問題
1、 測量收幀速率本身就會消耗CPU處理能力,使得收幀性能降低;
2、 設置的收幀速率過慢會導致CPU資源閑置,浪費處理機;設置的收幀 速率過快達不到控制CPU不陷入收幀驅動的目的。如何設置一個合適的值是 一個比較困難的問題;
3、 這種限速通常都是通過軟件實現,這也會消耗CPU處理能力,降低收 幀性能。
發明內容
本發明實施例提供一種硬件收幀控制方法與裝置,用以解決現有技術中大 量報文持續送CPU的情況下,收幀驅動一直運行導致上層軟件沒有機會運行
的問題,同時,盡量減少收幀性能損失。
一種硬件收幀控制方法,該方法包括
A、 為每個硬件收幀通道設置收幀緩沖池,每個收幀緩沖池中包含若干個 收幀緩沖;
B、 當所述收幀緩沖池中收幀緩沖的數量大于預先設定的收幀閾值時,允 許所述收幀緩沖掛接所述硬件收幀通道,啟動硬件收幀;否則,不允許所述收 幀緩沖掛接所述硬件收幀通道。
一種硬件收幀控制裝置,該裝置包括緩沖池單元、第一判斷單元和設置單 元,其中,
所述緩沖池單元,用于為每個硬件收幀通道設置收幀緩沖池; 所述第一判斷單元,用于判斷所述收幀緩沖池中收幀緩沖的數量是否大于 預先設定的收幀閾值,并將判斷結果發送所述:&置單元;
所述設置單元,用于根據所述第一判斷單元的判斷結果,確定是否允許收
幀緩沖掛接硬件收幀通道,啟動硬件收幀。
本發明實施例通過為每個硬件收幀通道設置收幀緩沖池,每個收幀緩沖池
中有若干個收幀緩沖;當所述收幀緩沖池中收幀緩沖的數量大于預先設定的收 幀閾值時,允許所述收幀緩沖掛接所述硬件收幀通道,啟動硬件收幀;否則, 不允許所述收幀緩沖掛接所述硬件收幀通道。本發明實施例提供的方案,有效 防止CPU陷入底層收幀驅動導致上層軟件沒有機會運行的問題,同時,不需 要額外的軟件開銷去測量收幀速率,收幀性能損失小。并且,上層軟件繁忙的 時候,底層驅動不再送報文上去,CPU處理機可以更多的讓給上層軟件;而上 層軟件空閑的時候,底層驅動繼續送報文,使整個系統達到動態平衡。
圖1為現有技術中收幀硬件實現示意圖; 圖2為現有技術中交換機軟件分層示意圖; 圖3為現有技術中收幀緩沖處理流程圖; 圖4為本發明實施例1的主要實現原理流程圖; 圖5為本發明實施例2的主要實現原理流程圖; 圖6為本發明實施例3提供裝置的結構示意圖; 圖7為本發明實施例4提供裝置的結構示意圖。
具體實施例方式
送CPU的報文在交換機軟件中的傳遞路徑為收幀驅動^數據鏈路層^ 網絡層以上層,所有報文都會經過收幀驅動,而每個報文都會占用收幀緩沖。 而只有報文被處理完之后,收幀才會被釋放。本發明實施例的核心思想就是通 過監控收幀緩沖的占用情況,控制硬件將報文送CPU的速率。
下面結合各個附圖對本發明實施例技術方案的主要實現原理、具體實施方 式及其對應能夠達到的有益效果進行詳細的闡述。
如圖4所示,本發明實施例1的主要實現原理流程如下 步驟ll,為每個硬件收幀通道設置收幀緩沖池,每個收幀緩沖池中有若干 個收幀緩沖。
通常每個硬件會有多個收幀通道,需要分別為每個硬件收幀通道設置收幀 緩沖池,每個收幀緩沖池中設置多個收幀緩沖。各個收幀緩沖池中的收幀緩沖 數量可以一致,也可以不一致。
這里, 一個收幀緩沖指的是可以緩沖一個報文進行收幀的緩沖,也就是說, 一個報文占用一個收幀緩沖。當然,也可以將收幀緩沖的大小定義為兩個報文 的長度或其它長度,可以根據實際需要進行設定。
步驟12,當收幀緩沖池中收幀緩沖的數量大于預先設定的收幀閾值時,允 許收幀緩沖掛接硬件收幀通道,啟動硬件收幀;否則,不允許收幀緩沖掛接硬 件收幀通道。
需要發往CPU的每個報文占用一個收幀緩沖,在報文處理完畢之后,收 幀緩沖回收到緩沖池中。由于硬件收幀通道只有在掛接了收幀緩沖才能夠送報 文到CPU,否則會停止收幀,因此控制收幀通道與收幀緩沖的掛接頻度即可控 制收幀速率。
因此,可以設置一個收幀閾值,當緩沖池中的空閑緩沖數量大于收幀閾值 時,允許將空閑緩沖掛接到硬件收幀通道上;否則,如果緩沖池中的空閑緩沖 數量小于等于收幀閾值,則不允許收幀緩沖掛接收幀通道,由此可以實現對收 幀速率的控制。這里的收幀閾值可以根據需要設置,并可以根據需要進行調整。
較佳地,當收幀緩沖釋放并回到緩沖池之后,需要進一步判斷當前掛接硬 件的收幀緩沖是否被占用,如果是,則進一步判斷收幀緩沖池中收幀緩沖的數 量是否大于預先設定的收幀閾值,如果大于,則允許收幀緩沖掛接硬件收幀通 道,否則,如果收幀緩沖池中收幀緩沖的數量小于等于預先設定的收幀闞值, 或者當前掛接硬件的收幀緩沖沒有被占用,則不做處理。
這里,判斷當前掛接硬件的收幀緩沖是否被占用,可以設置一個占用閾值,
當被占用的收幀緩沖個數達到這個占用閾值時,認為當前掛接硬件的收幀緩沖 被占用,否則,認為當前掛接的收幀緩沖未被占用。
舉例來說,設定某個硬件收幀通道相關的收幀緩沖池中有若干個收幀緩 沖,系統最初會為硬件掛接一定數量的收幀緩沖用以進行收幀。這里初始掛接 收幀緩沖的數量可以根據需要設定,并可以進行調整。當一個報文的收幀過程 結束,該收幀緩沖被釋放,回到收幀緩沖池中,成為空閑收幀緩沖。此時,進 一步判斷剩余的仍然掛接硬件的收幀緩沖是否被占用。這里的占用的判斷標準 可以是剩余掛接硬件的收幀緩沖全部被占用或者是設定占用閾值來判定。如果 剩余掛接硬件的收幀緩沖被占用,說明掛接硬件的收幀緩沖數量較少,需要申 請新的空閑收幀緩沖掛接硬件。反之,說明掛接硬件的收幀緩沖數量較多,不 需要申請新的空閑收幀緩沖,因而不做任何操作。當需要申請新的空閑收幀緩 沖時,進一步判斷收幀緩沖池中的空閑收幀緩沖數量是否大于預先設定的收幀 閾值,如果是,可以為硬件掛接新的收幀緩沖,否則,不能為硬件掛接新的收 幀緩沖。
通過這樣的判斷和限制,可以保障每次都只有一定數量的收幀緩沖掛接硬 件收幀通道,從而保證CPU不會陷入收幀過程而無法響應其它軟件。同時,
通過對收幀閾值的調節,可以控制收幀過程對CPU的占用程度,有力的提高
系統的效率。
相應的,如圖5所示,為本發明實施例2的主要實現原理流程。
其中,為每個硬件收幀通道設置收幀緩沖池,每個收幀緩沖池中有若干個 收幀緩沖。在收幀緩沖釋放之后,自動回到收幀緩沖池。
判斷當前掛接硬件的收幀緩沖是否被占用,如果否,不做處理。如果是, 則進一步判斷當前的收幀緩沖池中的收幀緩沖數量是否大于預先設定的收幀 閾值,如果是,則允許收幀緩沖掛接硬件收幀通道,啟動收幀;否則,不允許 收幀緩沖桂接硬件收幀通道。
這里,判斷當前掛接硬件的收幀緩沖是否被占用,可以設置一個占用閾值,
當被占用的收幀緩沖個數達到這個占用閾值時,認為當前掛接硬件的收幀緩沖 被占用,否則,認為當前掛接的收幀緩沖未被占用。
相對于如圖3所示的現有技術提供的收幀緩沖,本實施例2在收幀緩沖釋 放后增加了判斷收幀緩沖池中收幀緩沖的數量是否大于預先設定的收幀閾值 的步驟。通過分析可以知道,由于上層軟件不將報文處理完畢(這里指一個報 文),收幀緩沖就不會得到釋放,因此,空閑收幀緩沖的數量實際上可以表征 系統的繁忙情況。在上層軟件繁忙的時候,收幀驅動送更多的報文到上層軟件 也不會得到處理,反而會引起CPU陷入收幀驅動。所以,在空閑收幀緩沖未 達到預先設定的收幀閾值之前,不讓硬件送報文到CPU,而空閑收幀緩沖達到 預先設定的收幀閾值,說明上層已經開始空閑,此時通過掛接空閑收幀緩沖到 硬件收幀通道,讓硬件開始收幀。
相應地,本發明實施例3還提供了一種硬件收幀控制裝置,如圖6所示, 該裝置包括緩沖池單元21、第一判斷單元22和設置單元23,具體如下
緩沖池單元21,用于為每個硬件收幀通道設置收幀緩沖池。
這里,每個收幀緩沖池中有若干個收幀緩沖。每個收幀緩沖池中的手幀緩 沖數量可以相等,也可以不相等。
第一判斷單元22,用于判斷收幀緩沖池中收幀緩沖的數量是否大于預先設 定的收幀闊值,并將判斷結果發送設置單元23。
設置單元23,用于根據第一判斷單元22的判斷結果,確定是否允許收幀 緩沖掛接硬件收幀通道,啟動硬件收幀。也就是說,當收幀緩沖池中收幀緩沖 的數量大于預先設定的收幀閾值時,允許收幀緩沖掛接硬件收幀通道,啟動硬 件收幀;否則,不允許收幀緩沖掛接硬件收幀通道。
較佳地,如上所述的硬件收幀控制裝置還包括閾值單元24,用于設定收幀 緩沖池中允許收幀的收幀緩沖數量的收幀閾值,并根據需要對所述收幀閾值進 行調整。
較佳地,如圖7所示,為本發明實施例4提供裝置結構示意圖。如上述實
施例3所示的硬件收幀控制裝置中,在緩沖池單元21與第一判斷單元22之間 還包括第二判斷單元25,用于判斷當前掛接硬件的收幀緩沖是否被占用,如果 是,通知所述第一判斷單元22進行后續處理。
這里,判斷當前掛接硬件的收幀緩沖是否被占用,可以設置一個占用閾值, 當被占用的收幀緩沖個數達到這個占用閾值時,認為當前掛接硬件的收幀緩沖 被占用,否則,認為當前掛接的收幀緩沖未被占用。
綜上,本發明實施例提供的方案,有效防止CPU陷入底層收幀驅動導致 上層軟件沒有機會運行的問題,同時,不需要額外的軟件開銷去測量收幀速率, 收幀性能損失小。并且,上層軟件繁忙的時候,底層驅動不再送報文上去,CPU 處理機可以更多的讓給上層軟件;而上層軟件空閑的時候,底層驅動繼續送報 文,Y吏整個系統達到動態平衡。
顯然,本領域的技術人員可以對本發明進行各種改動和變型而不脫離本發 明的精神和范圍。這樣,倘若本發明的這些修改和變型屬于本發明權利要求及 其等同技術的范圍之內,則本發明也意圖包含這些改動和變型在內。
權利要求
1、一種硬件收幀控制方法,其特征在于,該方法包括A、為每個硬件收幀通道設置收幀緩沖池,每個收幀緩沖池中包含若干個收幀緩沖;B、當所述收幀緩沖池中收幀緩沖的數量大于預先設定的收幀閾值時,允許所述收幀緩沖掛接所述硬件收幀通道,啟動硬件收幀;否則,不允許所述收幀緩沖掛接所述硬件收幀通道。
2、 如權利要求l所述的方法,其特征在于,在步驟B之前,進一步包括 判斷當前掛接所述硬件收幀通道的收幀緩沖是否被占用,如果是,執行步驟B,否則,不做處理,流程結束。
3、 如權利要求2所述的方法,其特征在于,所述判斷當前掛接的收幀緩沖 是否被占用,包括設置一個占用閾值;當被占用的收幀緩沖個數大于所述占用閾值時,當前掛接所述硬件收幀通 道的收幀緩沖被占用,否則,當前掛接所述硬件收幀通道的收幀緩沖未被占用。
4、 如權利要求1或2所述的方法,其特征在于,所述不同的收幀緩沖池 中包含的收幀緩沖的數量相等或不等。
5、 如權利要求1或2所述的方法,其特征在于,該方法進一步包括 在收幀過程中,每個報文占用一個所述收幀緩沖; 在所述報文處理完畢之后,所述收幀緩沖回收到所述收幀緩沖池中。
6、 如權利要求1或2所述的方法,其特征在于,所述當所述收幀緩沖池 中收幀緩沖的數量大于預先設定的收幀閾值時,允許所述收幀緩沖掛接所述硬 件收幀通道,啟動硬件收幀,包括預先設定收幀閾值;比較所述收幀緩沖池中收幀緩沖的數量與所述收幀閾值,如果所述收幀緩 沖池中收幀緩沖的數量大于預先設定的收幀閾值,則允許所述收幀緩沖掛接所 述硬件收幀通道,啟動硬件收幀。
7、 一種硬件收幀控制裝置,其特征在于,該裝置包括緩沖池單元、第一 判斷單元和設置單元,其中,所述緩沖池單元,用于為每個硬件收幀通道設置收幀緩沖池; 所述第一判斷單元,用于判斷所述收幀緩沖池中收幀緩沖的數量是否大于預先設定的收幀閾值,并將判斷結果發送所述設置單元;所述設置單元,用于根據所述第一判斷單元的判斷結果,確定是否允許收幀緩沖掛接硬件收幀通道,啟動硬件收幀。
8、 如權利要求7所述的裝置,其特征在于,所述裝置進一步還包括閾值 單元,用于根據需要設定和/或修改收幀緩沖池的收幀閾值。
9、 如權利要求7所述的裝置,其特征在于,所述設置單元在所述判斷結 果為所述收幀緩沖池中收幀緩沖的數量大于所述收幀閾值時,允許所述收幀緩 沖掛接所述硬件收幀通道,啟動硬件收幀;否則,不允許所述收幀緩沖掛接所 述石更件收幀通道。
10、 如權利要求7所述的裝置,其特征在于,在所述緩沖池單元與第一判 斷單元之間還包括第二判斷單元,用于判斷當前掛接所述硬件收幀通道的收幀 緩沖是否被占用,如果是,通知所述第一判斷單元進行后續處理。
全文摘要
本發明公開了一種硬件收幀控制方法與裝置,通過為每個硬件收幀通道設置收幀緩沖池,每個收幀緩沖池中有若干個收幀緩沖;當所述收幀緩沖池中收幀緩沖的數量大于預先設定的收幀閾值時,允許所述收幀緩沖掛接所述硬件收幀通道,啟動硬件收幀;否則,不允許所述收幀緩沖掛接所述硬件收幀通道。本發明實施例提供的方案,有效防止CPU陷入底層收幀驅動導致上層軟件沒有機會運行的問題,同時,不需要額外的軟件開銷去測量收幀速率,收幀性能損失小。并且,上層軟件繁忙的時候,底層驅動不再送報文上去,CPU處理機可以更多的讓給上層軟件;而上層軟件空閑的時候,底層驅動繼續送報文,使整個系統達到動態平衡。
文檔編號H04L12/56GK101340373SQ200810118939
公開日2009年1月7日 申請日期2008年8月27日 優先權日2008年8月27日
發明者洵 張 申請人:北京星網銳捷網絡技術有限公司