一種報文轉(zhuǎn)發(fā)的方法、裝置及系統(tǒng)的制作方法
【專利摘要】本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法、裝置,涉及通信領(lǐng)域,用以提高系統(tǒng)的性能。所述方法,包括:獲取業(yè)務(wù)報文的第一ID,確定所述第一ID標(biāo)識出的查詢階段是否高于在第一ID標(biāo)識出的查詢階段之前,獲取的第二ID標(biāo)識出的查詢階段;若確定出第一ID標(biāo)識出的查詢階段高于在第一ID標(biāo)識出的查詢階段之前,獲取的第二ID標(biāo)識出的查詢階段,則根據(jù)第一ID,確定第一轉(zhuǎn)發(fā)流表;根據(jù)第一ID標(biāo)識出的查詢方式,獲取第一key;根據(jù)第一key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一key相匹配的匹配表項;若確定第一轉(zhuǎn)發(fā)流表中有匹配表項,則在匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)第一處理數(shù)據(jù),處理業(yè)務(wù)報文。
【專利說明】一種報文轉(zhuǎn)發(fā)的方法、裝置及系統(tǒng)
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信領(lǐng)域,尤其涉及一種報文轉(zhuǎn)發(fā)的方法、裝置及系統(tǒng)。
【背景技術(shù)】
[0002]隨著移動互聯(lián)網(wǎng)的發(fā)展,用戶對業(yè)務(wù)的需求越來越多。為了滿足用戶的需求,軟件定義網(wǎng)絡(luò)(Software Defined Networking, SDN)被提出。SDN的核心技術(shù)是利用OpenFlow(開放流)通過將網(wǎng)絡(luò)設(shè)備控制面與轉(zhuǎn)發(fā)面分離開來,從而實現(xiàn)了網(wǎng)絡(luò)流量的靈活控制,為核心網(wǎng)絡(luò)及應(yīng)用的創(chuàng)新提供了良好的平臺。而在轉(zhuǎn)發(fā)平面上,通過硬件的標(biāo)準(zhǔn)化與轉(zhuǎn)發(fā)能力抽象,為控制面提供開放的控制接口,運營商或第三方可以方便的控制轉(zhuǎn)發(fā)設(shè)備,即為用戶可編程,從而可以快速開發(fā)新的業(yè)務(wù)。
[0003]OpenFlow是提供SDN的控制面與轉(zhuǎn)發(fā)面接口的一種協(xié)議,為控制SDN中的轉(zhuǎn)發(fā)設(shè)備提供了一種標(biāo)準(zhǔn)的方式。OpenFlow基于流表實現(xiàn)轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)。
[0004]在現(xiàn)有技術(shù)中,由于每個流表中可以記錄下一個需查詢的流表的標(biāo)識,根據(jù)此標(biāo)識可以查找到下一個流表。但是流表的標(biāo)識只用來標(biāo)識流表的類型,不標(biāo)識查詢階段,為了滿足OpenFlow協(xié)議中只能向后查找的規(guī)定,必須使用額外的機(jī)制保證查找的順序,從而增加了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
【發(fā)明內(nèi)容】
[0005]本發(fā)明的實施例提供一種報文轉(zhuǎn)發(fā)的方法、裝置及系統(tǒng),用以在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并降低轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
[0006]為達(dá)到上述目的,本發(fā)明的實施例采用如下技術(shù)方案:
[0007]第一方面,本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法,包括:獲取業(yè)務(wù)報文的第一標(biāo)識ID,其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式;確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表;根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key ;根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項;若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0008]在第一方面的第一種可能的實現(xiàn)方式中,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID ;所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括:在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ;確定所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段;若確定出所述第三ID標(biāo)識出的查詢階段高于第一ID標(biāo)識出的查詢階段,則根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表;根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ;根據(jù)所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項;若確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0009]結(jié)合第一方面的第一種可能的實現(xiàn)方式,在第一方面的第二種可能的實現(xiàn)方式中,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0010]結(jié)合第一方面,在第一方面的第三種可能的實現(xiàn)方式中,所述第一處理數(shù)據(jù)包括:處理指令;所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括:在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0011]結(jié)合第一方面,或第一方面的第一至第三任一種可能的實現(xiàn)方式,在第一方面的第四種可能的實現(xiàn)方式中,還包括:若確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則將所述業(yè)務(wù)報文發(fā)送至控制器,以使得所述控制器確定所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)流程;接收所述控制器發(fā)送的所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息。
[0012]結(jié)合第一方面,或第一方面的第一至第四任一種可能的實現(xiàn)方式,在第一方面的第五種可能的實現(xiàn)方式中,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0013]第二方面,本發(fā)明實施例提供了一種報文的轉(zhuǎn)發(fā)的方法,包括:獲取所述業(yè)務(wù)報文的第一標(biāo)識ID,其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式;確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表;根據(jù)所述第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一關(guān)鍵字key ;根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項;若確定出所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項;所述新表項中記錄有第一處理數(shù)據(jù);將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。
[0014]在第二方面的第一種可能的實現(xiàn)方式中,在所述第一轉(zhuǎn)發(fā)流表不是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0015]結(jié)合第二方面,在第二方面的第二種可能的實現(xiàn)方式中,在所述第一轉(zhuǎn)發(fā)流表是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:處理指令。
[0016]結(jié)合第二方面,或第二方面的第一或第二種可能的實現(xiàn)方式,在第二方面的第三種可能的實現(xiàn)方式中,在所述獲取業(yè)務(wù)報文的第一標(biāo)識ID之前,還包括:接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文;解析所述業(yè)務(wù)報文,獲取所述業(yè)務(wù)報文的配置信息;所述配置信息中標(biāo)識出轉(zhuǎn)發(fā)所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。
[0017]結(jié)合第二方面的第三種可能的實現(xiàn)方式,在第二方面的第四種可能的實現(xiàn)方式中,所述獲取業(yè)務(wù)報文的第一標(biāo)識ID包括:根據(jù)所述業(yè)務(wù)報文的配置信息,獲取所述業(yè)務(wù)報文的第一標(biāo)識ID。
[0018]結(jié)合第二方面,或第二方面的第一至第四任一種可能的實現(xiàn)方式,在第二方面的第五種可能的實現(xiàn)方式中,所述獲取業(yè)務(wù)報文的第一標(biāo)識ID包括:在第三轉(zhuǎn)發(fā)流表的表項記錄的信息中獲取第一 ID。
[0019]結(jié)合第二方面,或第二方面的第一至第五任一種可能的實現(xiàn)方式,在第二方面的第六種可能的實現(xiàn)方式中,還包括:若確定出所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0020]結(jié)合第二方面的第六種可能的實現(xiàn)方式,在第二方面的第七種可能的實現(xiàn)方式中,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括:在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ;確定所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段;若確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段,則根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表;根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ;根據(jù)所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項;若查找到匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0021]結(jié)合第二方面的第七種可能的實現(xiàn)方式,在第二方面的第八種可能的實現(xiàn)方式中,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0022]結(jié)合第二方面的第六種可能的實現(xiàn)方式,在第二方面的第九種可能的實現(xiàn)方式中,所述第一處理數(shù)據(jù)包括:處理指令;所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括:在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0023]結(jié)合第二方面,或第二方面的第一至第九任一種可能的實現(xiàn)方式,在第二方面的第十種可能的實現(xiàn)方式中,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0024]第三方面,本發(fā)明實施例提供了一種轉(zhuǎn)發(fā)設(shè)備,包括:獲取單元,用于獲取業(yè)務(wù)報文的第一標(biāo)識ID,其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式;確定單元,用于確定所述獲取單元獲取的所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;所述確定單元,還用于若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表;所述獲取單元,還用于根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key ;所述確定單元,還用于根據(jù)所述獲取單元獲取的所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一key相匹配的匹配表項;處理單元,用于在所述確定單元確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項的情況下,在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0025]在第三方面的第一種可能的實現(xiàn)方式中,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID ;所述處理單元,具體用于觸發(fā)所述獲取單元在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ;觸發(fā)所述確定單元確定所述獲取單元獲取的所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段;觸發(fā)所述確定單元在確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段的情況下,根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表;觸發(fā)所述獲取單元根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ;觸發(fā)所述確定單元根據(jù)所述獲取單元獲取的所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項;并在所述確定單元確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0026]結(jié)合第三方面,在第三方面的第二種可能的實現(xiàn)方式中,所述第一處理數(shù)據(jù)包括:處理指令;所述處理單元,具體用于在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0027]結(jié)合第三方面,或第三方面的第一或第二種可能的實現(xiàn)方式,在第三方面的第三種可能的實現(xiàn)方式中,還包括:接收單元;所述處理單元,還用于在所述確定單元確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則將所述業(yè)務(wù)報文發(fā)送至控制器,以使得所述控制器確定所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)流程;所述接收單元,用于接收所述控制器發(fā)送的所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息。
[0028]結(jié)合第三方面,或第三方面的第一至第三任一種可能的實現(xiàn)方式,在第三方面的第四種可能的實現(xiàn)方式中,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0029]第四方面,本發(fā)明實施例提供了一種控制器,包括:獲取單元,用于獲取所述業(yè)務(wù)報文的第一標(biāo)識ID,其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式;確定單元,用于確定所述獲取單元獲取的所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;所述確定單元,還用于若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表;所述獲取單元,還用于根據(jù)所述第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一關(guān)鍵字key ;所述確定單元,還用于根據(jù)所述獲取單元獲取的所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項;處理單元,用于在所述確定單元確定出所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項時,根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項;所述新表項中記錄有第一處理數(shù)據(jù);發(fā)送單元,用于將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。
[0030]在第四方面的第一種可能的實現(xiàn)方式中,在所述第一轉(zhuǎn)發(fā)流表不是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0031]結(jié)合第四方面,在第四方面的第二種可能的實現(xiàn)方式中,在所述第一轉(zhuǎn)發(fā)流表是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:處理指令。
[0032]結(jié)合第四方面,或第四方面的第一或第二種可能的實現(xiàn)方式,在第四方面的第三種可能的實現(xiàn)方式中,還包括:接收單元,用于接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文;所述獲取單元,還用于解析所述接收單元接收的所述業(yè)務(wù)報文,獲取所述業(yè)務(wù)報文的配置信息;所述配置信息中標(biāo)識出轉(zhuǎn)發(fā)所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。
[0033]結(jié)合第四方面的第三種可能的實現(xiàn)方式,在第四方面的第四種可能的實現(xiàn)方式中,所述獲取單元,具體用于根據(jù)所述業(yè)務(wù)報文的配置信息,獲取所述業(yè)務(wù)報文的第一標(biāo)識ID0
[0034]結(jié)合第四方面,或第四方面的第一至第三任一種可能的實現(xiàn)方式,在第四方面的第五種可能的實現(xiàn)方式中,所述獲取單元,具體用于在第三轉(zhuǎn)發(fā)流表的表項記錄的信息中獲取第一 ID。
[0035]結(jié)合第四方面,或第四方面的第一至第五任一種可能的實現(xiàn)方式,在第四方面的第六種可能的實現(xiàn)方式中,所述處理單元,還用于在所述確定單元確定出所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項時,在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0036]結(jié)合第四方面的第六種可能的實現(xiàn)方式,在第四方面的第七種可能的實現(xiàn)方式中,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;所述處理單元,具體用于觸發(fā)所述獲取單元在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ;觸發(fā)所述確定單元確定所述獲取單元獲取的所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段;觸發(fā)所述確定單元在確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段時,根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表;觸發(fā)所述獲取單元根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ;觸發(fā)所述確定單元根據(jù)所述獲取單元獲取的所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項;并在所述確定單元確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0037]結(jié)合第四方面的第六種可能的實現(xiàn)方式,在第四方面的第八種可能的實現(xiàn)方式中,所述第一處理數(shù)據(jù)包括:處理指令;所述處理單元,具體用于在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0038]結(jié)合第四方面,或第四方面的第一至第八任一種可能的實現(xiàn)方式,在第四方面的第九種可能的實現(xiàn)方式中,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0039]第五方面,本發(fā)明實施例中提供了一種報文轉(zhuǎn)發(fā)的系統(tǒng),包括:轉(zhuǎn)發(fā)設(shè)備及控制器;所述轉(zhuǎn)發(fā)設(shè)備為上述實施例所述的轉(zhuǎn)發(fā)設(shè)備;所述控制器為上述實施例所述的控制器。
[0040]本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法、裝置及系統(tǒng),獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。這樣,轉(zhuǎn)發(fā)設(shè)備在接收到業(yè)務(wù)報文時,可以獲取此業(yè)務(wù)報文的第一 ID,從而可以確定第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,在確定了第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,并根據(jù)第一轉(zhuǎn)發(fā)流表進(jìn)行轉(zhuǎn)發(fā)。從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
【專利附圖】
【附圖說明】
[0041]為了更清楚地說明本發(fā)明實施例的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0042]圖1為本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)的方法的流程示意圖;
[0043]圖2為本發(fā)明實施例提供的另一種報文轉(zhuǎn)發(fā)的方法的流程示意圖;
[0044]圖3為本發(fā)明實施例提供的另一種報文轉(zhuǎn)發(fā)的方法的流程示意圖。
[0045]圖4為本發(fā)明實施例提供的一種轉(zhuǎn)發(fā)設(shè)備的功能的示意圖;
[0046]圖5為本發(fā)明實施例提供的另一種轉(zhuǎn)發(fā)設(shè)備的功能的示意圖;
[0047]圖6為本發(fā)明實施例提供的一種控制器的功能的示意圖;
[0048]圖7為本發(fā)明實施例提供的另一種控制器的功能的示意圖;
[0049]圖8為本發(fā)明實施例提供的一種轉(zhuǎn)發(fā)設(shè)備的結(jié)構(gòu)的示意圖;
[0050]圖9為本發(fā)明實施例提供的一種控制器的結(jié)構(gòu)的示意圖;
[0051]圖10為本發(fā)明實施例提供的一種報文轉(zhuǎn)發(fā)的系統(tǒng)的示意圖。
【具體實施方式】
[0052]下面將結(jié)合本發(fā)明實施例中的附圖,對本發(fā)明實施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實施例僅僅是本發(fā)明一部分實施例,而不是全部的實施例?;诒景l(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動前提下所獲得的所有其他實施例,都屬于本發(fā)明保護(hù)的范圍。
[0053]本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法,如圖1所示,包括:
[0054]101、獲取業(yè)務(wù)報文的第一標(biāo)識ID。
[0055]其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式。
[0056]具體的,轉(zhuǎn)發(fā)設(shè)備獲取業(yè)務(wù)報文的第一 ID有兩種情況,具體如下:[0057]若轉(zhuǎn)發(fā)設(shè)備通過入接口接收到業(yè)務(wù)報文,此時轉(zhuǎn)發(fā)設(shè)備需要接解析業(yè)務(wù)報文,從而獲取業(yè)務(wù)報文的第一 ID。此時,轉(zhuǎn)發(fā)設(shè)備獲取的第一 ID是業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā)過程中,與需要查找的第一個轉(zhuǎn)發(fā)流表相關(guān)的ID。
[0058]若轉(zhuǎn)發(fā)設(shè)備在獲取第一 ID之前,已經(jīng)通過轉(zhuǎn)發(fā)流表進(jìn)行了部分轉(zhuǎn)發(fā),此時,轉(zhuǎn)發(fā)設(shè)備可以通過上一個查詢階段的轉(zhuǎn)發(fā)流表獲取第一 ID。
[0059]進(jìn)一步的,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0060]其中,任意匹配查找包括:IPv4 (Internet Protocol Version4,第四版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找和IPv6 (Internet Protocol Version6,第六版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找。
[0061]最長匹配查找包括:IPv4業(yè)務(wù)報文的最長匹配查找和IPv6業(yè)務(wù)報文的最長匹配查找。
[0062]精確匹配查找包括:IPv4業(yè)務(wù)報文的精確匹配查找和IPv6業(yè)務(wù)報文的精確匹配查找。
[0063]需要說明的是,第一 ID標(biāo)出的查詢方式,還可是其他方式,本發(fā)明對此不做限制。
[0064]進(jìn)一步的,ID標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式的方法可以是將ID的第一標(biāo)識位指示業(yè)務(wù)報報文的查詢階段,將ID的第二標(biāo)識位指示查詢方式。
[0065]例如,第一 ID的第一標(biāo)識位為I時,指示出查詢階段為第一查詢階段,第二標(biāo)識位為O時,指示查詢方式為IPv4業(yè)務(wù)報文的任意匹配查找。第二標(biāo)識位為I時,指示查詢方式為IPv6業(yè)務(wù)報文的任意匹配查找.第二標(biāo)識位為2時,指示查詢方式為IPv4業(yè)務(wù)報文的最長匹配查找。第二標(biāo)識位為3時,指示查詢方式為IPv6業(yè)務(wù)報文的最長匹配查找。第二標(biāo)識位為4時,指示查詢方式為IPv4業(yè)務(wù)報文的精確匹配查找。第二標(biāo)識位為5時,指示查詢方式為IPv6業(yè)務(wù)報文的精確匹配查找。第二標(biāo)識位為6時,指示查詢方式為業(yè)務(wù)報文為線性表查找。
[0066]102、確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。
[0067]具體的,轉(zhuǎn)發(fā)設(shè)備在獲取了第一 ID后,可以獲知此第一 ID標(biāo)識出的查詢階段,并將第一 ID標(biāo)識出的查詢階段與在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段進(jìn)行比較,以確定轉(zhuǎn)發(fā)設(shè)備當(dāng)前需要進(jìn)行的查詢階段不是已經(jīng)查詢了的查詢階段。
[0068]需要說明的是,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,即為確定第一 ID標(biāo)識出的查詢階段是否為在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0069]進(jìn)一步的,若轉(zhuǎn)發(fā)設(shè)備通過解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID時,此時轉(zhuǎn)發(fā)設(shè)備并沒有對業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā),則設(shè)置第二 ID標(biāo)識出的查詢階段為空,此時轉(zhuǎn)發(fā)設(shè)備將第一 ID標(biāo)識出的查詢階段一定高于第二 ID標(biāo)識出的查詢階段。
[0070]若轉(zhuǎn)發(fā)設(shè)備通過轉(zhuǎn)發(fā)流表獲取第一 ID,則記錄第一 ID的轉(zhuǎn)發(fā)流表對應(yīng)的ID為第二 ID。此時,轉(zhuǎn)發(fā)設(shè)備需要確定第一 ID標(biāo)識出的查詢階段是否為第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0071]若第一 ID標(biāo)識出的查詢階段是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則轉(zhuǎn)發(fā)設(shè)備可以確定第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。若第一 ID標(biāo)識出的查詢階段不是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則轉(zhuǎn)發(fā)設(shè)備可以確定第一 ID標(biāo)識出的查詢階段不高于第二 ID標(biāo)識出的查詢階段。
[0072]示例性的,假設(shè)業(yè)務(wù)報文需要通過的轉(zhuǎn)發(fā)過程是,流分類,三層轉(zhuǎn)發(fā),二層轉(zhuǎn)發(fā)。流分類為第一查詢階段,三層轉(zhuǎn)發(fā)為第二查詢階段,二層轉(zhuǎn)發(fā)為第三查詢階段。若轉(zhuǎn)發(fā)設(shè)備通過解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID時,第一 ID標(biāo)識出的查詢階段為流分類,即為第一查詢階段。由于轉(zhuǎn)發(fā)設(shè)備通過解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID,此時轉(zhuǎn)發(fā)設(shè)備獲取的第二 ID標(biāo)識出的查詢階段為空,則轉(zhuǎn)發(fā)設(shè)備可以檢測第一 ID標(biāo)識出的查詢階段是否高于第二 ID標(biāo)識出的查詢階段。
[0073]假設(shè)第二 ID標(biāo)識出的查詢階段為流分類,即為第一查詢階段,若轉(zhuǎn)發(fā)設(shè)備獲取的第一 ID標(biāo)識出的查詢階段為三層轉(zhuǎn)發(fā),即為第二查詢階段,則轉(zhuǎn)發(fā)設(shè)備可以確定第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,即為確定第一 ID標(biāo)識出的第二查詢階段是否高于在第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的第一查詢階段。
[0074]103、若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表。
[0075]具體的,轉(zhuǎn)發(fā)設(shè)備在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段后,可以根據(jù)第一 ID,確定出與此
第一 ID相對應(yīng)的第一轉(zhuǎn)發(fā)流表。
[0076]需要說明的是,由于ID可以標(biāo)識出業(yè)務(wù)轉(zhuǎn)發(fā)報文的查詢階段和查詢方式,則第一ID可以標(biāo)識出業(yè)務(wù)報文的第一查詢階段和第一查詢方式。在每個查詢階段中每個查詢方式只對應(yīng)一個轉(zhuǎn)發(fā)流表,所以,可以通過第一 ID唯一確定出第一轉(zhuǎn)發(fā)流表。
[0077]104、根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key。
[0078]具體的,轉(zhuǎn)發(fā)設(shè)備在確定出第一 ID后,根據(jù)第一 ID標(biāo)識出的查詢方式,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key。
[0079]示例性的,若此業(yè)務(wù)報文為IPv4業(yè)務(wù)報文,且第一 ID標(biāo)識出的查詢方式為任意匹配查找,任意匹配查找所需的第一 key為五元組,包括:源IP地址(SrcIP)、目的IP地址(DstIP)、源端口號(SrcPort)、目的端口號(DstPort)和協(xié)議號(Protocol)。轉(zhuǎn)發(fā)設(shè)備確定出第一 ID標(biāo)識出的查詢方式為任意匹配查找時,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key,即為從業(yè)務(wù)報文中獲取作為第一 key的五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號。
[0080]105、根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有匹配表項。
[0081]具體的,轉(zhuǎn)發(fā)設(shè)備在獲取了第一 key后,可以根據(jù)此key查找第一轉(zhuǎn)發(fā)流表,從而可以確定第一轉(zhuǎn)發(fā)流表中是否有匹配表項。
[0082]如上例所述,轉(zhuǎn)發(fā)設(shè)備獲取的第一 key為五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號,則可以根據(jù)五元組查詢第一轉(zhuǎn)發(fā)流表,從而確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的第一 key相匹配的匹配表項。即為確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的五元組相匹配的匹配表項。
[0083]進(jìn)一步的,根據(jù)第一 key查找第一轉(zhuǎn)發(fā)流表,若在第一轉(zhuǎn)發(fā)流表中查找到與第一key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中有匹配表項。若在第一轉(zhuǎn)發(fā)流表中沒有查找到與第一 key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中沒有匹配表項。
[0084]106、若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0085]具體的,轉(zhuǎn)發(fā)設(shè)備在確定出第一轉(zhuǎn)發(fā)流表中有與第一 key相匹配的匹配表項時,可以從匹配表項中獲取第一處理數(shù)據(jù)。其中,若第一轉(zhuǎn)發(fā)流表不是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)中包括轉(zhuǎn)發(fā)業(yè)務(wù)報文時,需要查找的下一個轉(zhuǎn)發(fā)流表對應(yīng)的第三ID。也就是說,第一處理數(shù)據(jù)中包括:標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID,即為第三ID。
[0086]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0087]若第一轉(zhuǎn)發(fā)流表是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)包括:處理指令。
[0088]轉(zhuǎn)發(fā)設(shè)備根據(jù)獲取的第一處理數(shù)據(jù)的內(nèi)容不同,處理業(yè)務(wù)報文的方法不同。
[0089]若轉(zhuǎn)發(fā)設(shè)備中獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID,則所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括:在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ;確定所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段;若確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段,則根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表;根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ;根據(jù)所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項;若查找到匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0090]也就是說,轉(zhuǎn)發(fā)設(shè)備在獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID時,說明轉(zhuǎn)發(fā)設(shè)備需要根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文,則轉(zhuǎn)發(fā)設(shè)備根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文的流程,具體的可以參考轉(zhuǎn)發(fā)設(shè)備根據(jù)第一 ID轉(zhuǎn)發(fā)業(yè)務(wù)報文的過程,在此不再贅述。
[0091]進(jìn)一步的,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0092]其中,第三ID標(biāo)識出的查詢方式可以與第一 ID標(biāo)識出的查詢方式相同。由于第一 ID標(biāo)識出的查詢階段與第三ID標(biāo)識出的查詢階段不同,所以與第一 ID相對應(yīng)的第一轉(zhuǎn)發(fā)流表與第三ID相對應(yīng)的第二轉(zhuǎn)發(fā)流表為不同的轉(zhuǎn)發(fā)流表。若第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同,則說明第一轉(zhuǎn)發(fā)流表與第二轉(zhuǎn)發(fā)流表是在不同查詢階段的具有相同查詢方式的轉(zhuǎn)發(fā)流表。
[0093]進(jìn)一步的,若ID的第一標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢階段,第二標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢方式,則在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位相同。在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式不相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位不相同。[0094]若轉(zhuǎn)發(fā)設(shè)備中獲取的第一處理數(shù)據(jù)包括:處理指令,則所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括:在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0095]也就是說,在轉(zhuǎn)發(fā)設(shè)備獲取的第一處理數(shù)據(jù)包括:處理指令時,第一轉(zhuǎn)發(fā)流表為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,此時,轉(zhuǎn)發(fā)設(shè)備可以根據(jù)獲取的第一處理數(shù)據(jù)包括的處理指令,處理業(yè)務(wù)報文,從而完成業(yè)務(wù)報文的轉(zhuǎn)發(fā)。
[0096]本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法,獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。這樣,轉(zhuǎn)發(fā)設(shè)備在接收到業(yè)務(wù)報文時,可以獲取此業(yè)務(wù)報文的第一 ID,從而可以確定第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,在確定了第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,并根據(jù)第一轉(zhuǎn)發(fā)流表進(jìn)行轉(zhuǎn)發(fā)。從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
[0097]本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法,如圖2所示,包括:
[0098]201、獲取所述業(yè)務(wù)報文的第一標(biāo)識ID。
[0099]其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式。
[0100]具體的,控制器獲取業(yè)務(wù)報文的第一 ID有兩種情況,具體如下:
[0101]控制器可以接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文,并解析業(yè)務(wù)報文,從而可以獲取此業(yè)務(wù)報文的第一 ID,此時,控制器獲取的第一 ID是業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā)過程中,與需要查找的第一個轉(zhuǎn)發(fā)流表相關(guān)的ID。
[0102]若控制器在獲取第一 ID之前,已經(jīng)通過轉(zhuǎn)發(fā)流表進(jìn)行了部分轉(zhuǎn)發(fā),此時,控制器可以通過上一個查詢階段的轉(zhuǎn)發(fā)流表獲取第一 ID。
[0103]需要說明的是,控制設(shè)備中存儲有轉(zhuǎn)發(fā)流表,且與轉(zhuǎn)發(fā)設(shè)備中存儲的轉(zhuǎn)發(fā)流表相同。
[0104]進(jìn)一步的,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0105]其中,任意匹配查找包括:IPv4 (Internet Protocol Version4,第四版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找和IPv6 (Internet Protocol Version6,第六版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找。
[0106]最長匹配查找包括:IPv4業(yè)務(wù)報文的最長匹配查找和IPv6業(yè)務(wù)報文的最長匹配查找。
[0107]精確匹配查找包括:IPv4業(yè)務(wù)報文的精確匹配查找和IPv6業(yè)務(wù)報文的精確匹配查找。
[0108]需要說明的是,第一 ID標(biāo)出的查詢方式,還可是其他方式,本發(fā)明對此不做限制。
[0109]進(jìn)一步的,ID標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式的方法可以是將ID的第一標(biāo)識位指示業(yè)務(wù)報報文的查詢階段,將ID的第二標(biāo)識位指示查詢方式。
[0110]202、確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。
[0111]具體的,控制器在獲取了第一 ID后,可以獲知此第一 ID標(biāo)識出的查詢階段,并將第一 ID標(biāo)識出的查詢階段與在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段進(jìn)行比較,以確定控制器當(dāng)前需要進(jìn)行的查詢階段不是已經(jīng)查詢了的查詢階段。
[0112]需要說明的是,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,即為確定第一 ID標(biāo)識出的查詢階段是否為在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0113]進(jìn)一步的,若控制器通過解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID時,此時控制器并沒有對業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā),則設(shè)置第二 ID標(biāo)識出的查詢階段為空,此時控制器將第一 ID標(biāo)識出的查詢階段一定高于第二 ID標(biāo)識出的查詢階段。
[0114]若控制器通過轉(zhuǎn)發(fā)流表獲取第一 ID,則記錄第一 ID的轉(zhuǎn)發(fā)流表對應(yīng)的ID為第二ID。此時,控制器需要確定第一 ID標(biāo)識出的查詢階段是否為第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0115]若第一 ID標(biāo)識出的查詢階段是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則控制器可以確定第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。若第一 ID標(biāo)識出的查詢階段不是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則控制器可以確定第一 ID標(biāo)識出的查詢階段不高于第二 ID標(biāo)識出的查詢階段。
[0116]203、若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表。
[0117]具體的,控制器在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段后,可以根據(jù)第一 ID,確定出與此第
一ID相對應(yīng)的第一轉(zhuǎn)發(fā)流表。
[0118]需要說明的是,由于ID可以標(biāo)識出業(yè)務(wù)轉(zhuǎn)發(fā)報文的查詢階段和查詢方式,則第一ID可以標(biāo)識出業(yè)務(wù)報文的第一查詢階段和第一查詢方式。在每個查詢階段中每個查詢方式只對應(yīng)一個轉(zhuǎn)發(fā)流表,所以,可以通過第一 ID唯一確定出第一轉(zhuǎn)發(fā)流表。
[0119]204、根據(jù)所述第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一關(guān)鍵字key。
[0120]具體的,控制器在確定出第一 ID后,根據(jù)第一 ID標(biāo)識出的查詢方式,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key。
[0121]示例性的,若此業(yè)務(wù)報文為IPv4業(yè)務(wù)報文,且第一 ID標(biāo)識出的查詢方式為任意匹配查找,任意匹配查找所需的第一 key為五元組,包括:源IP地址(SrcIP)、目的IP地址(DstIP)、源端口號(SrcPort)、目的端口號(DstPort)和協(xié)議號(Protocol)??刂破鞔_定出第一 ID標(biāo)識出的查詢方式為任意匹配查找時,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key,即為從業(yè)務(wù)報文中獲取作為第一 key的五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號。
[0122]205、根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項。
[0123]具體的,控制器在獲取了第一 key后,可以根據(jù)此key查找第一轉(zhuǎn)發(fā)流表,從而可以確定第一轉(zhuǎn)發(fā)流表中是否有匹配表項。
[0124]如上例所述,控制器獲取的第一 key為五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號,則可以根據(jù)五元組查詢第一轉(zhuǎn)發(fā)流表,從而確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的第一 key相匹配的匹配表項。即為確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的五元組相匹配的匹配表項。
[0125]進(jìn)一步的,根據(jù)第一 key查找第一轉(zhuǎn)發(fā)流表,若在第一轉(zhuǎn)發(fā)流表中查找到與第一key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中有匹配表項。若在第一轉(zhuǎn)發(fā)流表中沒有查找到與第一 key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中沒有匹配表項。
[0126]206、若確定出所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項。
[0127]其中,所述新表項中記錄有第一處理數(shù)據(jù)。
[0128]具體的,控制器確定出第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項時,可以在第一轉(zhuǎn)發(fā)流表中建立與第一 key相匹配的新表項,以便后續(xù)接收的業(yè)務(wù)報文可以根據(jù)第一轉(zhuǎn)發(fā)流表中的與第一 key相匹配的匹配表項進(jìn)行轉(zhuǎn)發(fā)。
[0129]進(jìn)一步的,控制器根據(jù)第一轉(zhuǎn)發(fā)流表是否為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表不同,建立新表項的過程不同。具體的,
[0130]在所述第一轉(zhuǎn)發(fā)流表不是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID。
[0131]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0132]具體的,控制器在確定出第一轉(zhuǎn)發(fā)流表的表項中沒有與第一 key相匹配的表項,則說明現(xiàn)有的轉(zhuǎn)發(fā)流表不支持此業(yè)務(wù)報文的轉(zhuǎn)發(fā)。此時,控制器通過解析業(yè)務(wù)報文,獲知業(yè)務(wù)報文的配置信息,從而可以根據(jù)業(yè)務(wù)報文的配置信息,獲知在查找第一轉(zhuǎn)發(fā)流表后,需要進(jìn)行的下一個查詢階段的ID,即為獲知第三ID。控制器在第一轉(zhuǎn)發(fā)流表中建立與第一 key相匹配的匹配表項,并將第三ID作為匹配表項的第一處理數(shù)據(jù),記錄在匹配表項中。
[0133]進(jìn)一步的,第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段。
[0134]在所述第一轉(zhuǎn)發(fā)流表是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:處理指令。
[0135]具體的,控制器在確定出第一轉(zhuǎn)發(fā)流表的表項中沒有與第一 key相匹配的表項,則說明現(xiàn)有的轉(zhuǎn)發(fā)流表不支持此業(yè)務(wù)報文的轉(zhuǎn)發(fā)。此時,控制器根據(jù)業(yè)務(wù)報文,獲知業(yè)務(wù)報文的配置信息,從而可以根據(jù)業(yè)務(wù)報文的配置信息,獲知第一轉(zhuǎn)發(fā)流表是業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表,并獲知處理業(yè)務(wù)報文的處理指令。此時,控制器在第一轉(zhuǎn)發(fā)流表中建立與第一 key相匹配的匹配表項,并將處理指令作為匹配表項的第一處理數(shù)據(jù),記錄在匹配表項中。[0136]207、將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。
[0137]具體的,控制器在第一轉(zhuǎn)發(fā)流表中建立了新表項后,將建立的新表項的相關(guān)信息發(fā)送給轉(zhuǎn)發(fā)設(shè)備,以便轉(zhuǎn)發(fā)設(shè)備可以根據(jù)此新表項,對業(yè)務(wù)報文實現(xiàn)相應(yīng)的轉(zhuǎn)發(fā)處理。
[0138]本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法,控制器獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第
二ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項;所述新表項中記錄有第一處理數(shù)據(jù);將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。這樣,控制器在建立與第一 key相匹配的匹配表項之前,需要先確定獲取的第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,只有在第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,才在檢測出第一轉(zhuǎn)發(fā)流表中沒有與第一 key相匹配的匹配項,建立與第一 key相匹配的匹配表項,并將新建立的匹配表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
[0139]本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法,如圖3所示,包括:
[0140]301、轉(zhuǎn)發(fā)設(shè)備獲取業(yè)務(wù)報文的第一標(biāo)識ID。
[0141]其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式。
[0142]具體的,可參考步驟101,在此不再贅述。
[0143]302、轉(zhuǎn)發(fā)設(shè)備確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。
[0144]具體的,可參考步驟102,在此不再贅述。
[0145]進(jìn)一步的,若轉(zhuǎn)發(fā)設(shè)備確定出第一 ID標(biāo)識出的查詢階段沒有高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,即為轉(zhuǎn)發(fā)設(shè)備確定出第一 ID標(biāo)識出的查詢階段是在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段之前的查詢階段,則為了保證每個查詢階段只查找一次轉(zhuǎn)發(fā)流表,此時轉(zhuǎn)發(fā)設(shè)備可以不再處理此業(yè)務(wù)報文,并向控制器返回錯誤信息。
[0146]303、若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表。
[0147]具體的,可參考步驟103,在此不再贅述。
[0148]304、轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key。
[0149]具體的,可參考步驟104,在此不再贅述。
[0150]305、轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項。
[0151]具體的,可參考步驟105,在此不再贅述。
[0152]需要說明的是,轉(zhuǎn)發(fā)設(shè)備根據(jù)確定的結(jié)構(gòu)不同,執(zhí)行的步驟不同。若轉(zhuǎn)發(fā)設(shè)備確定出第一轉(zhuǎn)發(fā)流表中有與第一 key相匹配的匹配表項,則執(zhí)行步驟306a。若轉(zhuǎn)發(fā)設(shè)備確定出第一轉(zhuǎn)發(fā)流表中沒有與第一 key相匹配的匹配表項,則執(zhí)行步驟306b,307_313b,或執(zhí)行步驟 306b,307-314a。
[0153]306a、若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則轉(zhuǎn)發(fā)設(shè)備在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0154]具體的,可參考步驟106,在此不再贅述。
[0155]306b、若沒有查找到與所述第一 key相匹配的匹配表項,則轉(zhuǎn)發(fā)設(shè)備將所述業(yè)務(wù)報文發(fā)送至控制器,以使得所述控制器確定所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)流程,控制器接收所述轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文。
[0156]具體的,轉(zhuǎn)發(fā)設(shè)備在第一轉(zhuǎn)發(fā)流表中沒有查找到與第一 key相匹配的匹配項時,說明轉(zhuǎn)發(fā)設(shè)備沒有通過第一轉(zhuǎn)發(fā)流表轉(zhuǎn)發(fā)業(yè)務(wù)報文,此時轉(zhuǎn)發(fā)設(shè)備可以將此業(yè)務(wù)報文轉(zhuǎn)發(fā)至控制器,由控制器確定業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。控制器可以接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文。
[0157]307、控制器解析所述業(yè)務(wù)報文,獲取所述業(yè)務(wù)報文的配置信息。
[0158]其中,所述配置信息中標(biāo)識出轉(zhuǎn)發(fā)所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。
[0159]需要說明的是,配置信息中標(biāo)識出轉(zhuǎn)發(fā)所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程,是指配置信息中標(biāo)識出用戶配置的轉(zhuǎn)發(fā)業(yè)務(wù)報文的各個查詢階段,及每個查詢階段中的查詢方式。
[0160]例如,用戶配置出轉(zhuǎn)發(fā)業(yè)務(wù)報文的查詢階段包括三階段:流分類,三層轉(zhuǎn)發(fā)及二層轉(zhuǎn)發(fā),并且配置了流分類階段時的查詢方式為任意匹配查詢;三層轉(zhuǎn)發(fā)的查詢階段時的查詢方式為最長匹配查詢;二層轉(zhuǎn)發(fā)的查詢階段時的查詢方式為精確匹配查詢。此時,配置信息中標(biāo)識出業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中的查詢階段及查詢方式,即為配置信息中標(biāo)識出業(yè)務(wù)報文的至少一個轉(zhuǎn)發(fā)流表對應(yīng)的至少一個的ID。
[0161]需要說明的是,配置信息是控制器在業(yè)務(wù)報文中獲取的??刂破骺梢酝ㄟ^配置信息獲知轉(zhuǎn)發(fā)此業(yè)務(wù)報文所需的轉(zhuǎn)發(fā)流表,即為將各個轉(zhuǎn)發(fā)處理與轉(zhuǎn)發(fā)流表關(guān)聯(lián)起來。
[0162]具體的,控制器在接收到業(yè)務(wù)報文后,解析此業(yè)務(wù)報文,可以獲取到業(yè)務(wù)報文的配置信息,從而可以獲知此業(yè)務(wù)報文需要進(jìn)行的查詢階段及各個查詢階段的查詢方式,即為獲知轉(zhuǎn)發(fā)此業(yè)務(wù)報文需要查找的各個轉(zhuǎn)發(fā)流表。
[0163]308、控制器獲取所述業(yè)務(wù)報文的第一標(biāo)識ID。
[0164]其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式。
[0165]具體的,控制器可以接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文,并解析業(yè)務(wù)報文,從而可以獲取此業(yè)務(wù)報文的第一 ID,此時,控制器獲取的第一 ID是業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā)過程中,與需要查找的第一個轉(zhuǎn)發(fā)流表相關(guān)的ID。即為,所述控制器獲取業(yè)務(wù)報文的第一標(biāo)識ID包括:控制器根據(jù)所述業(yè)務(wù)報文的配置信息,獲取所述業(yè)務(wù)報文的第一標(biāo)識ID。
[0166]若控制器在獲取第一 ID之前,已經(jīng)通過轉(zhuǎn)發(fā)流表進(jìn)行了部分轉(zhuǎn)發(fā),此時,控制器可以通過上一個查詢階段的轉(zhuǎn)發(fā)流表獲取第一 ID。即為,所述控制器獲取業(yè)務(wù)報文的第一標(biāo)識ID包括:控制器在第三轉(zhuǎn)發(fā)流表的表項記錄的信息中獲取第一 ID。
[0167]其中,第三轉(zhuǎn)發(fā)流表是上一個查詢階段的轉(zhuǎn)發(fā)流表,此時第三轉(zhuǎn)發(fā)流表的表項中記錄有第一 ID,控制器可以在第三流表的表項中,獲取第一 ID??蓞⒖疾襟E201。
[0168]需要說明的是,控制設(shè)備中存儲有轉(zhuǎn)發(fā)流表,且與轉(zhuǎn)發(fā)設(shè)備中存儲的轉(zhuǎn)發(fā)流表相同。
[0169]309、控制器確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。
[0170]具體的,可參考步驟202,在此不再贅述。
[0171]310、若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則控制器根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表。
[0172]具體的,可參考步驟203,在此不再贅述。
[0173]311、控制器根據(jù)所述第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一關(guān)鍵字key。
[0174]具體的,可參考步驟204,在此不再贅述。
[0175]312、控制器根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項。
[0176]具體的,可參考步驟205,在此不再贅述。
[0177]需要說明的是,控制器根據(jù)確定的匹配結(jié)果不同,執(zhí)行的步驟不同。若控制器確定出第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則執(zhí)行步驟313a_314a。若控制器確定出第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則執(zhí)行步驟313b。
[0178]313a、若確定出所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則控制器根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項。
[0179]其中,所述新表項中記錄有第一處理數(shù)據(jù)。
[0180]具體的,可參考步驟206,在此不再贅述。
[0181]313b、若確定出所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則控制器在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0182]具體的,控制器在確定出第一轉(zhuǎn)發(fā)流表中有與第一 key相匹配的匹配表項時,可以從匹配表項中獲取第一處理數(shù)據(jù)。其中,若第一轉(zhuǎn)發(fā)流表不是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)中包括轉(zhuǎn)發(fā)業(yè)務(wù)報文時,需要查找的下一個轉(zhuǎn)發(fā)流表對應(yīng)的第三ID。也就是說,第一處理數(shù)據(jù)中包括:標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID,即為第三ID。
[0183]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0184]若第一轉(zhuǎn)發(fā)流表是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)包括:處理指令。
[0185]控制器根據(jù)獲取的第一處理數(shù)據(jù)的內(nèi)容不同,處理業(yè)務(wù)報文的方法不同。
[0186]若控制器中獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID,則所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括:在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ;確定所述第三ID標(biāo)識出的查詢階段是否高于第一ID標(biāo)識出的查詢階段;若確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段,則根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表;根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ;根據(jù)所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項;若查找到匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0187]也就是說,控制器在獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID時,說明轉(zhuǎn)發(fā)設(shè)備需要根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文,則控制器根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文的流程,具體的可以參考控制器根據(jù)第一 ID轉(zhuǎn)發(fā)業(yè)務(wù)報文的過程,在此不再贅述。
[0188]進(jìn)一步的,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0189]其中,第三ID標(biāo)識出的查詢方式可以與第一 ID標(biāo)識出的查詢方式相同。由于第一 ID標(biāo)識出的查詢階段與第三ID標(biāo)識出的查詢階段不同,所以與第一 ID相對應(yīng)的第一轉(zhuǎn)發(fā)流表與第三ID相對應(yīng)的第二轉(zhuǎn)發(fā)流表為不同的轉(zhuǎn)發(fā)流表。若第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同,則說明第一轉(zhuǎn)發(fā)流表與第二轉(zhuǎn)發(fā)流表是在不同查詢階段的具有相同查詢方式的轉(zhuǎn)發(fā)流表。
[0190]進(jìn)一步的,若ID的第一標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢階段,第二標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢方式,則在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位相同。在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式不相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位不相同。
[0191]若控制器中獲取的第一處理數(shù)據(jù)包括:處理指令,則所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括:在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,預(yù)處理所述業(yè)務(wù)報文。
[0192]也就是說,在控制器獲取的第一處理數(shù)據(jù)包括:處理指令時,第一轉(zhuǎn)發(fā)流表為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,此時,控制器可以根據(jù)獲取的第一處理數(shù)據(jù)包括的處理指令,處理業(yè)務(wù)報文,從而完成業(yè)務(wù)報文的轉(zhuǎn)發(fā),這樣,在控制器側(cè)將業(yè)務(wù)報文進(jìn)行了 一次轉(zhuǎn)發(fā)過程,但是控制器并不真正將業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā),只是對業(yè)務(wù)報文進(jìn)行一次預(yù)轉(zhuǎn)發(fā),確定是否可以將業(yè)務(wù)報文轉(zhuǎn)發(fā)出去。只有轉(zhuǎn)發(fā)設(shè)備可以將業(yè)務(wù)報文轉(zhuǎn)發(fā)出去。
[0193]314a、控制器將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。轉(zhuǎn)發(fā)設(shè)備接收所述控制器發(fā)送的所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息。
[0194]具體的,控制器在第一轉(zhuǎn)發(fā)流表中建立了新表項后,將建立的新表項的相關(guān)信息發(fā)送給轉(zhuǎn)發(fā)設(shè)備,以便轉(zhuǎn)發(fā)設(shè)備可以根據(jù)此新表項,對業(yè)務(wù)報文實現(xiàn)相應(yīng)的轉(zhuǎn)發(fā)處理。轉(zhuǎn)發(fā)設(shè)備接收控制器發(fā)送的所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息,并根據(jù)接收的第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息,更新第一轉(zhuǎn)發(fā)流表。
[0195]示例性的,控制器接收到業(yè)務(wù)報文后,解析業(yè)務(wù)報文后,可以獲取此業(yè)務(wù)報文的配置信息,從而獲知業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。若用戶配置出轉(zhuǎn)發(fā)業(yè)務(wù)報文的查詢階段包括三階段:流分類,三層轉(zhuǎn)發(fā)及二層轉(zhuǎn)發(fā),并且配置了流分類階段時的查詢方式為任意匹配查詢;三層轉(zhuǎn)發(fā)的查詢階段時的查詢方式為最長匹配查詢;二層轉(zhuǎn)發(fā)的查詢階段時的查詢方式為精確匹配查詢。此時,配置信息中標(biāo)識出業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中的查詢階段及查詢方式,即為配置信息中標(biāo)識出業(yè)務(wù)報文的至少一個轉(zhuǎn)發(fā)流表對應(yīng)的至少一個的ID??刂破骺梢愿鶕?jù)配置信息,可以獲取業(yè)務(wù)報文的第一 ID,假設(shè)為ID1,且獲取的IDl標(biāo)識的查詢階段為流分類,查詢方式為任意匹配查詢。
[0196]控制器首先確定IDl標(biāo)識出的查詢階段是否高于在所述IDl標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。由于此時第二 ID標(biāo)識出的查詢階段為空,所以控制器確定出IDl標(biāo)識出的查詢階段一定高于第二 ID標(biāo)識出的查詢階段??刂破鞲鶕?jù)IDl確定第一轉(zhuǎn)發(fā)流表,即為控制器在流分類查詢階段中,確定出查詢方式為任意匹配查詢對應(yīng)的轉(zhuǎn)發(fā)流表,假設(shè)為轉(zhuǎn)發(fā)了流表I??刂破鞑⒏鶕?jù)IDl標(biāo)識出的查詢方式即為任意匹配查詢,獲取第一 key。控制器可以根據(jù)第一 key,查詢轉(zhuǎn)發(fā)流表I,確定轉(zhuǎn)發(fā)流表I中是否有匹配表項。若確定出轉(zhuǎn)發(fā)流表I中有匹配的表項,則可以根據(jù)此匹配表項中記錄的信息,且下一個需要查找的轉(zhuǎn)發(fā)流表為三層轉(zhuǎn)發(fā)對應(yīng)的轉(zhuǎn)發(fā)流表2,則獲知的下一個需要查找的轉(zhuǎn)發(fā)流表的ID為轉(zhuǎn)發(fā)流表2對應(yīng)的ID,假設(shè)為ID2。
[0197]控制器根據(jù)轉(zhuǎn)發(fā)流表2對應(yīng)的ID2可以獲知ID2標(biāo)識出的查詢階段為三層轉(zhuǎn)發(fā)。控制器需要先確定ID2標(biāo)識出的查詢階段是否高于IDl標(biāo)識出的查詢階段。由于ID2標(biāo)識出的查詢階段為三層轉(zhuǎn)發(fā),IDl標(biāo)識出的查詢階段為流分類,三層轉(zhuǎn)發(fā)是流分類之后的查詢階段,則控制器確定出ID2標(biāo)識出的查詢階段高于IDl標(biāo)識出的查詢階段,控制器根據(jù)ID2,確定出第二轉(zhuǎn)發(fā)流表,即為控制器在三層轉(zhuǎn)發(fā)查詢階段中,確定出查詢方式為最長匹配查詢對應(yīng)的轉(zhuǎn)發(fā)流表,假設(shè)為轉(zhuǎn)發(fā)了流表2??刂破鞑⒏鶕?jù)ID2標(biāo)識出的查詢方式即為最長匹配查詢,獲取第二 key??刂破骺梢愿鶕?jù)第二 key,查詢轉(zhuǎn)發(fā)流表2,確定轉(zhuǎn)發(fā)流表2中是否有匹配表項。假設(shè),確定出轉(zhuǎn)發(fā)流表2中沒有相匹配的表項,則控制設(shè)備在轉(zhuǎn)發(fā)流表2中建立與第二 key相匹配的新的表項,其中,將下一個查詢階段對應(yīng)的ID,即為ID3作為新表項的第一處理數(shù)據(jù),添加至新表項中。并將轉(zhuǎn)發(fā)流表2中建立的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得轉(zhuǎn)發(fā)設(shè)備根據(jù)此表項的相關(guān)信息,轉(zhuǎn)發(fā)業(yè)務(wù)報文。
[0198]控制設(shè)備在建立完轉(zhuǎn)發(fā)流表2中與第二 key相對應(yīng)的表項后,根據(jù)ID3獲知ID3標(biāo)識出的查詢階段為二層轉(zhuǎn)發(fā)??刂破餍枰却_定ID3標(biāo)識出的查詢階段是否高于ID2標(biāo)識出的查詢階段。由于ID3標(biāo)識出的查詢階段為二層轉(zhuǎn)發(fā),ID2標(biāo)識出的查詢階段為三層轉(zhuǎn)發(fā),二層轉(zhuǎn)發(fā)是三層轉(zhuǎn)發(fā)之后的查詢階段,則控制器確定出ID3標(biāo)識出的查詢階段高于ID2標(biāo)識出的查詢階段,控制器根據(jù)ID3,確定出第三轉(zhuǎn)發(fā)流表,即為控制器在二層轉(zhuǎn)發(fā)查詢階段中,確定出查詢方式為精確匹配查詢對應(yīng)的轉(zhuǎn)發(fā)流表,假設(shè)為轉(zhuǎn)發(fā)了流表3。控制器并根據(jù)ID3標(biāo)識出的查詢方式即為精確匹配查詢,獲取第三key。控制器根據(jù)第三key,查找轉(zhuǎn)發(fā)流表3,確定轉(zhuǎn)發(fā)流表3中是否有與第三key相匹配的表項。假設(shè)確定出轉(zhuǎn)發(fā)流表3中有匹配表項,則轉(zhuǎn)發(fā)流表3中的匹配表項記錄的第一處理數(shù)據(jù)為處理指令,則控制器可以根據(jù)此處理指令,對業(yè)務(wù)報文進(jìn)行處理,這樣在控制器中可以預(yù)先進(jìn)行業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。由于控制器中無法將業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā),則控制器可以在此業(yè)務(wù)報文可以正常轉(zhuǎn)發(fā)的消息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得轉(zhuǎn)發(fā)設(shè)備在接收到業(yè)務(wù)報文時,根據(jù)已存儲的轉(zhuǎn)發(fā)流表,轉(zhuǎn)發(fā)業(yè)務(wù)報文。
[0199]本發(fā)明實施例提供了 一種報文轉(zhuǎn)發(fā)的方法,轉(zhuǎn)發(fā)設(shè)備獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。若確定第一轉(zhuǎn)發(fā)流表中沒有與第一 key相匹配的匹配表項,則將業(yè)務(wù)報文發(fā)送至控制器,由控制器獲取此業(yè)務(wù)報文相關(guān)轉(zhuǎn)發(fā)信息。這樣,轉(zhuǎn)發(fā)設(shè)備在接收到業(yè)務(wù)報文時,可以獲取此業(yè)務(wù)報文的第一 ID,從而可以確定第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,在確定了第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,并根據(jù)第一轉(zhuǎn)發(fā)流表進(jìn)行轉(zhuǎn)發(fā)。從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。并在接收到新的業(yè)務(wù)報文時,可以發(fā)送至控制器,控制器可以根據(jù)新的業(yè)務(wù)報文,在轉(zhuǎn)發(fā)流表中建立相應(yīng)的新表項,并將新建立的轉(zhuǎn)發(fā)流表的表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,使得轉(zhuǎn)發(fā)設(shè)備根據(jù)此表項中記錄的信息處理此新業(yè)務(wù)報文,無需重新編寫轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)流程,進(jìn)一步降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度,從而提高了系統(tǒng)的性能。
[0200]如圖4所示,其為本發(fā)明提供的一種轉(zhuǎn)發(fā)設(shè)備的功能示意圖,參考圖4所示,所述轉(zhuǎn)發(fā)設(shè)備,包括:
[0201]獲取單元401,用于獲取業(yè)務(wù)報文的第一標(biāo)識ID。
[0202]其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式。
[0203]具體的,獲取單元401,具體用于通過入接口接收到業(yè)務(wù)報文,并解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID。此時,獲取的第一 ID是業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā)過程中,與需要查找的第一個轉(zhuǎn)發(fā)流表相關(guān)的ID。
[0204]或者,可以通過上一個查詢階段的轉(zhuǎn)發(fā)流表獲取第一 ID。
[0205]進(jìn)一步的,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0206]其中,任意匹配查找包括:IPv4 (Internet Protocol Version4,第四版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找和IPv6 (Internet Protocol Version6,第六版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找。
[0207]最長匹配查找包括:IPv4業(yè)務(wù)報文的最長匹配查找和IPv6業(yè)務(wù)報文的最長匹配查找。
[0208]精確匹配查找包括:IPv4業(yè)務(wù)報文的精確匹配查找和IPv6業(yè)務(wù)報文的精確匹配查找。
[0209]需要說明的是,第一 ID標(biāo)出的查詢方式,還可是其他方式,本發(fā)明對此不做限制。
[0210]進(jìn)一步的,ID標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式的方法可以是將ID的第一標(biāo)識位指示業(yè)務(wù)報報文的查詢階段,將ID的第二標(biāo)識位指示查詢方式。
[0211]確定單元402,用于確定所述獲取單元401獲取的所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。
[0212]需要說明的是,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,即為確定第一 ID標(biāo)識出的查詢階段是否為在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0213]具體的,所述確定單元402,具體用于在獲取單元401通過解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID時,第二 ID標(biāo)識出的查詢階段為空,確定出第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。
[0214]在獲取單元401通過轉(zhuǎn)發(fā)流表獲取第一 ID,則記錄第一 ID的轉(zhuǎn)發(fā)流表對應(yīng)的ID為第二 ID,則需要確定第一 ID標(biāo)識出的查詢階段是否為第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0215]其中,若第一 ID標(biāo)識出的查詢階段是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則可以確定第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。若第一 ID標(biāo)識出的查詢階段不是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則可以確定第一 ID標(biāo)識出的查詢階段不高于第二 ID標(biāo)識出的查詢階段。
[0216]所述確定單元402,還用于若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定
第一轉(zhuǎn)發(fā)流表。
[0217]需要說明的是,由于ID可以標(biāo)識出業(yè)務(wù)轉(zhuǎn)發(fā)報文的查詢階段和查詢方式,則第一ID可以標(biāo)識出業(yè)務(wù)報文的第一查詢階段和第一查詢方式。在每個查詢階段中每個查詢方式只對應(yīng)一個轉(zhuǎn)發(fā)流表,所以,可以通過第一 ID唯一確定出第一轉(zhuǎn)發(fā)流表。
[0218]所述獲取單元401,還用于根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key。
[0219]具體的,所述獲取單元401,具體用于在獲取第一 ID后,根據(jù)第一 ID標(biāo)識出的查詢方式,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key。
[0220]示例性的,若此業(yè)務(wù)報文為IPv4業(yè)務(wù)報文,且第一 ID標(biāo)識出的查詢方式為任意匹配查找,任意匹配查找所需的第一 key為五元組,包括:源IP地址(SrcIP)、目的IP地址(DstIP)、源端口號(SrcPort)、目的端口號(DstPort)和協(xié)議號(Protocol)。獲取單元401確定出第一 ID標(biāo)識出的查詢方式為任意匹配查找時,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key,即為從業(yè)務(wù)報文中獲取作為第一 key的五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號。
[0221]所述確定單元402,還用于根據(jù)所述獲取單元401獲取的所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項。
[0222]如上例所述,確定單元402獲取的第一 key為五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號,則可以根據(jù)五元組查詢第一轉(zhuǎn)發(fā)流表,從而確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的第一 key相匹配的匹配表項。即為確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的五元組相匹配的匹配表項。
[0223]進(jìn)一步的,根據(jù)第一 key查找第一轉(zhuǎn)發(fā)流表,若在第一轉(zhuǎn)發(fā)流表中查找到與第一key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中有匹配表項。若在第一轉(zhuǎn)發(fā)流表中沒有查找到與第一 key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中沒有匹配表項。
[0224]處理單元403,用于在所述確定單元402確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一key相匹配的匹配表項的情況下,在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。[0225]具體的,若第一轉(zhuǎn)發(fā)流表不是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)中包括轉(zhuǎn)發(fā)業(yè)務(wù)報文時,需要查找的下一個轉(zhuǎn)發(fā)流表對應(yīng)的第三ID。也就是說,第一處理數(shù)據(jù)中包括:標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID,即為第三ID。
[0226]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0227]若第一轉(zhuǎn)發(fā)流表是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)包括:處理指令。
[0228]處理單元403根據(jù)獲取的第一處理數(shù)據(jù)的不同,對業(yè)務(wù)報文的處理動作也不同。
[0229]所述處理單元403,具體用于若獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID,則觸發(fā)所述獲取單元401在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID。觸發(fā)所述確定單元402確定所述獲取單元401獲取的所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段。觸發(fā)所述確定單元402在確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段的情況下,根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表。觸發(fā)所述獲取單元401根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key。觸發(fā)所述確定單元402根據(jù)所述獲取單元401獲取的所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項。并在所述確定單元402確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0230]也就是說,處理單元403在獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID時,說明需要根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文,則處理單元403觸發(fā)根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文的流程,具體的可以參考根據(jù)第一 ID轉(zhuǎn)發(fā)業(yè)務(wù)報文的過程,在此不再贅述。
[0231]進(jìn)一步的,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0232]其中,第三ID標(biāo)識出的查詢方式可以與第一 ID標(biāo)識出的查詢方式相同。由于第一 ID標(biāo)識出的查詢階段與第三ID標(biāo)識出的查詢階段不同,所以與第一 ID相對應(yīng)的第一轉(zhuǎn)發(fā)流表與第三ID相對應(yīng)的第二轉(zhuǎn)發(fā)流表為不同的轉(zhuǎn)發(fā)流表。若第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同,則說明第一轉(zhuǎn)發(fā)流表與第二轉(zhuǎn)發(fā)流表是在不同查詢階段的具有相同查詢方式的轉(zhuǎn)發(fā)流表。
[0233]進(jìn)一步的,若ID的第一標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢階段,第二標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢方式,則在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位相同。在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式不相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位不相同。
[0234]若獲取的第一處理數(shù)據(jù)包括:處理指令,則在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0235]也就是說,處理單元403在獲取的第一處理數(shù)據(jù)包括:處理指令時,第一轉(zhuǎn)發(fā)流表為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,此時,處理單元403可以根據(jù)獲取的第一處理數(shù)據(jù)包括的處理指令,處理業(yè)務(wù)報文,從而完成業(yè)務(wù)報文的轉(zhuǎn)發(fā)。
[0236]進(jìn)一步的,所述轉(zhuǎn)發(fā)設(shè)備,如圖5所示,還包括:接收單元404。
[0237]其中,所述處理單元404,還用于在所述確定單元402確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則將所述業(yè)務(wù)報文發(fā)送至控制器,以使得所述控制器確定所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)流程。
[0238]所述接收單元404,用于接收所述控制器發(fā)送的所述第一轉(zhuǎn)發(fā)流表的新表項的相
關(guān)信息。
[0239]本發(fā)明實施例提供了一種轉(zhuǎn)發(fā)設(shè)備,獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。這樣,轉(zhuǎn)發(fā)設(shè)備在接收到業(yè)務(wù)報文時,可以獲取此業(yè)務(wù)報文的第一 ID,從而可以確定第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,在確定了第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,并根據(jù)第一轉(zhuǎn)發(fā)流表進(jìn)行轉(zhuǎn)發(fā)。從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
[0240]如圖6所示,其為本發(fā)明提供的一種控制器的功能示意圖,參考圖6所示,所述控制器,包括:
[0241]獲取單元601,用于獲取所述業(yè)務(wù)報文的第一標(biāo)識ID。
[0242]其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式。
[0243]具體的,獲取單元601,具體用于通過入接口接收到業(yè)務(wù)報文,并解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID。此時,獲取的第一 ID是業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā)過程中,與需要查找的第一個轉(zhuǎn)發(fā)流表相關(guān)的ID。
[0244]或者,可以通過上一個查詢階段的轉(zhuǎn)發(fā)流表獲取第一 ID。
[0245]進(jìn)一步的,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0246]其中,任意匹配查找包括:IPv4 (Internet Protocol Version4,第四版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找和IPv6 (Internet Protocol Version6,第六版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找。
[0247]最長匹配查找包括:IPv4業(yè)務(wù)報文的最長匹配查找和IPv6業(yè)務(wù)報文的最長匹配查找。
[0248]精確匹配查找包括:IPv4業(yè)務(wù)報文的精確匹配查找和IPv6業(yè)務(wù)報文的精確匹配查找。
[0249]需要說明的是,第一 ID標(biāo)出的查詢方式,還可是其他方式,本發(fā)明對此不做限制。
[0250]進(jìn)一步的,ID標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式的方法可以是將ID的第一標(biāo)識位指示業(yè)務(wù)報報文的查詢階段,將ID的第二標(biāo)識位指示查詢方式。
[0251]確定單元602,用于確定所述獲取單元601獲取的所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。[0252]需要說明的是,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,即為確定第一 ID標(biāo)識出的查詢階段是否為在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0253]具體的,所述確定單元602,具體用于在獲取單元601通過解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID時,第二 ID標(biāo)識出的查詢階段為空,確定出第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。
[0254]在獲取單元601通過轉(zhuǎn)發(fā)流表獲取第一 ID,則記錄第一 ID的轉(zhuǎn)發(fā)流表對應(yīng)的ID為第二 ID,則需要確定第一 ID標(biāo)識出的查詢階段是否為第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0255]其中,若第一 ID標(biāo)識出的查詢階段是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則可以確定第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。若第一 ID標(biāo)識出的查詢階段不是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則可以確定第一 ID標(biāo)識出的查詢階段不高于第二 ID標(biāo)識出的查詢階段。
[0256]所述確定單元602,還用于若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定
第一轉(zhuǎn)發(fā)流表。
[0257]需要說明的是,由于ID可以標(biāo)識出業(yè)務(wù)轉(zhuǎn)發(fā)報文的查詢階段和查詢方式,則第一ID可以標(biāo)識出業(yè)務(wù)報文的第一查詢階段和第一查詢方式。在每個查詢階段中每個查詢方式只對應(yīng)一個轉(zhuǎn)發(fā)流表,所以,可以通過第一 ID唯一確定出第一轉(zhuǎn)發(fā)流表。
[0258]所述獲取單元601,還用于根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key。
[0259]具體的,所述獲取單元601,具體用于在獲取第一 ID后,根據(jù)第一 ID標(biāo)識出的查詢方式,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key。
[0260]示例性的,若此業(yè)務(wù)報文為IPv4業(yè)務(wù)報文,且第一 ID標(biāo)識出的查詢方式為任意匹配查找,任意匹配查找所需的第一 key為五元組,包括:源IP地址(SrcIP)、目的IP地址(DstIP)、源端口號(SrcPort)、目的端口號(DstPort)和協(xié)議號(Protocol)。獲取單元401確定出第一 ID標(biāo)識出的查詢方式為任意匹配查找時,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key,即為從業(yè)務(wù)報文中獲取作為第一 key的五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號。
[0261]所述確定單元602,還用于根據(jù)所述獲取單元601獲取的所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項。
[0262]如上例所述,確定單元602獲取的第一 key為五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號,則可以根據(jù)五元組查詢第一轉(zhuǎn)發(fā)流表,從而確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的第一 key相匹配的匹配表項。即為確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的五元組相匹配的匹配表項。
[0263]進(jìn)一步的,根據(jù)第一 key查找第一轉(zhuǎn)發(fā)流表,若在第一轉(zhuǎn)發(fā)流表中查找到與第一key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中有匹配表項。若在第一轉(zhuǎn)發(fā)流表中沒有查找到與第一 key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中沒有匹配表項。[0264]處理單元603,用于在所述確定單元602確定出所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項時,根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項。
[0265]其中,所述新表項中記錄有第一處理數(shù)據(jù)。
[0266]具體的,處理單元603根據(jù)第一轉(zhuǎn)發(fā)流表是否為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表不同,建立新表項的過程不同。其中,
[0267]在所述第一轉(zhuǎn)發(fā)流表不是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID。
[0268]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0269]具體的,處理單元603在確定出第一轉(zhuǎn)發(fā)流表的表項中沒有與第一 key相匹配的表項,則說明現(xiàn)有的轉(zhuǎn)發(fā)流表不支持此業(yè)務(wù)報文的轉(zhuǎn)發(fā)。此時,獲取單元601通過解析業(yè)務(wù)報文,獲知業(yè)務(wù)報文的配置信息,從而可以根據(jù)業(yè)務(wù)報文的配置信息,獲知在查找第一轉(zhuǎn)發(fā)流表后,需要進(jìn)行的下一個查詢階段的ID,即為獲知第三ID。處理單元603在第一轉(zhuǎn)發(fā)流表中建立與第一 key相匹配的匹配表項,并將第三ID作為匹配表項的第一處理數(shù)據(jù),記錄在匹配表項中。
[0270]進(jìn)一步的,第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段。
[0271]在所述第一轉(zhuǎn)發(fā)流表是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:處理指令。
[0272]具體的處理單元603在確定出第一轉(zhuǎn)發(fā)流表的表項中沒有與第一 key相匹配的表項,則說明現(xiàn)有的轉(zhuǎn)發(fā)流表不支持此業(yè)務(wù)報文的轉(zhuǎn)發(fā)。此時,獲取單元601根據(jù)業(yè)務(wù)報文,獲知業(yè)務(wù)報文的配置信息,從而可以根據(jù)業(yè)務(wù)報文的配置信息,獲知第一轉(zhuǎn)發(fā)流表是業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表,并獲知處理業(yè)務(wù)報文的處理指令。此時,處理單元603在第一轉(zhuǎn)發(fā)流表中建立與第一 key相匹配的匹配表項,并將處理指令作為匹配表項的第一處理數(shù)據(jù),記錄在匹配表項中。
[0273]發(fā)送單元604,用于將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。
[0274]進(jìn)一步的,所述控制器,如圖7所示,還包括:
[0275]接收單元604,用于接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文。
[0276]所述獲取單元601,還用于解析所述接收單元604接收的所述業(yè)務(wù)報文,獲取所述業(yè)務(wù)報文的配置信息。
[0277]其中,所述配置信息中標(biāo)識出轉(zhuǎn)發(fā)所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。
[0278]此時,獲取單元601,用于獲取所述業(yè)務(wù)報文的第一標(biāo)識ID具體為:所述獲取單元601,具體用于根據(jù)所述業(yè)務(wù)報文的配置信息,獲取所述業(yè)務(wù)報文的第一標(biāo)識ID?;蛘?,所述獲取單元601,具體用于在第三轉(zhuǎn)發(fā)流表的表項記錄的信息中獲取第一 ID。
[0279]進(jìn)一步的,處理單元603,還用于在所述確定單元602確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項的情況下,在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0280]具體的,若第一轉(zhuǎn)發(fā)流表不是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)中包括轉(zhuǎn)發(fā)業(yè)務(wù)報文時,需要查找的下一個轉(zhuǎn)發(fā)流表對應(yīng)的第三ID。也就是說,第一處理數(shù)據(jù)中包括:標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID,即為第三ID。
[0281]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0282]若第一轉(zhuǎn)發(fā)流表是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)包括:處理指令。
[0283]處理單元603根據(jù)獲取的第一處理數(shù)據(jù)的不同,對業(yè)務(wù)報文的處理動作也不同。
[0284]所述處理單元603,具體用于若獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID,則觸發(fā)所述獲取單元601在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID。觸發(fā)所述確定單元602確定所述獲取單元601獲取的所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段。觸發(fā)所述確定單元602在確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段的情況下,根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表。觸發(fā)所述獲取單元601根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key。觸發(fā)所述確定單元602根據(jù)所述獲取單元601獲取的所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項。并在所述確定單元602確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0285]也就是說,處理單元603在獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID時,說明需要根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文,則處理單元603觸發(fā)根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文的流程,具體的可以參考根據(jù)第一 ID轉(zhuǎn)發(fā)業(yè)務(wù)報文的過程,在此不再贅述。
[0286]進(jìn)一步的,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0287]其中,第三ID標(biāo)識出的查詢方式可以與第一 ID標(biāo)識出的查詢方式相同。由于第一 ID標(biāo)識出的查詢階段與第三ID標(biāo)識出的查詢階段不同,所以與第一 ID相對應(yīng)的第一轉(zhuǎn)發(fā)流表與第三ID相對應(yīng)的第二轉(zhuǎn)發(fā)流表為不同的轉(zhuǎn)發(fā)流表。若第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同,則說明第一轉(zhuǎn)發(fā)流表與第二轉(zhuǎn)發(fā)流表是在不同查詢階段的具有相同查詢方式的轉(zhuǎn)發(fā)流表。
[0288]進(jìn)一步的,若ID的第一標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢階段,第二標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢方式,則在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位相同。在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式不相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位不相同。
[0289]若獲取的第一處理數(shù)據(jù)包括:處理指令,則在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0290]也就是說,處理單元603在獲取的第一處理數(shù)據(jù)包括:處理指令時,第一轉(zhuǎn)發(fā)流表為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,此時,處理單元603可以根據(jù)獲取的第一處理數(shù)據(jù)包括的處理指令,處理業(yè)務(wù)報文,從而完成業(yè)務(wù)報文的轉(zhuǎn)發(fā)。
[0291]本發(fā)明實施例提供了一種控制器,獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項;所述新表項中記錄有第一處理數(shù)據(jù);將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。這樣,控制器在建立與第一 key相匹配的匹配表項之前,需要先確定獲取的第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,只有在第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,才在檢測出第一轉(zhuǎn)發(fā)流表中沒有與第一 key相匹配的匹配項,建立與第一 key相匹配的匹配表項,并將新建立的匹配表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
[0292]如圖8所示,其為本發(fā)明提供的一種轉(zhuǎn)發(fā)設(shè)備的結(jié)構(gòu)示意圖,參考圖8所示,該轉(zhuǎn)發(fā)設(shè)備包括:處理器(processor) 801、通信接口(Communications Interface) 802、存儲器(memory) 803、通信總線804及接收器805 ;其中,所述處理器801、所述通信接口 802、所述接收器805和所述存儲器803通過所述通信總線804完成相互間的通信。
[0293]處理器801可以是一個中央處理器CPU,或者是特定集成電路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。
[0294]存儲器803用于存放程序代碼,所述程序代碼包括計算機(jī)操作指令。存儲器803可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。處理器801用于調(diào)用存儲器803中的程序代碼。具體為:
[0295]處理器801,用于獲取業(yè)務(wù)報文的第一標(biāo)識ID。
[0296]其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式。
[0297]具體的,處理器801,具體用于通過入接口接收到業(yè)務(wù)報文,并解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID。此時,獲取的第一 ID是業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā)過程中,與需要查找的第一個轉(zhuǎn)發(fā)流表相關(guān)的ID。
[0298]或者,可以通過上一個查詢階段的轉(zhuǎn)發(fā)流表獲取第一 ID。
[0299]進(jìn)一步的,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0300]其中,任意匹配查找包括:IPv4 (Internet Protocol Version4,第四版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找和IPv6 (Internet Protocol Version6,第六版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找。
[0301]最長匹配查找包括:IPv4業(yè)務(wù)報文的最長匹配查找和IPv6業(yè)務(wù)報文的最長匹配查找。
[0302]精確匹配查找包括:IPv4業(yè)務(wù)報文的精確匹配查找和IPv6業(yè)務(wù)報文的精確匹配查找。
[0303]需要說明的是,第一 ID標(biāo)出的查詢方式,還可是其他方式,本發(fā)明對此不做限制。
[0304]進(jìn)一步的,ID標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式的方法可以是將ID的第一標(biāo)識位指示業(yè)務(wù)報報文的查詢階段,將ID的第二標(biāo)識位指示查詢方式。
[0305]處理器801,還用于確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。
[0306]需要說明的是,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,即為確定第一 ID標(biāo)識出的查詢階段是否為在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0307]具體的,所述處理器801,具體用于在通過解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID時,第二 ID標(biāo)識出的查詢階段為空,確定出第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。
[0308]在處理器801通過轉(zhuǎn)發(fā)流表獲取第一 ID,則記錄第一 ID的轉(zhuǎn)發(fā)流表對應(yīng)的ID為第二 ID,則需要確定第一 ID標(biāo)識出的查詢階段是否為第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0309]其中,若第一 ID標(biāo)識出的查詢階段是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則可以確定第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。若第一 ID標(biāo)識出的查詢階段不是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則可以確定第一 ID標(biāo)識出的查詢階段不高于第二 ID標(biāo)識出的查詢階段。
[0310]所述處理器801,還用于若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第
一轉(zhuǎn)發(fā)流表。
[0311]需要說明的是,由于ID可以標(biāo)識出業(yè)務(wù)轉(zhuǎn)發(fā)報文的查詢階段和查詢方式,則第一ID可以標(biāo)識出業(yè)務(wù)報文的第一查詢階段和第一查詢方式。在每個查詢階段中每個查詢方式只對應(yīng)一個轉(zhuǎn)發(fā)流表,所以,可以通過第一 ID唯一確定出第一轉(zhuǎn)發(fā)流表。
[0312]所述處理器801,還用于根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key。
[0313]具體的,所述處理器801,具體用于在獲取第一 ID后,根據(jù)第一 ID標(biāo)識出的查詢方式,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key。
[0314]示例性的,若此業(yè)務(wù)報文為IPv4業(yè)務(wù)報文,且第一 ID標(biāo)識出的查詢方式為任意匹配查找,任意匹配查找所需的第一 key為五元組,包括:源IP地址(SrcIP)、目的IP地址(DstIP)、源端口號(SrcPort)、目的端口號(DstPort)和協(xié)議號(Protocol)。獲取單元401確定出第一 ID標(biāo)識出的查詢方式為任意匹配查找時,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key,即為從業(yè)務(wù)報文中獲取作為第一 key的五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號。
[0315]所述處理器801,還用于根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項。
[0316]如上例所述,處理器801獲取的第一 key為五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號,則可以根據(jù)五元組查詢第一轉(zhuǎn)發(fā)流表,從而確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的第一 key相匹配的匹配表項。即為確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的五元組相匹配的匹配表項。[0317]進(jìn)一步的,根據(jù)第一 key查找第一轉(zhuǎn)發(fā)流表,若在第一轉(zhuǎn)發(fā)流表中查找到與第一key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中有匹配表項。若在第一轉(zhuǎn)發(fā)流表中沒有查找到與第一 key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中沒有匹配表項。
[0318]處理器801,還用于在所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項的情況下,在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0319]具體的,若第一轉(zhuǎn)發(fā)流表不是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)中包括轉(zhuǎn)發(fā)業(yè)務(wù)報文時,需要查找的下一個轉(zhuǎn)發(fā)流表對應(yīng)的第三ID。也就是說,第一處理數(shù)據(jù)中包括:標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID,即為第三ID。
[0320]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0321]若第一轉(zhuǎn)發(fā)流表是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)包括:處理指令。
[0322]處理器801根據(jù)獲取的第一處理數(shù)據(jù)的不同,對業(yè)務(wù)報文的處理動作也不同。
[0323]所述處理器801,具體用于若獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID,則在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID。確定所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段。在確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段的情況下,根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表。根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key。根據(jù)獲取的所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項。并在確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0324]也就是說,處理器801在獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID時,說明需要根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文,則根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文的流程,具體的可以參考根據(jù)第一 ID轉(zhuǎn)發(fā)業(yè)務(wù)報文的過程,在此不再贅述。
[0325]進(jìn)一步的,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0326]其中,第三ID標(biāo)識出的查詢方式可以與第一 ID標(biāo)識出的查詢方式相同。由于第一 ID標(biāo)識出的查詢階段與第三ID標(biāo)識出的查詢階段不同,所以與第一 ID相對應(yīng)的第一轉(zhuǎn)發(fā)流表與第三ID相對應(yīng)的第二轉(zhuǎn)發(fā)流表為不同的轉(zhuǎn)發(fā)流表。若第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同,則說明第一轉(zhuǎn)發(fā)流表與第二轉(zhuǎn)發(fā)流表是在不同查詢階段的具有相同查詢方式的轉(zhuǎn)發(fā)流表。
[0327]進(jìn)一步的,若ID的第一標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢階段,第二標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢方式,則在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位相同。在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式不相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位不相同。
[0328]若獲取的第一處理數(shù)據(jù)包括:處理指令,則在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0329]也就是說,處理器801在獲取的第一處理數(shù)據(jù)包括:處理指令時,第一轉(zhuǎn)發(fā)流表為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,此時,處理器801可以根據(jù)獲取的第一處理數(shù)據(jù)包括的處理指令,處理業(yè)務(wù)報文,從而完成業(yè)務(wù)報文的轉(zhuǎn)發(fā)。
[0330]進(jìn)一步的,所述處理器801,還用于在確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一key相匹配的匹配表項,則將所述業(yè)務(wù)報文發(fā)送至控制器,以使得所述控制器確定所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)流程。
[0331]所述接收器805,用于接收所述控制器發(fā)送的所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息。
[0332]本發(fā)明實施例提供了一種轉(zhuǎn)發(fā)設(shè)備,獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。這樣,轉(zhuǎn)發(fā)設(shè)備在接收到業(yè)務(wù)報文時,可以獲取此業(yè)務(wù)報文的第一 ID,從而可以確定第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,在確定了第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,并根據(jù)第一轉(zhuǎn)發(fā)流表進(jìn)行轉(zhuǎn)發(fā)。從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
[0333]如圖9所示,其為本發(fā)明提供的一種控制器的結(jié)構(gòu)示意圖,參考圖9所示,該控制器包括:處理器(processor) 901、通信接口(Communications Interface) 902、存儲器(memory) 903、通信總線904、發(fā)射器905及接收器906 ;其中,所述處理器901、所述通信接口 902、所述接收器906、所述發(fā)射器905和所述存儲器903通過所述通信總線904完成相互間的通信。
[0334]處理器901可以是一個中央處理器CPU,或者是特定集成電路ASIC (ApplicationSpecific Integrated Circuit),或者是被配置成實施本發(fā)明實施例的一個或多個集成電路。
[0335]存儲器903用于存放程序代碼,所述程序代碼包括計算機(jī)操作指令。存儲器903可能包含高速RAM存儲器,也可能還包括非易失性存儲器(non-volatile memory),例如至少一個磁盤存儲器。處理器901用于調(diào)用存儲器903中的程序代碼。具體為:
[0336]處理器901,用于獲取所述業(yè)務(wù)報文的第一標(biāo)識ID。
[0337]其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式。
[0338]具體的,處理器901,具體用于通過入接口接收到業(yè)務(wù)報文,并解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID。此時,獲取的第一 ID是業(yè)務(wù)報文進(jìn)行轉(zhuǎn)發(fā)過程中,與需要查找的第一個轉(zhuǎn)發(fā)流表相關(guān)的ID。
[0339]或者,可以通過上一個查詢階段的轉(zhuǎn)發(fā)流表獲取第一 ID。
[0340]進(jìn)一步的,所述第一 ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。[0341]其中,任意匹配查找包括:IPv4 (Internet Protocol Version4,第四版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找和IPv6 (Internet Protocol Version6,第六版互聯(lián)網(wǎng)協(xié)議)業(yè)務(wù)報文的任意匹配查找。
[0342]最長匹配查找包括:IPv4業(yè)務(wù)報文的最長匹配查找和IPv6業(yè)務(wù)報文的最長匹配查找。
[0343]精確匹配查找包括:IPv4業(yè)務(wù)報文的精確匹配查找和IPv6業(yè)務(wù)報文的精確匹配查找。
[0344]需要說明的是,第一 ID標(biāo)出的查詢方式,還可是其他方式,本發(fā)明對此不做限制。
[0345]進(jìn)一步的,ID標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式的方法可以是將ID的第一標(biāo)識位指示業(yè)務(wù)報報文的查詢階段,將ID的第二標(biāo)識位指示查詢方式。
[0346]處理器901,還用于確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段。
[0347]需要說明的是,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,即為確定第一 ID標(biāo)識出的查詢階段是否為在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0348]具體的,所述處理器901,具體用于在通過解析業(yè)務(wù)報文,獲取業(yè)務(wù)報文的第一 ID時,第二 ID標(biāo)識出的查詢階段為空,確定出第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。
[0349]在處理器901通過轉(zhuǎn)發(fā)流表獲取第一 ID,則記錄第一 ID的轉(zhuǎn)發(fā)流表對應(yīng)的ID為第二 ID,則需要確定第一 ID標(biāo)識出的查詢階段是否為第二 ID標(biāo)識出的查詢階段之后的查詢階段。
[0350]其中,若第一 ID標(biāo)識出的查詢階段是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則可以確定第一 ID標(biāo)識出的查詢階段高于第二 ID標(biāo)識出的查詢階段。若第一 ID標(biāo)識出的查詢階段不是第二 ID標(biāo)識出的查詢階段之后的查詢階段,則可以確定第一 ID標(biāo)識出的查詢階段不高于第二 ID標(biāo)識出的查詢階段。
[0351]所述處理器901,還用于若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第
一轉(zhuǎn)發(fā)流表。
[0352]需要說明的是,由于ID可以標(biāo)識出業(yè)務(wù)轉(zhuǎn)發(fā)報文的查詢階段和查詢方式,則第一ID可以標(biāo)識出業(yè)務(wù)報文的第一查詢階段和第一查詢方式。在每個查詢階段中每個查詢方式只對應(yīng)一個轉(zhuǎn)發(fā)流表,所以,可以通過第一 ID唯一確定出第一轉(zhuǎn)發(fā)流表。
[0353]所述處理器901,還用于根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key。
[0354]具體的,所述處理器901,具體用于在獲取第一 ID后,根據(jù)第一 ID標(biāo)識出的查詢方式,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key。
[0355]示例性的,若此業(yè)務(wù)報文為IPv4業(yè)務(wù)報文,且第一 ID標(biāo)識出的查詢方式為任意匹配查找,任意匹配查找所需的第一 key為五元組,包括:源IP地址(SrcIP)、目的IP地址(DstIP)、源端口號(SrcPort)、目的端口號(DstPort)和協(xié)議號(Protocol)。獲取單元401確定出第一 ID標(biāo)識出的查詢方式為任意匹配查找時,從業(yè)務(wù)報文中獲取與第一 ID標(biāo)識出的查詢方式對應(yīng)的第一 key,即為從業(yè)務(wù)報文中獲取作為第一 key的五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號。
[0356]所述處理器901,還用于根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項。
[0357]如上例所述,處理器901獲取的第一 key為五元組,包括:源IP地址、目的IP地址、源端口號、目的端口號和協(xié)議號,則可以根據(jù)五元組查詢第一轉(zhuǎn)發(fā)流表,從而確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的第一 key相匹配的匹配表項。即為確定第一轉(zhuǎn)發(fā)流表中是否有與從業(yè)務(wù)報文中獲取的五元組相匹配的匹配表項。
[0358]進(jìn)一步的,根據(jù)第一 key查找第一轉(zhuǎn)發(fā)流表,若在第一轉(zhuǎn)發(fā)流表中查找到與第一key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中有匹配表項。若在第一轉(zhuǎn)發(fā)流表中沒有查找到與第一 key相匹配的表項,則說明第一轉(zhuǎn)發(fā)流表中沒有匹配表項。
[0359]處理器901,還用于在所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項時,根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項。
[0360]其中,所述新表項中記錄有第一處理數(shù)據(jù)。
[0361]具體的,處理器901根據(jù)第一轉(zhuǎn)發(fā)流表是否為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表不同,建立新表項的過程不同。其中,
[0362]在所述第一轉(zhuǎn)發(fā)流表不是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID。
[0363]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0364]具體的,處理器901在確定出第一轉(zhuǎn)發(fā)流表的表項中沒有與第一 key相匹配的表項,則說明現(xiàn)有的轉(zhuǎn)發(fā)流表不支持此業(yè)務(wù)報文的轉(zhuǎn)發(fā)。此時,處理器901通過解析業(yè)務(wù)報文,獲知業(yè)務(wù)報文的配置信息,從而可以根據(jù)業(yè)務(wù)報文的配置信息,獲知在查找第一轉(zhuǎn)發(fā)流表后,需要進(jìn)行的下一個查詢階段的ID,即為獲知第三ID。處理器901在第一轉(zhuǎn)發(fā)流表中建立與第一 key相匹配的匹配表項,并將第三ID作為匹配表項的第一處理數(shù)據(jù),記錄在匹配表項中。
[0365]進(jìn)一步的,第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段。
[0366]在所述第一轉(zhuǎn)發(fā)流表是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:處理指令。
[0367]具體的,處理器901在確定出第一轉(zhuǎn)發(fā)流表的表項中沒有與第一 key相匹配的表項,則說明現(xiàn)有的轉(zhuǎn)發(fā)流表不支持此業(yè)務(wù)報文的轉(zhuǎn)發(fā)。此時,處理器901根據(jù)業(yè)務(wù)報文,獲知業(yè)務(wù)報文的配置信息,從而可以根據(jù)業(yè)務(wù)報文的配置信息,獲知第一轉(zhuǎn)發(fā)流表是業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表,并獲知處理業(yè)務(wù)報文的處理指令。此時,處理器901在第一轉(zhuǎn)發(fā)流表中建立與第一 key相匹配的匹配表項,并將處理指令作為匹配表項的第一處理數(shù)據(jù),記錄在匹配表項中。
[0368]發(fā)射器905,用于將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。
[0369]進(jìn)一步的,接收器906,用于接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文。
[0370]所述處理器901,還用于解析所述接收器906接收的所述業(yè)務(wù)報文,獲取所述業(yè)務(wù)報文的配置信息。
[0371]其中,所述配置信息中標(biāo)識出轉(zhuǎn)發(fā)所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。
[0372]此時,處理器901,用于獲取所述業(yè)務(wù)報文的第一標(biāo)識ID具體為:所述處理器901,具體用于根據(jù)所述業(yè)務(wù)報文的配置信息,獲取所述業(yè)務(wù)報文的第一標(biāo)識ID?;蛘?,所述處理器901,具體用于在第三轉(zhuǎn)發(fā)流表的表項記錄的信息中獲取第一 ID。
[0373]進(jìn)一步的,處理器901,還用于在確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項的情況下,在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0374]具體的,若第一轉(zhuǎn)發(fā)流表不是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)中包括轉(zhuǎn)發(fā)業(yè)務(wù)報文時,需要查找的下一個轉(zhuǎn)發(fā)流表對應(yīng)的第三ID。也就是說,第一處理數(shù)據(jù)中包括:標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID,即為第三ID。
[0375]其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
[0376]若第一轉(zhuǎn)發(fā)流表是轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,則第一處理數(shù)據(jù)包括:處理指令。
[0377]處理器901根據(jù)獲取的第一處理數(shù)據(jù)的不同,對業(yè)務(wù)報文的處理動作也不同。
[0378]所述處處理器901,具體用于若獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID,則在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID。確定所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段。在確定出所述第三ID標(biāo)識出的查詢階段高于第一ID標(biāo)識出的查詢階段的情況下,根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表。根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key。根據(jù)所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項。并在確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
[0379]也就是說,處理器901在獲取的第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID時,說明需要根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文,則處理器901觸發(fā)根據(jù)第三ID進(jìn)行轉(zhuǎn)發(fā)業(yè)務(wù)報文的流程,具體的可以參考根據(jù)第一 ID轉(zhuǎn)發(fā)業(yè)務(wù)報文的過程,在此不再贅述。
[0380]進(jìn)一步的,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
[0381]其中,第三ID標(biāo)識出的查詢方式可以與第一 ID標(biāo)識出的查詢方式相同。由于第一 ID標(biāo)識出的查詢階段與第三ID標(biāo)識出的查詢階段不同,所以與第一 ID相對應(yīng)的第一轉(zhuǎn)發(fā)流表與第三ID相對應(yīng)的第二轉(zhuǎn)發(fā)流表為不同的轉(zhuǎn)發(fā)流表。若第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同,則說明第一轉(zhuǎn)發(fā)流表與第二轉(zhuǎn)發(fā)流表是在不同查詢階段的具有相同查詢方式的轉(zhuǎn)發(fā)流表。
[0382]進(jìn)一步的,若ID的第一標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢階段,第二標(biāo)識位標(biāo)識出業(yè)務(wù)報文的查詢方式,則在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位相同。在第三ID標(biāo)識出的查詢方式與第一 ID標(biāo)識出的查詢方式不相同的情況下,第一 ID與第三ID的第一標(biāo)識位不同,第二標(biāo)識位不相同。
[0383]若獲取的第一處理數(shù)據(jù)包括:處理指令,則在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
[0384]也就是說,處理器901在獲取的第一處理數(shù)據(jù)包括:處理指令時,第一轉(zhuǎn)發(fā)流表為轉(zhuǎn)發(fā)業(yè)務(wù)報文的最后一個轉(zhuǎn)發(fā)流表,此時,處理器901可以根據(jù)獲取的第一處理數(shù)據(jù)包括的處理指令,處理業(yè)務(wù)報文,從而完成業(yè)務(wù)報文的轉(zhuǎn)發(fā)。
[0385]本發(fā)明實施例提供了一種控制器,獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項;所述新表項中記錄有第一處理數(shù)據(jù);將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。這樣,控制器在建立與第一 key相匹配的匹配表項之前,需要先確定獲取的第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,只有在第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,才在檢測出第一轉(zhuǎn)發(fā)流表中沒有與第一 key相匹配的匹配項,建立與第一 key相匹配的匹配表項,并將新建立的匹配表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。
[0386]本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的系統(tǒng),如圖10所示,包括:轉(zhuǎn)發(fā)設(shè)備1001及控制器1002。
[0387]其中,所述轉(zhuǎn)發(fā)設(shè)備1001為上述實施例所述的轉(zhuǎn)發(fā)設(shè)備。
[0388]所述控制器1002為上述實施例所述的控制器。
[0389]本發(fā)明實施例提供了一種報文轉(zhuǎn)發(fā)的方法、裝置及系統(tǒng),轉(zhuǎn)發(fā)設(shè)備獲取業(yè)務(wù)報文的第一 ID,確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段;在確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一 key,根據(jù)第一 key,查找第一轉(zhuǎn)發(fā)流表,若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。若確定第一轉(zhuǎn)發(fā)流表中沒有與第一 key相匹配的匹配表項,則將業(yè)務(wù)報文發(fā)送至控制器,由控制器獲取此業(yè)務(wù)報文相關(guān)轉(zhuǎn)發(fā)信息。這樣,轉(zhuǎn)發(fā)設(shè)備在接收到業(yè)務(wù)報文時,可以獲取此業(yè)務(wù)報文的第一 ID,從而可以確定第一 ID標(biāo)識出的查詢階段是否高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段,在確定了第一 ID標(biāo)識出的查詢階段高于在第一 ID標(biāo)識出查詢階段之前獲取的第二 ID標(biāo)識出的查詢階段時,根據(jù)第一 ID,確定第一轉(zhuǎn)發(fā)流表,并根據(jù)第一轉(zhuǎn)發(fā)流表進(jìn)行轉(zhuǎn)發(fā)。從而在業(yè)務(wù)報文轉(zhuǎn)發(fā)過程中,保證不同查詢階段的轉(zhuǎn)發(fā)流表只被查詢一次,進(jìn)而在進(jìn)行業(yè)務(wù)報文轉(zhuǎn)發(fā)時,保障業(yè)務(wù)報文的正常轉(zhuǎn)發(fā),并且無需使用額外的機(jī)制保證查找的順序,從而降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度。并在接收到新的業(yè)務(wù)報文時,可以發(fā)送至控制器,控制器可以根據(jù)新的業(yè)務(wù)報文,在轉(zhuǎn)發(fā)流表中建立相應(yīng)的新表項,并將新建立的轉(zhuǎn)發(fā)流表的表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,使得轉(zhuǎn)發(fā)設(shè)備根據(jù)此表項中記錄的信息處理此新業(yè)務(wù)報文,無需重新編寫轉(zhuǎn)發(fā)設(shè)備的轉(zhuǎn)發(fā)流程,進(jìn)一步降低了轉(zhuǎn)發(fā)業(yè)務(wù)報文的復(fù)雜度,從而提高了系統(tǒng)的性能。
[0390]在本申請所提供的幾個實施例中,應(yīng)該理解到,所公開的系統(tǒng),裝置和方法,可以通過其它的方式實現(xiàn)。例如,以上所描述的裝置實施例僅僅是示意性的,例如,所述單元的劃分,僅僅為一種邏輯功能劃分,實際實現(xiàn)時可以有另外的劃分方式,例如多個單元或組件可以結(jié)合或者可以集成到另一個系統(tǒng),或一些特征可以忽略,或不執(zhí)行。另一點,所顯示或討論的相互之間的耦合或直接耦合或通信連接可以是通過一些接口,裝置或單元的間接耦合或通信連接,可以是電性,機(jī)械或其它的形式。
[0391]所述作為分離部件說明的單元可以是或者也可以不是物理上分開的,作為單元顯示的部件可以是或者也可以不是物理單元,即可以位于一個地方,或者也可以分布到多個網(wǎng)絡(luò)單元上??梢愿鶕?jù)實際的需要選擇其中的部分或者全部單元來實現(xiàn)本實施例方案的目的。
[0392]另外,在本發(fā)明各個實施例中的各功能單元可以集成在一個處理單元中,也可以是各個單元單獨物理包括,也可以兩個或兩個以上單元集成在一個單元中。上述集成的單元既可以采用硬件的形式實現(xiàn),也可以采用硬件加軟件功能單元的形式實現(xiàn)。
[0393]上述以軟件功能單元的形式實現(xiàn)的集成的單元,可以存儲在一個計算機(jī)可讀取存儲介質(zhì)中。上述軟件功能單元存儲在一個存儲介質(zhì)中,包括若干指令用以使得一臺計算機(jī)設(shè)備(可以是個人計算機(jī),服務(wù)器,或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個實施例所述方法的部分步驟。而前述的存儲介質(zhì)包括:U盤、移動硬盤、只讀存儲器(Read-Only Memory,簡稱ROM)、隨機(jī)存取存儲器(Random Access Memory,簡稱RAM)、磁碟或者光盤等各種可以存儲程序代碼的介質(zhì)。
[0394]最后應(yīng)說明的是:以上實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述實施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的精神和范圍。
【權(quán)利要求】
1.一種報文轉(zhuǎn)發(fā)的方法,其特征在于,包括: 獲取業(yè)務(wù)報文的第一標(biāo)識ID,其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式; 確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段; 若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表; 根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key ; 根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一key相匹配的匹配表項; 若確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID ; 所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括: 在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ; 確定所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段; 若確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段,則根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表; 根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ; 根據(jù)所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二key相匹配的匹配表項; 若確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
4.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述第一處理數(shù)據(jù)包括:處理指令; 所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括: 在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
5.根據(jù)權(quán)利要求1-4任一項所述的方法,其特征在于,還包括: 若確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則將所述業(yè)務(wù)報文發(fā)送至控制器,以使得所述控制器確定所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)流程; 接收所述控制器發(fā)送的所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息。
6.根據(jù)權(quán)利要求1-5任一項所述的方法,其特征在于,所述第一ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
7.一種報文轉(zhuǎn)發(fā)的方法,其特征在于,包括: 獲取所述業(yè)務(wù)報文的第一標(biāo)識ID,其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式; 確定所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段; 若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表; 根據(jù)所述第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一關(guān)鍵字key ; 根據(jù)所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一key相匹配的匹配表項; 若確定出所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項;所述新表項中記錄有第一處理數(shù)據(jù); 將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,在所述第一轉(zhuǎn)發(fā)流表不是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
9.根據(jù)權(quán)利要求7所述的方法,其特征在于,在所述第一轉(zhuǎn)發(fā)流表是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:處理指令。·
10.根據(jù)權(quán)利要求7-9任一項所述的方法,其特征在于,在所述獲取業(yè)務(wù)報文的第一標(biāo)識ID之前,還包括: 接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文; 解析所述業(yè)務(wù)報文,獲取所述業(yè)務(wù)報文的配置信息;所述配置信息中標(biāo)識出轉(zhuǎn)發(fā)所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。
11.根據(jù)權(quán)利要求10所述的方法,其特征在于,所述獲取業(yè)務(wù)報文的第一標(biāo)識ID包括: 根據(jù)所述業(yè)務(wù)報文的配置信息,獲取所述業(yè)務(wù)報文的第一標(biāo)識ID。
12.根據(jù)權(quán)利要求7-10任一項所述的方法,其特征在于,所述獲取業(yè)務(wù)報文的第一標(biāo)識ID包括: 在第三轉(zhuǎn)發(fā)流表的表項記錄的信息中獲取第一 ID。
13.根據(jù)權(quán)利要求7-12任一項所述的方法,其特征在于,還包括: 若確定出所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項,則在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ; 所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括: 在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ;確定所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段; 若確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段,則根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表; 根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ; 根據(jù)所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二key相匹配的匹配表項; 若查找到匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
15.根據(jù)權(quán)利要求14所述的方法,其特征在于,所述第三ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
16.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述第一處理數(shù)據(jù)包括:處理指令; 所述在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文包括: 在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
17.根據(jù)權(quán)利要求7-16任一項所述的方法,其特征在于,所述第一ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
18.一種轉(zhuǎn)發(fā)設(shè)備,其特征在于,包括: 獲取單元,用于獲取業(yè)務(wù)報文的第一標(biāo)識ID,其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式;` 確定單元,用于確定所述獲取單元獲取的所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段; 所述確定單元,還用于若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表; 所述獲取單元,還用于根據(jù)所述第一 ID標(biāo)識出的查詢方式,獲取第一關(guān)鍵字key ;所述確定單元,還用于根據(jù)所述獲取單元獲取的所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項; 處理單元,用于在所述確定單元確定所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項的情況下,在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
19.根據(jù)權(quán)利要求18所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;其中,所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID ; 所述處理單元,具體用于觸發(fā)所述獲取單元在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ; 觸發(fā)所述確定單元確定所述獲取單元獲取的所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段; 觸發(fā)所述確定單元在確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段的情況下,根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表;觸發(fā)所述獲取單元根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ; 觸發(fā)所述確定單元根據(jù)所述獲取單元獲取的所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項; 并在所述確定單元確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
20.根據(jù)權(quán)利要求18所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述第一處理數(shù)據(jù)包括:處理指令; 所述處理單元,具體用于在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
21.根據(jù)權(quán)利要求18-20任一項所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,還包括:接收單元; 所述處理單元,還用于在所述確定單元確定所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項,則將所述業(yè)務(wù)報文發(fā)送至控制器,以使得所述控制器確定所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)流程; 所述接收單元,用于接收所述控制器發(fā)送的所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息。
22.根據(jù)權(quán)利要求18-21任一項所述的轉(zhuǎn)發(fā)設(shè)備,其特征在于,所述第一ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
23.一種控制器,其特征在于,包括: 獲取單元,用于獲取所述業(yè)務(wù)報文的第一標(biāo)識ID,其中,所述ID用于標(biāo)識出所述業(yè)務(wù)報文的查詢階段及查詢方式; 確定單元,用于確定所述獲取單元獲取的所述第一 ID標(biāo)識出的查詢階段是否高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段; 所述確定單元,還用于若確定出所述第一 ID標(biāo)識出的查詢階段高于在所述第一 ID標(biāo)識出的查詢階段之前,獲取的第二 ID標(biāo)識出的查詢階段,則根據(jù)所述第一 ID,確定第一轉(zhuǎn)發(fā)流表; 所述獲取單元,還用于根據(jù)所述第一 ID標(biāo)識出的所述第一轉(zhuǎn)發(fā)流表的查詢方式,獲取第一關(guān)鍵字key ; 所述確定單元,還用于根據(jù)所述獲取單元獲取的所述第一 key,查找第一轉(zhuǎn)發(fā)流表,確定所述第一轉(zhuǎn)發(fā)流表中是否有與所述第一 key相匹配的匹配表項; 處理單元,用于在所述確定單元確定出所述第一轉(zhuǎn)發(fā)流表中沒有與所述第一 key相匹配的匹配表項時,根據(jù)所述業(yè)務(wù)報文,在所述第一轉(zhuǎn)發(fā)流表中建立與所述第一 key相匹配的新表項;所述新表項中記錄有第一處理數(shù)據(jù); 發(fā)送單元,用于將所述第一轉(zhuǎn)發(fā)流表的新表項的相關(guān)信息發(fā)送至轉(zhuǎn)發(fā)設(shè)備,以使得所述轉(zhuǎn)發(fā)設(shè)備根據(jù)所述第一轉(zhuǎn)發(fā)流表的新表項轉(zhuǎn)發(fā)所述業(yè)務(wù)報文。
24.根據(jù)權(quán)利要求23所述的控制器,其特征在于,在所述第一轉(zhuǎn)發(fā)流表不是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ;所述第三ID是標(biāo)識第一 ID標(biāo)識的查詢階段之后的,下一個查詢階段的ID。
25.根據(jù)權(quán)利要求23所述的控制器,其特征在于,在所述第一轉(zhuǎn)發(fā)流表是在業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程中,轉(zhuǎn)發(fā)所述業(yè)務(wù)報文時查找的最后一個轉(zhuǎn)發(fā)流表時,所述第一處理數(shù)據(jù)包括:處理指令。
26.根據(jù)權(quán)利要求23-25任一項所述的控制器,其特征在于,還包括: 接收單元,用于接收轉(zhuǎn)發(fā)設(shè)備發(fā)送的業(yè)務(wù)報文; 所述獲取單元,還用于解析所述接收單元接收的所述業(yè)務(wù)報文,獲取所述業(yè)務(wù)報文的配置信息;所述配置信息中標(biāo)識出轉(zhuǎn)發(fā)所述業(yè)務(wù)報文的轉(zhuǎn)發(fā)過程。
27.根據(jù)權(quán)利要求26所述的控制器,其特征在于, 所述獲取單元,具體用于根據(jù)所述業(yè)務(wù)報文的配置信息,獲取所述業(yè)務(wù)報文的第一標(biāo)識ID。
28.根據(jù)權(quán)利要求23-26任一項所述的控制器,其特征在于, 所述獲取單元,具體用于在第三轉(zhuǎn)發(fā)流表的表項記錄的信息中獲取第一 ID。
29.根據(jù)權(quán)利要求23-28任一項所述的控制器,其特征在于, 所述處理單元,還用于在所述確定單元確定出所述第一轉(zhuǎn)發(fā)流表中有與所述第一 key相匹配的匹配表項時,在所述匹配表項中獲取第一處理數(shù)據(jù),并根據(jù)所述第一處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
30.根據(jù)權(quán)利要求29所述的控制器,其特征在于, 所述第一處理數(shù)據(jù)包括:所述業(yè)務(wù)報文的第三ID ; 所述處理單元,具體用于觸發(fā)所述獲取單元在所述匹配表項中獲取所述業(yè)務(wù)報文的第三ID ; 觸發(fā)所述確定單元確定所述獲取單元獲取的所述第三ID標(biāo)識出的查詢階段是否高于第一 ID標(biāo)識出的查詢階段; 觸發(fā)所述確定單元在確定出所述第三ID標(biāo)識出的查詢階段高于第一 ID標(biāo)識出的查詢階段時,根據(jù)所述業(yè)務(wù)報文的第三ID,確定第二轉(zhuǎn)發(fā)流表; 觸發(fā)所述獲取單元根據(jù)所述第三ID標(biāo)識出的查詢方式,獲取第二 key ; 觸發(fā)所述確定單元根據(jù)所述獲取單元獲取的所述第二 key,查找第二轉(zhuǎn)發(fā)流表,確定所述第二轉(zhuǎn)發(fā)流表中是否有與所述第二 key相匹配的匹配表項; 并在所述確定單元確定所述第二轉(zhuǎn)發(fā)流表中有與所述第二 key相匹配的匹配表項,則在所述匹配表項中獲取第二處理數(shù)據(jù),并根據(jù)所述第二處理數(shù)據(jù),處理所述業(yè)務(wù)報文。
31.根據(jù)權(quán)利要求29所述的控制器,其特征在于,所述第一處理數(shù)據(jù)包括:處理指令; 所述處理單元,具體用于在所述匹配表項中獲取所述處理指令,并根據(jù)所述處理指令,處理所述業(yè)務(wù)報文。
32.根據(jù)權(quán)利要求23-31任一項所述的的控制器,其特征在于,所述第一ID標(biāo)識出的查詢方式包括:任意匹配查找,或者最長匹配查找,或者精確匹配查找,或者線性表查找。
33.一種報文轉(zhuǎn)發(fā)的系統(tǒng),其特征在于,包括:轉(zhuǎn)方設(shè)備及控制器; 所述轉(zhuǎn)發(fā)設(shè)備為權(quán)利要求18-22任一項所述的轉(zhuǎn)發(fā)設(shè)備;所述控制器為權(quán)利要求23-32任一項所述的控制器。
【文檔編號】H04L12/741GK103581020SQ201310493059
【公開日】2014年2月12日 申請日期:2013年10月18日 優(yōu)先權(quán)日:2013年10月18日
【發(fā)明者】張智江, 李振海, 劉振肖, 高鵬, 謝頌賢, 韓冰, 譚學(xué)飛 申請人:華為技術(shù)有限公司