新四季網

實現報文緩存資源共享的方法和裝置的製作方法

2023-09-17 05:00:30 2

專利名稱:實現報文緩存資源共享的方法和裝置的製作方法
技術領域:
本發明涉及通信技術領域,尤其涉及一種實現報文緩存資源共享的方法和裝置。
背景技術:
眾所周知,在可變長的數據包交換網絡中,擁塞避免機制是保證QoS(Quality of krvice,服務質量)的重要機制。目前的擁塞避免算法中,核心思想都是預先為各個隊列分配一段緩存空間,然後基於算法計算的配置參數、丟棄曲線及業務流特點作相應擴展,算法既要保證隊列間的公平性又要兼顧業務報文的特點,但大都沒有考慮緩存的利用情況。這種建立在預分配機制上的算法實際上將整個緩存空間進行了割據,之間無法互通,對於各個隊列而言,顯然是一種獨享的方式,多個隊列都會獨享一部分緩存資源,必然會導致緩存利用率的下降,導致整個緩存有大量空閒空間時頻繁丟數據包的現象發生。

發明內容
本發明的主要目的在於提供一種實現報文緩存資源共享的方法和裝置,旨在提高緩存利用率,減少不必要的丟數據包。本發明提供一種實現報文緩存資源共享的方法,包括以下步驟預設各隊列的狀態,並在有數據包入隊時獲取隊列的隊列號、隊列狀態和優先級;將隊列按優先級的不同添加至對應的分類鍊表;維護各個隊列的緩存空間佔用情況,在緩存被佔滿時,發起老化指示;當收到老化指示時,按照優先級對各自鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間。優選地,所述預設各隊列的狀態,並在有數據包入隊時獲取隊列的優先級包括在新數據包入隊時,根據數據包中的報文所屬隊列號查詢當前隊列的狀態;如果當前隊列狀態為空,則將當前隊列狀態置為非空,將隊列按優先級的不同添加至對應的分類鍊表;如果當前隊列狀態為非空,則直接提取報文描述符中的數據包長信息,以便計算緩存深度和隊列深度。優選地,所述按優先級對鍊表中的隊列進行老化處理包括以鏈首指針所對應的隊列為老化隊列,指示該隊列老化數據包;如果緩存不足的狀態一直得不到緩解,則持續進行老化。優選地,所述預設各隊列的狀態,並在有數據包入隊時獲取隊列的優先級還包括根據隊列老化或出數據包情況重新獲取各隊列狀態和優先級;所述將隊列按優先級的不同添加至對應的分類鍊表還包括根據重新獲取的隊列狀態和優先級將隊列出鏈或重新入鏈。
優選地,所述根據隊列狀態和優先級將隊列出鏈或重新入鏈包括在鍊表中的隊列被老化時如果隊列狀態由非空變為空,則將該隊列從分類鍊表中剔除;如果隊列狀態不變,則將該隊列重新添加至分類鍊表。優選地,所述根據隊列狀態和優先級將隊列出鏈或重新入鏈包括在鍊表中的隊列發生正常出包時若鏈首隊列因連續出數據包導致狀態變為空,則將該隊列從分類鍊表中剔除;若鍊表中間節點隊列因連續出數據包導致狀態變空,則對該分類鍊表執行拆鏈和建鏈操作,以將鍊表的中間節點隊列刪除。本發明提供一種實現報文緩存資源共享的裝置,包括隊列狀態管理模塊,用於預設各隊列的狀態,並在有數據包入隊時獲取隊列的優先級;分類鍊表管理模塊,用於將隊列按優先級的不同添加至對應的分類鍊表,當收到老化指示時,按照優先級自低至高對各自鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間;緩存深度管理模塊,用於維護各個隊列的緩存空間佔用情況,在緩存被佔滿時,發起老化指示。優選地,所述隊列狀態管理模塊用於在新數據包入隊時,根據數據包中的報文所屬隊列號查詢當前隊列的狀態;如果當前隊列狀態為空,則將當前隊列狀態置為非空,將隊列按優先級的不同添加至對應的分類鍊表;如果當前隊列狀態為非空,則直接提取報文描述符中的數據包長信息,以便計算緩存深度和隊列深度。優選地,所述緩存深度管理模塊用於以鏈首指針所對應的隊列為老化隊列,指示該隊列老化數據包;如果緩存不足的狀態一直得不到緩解,則持續進行老化。優選地,所述隊列狀態管理模塊還用於根據隊列老化或出數據包情況重新獲取各隊列狀態和優先級;所述分類鍊表管理模塊還用於根據重新獲取的隊列狀態和優先級將隊列出鏈或重新入鏈。優選地,所述分類鍊表管理模塊還用於
在鍊表中的隊列被老化時如果隊列狀態由非空變為空,則將該隊列從分類鍊表中剔除;如果隊列狀態不變,則將該隊列重新添加至分類鍊表。優選地,所述分類鍊表管理模塊還用於在鍊表中的隊列發生正常出包時若鏈首隊列因連續出數據包導致狀態變為空,則將該隊列從分類鍊表中剔除;若鍊表中間節點隊列因連續出數據包導致狀態變空,則對該分類鍊表執行拆鏈和建鏈操作,以將鍊表的中間節點隊列刪除。
本發明所提供的實現報文緩存資源共享的方法或裝置,按優先級對隊列進行鍊表管理,當緩存被佔滿時,按隊列優先級自低至高對鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間,明顯提升了系統的抗突發能力,提高緩存利用率,減少了不必要的丟數據包;並且,本發明所提供的方法或裝置,參數配置簡單,無需針對各個隊列設計各種配置參數,改變了由於隊列數目增多而導致平均到每個隊列所佔緩存變小的狀況,為支持更多的隊列數目提供了保證,真正實現了緩存共享。


