專利名稱:一種轉(zhuǎn)發(fā)數(shù)據(jù)流的方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)通信領(lǐng)域,特別涉及一種轉(zhuǎn)發(fā)數(shù)據(jù)流的方法和設(shè)備。
背景技術(shù):
IPTV(Interactive Persionality Television,交互式網(wǎng)絡(luò)電視)是指基于IP協(xié)議的電視廣播服務(wù),在全網(wǎng)IP化的趨勢下,主要由IP報文承載此類視頻節(jié)目的多媒體數(shù)據(jù),通過互聯(lián)網(wǎng)傳送給用戶。而這些多媒體數(shù)據(jù)主要是從視頻節(jié)目提供商的服務(wù)器流向廣大家庭用戶的,是一種典型的單點(diǎn)對多點(diǎn)的傳送方式。這種報文傳送方式特別適合采用數(shù)據(jù)流轉(zhuǎn)發(fā)技術(shù)。
數(shù)據(jù)流轉(zhuǎn)發(fā)技術(shù)中比較典型的為組播技術(shù),其中,組播也叫“多播”,是IP報文的一種傳遞方式,根據(jù)組播組地址,實(shí)現(xiàn)IP報文由點(diǎn)到多點(diǎn)的傳遞。在組播應(yīng)用中,使用單一的數(shù)據(jù)流替代多個數(shù)據(jù)流,增加有限帶寬的使用率。同時,更少的數(shù)據(jù)被網(wǎng)關(guān)、橋等路由轉(zhuǎn)發(fā)設(shè)備復(fù)制與前傳,減少數(shù)據(jù)處理時間,提高網(wǎng)絡(luò)多點(diǎn)應(yīng)用的性能。組播報文為數(shù)據(jù)流的一種形式,現(xiàn)介紹如下組播報文格式如下+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|二層頭 | IP頭 | 組播數(shù)據(jù)|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+組播報文IP頭的格式如下0 7 15 23 31+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Vcr | HLg | ToS | Totallength |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+|Identification | Flg | FragmentOffset |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| TTL |Protocol | CheckSum |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Source_IP|+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+| Group_IP |+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
其中,Ver版本字段,占4比特。用來表明IP協(xié)議實(shí)現(xiàn)的版本號,當(dāng)前一般為IPv4,即0100。
Hlg報頭長度字段,占4比特。是頭部占32比特的數(shù)字,包括可選項(xiàng)。普通IP數(shù)據(jù)報(沒有任何選項(xiàng)),該字段的值是5,即160比特=20字節(jié)。此字段最大值為60字節(jié)。
ToS業(yè)務(wù)類型(Type of Service,ToS)字段,占8比特。
Totallength總長度字段,占16比特。指明整個數(shù)據(jù)報的長度(以字節(jié)為單位)。最大長度為65535字節(jié)。
Identification標(biāo)志字段,占16比特。用來唯一地標(biāo)識主機(jī)發(fā)送的每一份數(shù)據(jù)報。通常每發(fā)一份報文,它的值會加1。
Flg標(biāo)志位字段,占3比特。標(biāo)志一份數(shù)據(jù)報是否要求分段。
FragmentOffset段偏移字段,占13比特。如果一份數(shù)據(jù)報要求分段的話,此字段指明該段偏移距原始數(shù)據(jù)報開始的位置。
TTL生存期(Time To Live,TTL)字段,占8比特。用來設(shè)置數(shù)據(jù)報最多可以經(jīng)過的路由器數(shù)。
Protocol協(xié)議字段,占8比特。指明IP層所封裝的上層協(xié)議類型,如ICMP(1)、IGMP(2)、TCP(6)、UDP(17)等。
CheckSum頭部校驗(yàn)和字段,占16比特。內(nèi)容是根據(jù)IP頭部計算得到的校驗(yàn)和碼。計算方法是對頭部中每個16比特進(jìn)行二進(jìn)制反碼求和。
Source_IP源IP地址,占32比特。用來標(biāo)明發(fā)送IP數(shù)據(jù)報文的源主機(jī)地址。
Group_IP組播目的IP地址,占32比特。用來標(biāo)明接收IP報文的目標(biāo)主機(jī)地址。
通常,路由器中的轉(zhuǎn)發(fā)表項(xiàng)由關(guān)鍵字和表項(xiàng)內(nèi)容兩部分組成,用關(guān)鍵字與報文中指定的內(nèi)容進(jìn)行匹配,如果匹配成功,則采用與關(guān)鍵字對應(yīng)的表項(xiàng)內(nèi)容進(jìn)行轉(zhuǎn)發(fā)。表項(xiàng)內(nèi)容的信息包括從哪些出口把報文轉(zhuǎn)發(fā)出去等相關(guān)信息。
關(guān)鍵字的匹配可以是完全匹配或部分匹配,組播報文的轉(zhuǎn)發(fā)是需要完全匹配,也就是組播報文中的“源IP地址(Source_IP)和組播組地址(Group_IP)”與表項(xiàng)關(guān)鍵字中的“源IP地址(Source_IP)和組播組地址(Group_IP)”完全一致,匹配才成功。
當(dāng)某一用戶的計算機(jī)申請加入一個特定的組播組時,通過組播協(xié)議的協(xié)商,負(fù)責(zé)傳遞組播報文的中間路由器會生成一個轉(zhuǎn)發(fā)表項(xiàng),后續(xù)的組播報文根據(jù)這個表項(xiàng)的內(nèi)容進(jìn)行匹配和轉(zhuǎn)發(fā)。通常,把這個轉(zhuǎn)發(fā)表項(xiàng)稱為(S,G)表。其中,該表項(xiàng)中的關(guān)鍵字由組播報文中的源IP地址和組播組地址組成,S代表Source_IP,G代表Group_IP。
路由器能否實(shí)現(xiàn)對組播報文的快速轉(zhuǎn)發(fā),關(guān)鍵在于能否快速匹配到對應(yīng)的(S,G)表項(xiàng)?,F(xiàn)有的匹配算法有如下三種1)樹查找,原理如下表以二叉樹的形式存儲信息,根據(jù)二叉樹的原理,將關(guān)鍵字每一bit都作為一條分支路徑,通過分支遍歷,匹配到與報文指定內(nèi)容完全一致的葉子節(jié)點(diǎn)(葉子表項(xiàng))。
特點(diǎn)占用內(nèi)存少,性能較好,是路由器中表項(xiàng)匹配最常用的方式。但樹查找的性能與關(guān)鍵字的長度成正比,關(guān)鍵字越長,匹配需要的時間就越多。
參見圖1,為現(xiàn)有技術(shù)中樹表的示意圖。報文關(guān)鍵字為001,根據(jù)樹查找原則,找到匹配的分支,根據(jù)該分支,得到對應(yīng)的表項(xiàng)內(nèi)容。
2)靜態(tài)表查找,原理如下將關(guān)鍵字與實(shí)際的物理內(nèi)存一一對應(yīng),通過直接讀取內(nèi)存的方式獲得表項(xiàng)內(nèi)容。
特點(diǎn)查找速度快,但浪費(fèi)內(nèi)存。因?yàn)椴恍枰谋眄?xiàng),也要占用一塊內(nèi)存,所以適合數(shù)量少、關(guān)鍵字短的表項(xiàng)。
參見圖2,為現(xiàn)有技術(shù)中靜態(tài)表的示意圖。報文關(guān)鍵字為001時,根據(jù)該關(guān)鍵字001找到相應(yīng)的內(nèi)存,讀取表項(xiàng)內(nèi)容。同理,報文關(guān)鍵字為111時,根據(jù)該關(guān)鍵字111找到相應(yīng)的內(nèi)存,讀取表項(xiàng)內(nèi)容。
3)動態(tài)鏈表查找,原理如下動態(tài)鏈表采用單向鏈表的形式存儲信息,除尾節(jié)點(diǎn)外,每個節(jié)點(diǎn)都指向下一個節(jié)點(diǎn)的地址,形成一個鏈表,增加的節(jié)點(diǎn)就從尾部加入,不需要的節(jié)點(diǎn)就從鏈表中刪除。匹配的時候,從鏈表的首節(jié)點(diǎn)開始匹配,直到匹配成功或遍歷到鏈表的末尾。
特點(diǎn)查找方式占用內(nèi)存少,但由于每次查找都需要遍歷一遍所有的表項(xiàng),所以,查找性能與鏈表節(jié)點(diǎn)個數(shù)成正比。當(dāng)表項(xiàng)數(shù)量少的時候,性能較高;當(dāng)表項(xiàng)數(shù)量較多的時候,性能較低。比較適合表項(xiàng)有限的情況。
參見圖3,為現(xiàn)有技術(shù)中動態(tài)鏈表的示意圖。根據(jù)關(guān)鍵字查找表項(xiàng)時,從鏈表的首節(jié)點(diǎn)開始匹配,如果匹配不成功,查下一個表項(xiàng),直到找到匹配的節(jié)點(diǎn)為止。
針對不同的轉(zhuǎn)發(fā)表,分別提到了節(jié)點(diǎn)和表項(xiàng),具體為查找靜態(tài)表得到的表項(xiàng),稱為靜態(tài)表項(xiàng)。查找樹表得到的表項(xiàng),稱為葉子表項(xiàng),也稱葉子節(jié)點(diǎn)。鏈表中通常都稱為節(jié)點(diǎn)。
現(xiàn)有技術(shù)中常用的組播報文轉(zhuǎn)發(fā)方式是將源IP地址和組播組地址合在一起作為關(guān)鍵字,進(jìn)行樹搜索,從而得到出口信息。
這種樹搜索技術(shù),關(guān)鍵字的長度與樹搜索的路徑成正比,而搜索的路徑越長,所花費(fèi)的時間也就越長,路由器的轉(zhuǎn)發(fā)性能也就越低。對于IPv4組播報文來說,(S,G)表項(xiàng)的關(guān)鍵字長度為Group_IP的長度32bits加上Source_IP的長度32bits,總共64bits。而普通單播報文只需要查目的IP地址,32bits。相比較而言,如果把Source_IP和Group_IP結(jié)合在一起作為關(guān)鍵字進(jìn)行樹搜索,在轉(zhuǎn)發(fā)組播報文的樹搜索開銷將是轉(zhuǎn)發(fā)單播報文的2倍。
對于IPv6組播報文而言,Source_IP和Group_IP都為128bits,關(guān)鍵字長度更長,樹搜索需要的時間也就越長,轉(zhuǎn)發(fā)性能會進(jìn)一步降低。
當(dāng)基于流轉(zhuǎn)發(fā)的情況下,關(guān)鍵字通常為五元組(源地址,目的地址,源端口號,目的端口號和協(xié)議),有時候甚至是七元組,七元組是在五元組的基礎(chǔ)上包括TOS(Type Of Service,業(yè)務(wù)類型)域和報文的入接口,進(jìn)行樹搜索時,需要匹配的關(guān)鍵字的長度更長,轉(zhuǎn)發(fā)性能更低。
發(fā)明內(nèi)容
為了緩解現(xiàn)有技術(shù)中轉(zhuǎn)發(fā)數(shù)據(jù)流性能較低的問題,本發(fā)明實(shí)施例提供了一種轉(zhuǎn)發(fā)數(shù)據(jù)流的方法和設(shè)備。所述技術(shù)方案如下一種轉(zhuǎn)發(fā)數(shù)據(jù)流的方法,所述方法包括當(dāng)收到數(shù)據(jù)流后,使用所述數(shù)據(jù)流的關(guān)鍵字的一部分作為索引在樹表中查找到對應(yīng)表項(xiàng),根據(jù)所述對應(yīng)表項(xiàng)中的內(nèi)容查找對應(yīng)的動態(tài)鏈表;用所述關(guān)鍵字的其余部分作為索引在動態(tài)鏈表中查找到對應(yīng)節(jié)點(diǎn),在所述對應(yīng)節(jié)點(diǎn)中獲取出接口信息,根據(jù)所述出接口信息轉(zhuǎn)發(fā)所述數(shù)據(jù)流。
本發(fā)明實(shí)施例還提供了一種轉(zhuǎn)發(fā)數(shù)據(jù)流的設(shè)備,所述設(shè)備包括管理模塊,用于生成樹表和動態(tài)鏈表,并關(guān)聯(lián)所述樹表和所述動態(tài)鏈表;樹表表項(xiàng)查找模塊,用于當(dāng)收到數(shù)據(jù)流后,使用所述數(shù)據(jù)流的關(guān)鍵字的一部分作為索引在所述管理模塊生成的樹表中查找到對應(yīng)表項(xiàng);動態(tài)鏈表查找模塊,用于根據(jù)所述樹表表項(xiàng)查找模塊查找到的對應(yīng)表項(xiàng)中的內(nèi)容查找到對應(yīng)的動態(tài)鏈表;轉(zhuǎn)發(fā)模塊,用于所述動態(tài)鏈表查找模塊查找到動態(tài)鏈表后,用所述關(guān)鍵字的其余部分作為索引在動態(tài)鏈表中查找到對應(yīng)節(jié)點(diǎn),在所述對應(yīng)節(jié)點(diǎn)中獲取出接口信息,根據(jù)所述出接口信息轉(zhuǎn)發(fā)所述數(shù)據(jù)流。
本發(fā)明實(shí)施例提供的技術(shù)方案帶來的有益效果是通過使用關(guān)鍵字的一部分進(jìn)行樹查找,降低數(shù)據(jù)流轉(zhuǎn)發(fā)過程中樹查找的索引長度,同時,使用關(guān)鍵字的其余部分進(jìn)行動態(tài)鏈表查找,提高了數(shù)據(jù)流的轉(zhuǎn)發(fā)性能。
圖1是現(xiàn)有技術(shù)中樹表的示意圖;圖2是現(xiàn)有技術(shù)中靜態(tài)表的示意圖;圖3是現(xiàn)有技術(shù)中動態(tài)鏈表的示意圖;圖4是本發(fā)明實(shí)施例提供的轉(zhuǎn)發(fā)數(shù)據(jù)流的方法流程圖;圖5是本發(fā)明實(shí)施例提供的一種具體轉(zhuǎn)發(fā)表示意圖;圖6是本發(fā)明實(shí)施例提供的轉(zhuǎn)發(fā)組播報文的方法流程圖;圖7是本發(fā)明實(shí)施例提供的轉(zhuǎn)發(fā)數(shù)據(jù)流的設(shè)備示意圖。
具體實(shí)施例方式
下面結(jié)合附圖和具體實(shí)施例對本發(fā)明作進(jìn)一步說明,但本發(fā)明不局限于以下實(shí)施例。
本發(fā)明實(shí)施例通過使用數(shù)據(jù)流的關(guān)鍵字的一部分作為樹表的索引進(jìn)行樹表查找,使用關(guān)鍵字的另一部分作為動態(tài)鏈表的索引進(jìn)行動態(tài)鏈表查找,提高查找出接口的速度,進(jìn)而提高轉(zhuǎn)發(fā)數(shù)據(jù)流的性能。
需要轉(zhuǎn)發(fā)的數(shù)據(jù)流的關(guān)鍵字的形式有多種,不同的數(shù)據(jù)流對應(yīng)不同的關(guān)鍵字,例如,有的采用五元組的形式作為關(guān)鍵字,有的采用目的地址與源地址的組合作為關(guān)鍵字,這些關(guān)鍵字都有一個共同的特點(diǎn)——比較長。本實(shí)施例中的轉(zhuǎn)發(fā)表包括樹表和動態(tài)鏈表,將數(shù)據(jù)流的關(guān)鍵字的一部分作為樹表的索引存儲在樹表中,其余的部分作為動態(tài)鏈表的索引存儲在動態(tài)鏈表中,數(shù)據(jù)流的出接口信息存儲在動態(tài)鏈表的表項(xiàng)內(nèi)容中。
參見圖4,為本發(fā)明實(shí)施例提供的一種轉(zhuǎn)發(fā)數(shù)據(jù)流的方法流程圖,該轉(zhuǎn)發(fā)數(shù)據(jù)流的方法包括以下步驟步驟401當(dāng)收到數(shù)據(jù)流后,使用該數(shù)據(jù)流的關(guān)鍵字的一部分作為索引在樹表中查找對應(yīng)表項(xiàng),即用關(guān)鍵字的一部分與樹表的索引值進(jìn)行匹配。
步驟402是否查找成功,如果是,則執(zhí)行步驟403;否則,執(zhí)行步驟406。
步驟403根據(jù)所查到的樹表表項(xiàng)的內(nèi)容查找對應(yīng)的動態(tài)鏈表。
樹表表項(xiàng)的內(nèi)容可以是一個靜態(tài)表的偏移量,也可以是動態(tài)鏈表在內(nèi)存中的地址(即動態(tài)鏈表的首節(jié)點(diǎn)在內(nèi)存中的地址)。當(dāng)為靜態(tài)表的偏移量時,根據(jù)該偏移量找到對應(yīng)的靜態(tài)表項(xiàng),該靜態(tài)表項(xiàng)的內(nèi)容中事先存儲了動態(tài)鏈表首節(jié)點(diǎn)在內(nèi)存中的地址,這樣,根據(jù)這個地址將找到對應(yīng)該數(shù)據(jù)流的動態(tài)鏈表。
步驟404用該數(shù)據(jù)流的關(guān)鍵字的其余部分作為索引在動態(tài)鏈表中是否查找到匹配的節(jié)點(diǎn),如果是,則執(zhí)行步驟405,否則,執(zhí)行步驟406。
步驟405在動態(tài)鏈表的對應(yīng)節(jié)點(diǎn)中獲取出接口信息,根據(jù)這個出接口信息轉(zhuǎn)發(fā)該數(shù)據(jù)流。
步驟406將數(shù)據(jù)流上送控制處理器處理或丟棄。
上述方案中的關(guān)鍵字可以為五元組的源地址、目的地址、源端口、目的端口和協(xié)議,或?yàn)槠咴M的源地址、目的地址、源端口、目的端口、協(xié)議、TOS域和報文的入接口。
為了進(jìn)一步說明轉(zhuǎn)發(fā)數(shù)據(jù)流的整個過程,下面以組播報文為例進(jìn)行說明,組播轉(zhuǎn)發(fā)表項(xiàng)關(guān)鍵字由組播組地址(Group_IP)和源IP地址(Source_IP)組成,轉(zhuǎn)發(fā)表項(xiàng)在路由器上的存儲方式采用組播組地址以樹表形式存儲,組播源地址采用動態(tài)鏈表的形式存儲。參見圖5,為本實(shí)施例提供的一種具體轉(zhuǎn)發(fā)表示意圖,本實(shí)施例中的組播組為Group_A,有三個服務(wù)器能提供這個組播組的視頻服務(wù),IP地址分別為Source_A、Source_B、Source_C。通過組播協(xié)議的一系列協(xié)商,負(fù)責(zé)傳送這個組播報文的路由器得知這個組播報文的關(guān)鍵字為Group_A、Source_A、Source_B和Source_C,于是,路由器的管理模塊負(fù)責(zé)生成了兩個表項(xiàng)一個表項(xiàng)采用樹表的形式,另一個表項(xiàng)采用動態(tài)鏈表的形式。將組播組地址Group_A作為樹表的關(guān)鍵字,對應(yīng)的樹表表項(xiàng)(也稱這個表項(xiàng)為“Token葉子”)內(nèi)容——Token值,作為靜態(tài)表的關(guān)鍵字,查找靜態(tài)表(可以稱為Token靜態(tài)表),對應(yīng)的靜態(tài)表的表項(xiàng)內(nèi)容是動態(tài)鏈表首節(jié)點(diǎn)的內(nèi)存地址。不同的Token值對應(yīng)不同的動態(tài)鏈表,在動態(tài)鏈表中,每個節(jié)點(diǎn)的內(nèi)容包括節(jié)點(diǎn)關(guān)鍵字,用于匹配源IP地址;節(jié)點(diǎn)表項(xiàng)內(nèi)容,包括轉(zhuǎn)發(fā)組播報文的出接口信息;下一節(jié)點(diǎn)地址。
其中,“Token葉子”和對應(yīng)的動態(tài)鏈表的組合是一個組播轉(zhuǎn)發(fā)表項(xiàng)。這個Token值由路由器來管理,只要有一個組播轉(zhuǎn)發(fā)表項(xiàng)(包括Token葉子表項(xiàng)和對應(yīng)的動態(tài)鏈表),就會分配給這個表項(xiàng)一個對應(yīng)的Token值。在路由器當(dāng)前的表項(xiàng)中,每一個Token值都是唯一的。當(dāng)這個組播轉(zhuǎn)發(fā)表項(xiàng)被刪除后,Token就被回收了,當(dāng)其他的轉(zhuǎn)發(fā)表項(xiàng)生成的時候,再次分發(fā)出去。
初始化時,用戶的計算機(jī)向能夠提供所需服務(wù)的服務(wù)器發(fā)送一個請求信息,服務(wù)器根據(jù)用戶的請求,通知沿途的路由器將該用戶的地址加入到該組播組。
參見圖6,為本實(shí)施例提供的轉(zhuǎn)發(fā)組播報文的方法流程圖,轉(zhuǎn)發(fā)組播報文的方法包括以下步驟步驟601當(dāng)路由器收到組播報文后,使用報文中的組播組地址進(jìn)行樹查找,即用組播組地址作為關(guān)鍵字與樹表的表項(xiàng)進(jìn)行匹配。
步驟602判斷是否查找成功,查找成功,則執(zhí)行步驟603;否則,執(zhí)行步驟607。
步驟603從查到的表項(xiàng)中獲取Token值。
步驟604以Token為索引,查找靜態(tài)表,根據(jù)靜態(tài)表中提供的地址信息查找相應(yīng)的動態(tài)鏈表。
一個Token值有可能對應(yīng)一個或多個節(jié)點(diǎn),每個節(jié)點(diǎn)對應(yīng)一個源IP。
步驟605使用報文的源IP地址依次與動態(tài)鏈表節(jié)點(diǎn)中的IP地址進(jìn)行比較,判斷是否完全匹配,如果是,則執(zhí)行步驟506;如果遍歷到節(jié)點(diǎn)末尾仍然不能匹配到相同的IP地址,執(zhí)行步驟607。
步驟606從該匹配節(jié)點(diǎn)中的表項(xiàng)內(nèi)容里獲取出接口信息,將組播報文從該出接口轉(zhuǎn)發(fā)。
步驟607將報文上送控制處理器處理或丟棄,具體根據(jù)報文的配置情況進(jìn)行處理。
由于提供同一個組播組視頻服務(wù)的源IP地址是有限的,在某些應(yīng)用場合下,一個組播組地址只對應(yīng)一個或有限個源IP地址(例如IPTV等視頻組播報文轉(zhuǎn)發(fā)的情況)。所以動態(tài)鏈表中的節(jié)點(diǎn)不會太多,匹配的速度要比樹查找快得多,特別是對動態(tài)鏈表的Key值為128bits的IPv6組播報文非常適用。
參見圖7,為一種轉(zhuǎn)發(fā)數(shù)據(jù)流的設(shè)備示意圖。本實(shí)施例提供了一種轉(zhuǎn)發(fā)數(shù)據(jù)流的設(shè)備,包括管理模塊,用于生成樹表和動態(tài)鏈表,并關(guān)聯(lián)樹表和動態(tài)鏈表;樹表表項(xiàng)查找模塊,用于當(dāng)收到數(shù)據(jù)流后,使用數(shù)據(jù)流的關(guān)鍵字的一部分作為索引在管理模塊生成的樹表中查找到對應(yīng)表項(xiàng);動態(tài)鏈表查找模塊,用于根據(jù)樹表表項(xiàng)查找模塊查找到的對應(yīng)表項(xiàng)中的內(nèi)容查找到對應(yīng)的動態(tài)鏈表;轉(zhuǎn)發(fā)模塊,用于動態(tài)鏈表查找模塊查找到動態(tài)鏈表后,用所述關(guān)鍵字的其余部分作為索引在動態(tài)鏈表中查找到對應(yīng)節(jié)點(diǎn),在對應(yīng)節(jié)點(diǎn)中獲取出接口信息,根據(jù)出接口信息轉(zhuǎn)發(fā)數(shù)據(jù)流。
其中,關(guān)鍵字具體為五元組的源地址、目的地址、源端口、目的端口和協(xié)議;或具體為七元組的源地址、目的地址、源端口、目的端口、協(xié)議、TOS域和報文的入接口;也可以為組播報文的組播組地址和源IP地址。
動態(tài)鏈表查找模塊具體包括靜態(tài)表項(xiàng)查找單元,用于根據(jù)樹表表項(xiàng)查找模塊查找到的對應(yīng)表項(xiàng)中的偏移量查找到對應(yīng)的靜態(tài)表項(xiàng);
動態(tài)鏈表查找單元,用于靜態(tài)表項(xiàng)查找單元查找到靜態(tài)表項(xiàng)后,根據(jù)靜態(tài)表項(xiàng)包含的動態(tài)鏈表在內(nèi)存中的地址找到對應(yīng)的動態(tài)鏈表。
以上實(shí)施例提供的技術(shù)方案,可以通過軟件代碼實(shí)現(xiàn),即通過c語言、c++語言或匯編語言等程序設(shè)計語言實(shí)現(xiàn),這些軟件代碼可以存儲可讀取的介質(zhì)中,例如光盤或硬盤。
本實(shí)施例通過使用樹表和動態(tài)鏈表相結(jié)合的方式存儲數(shù)據(jù)流的轉(zhuǎn)發(fā)信息,降低了匹配速度,提高了數(shù)據(jù)流的轉(zhuǎn)發(fā)性能。
以上所述的實(shí)施例,只是本發(fā)明的較優(yōu)選的具體實(shí)施方式
,本領(lǐng)域的技術(shù)人員在本發(fā)明技術(shù)方案范圍內(nèi)進(jìn)行的通常變化和替換都應(yīng)包含在本發(fā)明的保護(hù)范圍內(nèi)。
權(quán)利要求
1.一種轉(zhuǎn)發(fā)數(shù)據(jù)流的方法,其特征在于,所述方法包括當(dāng)收到數(shù)據(jù)流后,使用所述數(shù)據(jù)流的關(guān)鍵字的一部分作為索引在樹表中查找到對應(yīng)表項(xiàng),根據(jù)所述對應(yīng)表項(xiàng)中的內(nèi)容查找對應(yīng)的動態(tài)鏈表;用所述關(guān)鍵字的其余部分作為索引在動態(tài)鏈表中查找到對應(yīng)節(jié)點(diǎn),在所述對應(yīng)節(jié)點(diǎn)中獲取出接口信息,根據(jù)所述出接口信息轉(zhuǎn)發(fā)所述數(shù)據(jù)流。
2.如權(quán)利要求1所述的轉(zhuǎn)發(fā)數(shù)據(jù)流的方法,其特征在于,所述關(guān)鍵字具體為五元組的源地址、目的地址、源端口、目的端口和協(xié)議;或七元組的源地址、目的地址、源端口、目的端口、協(xié)議、業(yè)務(wù)類型TOS域和報文的入接口。
3.如權(quán)利要求1所述的轉(zhuǎn)發(fā)數(shù)據(jù)流的方法,其特征在于,所述數(shù)據(jù)流為組播報文,相應(yīng)地,所述關(guān)鍵字具體為組播組地址和源IP地址。
4.如權(quán)利要求1所述的轉(zhuǎn)發(fā)數(shù)據(jù)流的方法,其特征在于,所述數(shù)據(jù)流為組播報文,相應(yīng)地,所述關(guān)鍵字的一部分具體為組播組地址,所述關(guān)鍵字的其余部分具體為源IP地址。
5.如權(quán)利要求1至4任一權(quán)利要求所述的轉(zhuǎn)發(fā)數(shù)據(jù)流的方法,其特征在于,所述根據(jù)所述對應(yīng)表項(xiàng)中的內(nèi)容查找到對應(yīng)的動態(tài)鏈表的步驟中的對應(yīng)表項(xiàng)中的內(nèi)容具體為動態(tài)鏈表在內(nèi)存中的地址。
6.如權(quán)利要求1至4任一權(quán)利要求所述的轉(zhuǎn)發(fā)數(shù)據(jù)流的方法,其特征在于,所述根據(jù)所述對應(yīng)表項(xiàng)中的內(nèi)容查找到對應(yīng)的動態(tài)鏈表的步驟具體包括根據(jù)所述對應(yīng)表項(xiàng)中的偏移量查找到對應(yīng)的靜態(tài)表項(xiàng),所述靜態(tài)表項(xiàng)的內(nèi)容包含動態(tài)鏈表在內(nèi)存中的地址,根據(jù)所述地址找到對應(yīng)的動態(tài)鏈表。
7.一種轉(zhuǎn)發(fā)數(shù)據(jù)流的設(shè)備,其特征在于,所述設(shè)備包括管理模塊,用于生成樹表和動態(tài)鏈表,并關(guān)聯(lián)所述樹表和所述動態(tài)鏈表;樹表表項(xiàng)查找模塊,用于當(dāng)收到數(shù)據(jù)流后,使用所述數(shù)據(jù)流的關(guān)鍵字的一部分作為索引在所述管理模塊生成的樹表中查找到對應(yīng)表項(xiàng);動態(tài)鏈表查找模塊,用于根據(jù)所述樹表表項(xiàng)查找模塊查找到的對應(yīng)表項(xiàng)中的內(nèi)容查找到對應(yīng)的動態(tài)鏈表;轉(zhuǎn)發(fā)模塊,用于所述動態(tài)鏈表查找模塊查找到動態(tài)鏈表后,用所述關(guān)鍵字的其余部分作為索引在動態(tài)鏈表中查找到對應(yīng)節(jié)點(diǎn),在所述對應(yīng)節(jié)點(diǎn)中獲取出接口信息,根據(jù)所述出接口信息轉(zhuǎn)發(fā)所述數(shù)據(jù)流。
8.如權(quán)利要求7所述的轉(zhuǎn)發(fā)數(shù)據(jù)流的設(shè)備,其特征在于,所述關(guān)鍵字具體為五元組的源地址、目的地址、源端口、目的端口和協(xié)議;或具體為七元組的源地址、目的地址、源端口、目的端口、協(xié)議、業(yè)務(wù)類型TOS域和報文的入接口。
9.如權(quán)利要求7所述的轉(zhuǎn)發(fā)數(shù)據(jù)流的設(shè)備,其特征在于,所述關(guān)鍵字具體為組播報文的組播組地址和源IP地址。
全文摘要
本發(fā)明提供了一種轉(zhuǎn)發(fā)數(shù)據(jù)流的方法和設(shè)備,屬于網(wǎng)絡(luò)通信領(lǐng)域。為了緩解現(xiàn)有技術(shù)中轉(zhuǎn)發(fā)數(shù)據(jù)流性能較低的問題,本發(fā)明提供了一種轉(zhuǎn)發(fā)數(shù)據(jù)流的方法,包括使用數(shù)據(jù)流的關(guān)鍵字的一部分作為索引在樹表中查找到對應(yīng)表項(xiàng),根據(jù)所述對應(yīng)表項(xiàng)中的內(nèi)容查找對應(yīng)的動態(tài)鏈表;用所述關(guān)鍵字的其余部分作為索引在動態(tài)鏈表中查找到對應(yīng)節(jié)點(diǎn),在所述對應(yīng)節(jié)點(diǎn)中獲取出接口信息,根據(jù)所述出接口信息轉(zhuǎn)發(fā)所述數(shù)據(jù)流。本發(fā)明還提供了一種轉(zhuǎn)發(fā)數(shù)據(jù)流的設(shè)備,包括管理模塊、樹表表項(xiàng)查找模塊、動態(tài)鏈表查找模塊和轉(zhuǎn)發(fā)模塊。本發(fā)明通過使用關(guān)鍵字的一部分進(jìn)行樹查找,使用關(guān)鍵字的其余部分進(jìn)行動態(tài)鏈表查找,提高了數(shù)據(jù)流的轉(zhuǎn)發(fā)性能。
文檔編號H04L29/06GK101047649SQ200710091029
公開日2007年10月3日 申請日期2007年4月5日 優(yōu)先權(quán)日2007年4月5日
發(fā)明者陳驅(qū) 申請人:華為技術(shù)有限公司