專利名稱:一種基于用戶ip地址路由的路由選擇方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)通訊領(lǐng)域,尤其涉及該領(lǐng)域中的一種路由選擇方法。
本發(fā)明所提方法包括以下步驟第一步根據(jù)設(shè)備允許接入的用戶數(shù)初始化路由信息表,將用戶IP地址的四個(gè)字段從高到低依次標(biāo)記為a1,a2,a3,a4;
第二步建立對(duì)應(yīng)關(guān)系建立第一層空間,以用戶IP地址的a3、a4字段唯一確定第一層空間中的一塊存儲(chǔ)空間,使用戶IP地址的a3、a4字段和該第一層空間建立一一對(duì)應(yīng)關(guān)系;第三步判斷是否有新活動(dòng)用戶加入,如果不是則轉(zhuǎn)第五步;第四步添加用戶關(guān)系1.設(shè)置指針PTR(x)指向該新活動(dòng)用戶的路由表項(xiàng)信息;然后根據(jù)該新活動(dòng)用戶的IP地址的a3(x),a4(x)字段確定與其一一對(duì)應(yīng)的存儲(chǔ)空間N,如果該存儲(chǔ)空間N沒(méi)有另一個(gè)原活動(dòng)用戶的記錄,則將指針PTR(x)存入該存儲(chǔ)空間N;2.如果該存儲(chǔ)空間N已存有另一個(gè)原活動(dòng)用戶的記錄,則建立第二層空間;同時(shí)在存儲(chǔ)空間N里填入一個(gè)指向該第二層空間的信息;將新活動(dòng)用戶的IP地址a2字段與第二層空間建立一一對(duì)應(yīng)關(guān)系;如果指針PTR(x)指向的位置沒(méi)有一個(gè)或多個(gè)活動(dòng)用戶的信息,則把指向新活動(dòng)用戶路由表項(xiàng)信息的指針PTR(x)填入第二層空間中相應(yīng)的位置;3.如果指針PTR(x)指向的位置已經(jīng)有一個(gè)或多個(gè)活動(dòng)用戶的信息,則建立第三層空間,將新活動(dòng)用戶的IP地址a1字段與第三層空間建立一一對(duì)應(yīng)關(guān)系,填入指向新活動(dòng)用戶路由表項(xiàng)的信息;第五步判斷是否有活動(dòng)用戶的數(shù)據(jù)包進(jìn)來(lái),如果不是則轉(zhuǎn)第七步;第六步查找用戶關(guān)系,根據(jù)數(shù)據(jù)包的用戶IP地址來(lái)決定數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑;1.首先用該地址的a3、a4字段在第一層空間里找到對(duì)應(yīng)的位置,如果該位置為空,說(shuō)明該用戶不存在,丟棄該數(shù)據(jù)包;2.如果該位置已存有一個(gè)指向路由表項(xiàng)的指針,用該指針指向的路由表項(xiàng)里的用戶IP地址進(jìn)行精確匹配,如果符合,即可認(rèn)為該指針指向的路由信息是該用戶的,根據(jù)該信息來(lái)進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā);3.如果該位置存的是指向一個(gè)第二層空間的指針,則用該指針和該用戶的a2字段定位的位置中取出另一指針,如果該另一指針是指向某用戶路由表項(xiàng)信息,即可進(jìn)行步驟2中的操作;
4.如果3中再次定位的指針是指向第三層空間的指針,則用該指針和a1字段繼續(xù)定位,取出該位置存放的內(nèi)容即為指向x用戶的路由信息的指針;第七步判斷是否需要?jiǎng)h除用戶關(guān)系,如果不是,則轉(zhuǎn)第九步;第八步刪除用戶關(guān)系,當(dāng)需要?jiǎng)h除一個(gè)活動(dòng)用戶的記錄時(shí),首先用該用戶的IP地址進(jìn)行用戶關(guān)系查找,找到該用戶的路由表信息,標(biāo)記為空;1.如果該指針是在第一層空間找到的,刪除過(guò)程即可結(jié)束;2.如果該指針是在第二層空間或第三層空間,還需要判斷這個(gè)空間里還存有多少個(gè)活動(dòng)用戶記錄,在空間建立時(shí)用一個(gè)臨時(shí)變量記錄,在用戶記錄填加時(shí)加一,在記錄刪除時(shí)減一;3.如果該臨時(shí)變量為1,說(shuō)明該空間已不需要,將記錄取出,返回到上一層空間,將該記錄存放在上一層空間的相應(yīng)位置;第九步結(jié)束。
所述的第一層空間、第二層空間和第三層空間都是指內(nèi)存中一塊連續(xù)的存儲(chǔ)空間。
在所述的步驟二中,用戶IP地址的a3、a4字段和第一層空間通過(guò)指針建立一一對(duì)應(yīng)關(guān)系。
本發(fā)明所述的方法通過(guò)設(shè)定三層空間存儲(chǔ)用戶IP路由地址,并采用靜態(tài)索引表的方式,最多只需讀三次就可以找到對(duì)應(yīng)的路由表項(xiàng),使得任何表項(xiàng)的查找非??焖?。尤其是在目前用戶的IP地址的分配方案中,對(duì)于容量不大的用戶接入,IP地址中低16bit重復(fù)的概率非常小,甚至可以說(shuō)沒(méi)有,所以需要建立的二級(jí)表和三級(jí)表會(huì)非常少,不需要占用額外的存儲(chǔ)空間,可認(rèn)為在64K量級(jí)。從而極大的節(jié)省了采用源地址路由的小容量匯接設(shè)備里需要的硬件搜索引擎,降低了整個(gè)系統(tǒng)的硬件復(fù)雜度和成本,同時(shí)具有和硬件搜索引擎完全相同的搜索效率,提高了整個(gè)系統(tǒng)的性能。
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明進(jìn)行進(jìn)一步描述。
根據(jù)全球IP地址的管理方法,一般某一ISP或某一區(qū)域分配得到的IP地址都是屬于同一個(gè)B類地址或比較有限的幾個(gè)B類地址。所以基于用戶IP地址路由的接入層及匯接層設(shè)備,可以利用這種特殊性,采用本發(fā)明所述的方法來(lái)實(shí)現(xiàn)對(duì)IP地址的快速查找。在
圖1中,首先根據(jù)設(shè)備允許接入的用戶數(shù)初始化路由信息表。由于IP地址是由四個(gè)字節(jié)組成,把這四個(gè)字節(jié)從高到低依次標(biāo)記為a1,a2,a3,a4,目的是根據(jù)收到的數(shù)據(jù)包里的用戶的IP地址找到對(duì)應(yīng)的路由信息。在初始化完路由信息表之后,就開(kāi)始建立用戶IP地址與存儲(chǔ)空間之間的對(duì)應(yīng)關(guān)系,建立64K個(gè)連續(xù)的存儲(chǔ)空間(每個(gè)存儲(chǔ)空間的大小視具體需要而定,一般為幾個(gè)字節(jié)),這個(gè)空間稱為第一層空間,用用戶IP地址的a3、a4字段和這64K個(gè)存儲(chǔ)空間建立一一對(duì)應(yīng)關(guān)系。然后判斷是否添加用戶關(guān)系,當(dāng)有一個(gè)新的活動(dòng)用戶x加入時(shí),就進(jìn)行用戶關(guān)系的添加,先得到一個(gè)指針PTR(x)指向該用戶的路由表項(xiàng)信息,再根據(jù)該用戶的IP地址的a3(x),a4(x)字段找到與其一一對(duì)應(yīng)的存儲(chǔ)空間N,把PTR(x)存入該存儲(chǔ)空間N;如果該存儲(chǔ)空間N已存有一個(gè)活動(dòng)用戶y的記錄,說(shuō)明x用戶和y用戶的a3、a4字段相同,這時(shí)候就要用a2字段來(lái)區(qū)分這兩個(gè)用戶,再建立第二層空間,在存儲(chǔ)空間N里填入一個(gè)指向這個(gè)空間的信息。用a2字段和這個(gè)二層空間建立一一對(duì)應(yīng)關(guān)系;把指向x用戶和y用戶路由表項(xiàng)的指針?lè)謩e填入相應(yīng)的位置;如果該位置沒(méi)有其他活動(dòng)用戶的信息,則在二層空間中相應(yīng)位置上填入指向x用戶路由表項(xiàng)的指針;如果在二層空間中所指向的位置已經(jīng)有一個(gè)或活動(dòng)用戶的信息,則同理用a1建立三層空間,找到相應(yīng)的三層空間,填入指向x用戶路由表項(xiàng)的信息。
對(duì)于用戶關(guān)系的查找,本方法按下述方式處理當(dāng)一個(gè)活動(dòng)用戶的數(shù)據(jù)包進(jìn)來(lái)時(shí),根據(jù)數(shù)據(jù)包的用戶IP地址來(lái)決定數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑,并且采用和前面添加用戶關(guān)系同樣的定位方法進(jìn)行查找;如果不是查找用戶關(guān)系,則判斷是否進(jìn)行用戶關(guān)系的刪除,當(dāng)需要?jiǎng)h除一個(gè)活動(dòng)用戶的記錄時(shí),首先用該用戶的IP地址按查找用戶關(guān)系的步驟找到該用戶的路由表信息,將之標(biāo)記為空;如果該指針是在第一層空間找到的,刪除過(guò)程即可結(jié)束;如果該指針是在第二層或第三層的空間,還需要判斷這個(gè)空間里還存有多少個(gè)活動(dòng)用戶記錄,這可以在空間建立時(shí)用一個(gè)臨時(shí)變量記錄,在用戶記錄填加時(shí)加一,在記錄刪除時(shí)減一;如果該臨時(shí)變量為1,說(shuō)明該空間已不需要,將記錄取出,返回到上一層空間,將該記錄存放在上一層空間的相應(yīng)位置,從而完成刪除過(guò)程。
第二步對(duì)應(yīng)關(guān)系建立建立一個(gè)64K 32bit的存儲(chǔ)空間M,即64K個(gè)32bit大小的空間。用源IP地址的a3、a4字段和存儲(chǔ)空間M的64K個(gè)位置建立一一對(duì)應(yīng)關(guān)系(a3、a4字段的大小為65535,剛好是64K,能夠?qū)崿F(xiàn)這種對(duì)應(yīng)關(guān)系)。
第三步判斷是否進(jìn)行用戶關(guān)系的添加,如果不是,則轉(zhuǎn)第五步;第四步用戶關(guān)系添加1.當(dāng)有一個(gè)新的活動(dòng)用戶x加入時(shí),首先得到一個(gè)指針PTRx指向該用戶的路由表項(xiàng)信息。然后根據(jù)該用戶的IP地址的a3x,a4x字段找到對(duì)應(yīng)的32bit空間,如果該位置為空,說(shuō)明目前的活動(dòng)用戶的IP地址沒(méi)有和a3x及a4x相同的。這樣,就直接把PTRx存入該位置;2.如果該位置已存有一個(gè)活動(dòng)用戶y的記錄,說(shuō)明x用戶和y用戶的a3、a4字段相同,這時(shí)候就要用a2字段來(lái)區(qū)分這兩個(gè)用戶;3.建立一個(gè)256個(gè)32bit大小的空間,這個(gè)空間稱為第二層空間,把這個(gè)空間的起始地址填入存儲(chǔ)空間M中的記錄里。然后用a2字段和這256個(gè)位置建立一一對(duì)應(yīng)關(guān)系;把指向x用戶和y用戶路由表項(xiàng)的指針?lè)謩e填入相應(yīng)的位置;4.如果該位置存的是指向一個(gè)256 32bit存儲(chǔ)空間的指針,說(shuō)明此時(shí)有兩個(gè)以上的活動(dòng)用戶和x用戶具有相同的a3、a4字段,根據(jù)該指針和x用戶的a1字段合起來(lái)指向的位置則用于存放指向x用戶路由表項(xiàng)的指針;5.如果4中所指向的位置已經(jīng)有一個(gè)活動(dòng)用戶的指針或者是指向另一個(gè)25632bit存儲(chǔ)空間的指針,說(shuō)明此時(shí)有多個(gè)活動(dòng)用戶和x用戶的a2、a3、a4字段都相同,同3或4進(jìn)行相同的定位,填入指向x用戶路由表項(xiàng)的指針;第五步判斷是否要查找用戶關(guān)系,如果不是,則轉(zhuǎn)第七步;第六步用戶關(guān)系查找當(dāng)一個(gè)活動(dòng)用戶x的數(shù)據(jù)包進(jìn)來(lái)時(shí),根據(jù)數(shù)據(jù)包的源IP地址來(lái)決定數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑;1.首先用該地址的a3、a4字段在存儲(chǔ)空間M里找到對(duì)應(yīng)的位置,如果該位置為空,說(shuō)明x用戶不存在,丟棄該數(shù)據(jù)包;2.如果該位置已存有一個(gè)指向路由表項(xiàng)的指針,用該指針指向的路由表項(xiàng)里的用戶IP地址進(jìn)行精確匹配,如果符合,即可認(rèn)為該指針指向的路由信息是x用戶的,可以根據(jù)該信息來(lái)進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā);3.如果該位置存的是指向一個(gè)256 32bit存儲(chǔ)空間的指針,用該指針和x用戶的a2字段定位的位置中取出另一個(gè)指針,如果該指針是指向某用戶的路由表項(xiàng)信息,即可進(jìn)行3中的操作;4.如果3中再次定位的指針仍是指向一個(gè)256 32bit存儲(chǔ)空間的指針,用該指針和a1字段繼續(xù)定位,取出該位置存放的內(nèi)容即為指向x用戶的路由信息的指針;第七步用戶關(guān)系刪除1.當(dāng)需要?jiǎng)h除一個(gè)活動(dòng)用戶的記錄時(shí),首先用該用戶的IP地址按第四步的步驟找到指向該用戶路由信息的指針,將該路由表項(xiàng)標(biāo)記為空;2.如果該指針是在M里找到的,刪除過(guò)程即可結(jié)束3.如果該指針是在第二層或第三層的空間,還需要判斷這個(gè)空間里還存有多少個(gè)活動(dòng)用戶記錄,這可以在空間建立時(shí)用一個(gè)臨時(shí)變量記錄,在用戶記錄填加時(shí)加一,在記錄刪除時(shí)減一;4.如果該臨時(shí)變量為1,說(shuō)明該空間已不需要,將記錄取出,返回到上一層空間,將該記錄存放在上一層空間的相應(yīng)位置。
權(quán)利要求
1.一種基于用戶IP地址路由的路由選擇方法,包括以下步驟第一步根據(jù)設(shè)備允許接入的用戶數(shù)初始化路由信息表,將用戶IP地址的四個(gè)字段從高到低依次標(biāo)記為a1,a2,a3,a4;第二步建立對(duì)應(yīng)關(guān)系建立第一層空間,以用戶IP地址的a3、a4字段唯一確定第一層空間中的一塊存儲(chǔ)空間,使用戶IP地址的a3、a4字段和該第一層空間建立一一對(duì)應(yīng)關(guān)系;第三步判斷是否有新活動(dòng)用戶加入,如果不是則轉(zhuǎn)第五步;第四步添加用戶關(guān)系1.設(shè)置指針PTR(x)指向該新活動(dòng)用戶的路由表項(xiàng)信息;然后根據(jù)該新活動(dòng)用戶的IP地址的a3(x),a4(x)字段確定與其一一對(duì)應(yīng)的存儲(chǔ)空間N,如果該存儲(chǔ)空間N沒(méi)有另一個(gè)原活動(dòng)用戶的記錄,則將指針PTR(x)存入該存儲(chǔ)空間N;2.如果該存儲(chǔ)空間N已存有另一個(gè)原活動(dòng)用戶的記錄,則建立第二層空間;同時(shí)在存儲(chǔ)空間N里填入一個(gè)指向該第二層空間的信息;將新活動(dòng)用戶的IP地址a2字段與第二層空間建立一一對(duì)應(yīng)關(guān)系;如果指針PTR(x)指向的位置沒(méi)有一個(gè)或多個(gè)活動(dòng)用戶的信息,則把指向新活動(dòng)用戶路由表項(xiàng)信息的指針PTR(x)填入第二層空間中相應(yīng)的位置;3.如果指針PTR(x)指向的位置已經(jīng)有一個(gè)或多個(gè)活動(dòng)用戶的信息,則建立第三層空間,將新活動(dòng)用戶的IP地址a1字段與第三層空間建立一一對(duì)應(yīng)關(guān)系,填入指向新活動(dòng)用戶路由表項(xiàng)的信息;第五步判斷是否有活動(dòng)用戶的數(shù)據(jù)包進(jìn)來(lái),如果不是則轉(zhuǎn)第七步;第六步查找用戶關(guān)系,根據(jù)數(shù)據(jù)包的用戶IP地址來(lái)決定數(shù)據(jù)包的轉(zhuǎn)發(fā)路徑;1.首先用該地址的a3、a4字段在第一層空間里找到對(duì)應(yīng)的位置,如果該位置為空,說(shuō)明該用戶不存在,丟棄該數(shù)據(jù)包;2.如果該位置已存有一個(gè)指向路由表項(xiàng)的指針,用該指針指向的路由表項(xiàng)里的用戶IP地址進(jìn)行精確匹配,如果符合,即可認(rèn)為該指針指向的路由信息是該用戶的,根據(jù)該信息來(lái)進(jìn)行數(shù)據(jù)包的轉(zhuǎn)發(fā);3.如果該位置存的是指向一個(gè)第二層空間的指針,則用該指針和該用戶的a2字段定位的位置中取出另一指針,如果該另一指針是指向某用戶路由表項(xiàng)信息,即可進(jìn)行步驟2中的操作;4.如果3中再次定位的指針是指向第三層空間的指針,則用該指針和a1字段繼續(xù)定位,取出該位置存放的內(nèi)容即為指向x用戶的路由信息的指針;第七步判斷是否需要?jiǎng)h除用戶關(guān)系,如果不是,則轉(zhuǎn)第九步;第八步刪除用戶關(guān)系,當(dāng)需要?jiǎng)h除一個(gè)活動(dòng)用戶的記錄時(shí),首先用該用戶的IP地址進(jìn)行用戶關(guān)系查找,找到該用戶的路由表信息,標(biāo)記為空;1.如果該指針是在第一層空間找到的,刪除過(guò)程即可結(jié)束;2.如果該指針是在第二層空間或第三層空間,還需要判斷這個(gè)空間里還存有多少個(gè)活動(dòng)用戶記錄,在空間建立時(shí)用一個(gè)臨時(shí)變量記錄,在用戶記錄填加時(shí)加一,在記錄刪除時(shí)減一;3.如果該臨時(shí)變量為1,說(shuō)明該空間已不需要,將記錄取出,返回到上一層空間,將該記錄存放在上一層空間的相應(yīng)位置;第九步結(jié)束。
2.根據(jù)權(quán)利要求1所述的基于用戶IP地址路由的路由選擇方法,其特征在于,所述的所述的第一層空間、第二層空間和第三層空間都是指一塊連續(xù)的存儲(chǔ)空間。
3.根據(jù)權(quán)利要求1所述的基于用戶IP地址路由的路由選擇方法,其特征在于,在所述的第三步中,用戶IP地址的a3、a4字段和第一層空間通過(guò)指針建立一一對(duì)應(yīng)關(guān)系。
全文摘要
本發(fā)明提出一種基于用戶IP地址路由的路由選擇方法,包括1、根據(jù)設(shè)備允許接入的用戶數(shù)初始化路由信息表;2、建立對(duì)應(yīng)關(guān)系;3、判斷是否添加用戶關(guān)系,如否轉(zhuǎn)步驟5;4、添加用戶關(guān)系;5、判斷是否查找用戶關(guān)系,如否轉(zhuǎn)步驟7;6、查找用戶關(guān)系;7、判斷是否刪除用戶關(guān)系,如否轉(zhuǎn)步驟9;8、刪除用戶關(guān)系;9、結(jié)束。本發(fā)明通過(guò)設(shè)定三層空間存儲(chǔ)用戶IP路由地址,并采用靜態(tài)索引表的方式,最多只需讀三次就可以找到對(duì)應(yīng)的路由表項(xiàng),使得表項(xiàng)查找快速,同時(shí)降低了硬件復(fù)雜度和成本,具有和硬件搜索引擎完全相同的搜索效率,提高了整個(gè)系統(tǒng)的性能。
文檔編號(hào)H04L12/24GK1406073SQ0112645
公開(kāi)日2003年3月26日 申請(qǐng)日期2001年8月14日 優(yōu)先權(quán)日2001年8月14日
發(fā)明者嚴(yán)超, 蔡驚哲 申請(qǐng)人:深圳市中興通訊股份有限公司上海第二研究所