圖1為本發明的一個實施方式中實現報文緩存資源共享的方法的流程圖;圖2為本發明的一個實施例中分類鍊表的結構示意圖;圖3為本發明的一個實施例中獲取隊列狀態和優先級的步驟流程圖;圖4為本發明的一個實施例中對隊列進行老化的步驟流程圖;圖5為本發明的一個實施例中雙向鍊表的存儲結構示意圖;圖6為本發明的一個實施例中雙向鍊表在隊列老化、出包前後的結構示意圖;圖7為本發明的一個實施方式中實現報文緩存資源共享的裝置的結構示意圖;圖8為本發明的一個實施例中實現報文緩存資源共享的裝置的工作流程圖。本發明目的實現、功能特點及優點將結合實施例,參照附圖做進一步說明。
具體實施例方式應當理解,此處所描述的具體實施例僅僅用以解釋本發明,並不用於限定本發明。圖1示出了本發明的一個實施方式中實現報文緩存資源共享的方法的流程,該流程包括以下步驟步驟S10,預設各隊列的狀態,並在有數據包入隊時獲取隊列的優先級;可預設各隊列的初始狀態為空,當有新的數據包進入隊列時根據數據包中的報文描述符獲取隊列的優先級。步驟S20,將隊列按優先級的不同添加至對應的分類鍊表;優先級可反映報文的重要程度,優先級不同,報文的重要性也不同。假設當前有12個隊列0 11,若這些隊列分別有數據包入隊,則根據隊列號分別更新隊列狀態,例如將隊列狀態由空更新為非空;同時根據報文獲取各個隊列優先級,例如其中0、1、3、6、7、10號隊列屬於「優先級1」,2、4、9號隊列屬於「優先級2」,餘下隊列屬於「優先級3」。然後各個非空隊列按照各自的優先級進入分類鍊表,每個優先級的分類鍊表形成一個雙向鍊表,對應兩套首尾指針;分類鍊表的結構可參照圖2所示。步驟S30,維護各個隊列的緩存空間佔用情況,在緩存被佔滿時,發起老化指示; 例如,如果當前12個隊列一直有數據包進入緩存,且系統及每個隊列的輸入略大於輸出, 那麼最終緩存將被佔滿,達到老化的水位線,此時啟動老化。步驟S40,當收到老化指示時,按照優先級對各自鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間。首先從最低「優先級1」的隊列開始老化,根據鍊表當時的狀態以鏈首指針隊列號0為老化隊列,指示該隊列老化掉一個數據包,釋放0隊列首數據包所佔的緩存空間。
本發明方法實施方式中按優先級對鍊表中的隊列進行老化,釋放優先級低的隊列報文所佔的緩存空間,提高了緩存利用率,減少了不必要的丟數據包。參照圖3,在一實施例中,上述步驟SlO中具體可包括步驟S11,在新數據包入隊時,根據數據包中的報文所屬隊列號查詢當前隊列的狀態;可根據報文描述符的隊列號讀取當前的隊列狀態,同時,無論隊列此時的狀態如何,都將該入隊報文的長度上報,以進行緩存分配,並根據報文所屬隊列號查詢當前隊列的狀態。步驟S12,如果當前隊列狀態為空,則將當前隊列狀態置為非空,將隊列按優先級的不同添加至對應的分類鍊表;隊列的初始狀態均為空,但有數據包入隊時,其狀態則變為非空。步驟S13,如果當前隊列狀態為非空,則直接提取報文描述符中的數據包長信息, 以便計算緩存深度和隊列深度。如果當前緩存中存儲有多個非空隊列又未被佔滿時,若有新數據包入隊,則可直接提取數據包長信息,計算隊列是否有足夠空間可容納新數據包以及緩存是否將被佔滿,若緩存被佔滿則啟動老化。參照圖4和圖5,在一實施例中,上述步驟S30中具體可包括步驟S31,以鏈首指針所對應的隊列為老化隊列,指示該隊列老化數據包;例如, 上述12個隊列一直有數據包進入緩存,且系統及每個隊列的輸入略大於輸出,那麼最終緩存將被佔滿,達到老化的水位線,啟動老化。老化首先從最低「優先級1」的隊列開始,根據鍊表當時的狀態以鏈首指針隊列號0為老化隊列,指示該隊列老化掉一個數據包,從而釋放隊0列首數據包所佔緩存空間,並發送更新整個緩存佔用情況和隊列0的緩存深度的通知,以重新獲取隊列的狀態並根據入隊數據包獲取隊列優先級並重新將隊列歸類管理。步驟S32,如果緩存不足的狀態一直得不到緩解,則持續進行老化。例如,繼續針對 「優先級1 」的隊列進行老化,鍊表的更新仍然按照前述方式,直到鍊表中的某個隊列由於老化出數據包導致隊列的深度變為空,那麼此時該隊列老化後,不再添加到鍊表,同時更新該隊列的狀態。繼續老化下去,可能會導致「優先級1」的所有隊列變為空,即「優先級1」的鍊表空,而如果系統一直有大量較高優先級報文輸入,「優先級1」的隊列全部被老化後緩存資源仍然不足,那麼就啟動「優先級2」鍊表的老化,以此類推,原則是優先老化非空的低優先級隊列。在一實施例中,上述步驟SlO中可包括根據隊列老化或出數據包情況重新獲取各隊列狀態和優先級;上述步驟S20中可包括根據重新獲取的隊列狀態和優先級將隊列出鏈或重新入鏈。例如,可在接收到上述鍊表更新通知時,重新獲取各隊列的狀態和優先級,並根據隊列狀態和優先級將鍊表更新。在一具體示例中,上述根據隊列狀態和優先級將隊列出鏈或重新入鏈包括在鍊表中的隊列被老化時如果隊列狀態由非空變為空,則將該隊列從分類鍊表中剔除;例如,當接收到前述實施例中所述更新鍊表的通知時,根據重新獲取的隊列狀態對分類鍊表進行更新操作。隊列由非空變為空後,說明某優先級中一些隊列的數據包已經全部被老化,此時可將隊列從鍊表中剔除。具體可包括隊列0老化後,將其從鏈首刪除,相鄰的下一隊列1作為鏈首,剛剛老化過的隊列0添加至鏈尾,此時「優先級1」的正向鍊表變為鏈首為隊列1、鏈尾為隊列 0 ;相應的,反向鍊表鏈首為隊列號0、鏈尾為隊列號1。
如果隊列狀態不變,則將該隊列重新添加至分類鍊表。如果隊列狀態未發生變化, 說明在某優先級中一些隊列的數據包仍然未被老化,此時,需將該隊列重新入鏈,以便繼續老化。在另一具體示例中,上述根據重新獲取的隊列狀態和優先級將隊列出鏈或重新入鏈也可包括在鍊表中的隊列發生正常出包時例如,如果有老化和正常出數據包同時發生或僅有正常出數據包時,基於優先級的分類鍊表管理就必須採用雙向鍊表。若鏈首隊列因連續出數據包導致狀態變為空,則將該隊列從分類鍊表中剔除;以 「優先級1」鍊表為例,如圖6所示,該鍊表由隊列0、1、3、6、7、10組成,圖中表示了鍊表存儲的結構示意如果鍊表中隊列連續出數據包導致隊列0,也就是該分類鍊表的鏈首隊列狀態變為空,那麼首先讀取正向鍊表中與隊列0相鄰的下一列,然後更新正向鍊表的首指針以及反向鍊表的尾指針,即表示將隊列0從該鍊表出鏈。同時及時更新隊列0的狀態和隊列深度。若鍊表中間節點隊列因連續出數據包導致狀態變空,則對該分類鍊表執行拆鏈和建鏈操作,以將鍊表的中間節點隊列刪除。如果鍊表中隊列連續出數據包導致狀態變空的隊列並不是0號隊列,而是鍊表的中間節點隊列,那麼就需要對該鍊表執行一個拆鏈和建鏈的操作,用來將鍊表的中間節點刪除。例如,假設鍊表中需要出鏈的是隊列1,那麼以隊列ID為索引地址去正向鍊表讀取下一跳,去反向鍊表讀取對應正向鍊表的上一跳,讀得隊列1的下一跳為隊列3,讀得隊列1 的上一跳為隊列0,隊列1出鏈需要將隊列1從鍊表中刪除,那麼就需要將出鏈節點的上一跳接至出鏈節點的下一跳。所以對於正向鍊表,就要以讀出的上一跳為地址寫入讀出的下一跳隊列ID,而對於反向鍊表的操作就要與正向鍊表的操作相反,以讀出的下一跳為地址, 寫入讀出的上一跳隊列ID。 本發明還提供了一種實現報文緩存資源共享的裝置,可用於實現上述方法。參照圖7,在一實施例中,該裝置包括隊列狀態管理模塊10,用於預設各隊列的狀態,並在有數據包入隊時獲取隊列的優先級;例如,隊列狀態管理模塊10可預設各隊列的初始狀態為空,且當有新的數據包進入隊列時根據數據包中的報文獲取不同的隊列優先級。分類鍊表管理模塊20,用於將隊列按優先級的不同添加至對應的分類鍊表,當收到老化指示時,按照優先級自低至高對各自鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間;假設當前有12個隊列0 11,若這些隊列分別有數據包入隊,則可利用分類鍊表管理模塊20根據隊列號分別更新隊列狀態,例如將隊列狀態由空更新為非空;同時根據報文獲取各個隊列優先級,例如其中0、1、3、6、7、10號隊列屬於「優先級1」, 2、4、9號隊列屬於「優先級2」,餘下隊列屬於「優先級3」。然後各個非空隊列按照各自的優先級進入分類鍊表,每個優先級隊列形成一個雙向鍊表,對應兩套首尾指針。分類鍊表的結構可參照圖2所示,在一實施例中,分類鍊表管理模塊20可用於當鍊表中的某個隊列中的報文被老化或者根據出包命令出包後,按照優先級自低至高對各自鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間,仍按照重新獲取的隊列狀態和優先級進行鍊表更新。
緩存深度管理模塊30,用於維護各個隊列的緩存空間佔用情況,在緩存被佔滿時, 發起老化指示。例如,如果當前12個隊列一直有數據包進入緩存,且系統及每個隊列的輸入略大於輸出,那麼最終緩存將被佔滿,達到老化的水位線,此時緩存深度管理模塊30啟動老化,首先從最低「優先級1」的隊列開始老化,根據鍊表當時的狀態以鏈首指針隊列號0 為老化隊列,指示該隊列老化掉一個數據包,釋放0隊列首數據包所佔的緩存空間。本發明裝置實施方式中按優先級對鍊表中的隊列進行老化,釋放優先級低的隊列報文所佔的緩存空間,提高了緩存利用率,減少了不必要的丟數據包。在一實施例中,隊列狀態管理模塊10可用於在新數據包入隊時,根據數據包中的報文所屬隊列號查詢當前隊列的狀態;例如隊列狀態管理模塊10可根據報文描述符的隊列號讀取當前的隊列狀態,同時,無論隊列此時的狀態如何,都將該入隊報文的長度上報,以進行緩存分配。如果當前隊列狀態為空,則將當前隊列狀態置為非空,將隊列按優先級的不同添加至對應的分類鍊表;例如,隊列狀態管理模塊10可按優先級的不同將隊列添加至對應的分類鍊表,並根據緩存深度管理模塊30對隊列老化或調出數據包的情況對鍊表進行管理。如果當前隊列狀態為非空,則直接提取報文描述符中的數據包長信息,以便計算緩存深度和隊列深度。如果當前緩存中存儲有多個非空隊列又未被佔滿時,若有新數據包入隊,則隊列狀態管理模塊10可直接提取數據包長信息,計算隊列是否有足夠空間可容納新數據包以及緩存是否將被佔滿,若緩存被佔滿則啟動老化。上述緩存深度管理模塊30可用於以鏈首指針所對應的隊列為老化隊列,指示該隊列老化數據包;例如,緩存深度管理模塊30指示分類鍊表管理模塊20首先將鏈首指針所對應的隊列老化,釋放數據包所佔空間。老化完成後,分類鍊表管理模塊20向隊列狀態管理模塊10發出鍊表更新通知,重新獲取隊列的狀態;分類鍊表管理模塊20根據更新的隊列狀態,重新將隊列歸類管理。如果緩存不足的狀態一直得不到緩解,則持續進行老化。例如,緩存深度管理模塊 30繼續指示分類鍊表管理模塊20繼續針對「優先級1」的隊列進行老化,鍊表的更新仍然按照前述方式,直到鍊表中的某個隊列由於老化出數據包導致隊列的深度變為空,那麼此時該隊列老化後,不再添加到鍊表,同時更新該隊列的狀態。繼續老化下去,可能會導致「優先級1」的所有隊列變為空,即「優先級1」的鍊表空,而如果系統一直有大量較高優先級報文輸入,「優先級1」的隊列全部被老化後緩存資源仍然不足,那麼就啟動「優先級2」鍊表的老化,以此類推,原則是優先老化非空的低優先級隊列。緩存深度管理模塊30對隊列的老化處理具體可參照前述圖4所示實施例。在一實施例中,上述隊列狀態管理模塊10還可用於根據隊列老化或出數據包情況重新獲取各隊列狀態和優先級;上述分類鍊表管理模塊20還可用於根據重新獲取的隊列狀態和優先級將隊列出鏈或重新入鏈。例如,在接收到緩存深度管理模塊30發出的鍊表更新通知時,隊列狀態管理模塊10重新獲取各隊列的狀態和優先級,分類鍊表管理模塊20 根據隊列狀態和優先級將鍊表更新。在一具體示例中,上述分類鍊表管理模塊20可用於在鍊表中的隊列被老化時如果隊列狀態由非空變為空,則將該隊列從分類鍊表中剔除;例如,當接收到前述實施例中所述更新鍊表的通知時,根據重新獲取的隊列狀態對分類鍊表進行更新操作。隊列由非空變為空後,說明某優先級中一些隊列的數據包已經全部被老化,此時可將隊列從鍊表中剔除。具體可包括隊列0老化後,將其從鏈首刪除,相鄰的下一隊列1作為鏈首,剛剛老化過的隊列0添加至鏈尾,此時「優先級1」的正向鍊表變為鏈首為隊列1、鏈尾為隊列 0 ;相應的,反向鍊表鏈首為隊列號0、鏈尾為隊列號1。如果隊列狀態不變,則將該隊列重新添加至分類鍊表。如果隊列狀態未發生變化, 說明在某優先級中一些隊列的數據包仍然未被老化,此時,需將該隊列重新入鏈,以便繼續老化。在另一具體示例中,上述分類鍊表管理模塊20可用於在鍊表中的隊列發生正常出包時若鏈首隊列因連續出數據包導致狀態變為空,則將該隊列從分類鍊表中剔除;例如,如果有老化和正常出數據包同時發生或僅有正常出數據包時,基於優先級的分類鍊表管理就必須採用雙向鍊表。以「優先級1」鍊表為例,如圖5所示,該鍊表由隊列0、1、3、6、7、 10組成,圖中表示了鍊表存儲的結構示意如果鍊表中隊列連續出數據包導致隊列0,也就是該分類鍊表的鏈首隊列狀態變為空,那麼首先讀取正向鍊表中與隊列0相鄰的下一列, 然後更新正向鍊表的首指針以及反向鍊表的尾指針,即表示將隊列0從該鍊表出鏈。同時及時更新隊列0的狀態和隊列深度。若鍊表中間節點隊列因連續出數據包導致狀態變空,則對該分類鍊表執行拆鏈和建鏈操作,以將鍊表的中間節點隊列刪除。如果鍊表中隊列連續出數據包導致狀態變空的隊列並不是0號隊列,而是鍊表的中間節點隊列,那麼就需要對該鍊表執行一個拆鏈和建鏈的操作,用來將鍊表的中間節點刪除。例如,假設鍊表中需要出鏈的是隊列1,那麼以隊列ID為索引地址去正向鍊表讀取下一跳,去反向鍊表讀取對應正向鍊表的上一跳,讀得隊列1的下一跳為隊列3,讀得隊列1的上一跳為隊列0,隊列1出鏈需要將隊列1從鍊表中刪除,那麼就需要將出鏈節點的上一跳接至出鏈節點的下一跳。所以對於正向鍊表,就要以讀出的上一跳為地址寫入讀出的下一跳隊列ID,而對於反向鍊表的操作就要與正向鍊表的操作相反,以讀出的下一跳為地址,寫入讀出的上一跳隊列ID。參照圖8,上述報文實現報文緩存資源共享的裝置的工作流程具體可參照圖8,在此不作詳述。以上僅為本發明的優選實施例,並非因此限制本發明的專利範圍,凡是利用本發明說明書及附圖內容所作的等效結構或等效流程變換,或直接或間接運用在其他相關的技術領域,均同理包括在本發明的專利保護範圍內。
權利要求
1.一種實現報文緩存資源共享的方法,其特徵在於,包括以下步驟預設各隊列的狀態,並在有數據包入隊時獲取隊列的隊列號、隊列狀態和優先級; 將隊列按優先級的不同添加至對應的分類鍊表; 維護各個隊列的緩存空間佔用情況,在緩存被佔滿時,發起老化指示; 當收到老化指示時,按照優先級對各自鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間。
2.如權利要求1所述的實現報文緩存資源共享的方法,其特徵在於,所述預設各隊列的狀態,並在有數據包入隊時獲取隊列的優先級包括在新數據包入隊時,根據數據包中的報文所屬隊列號查詢當前隊列的狀態; 如果當前隊列狀態為空,則將當前隊列狀態置為非空,將隊列按優先級的不同添加至對應的分類鍊表;如果當前隊列狀態為非空,則直接提取報文描述符中的數據包長信息,以便計算緩存深度和隊列深度。
3.如權利要求1所述的實現報文緩存資源共享的方法,其特徵在於,所述按優先級對鍊表中的隊列進行老化處理包括以鏈首指針所對應的隊列為老化隊列,指示該隊列老化數據包; 如果緩存不足的狀態一直得不到緩解,則持續進行老化。
4.如權利要求1至3中任一項所述的實現報文緩存資源共享的方法,其特徵在於,所述預設各隊列的狀態,並在有數據包入隊時獲取隊列的優先級還包括根據隊列老化或出數據包情況重新獲取各隊列狀態和優先級;所述將隊列按優先級的不同添加至對應的分類鍊表還包括根據重新獲取的隊列狀態和優先級將隊列出鏈或重新入鏈。
5.如權利要求4所述的實現報文緩存資源共享的方法,其特徵在於,所述根據隊列狀態和優先級將隊列出鏈或重新入鏈包括在鍊表中的隊列被老化時如果隊列狀態由非空變為空,則將該隊列從分類鍊表中剔除; 如果隊列狀態不變,則將該隊列重新添加至分類鍊表。
6.如權利要求4所述的實現報文緩存資源共享的方法,其特徵在於,所述根據隊列狀態和優先級將隊列出鏈或重新入鏈包括在鍊表中的隊列發生正常出包時若鏈首隊列因連續出數據包導致狀態變為空,則將該隊列從分類鍊表中剔除; 若鍊表中間節點隊列因連續出數據包導致狀態變空,則對該分類鍊表執行拆鏈和建鏈操作,以將鍊表的中間節點隊列刪除。
7.一種實現報文緩存資源共享的裝置,其特徵在於,包括隊列狀態管理模塊,用於預設各隊列的狀態,並在有數據包入隊時獲取隊列的隊列號、 隊列狀態和優先級;分類鍊表管理模塊,用於將隊列按優先級的不同添加至對應的分類鍊表,當收到老化指示時,按照優先級自低至高對各自鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間;緩存深度管理模塊,用於維護各個隊列的緩存空間佔用情況,在緩存被佔滿時,發起老化指示。
8.如權利要求7所述的實現報文緩存資源共享的裝置,其特徵在於,所述隊列狀態管理模塊用於在新數據包入隊時,根據數據包中的報文所屬隊列號查詢當前隊列的狀態; 如果當前隊列狀態為空,則將當前隊列狀態置為非空,將隊列按優先級的不同添加至對應的分類鍊表;如果當前隊列狀態為非空,則直接提取報文描述符中的數據包長信息,以便計算緩存深度和隊列深度。
9.如權利要求7所述的實現報文緩存資源共享的裝置,其特徵在於,所述緩存深度管理模塊用於以鏈首指針所對應的隊列為老化隊列,指示該隊列老化數據包; 如果緩存不足的狀態一直得不到緩解,則持續進行老化。
10.如權利要求7至9中任一項所述的實現報文緩存資源共享的裝置,其特徵在於, 所述隊列狀態管理模塊還用於根據隊列老化或出數據包情況重新獲取各隊列狀態; 所述分類鍊表管理模塊還用於根據重新獲取的隊列狀態和優先級將隊列出鏈或重新入鏈。
11.如權利要求10所述的實現報文緩存資源共享的裝置,其特徵在於,所述分類鍊表管理模塊還用於在鍊表中的隊列被老化時如果隊列狀態由非空變為空,則將該隊列從分類鍊表中剔除; 如果隊列狀態不變,則將該隊列重新添加至分類鍊表。
12.如權利要求10所述的實現報文緩存資源共享的裝置,其特徵在於,所述分類鍊表管理模塊還用於在鍊表中的隊列發生正常出包時若鏈首隊列因連續出數據包導致狀態變為空,則將該隊列從分類鍊表中剔除; 若鍊表中間節點隊列因連續出數據包導致狀態變空,則對該分類鍊表執行拆鏈和建鏈操作,以將鍊表的中間節點隊列刪除。
全文摘要
本發明涉及通信領域,提供了一種實現報文緩存資源共享的方法,包括以下步驟預設各隊列的狀態,並在有數據包入隊時獲取隊列的優先級;將隊列按優先級的不同添加至對應的分類鍊表;維護各個隊列的緩存空間佔用情況,在緩存被佔滿時,發起老化指示;當收到老化指示時,按照優先級對各自鍊表中的隊列進行老化處理,釋放被老化的隊列報文所佔的緩存空間。本發明還提供了一種實現報文緩存資源共享的裝置。本發明所提供的實現報文緩存資源共享的方法或裝置,可提高緩存利用率,減少不必要的丟數據包,並且參數配置簡單,改變了由於隊列數目增多而導致平均到每個隊列所佔緩存變小的狀況,為支持更多的隊列數目提供了保證,真正實現了緩存共享。
文檔編號H04L12/56GK102447610SQ201010507118
公開日2012年5月9日 申請日期2010年10月14日 優先權日2010年10月14日
發明者徐健, 高繼偉 申請人:中興通訊股份有限公司

