專利名稱:一種ip地址管理的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及網(wǎng)絡(luò)技術(shù),特別涉及IP網(wǎng)絡(luò)技術(shù)中用戶IP地址分配管理。
背景技術(shù):
在網(wǎng)絡(luò)應(yīng)用中,每個使用網(wǎng)絡(luò)的用戶都必須有一個ip地址,因此為每個用戶分配一個ip地址就是一個必須解決的問題。在新的IPv6協(xié)議應(yīng)用之前,ip地址太少一直都是一個棘手的問題。為了給每個上網(wǎng)的用戶分配一個ip地址,網(wǎng)絡(luò)服務(wù)提供商通常采用一種動態(tài)分配ip地址的方法。使用該方法的提供商用戶一定數(shù)量的ip地址,如果有用戶上網(wǎng),就為該用戶分配一個ip地址;如果有用戶下網(wǎng),就收回該用戶的ip地址,以便分配給別的請求上網(wǎng)的用戶;如果該提供商的所有的ip地址都已經(jīng)分配給用戶(也就是說,已經(jīng)有太多的用戶把所有的地址都占用了),那么新的用戶就會因為分配不到ip地址而不能上網(wǎng)。因此,為了更好的為用戶服務(wù),如何高效的管理提供商擁有的這個ip地址就顯得很重要了。例如,快速的給用戶分配到一個空閑的ip地址;快速的檢測某個ip地址是否已經(jīng)被占用;快速的回收一個被用戶釋放的ip地址,以便給別的用戶使用等。而且,還有一個問題就是,如何才能夠用盡量少的空間來存儲這些ip地址。因為,查詢速度的快慢與“數(shù)據(jù)的多少”和“占用存儲空間的大小”有著密切的關(guān)系數(shù)據(jù)越少,查詢速度越快;占用的空間越少,查詢的速度也越快。
發(fā)明內(nèi)容
本發(fā)明的目的是提供一種IP地址快速分配、回收,以及查詢狀態(tài)的方法,同時這種方法對存儲空間的要求很低。
本發(fā)明的另一個目的,是提供一種快速分配處理數(shù)據(jù)狀態(tài)的方法,該方法應(yīng)用廣泛,如在交換機(jī)中對信道資源的管理。
本發(fā)明的目的是通過以下技術(shù)方案實現(xiàn)的首先構(gòu)造位圖,給定一個地址池,所包含的地址為a到b,為每一個地址分配一個對應(yīng)位,共有(b-a+1)位,然后兩兩結(jié)合生成高一級的位圖。不能與別的位結(jié)合的,在高一級位圖中單獨占一位,直到最后只有一位為止。
一般地,對于一個包含有N(N>0)個地址的地址池,共需要(log(2,N)向上取整)級位圖(位圖的級別從0開始),每一級位圖包含的位數(shù)n為第0級為n=N,其余第k級為n=(N DIV exp(2,k))+(N MOD 2);其中exp(a,b)表示a的b次冪,例如,exp(2,3)=8;(a MOD b)表示取a對b的余數(shù),例如,13mod 2=1;(a DIV b)表示取a對b的整倍數(shù),例如,13div 2=6;位圖中各位所對應(yīng)的值按照下面的規(guī)則設(shè)置a)如果一個地址被分配出去,則該地址在第0級位圖中所對應(yīng)的位的值為1;否則為0;b)從第0級開始直到最后一級,從左至右兩兩結(jié)合,如果兩個相結(jié)合的位的值都為1,則在高一級位圖中對應(yīng)的位的值就為1;否則為0。如果某一位不能與別的位結(jié)合,則在高一級位圖中對應(yīng)的位的值保持相同。
查找空閑地址,地址池的一個重要作用就是在現(xiàn)有地址范圍內(nèi)查找一個空閑的地址分配給用戶使用。我們可以在上面的位圖中采用下面的方法來實現(xiàn)快速查找如果要查找一個空閑地址,則從最高級位圖開始,如果為1,則說明該地址池下已經(jīng)沒有空閑地址;如果為0,則采用“二分法”(也叫“折半查找法”)察看該位在低一級位圖中所對應(yīng)的位(可能對應(yīng)兩位,也可能對應(yīng)一位),如果有一位為0,則察看該位在更低一級位圖中所對應(yīng)的位,直到找到第0級位圖中為0的那一位,該位所對應(yīng)的地址即為一個空閑地址。
如果要占用一個地址,則把該位的值置為1;然后,按照前述構(gòu)造位圖的方法逐級更新位圖。更新算法的復(fù)雜度是log(2,n)。
釋放一個地址,如果要釋放一個位所對應(yīng)的地址,則把該位的值置為1;然后,按照前述構(gòu)造位圖的方法逐級更新位圖。更新算法的復(fù)雜度也是log(2,n)。
查詢一個地址的狀態(tài),如果要查詢一個地址c是否已經(jīng)被分配出去,則可以在a-b的氛圍內(nèi)算出c相對于a的位置(c-a),然后直接測試第0級位圖中的第(c-a)位的值是否為0,即可直到該地址是否被分配出去。這個算法的復(fù)雜度為1。
采用了本發(fā)明用位圖管理地址池的程序設(shè)計方法,快速高效的完成IP地址的分配、回收、查詢,同時大幅度節(jié)省程序運算所須存儲空間。
圖1為本發(fā)明一種IP地址管理的方法中的構(gòu)造位圖的程序流程示意圖;圖2為本發(fā)明一種IP地址管理的方法中的查找空閑程序流程示意圖;圖3為本發(fā)明一種IP地址管理的方法中的占用一個地址程序流程示意圖;圖4為本發(fā)明一種IP地址管理的方法中的釋放一個地址程序流程示意圖;圖5為本發(fā)明一種IP地址管理的方法中的查詢某個地址狀態(tài)程序流程示意圖;圖6為一組IP地址與地址的狀態(tài);
圖7為17位IP地址構(gòu)成的位圖示意圖;圖8為17位IP地址構(gòu)成的位圖被占用一位示意圖;圖9為17位IP地址構(gòu)成的位圖被釋放一位示意圖;具體實施方式
為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明作進(jìn)一步地詳細(xì)描述。
給定一個地址池,所包含的地址為a到b,為每一個地址分配一個對應(yīng)位,共有N=(b-a+1)位,每一級位圖包含的位數(shù)n為第0級為n=N,其余第k級為n=(N DIV exp(2,k))+(N MOD 2);如圖1,構(gòu)造位圖的步驟如下步驟10初始化位圖級數(shù)k=0;0級位圖的位數(shù)n=總的地址數(shù)N;步驟11如果k級位圖的位數(shù)n小于等于1,執(zhí)行步驟15;步驟12生成k級位圖;步驟13位圖級數(shù)k加1;步驟14計算k級位圖的位數(shù),n=(N DIV exp(2,k))+(N MOD 2),執(zhí)行步驟11;步驟15如果k級位圖的位數(shù)n不等于1,執(zhí)行步驟17;步驟16生成k級位圖;步驟17程序結(jié)束,完成位圖構(gòu)建。
如圖2,查找空閑地址的步驟如下步驟20根據(jù)地址數(shù)N計算最高級別數(shù)K,初始化k=K;步驟21初始化計數(shù)器i=0;
步驟22如果k<0,執(zhí)行步驟29;步驟23如果位(k,i)的值不等于1,執(zhí)行步驟27;步驟24i加1;步驟25i小于等于本級最大位數(shù)n,執(zhí)行步驟28步驟26位(k,i)的值=1,執(zhí)行步驟28步驟27k減1,i=2*i,執(zhí)行步驟22步驟28沒有找到空閑地址,返回失??;步驟29找到空閑地址(i/2),返回成功。
如圖3,如果要占用一個地址,則把該位的值置為1;然后,按照前述構(gòu)造位圖的方法逐級更新位圖。
具體操作的程序如下步驟30根據(jù)地址數(shù)N計算最高級別數(shù)K,k=K,計算要釋放的地址在0級位圖對應(yīng)的為i;步驟31n表示級數(shù),初始化n=0;步驟32L>K,執(zhí)行步驟37步驟33位(n,i)=1;步驟34i的伙伴位的值不等于1,執(zhí)行步驟37步驟35i=(i/2向下取整);步驟36n=n+1,執(zhí)行步驟37步驟37程序結(jié)束其中伙伴位是指構(gòu)造位圖時兩兩互相結(jié)合的位.例如第0位的伙伴位是第1位;第7位的伙伴位是第6位;
釋放一個地址,在圖4中,如果要釋放一個位所對應(yīng)的地址,則把該位的值置為1;然后,按照前述構(gòu)造位圖的方法逐級更新位圖。更新算法的復(fù)雜度也是log(2,n)。
具體操作的程序如下步驟40根據(jù)地址數(shù)N計算最高級別數(shù)K,計算要釋放的地址在0級位圖對應(yīng)的為i;步驟41n表示級數(shù),初始化n=0;步驟42n>K,執(zhí)行步驟47步驟43位(n,i)=0;步驟44i的伙伴位的值不等于1,執(zhí)行步驟47步驟45i=(i/2向下取整);步驟46n=n+1,執(zhí)行步驟47步驟47程序結(jié)束如圖5,查詢一個地址的狀態(tài),具體操作的程序如下步驟50計算該地址在0級位圖中對應(yīng)的位i;步驟51位(0,i)的值不等于1,該位空閑,執(zhí)行步驟53步驟52該位被占用步驟53程序結(jié)束其中i等于該地址相對與IP起始地址的個數(shù)。
如圖6,為17個IP地址,和地址的狀態(tài),首先為17個地址各生成一位,因此第0級有17位;然后,從左至右兩兩結(jié)合生成第1級的位圖,因為第0級的最后一位不能與別的位結(jié)合,所以在第1級位圖中單獨占一位,因此,第1級位圖有9位;依次類推,當(dāng)達(dá)到第5級時只有1位了,于是終止位圖的生成,最后形成的位圖如圖7。如果把每一級位圖都存放在字節(jié)中,則第0級需要3個字節(jié)(17=2*8+1),第1級需要2個字節(jié)(9=8+1),第2級需要1個字節(jié)(5<8),第3級需要1個字節(jié)(3<8),第4級需要1個字節(jié),第5級需要1個字節(jié),共需要9個字節(jié)。
如果一個地址被分配出去,則該地址在第0級位圖中所對應(yīng)的位的值為1;否則為0;從第0級開始直到最后一級,從左至右兩兩結(jié)合,如果兩個相結(jié)合的位的值都為1,則在高一級位圖中對應(yīng)的位的值就為1;否則為0。如果某一位不能與別的位結(jié)合,則在高一級位圖中對應(yīng)的位的值保持相同。
查找一個空閑地址的步驟如下。如圖7所示。
1a)第5級位圖中位(5,0)的值為0,說明該地址池中有空閑地址;1b)在第4級位圖中找到該位(5,0)所對應(yīng)的兩個位(4,0)和(4,1),其中(4,0)的值為0,說明該位下面有空閑地址;1c)在第3級位圖中找到該位(4,0)所對應(yīng)的兩個位(3,0)和(3,1),兩個位的值都為0,說明有空閑地址,則選一個位(3,0);1d)在第2級位圖中找到該位(3,0)所對應(yīng)的兩個位(2,0)和(2,1),其中(2,0)的值為0,說明該位下面有空閑地址;1e)在第1級位圖中找到該位(2,0)所對應(yīng)的兩個位(1,0)和(1,1),兩個位的值都為0,說明有空閑地址,則選一個位(1,0);1f)在第0級位圖中找到該位(1,0)所對應(yīng)的兩個位(0,0)和(1,1),其中(0,0)的值為0,而且已經(jīng)到了第0級位圖,則該位(0,0)所對應(yīng)的就是一個空閑地址。
占用一個地址,在圖7中,如果要占用(0,0)位所對應(yīng)的地址,則把該位的值置為1;然后,按照前述構(gòu)造位圖的方法逐級更新位圖。最后得到圖8的位圖。
具體過程為2a)第0級位圖中位(0,0)的值設(shè)為1,因為和該位結(jié)合的該位(0,1)的值為1,所以繼續(xù)更新高一級位圖;2b)在第1級位圖中找到位(0,0)和(0,1)對應(yīng)的位為(1,0),并把該位的值設(shè)為1,因為與位(1,0)結(jié)合的位(1,1)的值為0,所以不用再繼續(xù)更新位圖,于是更新結(jié)束。
釋放一個地址,在圖7中,如果要釋放(0,5)位所對應(yīng)的地址,則把該位的值置為1;然后,按照前述構(gòu)造位圖的方法逐級更新位圖。最后得到如圖9的位圖。
具體過程為3a)第0級位圖中位(0,5)的值設(shè)為0,因為和該位結(jié)合的該位(0,4)的值為1,所以繼續(xù)更新高一級位圖;3b)在第1級位圖中找到位(0,4)和(0,5)對應(yīng)的位為(1,2),并把該位的值設(shè)為0,因為與位(1,2)結(jié)合的位(1,3)的值為1,所以需要繼續(xù)更新高一級位圖;3c)在第2級位圖中找到位(1,2)和(1,3)對應(yīng)的位為(2,1),并把該位的值設(shè)為0,因為與位(2,1)結(jié)合的位(2,0)的值為0,所以不用繼續(xù)更新高一級位圖,于是更新結(jié)束。
上面結(jié)合具體的示例對本發(fā)明進(jìn)行了闡述,技術(shù)人員可以很容易的將本發(fā)明應(yīng)用到其他數(shù)據(jù)處理的領(lǐng)域,如交換機(jī)中線路資源的管理,移動交換機(jī)中本地用戶和訪問用戶的管理等等。
權(quán)利要求
1.一種數(shù)據(jù)狀態(tài)管理方法,其特征在于,構(gòu)造一個位圖來表示數(shù)據(jù)的狀態(tài),然后通過對位圖的操作來完成數(shù)據(jù)狀態(tài)的查找、分配、回收和查詢。所述位圖的構(gòu)造為用位圖的0級對應(yīng)數(shù)據(jù)的狀態(tài),高一級位圖由低級位圖兩兩相邏輯與生成,低級位圖中的最后一位,如果是奇數(shù)位,直接在高一級位圖中單獨占一位,所述位圖的最高級位圖只有一位。
2.一種IP地址管理的方法,其特征在于,所述方法包括構(gòu)造位圖用位圖的狀態(tài)來表示IP地址的狀態(tài)信息。在位圖的基礎(chǔ)上完成IP地址的查找空閑地址、分配、回收、地址狀態(tài)查詢操作。
3.根據(jù)權(quán)利要求2所述的IP地址管理方法,其特征在于,所述的構(gòu)造位圖方法為為每一個IP地址分配一個0級對應(yīng)位來表示狀態(tài),然后兩兩相邏輯與生成高一級的位圖,不能與別的位結(jié)合的,在高一級位圖中單獨占一位,直到最后只有一位為止,在第0級位圖中,所對應(yīng)的位的值為1表示該位對應(yīng)IP地址已經(jīng)分配,為0表示該位對應(yīng)IP地址未分配。
4.根據(jù)權(quán)利要求2所述的IP地址管理方法,其特征在于,所述的IP地址查找空閑地址方法為從最高級位圖開始,如果為1,則說明該地址池下已經(jīng)沒有空閑地址;如果為0,則察看該位在低一級位圖中所對應(yīng)的位,如果有一位為0,則察看該位在更低一級位圖中所對應(yīng)的位,直到找到第0級位圖中為0的那一位,所對應(yīng)的地址即為一個空閑地址。
5.根據(jù)權(quán)利要求2所述的IP地址管理方法,其特征在于,所述的IP地址分配的方法為將該IP地址對應(yīng)的0級位圖中的對應(yīng)位置為1,然后兩兩相邏輯與生成高一級的位圖,不能與別的位結(jié)合的,在高一級位圖中單獨占一位,直到最后只有一位為止。
6.根據(jù)權(quán)利要求2所述的IP地址管理方法,其特征在于,所述的IP地址回收的方法為將該IP地址對應(yīng)的0級位圖中的對應(yīng)位置為0,然后兩兩相邏輯與生成高一級的位圖,不能與別的位結(jié)合的,在高一級位圖中單獨占一位,直到最后只有一位為止。
7.根據(jù)權(quán)利要求2所述的IP地址管理方法,其特征在于,所述的IP地址狀態(tài)查詢的方法為查詢該IP地址對應(yīng)的0級位圖中的對應(yīng)位置的值,所對應(yīng)的位的值為1表示該位對應(yīng)IP地址已經(jīng)分配,為0表示該位對應(yīng)IP地址未分配。
全文摘要
本發(fā)明涉及IP地址管理,公布了一種IP地址數(shù)據(jù)狀態(tài)存儲、查詢、操作的計算機(jī)程序設(shè)計方法,使用這種方法,節(jié)省了程序運行所需要的空間,降低了查找空閑IP地址、釋放IP地址、查詢IP地址狀態(tài)運算的復(fù)雜度。這種設(shè)計方法,以位圖的形式存儲IP地址的狀態(tài),通過查詢和操作位圖信息,快速高效的完成IP地址的分配、回收、查詢,同時大幅度節(jié)省程序運算所須存儲空間。
文檔編號H04L12/28GK1671114SQ200410030360
公開日2005年9月21日 申請日期2004年3月19日 優(yōu)先權(quán)日2004年3月19日
發(fā)明者張昕 申請人:華為技術(shù)有限公司