專利名稱:快速查找流的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通訊領(lǐng)域,尤其是一路由器中對流進(jìn)行快速查找的方法。
背景技術(shù):
現(xiàn)在的路由器和交換機(jī)都需要對特定的數(shù)據(jù)流做特定的策略動作,也叫轉(zhuǎn)發(fā)動作,包括服務(wù)質(zhì)量、地址轉(zhuǎn)換、服務(wù)器負(fù)載均衡、策略路由等,這些轉(zhuǎn)發(fā)動作都是以流分類或者叫流查找作為前提的。也就是說,路由器或交換機(jī)先對流進(jìn)行流分類,再根據(jù)流分類結(jié)果到流動作表中去尋找對應(yīng)的流動作表項,得到相應(yīng)的轉(zhuǎn)發(fā)動作。
流分類一般是根據(jù)流分類規(guī)則確定的特征或是傳輸層的5元組,即源IP地址、源端口號、協(xié)議號、目的端口號、目的IP地址,進(jìn)行一系列的查找運(yùn)算,分到某一類里,即得到一個流分類結(jié)果,然后按照流分類結(jié)果找到對應(yīng)的流動作表項。
IP通信中的流一般是一個往返的流,如圖1現(xiàn)有技術(shù)查找流的方法示意圖所示。圖1中的進(jìn)入流和返回流是同一個流。圖1的中間是一個路由器,在該路由器中完成流分類和轉(zhuǎn)發(fā)動作?,F(xiàn)有技術(shù)查找流的方法是(1)進(jìn)入流進(jìn)入路由器,路由器對進(jìn)入流進(jìn)行流分類,并按流分類結(jié)果找到進(jìn)入流的流動作表項,做進(jìn)入流的轉(zhuǎn)發(fā)動作;(2)返回流返回路由器,路由器對返回流進(jìn)行流分類,并按流分類結(jié)果找到返回流的流動作表項,做返回流的轉(zhuǎn)發(fā)動作。
這種方法的缺點(diǎn)是,進(jìn)入流和返回流是同一個流,返回流的轉(zhuǎn)發(fā)動作在進(jìn)入階段是可知的,這種方法要經(jīng)過兩次流分類,因此,這種方法重復(fù)工作量大,查找速度慢,系統(tǒng)效率低。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種快速查找流的方法,它能夠避免重復(fù)的流分類工作,提高查找速度,從而提高查找效率。
為實(shí)現(xiàn)上述目的,本發(fā)明的解決方案是一種快速查找流的方法,它包括a、進(jìn)入流的第一個包進(jìn)入路由器,路由器對進(jìn)入流進(jìn)行流分類,并按流分類結(jié)果找到進(jìn)入流的流動作表項,做進(jìn)入流的轉(zhuǎn)發(fā)動作;
b、路由器按流分類結(jié)果判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作,填入一個空閑流動作表項,將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,即流標(biāo)示,該字段原信息先暫存在某處;c、路由器修改進(jìn)入流的流動作表項,在進(jìn)入流的流動作表項前加一個將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,該字段原信息先暫存在某處的動作,以使得進(jìn)入流的后續(xù)包進(jìn)入路由器后先進(jìn)行該操作;d、對返回流從該修改的字段直接讀取流標(biāo)示,找到流動作表項;e、恢復(fù)暫存的原字段信息。
在步驟b中,路由器按流分類結(jié)果判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作的具體過程是按照流分類結(jié)果找到返回流的流動作表項,其中返回流的流動作表項可以與步驟a所述的進(jìn)入流的流動作表項放置在一起,然后根據(jù)返回流的流動作表項判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作。
本發(fā)明可以如下進(jìn)行在步驟b中,將流動作表項分為兩個域,一個域存放轉(zhuǎn)發(fā)動作,另一個域存放原字段信息,將返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作填入空閑流動作表項的存放轉(zhuǎn)發(fā)動作的域,將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改后,該字段原信息暫存在存放原信息字段的域;在步驟d中,從存放轉(zhuǎn)發(fā)動作的域讀取轉(zhuǎn)發(fā)動作;在步驟e中,從存放原字段信息的域恢復(fù)暫存的原字段信息。
本發(fā)明可采用這樣的方式在步驟b中,將進(jìn)入流的數(shù)據(jù)包的源IP地址的后16位數(shù)字用該流動作表項序號修改,原源IP地址的后16位數(shù)字暫存在步驟b建好的流動作表項存放原信息字段的域中;在步驟d中,源IP地址和目的IP地址調(diào)換,從目的IP地址的后16位數(shù)字直接讀取流標(biāo)示;在步驟e中,將暫存的原源IP地址的后16位數(shù)字恢復(fù)到目的IP地址的后16位中。
本發(fā)明可以采用這樣的方式在步驟b中,將進(jìn)入流的數(shù)據(jù)包的源端口號用該流動作表項序號修改,原源端口號先暫存在步驟b建好的流動作表項存放原信息字段的域中;在步驟d中,源端口號和目的端口號調(diào)換,從目的端口號直接讀取流標(biāo)示;在步驟e中,將暫存的原源端口號恢復(fù)到目的端口號中。
由于本發(fā)明在進(jìn)入流流分類時,就把相應(yīng)流分類結(jié)果及對應(yīng)的返回流轉(zhuǎn)發(fā)動作記錄下來,將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,即流標(biāo)示,流返回時只要讀取流標(biāo)示就可以了,這樣,在整個過程中就可以只對流進(jìn)行一次流分類,提高了查找速度和查找效率。
由于本發(fā)明將進(jìn)入流的數(shù)據(jù)包的某個字段用流標(biāo)示修改,該字段原信息暫存在某處,對返回流讀取流標(biāo)示找到流動作表項后再將暫存的原字段信息恢復(fù),這樣就不影響流的正常傳輸。
圖1是現(xiàn)有技術(shù)查找流的方法示意圖。
圖2是本發(fā)明方法流程圖。
圖3是本發(fā)明快速查找流的方法示意圖。
具體實(shí)施例方式
下面結(jié)合附圖對本發(fā)明的實(shí)施例作進(jìn)一步具體的說明。
從圖2本發(fā)明的方法流程圖中,我們可以大體看出本發(fā)明的具體實(shí)現(xiàn)步驟。流程圖的每一步驟大體對應(yīng)我們后面的小標(biāo)題。
(1)進(jìn)入流的第一個包進(jìn)入路由器,路由器對進(jìn)入流進(jìn)行流分類,并按流分類結(jié)果找到進(jìn)入流的流動作表項,做進(jìn)入流的轉(zhuǎn)發(fā)動作。這一部分同現(xiàn)有技術(shù)中我們提到的第一部分大體一致。
舉例來說,路由器按照TCP5元組,即源IP地址、源端口號、協(xié)議號、目的端口號、目的IP地址的信息進(jìn)行運(yùn)算(具體分類的運(yùn)算過程與一般流分類一致,不是本發(fā)明所討論的范圍),得到流分類結(jié)果,即流動作表項序號為5,到流動作表中查找序號5對應(yīng)的流動作表項,按流動作表項做進(jìn)入流的轉(zhuǎn)發(fā)動作。
(2)路由器按流分類結(jié)果判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作,填入一個空閑流動作表項,將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,即流標(biāo)示,該字段原信息先暫存在某處。
路由器按流分類結(jié)果判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作的具體過程是按照流分類結(jié)果找到返回流的流動作表項,其中返回流的流動作表項可以與步驟(1)所述的進(jìn)入流的流動作表項放置在一起,然后根據(jù)返回流的流動作表項判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作。
在本發(fā)明中我們可以將流動作表項分為兩個域,一個域存放轉(zhuǎn)發(fā)動作,另一個域存放原字段信息,將返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作填入空閑流動作表項的存放轉(zhuǎn)發(fā)動作的域,將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改后,該字段原信息暫存在存放原信息字段的域。
在本發(fā)明中,所述的某個字段可以是源IP地址的后16位數(shù)字,也可以是源端口號。如果該字段是源IP地址的后16位數(shù)字,將進(jìn)入流的數(shù)據(jù)包的源IP地址的后16位數(shù)字用該流動作表項序號修改,原源IP地址的后16位數(shù)字暫存在步驟b建好的流動作表項存放原信息字段的域中。如果該字段是源端口號,將進(jìn)入流的數(shù)據(jù)包的源端口號用該流動作表項序號修改,原源端口號先暫存在步驟b建好的流動作表項存放原信息字段的域中。
舉例來說,路由器按照上述步驟(1)中的流分類結(jié)果5找到步驟(1)所述的進(jìn)入流動作表項后,同時與進(jìn)入流動作表項放在一起的還有返回流動作表項,然后根據(jù)返回流的流動作表項判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作,例如是地址轉(zhuǎn)換,然后將其填入一個空閑流動作表項的存放轉(zhuǎn)發(fā)動作的域,該流動作表項序號為25,則將進(jìn)入流的數(shù)據(jù)包的某個字段,此例中假設(shè)源IP地址的后16位數(shù)字,改為25,將原來的源IP地址的后16位數(shù)字,放到流動作表項存放原信息字段的域中,以備以后恢復(fù)時使用。
(3)路由器修改進(jìn)入流的流動作表項,在進(jìn)入流的流動作表項前加一個將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,該字段原信息先暫存的動作,以使得進(jìn)入流的后續(xù)包進(jìn)入路由器后先進(jìn)行該操作。這樣,后續(xù)包進(jìn)入路由器后,都要先執(zhí)行一個用流標(biāo)示修改字段的操作。
(4)對返回流從該修改的字段直接讀取流標(biāo)示,從流動作表項的存放轉(zhuǎn)發(fā)動作的域讀取轉(zhuǎn)發(fā)動作。
值得注意的是,由于在流返回時,源IP地址和目的IP地址調(diào)換,源端口號和目的端口號調(diào)換,這樣,如果修改的字段是源IP地址的后16位數(shù)字,則在本步驟中,需要從目的IP地址的后16位數(shù)字讀取流標(biāo)示。如果修改的字段是源端口號,在本步驟中,需要從目的端口號讀取流標(biāo)示。
還舉上面的例子,在流返回時,從目的IP地址后16位數(shù)字讀取流標(biāo)示25,按照25從流動作表項的存放轉(zhuǎn)發(fā)動作的域讀取轉(zhuǎn)發(fā)動作“地址轉(zhuǎn)換”。
(5)恢復(fù)暫存的原字段信息。
在這個過程中,從流動作表項的存放原字段信息的域取出暫存的原源IP地址的后16位數(shù)字,恢復(fù)到目的IP地址的后16位中;或者,從流動作表項的存放原字段信息的域取出暫存的原源端口號恢復(fù)到目的端口號中。在此例中,是前面的一種情況。
分析完上述本發(fā)明的5個步驟,我們再來看圖3本發(fā)明快速查找流的方法示意圖,將該圖與圖1現(xiàn)有技術(shù)查找流的方法示意圖進(jìn)行對比可知,本發(fā)明快速查找流的方法與現(xiàn)有技術(shù)的重要區(qū)別在于本發(fā)明對進(jìn)入流流分類后進(jìn)行一個流標(biāo)示的過程,在流返回時提取流標(biāo)示,進(jìn)行轉(zhuǎn)發(fā)動作,這樣就避免了在流返回時重復(fù)進(jìn)行流分類,提高了系統(tǒng)效率。
權(quán)利要求
1.一種快速查找流的方法,它包括a、進(jìn)入流的第一個包進(jìn)入路由器,路由器對進(jìn)入流進(jìn)行流分類,并按流分類結(jié)果找到進(jìn)入流的流動作表項,做進(jìn)入流的轉(zhuǎn)發(fā)動作;b、路由器按流分類結(jié)果判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作,填入一個空閑流動作表項,將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,即流標(biāo)示,該字段原信息先暫存在某處;c、路由器修改進(jìn)入流的流動作表項,在進(jìn)入流的流動作表項前加一個將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,該字段原信息先暫存在某處的動作,以使得進(jìn)入流的后續(xù)包進(jìn)入路由器后先進(jìn)行該操作;d、對返回流從該修改的字段直接讀取流標(biāo)示,找到流動作表項;e、恢復(fù)暫存的原字段信息。
2.根據(jù)權(quán)利要求1所述的快速查找流的方法,其特征在于在步驟b中,路由器按流分類結(jié)果判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作的具體過程是按照流分類結(jié)果找到返回流的流動作表項,其中返回流的流動作表項可以與步驟a所述的進(jìn)入流的流動作表項放置在一起,然后根據(jù)返回流的流動作表項判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作。
3.根據(jù)權(quán)利要求1或2所述的快速查找流的方法,其特征在于在步驟b中,將流動作表項分為兩個域,一個域存放轉(zhuǎn)發(fā)動作,另一個域存放原字段信息,將返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作填入空閑流動作表項的存放轉(zhuǎn)發(fā)動作的域,將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改后,該字段原信息暫存在存放原信息字段的域;在步驟d中,從存放轉(zhuǎn)發(fā)動作的域讀取轉(zhuǎn)發(fā)動作;在步驟e中,從存放原字段信息的域恢復(fù)暫存的原字段信息。
4.根據(jù)權(quán)利要求3所述的快速查找流的方法,其特征在于在步驟b中將進(jìn)入流的數(shù)據(jù)包的源IP地址的后16位數(shù)字用該流動作表項序號修改,原源IP地址的后16位數(shù)字暫存在步驟b建好的流動作表項存放原信息字段的域中;在步驟d中,源IP地址和目的IP地址調(diào)換,從目的IP地址的后16位數(shù)字直接讀取流標(biāo)示;在步驟e中,將暫存的原源IP地址的后16位數(shù)字恢復(fù)到目的IP地址的后16位中。
5.根據(jù)權(quán)利要求3所述的快速查找流的方法,其特征在于在步驟b中,將進(jìn)入流的數(shù)據(jù)包的源端口號用該流動作表項序號修改,原源端口號先暫存在步驟b建好的流動作表項存放原信息字段的域中;在步驟d中,源端口號和目的端口號調(diào)換,從目的端口號直接讀取流標(biāo)示;在步驟e中,將暫存的原源端口號恢復(fù)到目的端口號中。
全文摘要
一種快速查找流的方法,它是在進(jìn)入流階段,路由器按流分類結(jié)果判斷返回流將會進(jìn)行的轉(zhuǎn)發(fā)動作,填入一個空閑流動作表項,將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,即流標(biāo)示,該字段原信息先暫存;路由器修改進(jìn)入流的流動作表項,在進(jìn)入流的流動作表項前加一個將進(jìn)入流的數(shù)據(jù)包的某個字段用該流動作表項序號修改,該字段原信息先暫存在某處的動作;對返回流從該修改的字段直接讀取流標(biāo)示,找到流動作表項;恢復(fù)暫存的原字段信息。它能夠避免重復(fù)的流分類工作,提高查找速度。
文檔編號H04Q3/00GK1399475SQ0112441
公開日2003年2月26日 申請日期2001年7月25日 優(yōu)先權(quán)日2001年7月25日
發(fā)明者張光明 申請人:華為技術(shù)有限公司