專利名稱::一種狀態(tài)記錄的方法及裝置的制作方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及計算機(jī)應(yīng)用技術(shù),尤指一種狀態(tài)記錄的方法及裝置。
背景技術(shù):
:在對網(wǎng)絡(luò)流量進(jìn)行統(tǒng)計和監(jiān)控時,通常需要統(tǒng)計數(shù)據(jù)流中命令字的發(fā)送情況,通過對命令字的分析了解當(dāng)前網(wǎng)絡(luò)的狀況,對網(wǎng)絡(luò)流量進(jìn)行監(jiān)控。例如,在一個傳輸控制協(xié)議(TCP,TransmissionControlProtocol)流中,如果只出現(xiàn)過同步(SYN)包而沒有出現(xiàn)確認(rèn)(ACK)包,則當(dāng)前網(wǎng)絡(luò)很有可能發(fā)生了SYN攻擊。其中,這里,數(shù)據(jù)流是指具有相同特征的數(shù)據(jù)包的集合。對于TCP流來說,所屬的特征可以包括IP地址、端口號、協(xié)議類型、服務(wù)類型等。在現(xiàn)有技術(shù)中,存在2種監(jiān)控命令字的方式,一種是對每個數(shù)據(jù)流所包括的命令字進(jìn)行單獨(dú)統(tǒng)計,具體記錄每個命令字的發(fā)送數(shù)目,這種方法會產(chǎn)生大量的表項,因此在系統(tǒng)資源比較有限的情況下通常不被采用。另外一種是統(tǒng)計每個流所包含的命令字是否發(fā)送過,這樣只需將每個命令字的發(fā)送情況記錄在一個表項中,就能大致了解數(shù)據(jù)流發(fā)送情況,是否存在異常。對于TCP流來說,TCP協(xié)議有6種命令字FIN、SYN、RST、PSH、ACK和URG。其中,F(xiàn)IN表示發(fā)端完成發(fā)送任務(wù);RST表示重建連接;PSH表示接收方應(yīng)該盡快將這個段交給應(yīng)用層;URG表示緊急指針。在統(tǒng)計這類命令字是否發(fā)送過時,一般在流表中設(shè)置對應(yīng)的標(biāo)志位,如果收到SYN包,則在流表中設(shè)置SYN標(biāo)志,收到ACK包則設(shè)置ACK標(biāo)志。在分析網(wǎng)絡(luò)狀態(tài)時,直接根據(jù)設(shè)置的標(biāo)志位進(jìn)行分析。其中,流表用來記錄一個流,包括關(guān)鍵字區(qū)和結(jié)果區(qū)。關(guān)鍵字區(qū)記錄著區(qū)分流的特征項,結(jié)果區(qū)記錄著流的一些狀態(tài)和行為,例如起止時間,包數(shù)、字節(jié)數(shù)、數(shù)據(jù)流的路由特性,命令字狀態(tài)等等。然而,為了提高表項的查詢性能,表項通常存儲在內(nèi)存中,通過硬件來進(jìn)行查詢和修改。這樣,在修改表項時需要將表項的內(nèi)容讀出,修改后再重新寫入,操作過程復(fù)雜、效率低。特別是對于記錄的標(biāo)志并不是單獨(dú)保存,而是被記錄其他的表項中,如上述介紹的流表。這樣在設(shè)置命令字標(biāo)志的時候,還需要涉及流表中的其他信息,非常容易出錯,并且效率低。由此可見,目前急需一種不依靠表項就能夠記錄命令字狀態(tài)的技術(shù)方案,通過減少表項的修改次數(shù),提高處理器的處理性能。
發(fā)明內(nèi)容有鑒于此,本發(fā)明的主要目的在于提供一種狀態(tài)記錄的方法及裝置,本發(fā)明所提供的方法及裝置能夠記錄命令字的狀態(tài),提高記錄命令字狀態(tài)的效率。為達(dá)到上述目的,本發(fā)明的技術(shù)方案是這樣實現(xiàn)的一種^l犬態(tài)記錄的方法,該方法包4舌為各命令字設(shè)置計數(shù)器的計數(shù)區(qū);在收到包含命令字的數(shù)據(jù)包時,計數(shù)器在當(dāng)前命令字的計數(shù)區(qū)內(nèi)計數(shù),以命令字對應(yīng)計數(shù)區(qū)計數(shù)記錄命令字收到的狀態(tài)。一種狀態(tài)記錄的裝置,該裝置包括計數(shù)器和至少一個控制單元;所述控制單元,用于在收到包含命令字的數(shù)據(jù)包時,控制所述計數(shù)器在為當(dāng)前命令字設(shè)置的計數(shù)區(qū)內(nèi)計數(shù),以命令字對應(yīng)計數(shù)區(qū)計數(shù)記錄命令字收到的狀態(tài);所述計數(shù)器,用于根據(jù)所述控制單元的指示計數(shù)。本發(fā)明所提供的一種狀態(tài)記錄的方法,包括為各命令字設(shè)置計數(shù)器的計數(shù)區(qū);在收到包含命令字的數(shù)據(jù)包時,計數(shù)器在當(dāng)前命令字的計數(shù)區(qū)內(nèi)計數(shù),以命令字對應(yīng)計數(shù)區(qū)計數(shù)記錄命令字收到的狀態(tài)。另外,本發(fā)明還提供了一種狀態(tài)記錄的裝置。本發(fā)明的技術(shù)方案,通過計數(shù)器記錄命令字的狀態(tài),使?fàn)顟B(tài)的記錄不再依賴于表項的記錄,避免了頻繁修改表項而產(chǎn)生的更新操作,有效的節(jié)約了系統(tǒng)資源。另外,在存在多個處理引擎記錄相同命令字狀態(tài)的情況下,通過計數(shù)器記錄命令字狀態(tài)的這種技術(shù)方案,不但省去了現(xiàn)有技術(shù)記錄時必須執(zhí)行的加解鎖操作;同時,由于未對表項進(jìn)行加鎖操作,因此表項中包含的其他內(nèi)容能夠被其他進(jìn)程訪問,極大的提高了表項使用效率,處理效率。圖1為本發(fā)明實施例方法的流程圖2為本發(fā)明實施例裝置的結(jié)構(gòu)圖。具體實施例方式在本發(fā)明的技術(shù)方案中,在需要記錄多個命令字的狀態(tài)時,為各命令字設(shè)置計數(shù)器的計數(shù)區(qū);在收到包含命令字的數(shù)據(jù)包時,計數(shù)器在當(dāng)前命令字的計數(shù)區(qū)內(nèi)計數(shù),以命令字對應(yīng)計數(shù)區(qū)計數(shù)記錄命令字收到的狀態(tài)。如果命令字對應(yīng)的計數(shù)區(qū)未計數(shù),則表示當(dāng)前還未收到該命令字。其中,具體為各命令字設(shè)置計數(shù)器的計數(shù)區(qū)方式可以是設(shè)置計數(shù)長度肌以及各命令字的編碼/,Z'取0至/7-l中的整數(shù),其中p為當(dāng)前需記錄的命令字總數(shù)。這樣,各命令字就可以在計數(shù)長度為,"、m'為累加基值所形成的計數(shù)區(qū)內(nèi)計數(shù)。為各命令字設(shè)置計數(shù)器的計數(shù)區(qū),在邏輯上可以看作是將計數(shù)器從計數(shù)值上劃分成多個子計數(shù)器,每個子計數(shù)器對應(yīng)一個命令字,對該命令字從O開始計數(shù)。參見表一,表一為此種設(shè)置方式的示意圖。命令字編碼0i2…i…p-l累加基值0附附2肌J附p-1計數(shù)值0~/n—10~肌一1o附一10附一10~附—1表一對于編碼為0的命令字來說,它的計數(shù)區(qū)為(0,1,2,…,w-2,w-1),表示每到達(dá)一個O號命令字計數(shù)器加1,計數(shù)長度為州。對于編碼為1的命令字來7說,它的計數(shù)區(qū)為(O,柳,2柳,...,(m—2)附,(柳—l)m),表示每到達(dá)一個i號命令字計數(shù)器加m,相當(dāng)于是一個以m為累加基值從O到(m-l)進(jìn)行計數(shù)的計數(shù)器。對于編碼為2的命令字,它的計數(shù)區(qū)為(0,m2,2m2,...,(m-2)m2,(m-1)附2),表示每到達(dá)一個2號命令字計數(shù)器加,w2,相當(dāng)于一個以w2為累加基值從0到(m-l)進(jìn)行計數(shù)的計數(shù)器。對于后續(xù)命令字的計數(shù)區(qū)以此類推,在此不再詳述。根據(jù)表一所示,對于各命令字,由于命令字的累加基值為附'',計數(shù)區(qū)最大值為(m-l)m',因此能夠確保累加不超出計數(shù)區(qū)的范圍,/號命令字的計數(shù)區(qū)不會影響下一計數(shù)區(qū),即Z+1號命令字的計數(shù)區(qū)(累加基值為附'+')。另夕卜,本領(lǐng)域的技術(shù)人員不難發(fā)現(xiàn),計數(shù)區(qū)的計數(shù)長度并不需要相同,累加基值也不需要按照計數(shù)長度的次方遞增,只要所設(shè)置的計數(shù)長度以及累加基值所形成的計數(shù)區(qū)不重疊即可。同時,在單個計數(shù)器的計數(shù)器范圍不能滿足所有命令字的計數(shù)時,可以使用多個計數(shù)器對命令字進(jìn)行計數(shù),這樣相當(dāng)于將多個計數(shù)器合并成一個位數(shù)更多,計數(shù)范圍更大的計數(shù)器。例如,在W超過了單個計數(shù)器的最大計數(shù)值時,可以將一些命令字的計數(shù)分配到其他計數(shù)器上執(zhí)行,其中/7為命令字編碼的最大值。關(guān)于m的取值,由于本發(fā)明主要記錄是否收到命令字的狀態(tài)。因此,通常來說,計數(shù)長度m可以取2。此時,計數(shù)值為O表示未收到命令字,計數(shù)值為l表示收到命令字。然而,在存在多個處理引擎需要記錄相同命令字狀態(tài)的情況下,為了避免多個處理引擎同時計數(shù)而導(dǎo)致計數(shù)區(qū)溢出的問題,可以使m取大于等于s+l的數(shù),其中s為處理引擎的總數(shù)。此時,即使在最壞的情況下,即s個處理引擎同時對一個計數(shù)區(qū)進(jìn)行計數(shù),由于計數(shù)區(qū)的計數(shù)長度大于總處理引擎數(shù),因此也不會產(chǎn)生溢出。然而,所有處理引擎都收到相同命令字的數(shù)據(jù)包,對一個計數(shù)區(qū)同時計數(shù)的概率是比較小的。因此,根據(jù)實際的應(yīng)用場合,m也可以取小于s+l的數(shù),這樣可以有效的節(jié)約計數(shù)器資源,能夠有效記錄更多的命令字。另外,由于本發(fā)明記錄的是命令字是否收到的狀態(tài),因此計數(shù)器在為命令字設(shè)置的計數(shù)區(qū)內(nèi)計數(shù)時,可以先確定一下當(dāng)前命令字對應(yīng)的計數(shù)區(qū)是否計數(shù),也就是是否記錄了收到命令字的狀態(tài),如果沒有記錄,則需要在對應(yīng)的計數(shù)區(qū)的計數(shù);如果記錄了,則不需要再對計數(shù)區(qū)執(zhí)行計數(shù),這樣既能夠不重復(fù)記錄,也可以有效節(jié)約計數(shù)區(qū)的計數(shù)資源,以便在多個處理引擎同時記錄時提高容錯性能。具體的,在設(shè)置計數(shù)長度,n以及各命令字的編碼i的情況下,計數(shù)器在為命令字設(shè)置的計數(shù)區(qū)內(nèi)計數(shù)可以是獲得當(dāng)前命令字計數(shù)區(qū)的值,確定所述計數(shù)區(qū)未計數(shù)時再執(zhí)行計數(shù)器加w'的操作,其中r為當(dāng)前命令字的編碼。其中,獲得命令字計數(shù)區(qū)值的方法可以是先讀取得到當(dāng)前計數(shù)器的計數(shù)值,用計數(shù)器值除以附''+1得到的余數(shù)再整除^',就可以獲得當(dāng)前z號命令字對應(yīng)計數(shù)區(qū)的值。其中,用計數(shù)器值除以W"得到余數(shù)是為了消除計數(shù)器值中累加基值大于m'計數(shù)的影響,結(jié)合表一即是為了消除計數(shù)器值中對編號為/+1至p-1命令字的計數(shù);用得到的余數(shù)再整除m''是為了消除計數(shù)器值中累加基值小于m'計數(shù)的影響,即為消除計數(shù)器值中對編號為0至/-l命令字的計數(shù)。例如,j艮設(shè)存在三個命令字A、B和C,分別對應(yīng)編號0、1和2,得到當(dāng)前計數(shù)器的值X,用X除以mW得到余數(shù)Y,消除計數(shù)器值X中命令字C計數(shù)區(qū)的影響;再用余數(shù)Y整除w,消除計數(shù)器值X命令字A計數(shù)區(qū)的影響,最后得到的值即為所需獲得的命令字B計數(shù)區(qū)的值。這里,當(dāng)采用計數(shù)長度為m、以m'的方式累加時,通常需要先通過乘法運(yùn)算得到附'的值,再累加至計數(shù)器,由于乘法運(yùn)算耗時較長,因此不利于提高計數(shù)器的計數(shù)效率。然而,當(dāng)m取值為2的整數(shù)次方時,則可以不采用乘法運(yùn)算,僅使用簡便的移位方法就得到累加值。相應(yīng)的,在m取大于等于s+l的2的整數(shù)次方時,可以取其中的最小數(shù),即在處理引擎數(shù)目為14個時,取m46。由于計數(shù)器都是以二進(jìn)制0、l進(jìn)行運(yùn)算,因此當(dāng)w為2的整數(shù)次方時,相當(dāng)于將計數(shù)器按比特位劃分成了多個區(qū)間,每個區(qū)間作為一個計數(shù)器對命令字進(jìn)行計數(shù)。每個區(qū)間的長度為乂比特,/=log;'。0至比特為0號命令字對應(yīng)的計數(shù)區(qū),/至2)-1比特為1號命令字對應(yīng)的計數(shù)區(qū),2/至3卜1比特為2號命令字對應(yīng)的計數(shù)區(qū),以此類推。因此在/w為2的整數(shù)次方并且需要加附'時,可以將二進(jìn)制數(shù)1左移/W位得到的當(dāng)前累加值,再與計數(shù)器相加,這樣可以免去相對復(fù)雜的乘法運(yùn)算。相應(yīng)的,在需要獲得命令字對應(yīng)計數(shù)區(qū)的值時,可以將w"得到的二進(jìn)制數(shù)左移"乂位,實際上就是得到該命令字在對應(yīng)計數(shù)區(qū)的全l序列,這樣將移位后的二進(jìn)制數(shù)與當(dāng)前計數(shù)器值進(jìn)行與運(yùn)算,就能得到當(dāng)前命令字計數(shù)區(qū)的值。具體的示例可以參見本文后續(xù)介紹。在本發(fā)明的技術(shù)方案中,當(dāng)查詢命令字狀態(tài)時,獲得當(dāng)前待查詢命令字計數(shù)區(qū)的值,判斷計數(shù)區(qū)是否計數(shù),如果是,則該命令字狀態(tài)為收到;否則,該命令字狀態(tài)為未收到。其中,具體獲得命令字計數(shù)區(qū)的值,以及判斷計數(shù)區(qū)是否計數(shù)的方法,可以與上述介紹的相關(guān)方法相同,在此不再贅述。另外,當(dāng)不需要記錄命令字狀態(tài)時,可以將該命令字對應(yīng)的計數(shù)區(qū)清零。這樣,該計數(shù)區(qū)又可用于記錄其他命令字的狀態(tài)。以下以一個具體的示例對本發(fā)明的技術(shù)方案進(jìn)行詳細(xì)介紹。在此,假設(shè)存有15個處理引擎對同一個TCP流進(jìn)行處理,并且這15個處理引擎都參與記錄TCP流命令字的操作。TCP流的命令字總共包括6種,分別為FIN、SYN、RST、PSH、ACK和URG,為該6種命令字設(shè)置編碼分別為0、1、2、3、4和5。由于處理引擎的總數(shù)為15,為了簡化處理,計數(shù)長度m取大于15的最小2的整數(shù)次方,即16。那么相對每個命令字而言,相當(dāng)于為每個命令字在計數(shù)器中分配了1。g〗'比特長度的子計數(shù)器,即計數(shù)器區(qū)間的長度為1ogf二4比特,具體可參見表二,該表對應(yīng)的計數(shù)器為32位。<table>tableseeoriginaldocumentpage10</column></row><table>表二當(dāng)需要通過流表來查詢命令字的狀態(tài)時,在TCP流首包進(jìn)入這15個處理引擎處理、建立流表時,在流表中記錄計數(shù)器的索引,當(dāng)需要查詢命令的狀態(tài)時,則根據(jù)流表中記錄的索引讀取計數(shù)器值,得到命令字狀態(tài)。具體的流程如圖1所示。圖1流程描述的是一個處理引擎收到包含命令字TCP包的處理流程。其實,這15個處理引擎在收到命令字TCP數(shù)據(jù)包的處理流程都是相同,因此在本實施例中就不再重復(fù)介紹。在圖1所示的流程以收到SYN數(shù)據(jù)包為例進(jìn)行介紹。在步驟101中,處理引擎收到SYN數(shù)據(jù)包。在步驟102中,處理引擎獲得該命令字SYN的編碼,確定SYN命令字在計數(shù)器中對應(yīng)的計數(shù)區(qū)。這里,命令字SYN的編碼為1,因此對應(yīng)的計數(shù)區(qū)為比特位的第4~7位,具體可參見圖3。在步驟103中,處理引擎獲得SYN對應(yīng)的計數(shù)區(qū)的值。對于計數(shù)長度,"為2的整數(shù)次方,在得到計數(shù)區(qū)值時,可以先將計數(shù)長度減1得到一個二進(jìn)制數(shù),即1111,再左移4x1位得到覆蓋SYN計數(shù)區(qū)的全l序列,對于32位的計數(shù)器而言,即得到如表三所示的二進(jìn)制序列。<table>tableseeoriginaldocumentpage11</column></row><table>表三然后,再用得到的二進(jìn)制序列與當(dāng)前計數(shù)器進(jìn)行與運(yùn)算得到SYN計數(shù)區(qū)的值。這里,除了可以采用這種方式來得到計數(shù)區(qū)的值外,還可以采用上面介紹的比較通用的方法,即先讀出計數(shù)器的值,用計數(shù)器值除以162得到余數(shù),用以消除計數(shù)器值中命令字URG、ACK、PSH、RST計數(shù)的影響,然后用得到的余數(shù)整除16,用以消除計數(shù)器值中命令字FIN計數(shù)的影響,獲得當(dāng)前命令字計數(shù)區(qū)的值在步驟104中,判斷得到的SYN值是否為0,如果是,則表示計數(shù)區(qū)沒有計數(shù),此時還未收到SYN包,執(zhí)行步驟105;否則,則表示計數(shù)區(qū)已經(jīng)計數(shù),此時已收到SYN包,因此不必再重復(fù)計數(shù),結(jié)束當(dāng)前處理流程。在步驟105中,處理引擎在SYN對應(yīng)的計數(shù)區(qū)內(nèi)計數(shù)。具體計數(shù)的方式可以將二進(jìn)制數(shù)1左移4位,然后與當(dāng)前計數(shù)器得值相加。從表二中可以清楚看出,將1左移4位后,該1就移入了SYN的計數(shù)區(qū)。這樣,就可以不進(jìn)行乘法運(yùn)算,通過簡單的移位以及相加運(yùn)算,實現(xiàn)計數(shù)器的計數(shù)。當(dāng)然,在計數(shù)區(qū)內(nèi)計數(shù)的操作也可以采用通用的方法,即計數(shù)器加16。對于命令字SYN來說,這個加的操作可能不算復(fù)雜,但是如果是命令字URG,則在記錄該命令字時,計數(shù)器需加165,這樣就復(fù)雜了。但如果采用移位的話,只需將l左移4x5位,然后就可以直接與計數(shù)器相加,實現(xiàn)對命令字URG的計數(shù)。在需要查詢SYN命令字時,實際上就是需要找到計數(shù)器中SYN計數(shù)區(qū)的值,判斷計數(shù)區(qū)內(nèi)是否已經(jīng)計數(shù),如果計數(shù),則表明當(dāng)前SYN命令字的狀態(tài)為收到;否則,表明當(dāng)前SYN命令字的狀態(tài)的未收到。其中,獲得SYN計數(shù)區(qū)值的方法與,以及判斷計數(shù)區(qū)內(nèi)是否已經(jīng)計數(shù)的方法,可以參見步驟102~104的相關(guān)記載,在此不再贅述。以上為處理引擎記錄SYN命令字狀態(tài)的過程。對TCP數(shù)據(jù)流中其他命令字也可以采用相同的方法。在當(dāng)前TCP流傳輸結(jié)束時,可以將為該TCP流配置的計數(shù)器清零,用來記錄其他新建流命令字的狀態(tài)。以下,描述本發(fā)明技術(shù)方案的另一方面。參見圖2,圖2為本發(fā)明實施例裝置的結(jié)構(gòu)圖。一種狀態(tài)記錄的裝置,該裝置包括計數(shù)器和至少一個控制單元。其中,所述控制單元,用于在收到包含命令字的數(shù)據(jù)包時,控制所述計數(shù)器在為當(dāng)前命令字設(shè)置的計數(shù)區(qū)內(nèi)計數(shù),以命令字對應(yīng)計數(shù)區(qū)計數(shù)記錄命令字收到的狀態(tài);所述計數(shù)器,用于根據(jù)所述控制單元的指示計數(shù)。其中,所述控制單元包括執(zhí)行單元和計數(shù)單元。所述執(zhí)行單元,用于在收到包含命令字的數(shù)據(jù)包時,獲得當(dāng)前命令字計數(shù)區(qū)的值,確定所述計數(shù)區(qū)未計數(shù)時指示所述計數(shù)單元在當(dāng)前命令字對應(yīng)的計數(shù)區(qū)計數(shù);所述計數(shù)單元,用于根據(jù)所述執(zhí)行單元的指示,在設(shè)置了計數(shù)長度w以及各命令字的編碼"各命令字在計數(shù)長度為m、m'為累加基值所形成的計數(shù)區(qū)內(nèi)計數(shù)的情況下,控制所述計數(shù)器加附'',其中r為當(dāng)前命令字的編碼。所述執(zhí)行單元,用于得到當(dāng)前命令字的編碼r,讀取當(dāng)前計數(shù)器值,用計數(shù)器值除以得到的余數(shù)整除m''獲得當(dāng)前命令字計數(shù)區(qū)的值,在所述計數(shù)區(qū)值為O時,確定所述計數(shù)區(qū)未計數(shù),發(fā)送當(dāng)前命令字編碼,指示所述計數(shù)單元執(zhí)行所述計數(shù)操作。所述計數(shù)單元,用于當(dāng)m等于為2的整數(shù)次方時,收到所述執(zhí)行單元發(fā)送的指示后,得到二進(jìn)制數(shù)1左移rxy位的值,_/=log';',控制所述計數(shù)器加所述移位得到的值。所述執(zhí)行單元,用于得到當(dāng)前命令字的編碼r,讀取當(dāng)前計數(shù)器值,將二進(jìn)制數(shù)附-l左移rxy位,將移位后的二進(jìn)制數(shù)與當(dāng)前計數(shù)器值進(jìn)行與運(yùn)算得到當(dāng)前命令字計數(shù)區(qū)的值,在得到的值為0時,確定所述計數(shù)區(qū)未計數(shù),發(fā)送當(dāng)前命令字編碼,指示所述計數(shù)單元執(zhí)行所述計數(shù)操作。該裝置還可以進(jìn)一步包括查詢單元,所述查詢單元,用于在查詢命令字狀態(tài)時,獲得當(dāng)前命令字計數(shù)區(qū)的值,判斷所述計數(shù)區(qū)是否計數(shù),如果是,則輸出命令字狀態(tài)為收到;否則,輸出命令字狀態(tài)為未收到。其中,所提到的控制單元可以作為所述處理引擎中的一部分;也可以作為處理引擎外接的處理模塊,用來處理記錄命令字的操作。在本發(fā)明的技術(shù)方案中,通過計數(shù)器記錄多個命令字的狀態(tài),使?fàn)顟B(tài)的記錄不再依賴于表項的記錄,避免了頻繁修改表項而產(chǎn)生的更新操作,有效的節(jié)約了系統(tǒng)資源。在處理器中,特別是網(wǎng)絡(luò)處理器和多核處理器,都會提供專門的高速計數(shù)器功能,因此使用計數(shù)器完成記錄命令字的操作,不但能夠有效利用設(shè)備的資源,同時還能夠?qū)崿F(xiàn)高速的狀態(tài)記錄。另外,在存在多個處理引擎記錄相同命令字的情況下,現(xiàn)有技術(shù)通常采用加鎖技術(shù)來處理多個處理引擎同時記錄的問題。即在記錄命令字狀態(tài)時,處理引擎要對當(dāng)前表項進(jìn)行加鎖操作,以使其他處理引擎不能訪問該表項。本發(fā)明技術(shù)方案相對于這種處理方式,不但省去了加解鎖的復(fù)雜操作;同時,在記錄命令字狀態(tài)的過程中,由于未對表項進(jìn)行加鎖操作,因此表項中包含的其他內(nèi)容能夠被其他進(jìn)程訪問,極大的提高了表項使用效率,處理效率。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。權(quán)利要求1.一種狀態(tài)記錄的方法,其特征在于,該方法包括為各命令字設(shè)置計數(shù)器的計數(shù)區(qū);在收到包含命令字的數(shù)據(jù)包時,計數(shù)器在當(dāng)前命令字的計數(shù)區(qū)內(nèi)計數(shù),以命令字對應(yīng)計數(shù)區(qū)計數(shù)記錄命令字收到的狀態(tài)。2、根據(jù)權(quán)利要求1所述的方法,其特征在于,所述為各命令字設(shè)置計數(shù)器的計數(shù)區(qū)為設(shè)置計數(shù)長度m以及各命令字的編碼/,各命令字在計數(shù)長度為柳、州為累加基值所形成的計數(shù)區(qū)內(nèi)計數(shù);所述計數(shù)器在為當(dāng)前命令字設(shè)置的計數(shù)區(qū)內(nèi)計數(shù)為獲得當(dāng)前命令字計數(shù)區(qū)的值,確定所述計數(shù)區(qū)未計數(shù)時計數(shù)器加W,其中r為當(dāng)前命令字的編碼。3、根據(jù)權(quán)利要求2所述的方法,其特征在于,所述獲得當(dāng)前命令字計數(shù)區(qū)的值,確定所述計數(shù)區(qū)未計數(shù)為得到當(dāng)前命令字的編碼r,讀取當(dāng)前計數(shù)器值,用計數(shù)器值除以i《得到的余數(shù)整除附"獲得當(dāng)前命令字計數(shù)區(qū)的值,在所述計數(shù)區(qū)值為0時,確定所述計數(shù)區(qū)未計數(shù)。4、根據(jù)權(quán)利要求2所述的方法,其特征在于,當(dāng)w等于2的整數(shù)次方時,所述計數(shù)器加W為計數(shù)器加二進(jìn)制數(shù)1左移"j位得到的值,其中/=1og『。5、根據(jù)權(quán)利要求4所述的方法,其特征在于,所述獲得當(dāng)前命令字計數(shù)區(qū)的值,確定所述計數(shù)區(qū)未計數(shù)為得到當(dāng)前命令字的編碼r,將二進(jìn)制數(shù)附-l左移rxy位,將移位后的二進(jìn)制數(shù)與當(dāng)前計數(shù)器值進(jìn)行與運(yùn)算得到當(dāng)前命令字計數(shù)區(qū)的值,在得到的值為0時,確定所述計數(shù)區(qū)未計數(shù)。6、根據(jù)權(quán)利要求2至5中任一權(quán)利要求所述的方法,其特征在于,當(dāng)多個處理引擎記錄相同命令字狀態(tài)時,所述m取值為大于等于"l的整數(shù),其中s為處理引擎總數(shù)。7、才艮據(jù)權(quán)利要求6所述的方法,其特征在于,所述m為2的整數(shù)次方,并且為大于等于"l的2的整數(shù)次方中的最小數(shù)。8、根據(jù)權(quán)利要求2至5中任一權(quán)利要求所述的方法,其特征在于,該方法進(jìn)一步包括當(dāng)查詢命令字狀態(tài)時,獲得當(dāng)前待查詢命令字計數(shù)區(qū)的值,判斷計數(shù)區(qū)是否計數(shù),如果是,則該命令字狀態(tài)為收到;否則,該命令字狀態(tài)為未收到。9、一種狀態(tài)記錄的裝置,其特征在于,該裝置包括計數(shù)器和至少一個控制單元;所述控制單元,用于在收到包含命令字的數(shù)據(jù)包時,控制所述計數(shù)器在為當(dāng)前命令字設(shè)置的計數(shù)區(qū)內(nèi)計數(shù),以命令字對應(yīng)計數(shù)區(qū)計數(shù)記錄命令字收到的狀態(tài);所述計數(shù)器,用于根據(jù)所述控制單元的指示計數(shù)。10、根據(jù)權(quán)利要求9所述的裝置,其特征在于,所述控制單元包括執(zhí)行單元和計數(shù)單元;所述執(zhí)行單元,用于在收到包含命令字的數(shù)據(jù)包時,獲得當(dāng)前命令字計數(shù)區(qū)的值,確定所述計數(shù)區(qū)未計數(shù)時指示所述計數(shù)單元在當(dāng)前命令字對應(yīng)的計數(shù)區(qū)計數(shù);所述計數(shù)單元,用于根據(jù)所述執(zhí)行單元的指示,在設(shè)置了計數(shù)長度m以及各命令字的編碼,',各命令字在計數(shù)長度為m、附'為累加基值所形成的計數(shù)區(qū)內(nèi)計數(shù)的情況下,控制所述計數(shù)器加m',其中r為當(dāng)前命令字的編碼。11、根據(jù)權(quán)利要求IO所述的裝置,其特征在于,所述執(zhí)行單元,用于得到當(dāng)前命令字的編碼r,讀取當(dāng)前計數(shù)器值,用計數(shù)器值除以得到的余數(shù)整除i獲得當(dāng)前命令字計數(shù)區(qū)的值,在所述計數(shù)區(qū)值為0時,確定所述計數(shù)區(qū)未計數(shù),發(fā)送當(dāng)前命令字編碼r指示所述計數(shù)單元執(zhí)行所述計數(shù)操作。12、根據(jù)權(quán)利要求IO所述的裝置,其特征在于,所述計數(shù)單元,用于當(dāng)m等于為2的整數(shù)次方時,收到所述執(zhí)行單元發(fā)送的指示后,得到二進(jìn)制數(shù)1左移rxj位的值,y=log7,控制所述計數(shù)器加所述移位得到的值。13、根據(jù)權(quán)利要求12所述的裝置,其特征在于,所述執(zhí)行單元,用于得到當(dāng)前命令字的編碼r,讀取當(dāng)前計數(shù)器值,將二進(jìn)制數(shù)m-l左移"_/位,將移位后的二進(jìn)制數(shù)與當(dāng)前計數(shù)器值進(jìn)行與運(yùn)算得到當(dāng)前命令字計數(shù)區(qū)的值,在得到的值為0時,確定所述計數(shù)區(qū)未計數(shù),發(fā)送當(dāng)前命令字編碼r指示所述計數(shù)單元執(zhí)行所述計數(shù)操作。14、根據(jù)權(quán)利要求9至13任一權(quán)利要求所述的裝置,其特征在于,該裝置進(jìn)一步包括查詢單元;所述查詢單元,用于在查詢命令字狀態(tài)時,獲得當(dāng)前命令字計數(shù)區(qū)的值,判斷所述計數(shù)區(qū)是否計數(shù),如果是,則輸出命令字狀態(tài)為收到;否則,輸出命令字狀態(tài)為未收到。全文摘要本發(fā)明公開了一種狀態(tài)記錄的方法及裝置,本發(fā)明所提供的一種狀態(tài)記錄的方法,包括為各命令字設(shè)置計數(shù)器的計數(shù)區(qū);在收到包含命令字的數(shù)據(jù)包時,計數(shù)器在當(dāng)前命令字的計數(shù)區(qū)內(nèi)計數(shù),以命令字對應(yīng)計數(shù)區(qū)計數(shù)記錄命令字收到的狀態(tài)。另外,本發(fā)明還提供了一種狀態(tài)記錄的裝置。本發(fā)明的技術(shù)方案,通過計數(shù)器記錄命令字的狀態(tài),使?fàn)顟B(tài)的記錄不再依賴于表項的記錄,避免了頻繁修改表項而產(chǎn)生的更新操作,有效的節(jié)約了系統(tǒng)資源。文檔編號H04L12/56GK101286889SQ20081011263公開日2008年10月15日申請日期2008年5月23日優(yōu)先權(quán)日2008年5月23日發(fā)明者盧勝文申請人:杭州華三通信技術(shù)有限公司