專利名稱:以太網(wǎng)交換芯片的緩存管理方法及裝置的制作方法
技術領域:
本發(fā)明涉及通信領域,具體而言,涉及一種以太網(wǎng)交換芯片的緩存管理方法及裝置。
背景技術:
交換網(wǎng)是帶寬交換設備(如交換機/路由器)中的核心部分。目前主流的商用交換設備主要采用共享緩存(shared-memory)架構,故緩存技術是很重要的關鍵技術之一?,F(xiàn)有的緩存方法主要有以下兩種 一種是為每個輸出端口保留一個“reserved pool”存儲資源用于存儲單播信元。同時有一個“sharedpool”緩存資源中一部分區(qū)域被所有的輸出端口共享,僅用于存儲單播信元;在shared pool另一部分區(qū)域僅用于存儲多播信元。去往某一端口的單播信元優(yōu)先放入自己獨享的:reserved pool,如果reserved pool滿了,再放入shared pool的單播區(qū)域。另一種方法是將單播緩存和多播緩存分別放置在不同的存儲器中,單播緩存和多播緩存完全獨立,互不影響。上述兩種方法都是普遍采用的存儲方式。目前,商用交換芯片的交換容量和交換端口數(shù)量都在呈急劇的增加的態(tài)勢,但現(xiàn)有技術并沒有給出在端口數(shù)量擴展時,共享緩存由多片緩存器支持下,解決緩存器之間負載不均衡問題的方法,以至于緩存的利用率不高,浪費了大量的存儲資源,增大了成本。另外,在上述兩種方法中,單播多播的存儲區(qū)域都是固定的,一旦緩存空間分配好后,就固定不變,不能根據(jù)單播和多播的業(yè)務流量來動態(tài)分配緩存空間。舉個例子,某段時間單播的業(yè)務流量遠大于多播業(yè)務流量,多播存儲區(qū)域占用率極低,而單播因為業(yè)務流量太大而原本設置的緩存的相對很小,而導致單播信元因緩存空間不夠而丟包,但多播緩存區(qū)域卻空置浪費的現(xiàn)象??梢姡捎趩味嗖ゾ彺婵臻g分配不靈活、可擴展性差會導致丟包率的增加。針對以上所提到的問題,目前尚未提出有效的解決方案。
發(fā)明內(nèi)容
本發(fā)明的主要目的在于提供一種以太網(wǎng)交換芯片的緩存管理方法及裝置,以至少解決上述問題之一。根據(jù)本發(fā)明的一個方面,提供了一種以太網(wǎng)交換芯片的緩存管理方法,包括統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息;根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域;將單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將多播信元數(shù)據(jù)存儲到多播存儲區(qū)域中。將單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將多播信元數(shù)據(jù)存儲到多播存儲區(qū)域包括根據(jù)各緩存器單播存儲區(qū)域和多播存儲區(qū)域的占用程度對各緩存器單播存儲區(qū)域和多播存儲區(qū)域進行排序;為單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為多播信元數(shù)據(jù)分配一個對應于占用程度最小的多播存儲區(qū)域的空閑地址,將多播信元數(shù)據(jù)存儲到該占用程度最小的多播存儲區(qū)域中。當占用程度最小的單播存儲區(qū)域和占用程度最小的多播存儲區(qū)域位于同一片緩存器上且該緩存器為簡單緩存器時,為單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為多播信元數(shù)據(jù)分配一個對應于占用程度次小的多播存儲區(qū)域的空閑地址,將多播信元數(shù)據(jù)存儲到該占用程度次小的多播存儲區(qū)域中。在根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)流量的比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域之后,還包括解析單播信元數(shù)據(jù)的信元頭信息,進行路 由查找,確定單播信元數(shù)據(jù)的輸出端口信息。在將單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中之后,還包括為每個輸出端口維護與輸入端口數(shù)目相同的列VIQ (Virtual InputQueue,虛擬輸入隊列),根據(jù)單播信元數(shù)據(jù)的存儲地址和對應的輸入輸出端口信息進行入隊;根據(jù)所有VIQ的隊首信息,進行調(diào)度;根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息;根據(jù)出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給對應的輸出端口 ;輸出端口將收到的信元數(shù)據(jù)插入校驗字后發(fā)送到數(shù)據(jù)鏈路上。在根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)流量的比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域之后,還包括解析多播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定多播信元數(shù)據(jù)的位圖(bitmap)信息。在將所多播信元數(shù)據(jù)存儲到多播存儲區(qū)域之后,還包括為每個輸出端口維護與輸入端口數(shù)目相同的列VIQ,根據(jù)多播信元數(shù)據(jù)的存儲地址和對應的bitmap信息進行入隊;根據(jù)所有VIQ的隊首信息,進行調(diào)度;根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息;根據(jù)出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給對應的輸出端口 ;輸出端口將收到的信元數(shù)據(jù)插入校驗字后發(fā)送到數(shù)據(jù)鏈路上。在統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息之前,還包括接收信元數(shù)據(jù)流,并對接收到的信元數(shù)據(jù)流進行校驗;解析通過校驗的信源數(shù)據(jù)的信元頭信息,區(qū)分出單播信元數(shù)據(jù)和多播信元數(shù)據(jù),將單播信元數(shù)據(jù)發(fā)送到單播通道,將多播信元數(shù)據(jù)發(fā)送到多播通道。根據(jù)本發(fā)明的另一方面,提供了一種以太網(wǎng)交換芯片的緩存管理裝置,包括流量檢測模塊,用于統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息;存儲區(qū)域劃分模塊,用于根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)流量的比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域;空閑地址管理模塊,用于將單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將多播信元數(shù)據(jù)存儲到多播存儲區(qū)域中。上述裝置還包括緩存深度排序模塊,用于根據(jù)各緩存器單播存儲區(qū)域和多播存儲區(qū)域的占用程度對各緩存器單播存儲區(qū)域和多播存儲區(qū)域進行排序??臻e地址管理模塊,還用于為單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為多播信元數(shù)據(jù)分配一個對應于占用程度最小的多播存儲區(qū)域的空閑地址,將多播信元數(shù)據(jù)存儲到該占用程度最小的多播存儲區(qū)域中??臻e地址管理模塊,還用于在占用程度最小的單播存儲區(qū)域和占用程度最小的多播存儲區(qū)域位于同一片緩存器上且該緩存器為簡單緩存器時,為單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為多播信元數(shù)據(jù)分配一個對應于占用程度次小的多播存儲區(qū)域的空閑地址,將多播信元數(shù)據(jù)存儲到該占用程度次小的多播存儲區(qū)域中。上述裝置還包括單播路由模塊,用于解析單播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定單播信元數(shù)據(jù)的輸出端口信息;隊列管理模塊,用于為每個輸出端口維護與輸入端口數(shù)目相同的VIQ,根據(jù)單播信元數(shù)據(jù)的存儲地址和對應的輸入輸出端口信息進行入隊,以及根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息;輸出調(diào)度模塊,用于根據(jù)所有VIQ的隊首信息,進行調(diào)度生成調(diào)度結果,以及將接收到的出隊信元數(shù)據(jù)發(fā)送給輸出端口模塊;輸出端口模塊,用于將收到的信元數(shù)據(jù)插入校驗字后通過對應的輸出端口發(fā)送到數(shù)據(jù)鏈路上。 上述裝置還包括多播路由模塊,用于解析多播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定多播信元數(shù)據(jù)的bitmap信息;隊列管理模塊,還用于為每個輸出端口維護與輸入端口數(shù)目相同的VIQ,根據(jù)多播信元數(shù)據(jù)的存儲地址和對應的bitmap信息進行入隊,以及根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息。空閑地址管理模塊,還用于根據(jù)出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給輸出調(diào)度模塊。上述裝置還包括輸入接口模塊,用于接收信元數(shù)據(jù)流,并對接收到的信元數(shù)據(jù)流進行校驗;信元分類模塊,用于解析通過校驗的信源數(shù)據(jù)的信元頭信息,區(qū)分出單播信元數(shù)據(jù)和多播信元數(shù)據(jù),將單播信元數(shù)據(jù)發(fā)送到單播通道,將多播信元數(shù)據(jù)發(fā)送到多播通道。通過本發(fā)明,采用根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息,動態(tài)的將每一片緩存器的存儲空間劃分為單播存儲區(qū)域和多播存儲區(qū)域,以存儲單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的方案,解決了現(xiàn)有技術中單多播緩存空間分配不靈活、可擴展性差而導致的丟包率增加的問題,進而達到了提高單播和多播兩種緩存的利用率且擴展靈活的效果。
此處所說明的附圖用來提供對本發(fā)明的進一步理解,構成本申請的一部分,本發(fā)明的示意性實施例及其說明用于解釋本發(fā)明,并不構成對本發(fā)明的不當限定。在附圖中圖I是根據(jù)本發(fā)明實施例的以太網(wǎng)交換芯片的緩存管理方法的流程圖;圖2是根據(jù)本發(fā)明實例的內(nèi)部最多同時接收4個單播信元和4個多播信元的交換系統(tǒng)的結構示意圖;圖3是根據(jù)本發(fā)明實例的采用移位寄存器進行排序的方法的示意圖;圖4是根據(jù)本發(fā)明實例的單播信元優(yōu)先寫入的流程示意圖;圖5是根據(jù)本發(fā)明實施例的以太網(wǎng)交換芯片的緩存管理裝置的結構框圖;圖6是根據(jù)本發(fā)明優(yōu)選實施例的以太網(wǎng)交換芯片的緩存管理裝置的結構框圖。
具體實施方式
下文中將參考附圖并結合實施例來詳細說明本發(fā)明。需要說明的是,在不沖突的情況下,本申請中的實施例及實施例中的特征可以相互組合。圖I是根據(jù)本發(fā)明實施例的以太網(wǎng)交換芯片的緩存管理方法的流程圖。如圖I所示,根據(jù)本發(fā)明實施例的以太網(wǎng)交換芯片的緩存管理方法包括步驟S102,統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息;步驟S104,根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域;步驟S106,將單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將多播信元數(shù)據(jù)存儲到多播存儲區(qū)域中。因為交換網(wǎng)存在單播和多播兩種信元,在共享緩存中需要將兩種信元分區(qū)域存 放,上述方法不同于現(xiàn)有技術將單播和多播兩種緩存嚴格區(qū)分開,而是將單多播緩存放在一起。假設同時最多寫入M個單播信元和M個多播信元的話,可以通過2M個存儲器搭建一個共享緩存,每片緩存器的緩存空間分割成單播存儲區(qū)域和多播存儲區(qū)域,單播信元將會被存入2M個單播存儲區(qū)域中的某一個區(qū)域,多播信元將會被存入2M個多播存儲區(qū)域中的某一個區(qū)域。區(qū)域分割動態(tài)自適應與單/多播的業(yè)務流量,當單播業(yè)務流量大于多播業(yè)務流量時,單播存儲空間大于多播存儲空間,當單播業(yè)務流量小于多播業(yè)務流量時,單播存儲空間小于多播存儲空間,在使用同樣數(shù)量緩存器的前提下,可以大大提高單播和多播存儲空間的緩存占用率。優(yōu)選地,步驟S106可以進一步包括以下處理(I)根據(jù)各緩存器單播存儲區(qū)域和多播存儲區(qū)域的占用程度對各緩存器單播存儲區(qū)域和多播存儲區(qū)域進行排序;(2)為單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為多播信元數(shù)據(jù)分配一個對應于占用程度最小的多播存儲區(qū)域的空閑地址,將多播信元數(shù)據(jù)存儲到該占用程度最小的多播存儲區(qū)域中。上述處理實際上提供了一種負載均衡功能。通常共享緩存由多片緩存器搭建而成,N條輸入端口進入的所有信元將被分散存儲在多片緩存器中。假設共享緩存有M片緩存器,通過上述處理可以使來自不同輸入端口的信元較均勻的分布在M個緩存器中,從而避免某些緩存器空閑,而某些緩存器幾乎存滿導致的緩存器溢或產(chǎn)生流控。此時發(fā)生的流控,雖然能避免緩存溢出,但由于并不是所有緩存器都處在將滿狀態(tài),所以這時發(fā)出的流控是不準確的,會導致緩存利用率低下。優(yōu)選地,當占用程度最小的單播存儲區(qū)域和占用程度最小的多播存儲區(qū)域位于同一片緩存器上且該緩存器為簡單緩存器時,為單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為多播信元數(shù)據(jù)分配一個對應于占用程度次小的多播存儲區(qū)域的空閑地址,將多播信元數(shù)據(jù)存儲到該占用程度次小的多播存儲區(qū)域中。在存儲信元數(shù)據(jù)時要優(yōu)先保證單播信元數(shù)據(jù)的存儲,當占用程度最小的單播存儲區(qū)域和占用程度最小的多播存儲區(qū)域位于同一片緩存器上且該緩存器為一讀一寫的簡單緩存器時,要優(yōu)先保證單播信元數(shù)據(jù),而將多播信元數(shù)據(jù)存儲到占用程度次小的多播存儲區(qū)域中。當緩存器有兩個及以上寫口時,當占用程度最小的單播存儲區(qū)域和占用程度最小的多播存儲區(qū)域位于同一片緩存器上時,單播信元數(shù)據(jù)和多播信元數(shù)據(jù)可以都寫入該緩存器。優(yōu)選地,步驟104之后還可以進一步包括以下處理解析單播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定單播信元數(shù)據(jù)的輸出端口信息(包括輸出端口號,即目的端口號);步驟S106之后還可以進一步包括以下處理(I)為每個輸出端口維護與輸入端口數(shù)目相同的VIQ,根據(jù)單播信元數(shù)據(jù)的存儲地址和對應的輸入輸出端口信息進行入隊;(2)根據(jù)所有VIQ的隊首信息,進行調(diào)度; (3)根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息;(4)根據(jù)出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給對應的輸出端口 ;(5)輸出端口將收到的信元數(shù)據(jù)插入校驗字后發(fā)送到數(shù)據(jù)鏈路上。上述處理提供了一種單播數(shù)據(jù)隊列管理方法,可以準確有效的對存儲的單播信元數(shù)據(jù)進行管理,并有序的輸出存儲的單播信元數(shù)據(jù)。優(yōu)選地,步驟104之后還可以進一步包括以下處理解析多播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定多播信元數(shù)據(jù)的bitmap信息;步驟S106之后還可以進一步包括以下處理(I)為每個輸出端口維護與輸入端口數(shù)目相同的VIQ,根據(jù)多播信元數(shù)據(jù)的存儲地址和對應的bitmap信息進行入隊;(2)根據(jù)所有VIQ的隊首信息,進行調(diào)度;(3)根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息;(4)根據(jù)出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給對應的輸出端口 ;(5)輸出端口將收到的信元數(shù)據(jù)插入校驗字后發(fā)送到數(shù)據(jù)鏈路上。上述處理提供了一種多播數(shù)據(jù)隊列管理方法,可以準確有效的對存儲的多播信元數(shù)據(jù)進行管理,并有有序的輸出存儲的多播信元數(shù)據(jù)。優(yōu)選地,在步驟S102之前還可以進一步包括以下處理(I)接收信元數(shù)據(jù)流,并對接收到的信元數(shù)據(jù)流進行校驗;(2)解析通過校驗的信源數(shù)據(jù)的信元頭信息,區(qū)分出單播信元數(shù)據(jù)和多播信元數(shù)據(jù),將單播信元數(shù)據(jù)發(fā)送到單播通道,將多播信元數(shù)據(jù)發(fā)送到多播通道。上述處理為統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息提供了基礎,并為后續(xù)的隊列管理提供了輸入端口信息。下面結合實例對上述優(yōu)選實施例進行詳細說明。圖2是根據(jù)本發(fā)明實例的內(nèi)部最多同時接收4個單播信元和4個多播信元的交換系統(tǒng)的結構示意圖。在如圖2所示的交換系統(tǒng)中,其內(nèi)部在同一時刻最多處理4個單播信元和4個多播信元,共享緩存模塊有8片I讀I寫的簡單雙口 RAM搭建,即有8個寫口,同時能夠將8個信元存入緩存器中??臻e地址管理模塊內(nèi)部有8個單播空閑鏈表和8個多播空閑鏈表,分別管理8片RAM的單播空閑地址及8片多播空閑地址。
首先要根據(jù)單/多播流量比例(統(tǒng)計的頻率可以根據(jù)具體需要進行設定),調(diào)整單播和多播的空閑鏈表,使單播空閑鏈表管理的地址范圍和多播空閑鏈表管理的地址范圍之間的比例跟隨單/多播流量比例變動。實時地根據(jù)8個單播空閑鏈表長度的大小比較緩存的深淺,可以采用流水線的方式每個時鐘周期發(fā)出一組排序,A表示在8個單播區(qū)域中最淺單播區(qū)域號,B表示次淺單播區(qū)域號,C表示第三淺的單播緩存區(qū)域號,D表示第四淺的單播緩存區(qū)域號。如圖3所示,可以使用移位寄存器的方法來進行排序。例如,A = 000, B = 111,C = 001,D = 101,表示最淺的單播區(qū)域在#0RAM上,次淺的在#7RAM上,第三淺的在#1RAM上,第四淺的在#5RAM上。假設當前進入4個單播信元,4個信元將分別被存入#0RAM、#7RAM、#1RAM、#5RAM。若進入3個單播信元存入#0RAM、#7RAM、#1RAM,若只進入2個單播信元會被存入#0RAM、#7RAM,若只進入I個單播信元,會被存入#0RAM。 對于多播的處理,與單播的處理大致相同,但當與單播信元數(shù)據(jù)發(fā)生沖突時,如圖4所示,要優(yōu)先保證單播信元數(shù)據(jù)的存儲。實時地根據(jù)8個多播空閑鏈表長度的大小比較緩存的深淺,可以采用流水線的方式每個時鐘周期發(fā)出一組排序,a表示在8個多播區(qū)域中最淺多播區(qū)域號,b表示次淺多播區(qū)域號,c表示第三淺的多播緩存區(qū)域號,d表示第四淺的多播緩存區(qū)域號,依次類推e、f、g,h表示最深的多播緩存區(qū)域號。例如,a= 000,b = 100, c = 001, d = Oil, e = 110, f = 010, g = lll,h = 101 表示最淺的單播區(qū)域在#0RAM上,次淺的在#4RAM上,第三淺的在#1RAM上,第四淺的在#3RAM上,第五淺的在#6RAM上,第六淺的在#2RAM上,第七淺的在#7RAM上,最深的在#5RAM上。查詢abed是否與AB⑶有沖突,其中a與A都為#0RAM,c與C也沖突。假設只進入I個多播信元,查詢是否有單播進入,若無則多播寫入a對應的多播緩存區(qū)域,若有則多播寫入b。若進入2個多播信元,此時查詢同時進入的單播信元個數(shù),若I個,則多播寫入b和c ;若同時進2個單播信元,則多播信元仍寫入b和c ;若同時進入3或4個單播信元,多播信元寫入b和d。依次類推,根本的原則為,讓單播優(yōu)先寫入單播最淺的一些RAM中,多播需要避免與單播沖突,在寫口空閑的RAM中選擇多播區(qū)域較淺的RAM寫入多播信元。圖5是根據(jù)本發(fā)明實施例的以太網(wǎng)交換芯片的緩存管理裝置的結構框圖。如圖5所示,根據(jù)本發(fā)明實施例的以太網(wǎng)交換芯片的緩存管理裝置包括流量檢測模塊502,用于統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息;存儲區(qū)域劃分模塊504,連接至流量檢測模塊502,用于根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)流量的比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域;空閑地址管理模塊506,連接至存儲區(qū)域劃分模塊504,用于將單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將多播信元數(shù)據(jù)存儲到多播存儲區(qū)域中。上述裝置會根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息,動態(tài)的將每一片緩存器的存儲空間劃分為單播存儲區(qū)域和多播存儲區(qū)域,以存儲單播信元數(shù)據(jù)和多播信元數(shù)據(jù),從而解決了現(xiàn)有技術中單多播緩存空間分配不靈活、可擴展性差而導致的丟包率增加的問題,使緩存空間的分配自適應于單/多播業(yè)務流量。優(yōu)選地,如圖6所示,根據(jù)本發(fā)明優(yōu)選實施例的以太網(wǎng)交換芯片的緩存管理裝置還可以包括緩存深度排序模塊508,連接至存儲區(qū)域劃分模塊504及空閑地址管理模塊506,用于根據(jù)各緩存器單播存儲區(qū)域和多播存儲區(qū)域的占用程度對各緩存器單播存儲區(qū)域和多播存儲區(qū)域進行排序;空閑地址管理模塊506,還用于為單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為多播信元數(shù)據(jù)分配一個對應于占用程度最小的多播存儲區(qū)域的空閑地址,將多播信元數(shù)據(jù)存儲到該占用程度最小的多播存儲區(qū)域中。緩存深度排序模塊508提供了負載均衡功能,緩存深度排序模塊508在根據(jù)各緩存器單播存儲區(qū)域和多播存儲區(qū)域的占用程度對各緩存器單播存儲區(qū)域和多播存儲區(qū)域進行排序之后,會將占用程度最小的存儲區(qū)域的編號發(fā)送給空閑地址管理模塊506,作為空 閑地址管理模塊506存儲信元數(shù)據(jù)的依據(jù)。在具體實施過程中,可以設置一個專門用于控制存儲操作的存儲控制模塊,以實現(xiàn)的對存儲策略的選擇,在采用負載均衡策略時,該存儲控制模塊可以用于接收緩存深度排序模塊508發(fā)送的單播緩存深淺排序信息,根據(jù)單播存儲區(qū)域的深淺排序信息進行判斷,將單播信元優(yōu)先存入最淺的單播存儲區(qū)域中,以及接收緩存深度排序模塊508發(fā)送的多播緩存深淺排序信息,根據(jù)多播存儲區(qū)域的深淺排序信息進行判斷,將多播信元優(yōu)先存入最淺的多播存儲區(qū)域中,并在最后將信元數(shù)據(jù)和該數(shù)據(jù)存入的存儲區(qū)域編號發(fā)送給空閑地址管理模塊506??臻e地址管理模塊506主要負責管理共享緩存中所有緩存區(qū)域的空閑地址,當該模塊接收到信元數(shù)據(jù)和該信元數(shù)據(jù)的存儲區(qū)域編號時,會分配一個對應該存儲區(qū)域的空閑地址,并將信元數(shù)據(jù)寫入共享緩存中相應緩存區(qū)域的對應地址處。優(yōu)選地,空閑地址管理模塊506,還用于在占用程度最小的單播存儲區(qū)域和占用程度最小的多播存儲區(qū)域位于同一片緩存器上且該緩存器為簡單緩存器時,為單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為多播信元數(shù)據(jù)分配一個對應于占用程度次小的多播存儲區(qū)域的空閑地址,將多播信元數(shù)據(jù)存儲到該占用程度次小的多播存儲區(qū)域中。當最淺單播區(qū)域和最淺多播區(qū)域在同一個存儲器上時,有兩種辦法解決(I)存儲器是I讀I寫口的簡單雙口 ram時,讓單播信元優(yōu)先存入所選中的單播存儲區(qū)域,多播信元存入次淺的多播存儲區(qū)域。(2)存儲器是真雙口 ram時,單播信元和多播信元可以同時寫入各自對應的最淺存儲區(qū)域。優(yōu)選地,如圖6所示,根據(jù)本發(fā)明優(yōu)選實施例的以太網(wǎng)交換芯片的緩存管理裝置還可以包括單播路由模塊510,連接至流量檢測模塊502,用于解析單播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定單播信元數(shù)據(jù)的輸出端口信息(包括輸出端口號);隊列管理模塊512,連接至空閑地址管理模塊506,用于為每個輸出端口維護與輸入端口數(shù)目相同的VIQ,根據(jù)單播信元數(shù)據(jù)的存儲地址和對應的輸入輸出端口信息進行入隊,以及根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息;輸出調(diào)度模塊514,連接至隊列管理模塊512及空閑地址管理模塊506,用于根據(jù)所有VIQ的隊首信息,進行調(diào)度生成調(diào)度結果,以及將接收到的出隊信元數(shù)據(jù)發(fā)送給輸出端口模塊;空閑地址管理模塊506,還用于根據(jù)出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給輸出調(diào)度模塊514 ;輸出端口模塊516,連接至輸出調(diào)度模塊514,用于將收到的信元數(shù)據(jù)插入校驗字后通過對應的輸出端口發(fā)送到數(shù)據(jù)鏈路上。優(yōu)選地,如圖6所示,根據(jù)本發(fā)明優(yōu)選實施例的以太網(wǎng)交換芯片的緩存管理裝置還可以包括多播路由模塊518,連接至流量檢測模塊502,用于解析多播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定多播信元數(shù)據(jù)的bitmap信息;隊列管理模塊512,還可以用于為每個輸出端口維護與輸入端口數(shù)目相同的VIQ, 根據(jù)多播信元數(shù)據(jù)的存儲地址和對應的bitmap信息進行入隊,以及根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息。上述模塊實現(xiàn)了一種準確有效的隊列管理功能。單播路由模塊510中包括單播路由表用于對單播信元進行路由查找,以確定單播信元數(shù)據(jù)的輸出端口信息(包括輸出端口號,即目的端口號),并提供給空間地址管理模塊506。多播路由模塊518中包括多播路由表用于分別對多播信元進行路由查找,以確定多播信元數(shù)據(jù)的bitmap信息,并提供給空間地址管理模塊506。當設置有存儲控制模塊時,單播路由模塊510和/或多播路由模塊518可以將單播信元數(shù)據(jù)及其輸出端口信息、多播信元數(shù)據(jù)及其bitmap信息發(fā)送給存儲控制模塊,由存儲控制模塊轉發(fā)給空間地址管理模塊506。空間地址管理模塊506在將信元數(shù)據(jù)存儲后,會將單播路由模塊510和/或多播路由模塊518確定的單播信元的路由信息(包括輸入端口信息(包括輸入端口號)和在共享緩存中的地址)及輸出端口信息和/或多播信元的路由信息及bitmap信息傳遞給隊列管理模塊512,隊列管理模塊512會根據(jù)這些信息進行排隊,等待輸出調(diào)度模塊514的調(diào)度。輸出調(diào)度模塊514根據(jù)隊列管理模塊512提供的各輸出端口排隊信息,進行輸出調(diào)度,將調(diào)度結果返還給隊列管理模塊512,指示隊列管理模塊512出隊VIQ的編號。隊列管理模塊512將該出隊VIQ的隊首信元(即出隊信元)的信元信息從隊列鏈表中刪除,并將出隊信元地址發(fā)送給空閑地址管理模塊506,空閑地址管理模塊506根據(jù)地址將信元數(shù)據(jù)從共享緩存中讀出發(fā)送給輸出調(diào)度模塊514,輸出調(diào)度模塊514將其發(fā)送至輸出端口模塊516通過對應的輸出端口輸出。優(yōu)選地,如圖6所示,根據(jù)本發(fā)明優(yōu)選實施例的以太網(wǎng)交換芯片的緩存管理裝置還可以包括輸入接口模塊520,用于接收信元數(shù)據(jù)流,并對接收到的信元數(shù)據(jù)流進行校驗;信元分類模塊522,連接至流量檢測模塊502及輸入接口模塊520,用于解析通過校驗的信源數(shù)據(jù)的信元頭信息,區(qū)分出單播信元數(shù)據(jù)和多播信元數(shù)據(jù),將單播信元數(shù)據(jù)發(fā)送到單播通道,將多播信元數(shù)據(jù)發(fā)送到多播通道。輸入接口模塊520接收來自數(shù)據(jù)鏈路上的信元,它不區(qū)分類型,僅將通過校驗的信元發(fā)送給信元分類模塊522 ;信元分類模塊522通過讀取頭信息進行信元分類,將單播信元發(fā)送到單播通道,將多播信元發(fā)送到多播通道,以方便流量檢測模塊502統(tǒng)計流量信息。需要說明的是,各信元數(shù)據(jù)的輸入端口信息,可以由輸入接口模塊520在接收到該信元數(shù)據(jù)時記錄下來。下面結合實例對上述優(yōu)選實施例進行詳細說明。根據(jù)上述優(yōu)選實施例的以太網(wǎng)交換芯片的緩存管理裝置通過以下步驟進行緩存
管理第I步,輸入接口模塊接收信元數(shù)據(jù)流,將通過校驗的信元數(shù)據(jù)發(fā)送給信元分類模塊。第2步,信元分類模塊解析信元頭信息,將單播信元發(fā)送到單播通道,將多播信元發(fā)送到多播通道,單/多播信元數(shù)據(jù)發(fā)送到流量檢測模塊。
第3步,流量檢測模塊監(jiān)測單播數(shù)據(jù)和多播數(shù)據(jù)流量信息,將流量信息發(fā)送給空閑地址管理模塊。第4步,存儲區(qū)域劃分模塊根據(jù)單播信元數(shù)據(jù)和所多播信元數(shù)據(jù)的流量比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域,然后將單播信元數(shù)據(jù)和多播信元數(shù)據(jù)發(fā)送給單/多播路由模塊。第5步,單/多播路由模塊分別解析信元頭信息,進行路由查找。單播路由表將單播信元數(shù)據(jù)和輸出端口信息發(fā)送給存儲控制模塊,多播路由表將多播信元數(shù)據(jù)和bitmap信息發(fā)送給存儲控制模塊。第6步,存儲控制模塊根據(jù)緩存深度排序模塊發(fā)送的單播緩存區(qū)域占用程度排序信息,判斷將接受到的單播信元存往占用程度小的單播存儲區(qū)域。同樣的,存儲控制模塊根據(jù)緩存深度排序模塊發(fā)送的多播緩存區(qū)域占用程度排序信息,判斷將接受到的多播信元存往占用程度小的多播存儲區(qū)域,最后將判斷結果發(fā)送給空閑地址管理模塊。第7步,空閑地址管理模塊根據(jù)存儲控制模塊給出的單播存儲判斷結果,分配一個對應單播存儲區(qū)域的空閑地址,將單播信元數(shù)據(jù)寫入該地址。多播同樣處理。并將單播信元存儲地址和對應的輸入輸出端口信息發(fā)送給隊列管理模塊,將多播信元存儲地址和輸入端口信息及bitmap信息發(fā)送給隊列管理模塊。第8步,隊列管理模塊根據(jù)單播信元存儲地址和對應的輸入輸出端口信息進行入隊,該模塊為每個輸出端口維護與輸入端口數(shù)目相同的VIQ,按順序進入對應的VIQ。將所有VIQ的隊首信息發(fā)送給輸出調(diào)度模塊。第9步,輸出調(diào)度模塊根據(jù)接收到的VIQ隊首信息,進行調(diào)度,將調(diào)度結果返還給隊列管理模塊。第10步,隊列管理模塊根據(jù)調(diào)度結果確定出隊信元地址,然后將出隊信元地址發(fā)送給空閑地址管理模塊,并更新出隊VIQ的隊首信息。第11步,空閑地址管理模塊根據(jù)出隊信元的地址,將信元數(shù)據(jù)從共享緩存中讀出,并將信元數(shù)據(jù)發(fā)送給輸出調(diào)度模塊。第12步,輸出調(diào)度模塊將接收到的信元數(shù)據(jù)發(fā)送給輸出端口模塊。第13步,輸出端口模塊將收到的信元數(shù)據(jù)插入校驗字后通過對應的輸出端口發(fā)送到數(shù)據(jù)鏈路上。從以上的描述中,可以看出,本發(fā)明提供的技術方案解決了共享緩存的負載均衡問題,以及解決單/多播緩存動態(tài)分配問題,使緩存空間的分配自適應于單/多播業(yè)務流量,避免了因共享緩存占用率不均衡而導致的緩存溢出或不合理的流控發(fā)生,提高緩存的利用率。與現(xiàn)有技術相比,在提高共享緩存利用率方面取得了進步,不僅提高單播的存儲空間利用率,還通過動態(tài)調(diào)整單/多播緩存之間的緩存容量,同時提高了單播和多播兩種緩存的利用率,且擴展靈活,通過提高緩存利用率的方式節(jié)省緩存器的開銷,節(jié)約成本。顯然,本領域的技術人員應該明白,上述的本發(fā)明的各模塊或各步驟可以用通用的計算裝置來實現(xiàn),它們可以集中在單個的計算裝置上,或者分布在多個計算裝置所組成的網(wǎng)絡上,可選地,它們可以用計算裝置可執(zhí)行的程序代碼來實現(xiàn),從而,可以將它們存儲在存儲裝置中由計算裝置來執(zhí)行,并且在某些情況下,可以以不同于此處的順序執(zhí)行所示出或描述的步驟,或者將它們分別制作成各個集成電路模塊,或者將它們中的多個模塊或步驟制作成單個集成電路模塊來實現(xiàn)。這樣,本發(fā)明不限制于任何特定的硬件和軟件結合。以上所述僅為本發(fā)明的優(yōu)選實施例而已,并不用于限制本發(fā)明,對于本領域的技術人員來說,本發(fā)明可以有各種更改和變化。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修 改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種以太網(wǎng)交換芯片的緩存管理方法,其特征在于,包括 統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息; 根據(jù)所述單播信元數(shù)據(jù)和所述多播信元數(shù)據(jù)的流量比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域; 將所述單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將所述多播信元數(shù)據(jù)存儲到多播存儲區(qū)域中。
2.根據(jù)權利要求I所述的方法,其特征在于,將所述單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將所述多播信元數(shù)據(jù)存儲到多播存儲區(qū)域中包括 根據(jù)各緩存器單播存儲區(qū)域和多播存儲區(qū)域的占用程度對各緩存器單播存儲區(qū)域和多播存儲區(qū)域進行排序; 為所述單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將所述單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為所述多播信元數(shù)據(jù)分配一個對應于占用程度最小的多播存儲區(qū)域的空閑地址,將所述多播信元數(shù)據(jù)存儲到該占用程度最小的多播存儲區(qū)域中。
3.根據(jù)權利要求2所述的方法,其特征在于,為所述單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將所述單播信元數(shù)據(jù)存儲到該占用程度最小的單播存儲區(qū)域中,為所述多播信元數(shù)據(jù)分配一個對應于占用程度最小的多播存儲區(qū)域的空閑地址,將所述多播信元數(shù)據(jù)存儲到該占用程度最小的多播存儲區(qū)域中包括 當占用程度最小的單播存儲區(qū)域和占用程度最小的多播存儲區(qū)域位于同一片緩存器上且該緩存器為簡單緩存器時,為所述單播信元數(shù)據(jù)分配一個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將所述單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為所述多播信元數(shù)據(jù)分配一個對應于占用程度次小的多播存儲區(qū)域的空閑地址,將所述多播信元數(shù)據(jù)存儲到該占用程度次小的多播存儲區(qū)域中。
4.根據(jù)權利要求3所述的方法,其特征在于, 在根據(jù)所述單播信元數(shù)據(jù)和所述多播信元數(shù)據(jù)流量的比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域之后,還包括 解析所述單播信元數(shù)據(jù)和的信元頭信息,進行路由查找,確定所述單播信元數(shù)據(jù)的輸出端口信息; 在將所述單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中之后,還包括 為每個輸出端口維護與輸入端口數(shù)目相同的虛擬輸入隊列VIQ,根據(jù)所述單播信元數(shù)據(jù)的存儲地址和對應的輸入輸出端口信息進行入隊; 根據(jù)所有VIQ的隊首信息,進行調(diào)度; 根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息; 根據(jù)所述出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給對應的輸出端口 ; 輸出端口將收到的信元數(shù)據(jù)插入校驗字后發(fā)送到數(shù)據(jù)鏈路上。
5.根據(jù)權利要求3所述的方法,其特征在于, 在根據(jù)所述單播信元數(shù)據(jù)和所述多播信元數(shù)據(jù)流量的比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域之后,還包括 解析所述多播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定所述多播信元數(shù)據(jù)的位圖bitmap 信息; 在將所述多播信元數(shù)據(jù)存儲到單播存儲區(qū)域中之后,還包括 為每個輸出端ロ維護與輸入端口數(shù)目相同的VIQ,根據(jù)所述多播信元數(shù)據(jù)的存儲地址和對應的bitmap信息進行入隊; 根據(jù)所有VIQ的隊首信息,進行調(diào)度; 根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息; 根據(jù)所述出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給對應的輸出端ロ ; 輸出端ロ將收到的信元數(shù)據(jù)插入校驗字后發(fā)送到數(shù)據(jù)鏈路上。
6.根據(jù)權利要求I至5任一項所述的方法,其特征在于,在統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息之前,還包括 接收信元數(shù)據(jù)流,并對接收到的信元數(shù)據(jù)流進行校驗; 解析通過校驗的信源數(shù)據(jù)的信元頭信息,區(qū)分出單播信元數(shù)據(jù)和多播信元數(shù)據(jù),將單播信元數(shù)據(jù)發(fā)送到單播通道,將多播信元數(shù)據(jù)發(fā)送到多播通道。
7.ー種以太網(wǎng)交換芯片的緩存管理裝置,其特征在于,包括 流量檢測模塊,用于統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息; 存儲區(qū)域劃分模塊,用于根據(jù)所述單播信元數(shù)據(jù)和所述多播信元數(shù)據(jù)流量的比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域; 空閑地址管理模塊,用于將所述單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將所述多播信元數(shù)據(jù)存儲到多播存儲區(qū)域中。
8.根據(jù)權利要求7所述的裝置,其特征在于,還包括 緩存深度排序模塊,用于根據(jù)各緩存器單播存儲區(qū)域和多播存儲區(qū)域的占用程度對各緩存器單播存儲區(qū)域和多播存儲區(qū)域進行排序; 所述空閑地址管理模塊,還用于為所述單播信元數(shù)據(jù)分配ー個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將所述單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為所述多播信元數(shù)據(jù)分配ー個對應于占用程度最小的多播存儲區(qū)域的空閑地址,將所述多播信元數(shù)據(jù)存儲到該占用程度最小的多播存儲區(qū)域中。
9.根據(jù)權利要求8所述的裝置,其特征在于,所述空閑地址管理模塊,還用于在占用程度最小的單播存儲區(qū)域和占用程度最小的多播存儲區(qū)域位于同一片緩存器上且該緩存器為簡單緩存器時,為所述單播信元數(shù)據(jù)分配ー個對應于占用程度最小的單播存儲區(qū)域的空閑地址,將所述單播信元數(shù)存儲到該占用程度最小的單播存儲區(qū)域中,為所述多播信元數(shù)據(jù)分配ー個對應于占用程度次小的多播存儲區(qū)域的空閑地址,將所述多播信元數(shù)據(jù)存儲到該占用程度次小的多播存儲區(qū)域中。
10.根據(jù)權利要求9所述的裝置,其特征在于,還包括 單播路由模塊,用于解析所述單播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定所述單播信元數(shù)據(jù)的輸出端ロ信息; 隊列管理模塊,用于為每個輸出端ロ維護與輸入端口數(shù)目相同的虛擬輸入隊列VIQ,根據(jù)所述單播信元數(shù)據(jù)的存儲地址和對應的輸入輸出端ロ信息進行入隊,以及根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息; 輸出調(diào)度模塊,用于根據(jù)所有VIQ的隊首信息,進行調(diào)度生成調(diào)度結果,以及將接收到的出隊信元數(shù)據(jù)發(fā)送給輸出端口模塊; 所述空閑地址管理模塊,還用于根據(jù)所述出隊信元地址,讀出信元數(shù)據(jù)并發(fā)送給所述輸出調(diào)度模塊; 所述輸出端口模塊,用于將收到的信元數(shù)據(jù)插入校驗字后通過對應的輸出端口發(fā)送到數(shù)據(jù)鏈路上。
11.根據(jù)權利要求10所述的裝置,其特征在于,還包括 多播路由模塊,用于所述多播信元數(shù)據(jù)的信元頭信息,進行路由查找,確定所述多播信元數(shù)據(jù)的位圖bitmap信息; 所述隊列管理模塊,還用于為每個輸出端口維護與輸入端口數(shù)目相同的虛擬輸入隊列VIQ,根據(jù)所述多播信元數(shù)據(jù)的存儲地址和對應的bitmap信息進行入隊,以及根據(jù)調(diào)度結果確定出隊信元地址,更新出隊VIQ的隊首信息。
12.根據(jù)權利要求7至11任一項所述的裝置,其特征在于,還包括 輸入接口模塊,用于接收信元數(shù)據(jù)流,并對接收到的信元數(shù)據(jù)流進行校驗; 信元分類模塊,用于解析通過校驗的信源數(shù)據(jù)的信元頭信息,區(qū)分出單播信元數(shù)據(jù)和多播信元數(shù)據(jù),將單播信元數(shù)據(jù)發(fā)送到單播通道,將多播信元數(shù)據(jù)發(fā)送到多播通道。
全文摘要
本發(fā)明公開了一種以太網(wǎng)交換芯片的緩存管理方法及裝置,上述方法包括統(tǒng)計單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量信息;根據(jù)單播信元數(shù)據(jù)和多播信元數(shù)據(jù)的流量比例,將每一片緩存器的緩存空間劃分為單播存儲區(qū)域和多播存儲區(qū)域;將單播信元數(shù)據(jù)存儲到單播存儲區(qū)域中,將多播信元數(shù)據(jù)存儲到多播存儲區(qū)域中。通過本發(fā)明提供的技術方案,解決了現(xiàn)有技術中單多播緩存空間分配不靈活、可擴展性差而導致的丟包率增加的問題,進而達到了提高單播和多播兩種緩存的利用率且擴展靈活的效果。
文檔編號H04L12/945GK102857446SQ20111018117
公開日2013年1月2日 申請日期2011年6月30日 優(yōu)先權日2011年6月30日
發(fā)明者趙培培 申請人:中興通訊股份有限公司