專利名稱:一種分布式dhcp中繼的實現(xiàn)方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種分布式DHCP(Dynamic Host Configuration Protocol,動態(tài)主機分配協(xié)議)中繼(RELAY)的實現(xiàn)方法,尤其涉及數(shù)據(jù)通信通訊領(lǐng)域的寬帶接入服務(wù)器產(chǎn)品,同時也適用于其它采用DHCP RELAY接入Internet的數(shù)據(jù)通信產(chǎn)品。
背景技術(shù):
隨著ADSL(Asymmetrical Digital Subscriber Line,非對稱數(shù)字用戶線)、以太網(wǎng)等接入技術(shù)的日益成熟,寬帶接入越來越普及,與此同時,在寬帶接入網(wǎng)開展的IPTV(IP電視)視頻和VoIP(基于IP的語音)業(yè)務(wù)也越來越多。各業(yè)務(wù)的開展需要采用專用的終端實現(xiàn),如視頻業(yè)務(wù)需要使用STB(機頂盒),話音業(yè)務(wù)需要使用IAD(Integrated Access Device,綜合接入設(shè)備),等等。各專用終端在開展業(yè)務(wù)之前要獲取本端的地址信息,然后,才可以利用本端地址開展各種業(yè)務(wù)。
在通信網(wǎng)絡(luò)中,上面這些終端獲取地址通常采用DHCP(動態(tài)主機配置)協(xié)議實現(xiàn)。DHCP協(xié)議有一個Server(服務(wù)器)設(shè)備,所有申請地址的終端設(shè)備是Client(客戶機)端,Server負(fù)責(zé)給全部的Client分配地址。但是這樣的C/S(客戶機/服務(wù)器)模式只能在本地網(wǎng)絡(luò)實現(xiàn),現(xiàn)實應(yīng)用常常是跨網(wǎng)絡(luò)的;另外,地址是非常寶貴的資源,通常是全網(wǎng)統(tǒng)一管理的。不會很小的范圍就配置一臺Server(服務(wù)器)。這樣,就產(chǎn)生了DHCPRELAY(DHCP代理)技術(shù),解決跨網(wǎng)絡(luò)申請地址的需求。
目前,在很多寬帶接入設(shè)備上都提供DHCP RELAY的功能,就是為了滿足上面的組網(wǎng)需要。另外,采用DHCP RELAY方式,減少了主干網(wǎng)絡(luò)上的廣播包,寬帶接入設(shè)備通過此方式,可以參與用戶的管理,識別包的合法性,當(dāng)用戶異常掉線時,能夠通知Server釋放資源。對Server有保護作用,免受黑客攻擊。
一臺寬帶接入設(shè)備能夠與多個網(wǎng)絡(luò)連接,與多臺DHCP Server通信。但是,由于每臺Server都是獨立工作的,那么一臺寬帶接入設(shè)備作為中間的Relay設(shè)備,有可能成為瓶頸。
發(fā)明內(nèi)容
本發(fā)明所要解決的技術(shù)問題在于提供一種分布式DHCP RELAY(中繼)的實現(xiàn)方法,以解決當(dāng)前一臺寬帶接入設(shè)備作為中間的Relay設(shè)備時,出現(xiàn)的瓶頸問題。
為了解決上述問題,本發(fā)明提供了一種分布式DHCP RELAY的實現(xiàn)方法,其特征在于,包括以下步驟(1)對DHCP RELAY設(shè)備上的每個RELAY進程編號,并配置不同的RELAY進程接收與其相對應(yīng)的線卡物理端口的用戶請求包;(2)當(dāng)DHCP RELAY設(shè)備收到用戶請求包時,分析該用戶請求包的線卡物理端口號,然后將該用戶請求包發(fā)送到與該線卡物理端口號對應(yīng)的RELAY進程;(3)該RELAY進程修改請求包中報文的用戶MAC字段,在用戶MAC字段中填寫該RELAY進程編號,把請求包發(fā)給本RELAY進程關(guān)聯(lián)的Server(服務(wù)器)設(shè)備;(4)DHCP RELAY設(shè)備收到Server設(shè)備的應(yīng)答包,提取該應(yīng)答包的報文中用戶MAC字段,并得到該RELAY進程編號,把該應(yīng)答包轉(zhuǎn)發(fā)給編號指示對應(yīng)的RELAY進程;(5)RELAY進程收到該應(yīng)答包后,修改里面的用戶MAC字段內(nèi)容,并轉(zhuǎn)發(fā)給對應(yīng)的線卡物理端口的用戶。
本發(fā)明所述的方法,其中,所述RELAY進程編號,為該RELAY進程所屬的線卡的槽位號和偏移量的和;
其中,所述步驟(3)包括該中繼進程修改請求包中報文的用戶MAC字段,在用戶MAC字段中的第N位填寫該中繼進程編號,把請求包發(fā)給本中繼進程關(guān)聯(lián)的服務(wù)器設(shè)備;所述步驟(4)包括DHCP RELAY設(shè)備收到Server設(shè)備的應(yīng)答包,提取該應(yīng)答包的報文中用戶MAC字段中第N位的X,如果X不在對應(yīng)的RELAY進程編號之間,那么這是個非法應(yīng)答包,DHCP RELAY設(shè)備將其丟棄;否則,該X減去偏移量的值是對應(yīng)接收此應(yīng)答包的RELAY進程所屬的線卡的槽位號,DHCP RELAY設(shè)備將應(yīng)答包發(fā)送給該RELAY進程處理。
本發(fā)明所述的方法,其中,所述用戶請求包,為DHCP請求包;其中,所述DHCP請求包,為Discovery請求包或Request請求包。
本發(fā)明所述的方法,其中,所述步驟(1)進一步包括如果請求包不是本線卡物理端口收到的,則DHCP RELAY設(shè)備將其丟棄。
本發(fā)明所述的方法,其中,所述步驟(3)進一步包括該RELAY進程修改請求包中報文的IP地址、網(wǎng)關(guān)、廣播標(biāo)記。
本發(fā)明所述的方法,其中,步驟(5)中所述Server的應(yīng)答包,為Offer應(yīng)答包或Ack/Nak應(yīng)答包。
本發(fā)明所述的方法,其中,所述步驟(3)包括(31)該RELAY進程簡要記錄用戶MAC和對應(yīng)的線卡物理端口號,讀取Server設(shè)備的IP地址,并查找路由,獲得到這個Server設(shè)備的路由,從該路由里取出本地的接口IP地址、接口MAC、下一跳MAC信息;(32)該RELAY進程修改用戶請求包的報文中的源IP地址、源MAC、目的IP地址、目的MAC,把原來的廣播標(biāo)記改為單播,并填寫網(wǎng)關(guān)為本線卡物理端口的用戶請求包的接口IP地址,在用戶MAC字段的第N位填寫該RELAY進程編號;
(33)重新計算用戶請求包的校驗和,并發(fā)送給本RELAY進程關(guān)聯(lián)的Server設(shè)備。
其中,所述步驟(5)包括RELAY進程收到該應(yīng)答包后,把用戶MAC字段的第N位恢復(fù)初始設(shè)置,把單播標(biāo)記改為廣播標(biāo)記,并重新計算該應(yīng)答包的校驗和,根據(jù)用戶MAC字段找到最初記錄的對應(yīng)的線卡物理端口的用戶,把應(yīng)答包包廣播給該用戶。
采用本發(fā)明所述的方法,一臺寬帶接入設(shè)備可以分布式的處理多個Client(客戶機)的請求,分布式的處理Server(服務(wù)器)的應(yīng)答。這樣,雖然物理上是一臺設(shè)備,但是邏輯上可以看做多臺DHCP RELAY設(shè)備并行工作,提高系統(tǒng)的性能。即一臺DHCP RELAY設(shè)備能夠并發(fā)的處理更多的用戶請求和Server應(yīng)答,提高了設(shè)備性能。
圖1是本發(fā)明實施例所述的Client設(shè)備、DHCP Relay設(shè)備、Server設(shè)備之間的數(shù)據(jù)包交互示意圖;圖2是本發(fā)明實施例所述的一種分布式DHCP RELAY的實現(xiàn)方法的步驟流程圖;圖3是本發(fā)明實施例所述的一種分布式DHCP RELAY的實現(xiàn)方法的具體操作流程圖。
具體實施例方式
本發(fā)明為了解決傳統(tǒng)技術(shù)方案存在的弊端,通過以下具體實施例進一步闡述本發(fā)明所述的一種分布式DHCP RELAY的實現(xiàn)方法,以下對具體實施方式
進行詳細(xì)描述,但不作為對本發(fā)明的限定。
如圖1所示,在本發(fā)明實施例中所述DHCP RELAY設(shè)備上運行多個RELAY進程;上行方向根據(jù)一定規(guī)則,不同物理端口送來的Client(客戶機)報文(如Discovery、Request等)送給不同的RELAY進程處理,每個RELAY進程的內(nèi)部處理邏輯是相同的,RELAY進程分析報文的合法性、用戶的合法性通過后,修改報文里的源IP地址和MAC、目的IP地址和MAC、網(wǎng)關(guān)、廣播標(biāo)記、用戶MAC等字段,把報文轉(zhuǎn)發(fā)給各自代理的Server(服務(wù)器)設(shè)備,從與各自Server設(shè)備相連的物理端口發(fā)送出去;下行方向DHCP RELAY設(shè)備收到Server設(shè)備響應(yīng)的應(yīng)答包,把這個應(yīng)答包送給對應(yīng)的RELAY進程,RELAY進程處理此應(yīng)答包后,把它轉(zhuǎn)發(fā)給用戶。上面所述的如何把響應(yīng)包送給對應(yīng)的RELAY進程,是本發(fā)明的重點。
其中本發(fā)明所述方法的大致流程是為了快速識別Server響應(yīng)包是給哪個RELAY進程,本發(fā)明預(yù)先對每個RELAY進程編號;當(dāng)轉(zhuǎn)發(fā)用戶請求報文時,利用用戶地址的第一位MAC總是0這個特性,把RELAY進程號記錄在用戶MAC的第一位,然后修改報文中的某些字段,把用戶請求報文轉(zhuǎn)發(fā)給Server設(shè)備。當(dāng)收到Server設(shè)備的應(yīng)答時,提取該應(yīng)答包中用戶MAC的第一位,得到RELAY進程號,把該應(yīng)答包發(fā)送給對應(yīng)的RELAY進程。
下面是采用本發(fā)明在寬帶接入服務(wù)器上實現(xiàn)分布式DHCP RELAY的例子。本實施例使用的寬帶接入服務(wù)器具備一塊主控板和多塊線卡,主控板負(fù)責(zé)整個設(shè)備的配置管理,每塊線卡上有獨立的CPU和轉(zhuǎn)發(fā)模塊,能夠完成用戶接入的功能。在這個設(shè)備上,每塊線卡上運行一個DHCPRELAY進程,不同線卡間的進程是完全獨立的。每個DHCP RELAY進程只處理與本線卡物理端口連接的用戶請求。參照附圖2、3所示;本發(fā)明實施例的實施步驟步驟201,對設(shè)備上的每個RELAY進程編號;制定規(guī)則,每個RELAY進程處理哪幾個線卡物理端口的用戶請求包;在本實施例的寬帶接入服務(wù)器上,由于每塊線卡上有一個RELAY進程,那么這個進程的編號就是線卡的槽位號+偏移量8;該設(shè)備有8塊線卡,那么所有RELAY進程的編號就是9-16,與槽位號一一對應(yīng);該接入服務(wù)器的規(guī)則是每個線卡上的RELAY進程只處理與本線卡物理端口連接的用戶的請求包,如Discovery、Request等;如果該請求包不是本線卡物理端口收到的,則DHCP RELAY設(shè)備一律將其丟棄;步驟202,當(dāng)DHCP RELAY設(shè)備收到用戶的請求包時,分析該用戶請求包的線卡物理端口號,送給對應(yīng)的RELAY進程;其中,當(dāng)某個線卡收到DHCP的請求包,如Discovery、Request等;由于本線卡只有一個RELAY進程,所以直接把該請求包送給本線卡的RELAY進程;該RELAY進程分析接收此包的物理槽位號、端口號,并判斷是不是本線卡的槽位,如果不是DHCP RELAY設(shè)備就將其丟棄;否則,判斷端口號是否合法,是不是有效的端口,如果不是DHCP RELAY設(shè)備就將其丟棄;否則繼續(xù)處理;步驟203,該RELAY進程修改請求包的報文中的IP地址、MAC、網(wǎng)關(guān)、廣播標(biāo)記、用戶MAC等字段,其中,用戶MAC的第一位填寫該RELAY進程編號,把該請求包發(fā)給本進程關(guān)聯(lián)的Server設(shè)備;上述這步驟主要是該RELAY進程簡要記錄用戶的MAC和線卡物理端口;該RELAY進程讀取Server設(shè)備的IP地址,查找路由,獲得到這個Server設(shè)備的路由,從路由里取出本地的接口IP地址、接口MAC、下一跳MAC等信息;然后,該RELAY進程修改請求包里的源IP、源MAC、目的IP地址、目的MAC,并把原來的廣播標(biāo)記改為單播,填寫網(wǎng)關(guān)為本線卡物理端口的用戶請求包的接口IP地址;該RELAY進程把用戶MAC的第一位改成本槽位編號+8;最后,重新計算請求包的校驗和,發(fā)送出去;步驟204,DHCP RELAY設(shè)備收到Server設(shè)備的應(yīng)答包,如Offer、Ack等;提取該應(yīng)答包的報文里的用戶MAC字段,取第一位,得到該RELAY進程編號,把該應(yīng)答包轉(zhuǎn)發(fā)給編號指示的RELAY進程;寬帶接入設(shè)備的某塊線卡收到Server的應(yīng)答包,如Offer、Ack/Nak等,提取包里的用戶MAC的第一位X,如果X不在9-16之間,那么這是個非法包,則DHCP RELAY設(shè)備直接丟棄;否則,X-8就是應(yīng)該接收此包的槽位號;具體地說,如果X-8等于本線卡的槽位號,那么把這個包發(fā)給本線卡的RELAY進程處理;否則發(fā)給X-8槽位對應(yīng)的RELAY進程處理;步驟205,該RELAY進程收到Server設(shè)備的應(yīng)答包,修改里面的用戶MAC字段內(nèi)容,轉(zhuǎn)發(fā)給對應(yīng)的線卡物理端口的用戶;其中,具體地說,該RELAY進程收到Server應(yīng)答包,把用戶MAC字段的第一位恢復(fù)為0,并把單播標(biāo)記改為廣播,重新計算該應(yīng)答包的校驗和,根據(jù)用戶MAC找到最初記錄的用戶線卡物理端口信息,把該應(yīng)答包廣播出去給該用戶。
需要說明的是,本發(fā)明方法的內(nèi)部事件和外部事件都是可以進行設(shè)定的,上述具體值僅為說明本發(fā)明方法的一個實施例,不能因此用來限制本發(fā)明的專利保護范圍。
采用本發(fā)明實施例所述的方法,一臺寬帶接入設(shè)備可以分布式的處理多個Client(客戶機)的請求,分布式的處理Server(服務(wù)器)的應(yīng)答。這樣,雖然物理上是一臺設(shè)備,但是邏輯上可以看做多臺DHCP RELAY設(shè)備并行工作,提高系統(tǒng)的性能。即一臺DHCP RELAY設(shè)備能夠并發(fā)的處理更多的用戶請求和Server應(yīng)答,提高了設(shè)備性能。
當(dāng)然,本發(fā)明還可有其他多種實施例,在不背離本發(fā)明精神及其實質(zhì)的情況下,熟悉本領(lǐng)域的技術(shù)人員可根據(jù)本發(fā)明做出各種相應(yīng)的改變和變形,但這些相應(yīng)的改變和變形都應(yīng)屬于本發(fā)明所附的權(quán)利要求的保護范圍。
權(quán)利要求
1.一種分布式DHCP中繼的實現(xiàn)方法,其特征在于,包括以下步驟(1)對DHCP中繼設(shè)備上的每個中繼進程編號,并配置不同的中繼進程接收與其相對應(yīng)的線卡物理端口的用戶請求包;(2)當(dāng)DHCP中繼設(shè)備收到用戶請求包時,分析該用戶請求包的線卡物理端口號,然后將該用戶請求包發(fā)送到與該線卡物理端口號對應(yīng)的中繼進程;(3)該中繼進程修改請求包中報文的用戶MAC字段,在用戶MAC字段中填寫該中繼進程編號,把請求包發(fā)給本中繼進程關(guān)聯(lián)的服務(wù)器設(shè)備;(4)DHCP中繼設(shè)備收到服務(wù)器設(shè)備的應(yīng)答包,提取該應(yīng)答包的報文中用戶MAC字段,并得到該中繼進程編號,把該應(yīng)答包轉(zhuǎn)發(fā)給編號指示對應(yīng)的中繼進程;(5)中繼進程收到該應(yīng)答包后,修改里面的用戶MAC字段內(nèi)容,并轉(zhuǎn)發(fā)給對應(yīng)的線卡物理端口的用戶。
2.如權(quán)利要求1所述的方法,其特征在于,所述中繼進程編號,為該中繼進程所屬的線卡的槽位號和偏移量的和。
3.如權(quán)利要求2所述的方法,其特征在于,所述步驟(3)包括該中繼進程修改請求包中報文的用戶MAC字段,在用戶MAC字段中的第N位填寫該中繼進程編號,把請求包發(fā)給本中繼進程關(guān)聯(lián)的服務(wù)器設(shè)備;所述步驟(4)包括DHCP中繼設(shè)備收到服務(wù)器設(shè)備的應(yīng)答包,提取該應(yīng)答包的報文中用戶MAC字段中第N位的X,如果X不在對應(yīng)的中繼進程編號之間,那么這是個非法應(yīng)答包,DHCP中繼設(shè)備將其丟棄;否則,該X減去偏移量的值是對應(yīng)接收此應(yīng)答包的中繼進程所屬的線卡的槽位號,DHCP中繼設(shè)備將應(yīng)答包發(fā)送給該中繼進程處理。
4.如權(quán)利要求1所述的方法,其特征在于,所述用戶請求包,為DHCP請求包。
5.如權(quán)利要求4所述的方法,其特征在于,所述DHCP請求包,為Discovery請求包或Request請求包。
6.如權(quán)利要求1所述的方法,其特征在于,所述步驟(1)進一步包括如果請求包不是本線卡物理端口收到的,則DHCP中繼設(shè)備將其丟棄。
7.如權(quán)利要求1所述的方法,其特征在于,所述步驟(3)進一步包括該中繼進程修改請求包中報文的IP地址、網(wǎng)關(guān)、廣播標(biāo)記。
8.如權(quán)利要求1所述的方法,其特征在于,步驟(5)中所述服務(wù)器的應(yīng)答包,為Offer應(yīng)答包或Ack/Nak應(yīng)答包。
9.如權(quán)利要求1所述的方法,其特征在于,所述步驟(3)包括(31)該中繼進程簡要記錄用戶MAC和對應(yīng)的線卡物理端口號,讀取服務(wù)器設(shè)備的IP地址,并查找路由,獲得到這個服務(wù)器設(shè)備的路由,從該路由里取出本地的接口IP地址、接口MAC、下一跳MAC信息;(32)該中繼進程修改用戶請求包的報文中的源IP地址、源MAC、目的IP地址、目的MAC,把原來的廣播標(biāo)記改為單播,并填寫網(wǎng)關(guān)為本線卡物理端口的用戶請求包的接口IP地址,在用戶MAC字段的第N位填寫該中繼進程編號;(33)重新計算用戶請求包的校驗和,并發(fā)送給本中繼進程關(guān)聯(lián)的服務(wù)器設(shè)備。
10.如權(quán)利要求9所述的方法,其特征在于,所述步驟(5)包括中繼進程收到該應(yīng)答包后,把用戶MAC字段的第N位恢復(fù)初始設(shè)置,把單播標(biāo)記改為廣播標(biāo)記,并重新計算該應(yīng)答包的校驗和,根據(jù)用戶MAC字段找到最初記錄的對應(yīng)的線卡物理端口的用戶,把應(yīng)答包包廣播給該用戶。
全文摘要
本發(fā)明公開了一種分布式DHCP中繼的實現(xiàn)方法,包括步驟對DHCP RELAY設(shè)備上的每個RELAY進程編號,并規(guī)定不同的RELAY進程接收與其相對應(yīng)的線卡物理端口的用戶請求包;收到用戶請求包時,分析用戶請求包的線卡物理端口號,然后將用戶請求包發(fā)送到與該線卡物理端口號對應(yīng)RELAY進程;RELAY進程修改包中報文的用戶MAC字段,在用戶MAC字段中填寫RELAY進程編號,把請求包發(fā)給本RELAY進程關(guān)聯(lián)的Server設(shè)備;設(shè)備收到Server設(shè)備應(yīng)答包,提取報文中用戶MAC字段中得到RELAY進程編號,把應(yīng)答包轉(zhuǎn)發(fā)給編號指示對應(yīng)RELAY進程;RELAY進程收到應(yīng)答包后,修改里面的用戶MAC字段內(nèi)容,并轉(zhuǎn)發(fā)給對應(yīng)的線卡物理端口的用戶。本發(fā)明實現(xiàn)了一臺DHCP RELAY設(shè)備能夠并發(fā)的處理更多的用戶請求和Server應(yīng)答,提高了設(shè)備性能。
文檔編號H04L12/56GK101039234SQ200710085198
公開日2007年9月19日 申請日期2007年3月19日 優(yōu)先權(quán)日2007年3月19日
發(fā)明者趙欣 申請人:中興通訊股份有限公司