同类文章

一種新型多功能組合攝影箱的製作方法

一種新型多功能組合攝影箱的製作方法【專利摘要】本實用新型公開了一種新型多功能組合攝影箱,包括敞開式箱體和前攝影蓋,在箱體頂部設有移動式光源盒,在箱體底部設有LED脫影板,LED脫影板放置在底板上;移動式光源盒包括上蓋,上蓋內設有光源,上蓋部設有磨沙透光片,磨沙透光片將光源封閉在上蓋內;所述LED脫影

壓縮模式圖樣重疊檢測方法與裝置與流程

本發明涉及通信領域,特別涉及一種壓縮模式圖樣重疊檢測方法與裝置。背景技術:在寬帶碼分多址(WCDMA,WidebandCodeDivisionMultipleAccess)系統頻分復用(FDD,FrequencyDivisionDuplex)模式下,為了進行異頻硬切換、FDD到時分復用(TDD,Ti

個性化檯曆的製作方法

專利名稱::個性化檯曆的製作方法技術領域::本實用新型涉及一種檯曆,尤其涉及一種既顯示月曆、又能插入照片的個性化檯曆,屬於生活文化藝術用品領域。背景技術::公知的立式檯曆每頁皆由月曆和畫面兩部分構成,這兩部分都是事先印刷好,固定而不能更換的。畫面或為風景,或為模特、明星。功能單一局限性較大。特別是畫

一種實現縮放的視頻解碼方法

專利名稱:一種實現縮放的視頻解碼方法技術領域:本發明涉及視頻信號處理領域,特別是一種實現縮放的視頻解碼方法。背景技術: Mpeg標準是由運動圖像專家組(Moving Picture Expert Group,MPEG)開發的用於視頻和音頻壓縮的一系列演進的標準。按照Mpeg標準,視頻圖像壓縮編碼後包

基於加熱模壓的纖維增強PBT複合材料成型工藝的製作方法

本發明涉及一種基於加熱模壓的纖維增強pbt複合材料成型工藝。背景技術:熱塑性複合材料與傳統熱固性複合材料相比其具有較好的韌性和抗衝擊性能,此外其還具有可回收利用等優點。熱塑性塑料在液態時流動能力差,使得其與纖維結合浸潤困難。環狀對苯二甲酸丁二醇酯(cbt)是一種環狀預聚物,該材料力學性能差不適合做纖

一種pe滾塑儲槽的製作方法

專利名稱:一種pe滾塑儲槽的製作方法技術領域:一種PE滾塑儲槽一、 技術領域 本實用新型涉及一種PE滾塑儲槽,主要用於化工、染料、醫藥、農藥、冶金、稀土、機械、電子、電力、環保、紡織、釀造、釀造、食品、給水、排水等行業儲存液體使用。二、 背景技術 目前,化工液體耐腐蝕貯運設備,普遍使用傳統的玻璃鋼容

釘的製作方法

專利名稱:釘的製作方法技術領域:本實用新型涉及一種釘,尤其涉及一種可提供方便拔除的鐵(鋼)釘。背景技術:考慮到廢木材回收後再加工利用作業的方便性與安全性,根據環保規定,廢木材的回收是必須將釘於廢木材上的鐵(鋼)釘拔除。如圖1、圖2所示,目前用以釘入木材的鐵(鋼)釘10主要是在一釘體11的一端形成一尖

直流氧噴裝置的製作方法

專利名稱:直流氧噴裝置的製作方法技術領域:本實用新型涉及ー種醫療器械,具體地說是ー種直流氧噴裝置。背景技術:臨床上的放療過程極易造成患者的局部皮膚損傷和炎症,被稱為「放射性皮炎」。目前對於放射性皮炎的主要治療措施是塗抹藥膏,而放射性皮炎患者多伴有局部疼痛,對於止痛,多是通過ロ服或靜脈注射進行止痛治療

新型熱網閥門操作手輪的製作方法

專利名稱:新型熱網閥門操作手輪的製作方法技術領域:新型熱網閥門操作手輪技術領域:本實用新型涉及一種新型熱網閥門操作手輪,屬於機械領域。背景技術::閥門作為流體控制裝置應用廣泛,手輪傳動的閥門使用比例佔90%以上。國家標準中提及手輪所起作用為傳動功能,不作為閥門的運輸、起吊裝置,不承受軸向力。現有閥門

用來自動讀取管狀容器所載識別碼的裝置的製作方法

專利名稱:用來自動讀取管狀容器所載識別碼的裝置的製作方法背景技術:1-本發明所屬領域本發明涉及一種用來自動讀取管狀容器所載識別碼的裝置,其中的管狀容器被放在循環於配送鏈上的文檔匣或託架裝置中。本發明特別適用於,然而並非僅僅專用於,對引入自動分析系統的血液樣本試管之類的自動識別。本發明還涉及專為實現讀