一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法及裝置制造方法
【專利摘要】本發(fā)明提供一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法及裝置,用以提高報(bào)文處理的準(zhǔn)確性,該方法中交換設(shè)備接收到待處理的數(shù)據(jù)包后,確定對(duì)該數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),并在采用該規(guī)則表項(xiàng)對(duì)數(shù)據(jù)包處理后,對(duì)該規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新。本發(fā)明還提供了相應(yīng)的裝置。由于在本發(fā)明實(shí)施例中通過(guò)統(tǒng)計(jì)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新,因此可以在不大量占用TCAM空間的情況下,保存較常被用戶使用的規(guī)則表項(xiàng),從而可以降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理。
【專利說(shuō)明】—種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及工業(yè)以太網(wǎng)【技術(shù)領(lǐng)域】,尤其涉及一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)有技術(shù)中,網(wǎng)絡(luò)設(shè)備在進(jìn)行數(shù)據(jù)包的處理時(shí),需要查詢CPU中保存的各流表,例如NAT轉(zhuǎn)換表,根據(jù)該NAT轉(zhuǎn)換表進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā)。每個(gè)流表中保存有多組動(dòng)作表項(xiàng),標(biāo)識(shí)對(duì)該數(shù)據(jù)包的處理動(dòng)作,例如,對(duì)于NAT轉(zhuǎn)換表,每組動(dòng)作表項(xiàng)中包括:內(nèi)網(wǎng)的源IP地址和端口號(hào)信息,以及對(duì)應(yīng)的外網(wǎng)的目的IP地址和端口號(hào)信息。由于在每個(gè)流表中保存有很多組動(dòng)作表項(xiàng),每個(gè)流表包含的數(shù)據(jù)量會(huì)非常的大,保存在CPU中的流表會(huì)給CPU的運(yùn)行造成很大的壓力,影響CPU的處理效率,并且影響數(shù)據(jù)包的轉(zhuǎn)發(fā)效率。
[0003]為了提高數(shù)據(jù)包的轉(zhuǎn)發(fā)效率,現(xiàn)有技術(shù)中可以將對(duì)各個(gè)數(shù)據(jù)包進(jìn)行處理的各流表中相應(yīng)的動(dòng)作表項(xiàng)保存到一個(gè)規(guī)則表項(xiàng)中,并將該規(guī)則表項(xiàng)存放到FPGA-TCAM硬件中。但TCAM的內(nèi)存一般只有5M大小,因此TCAM內(nèi)存空間的大小將會(huì)直接影響規(guī)則表項(xiàng)的大小。當(dāng)存在大量的數(shù)據(jù)包需要轉(zhuǎn)發(fā)時(shí),每個(gè)數(shù)據(jù)包需要查找的規(guī)則表項(xiàng)都不同,此時(shí)TCAM中將存儲(chǔ)大量的規(guī)則表項(xiàng)。
[0004]但是,在實(shí)際的數(shù)據(jù)包處理時(shí),各規(guī)則表項(xiàng)中只有20%?30%的規(guī)則表項(xiàng)常被使用,剩余的70%?80%的規(guī)則表項(xiàng)很少被使用或者偶爾某一集中時(shí)間段內(nèi)被使用。但在現(xiàn)有技術(shù)中各規(guī)則表項(xiàng)的全部?jī)?nèi)容都被保存在TCAM中,而各規(guī)則表項(xiàng)中的很少被使用,或者偶爾某一集中時(shí)間段內(nèi)被使用的規(guī)則表項(xiàng)將造成TCAM空間資源的浪費(fèi),另外,如果各規(guī)則表項(xiàng)占用的空間大于TCAM的空間,各規(guī)則表項(xiàng)中常被使用的規(guī)則表項(xiàng)將無(wú)法正確下發(fā)到TCAM中,導(dǎo)致一些數(shù)據(jù)包無(wú)法被正常處理。
【發(fā)明內(nèi)容】
[0005]鑒于上述問(wèn)題,提出了本發(fā)明以便提供一種克服上述問(wèn)題或者至少部分地解決上述問(wèn)題的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法及裝置。
[0006]本發(fā)明實(shí)施例提供了一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法,該方法包括:
[0007]交換設(shè)備根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng);
[0008]采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新;
[0009]根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
[0010]為了減小CPU的工作量,進(jìn)一步有效的降低TCAM中保存的規(guī)則表項(xiàng)的數(shù)量,在本發(fā)明實(shí)施例中所述交換設(shè)備根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng)包括:
[0011]交換設(shè)備將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng);
[0012]所述采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新包括:
[0013]所述TCAM判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng);
[0014]當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新;
[0015]當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0016]為了減小CPU的工作量,進(jìn)一步有效的降低TCAM中保存的規(guī)則表項(xiàng)的數(shù)量,所述交換設(shè)備根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng)包括:
[0017]交換設(shè)備將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng);
[0018]所述采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新包括:
[0019]所述TCAM判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng);
[0020]當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新;
[0021]當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),判斷自身保存的規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值;
[0022]當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量小于設(shè)定的數(shù)量閾值時(shí),向CPU請(qǐng)求所述規(guī)則表項(xiàng),采用請(qǐng)求的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新;當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量不小于設(shè)定的數(shù)量閾值時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0023]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),所述根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新包括:
[0024]交換設(shè)備的CPU按照設(shè)定的第一時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);
[0025]根據(jù)接收到的TCAM返回的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及自身保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;
[0026]將排序結(jié)果中位置靠前的設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中。
[0027]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),所述根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新包括:
[0028]交換設(shè)備的CPU按照設(shè)定的第二時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);并
[0029]統(tǒng)計(jì)在第二時(shí)間間隔的時(shí)間段中,按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和;
[0030]根據(jù)接收到的TCAM返回的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),自身保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及統(tǒng)計(jì)的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和,按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;
[0031]將排序結(jié)果中位置靠前的第一數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中,并將該第一數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第二時(shí)間間隔;
[0032]將在當(dāng)前第一時(shí)間間隔中的排序結(jié)果中位置靠前的第二數(shù)量的其他規(guī)則表項(xiàng)下發(fā)到TCAM,并將該第二數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍。
[0033]本發(fā)明實(shí)施例提供了一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化裝置,所述裝置包括:
[0034]確定模塊,用于根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng);
[0035]次數(shù)更新模塊,用于采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新;
[0036]表項(xiàng)更新模塊,用于根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
[0037]為了減小CPU的工作量,進(jìn)一步有效的降低TCAM中保存的規(guī)則表項(xiàng)的數(shù)量,在本發(fā)明實(shí)施例中所述確定模塊,具體用于將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng);
[0038]所述次數(shù)更新模塊,具體用于判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng);當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新;當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0039]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),所述確定模塊,具體用于將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng);
[0040]所述次數(shù)更新模塊,具體用于判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng);當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新;當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),判斷自身保存的規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值;當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量小于設(shè)定的數(shù)量閾值時(shí),向CPU請(qǐng)求所述規(guī)則表項(xiàng),采用請(qǐng)求的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量不小于設(shè)定的數(shù)量閾值時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0041]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),所述表項(xiàng)更新模塊,具體用于按照設(shè)定的第一時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);根據(jù)接收到的TCAM返回的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及自身保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;將排序結(jié)果中位置靠前的設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中。
[0042]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),所述表項(xiàng)更新模塊,具體還用于按照設(shè)定的第二時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);并統(tǒng)計(jì)在第二時(shí)間間隔的時(shí)間段中,按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和;根據(jù)接收到的TCAM返回的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),自身保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及統(tǒng)計(jì)的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和,按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;將排序結(jié)果中位置靠前的第一數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中,并將該第一數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第二時(shí)間間隔;將在當(dāng)前第一時(shí)間間隔中的排序結(jié)果中位置靠前的第二數(shù)量的其他規(guī)則表項(xiàng)下發(fā)到TCAM,并將該組規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍。
[0043]本發(fā)明實(shí)施例提供了一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法及裝置,該方法中交換設(shè)備接收到待處理的數(shù)據(jù)包后,確定對(duì)該數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),并在采用該規(guī)則表項(xiàng)對(duì)數(shù)據(jù)包處理后,對(duì)該規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新。由于在本發(fā)明實(shí)施例中通過(guò)統(tǒng)計(jì)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新,因此可以在TCAM空間中保存較常被用戶使用的規(guī)則表項(xiàng),從而可以降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理。
[0044]上述說(shuō)明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說(shuō)明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的【具體實(shí)施方式】。
【專利附圖】
【附圖說(shuō)明】
[0045]通過(guò)閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對(duì)于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號(hào)表示相同的部件。在附圖中:
[0046]圖1為本發(fā)明實(shí)施例提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程;
[0047]圖2為本發(fā)明實(shí)施例一提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程;
[0048]圖3為本發(fā)明實(shí)施例二提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程:
[0049]圖4為本發(fā)明實(shí)施例三提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程;
[0050]圖5為本發(fā)明實(shí)施例四提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程;
[0051]圖6為本發(fā)明實(shí)施例提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化裝置結(jié)構(gòu)圖。
【具體實(shí)施方式】
[0052]為了降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理,本發(fā)明實(shí)施例提供了一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法及裝置。
[0053]下面將參照附圖更詳細(xì)地描述本公開(kāi)的示例性實(shí)施例。雖然附圖中顯示了本公開(kāi)的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開(kāi)而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開(kāi),并且能夠?qū)⒈竟_(kāi)的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
[0054]下面結(jié)合說(shuō)明附圖,對(duì)本發(fā)明實(shí)施例進(jìn)行說(shuō)明。
[0055]圖1為本發(fā)明實(shí)施例提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程,該過(guò)程包括以下步驟:
[0056]SlOl:交換設(shè)備根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng)。
[0057]具體的,在本發(fā)明實(shí)施例中交換設(shè)備通過(guò)物理網(wǎng)口接收到待處理的數(shù)據(jù)包后,將該待處理的數(shù)據(jù)包發(fā)送到FPGA的TCAM進(jìn)行處理。TCAM接收到該待處理的數(shù)據(jù)包后,確定對(duì)該待處理的數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng)。
[0058]在本發(fā)明實(shí)施例中每個(gè)規(guī)則表項(xiàng)中保存有對(duì)相應(yīng)數(shù)據(jù)包處理的各動(dòng)作表項(xiàng),各動(dòng)作表項(xiàng)標(biāo)識(shí)對(duì)該數(shù)據(jù)包的處理動(dòng)作,例如,地址和端口號(hào)的轉(zhuǎn)換處理等動(dòng)作,對(duì)五元組、12元組的處理動(dòng)作等。
[0059]S102:采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0060]在發(fā)明實(shí)施例中為了降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理,記錄每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)每個(gè)規(guī)則表項(xiàng)是否被使用,確定是否對(duì)該規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0061]具體的,例如本地保存了 1000個(gè)規(guī)則表項(xiàng),當(dāng)確定采用規(guī)則表項(xiàng)A對(duì)當(dāng)前待處理的數(shù)據(jù)包進(jìn)行處理時(shí),采用規(guī)則表項(xiàng)A對(duì)該數(shù)據(jù)包進(jìn)行處理,并對(duì)應(yīng)的將該規(guī)則表項(xiàng)A的被使用的次數(shù)更新,即將該規(guī)則表項(xiàng)A被使用的次數(shù)加一。
[0062]S103:根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
[0063]在設(shè)定的時(shí)間間隔到來(lái)時(shí),交換設(shè)備統(tǒng)計(jì)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
[0064]由于在本發(fā)明實(shí)施例中通過(guò)統(tǒng)計(jì)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新,因此可以在不大量占用TCAM空間的情況下,將較常被用戶使用的規(guī)則表項(xiàng)下發(fā)到TCAM,從而可以降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理。
[0065]在本發(fā)明實(shí)施例中為了有效的降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理,可以在交換設(shè)備的TCAM中保存一些較常被使用的規(guī)則表項(xiàng),但大部分的規(guī)則表項(xiàng)還是保存在交換設(shè)備的CPU中。為了實(shí)現(xiàn)對(duì)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)的記錄,交換設(shè)備的TCAM和CPU都可以對(duì)自身保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0066]CPU可以首先將設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM,該設(shè)定數(shù)量的規(guī)則表項(xiàng)可以是CPU任意下發(fā)給TCAM的,即CPU將設(shè)定數(shù)量的任意規(guī)則表項(xiàng)下發(fā)到TCAM。
[0067]當(dāng)交換設(shè)備通過(guò)物理網(wǎng)口接收到待處理的數(shù)據(jù)包時(shí),將該待處理的數(shù)據(jù)包發(fā)送到TCAM, TCAM確定對(duì)該數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng)。當(dāng)TCAM本地保存有該規(guī)則表項(xiàng)時(shí),采用本地保存的該規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理,并對(duì)該規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,將該規(guī)則表項(xiàng)被使用的次數(shù)加一。當(dāng)TCAM本地未保存該規(guī)則表項(xiàng)時(shí),為了實(shí)現(xiàn)對(duì)該數(shù)據(jù)包的處理,TCAM將該數(shù)據(jù)包發(fā)送到CPU,由于CPU中保存有所有的規(guī)則表項(xiàng),因此當(dāng)將該數(shù)據(jù)包發(fā)送到CPU后,CPU根據(jù)自身保存的規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理,并在本地對(duì)該規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,將該規(guī)則表項(xiàng)被使用的次數(shù)加一。
[0068]TCAM和CPU根據(jù)自身保存的每個(gè)規(guī)則表項(xiàng)是否被使用,對(duì)對(duì)應(yīng)規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。當(dāng)設(shè)定的時(shí)間間隔到來(lái)時(shí),CPU根據(jù)自身及TCAM中每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)規(guī)則表項(xiàng)進(jìn)行排序,將使用次數(shù)較高的設(shè)定數(shù)量的規(guī)則表項(xiàng)更新到TCAM。
[0069]圖2為本發(fā)明實(shí)施例一提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程,該過(guò)程包括以下步驟:
[0070]S201:交換設(shè)備通過(guò)物理網(wǎng)口接收待處理的數(shù)據(jù)包,將接收到的數(shù)據(jù)包發(fā)送到TCAM。
[0071]S202:TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng)。
[0072]S203:TCAM判斷當(dāng)前自身是否保存有所述規(guī)則表項(xiàng),當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S204,否則,進(jìn)行步驟S205。
[0073]S204:采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新。
[0074]S205:將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0075]S206:按照設(shè)定的時(shí)間間隔,根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
[0076]為了降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理,可以設(shè)置TCAM中保存的規(guī)則表項(xiàng)的數(shù)量,在數(shù)據(jù)包處理之初,TCAM中未保存有任何規(guī)則表項(xiàng)。當(dāng)TCAM接收到交換設(shè)備發(fā)送的待處理的數(shù)據(jù)包時(shí),確定對(duì)該數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),在判斷本地未保存該規(guī)則表項(xiàng)時(shí),且自身保存的規(guī)則表項(xiàng)的數(shù)量小于設(shè)定的數(shù)量閾值時(shí),TCAM向CPU請(qǐng)求該規(guī)則表項(xiàng),并采用請(qǐng)求的該規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理,并在本地對(duì)該規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,即將該規(guī)則表項(xiàng)被使用的次數(shù)加一。
[0077]當(dāng)TCAM判斷本地未保存該規(guī)則表項(xiàng),但自身保存的規(guī)則表項(xiàng)的數(shù)量不小于設(shè)定的閾值時(shí),TCAM將該數(shù)據(jù)包發(fā)送到CPU,由于CPU中保存有所有的規(guī)則表項(xiàng),因此當(dāng)將該數(shù)據(jù)包發(fā)送到CPU后,CPU根據(jù)自身保存到規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理,并且CPU在其本地對(duì)該規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,將該規(guī)則表項(xiàng)被使用的次數(shù)加一。
[0078]圖3為本發(fā)明實(shí)施例二提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程,該過(guò)程包括以下步驟:
[0079]S301:交換設(shè)備通過(guò)物理網(wǎng)口接收待處理的數(shù)據(jù)包,將接收到的數(shù)據(jù)包發(fā)送到TCAM。
[0080]S302:TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng)。
[0081]S303:TCAM判斷當(dāng)前自身是否保存有所述規(guī)則表項(xiàng),當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S304,否則,進(jìn)行步驟S305。
[0082]S304:采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新。
[0083]S305:TCAM判斷自身保存的規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S306,否則,進(jìn)行步驟S307。
[0084]S306 =TCAM向CPU請(qǐng)求所述規(guī)則表項(xiàng),采用請(qǐng)求的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0085]S307 =TCAM將所述數(shù)據(jù)包發(fā)送到CPU,CPU根據(jù)自身保存的規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理,且CPU在其本地對(duì)處理所述數(shù)據(jù)包的規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0086]S308 =CPU按照設(shè)定的時(shí)間間隔,根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
[0087]本發(fā)明實(shí)施例中在TCAM中可以保存設(shè)定數(shù)量閾值的規(guī)則表項(xiàng),當(dāng)TCAM確定對(duì)數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng)未保存在本地時(shí),且本地保存的規(guī)則表項(xiàng)的數(shù)量小于設(shè)定數(shù)量閾值時(shí),則TCAM向CPU請(qǐng)求對(duì)該數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),并將從CPU請(qǐng)求的該規(guī)則表項(xiàng)保存到本地,后續(xù)如果再有數(shù)據(jù)包需要采用該規(guī)則表項(xiàng)處理,則TCAM可以直接采用本地保存的該規(guī)則表項(xiàng)處理,無(wú)需再向CPU請(qǐng)求,從而降低了 CPU的工作量。當(dāng)TCAM中未保存對(duì)數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),并且自身本地保存的規(guī)則表項(xiàng)的數(shù)量不小于設(shè)定的數(shù)量閾值時(shí),TCAM將該數(shù)據(jù)包發(fā)送到CPU,CPU根據(jù)自身保存的規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理。
[0088]因?yàn)橛械囊?guī)則表項(xiàng)被使用的次數(shù)記錄在TCAM中,有的規(guī)則表項(xiàng)被使用的次數(shù)記錄在CPU中,交換設(shè)備的CPU按照設(shè)定的時(shí)間間隔統(tǒng)計(jì)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新。
[0089]交換設(shè)備的CPU可以按照設(shè)定的時(shí)間間隔,對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新,該時(shí)間間隔例如可以為第一時(shí)間間隔,具體的,根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新包括:
[0090]交換設(shè)備的CPU按照設(shè)定的第一時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);
[0091]根據(jù)接收到的TCAM返回的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及自身保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;
[0092]將排序結(jié)果中位置靠前的設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中。
[0093]在本發(fā)明實(shí)施例中交換設(shè)備的CPU按照設(shè)定的第一時(shí)間間隔,對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新。具體的,當(dāng)?shù)谝粫r(shí)間間隔到來(lái)時(shí),CPU獲取自身及TCAM中保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)。一部分規(guī)則表項(xiàng)被使用的次數(shù)保存在CPU中,還有一部分規(guī)則表項(xiàng)被使用的次數(shù)保存在TCAM中,CPU在每個(gè)第一時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)。TCAM接收到CPU發(fā)送的請(qǐng)求后,將在本地保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)發(fā)送到CPU。
[0094]圖4為本發(fā)明實(shí)施例三提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程,該過(guò)程包括以下步驟:
[0095]S401:交換設(shè)備通過(guò)物理網(wǎng)口接收待處理的數(shù)據(jù)包,將接收到的數(shù)據(jù)包發(fā)送到TCAM。
[0096]S402 =TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng)。
[0097]S403:TCAM判斷當(dāng)前自身是否保存有所述規(guī)則表項(xiàng),當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S404,否則,進(jìn)行步驟S405。
[0098]S404:采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新。
[0099]S405:TCAM判斷自身保存到規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S406,否則,進(jìn)行步驟S407。
[0100]S406 =TCAM向CPU請(qǐng)求所述規(guī)則表項(xiàng),采用請(qǐng)求的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0101]S407:TCAM將所述數(shù)據(jù)包發(fā)送到CPU,CPU根據(jù)自身保存的規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理,且CPU在其本地對(duì)處理所述數(shù)據(jù)包的規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0102]S408 =CPU按照設(shè)定的第一時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)。
[0103]S409:CPU根據(jù)接收到的TCAM返回的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及自身保存的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序。
[0104]S410 =CPU將排序結(jié)果中位置靠前的設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中。
[0105]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),在本發(fā)明實(shí)施例中可以將較常使用的規(guī)則表項(xiàng)保存在TCAM中。另外,由于一些規(guī)則表項(xiàng)可能偶爾在某一集中時(shí)間段內(nèi)使用,為了保證TCAM中保存的規(guī)則表項(xiàng),能夠滿足當(dāng)前對(duì)報(bào)文處理的需求,因此在本發(fā)明實(shí)施例中可以設(shè)置第一時(shí)間間隔,定期的對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新。
[0106]另外,在本發(fā)明實(shí)施例中為了進(jìn)一步提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),確定規(guī)則表項(xiàng)中較常被使用的,并設(shè)置經(jīng)常被使用的規(guī)則表項(xiàng)的更新時(shí)間為第二時(shí)間間隔,將經(jīng)常被使用的規(guī)則表項(xiàng)的更新時(shí)間設(shè)置為第一時(shí)間間隔,其中第二時(shí)間間隔大于第一時(shí)間間隔,第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍。
[0107]具體的,所述將排序結(jié)果中位置靠前的設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中包括:
[0108]交換設(shè)備的CPU按照設(shè)定的第二時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);并
[0109]統(tǒng)計(jì)在第二時(shí)間間隔的時(shí)間段中,按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和;
[0110]根據(jù)接收到的TCAM返回的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),自身保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及統(tǒng)計(jì)的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和,按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;
[0111]將排序結(jié)果中位置靠前的第一數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中,并將該第一數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第二時(shí)間間隔;
[0112]將在當(dāng)前第一時(shí)間間隔中的排序結(jié)果中位置靠前的第二數(shù)量的其他規(guī)則表項(xiàng)下發(fā)到TCAM,并將該第二數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍。
[0113]通過(guò)上述方式可以將較常被使用的規(guī)則表項(xiàng)的更新頻率調(diào)整為第二時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍,例如可以是3倍、5倍、7倍等。另外,為了在對(duì)TCAM中的規(guī)則表項(xiàng)進(jìn)行更新時(shí),使TCAM分辨出每個(gè)規(guī)則表項(xiàng)的更新周期,CPU在向TCAM下發(fā)每個(gè)規(guī)則表項(xiàng)時(shí),可以標(biāo)識(shí)出每個(gè)規(guī)則表項(xiàng)的更新時(shí)間間隔,例如I表示采用第一時(shí)間間隔更新,O表示采用第二時(shí)間間隔更新。TCAM還可以按照更新時(shí)間間隔的不同,劃分不同的規(guī)則表項(xiàng)存儲(chǔ)區(qū)域,分別為第一區(qū)域和第二區(qū)域,將按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)保存在第一區(qū)域中,將按照第二時(shí)間間隔更新的規(guī)則表項(xiàng)保存在第二區(qū)域中。
[0114]TCAM接收到CPU下發(fā)的每個(gè)規(guī)則表項(xiàng)后,采用CPU下發(fā)的每個(gè)規(guī)則表項(xiàng)對(duì)自身保存的規(guī)則表項(xiàng)進(jìn)行更新,即采用本次CPU下發(fā)的規(guī)則表項(xiàng)替換本地已經(jīng)保存的規(guī)則表項(xiàng),并記錄每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)。
[0115]當(dāng)?shù)谝粫r(shí)間間隔到來(lái)時(shí),CPU向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的每個(gè)按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)被使用的次數(shù)。TCAM接收到該請(qǐng)求信息后,將本地保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)發(fā)送到CPU。CPU接收到TCAM發(fā)送的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),并根據(jù)本地保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),統(tǒng)計(jì)按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)被使用的次數(shù)由大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序,將排序結(jié)果中靠前的第一設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM,TCAM根據(jù)接收到的規(guī)則表項(xiàng),對(duì)本地保存的按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)進(jìn)行更新。
[0116]當(dāng)?shù)诙r(shí)間間隔到來(lái)時(shí),CPU向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的每個(gè)按照第二時(shí)間間隔更新的規(guī)則表項(xiàng)被使用的次數(shù)。TCAM接收到該請(qǐng)求信息后,將本地保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)發(fā)送到CPU。CPU接收到TCAM發(fā)送的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),并根據(jù)本地保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),統(tǒng)計(jì)按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)。
[0117]另外,由于第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍,因此可以認(rèn)為在每個(gè)第二時(shí)間間隔的時(shí)間段中包括整數(shù)個(gè)第一時(shí)間間隔,根據(jù)在每個(gè)第一時(shí)間間隔中統(tǒng)計(jì)的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),確定在該第二時(shí)間間隔的時(shí)間段中,按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)的總和。將統(tǒng)計(jì)的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及確定的在該第二時(shí)間間隔的時(shí)間段中,按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用次數(shù)的總和,按照被使用的次數(shù)從大到小的順序?qū)σ?guī)則表項(xiàng)進(jìn)行排序,將排序結(jié)果中靠前的第一數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM,TCAM根據(jù)接收到的規(guī)則表項(xiàng),對(duì)本地保存的按照第二時(shí)間間隔更新的規(guī)則表項(xiàng)進(jìn)行更新。
[0118]另外,因?yàn)榈诙r(shí)間間隔為第一時(shí)間間隔的整數(shù)倍,因此當(dāng)根據(jù)第二時(shí)間間隔對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新時(shí),按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)也在更新,因此將當(dāng)前該第一時(shí)間間隔中排序結(jié)果位置靠前的第二數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM,將該第二數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔,TCAM根據(jù)接收到的規(guī)則表項(xiàng),對(duì)本地保存的按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)進(jìn)行更新。
[0119]圖5為本發(fā)明實(shí)施例四提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化過(guò)程,該過(guò)程包括以下步驟:
[0120]S501:交換設(shè)備通過(guò)物理網(wǎng)口接收待處理的數(shù)據(jù)包,將接收到的數(shù)據(jù)包發(fā)送到TCAM。
[0121]S502:TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng)。
[0122]S503:TCAM判斷當(dāng)前自身是否保存有所述規(guī)則表項(xiàng),當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S504,否則,進(jìn)行步驟S505。
[0123]S504:采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新。
[0124]S505:TCAM判斷自身保存到規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值,當(dāng)判斷結(jié)果為是時(shí),進(jìn)行步驟S506,否則,進(jìn)行步驟S507。
[0125]S506 =TCAM向CPU請(qǐng)求所述規(guī)則表項(xiàng),采用請(qǐng)求的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0126]S507:TCAM將所述數(shù)據(jù)包發(fā)送到CPU,CPU根據(jù)自身保存的規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理,且CPU在其本地對(duì)處理所述數(shù)據(jù)包的規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0127]S508:CPU按照設(shè)定的第二時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)。
[0128]S509:統(tǒng)計(jì)每個(gè)按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)在第二時(shí)間間隔的時(shí)間段中的每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和。
[0129]S510:根據(jù)接收到的TCAM返回的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),自身保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及統(tǒng)計(jì)的按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)被使用的次數(shù)的總和,按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序。
[0130]S511:將排序結(jié)果中位置靠前的第一數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中,并將該組規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第二時(shí)間間隔。將在當(dāng)前第一時(shí)間間隔中的排序結(jié)果中位置靠前的第二數(shù)量的其他規(guī)則表項(xiàng)下發(fā)到TCAM,并將該組規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍。
[0131]下面通過(guò)一個(gè)具體的實(shí)施例對(duì)本發(fā)明進(jìn)行詳細(xì)說(shuō)明。
[0132]交換設(shè)備通過(guò)物理端口接收到IP+端口號(hào)為192.168.2.3:3456的數(shù)據(jù)包,將該數(shù)據(jù)包發(fā)送到TCAM,TCAM確定該數(shù)據(jù)包發(fā)送到外網(wǎng)IP+端口號(hào)236.251.31.35:80,TCAM查找本地是否保存處理該數(shù)據(jù)包的規(guī)則表項(xiàng),當(dāng)本地保存有該規(guī)則表項(xiàng)時(shí),采用本地保存的該規(guī)則表項(xiàng)處理該數(shù)據(jù)包,將該數(shù)據(jù)包的IP+端口號(hào)替換為236.251.31.35:3536,并在本地將該規(guī)則表項(xiàng)被使用的次數(shù)加I。
[0133]當(dāng)本地未保存該規(guī)則表項(xiàng)時(shí),TCAM判斷自身保存的規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值(1000),當(dāng)本地保存的規(guī)則表項(xiàng)的數(shù)量小于設(shè)定的數(shù)量閾值時(shí),TCAM向CPU請(qǐng)求該規(guī)則表項(xiàng),將請(qǐng)求的該規(guī)則表項(xiàng)保存到本地后,采用保存的該規(guī)則表項(xiàng)處理該數(shù)據(jù)包,并在本地將該規(guī)則表項(xiàng)被使用的次數(shù)加I ;當(dāng)本地保存的規(guī)則表項(xiàng)的數(shù)量不小于設(shè)定的數(shù)量閾值時(shí),TCAM將該數(shù)據(jù)包發(fā)送到CPU,CPU采用自身保存的規(guī)則表項(xiàng)對(duì)該數(shù)據(jù)包進(jìn)行處理,CPU在本地將對(duì)該數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng)被使用的次數(shù)加I。
[0134]CPU按照設(shè)定的第一時(shí)間間隔向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),TCAM接收到該請(qǐng)求信息后,將本地保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)發(fā)送到CPU。CPU接收到TCAM發(fā)送的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),并根據(jù)本地保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),統(tǒng)計(jì)按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)被使用的次數(shù)由大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序,將排序結(jié)果中靠前的第一設(shè)定數(shù)量(1000)的規(guī)則表項(xiàng)下發(fā)到TCAM,TCAM根據(jù)接收到的規(guī)則表項(xiàng),對(duì)本地保存的按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)進(jìn)行更新。
[0135]之后,在每個(gè)第一時(shí)間間隔CPU按照上述方式,對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新。
[0136]或者,也可以設(shè)置兩個(gè)時(shí)間間隔,第一時(shí)間間隔和第二時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍,在每個(gè)時(shí)間間隔分別對(duì)不同使用頻率的規(guī)則表項(xiàng)進(jìn)行更新。
[0137]例如第二時(shí)間間隔為第一時(shí)間間隔的3倍。在第一個(gè)第二時(shí)間間隔到來(lái)之前,會(huì)存在兩個(gè)第一時(shí)間間隔。針對(duì)這兩個(gè)第一時(shí)間間隔,在每個(gè)第一時(shí)間間隔到來(lái)時(shí),CPU向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),TCAM接收到該請(qǐng)求信息后,將本地保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)發(fā)送到CPU。CPU接收到TCAM發(fā)送的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),并根據(jù)本地保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),統(tǒng)計(jì)按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)被使用的次數(shù)由大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序,將排序結(jié)果中靠前的第一設(shè)定數(shù)量(1000)的規(guī)則表項(xiàng)下發(fā)到TCAM,TCAM根據(jù)接收到的規(guī)則表項(xiàng),對(duì)本地保存的按照第一時(shí)間間隔更新的規(guī)則表項(xiàng)進(jìn)行更新。
[0138]第三個(gè)第一時(shí)間間隔到來(lái)時(shí),也是第一個(gè)第二時(shí)間間隔到來(lái)時(shí),CPU向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)TCAM返回的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),自身保存的該第一時(shí)間間隔中每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),統(tǒng)計(jì)三次第一時(shí)間間隔中每個(gè)規(guī)則表項(xiàng)被使用的次數(shù)的總和,按照每個(gè)規(guī)則表項(xiàng)被使用次數(shù)的總和,對(duì)規(guī)則表項(xiàng)進(jìn)行排序,將排序結(jié)果中位置靠前的第一數(shù)量(第I?200)的規(guī)則表項(xiàng)下發(fā)到TCAM中,并將該第一數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間設(shè)置為第二時(shí)間間隔。并將該排序結(jié)果中位置靠前的第二數(shù)量的(第201?1000)的規(guī)則表項(xiàng)下發(fā)到TCAM,將該第二數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔。
[0139]或者,因?yàn)樵诋?dāng)前的第一時(shí)間間隔也統(tǒng)計(jì)了每個(gè)按照第一時(shí)間間更新的規(guī)則表項(xiàng)被使用的次數(shù),因此針對(duì)當(dāng)前該第一時(shí)間時(shí)間間隔的排序結(jié)果中位置靠前的第二數(shù)量(800)的其他規(guī)則表項(xiàng)下發(fā)到TCAM,并將該第二數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔。由于在統(tǒng)計(jì)的過(guò)程中,可能當(dāng)前在第一時(shí)間間隔統(tǒng)計(jì)出的位置靠前的規(guī)則表項(xiàng),與下發(fā)到TCAM中按照第二時(shí)間間隔更新的規(guī)則表項(xiàng)相同,因此在確定當(dāng)前第一時(shí)間間隔排序結(jié)果中位置靠前的第二數(shù)量的規(guī)則表項(xiàng)時(shí),確定的是與第二時(shí)間間隔確定的規(guī)則表項(xiàng)不同的。
[0140]例如,第一數(shù)量為200,第二數(shù)量為800,將排序結(jié)果中位置靠前的第I?200個(gè)規(guī)則表項(xiàng)下發(fā)到TCAM,將該200個(gè)規(guī)則表項(xiàng)的更新時(shí)間設(shè)置為第二時(shí)間間隔,CPU根據(jù)在當(dāng)前第一時(shí)間間隔的排序結(jié)果中確定800個(gè)其他規(guī)則表項(xiàng)下發(fā)到TCAM,將該800個(gè)規(guī)則表項(xiàng)的更新時(shí)間設(shè)置為第一時(shí)間間隔,在確定該800個(gè)其他規(guī)則表項(xiàng)時(shí),按照排序結(jié)果中的位置,從前往后依次查找與第二時(shí)間間隔更新的規(guī)則表項(xiàng)不同的規(guī)則表項(xiàng),查找出800個(gè)規(guī)則表項(xiàng),即為確定的采用第一時(shí)間間隔更新的規(guī)則表項(xiàng)。
[0141]在之后的每個(gè)第一時(shí)間間隔只更新第二數(shù)量的規(guī)則表項(xiàng)即可,在每個(gè)第二時(shí)間間隔更新第一數(shù)量的規(guī)則表項(xiàng)。即使TCAM中保存的按照第二時(shí)間間隔更新的規(guī)則表項(xiàng)為第一數(shù)量,使TCAM中保存的按照第二時(shí)間間隔更新的規(guī)則表項(xiàng)為第二數(shù)量。
[0142]由于在本發(fā)明實(shí)施例中通過(guò)統(tǒng)計(jì)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新,因此可以在不大量占用TCAM空間的情況下,保存較常被用戶使用的規(guī)則表項(xiàng),從而可以降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理。
[0143]圖6為本發(fā)明實(shí)施例提供的一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化裝置結(jié)構(gòu)圖,所述裝置包括:
[0144]確定模塊61,用于根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng);
[0145]次數(shù)更新模塊62,用于采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新;
[0146]表項(xiàng)更新模塊63,用于根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
[0147]為了減小CPU的工作量,進(jìn)一步有效的降低TCAM中保存的規(guī)則表項(xiàng)的數(shù)量,在本發(fā)明實(shí)施例中所述確定模塊61,具體用于將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng);
[0148]所述次數(shù)更新模塊62,具體用于判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng);當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新;當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0149]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),所述確定模塊61,具體用于將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng);
[0150]所述次數(shù)更新模塊62,具體用于判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng);當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新;當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),判斷自身保存的規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值;當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量小于設(shè)定的數(shù)量閾值時(shí),向CPU請(qǐng)求所述規(guī)則表項(xiàng),采用請(qǐng)求的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量不小于設(shè)定的數(shù)量閾值時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
[0151]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),所述表項(xiàng)更新模塊63,具體用于按照設(shè)定的第一時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);根據(jù)接收到的TCAM返回的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及自身保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;將排序結(jié)果中位置靠前的設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中。
[0152]為了能夠提高數(shù)據(jù)包的處理效率,保證TCAM中保存的規(guī)則表項(xiàng)為較常使用的規(guī)則表項(xiàng),減少TCAM與CPU的交互次數(shù),所述表項(xiàng)更新模塊63,具體還用于按照設(shè)定的第二時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);并統(tǒng)計(jì)在第二時(shí)間間隔的時(shí)間段中,按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和;根據(jù)接收到的TCAM返回的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),自身保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及統(tǒng)計(jì)的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和,按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;將排序結(jié)果中位置靠前的第一數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中,并將該第一數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第二時(shí)間間隔;將在當(dāng)前第一時(shí)間間隔中的排序結(jié)果中位置靠前的第二數(shù)量的其他規(guī)則表項(xiàng)下發(fā)到TCAM,并將該組規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍。
[0153]本發(fā)明實(shí)施例提供了一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法及裝置,該方法中交換設(shè)備接收到待處理的數(shù)據(jù)包后,確定對(duì)該數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),并在采用該規(guī)則表項(xiàng)對(duì)數(shù)據(jù)包處理后,對(duì)該規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新。由于在本發(fā)明實(shí)施例中通過(guò)統(tǒng)計(jì)每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),根據(jù)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的規(guī)則表項(xiàng)進(jìn)行更新,因此可以在不大量占用TCAM空間的情況下,保存較常被用戶使用的規(guī)則表項(xiàng),從而可以降低TCAM空間資源的浪費(fèi),保證數(shù)據(jù)包被正常處理。
[0154]在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬系統(tǒng)或者其它設(shè)備固有相關(guān)。各種通用系統(tǒng)也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類系統(tǒng)所要求的結(jié)構(gòu)是顯而易見(jiàn)的。此外,本發(fā)明也不針對(duì)任何特定編程語(yǔ)言。應(yīng)當(dāng)明白,可以利用各種編程語(yǔ)言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對(duì)特定語(yǔ)言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
[0155]在此處所提供的說(shuō)明書中,說(shuō)明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒(méi)有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對(duì)本說(shuō)明書的理解。
[0156]類似地,應(yīng)當(dāng)理解,為了精簡(jiǎn)本公開(kāi)并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對(duì)本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對(duì)其的描述中。然而,并不應(yīng)將該公開(kāi)的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說(shuō),如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開(kāi)的單個(gè)實(shí)施例的所有特征。因此,遵循【具體實(shí)施方式】的權(quán)利要求書由此明確地并入該【具體實(shí)施方式】,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
[0157]本領(lǐng)域那些技術(shù)人員可以理解,可以對(duì)實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們?cè)O(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中??梢园褜?shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過(guò)程或者單元中的至少一些是相互排斥之外,可以采用任何組合對(duì)本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的所有特征以及如此公開(kāi)的任何方法或者設(shè)備的所有過(guò)程或單元進(jìn)行組合。除非另外明確陳述,本說(shuō)明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開(kāi)的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來(lái)代替。
[0158]此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來(lái)使用。
[0159]本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號(hào)處理器(DSP)來(lái)實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲(chǔ)在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號(hào)的形式。這樣的信號(hào)可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號(hào)上提供,或者以任何其他形式提供。
[0160]應(yīng)該注意的是上述實(shí)施例對(duì)本發(fā)明進(jìn)行說(shuō)明而不是對(duì)本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號(hào)之間的任何參考符號(hào)構(gòu)造成對(duì)權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來(lái)實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過(guò)同一個(gè)硬件項(xiàng)來(lái)具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
[0161]顯然,本領(lǐng)域的技術(shù)人員可以對(duì)本發(fā)明進(jìn)行各種改動(dòng)和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動(dòng)和變型在內(nèi)。
【權(quán)利要求】
1.一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化方法,其特征在于,該方法包括: 交換設(shè)備根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng); 采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新; 根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
2.如權(quán)利要求1所述的方法,其特征在于,所述交換設(shè)備根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng)包括: 交換設(shè)備將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng); 所述采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新包括: 所述TCAM判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng); 當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新; 當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
3.如權(quán)利要求1所述的方法,其特征在于,所述交換設(shè)備根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng)包括: 交換設(shè)備將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng); 所述采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新包括: 所述TCAM判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng); 當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新; 當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),判斷自身保存的規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值; 當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量小于設(shè)定的數(shù)量閾值時(shí),向CPU請(qǐng)求所述規(guī)則表項(xiàng),采用請(qǐng)求的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新;當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量不小于設(shè)定的數(shù)量閾值時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
4.如權(quán)利要求1?3任一項(xiàng)所述的方法,其特征在于,所述根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新包括: 交換設(shè)備的CPU按照設(shè)定的第一時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù); 根據(jù)接收到的TCAM返回的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及自身保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序; 將排序結(jié)果中位置靠前的設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中。
5.如權(quán)利要求4所述的方法,其特征在于,所述根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新包括: 交換設(shè)備的CPU按照設(shè)定的第二時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);并 統(tǒng)計(jì)在第二時(shí)間間隔的時(shí)間段中,按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和; 根據(jù)接收到的TCAM返回的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),自身保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及統(tǒng)計(jì)的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和,按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序; 將排序結(jié)果中位置靠前的第一數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中,并將該第一數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第二時(shí)間間隔; 將在當(dāng)前第一時(shí)間間隔中的排序結(jié)果中位置靠前的第二數(shù)量的其他規(guī)則表項(xiàng)下發(fā)到TCAM,并將該第二數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍。
6.一種用于報(bào)文處理的規(guī)則表項(xiàng)的優(yōu)化裝置,其特征在于,所述裝置包括: 確定模塊,用于根據(jù)接收到的待處理的數(shù)據(jù)包,確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng),其中所述規(guī)則表項(xiàng)中保存有對(duì)該數(shù)據(jù)包進(jìn)行處理的各動(dòng)作表項(xiàng); 次數(shù)更新模塊,用于采用確定的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新; 表項(xiàng)更新模塊,用于根據(jù)更新后每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),對(duì)TCAM中保存的各規(guī)則表項(xiàng)進(jìn)行更新。
7.如權(quán)利要求6所述的裝置,其特征在于,所述確定模塊,具體用于將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng); 所述次數(shù)更新模塊,具體用于判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng);當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新;當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
8.如權(quán)利要求6所述的裝置,其特征在于,所述確定模塊,具體用于將接收到的數(shù)據(jù)包發(fā)送到TCAM,TCAM確定對(duì)所述數(shù)據(jù)包進(jìn)行處理的規(guī)則表項(xiàng); 所述次數(shù)更新模塊,具體用于判斷當(dāng)前自身是否保存有確定的所述規(guī)則表項(xiàng);當(dāng)自身保存有所述規(guī)則表項(xiàng)時(shí),采用自身保存的所述規(guī)則表項(xiàng)處理所述數(shù)據(jù)包,并在本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)更新;當(dāng)自身未保存所述規(guī)則表項(xiàng)時(shí),判斷自身保存的規(guī)則表項(xiàng)的數(shù)量是否小于設(shè)定的數(shù)量閾值;當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量小于設(shè)定的數(shù)量閾值時(shí),向CPU請(qǐng)求所述規(guī)則表項(xiàng),采用請(qǐng)求的所述規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新,當(dāng)自身保存的規(guī)則表項(xiàng)的數(shù)量不小于設(shè)定的數(shù)量閾值時(shí),將所述數(shù)據(jù)包發(fā)送到CPU,通過(guò)CPU中保存的規(guī)則表項(xiàng)對(duì)所述數(shù)據(jù)包進(jìn)行處理,并使CPU在其本地對(duì)所述規(guī)則表項(xiàng)被使用的次數(shù)進(jìn)行更新。
9.如權(quán)利要求6?8任一項(xiàng)所述的裝置,其特征在于,所述表項(xiàng)更新模塊,具體用于按照設(shè)定的第一時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);根據(jù)接收到的TCAM返回的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及自身保存的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;將排序結(jié)果中位置靠前的設(shè)定數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM 中。
10.如權(quán)利要求9所述的裝置,其特征在于,所述表項(xiàng)更新模塊,具體還用于按照設(shè)定的第二時(shí)間間隔,向TCAM發(fā)送請(qǐng)求信息,獲取TCAM保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù);并統(tǒng)計(jì)在第二時(shí)間間隔的時(shí)間段中,按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和;根據(jù)接收到的TCAM返回的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),自身保存的按照第二時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)被使用的次數(shù),及統(tǒng)計(jì)的按照第一時(shí)間間隔更新的每個(gè)規(guī)則表項(xiàng)在每個(gè)第一時(shí)間間隔中被使用的次數(shù)的總和,按照被使用的次數(shù)從大到小的順序?qū)γ總€(gè)規(guī)則表項(xiàng)進(jìn)行排序;將排序結(jié)果中位置靠前的第一數(shù)量的規(guī)則表項(xiàng)下發(fā)到TCAM中,并將該第一數(shù)量的規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第二時(shí)間間隔;將在當(dāng)前第一時(shí)間間隔中的排序結(jié)果中位置靠前的第二數(shù)量的其他規(guī)則表項(xiàng)下發(fā)到TCAM,并將該組規(guī)則表項(xiàng)的更新時(shí)間間隔設(shè)置為第一時(shí)間間隔,其中第二時(shí)間間隔為第一時(shí)間間隔的整數(shù)倍。
【文檔編號(hào)】H04L12/751GK104363177SQ201410638579
【公開(kāi)日】2015年2月18日 申請(qǐng)日期:2014年11月6日 優(yōu)先權(quán)日:2014年11月6日
【發(fā)明者】王利峰 申請(qǐng)人:北京東土科技股份有限公司