stats分配的芯片實現方法
【技術領域】
[0001]本發明涉及一種報文統計技術,尤其是涉及一種靈活的stats分配的芯片實現方法。
【背景技術】
[0002]為了方便管理員對交換機進行故障排查和流量監控,需要交換機在工作過程中統計各種報文的數目和總報文長度,比如進出port端口的報文數目、三層轉發的報文數目、符合某條ACE(訪問控制條目,即ACL中的條目)規則的報文數目等。報文統計時,軟件會為其分配RAM的地址索引作為起始存儲空間,不同類型的統計信息分配不同存儲空間,實現報文的統計。
[0003]現有技術主要采用的常見方案是:設計多塊RAM,為每一類stats (統計)分配固定的RAM,每一類stats只能在指定的RAM中進行存儲,存儲在指定RAM的哪個位置由軟件靜態分配。當需要統計的stats種類多于RAM的個數時,采用多個種類的stats固定存儲優先級、分配同一塊RAM不同存儲位置的方案。
[0004]若要保證每種stats分配一塊RAM,成本比較高,占用芯片的面積較大。實際應用中考慮成本等的設計,需要統計的stats種類往往會多于RAM的個數。如果一次轉發過程中,報文需要做多種stats統計,這幾種stats又恰巧被固定分配同一塊RAM時,stats產生沖突,RAM只能更新優先級最高的stats對應的報文數和報文長度,優先級低的stats不會被更新。而其他不需要做的stats的RAM此時就是空閑狀態。因此采用固定分配RAM的方案極大的限制了 stats存儲的靈活性,導致stats統計的可靠性降低。
【發明內容】
[0005]本發明的目的在于克服現有技術的缺陷,提供一種stats分配的芯片實現方法,為每一個報文都能夠做的公共stats分配獨立的RAM,為不同報文所獨有的stats種類分配共享、可自由選擇的RAM,以實現動態靈活分配stats存儲的RAM。
[0006]為實現上述目的,本發明提出如下技術方案:一種stats分配的芯片實現方法,包括:
[0007]報文依次進入芯片的入端口、入方向處理模塊、隊列模塊、出方向處理模塊和出端口,在所述入端口、隊列模塊和出端口均使能做公共統計,在所述入方向處理模塊和出方向處理模塊均做獨有統計,其中,
[0008]所述公共統計過程包括:為每類統計分配一個地址索引,所述地址索引指向已分配給每類統計的RAM中的存儲位置,更新所述RAM ;
[0009]所述獨有統計過程包括:根據報文的種類信息,選擇需統計的種類,并為每類統計分配一個地址索引,所述地址索引包括選擇的RAM標號及在相應RAM中的存儲位置,更新所述RAM,其中,所述RAM個數為每個報文需要做統計的種類的最大值。
[0010]優選地,在做所述公共統計時,所述每種統計存儲的RAM標號是靜態分配的,所述每種統計在分配到的RAM中的存儲位置是動態分配。
[0011 ] 優選地,在做所述獨有統計時,所述每種統計存儲的RAM標號和在分配到的RAM中的存儲位置均是由動態分配的。
[0012]優選地,公共統計和獨有統計在地址索引完成后,更新所述RAM相應存儲位置中統計的報文個數和報文長度信息。
[0013]優選地,報文進入交換芯片的物理入端口后,入端口檢測到有報文進入,根據使能信息做入口方向的每個端口的輸入流量的公共統計。
[0014]優選地,報文進入入口方向處理模塊,做包括基于Vlan Id的、基于MAC的、基于ACL等的獨有統計。
[0015]優選地,報文進入隊列模塊,根據使能信息做統計隊列模塊不同隊列ID中的報文流量的公共統計。
[0016]優選地,報文進入出口方向處理模塊,做包括基于報文編輯的、基于Vlan Id的獨有統計。
[0017]優選地,報文到達特定的物理出端口,根據使能信息做出口方向的每個端口的輸出流量的公共統計。
[0018]本發明為每一個報文都能夠做的公共stats分配獨立的RAM,為不同報文所獨有的stats種類分配共享、可自由選擇的RAM。軟件自由分配給stats共享的存儲空間指針時,不再是只分配RAM內部的地址指針,而是將RAMID和RAM內部地址同時分配給stats,這樣stats能夠自由選用RAM,多個stats同時要存儲時,只需要分配不同的RAM,不會因固定分配RAM帶來沖突。本發明技術方案提高了 stats存儲的靈活性,降低因設定優先級而產生的沖突。
【附圖說明】
[0019]圖1是本發明公共stats分配獨立RAM的示意圖;
[0020]圖2是本發明獨有stats分配共享RAM示意圖;
[0021]圖3和圖4是本發明一種stats分配的芯片實現方法的流程示意圖。
【具體實施方式】
[0022]下面將結合本發明的附圖,對本發明實施例的技術方案進行清楚、完整的描述。
[0023]本發明揭示的一種stats分配的芯片實現方法,支持獨立RAM和共享RAM并存的stats存儲方式。獨立RAM的存儲主要存儲基于每種報文流(flow)共有的stats,共享RAM的存儲主要針對每個flow獨有的統計。
[0024]如圖1所示,假設本發明技術方案支持L個獨立RAM,獨立RAM1?獨立RAML,支持K種stats的統計,其中L = K。L/K的取值為每種flow共有的stats種類數。每種共有stats對應一塊RAM,在做公共統計時,每種統計存儲的RAM標號是靜態分配的,且每種統計在分配到的RAM中的存儲位置是動態分配。
[0025]設本發明技術方案支持N個共享的RAM,共享RAM1?共享RAMN,支持Μ種stats的統計,其中M>N,M的取值為各種flow需要做stats的種類之和,N的取值為各種flow需要做stats的種類的最大值。每種stats存儲的RAM標號(RAMID)由軟件動態分配,且在分配到的RAM中的存儲位置也是由動態分配的,保證每一類報文需要做的stats都能夠實現,又不會產生沖突。
[0026]具體地,如圖1所示,為本發明技術方案中公共stats分配獨立RAM的示意圖,其處理過程如下:
[0027]使能做公共stats,報文進入芯片,為該類stats分配一個地址索引,該地址索引指向已經