本申請(qǐng)涉及網(wǎng)絡(luò)通信
技術(shù)領(lǐng)域:
,特別涉及一種報(bào)文處理方法及裝置。
背景技術(shù):
:在處理報(bào)文的過(guò)程中,網(wǎng)絡(luò)設(shè)備需要根據(jù)接口的配置信息和/或報(bào)文類(lèi)型等對(duì)報(bào)文執(zhí)行各種類(lèi)型的操作,以達(dá)到轉(zhuǎn)發(fā)或業(yè)務(wù)處理等目的,例如,二層轉(zhuǎn)發(fā)、三層轉(zhuǎn)發(fā)、單播轉(zhuǎn)發(fā)、組播轉(zhuǎn)發(fā)、ACL(訪(fǎng)問(wèn)控制列表)匹配業(yè)務(wù)處理等。而且,一般情況下,針對(duì)同一報(bào)文時(shí),不同類(lèi)型的操作是互斥的,例如,當(dāng)對(duì)一報(bào)文執(zhí)行二層轉(zhuǎn)發(fā)時(shí),大多數(shù)情況下就不會(huì)再對(duì)該報(bào)文執(zhí)行三層轉(zhuǎn)發(fā),當(dāng)對(duì)一報(bào)文執(zhí)行單播轉(zhuǎn)發(fā)時(shí),大多數(shù)情況下就不會(huì)再執(zhí)行組播轉(zhuǎn)發(fā)。網(wǎng)絡(luò)設(shè)備對(duì)報(bào)文執(zhí)行不同類(lèi)型的操作,可以通過(guò)查找Hash表的方式來(lái)實(shí)現(xiàn)。Hash表是一種以Hash技術(shù)組織的查找表。在現(xiàn)有技術(shù)中,每一種操作類(lèi)型對(duì)應(yīng)一張Hash表,不同操作類(lèi)型對(duì)應(yīng)的Hash表不同,這樣,網(wǎng)絡(luò)設(shè)備根據(jù)Hash表對(duì)報(bào)文執(zhí)行操作的過(guò)程如下:接收到報(bào)文之后,識(shí)別該報(bào)文需要執(zhí)行的操作類(lèi)型;然后,根據(jù)識(shí)別出的操作類(lèi)型從該報(bào)文中提取出對(duì)應(yīng)的多個(gè)Key(關(guān)鍵)值,對(duì)提取出的多個(gè)關(guān)鍵值進(jìn)行Hash計(jì)算;將計(jì)算結(jié)果作為HashEntry(Hash入口),從與識(shí)別出的操作類(lèi)型對(duì)應(yīng)的Hash表中查找到對(duì)應(yīng)表項(xiàng);最后,根據(jù)查找到的表項(xiàng)中包括的處理結(jié)果信息,對(duì)該報(bào)文執(zhí)行相應(yīng)操作。不同的操作類(lèi)型分別對(duì)應(yīng)一張Hash表,需要為每一張Hash表分配一定的內(nèi)存空間,從而占用了較多的表項(xiàng)空間資源。技術(shù)實(shí)現(xiàn)要素:有鑒于此,本申請(qǐng)?zhí)峁┝艘环N報(bào)文處理方法及裝置。本申請(qǐng)的技術(shù)方案如下:一方面,提供了一種報(bào)文處理方法,包括:在接收到報(bào)文之后,識(shí)別該報(bào)文需要執(zhí)行的操作類(lèi)型,從該報(bào)文中提取關(guān)鍵值并進(jìn)行Hash計(jì)算;以計(jì)算結(jié)果作為Hash入口,從本設(shè)備上的Hash索引表中查找到至少一個(gè)Hash索引表項(xiàng);將識(shí)別出的操作類(lèi)型與該至少一個(gè)Hash索引表項(xiàng)進(jìn)行匹配;若命中一個(gè)Hash索引表項(xiàng),則根據(jù)命中的Hash索引表項(xiàng)對(duì)該報(bào)文進(jìn)行處理。另一方面,還提供了一種報(bào)文處理裝置,包括:接收模塊,用于接收?qǐng)?bào)文;識(shí)別計(jì)算模塊,用于在接收模塊接收到報(bào)文之后,識(shí)別該報(bào)文需要執(zhí)行的操作類(lèi)型,從該報(bào)文中提取關(guān)鍵值并進(jìn)行哈希Hash計(jì)算;表項(xiàng)查找模塊,用于以識(shí)別計(jì)算模塊的計(jì)算結(jié)果作為Hash入口,從本設(shè)備上的Hash索引表中查找到至少一個(gè)Hash索引表項(xiàng);匹配模塊,用于將識(shí)別計(jì)算模塊識(shí)別出的操作類(lèi)型與表項(xiàng)查找模塊查找到的至少一個(gè)Hash索引表項(xiàng)進(jìn)行匹配;報(bào)文處理模塊,用于若匹配模塊命中一個(gè)Hash索引表項(xiàng),則根據(jù)命中的Hash索引表項(xiàng)對(duì)接收模塊接收到的報(bào)文進(jìn)行處理?,F(xiàn)有技術(shù)中,不同操作類(lèi)型分別對(duì)應(yīng)一張Hash表,為了能夠處理不同數(shù)據(jù)流,每一張Hash表中均需要為本設(shè)備能夠處理的所有數(shù)據(jù)流分配對(duì)應(yīng)的內(nèi)存空間用于存儲(chǔ)對(duì)應(yīng)的Hash表項(xiàng),這樣,網(wǎng)絡(luò)設(shè)備需要為每一張Hash表均分配足夠用于存儲(chǔ)所有數(shù)據(jù)流對(duì)應(yīng)的Hash表項(xiàng)的內(nèi)存空間Sum,從而占用了較多的表項(xiàng)空間資源。本申請(qǐng)的上述技術(shù)方案中,在Hash索引表中引入了操作類(lèi)型Type, 可以將現(xiàn)有技術(shù)的不同操作類(lèi)型對(duì)應(yīng)的多個(gè)Hash索引表整合成區(qū)分操作類(lèi)型的一張Hash索引表,該Hash索引表只占用一個(gè)Sum的內(nèi)存空間,從而使得不同操作類(lèi)型復(fù)用同一內(nèi)存空間Sum,節(jié)省了表項(xiàng)空間資源;另外,在Hash索引表中引入了操作類(lèi)型,這樣,每一個(gè)Hash索引表項(xiàng)中只需記錄與操作類(lèi)型對(duì)應(yīng)的關(guān)鍵值Key即可,進(jìn)一步節(jié)省了表項(xiàng)空間資源。附圖說(shuō)明圖1是本申請(qǐng)實(shí)施例的報(bào)文處理方法的流程圖;圖2是本申請(qǐng)實(shí)施例的報(bào)文處理裝置的一種結(jié)構(gòu)示意圖;圖3是本申請(qǐng)實(shí)施例的報(bào)文處理裝置的另一種結(jié)構(gòu)示意圖;圖4是本申請(qǐng)實(shí)施例的報(bào)文處理裝置的又一種結(jié)構(gòu)示意圖;圖5是本申請(qǐng)實(shí)施例的報(bào)文處理裝置的硬件架構(gòu)示意圖。具體實(shí)施方式為了解決現(xiàn)有技術(shù)中存在的占用較多表項(xiàng)空間的問(wèn)題,本申請(qǐng)以下實(shí)施例中提供了一種報(bào)文處理方法,以及一種可以應(yīng)用該方法的報(bào)文處理裝置。本申請(qǐng)以下實(shí)施例可以應(yīng)用于需要通過(guò)查找Hash表對(duì)報(bào)文進(jìn)行處理的網(wǎng)絡(luò)設(shè)備中。網(wǎng)絡(luò)設(shè)備上創(chuàng)建有如表1或表2所示的Hash表。表1Valid處理信息表2ValidType處理信息在表1和表2中,Valid為有效標(biāo)識(shí),用于指示對(duì)應(yīng)表項(xiàng)是否有效。Type為操作類(lèi)型,可以是二層轉(zhuǎn)發(fā)、三層IPv4轉(zhuǎn)發(fā)、三層IPv6轉(zhuǎn)發(fā)、 組播轉(zhuǎn)發(fā)、ACL匹配業(yè)務(wù)等。處理信息可以是處理方式或結(jié)果表指針,當(dāng)處理方式的內(nèi)容較少時(shí),處理信息可直接置為處理方式,即,直接將需要對(duì)報(bào)文執(zhí)行的處理方式放在Hash表中,此時(shí),Hash表的結(jié)構(gòu)如表2所示;當(dāng)處理方式的內(nèi)容較多時(shí),處理信息置為結(jié)果表指針,通過(guò)該結(jié)果表指針可以索引到對(duì)應(yīng)的結(jié)果表中,并從該結(jié)果表中查找到包含有處理方式的結(jié)果表項(xiàng),即,將需要對(duì)報(bào)文執(zhí)行的處理方式放在結(jié)果表中,此時(shí),Hash表的結(jié)構(gòu)如表1或表2所示。為了描述方便,本文中引入了Hash索引表:當(dāng)Hash表中的處理信息為處理方式時(shí),Hash索引表為Hash表,Hash索引表項(xiàng)為包括處理方式的Hash表項(xiàng);當(dāng)Hash表中的處理信息為結(jié)果表指針時(shí),Hash索引表由Hash表和結(jié)果表組成,Hash索引表項(xiàng)為包括結(jié)果表指針的Hash表項(xiàng)。當(dāng)Hash索引表為Hash表時(shí),Hash索引表中包括Type,此時(shí)的Hash索引表的結(jié)構(gòu)如表2所示;當(dāng)Hash索引表由Hash表和結(jié)果表組成時(shí),此時(shí),一種情況是Hash表如表1所示不包括Type,結(jié)果表如表3所示包括Type,另一種情況是Hash表如表2所示包括Type,結(jié)果表如表3所示包括Type。表3ValidType處理方式在表3中,Valid和Type的含義與Hash表一致。另外,本申請(qǐng)實(shí)施例中的Hash表和/或結(jié)果表中還可以包括現(xiàn)有技術(shù)中的Key。Key為關(guān)鍵值,不同Type對(duì)應(yīng)的Key不同,例如,當(dāng)Type是二層轉(zhuǎn)發(fā)時(shí),Key包括:目的MAC(媒體訪(fǎng)問(wèn)控制)地址、源MAC地址、VPN(VirtualPrivateNetwork,虛擬專(zhuān)用網(wǎng)絡(luò))ID(Identity,標(biāo)識(shí));當(dāng)Type是三層IPv4轉(zhuǎn)發(fā)時(shí),Key包括:目的IP(InternetProtocol,因特網(wǎng)協(xié)議)地址、源IP地址、VPNID;當(dāng)Type是三層IPv6轉(zhuǎn)發(fā)時(shí),Key包括:目的IP地址、源IP地址、VPNID、三層協(xié)議號(hào);當(dāng)Type是組播轉(zhuǎn)發(fā)時(shí),Key包括: 目的IP地址、源IP地址、VPNID、目的端口號(hào);當(dāng)Type是ACL(AccessControlList,訪(fǎng)問(wèn)控制列表)匹配業(yè)務(wù)時(shí),Key包括:ACL匹配所需的所有關(guān)鍵值。顯然,上述只是對(duì)不同Type需要提取的Key的舉例,本申請(qǐng)對(duì)此不做限定。Type和Key可以用于解決Hash沖突。假設(shè),對(duì)從一報(bào)文中提取出的關(guān)鍵值進(jìn)行Hash計(jì)算得到的計(jì)算結(jié)果為a,對(duì)從另一報(bào)文中提取出的關(guān)鍵值進(jìn)行Hash計(jì)算得到的計(jì)算結(jié)果也為a,此時(shí)即發(fā)生了Hash沖突,根據(jù)這兩個(gè)報(bào)文生成的Hash索引表項(xiàng)都會(huì)保存到Hash入口為a的內(nèi)存空間中。如圖1所示,本申請(qǐng)實(shí)施例的報(bào)文處理方法包括以下步驟:步驟S102,在接收到報(bào)文之后,識(shí)別該報(bào)文需要執(zhí)行的操作類(lèi)型;具體的,獲取報(bào)文的入接口上的相關(guān)配置信息,通??梢詮慕涌诒碇蝎@取到;根據(jù)獲取到的配置信息以及解析出的報(bào)文相關(guān)內(nèi)容,識(shí)別出該報(bào)文需要執(zhí)行的操作類(lèi)型,例如,操作類(lèi)型(Type)可以是二層轉(zhuǎn)發(fā)、三層IPv4轉(zhuǎn)發(fā)、三層IPv6轉(zhuǎn)發(fā)、組播轉(zhuǎn)發(fā)和ACL匹配業(yè)務(wù)等。以ACL匹配業(yè)務(wù)為例進(jìn)行說(shuō)明,當(dāng)某一接口上配置有至少一個(gè)ACL規(guī)則時(shí),根據(jù)預(yù)設(shè)分類(lèi)規(guī)則將所述至少一個(gè)ACL規(guī)則劃分成至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi),例如,這至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi)可以是二層ACL匹配業(yè)務(wù)子類(lèi)、三層IPv4ACL匹配業(yè)務(wù)子類(lèi)和三層IPv6ACL匹配業(yè)務(wù)子類(lèi),然后,將該接口與這至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi)之間的對(duì)應(yīng)關(guān)系配置到接口表中。這樣,在步驟S102中,在接收到報(bào)文之后,從接口表中查找到與該報(bào)文的入接口對(duì)應(yīng)的至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi),從查找到的至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi)中,確定與該報(bào)文相匹配的ACL匹配業(yè)務(wù)子類(lèi)作為該報(bào)文需要執(zhí)行的操作類(lèi)型,例如,若該報(bào)文是二層報(bào)文,則確定該報(bào)文相匹配的ACL匹配業(yè)務(wù)子類(lèi)為二層ACL匹配業(yè)務(wù)子類(lèi);若該報(bào)文是三層報(bào)文,且該報(bào)文是IPv4報(bào)文,則確定該報(bào)文相匹配的ACL匹配業(yè)務(wù)子類(lèi)為三層IPv4ACL匹配業(yè)務(wù)子類(lèi);若該報(bào)文是三層報(bào)文,且該報(bào)文是IPv6報(bào)文,則確定該報(bào)文相匹配的ACL匹配業(yè)務(wù)子類(lèi)為三層IPv6ACL匹配業(yè)務(wù)子類(lèi)。步驟S104,根據(jù)識(shí)別出的操作類(lèi)型,從該報(bào)文中提取出多個(gè)關(guān)鍵值(Key);例如,當(dāng)操作類(lèi)型是二層轉(zhuǎn)發(fā)時(shí),提取報(bào)文的目的MAC地址、源MAC地址、VPNID;當(dāng)操作類(lèi)型是三層IPv4轉(zhuǎn)發(fā)時(shí),提取報(bào)文的目的IP地址、源IP地址、VPNID;當(dāng)操作類(lèi)型是三層IPv6轉(zhuǎn)發(fā)時(shí),提取報(bào)文的目的IP地址、源IP地址、VPNID、三層協(xié)議號(hào);當(dāng)操作類(lèi)型是組播轉(zhuǎn)發(fā)時(shí),提取報(bào)文的目的IP地址、源IP地址、VPNID、目的端口號(hào);當(dāng)操作類(lèi)型是ACL匹配業(yè)務(wù)時(shí),提取ACL匹配所需的關(guān)鍵值。顯然,上述只是對(duì)不同操作類(lèi)型需要提取的關(guān)鍵值的舉例,本申請(qǐng)對(duì)此不做限定。步驟S106,對(duì)提取出的關(guān)鍵值進(jìn)行Hash計(jì)算;具體的,按照特定算法,對(duì)提取出的關(guān)鍵值進(jìn)行Hash計(jì)算,特定算法例如可以是異或算法、CRC(CyclicRedundancyCheck,循環(huán)冗余校驗(yàn))算法等。步驟S108,以步驟S106中的計(jì)算結(jié)果作為Hash入口,從本設(shè)備上的Hash索引表中查找到至少一個(gè)Hash索引表項(xiàng);由于可能存在Hash沖突,因此同一Hash入口中的Hash索引表項(xiàng)可能有一個(gè)或多個(gè)。具體的,步驟S108中查找到的是至少一個(gè)Hash表項(xiàng),并且,當(dāng)Hash索引表為Hash表時(shí),查找到的Hash表項(xiàng)中包括處理方式;當(dāng)Hash索引表包括Hash表和結(jié)果表時(shí),此時(shí),Hash表和/或結(jié)果表中包括Type,查找到的Hash表項(xiàng)中包括結(jié)果表指針。步驟S110,將識(shí)別出的操作類(lèi)型與該至少一個(gè)Hash索引表項(xiàng)進(jìn)行匹配;步驟S112,判斷是否命中一個(gè)Hash索引表項(xiàng),若是,則執(zhí)行步驟S114,否則,執(zhí)行步驟S116;步驟S114,根據(jù)命中的Hash索引表項(xiàng)對(duì)該報(bào)文進(jìn)行處理;具體的,當(dāng)Hash索引表為Hash表時(shí),此時(shí),Hash表如表2所示包括Type,在步驟S110中,會(huì)將識(shí)別出的操作類(lèi)型與查找到的至少一個(gè)Hash表項(xiàng)進(jìn)行匹配;在步驟S114中,若命中一個(gè)Hash表項(xiàng),則根據(jù)命中的Hash表項(xiàng)中包括的處理方式,對(duì)該報(bào)文進(jìn)行處理?;蛘撸?dāng)Hash索引表包括Hash表和結(jié)果表,并且,Hash表如表1所示不包括Type,結(jié)果表如表3所示包括Type時(shí),在步驟S110中,會(huì)針對(duì)查找到的每一個(gè)Hash表項(xiàng),根據(jù)該Hash表項(xiàng)中包括的結(jié)果表指針進(jìn)行索引,查找到對(duì)應(yīng)的結(jié)果表,然后,根據(jù)識(shí)別出的操作類(lèi)型在查找到的結(jié)果表中匹配結(jié)果表項(xiàng);在步驟S114中,若命中一個(gè)結(jié)果表項(xiàng),則根據(jù)命中的結(jié)果表項(xiàng)中包括的處理方式,對(duì)該報(bào)文進(jìn)行處理。或者,當(dāng)Hash索引表包括Hash表和結(jié)果表,并且,Hash表如表2所示包括Type,結(jié)果表如表3所示包括Type時(shí),在步驟S110中,會(huì)將識(shí)別出的操作類(lèi)型與查找到的至少一個(gè)Hash表項(xiàng)進(jìn)行匹配,若命中一個(gè)Hash表項(xiàng),則根據(jù)命中的Hash表項(xiàng)中包括的結(jié)果表指針進(jìn)行索引,查找到對(duì)應(yīng)的結(jié)果表,然后,根據(jù)識(shí)別出的操作類(lèi)型在查找到的結(jié)果表中匹配結(jié)果表項(xiàng);在步驟S114中,若命中一個(gè)結(jié)果表項(xiàng),則根據(jù)命中的結(jié)果表項(xiàng)中包括的處理方式,對(duì)該報(bào)文進(jìn)行處理。步驟S116,根據(jù)識(shí)別出的操作類(lèi)型,對(duì)該報(bào)文進(jìn)行對(duì)應(yīng)操作,例如,丟棄該報(bào)文,或?qū)⒃搱?bào)文上送控制平面以便根據(jù)該報(bào)文建立Hash索引表項(xiàng)。在進(jìn)行報(bào)文處理時(shí),會(huì)為每種操作類(lèi)型設(shè)置默認(rèn)處理方式;當(dāng)未能匹配到對(duì)應(yīng)的Hash索引表項(xiàng)時(shí),則根據(jù)識(shí)別出的操作類(lèi)型確定默認(rèn)處理方式,并根據(jù)默認(rèn)處理方式進(jìn)行處理。該默認(rèn)處理方式可以包括將報(bào)文上送控制平面以建立新的Hash索引表項(xiàng),以及丟棄該報(bào)文等。具體的,在步驟S116中根據(jù)該報(bào)文建立Hash索引表項(xiàng)的過(guò)程如下:以對(duì)從該報(bào)文中提取出的關(guān)鍵值進(jìn)行Hash計(jì)算得到的計(jì)算結(jié)果作為Hash入口,在Hash表中添加一Hash表項(xiàng),其中,當(dāng)Hash索引表為如表2所示的Hash表時(shí),添加的Hash表項(xiàng)中包括:Valid、Type和處理信息,其中,處理信息置為處理方式;當(dāng)Hash索引表包括:如表1所示的Hash表和如表3所示的結(jié)果表時(shí),添加的Hash表項(xiàng)中包括:Valid和處理信息,其中,處理信息置為結(jié)果表指針;當(dāng)Hash索引表包括:如表2所示的Hash表和如表3所示的結(jié)果表時(shí),添加的Hash表項(xiàng)中包括:Valid、Type和處理信息,其中,處理信息置為結(jié)果表指針?,F(xiàn)有技術(shù)中,不同操作類(lèi)型分別對(duì)應(yīng)一張Hash表,為了能夠處理不同數(shù)據(jù)流,每一張Hash表中均需要為本設(shè)備能夠處理的所有數(shù)據(jù)流分配對(duì)應(yīng)的內(nèi)存空間用于存儲(chǔ)對(duì)應(yīng)的Hash表項(xiàng),這樣,網(wǎng)絡(luò)設(shè)備需要為每一張Hash表均分配足夠用于存儲(chǔ)所有數(shù)據(jù)流對(duì)應(yīng)的Hash表項(xiàng)的內(nèi)存空間Sum,從而占用了較多的表項(xiàng)空間資源。本申請(qǐng)上述實(shí)施例的方法中,在Hash索引表中引入了操作類(lèi)型Type,可以將現(xiàn)有技術(shù)的不同操作類(lèi)型對(duì)應(yīng)的多個(gè)Hash索引表整合成區(qū)分操作類(lèi)型的一張Hash索引表,該Hash索引表只占用一個(gè)Sum的內(nèi)存空間,從而使得不同操作類(lèi)型復(fù)用同一內(nèi)存空間Sum,節(jié)省了表項(xiàng)空間資源;另外,在Hash索引表中引入了操作類(lèi)型,這樣,每一個(gè)Hash索引表項(xiàng)中只需記錄與操作類(lèi)型對(duì)應(yīng)的關(guān)鍵值Key即可,進(jìn)一步節(jié)省了表項(xiàng)空間資源。針對(duì)上述實(shí)施例的方法,本申請(qǐng)實(shí)施例中還提供了一種可以應(yīng)用上述方法的報(bào)文處理裝置,該裝置可以應(yīng)用于需要通過(guò)查找Hash表對(duì)報(bào)文進(jìn)行處理的網(wǎng)絡(luò)設(shè)備中。如圖2所示,該報(bào)文處理裝置中包括以下模塊:接收模塊201、識(shí)別計(jì)算模塊202、表項(xiàng)查找模塊203、匹配模塊204和報(bào)文處理模塊205,其中:接收模塊201,用于接收?qǐng)?bào)文;識(shí)別計(jì)算模塊202,用于在接收模塊201接收到報(bào)文之后,識(shí)別該報(bào)文需要執(zhí)行的操作類(lèi)型,從該報(bào)文中提取關(guān)鍵值并進(jìn)行Hash計(jì)算;表項(xiàng)查找模塊203,用于以識(shí)別計(jì)算模塊202的計(jì)算結(jié)果作為Hash入口,從本設(shè)備上的Hash索引表中查找到至少一個(gè)Hash索引表項(xiàng);匹配模塊204,用于將識(shí)別計(jì)算模塊202識(shí)別出的操作類(lèi)型與表項(xiàng)查找模塊203查找到的至少一個(gè)Hash索引表項(xiàng)進(jìn)行匹配;報(bào)文處理模塊205,用于若匹配模塊204命中一個(gè)Hash索引表項(xiàng),則根據(jù)命中的Hash索引表項(xiàng)對(duì)接收模塊201接收到的報(bào)文進(jìn)行處理。其中,當(dāng)Hash索引表為Hash表時(shí),匹配模塊204具體用于:將識(shí)別計(jì)算模塊202識(shí)別出的操作類(lèi)型與表項(xiàng)查找模塊203查找到的至少一個(gè)Hash表項(xiàng)進(jìn)行匹配;報(bào)文處理模塊205具體用于:若匹配模塊204命中一個(gè)Hash表項(xiàng),則根據(jù)命中的Hash表項(xiàng)中包括的處理方式,對(duì)接收模塊201接收到的報(bào)文進(jìn)行處理。當(dāng)Hash索引表包括:Hash表和結(jié)果表,并且,Hash表中不包括Type,結(jié)果表中包括Type時(shí),匹配模塊204中包括:查找單元和結(jié)果表項(xiàng)匹配單元,其中:查找單元,用于針對(duì)表項(xiàng)查找模塊203查找到的每一個(gè)Hash表項(xiàng),根據(jù)該Hash表項(xiàng)中包括的結(jié)果表指針進(jìn)行索引,查找到對(duì)應(yīng)的結(jié)果表;結(jié)果表項(xiàng)匹配單元,用于根據(jù)識(shí)別計(jì)算模塊202識(shí)別出的操作類(lèi)型在查找單元查找到的結(jié)果表中匹配結(jié)果表項(xiàng);報(bào)文處理模塊205具體用于:若結(jié)果表項(xiàng)匹配單元命中一個(gè)結(jié)果表項(xiàng),則根據(jù)命中的結(jié)果表項(xiàng)中包括的處理方式,對(duì)接收模塊201接收到的報(bào)文進(jìn)行處理。當(dāng)Hash索引表包括:Hash表和結(jié)果表,并且,Hash表和結(jié)果表中均包括Type時(shí),匹配模塊204中包括:Hash表項(xiàng)匹配單元、查找單元和結(jié)果表項(xiàng)匹配單元,其中:Hash表項(xiàng)匹配單元,用于將識(shí)別計(jì)算模塊202識(shí)別出的操作類(lèi)型與表項(xiàng)查找模塊203查找到的至少一個(gè)Hash表項(xiàng)進(jìn)行匹配;查找單元,用于若Hash表項(xiàng)匹配單元命中一個(gè)Hash表項(xiàng),則根據(jù)命中的 Hash表項(xiàng)中包括的結(jié)果表指針進(jìn)行索引,查找到對(duì)應(yīng)的結(jié)果表;結(jié)果表項(xiàng)匹配單元,用于根據(jù)識(shí)別計(jì)算模塊202識(shí)別出的操作類(lèi)型在查找單元查找到的結(jié)果表中匹配結(jié)果表項(xiàng);報(bào)文處理模塊205具體用于:若結(jié)果表項(xiàng)匹配單元命中一個(gè)結(jié)果表項(xiàng),則根據(jù)命中的結(jié)果表項(xiàng)中包括的處理方式,對(duì)接收模塊201接收到的報(bào)文進(jìn)行處理。另外,如圖3所示,該報(bào)文處理裝置中還包括:添加模塊206和報(bào)文丟棄模塊207,其中:添加模塊206,用于若匹配模塊204沒(méi)有命中任一Hash索引表項(xiàng),則在確定需要根據(jù)接收模塊201接收到的報(bào)文建立Hash索引表項(xiàng)時(shí),以識(shí)別計(jì)算模塊202的計(jì)算結(jié)果作為Hash入口,在Hash索引表中添加一包括識(shí)別計(jì)算模塊202識(shí)別出的操作類(lèi)型的Hash索引表項(xiàng);報(bào)文丟棄模塊207,用于若匹配模塊204沒(méi)有命中任一Hash索引表項(xiàng),則在確定需要丟棄接收模塊201接收到的報(bào)文時(shí),將該報(bào)文丟棄。另外,如圖4所示,該報(bào)文處理裝置中還包括:劃分模塊208和接口表配置模塊209,其中,識(shí)別計(jì)算模塊202中包括子類(lèi)查找單元和操作類(lèi)型確定單元;其中:劃分模塊208,用于當(dāng)接口上配置有至少一個(gè)ACL規(guī)則時(shí),根據(jù)預(yù)設(shè)分類(lèi)規(guī)則將這至少一個(gè)ACL規(guī)則劃分成至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi);接口表配置模塊209,用于將該接口與劃分模塊208劃分得到的至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi)之間的對(duì)應(yīng)關(guān)系配置到接口表中;子類(lèi)查找單元,用于在接收模塊201接收到報(bào)文之后,從接口表中查找到與該報(bào)文的入接口對(duì)應(yīng)的至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi);操作類(lèi)型確定單元,用于從子類(lèi)查找單元查找到的至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi)中,確定與接收模塊201接收到的報(bào)文相匹配的ACL匹配業(yè)務(wù)子類(lèi)作為該報(bào)文需要執(zhí)行的操作類(lèi)型。其中,上述至少一個(gè)ACL匹配業(yè)務(wù)子類(lèi)包括:二層ACL匹配業(yè)務(wù)子類(lèi)、三 層IPv4ACL匹配業(yè)務(wù)子類(lèi)和三層IPv6ACL匹配業(yè)務(wù)子類(lèi);則,操作類(lèi)型確定單元具體用于:若接收模塊201接收到的報(bào)文是二層報(bào)文,則確定該報(bào)文相匹配的ACL匹配業(yè)務(wù)子類(lèi)為二層ACL匹配業(yè)務(wù)子類(lèi);若接收模塊201接收到的報(bào)文是三層報(bào)文,且該報(bào)文是IPv4報(bào)文,則確定該報(bào)文相匹配的ACL匹配業(yè)務(wù)子類(lèi)為三層IPv4ACL匹配業(yè)務(wù)子類(lèi);若接收模塊201接收到的報(bào)文是三層報(bào)文,且該報(bào)文是IPv6報(bào)文,則確定該報(bào)文相匹配的ACL匹配業(yè)務(wù)子類(lèi)為三層IPv6ACL匹配業(yè)務(wù)子類(lèi)。本申請(qǐng)實(shí)施例的報(bào)文轉(zhuǎn)發(fā)裝置可以是軟硬件結(jié)合的可編程設(shè)備,圖5給出了該報(bào)文處理裝置的硬件架構(gòu)組成。如圖5所示,該報(bào)文處理裝置中包括:非易失性存儲(chǔ)器,CPU(中央處理器),轉(zhuǎn)發(fā)芯片和內(nèi)存;其中:內(nèi)存,用于存儲(chǔ)指令代碼,當(dāng)所述指令代碼被執(zhí)行時(shí)完成的操作主要為接收模塊、識(shí)別計(jì)算模塊、表項(xiàng)查找模塊、匹配模塊、報(bào)文處理模塊、添加模塊、報(bào)文丟棄模塊、劃分模塊和接口表配置模塊完成的功能,這里不再詳述。CPU,用于與轉(zhuǎn)發(fā)芯片通信,進(jìn)行報(bào)文的收發(fā);用于與內(nèi)存通信,讀取和執(zhí)行內(nèi)存中存儲(chǔ)的所述指令代碼,完成上述報(bào)文處理裝置中的接收模塊、識(shí)別計(jì)算模塊、表項(xiàng)查找模塊、匹配模塊、報(bào)文處理模塊、添加模塊、報(bào)文丟棄模塊、劃分模塊和接口表配置模塊完成的功能,以及對(duì)從轉(zhuǎn)發(fā)芯片上送的報(bào)文的處理;用于與非易失性存儲(chǔ)器通信,讀/寫(xiě)非易失性存儲(chǔ)器中的數(shù)據(jù),包括Hash表、結(jié)果表和接口表。轉(zhuǎn)發(fā)芯片,用于通過(guò)該芯片上的端口連接到其它網(wǎng)絡(luò)設(shè)備,負(fù)責(zé)報(bào)文的收發(fā)處理,具體的,將接收到的報(bào)文上送給CPU進(jìn)行查表處理。非易失性存儲(chǔ)器,用于存儲(chǔ)各種數(shù)據(jù),包括:Hash表、結(jié)果表和接口表。綜上,本申請(qǐng)以上實(shí)施例可以達(dá)到以下技術(shù)效果:現(xiàn)有技術(shù)中,不同操作類(lèi)型分別對(duì)應(yīng)一張Hash表,為了能夠處理不同數(shù)據(jù)流,每一張Hash表中均需要為本設(shè)備能夠處理的所有數(shù)據(jù)流分配對(duì)應(yīng)的內(nèi)存空 間用于存儲(chǔ)對(duì)應(yīng)的Hash表項(xiàng),這樣,網(wǎng)絡(luò)設(shè)備需要為每一張Hash表均分配足夠用于存儲(chǔ)所有數(shù)據(jù)流對(duì)應(yīng)的Hash表項(xiàng)的內(nèi)存空間Sum,從而占用了較多的表項(xiàng)空間資源。本申請(qǐng)上述實(shí)施例的方法中,在Hash索引表中引入了操作類(lèi)型Type,可以將現(xiàn)有技術(shù)的不同操作類(lèi)型對(duì)應(yīng)的多個(gè)Hash索引表整合成區(qū)分操作類(lèi)型的一張Hash索引表,該Hash索引表只占用一個(gè)Sum的內(nèi)存空間,從而使得不同操作類(lèi)型復(fù)用同一內(nèi)存空間Sum,節(jié)省了表項(xiàng)空間資源;另外,在Hash索引表中引入了操作類(lèi)型,這樣,每一個(gè)Hash索引表項(xiàng)中只需記錄與操作類(lèi)型對(duì)應(yīng)的關(guān)鍵值Key即可,進(jìn)一步節(jié)省了表項(xiàng)空間資源。以上所述僅為本申請(qǐng)的較佳實(shí)施例而已,并不用以限制本申請(qǐng),凡在本申請(qǐng)的精神和原則之內(nèi),所做的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本申請(qǐng)保護(hù)的范圍之內(nèi)。當(dāng)前第1頁(yè)1 2 3