專利名稱:釋放被無效占用的資源的方法和存儲轉發裝置的制作方法
技術領域:
本發明涉及通信領域,尤其涉及存儲轉發技術。
背景技術:
在數據通信的芯片中通常使用如圖1所示的“存儲-轉發”的結構,該結構包括接收管理模塊、報文數據的緩存模塊、轉發處理模塊和發送管理模塊。所述接收管理模塊包括至少一個接收端口,所述發送管理模塊包括至少一個輸出端口,以及對應所述輸出端口的輸出隊列。
在進行數據通信時,所述接收管理模塊通過各個接收端口將報文數據完整地接收下來,然后向報文數據緩存模塊申請相應的緩存資源,如果不能夠申請到相應的緩存資源,則將接收到的報文數據丟棄掉;如果能夠申請到相應的緩存資源,則所述接收管理模塊會獲得存儲接收到的報文數據的存儲地址,并按照所述存儲地址將接收到的數據存儲到報文數據緩存模塊中,同時將所述存儲地址與報文數據的部分內容(包括位于報文數據頭部的“目的地址”信息與“源地址”信息等)作為轉發處理信息,發送給所述轉發處理模塊;所述轉發處理模塊對轉發處理信息進行分析處理,并根據分析結果確定報文數據的轉發信息,包括報文數據是否需要丟棄,或是轉發到哪個輸出端口等。當所述轉發處理模塊得出報文數據的轉發信息后,將根據所述轉發信息將報文數據對應的存儲地址信息寫入到每個輸出端口對應的“先進先出”的輸出隊列中,然后等待發送。所述發送管理模塊根據輸出端口輸出數據的情況讀取輸出隊列中的地址信息,并根據所述地址信息從報文數據緩存模塊中讀取對應所述地址的報文數據,然后通過對應的輸出端口發送出去。
當報文數據從輸出端口輸出后,所述芯片釋放被所述報文數據所占用的緩存資源和隊列資源。
上述過程中,當芯片對當前數據報文的轉發處理信息進行分析處理時,接收端口可能會接收到后續到達的一些數據報文,此時芯片必須分配一些緩存資源來對報文數據進行存儲;然而這些存儲資源與隊列資源要等到報文數據從輸出端口發送出去后才能被回收再次利用。另外,在芯片進行工作的過程中,有時會出現某些輸出端口突然鏈路中斷的情況,例如網線斷開、突然停電、用戶沒有按照規定程序關閉對接的網絡設備等,此時在芯片中已經有一些緩存或隊列資源分配給該輸出端口,如果這些端口不能夠及時恢復正常,那么這些已經被分配的緩存或隊列資源將會被長時間占用,不能再被其它端口利用,從而對芯片的性能造成影響。因此需要經常檢測輸出端口的工作狀態,以便及時判斷鏈路的連接狀態,并當鏈路中斷時,能夠及時釋放已經被分配的緩存或隊列資源。
與本發明有關的現有技術一提供了一種釋放已經被分配的緩存或隊列資源的方法,其主要思想是發送管理模塊不斷檢查輸出端口上的電路連接信號,即Link信號來獲知輸出端口的鏈路的連接狀態,并將檢測到的信息主動上報給CPU;當所述CPU根據所述上報的信息獲知輸出端口發生鏈路中斷后,控制所述發送管理模塊不斷地從相應的隊列、緩存中將發送到該輸出端口的數據報文丟棄,直至所述CPU獲知到輸出端口的鏈路恢復連接,則停止這種丟棄處理,恢復正常的數據報文發送。
現有技術一需要CPU進行處理,從而會增加CPU的負擔。
與本發明有關的現有技術二提供了另一種釋放已經被分配的緩存或隊列資源的方法,其主要思想是
通過高層軟件定時地、不斷地檢查輸出端口是否在發送數據(特別是一些協議類型的數據報文),并根據檢測到的信息判斷鏈路是否一直在線;當檢查到輸出端口發生鏈路中斷后,不斷地從相應的隊列、緩存中將發送到該輸出端口的數據報文丟棄,從而實現被占用資源的回收。一旦重新檢查到端口的鏈路恢復連接,則停止這種丟棄處理,恢復正常的數據報文發送。
現有技術二需要高層軟件來進行處理,會造成軟件運行開銷,增加了運行軟件的CPU的負擔。
發明內容
本發明的目的是提供一種釋放被無效占用的資源的方法和存儲轉發裝置,通過本發明,解決了現有技術中當輸出端口工作異常時,為實現被占用資源的回收,需要CPU的參與,或需要運行高層軟件來進行處理等弊端。
本發明的目的是通過以下技術方案實現的本發明提供一種釋放被無效占用的資源的方法,其包括A、當檢測到輸出端口上沒有數據報文發送時,則啟動對應所述輸出端口而設置的定時器開始計時;B、當所述定時器的計時時間達到定時周期時,釋放被無效占用的資源。
其中,所述定時器的定時周期大于正常輸出時每一個數據報文發送時所需要的時間。
其中,所述步驟A具體包括發送管理模塊檢測設置在其內的各個輸出端口上是否有數據報文發送,并當檢測到某一輸出端口上沒有數據報文發送時,則啟動對應所述輸出端口而設置的定時器開始計時;或,
發送管理模塊檢測設置在其外部的各個輸出端口上是否有數據報文發送,并當檢測到某一輸出端口上沒有數據報文發送時,則對應所述輸出端口而設置的定時器開始計時。
其中,在所述步驟B具體包括B1、在所述定時器的計時時間未到達定時周期之前,繼續檢測所述輸出端口上是否有數據報文正常發送,并且當檢測到所述輸出端口上有數據報文發送時,則將所述定時器進行復位,并停止計時,然后繼續步驟A;當檢測到所述輸出端口上沒有數據報文發送時,則執行步驟B2;B2、當所述定時器的定時時間達到定時周期時,則讀取所述輸出端口對應的輸出隊列中的存儲地址,并根據所述存儲地址從報文數據緩存模塊中讀取對應所述存儲地址的報文數據,然后將其丟棄掉,并釋放所述存儲地址對應的隊列資源以及所述報文數據對應的緩存資源;同時將所述定時器進行復位,然后轉入步驟A。
本發明提供一種存儲轉發裝置,包括至少一個輸出端口,其中,對應每一個輸出端口還包括一個定時器,用于當輸出端口沒有數據報文發送時,則啟動開始計時,并當計時時間等于定時周期時,則觸發所述存儲轉發裝置釋放被無效占用的資源。
其中,所述定時器的定時周期大于正常輸出時每一個數據報文發送時所需要的時間。
其中,所述定時器位于輸出端口內部,或位于輸出端口的外部。
其中,所述的存儲轉發裝置,還包括報文數據緩存模塊,用于緩存報文數據;發送管理模塊,用于檢測所述輸出端口是否有數據報文發送,當沒有數據報文發送時,發送信號觸發所述定時器;并且當定時器的計時時間到達定時周期時,被觸發對被無效占用的資源進行釋放。
其中,所述被無效占用的資源包括已經分配給輸出端口但不能被發送的輸出隊列中的隊列資源和對應所述報文數據緩存模塊中緩存的報文資源。
其中,所述輸出端口位于所述發送管理模塊內部,或位于所述發送管理模塊外部,并與所述發送管理模塊連接。
由上述本發明提供的技術方案可以看出,本發明中,當檢測到某個輸出端口上沒有數據報文發送時,啟動對應所述輸出端口而設置的定時器開始計時;并當所述定時器的計時時間達到定時周期時,釋放被無效占用的資源。因此當輸出端口工作異常時,本發明不僅能夠及時釋放已經被分配的資源,而且不需要CPU的參與,不需要軟件的運行。
圖1為背景技術中給出的“存儲-轉發”結構的芯片的工作原理圖;圖2為本發明提供的第一實施例的流程圖;圖3為本發明提供的第二實施例的原理圖;圖4為本發明提供的第三實施例中當輸出端口設置在發送管理模塊外部,并且各個定時器設置在發送管理模塊中,并與各個輸出端口對應時的存儲轉發裝置的原理圖。
具體實施例方式
對“存儲-轉發”結構的數據通信芯片,當其在工作過程中出現某些輸出端口發生鏈路突然中斷的情況(例如網線斷開、突然停電、用戶沒有按照規定程序離線等)時,此時在芯片中已經有一些緩存資源或隊列資源分配給該輸出端口,這些資源被稱為被無效占用的資源,如果這些資源得到及時的釋放,則能夠使有限的資源得到充分的利用,而且如果沒有CPU的參與或者高層軟件的參與就能夠及時釋放被無效占用的資源,則更為理想。
本發明提供了第一實施例是不需要CPU參與或者高層軟件的參與就能夠及時釋放被無效占用的資源的一種方法,其核心是對應各個輸出端口設置一個定時器,當所述發送管理模塊檢測到某個輸出端口上沒有數據報文發送時,則啟動對應所述輸出端口上的定時器開始計時。當所述定時器的計時時間達到定時周期時,則所述發送管理模塊對無效占用的資源進行釋放。其具體實施過程如圖2所示,包括如下步驟步驟1,對應各個輸出端口設置一個定時器,并設定所述定時器的定時周期大于正常輸出時每一個數據報文發送時所需要的時間。
所述定時器只有在對應的輸出端口上沒有數據報文發送時,才開始計時,當對應的輸出端口上有數據報文正常輸出時,則所述定時器處于復位狀態,不會進行計時處理。
所述定時器的定時周期可以設置不同的數值,以適應不同的工作情況。
步驟2,發送管理模塊檢測各個輸出端口上是否有數據報文發送,并當檢測到某一輸出端口上沒有數據報文發送時,則執行步驟3,即啟動設置在所述輸出端口上的定時器開始計時,然后執行步驟5;當檢測到各個輸出端口均有數據報文發送時,則執行步驟4,即將所述定時器置于復位狀態,然后繼續步驟2。
步驟5,在所述定時器的計時時間未到達定時周期之前,繼續檢測所述輸出端口上是否有數據報文正常發送,當所述發送管理模塊檢測到所述輸出端口上有數據報文發送時,則執行步驟6,即將所述定時器進行復位,并停止計時,然后繼續步驟2;當檢測到所述輸出端口上沒有數據報文發送時,則執行步驟7。
步驟7,當所述定時器的定時時間達到定時周期時,則所述發送管理模塊讀取罵所述輸出端口對應的輸出隊列中的存儲地址信息,并根據所述存儲地址信息從報文數據緩存模塊中讀取對應所述存儲地址的報文數據,然后將其丟棄掉,釋放所述存儲地址信息對應的隊列資源以及所述報文數據對應的緩存資源。同時將所述定時器進行復位,然后轉入步驟2。
一旦輸出端口的鏈路發生中斷,則輸出端口上將長時間不能發送數據保文,這時所述輸出端口上的定時器可以達到規定的定時周期。
本發明提供的第二實施例,是一種存儲轉發裝置,其工作原理如圖3所示,包括接收管理模塊、報文數據緩存模塊、轉發處理模塊和發送管理模塊;其中所述接收管理模塊包括至少一個接收端口,所述發送管理模塊包括至少一個輸出端口、對應所述輸出端口的輸出隊列以及設置在各個輸出端口上的定時器;所述定時器的定時周期大于正常輸出時每一個數據報文發送時所需要的時間。
在進行數據通信時,所述接收管理模塊通過所述各個接收端口將報文數據完整地接收下來,然后向所述報文數據緩存模塊申請相應的緩存資源,如果不能夠申請到相應的緩存資源,則將接收到的報文數據丟棄掉;如果能夠申請到相應的緩存資源,則所述接收管理模塊會獲得存儲接收到的報文數據的存儲地址,并按照所述存儲地址將接收到的數據存儲到所述報文數據緩存模塊中,同時將所述存儲地址與報文數據中的部分內容信息(包括位于報文數據頭部的“目的地址”信息與“源地址”信息等)作為轉發處理信息,發送給所述轉發處理模塊。
所述轉發處理模塊對轉發處理信息進行分析處理,并根據分析結果確定報文數據的轉發信息,包括報文數據是否需要丟棄,或是轉發到哪個輸出端口等。當轉發處理模塊得出報文數據的轉發信息后,將根據所述轉發信息將報文數據對應的存儲地址寫入到所述發送管理模塊中的對應的輸出端口的“先進先出”的輸出隊列中,然后等待發送。
所述發送管理模塊檢測所述輸出端口上是否有數據報文發送,當檢測到所述輸出端口上有數據報文正常發送時,則不斷讀取所述輸出端口對應的輸出隊列中的存儲地址,并根據所述存儲地址從報文數據緩存模塊中讀取對應所述存儲地址的報文數據,然后通過所述輸出端口發送出去。
當所述發送管理模塊檢測到所述輸出端口上沒有數據報文發送時,則啟動設置在所述輸出端口上的定時器開始計時;如果在所述定時器的計時時間未到達定時周期之前,并且所述發送管理模塊檢測到所述輸出端口上有數據報文發送時,則所述發送管理模塊將所述定時器進行復位,并停止計時。如果在所述定時器的計時時間到達定時周期之前,始終沒有數據報文在所述輸出端口上發送,則所述定時器的定時時間會達到定時周期,此時所述定時器會觸發所述發送管理模塊釋放被無效占用的資源也就是說,所述發送管理模塊則讀取所述輸出端口對應的輸出隊列中的存儲地址,并根據所述存儲地址從報文數據緩存模塊中讀取對應所述存儲地址的報文數據,然后將其丟棄掉,并釋放所述存儲地址對應的隊列資源以及所述報文數據對應的緩存資源。隨后將所述定時器復位,重新開始計時,這樣周而復始,每當所述定時器的計時時間達到其定時周期時,則丟棄一個數據報文,并釋放相應的緩存和隊列資源。當所述發送管理模塊檢測到所述端口上有數據報文發送時,才停止丟棄。
上述實施例中,所述定時器也可以不設置在各個輸出端口上,而獨立于各個輸出端口而設置在發送管理模塊中,但此時所述各個定時器仍需要對應各個輸出端口。
本發明提供的第三實施例,是另一種存儲轉發裝置,其與第二實施例的區別在于,所述輸出端口設置在發送管理模塊外部,并與所述發送管理模塊連接。此時各個定時器可以設置在發送管理模塊中,并且與各個輸出端口對應;各個定時器也可以設置在對應的各個輸出端口上。如圖4所示給出了輸出端口設置在發送管理模塊外部,并且各個定時器設置在發送管理模塊中,并與各個輸出端口對應時的存儲轉發裝置的原理圖。
第三實施例中各個模塊與定時器間的信息傳遞過程與第二實施例基本類似,這里不再詳細描述。
由上述本發明的具體實施方案可以看出,本發明中當檢測到某個輸出端口上沒有數據報文發送時,啟動對應所述輸出端口而設置的定時器開始計時;并當所述定時器的計時時間達到定時周期時,釋放被無效占用的資源。因此當輸出端口工作異常時,本發明不僅能夠及時釋放已經被分配的資源,而且不需要CPU的參與,不需要軟件的運行。
以上所述,僅為本發明較佳的具體實施方式
,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明揭露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求的保護范圍為準。
權利要求
1.一種釋放被無效占用的資源的方法,其特征在于,包括A、當檢測到輸出端口上沒有數據報文發送時,則啟動對應所述輸出端口而設置的定時器開始計時;B、當所述定時器的計時時間達到定時周期時,釋放被無效占用的資源。
2.根據權利要求1所述的方法,其特征在于所述定時器的定時周期大于正常輸出時每一個數據報文發送時所需要的時間。
3.根據權利要求1或2所述的方法,其特征在于,所述步驟A具體包括發送管理模塊檢測設置在其內的各個輸出端口上是否有數據報文發送,并當檢測到某一輸出端口上沒有數據報文發送時,則啟動對應所述輸出端口而設置的定時器開始計時;或,發送管理模塊檢測設置在其外部的各個輸出端口上是否有數據報文發送,并當檢測到某一輸出端口上沒有數據報文發送時,則對應所述輸出端口而設置的定時器開始計時。
4.根據權利要求3所述的方法,其特征在于,在所述步驟B具體包括B1、在所述定時器的計時時間未到達定時周期之前,繼續檢測所述輸出端口上是否有數據報文正常發送,并且當檢測到所述輸出端口上有數據報文發送時,則將所述定時器進行復位,并停止計時,然后繼續步驟A;當檢測到所述輸出端口上沒有數據報文發送時,則執行步驟B2;B2、當所述定時器的定時時間達到定時周期時,則讀取所述輸出端口對應的輸出隊列中的存儲地址,并根據所述存儲地址從報文數據緩存模塊中讀取對應所述存儲地址的報文數據,然后將其丟棄掉,并釋放所述存儲地址對應的隊列資源以及所述報文數據對應的緩存資源;同時將所述定時器進行復位,然后轉入步驟A。
5.一種存儲轉發裝置,包括至少一個輸出端口,其特征在于,對應每一個輸出端口還包括一個定時器,用于當輸出端口沒有數據報文發送時,則啟動開始計時,并當計時時間等于定時周期時,則觸發所述存儲轉發裝置釋放被無效占用的資源。
6.根據權利要求5所述的存儲轉發裝置,其特征在于所述定時器的定時周期大于正常輸出時每一個數據報文發送時所需要的時間。
7.根據權利要求5所述的存儲轉發裝置,其特征在于所述定時器位于輸出端口內部,或位于輸出端口的外部。
8.根據權利要求5所述的存儲轉發裝置,其特征在于,還包括報文數據緩存模塊,用于緩存報文數據;發送管理模塊,用于檢測所述輸出端口是否有數據報文發送,當沒有數據報文發送時,發送信號觸發所述定時器;并且當定時器的計時時間到達定時周期時,被觸發對被無效占用的資源進行釋放。
9.根據權利要求5、6、7或8所述的存儲轉發裝置,其特征在于,所述被無效占用的資源包括已經分配給輸出端口但不能在定時器的定時周期內被發送的輸出隊列中的隊列資源和對應所述報文數據緩存模塊中緩存的報文資源。
10.根據權利要求9所述的存儲轉發裝置,其特征在于所述輸出端口位于所述發送管理模塊內部,或位于所述發送管理模塊外部,并與所述發送管理模塊連接。
全文摘要
本發明涉及一種釋放被無效占用的資源的方法和存儲轉發裝置,其核心是當檢測到輸出端口上沒有數據報文發送時,則啟動對應所述輸出端口而設置的定時器開始計時;當所述定時器的計時時間達到定時周期時,釋放被無效占用的資源。通過本發明,當輸出端口工作異常時,本發明不僅能夠及時釋放已經被分配的資源,而且不需要CPU的參與,不需要軟件的運行。
文檔編號H04L12/54GK1984025SQ20061007838
公開日2007年6月20日 申請日期2006年5月17日 優先權日2006年5月17日
發明者譚銳, 王萬萬, 付紅松, 楊瀚清 申請人:華為技術有限公司