專利名稱::一種基于ip地址實(shí)現(xiàn)快速路由查找的方法所屬領(lǐng)域本發(fā)明涉及一種基于IP地址實(shí)現(xiàn)快速路由查找的方法,該方法可以用于路由器、接入服務(wù)器等設(shè)備中數(shù)據(jù)表項(xiàng)的查找。屬于數(shù)據(jù)通信
技術(shù)領(lǐng)域:
。本發(fā)明的目的是這樣實(shí)現(xiàn)的一種基于IP地址實(shí)現(xiàn)快速路由查找的方法,其特征在于該方法是通過建立兩個表格64k表(64ktable)和擴(kuò)展表(Trietable)而實(shí)現(xiàn)的首先以欲查找路由的目的IP地址的高16位作為偏移,在64k表中定位表項(xiàng),并判斷該表項(xiàng)中的擴(kuò)展表指針是否等于擴(kuò)展表指針預(yù)設(shè)值?若是,則根據(jù)該表項(xiàng)中記錄的路由索引,找到其路由表;若否,則根據(jù)該表項(xiàng)中的擴(kuò)展表指針,找到下一級擴(kuò)展表的基址,再利用IP地址的后續(xù)4位組合作為偏移在擴(kuò)展表中定位表項(xiàng),并判斷該表項(xiàng)中的擴(kuò)展表指針是否等于擴(kuò)展表指針預(yù)設(shè)值?若是,則根據(jù)該表項(xiàng)中記錄的路由索引,找到其路由表;若否,則根據(jù)該表項(xiàng)中的擴(kuò)展表指針,找到下一級擴(kuò)展表的基址,再利用IP地址的下一個后續(xù)4位組合作為偏移,繼續(xù)進(jìn)行查找循環(huán),直至找到最匹配的路由,或在其循環(huán)結(jié)束仍然沒有找到路由表為止。所述的64k表和擴(kuò)展表中的每一個表項(xiàng)都是由路由索引(routerindex)和擴(kuò)展表指針(trieptr)兩部分組成的。所述的64k表和擴(kuò)展表的結(jié)構(gòu)是相同的,該兩個表的每個表項(xiàng)都是一個32位的長字,其中高16位(16-31位)是路由索引,低16位(0-15位)是擴(kuò)展表指針。所述表項(xiàng)的高16位(16-31位)路由索引的標(biāo)識是指向路由表的索引,其初始化為路由索引預(yù)設(shè)值,當(dāng)路由索引等于路由索引預(yù)設(shè)值時,表示沒有路由項(xiàng),當(dāng)路由索引不等于路由索引預(yù)設(shè)值時,其數(shù)值為所查表的索引。所述表項(xiàng)的低16位(0-15位)是擴(kuò)展表指針,其初始化為擴(kuò)展表指針預(yù)設(shè)值,當(dāng)擴(kuò)展表指針等于擴(kuò)展表指針預(yù)設(shè)值時,表示不需要查找下一級擴(kuò)展表,當(dāng)擴(kuò)展表指針不等于擴(kuò)展表指針預(yù)設(shè)值時,表示需要繼續(xù)進(jìn)行更長的查找,且該擴(kuò)展表指針的值為下一級擴(kuò)展表的起始地址。所述的擴(kuò)展表指針預(yù)設(shè)值和路由索引預(yù)設(shè)值都為0xffff。該方法包括有下列操作步驟(1)首先執(zhí)行初始化操作建立實(shí)現(xiàn)快速查找算法的兩個表格64k表(64ktable)和擴(kuò)展表(Trietable);該64k表和擴(kuò)展表的每一表項(xiàng)都是由兩部分組成路由索引(routerindex)和擴(kuò)展表指針(trieptr),其中64k表共有64k項(xiàng),每一項(xiàng)以IP地址的高16位項(xiàng)作為索引,占用4×64k字節(jié),共256k字節(jié);而擴(kuò)展表共有8k個,每個表有16項(xiàng),共占用8k×1×16×4=512k字節(jié);所述的64k表和擴(kuò)展表中的每一項(xiàng)都是由同樣的路由索引(routerindex)和擴(kuò)展表指針(trieptr)兩部分組成的。(2)以IP地址的高16位組合為偏移進(jìn)入64k表,判斷該表項(xiàng)中的擴(kuò)展表指針是否等于0xffff?若是,進(jìn)入第(3)操作步驟;若否,進(jìn)入第(4)操作步驟;(3)判斷該表項(xiàng)中的路由索引,如果該路由索引的值等于0xffff,表示沒有路由項(xiàng),如果該路由索引的值不等于0xffff,則其數(shù)值即為路由表的指向;(4)由64k表中的擴(kuò)展指針的值作為查找擴(kuò)展表的起始地址,以該IP地址的后續(xù)4位為偏移在擴(kuò)展表繼續(xù)查找,同時設(shè)置一個計(jì)數(shù)為0;(5)查找擴(kuò)展表中的擴(kuò)展表指針是否等于0xffff?若是,進(jìn)入第(6)操作步驟;若否,進(jìn)入第(7)操作步驟;(6)在擴(kuò)展表中的路由索引欄查找,如果該路由索引的值等于0xffff,表示沒有路由項(xiàng),如果該路由索引的值不等于0xffff,則其數(shù)值即為路由表的指向;(7)將上一次查找時的擴(kuò)展表里的擴(kuò)展指針作為下一級擴(kuò)展表的起始地址繼續(xù)進(jìn)行查找循環(huán),同時,進(jìn)行計(jì)數(shù)加1的操作;(8)判斷該計(jì)數(shù)是否大于或等于4?若否,進(jìn)入第(5)操作步驟,繼續(xù)進(jìn)行查找循環(huán);若是,進(jìn)入第(9)操作步驟;(9)表示沒有找到路由表,并結(jié)束該次查找。本發(fā)明實(shí)現(xiàn)方法的特點(diǎn)是只需建立兩個結(jié)構(gòu)簡單、且數(shù)據(jù)內(nèi)容基本相同的查找表,其操作步驟簡單、明了,且快速、有效,不但能夠減小查找路由表格所占用的大量的內(nèi)存空間,同時也大大提高了系統(tǒng)路由的效率。上述的路由表是采用IP地址進(jìn)行查找,支持8k路由表項(xiàng)。所以,本發(fā)明的實(shí)現(xiàn)方法是在減小內(nèi)存空間的同時,又提高路由效率作為出發(fā)點(diǎn),根據(jù)IP地址進(jìn)行快速的路由查表來提高整個系統(tǒng)的路由效率。該方法已經(jīng)在申請人研制的接入服務(wù)器上進(jìn)行了長時間的實(shí)施試驗(yàn),取得了很好的效果,實(shí)現(xiàn)了發(fā)明目的。實(shí)施試驗(yàn)的實(shí)踐證明,本發(fā)明的方法具有很好的實(shí)用性和可靠性,具有很好的推廣應(yīng)用前景。權(quán)利要求1.一種基于IP地址實(shí)現(xiàn)快速路由查找的方法,其特征在于該方法是通過建立兩個表格64k表(64ktable)和擴(kuò)展表(Trietable)而實(shí)現(xiàn)的首先以欲查找路由的目的IP地址的高16位作為偏移,在64k表中定位表項(xiàng),并判斷該表項(xiàng)中的擴(kuò)展表指針是否等于擴(kuò)展表指針預(yù)設(shè)值?若是,則根據(jù)該表項(xiàng)中記錄的路由索引,找到其路由表;若否,則根據(jù)該表項(xiàng)中的擴(kuò)展表指針,找到下一級擴(kuò)展表的基址,再利用IP地址的后續(xù)4位組合作為偏移在擴(kuò)展表中定位表項(xiàng),并判斷該表項(xiàng)中的擴(kuò)展表指針是否等于擴(kuò)展表指針預(yù)設(shè)值?若是,則根據(jù)該表項(xiàng)中記錄的路由索引,找到其路由表;若否,則根據(jù)該表項(xiàng)中的擴(kuò)展表指針,找到下一級擴(kuò)展表的基址,再利用IP地址的下一個后續(xù)4位組合作為偏移,繼續(xù)進(jìn)行查找循環(huán),直至找到最匹配的路由,或在其循環(huán)結(jié)束仍然沒有找到路由表為止。2.根據(jù)權(quán)利要求1所述的基于IP地址實(shí)現(xiàn)快速路由查找的方法,其特征在于所述的64k表和擴(kuò)展表中的每一個表項(xiàng)都是由路由索引(routerindex)和擴(kuò)展表指針(trieptr)兩部分組成的。3.根據(jù)權(quán)利要求1所述的基于IP地址實(shí)現(xiàn)快速路由查找的方法,其特征在于所述的64k表和擴(kuò)展表的結(jié)構(gòu)是相同的,該兩個表的每個表項(xiàng)都是一個32位的長字,其中高16位(16-31位)是路由索引,低16位(0-15位)是擴(kuò)展表指針。4.根據(jù)權(quán)利要求3所述的基于IP地址實(shí)現(xiàn)快速路由查找的方法,其特征在于所述表項(xiàng)的高16位(16-31位)路由索引的標(biāo)識是指向路由表的索引,其初始化為路由索引預(yù)設(shè)值,當(dāng)路由索引等于路由索引預(yù)設(shè)值時,表示沒有路由項(xiàng),當(dāng)路由索引不等于路由索引預(yù)設(shè)值時,其數(shù)值為所查表的索引。5.根據(jù)權(quán)利要求3所述的基于IP地址實(shí)現(xiàn)快速路由查找的方法,其特征在于所述表項(xiàng)的低16位(0-15位)是擴(kuò)展表指針,其初始化為擴(kuò)展表指針預(yù)設(shè)值,當(dāng)擴(kuò)展表指針等于擴(kuò)展表指針預(yù)設(shè)值時,表示不需要查找下一級擴(kuò)展表,當(dāng)擴(kuò)展表指針不等于擴(kuò)展表指針預(yù)設(shè)值時,表示需要繼續(xù)進(jìn)行更長的查找,且該擴(kuò)展表指針的值為下一級擴(kuò)展表的起始地址。6.根據(jù)權(quán)利要求1、2、3、4或5所述的基于IP地址實(shí)現(xiàn)快速路由查找的方法,其特征在于所述的擴(kuò)展表指針預(yù)設(shè)值和路由索引預(yù)設(shè)值都為0xffff。7.根據(jù)權(quán)利要求1所述的基于IP地址實(shí)現(xiàn)快速路由查找的方法,其特征在于該方法包括有下列操作步驟(1)首先執(zhí)行初始化操作建立實(shí)現(xiàn)快速查找算法的兩個表格64k表(64ktable)和擴(kuò)展表(Trietable);該64k表和擴(kuò)展表的每一表項(xiàng)都是由兩部分組成路由索引(routerindex)和擴(kuò)展表指針(trieptr),其中64k表共有64k項(xiàng),每一項(xiàng)以IP地址的高16位項(xiàng)作為索引,占用4×64k字節(jié),共256k字節(jié);而擴(kuò)展表共有8k個,每個表有16項(xiàng),共占用8k×1×16×4=512k字節(jié);(2)以IP地址的高16位組合為偏移進(jìn)入64k表,判斷該表項(xiàng)中的擴(kuò)展表指針是否等于0xffff?若是,進(jìn)入第(3)操作步驟;若否,進(jìn)入第(4)操作步驟;(3)判斷該表項(xiàng)中的路由索引,如果該路由索引的值等于0xffff,表示沒有路由項(xiàng),如果該路由索引的值不等于0xffff,則其數(shù)值即為路由表的指向;(4)由64k表中的擴(kuò)展指針的值作為查找擴(kuò)展表的起始地址,以該IP地址的后續(xù)4位為偏移在擴(kuò)展表繼續(xù)查找,同時設(shè)置一個計(jì)數(shù)為0;(5)查找擴(kuò)展表中的擴(kuò)展表指針是否等于0xffff?若是,進(jìn)入第(6)操作步驟;若否,進(jìn)入第(7)操作步驟;(6)在擴(kuò)展表中的路由索引欄查找,如果該路由索引的值等于0xffff,表示沒有路由項(xiàng),如果該路由索引的值不等于0xffff,則其數(shù)值即為路由表的指向;(7)將上一次查找時的擴(kuò)展表里的擴(kuò)展指針作為下一級擴(kuò)展表的起始地址繼續(xù)進(jìn)行查找循環(huán),同時,進(jìn)行計(jì)數(shù)加1的操作;(8)判斷該計(jì)數(shù)是否大于或等于4?若否,進(jìn)入第(5)操作步驟,繼續(xù)進(jìn)行查找循環(huán);若是,進(jìn)入第(9)操作步驟;(9)表示沒有找到路由表,并結(jié)束該次查找。全文摘要一種基于IP地址實(shí)現(xiàn)快速路由查找的方法,該方法是通過建立兩個表格64k表和擴(kuò)展表而實(shí)現(xiàn)的先以欲查找路由的目的IP地址的高16位作為偏移,在64k表中定位表項(xiàng),判斷該表項(xiàng)中的擴(kuò)展表指針是否等于Oxffff?若是,則根據(jù)該表項(xiàng)中記錄的路由索引,找到其路由表;若否,則根據(jù)該表項(xiàng)中的擴(kuò)展表指針,找到下一級擴(kuò)展表的基址,再利用IP地址的后續(xù)4位組合作為偏移在擴(kuò)展表中定位表項(xiàng),判斷該表項(xiàng)中的擴(kuò)展表指針是否等于Oxffff?若是,則根據(jù)該表項(xiàng)中記錄的路由索引,找到其路由表;若否,則根據(jù)該表項(xiàng)中的擴(kuò)展表指針,找到下一級擴(kuò)展表的基址,再利用IP地址的下一個后續(xù)4位組合作為偏移,繼續(xù)進(jìn)行查找循環(huán),直至找到匹配路由或在循環(huán)結(jié)束仍沒找到路由表為止。文檔編號H04L12/54GK1414745SQ0210391公開日2003年4月30日申請日期2002年2月7日優(yōu)先權(quán)日2002年2月7日發(fā)明者馬輝,郭東申請人:華為技術(shù)有限公司