劉澤偉,董喜明,毛永紅
(1.武漢郵電科學研究院,湖北 武漢 430074;2.武漢烽火網絡有限責任公司,湖北 武漢 430074)
隨著網絡信息化的飛速發(fā)展,IPv4向IPv6過渡的趨勢日漸明顯。雙棧技術可以很好地解決過渡過程中IPv4和IPv6的兼容性問題,因此在通信設備上得到了廣泛支持。然而,在當前網絡環(huán)境下,要開發(fā)出好的設備產品,僅是對雙棧技術的支持還不夠,解決好網絡協(xié)議在雙棧環(huán)境下的兼容性與穩(wěn)定性才是關鍵。
在現代互聯網絡中,主機地址的DHCP[1]功能是必不可少的。隨著IPv6網絡的出現,IETF在2003年重新制定了針對IPv6的DHCP協(xié)議,即DHCPv6[2]。本文首先對企業(yè)網關系統(tǒng)結構的設計進行了簡單介紹,然后對IPv4,IPv6環(huán)境下的DHCP協(xié)議展開了研究,最后結合兩者的異同點,設計開發(fā)了一種適用于雙棧網關的DHCP協(xié)議軟件,最后經過實驗與工程應用驗證了該軟件模塊具有良好的穩(wěn)定性和兼容性[3]。
圖1所示為本企業(yè)網關的結構圖,主芯片采用Marvel公司出產的88F6560ARM芯片,產品具備3G接入、WiFi接入、GPON/EPON/以太網光口上行功能、GE口接入功能。
本系統(tǒng)采用以下3種控制方式,可以靈活方便地實現與用戶的交流。
圖1 企業(yè)網關結構圖
1)TR069軟件平臺:用戶在局端通過自動配置的服務器對終端設備進行遠程管理,提供了自動配置和動態(tài)服務、軟固件管理、狀態(tài)性能統(tǒng)計監(jiān)控、診斷等功能。
2)CLI命令行:通過串口連接設備,允許用戶使用命令行對設備進行管理,提供了監(jiān)控、診斷等功能。
3)Web網管平臺:用戶可通過Web瀏覽器登錄管理平臺,對企業(yè)網關系統(tǒng)進行遠程監(jiān)控、軟固件升級和診斷。
IPv4和IPv6環(huán)境下的DHCP協(xié)議類似,兩者都是基于C/S的動態(tài)地址分配協(xié)議,為了便于區(qū)別,本文將IPv4環(huán)境下的DHCP命名為DHCPv4。在研究了DHCPv4和DHCPv6的消息機制后,從以下兩個方面對協(xié)議進行了深一步的研究:一是地址狀態(tài)的遷移,二是C/S的交互。
根據前期對DHCPv4和DHCPv6協(xié)議的分析,從地址活動的角度來看,可以將DHCP地址狀態(tài)歸納為以下5種(見圖2):1)綁定狀態(tài)(Bound);2)更新狀態(tài)(Renewing);3)重綁定狀態(tài)(Rebinding);4)超時狀態(tài)(Expired);5)失效狀態(tài)(Invalid)。
圖2 地址狀態(tài)遷移圖
從圖2可知,在IPv4/IPv6的DHCP機制下,地址的動態(tài)遷移是以租約T為時間單位進行的。當地址租用時間到達T1(首選生命期的1/2)時,客戶端向服務器發(fā)送租期更新消息;當地址租用時間到達T2(首選生命期的0.8)時,客戶端向服務器發(fā)送重綁定消息,或等待租期滿約直接進入超時狀態(tài);當客戶端向服務器發(fā)送重綁定消息超時未響應后,客戶端地址失效,客戶端將重開始申請IP綁定。
制的實現
圖3所示DHCPv4/DHCPv6的結構主要分為Server,Client和Relay三部分,三者通過各種UDP消息進行交互。
圖3 DHCP結構圖
2.2.1 DHCPv4 的 Client/Server交互過程
DHCPv4的Client/Server交互過程如圖4所示。
1)DHCPv4 Server請求
DHCPv4 Client申請IP地址前,先發(fā)廣播報文DISCOVER,DHCPv4 Server接收到請求報文后,回應OFFER報文。
2)IP址地請求
DHCP Client收到OFFER報文后,然后發(fā)出廣播報文REQUEST,收到Server回應的ACK后,就可以得到IP地址。得到Server分配的IP后,Client會對地址進行有效性檢測,若該地址不可用,則回到初始狀態(tài)重新開始地址申請。
圖4 DHCPv4的Client/Server交互過程
3)地址租期更新
被分配的地址使用達到T1后,DHCPv4 Client發(fā)單播報文REQUEST請求,DHCPv4 Server給出ACK響應或NAK響應報文,DHCPv4 Client若收到ACK則更新租約,若收到NAK則重新發(fā)起申請。
4)地址重綁
若DHCPv4 Client一直都沒有收到ACK報文,當到達T2后,DHCPv4 Client會發(fā)出廣播的DHCP續(xù)約報文請求地址重綁。若一直未收到ACK響應報文,則租期滿后DHCPv4 Client分配到的IP自動失效。
5)客戶端重啟后的地址分配
DHCPv4 Client重啟后不會回到初始狀態(tài)重新申請IP,而是直接廣播一個REQUEST報文給DHCPv4 Server。DHCPv4 Server收到報文后,檢查該報文Requested IP address字段填入的客戶端IP是否已被其他客戶端使用,若未被使用則直接將該IP地址重分配給該客戶端,否則回復一個NAK響應報文。DHCPv4 Client收到報文后,回到初始狀態(tài)重新申請IP。
2.2.2 DHCPv6 的 Client/Server交互過程
DHCPv6的Client/Server交互過程如圖5所示。
圖5 DHCPv4的Client/Server交互過程
1)DHCPv6 Server請求
DHCPv6 Client申請IP地址前,先向所有中繼代理和服務器組播(組播地址FF02::1:2)發(fā)送SOLICIT報文,DHCPv6 Server接收到請求報文后,回應ADVERTISE報文。若DHCPv6 Client收到多份ADVERTISE報文,則根據消息接收的先后順序、服務器優(yōu)先級等,選定其中一個Server。
2)IP址地請求
DHCPv6 Client向選定的Server發(fā)送地址請求報文REQUEST,當收到Server回應的REPLY報文后,就可以得到由Server分配的IPv6地址/前綴和網絡配置參數了。
3)地址租期更新
當地址/前綴租借時間到達T1后,DHCPv6 Client向Server單播發(fā)送RENEW報文,若當前的地址/前綴可用,則Serve回復給DHCPv6 Client一個續(xù)約成功的REPLY報文,否則回復一個續(xù)約失敗的REPLY報文。DHCPv4 Client若收到續(xù)約成功的REPLY報文則更新租約,否則不進行更新。
4)地址重綁
若DHCPv6 Client一直都沒有收到REPLY報文,則當到達T2后,DHCPv6 Client會組播(組播地址為FF05::1:3)發(fā)送REBIND報文請求地址重綁。若一直未收到重綁成功的REPLY響應報文,則租期滿后DHCPv6 Client分配到的地址/前綴自動失效,并向服務器發(fā)送RELEASE消息請求服務器收完分配的地址信息。
5)客戶端重啟后的地址分配
DHCPv6 Client重啟后,首先會直接向服務器發(fā)送一個CONFIRM報文,確認當前所分配地址/前綴是否還有效,當收到Server回復的REPLY報文后,若確認有效則繼續(xù)使用,否則重新申請地址/前綴。
DHCP Server模塊主要分為3個部分:1)初始化函數(地址信息的初始化);2)主循環(huán)程序(循環(huán)等待服務請求);3)消息處理函數(消息處理、生成與發(fā)送)。
雙棧環(huán)境下DHCP Server流程如圖6所示。
初始化函數為所有可分配的地址(其數量由dhcp.db中地址池的開始地址和結束地址計算出)創(chuàng)建地址信息結構體(Addr_Info_Str)對象,每個結構體對象都攜帶IP類型、地址/前綴、狀態(tài)、租用期及分配該地址的Client等信息。
圖6 DHCP Server流程圖
主循環(huán)程序的主要功能是:1)定時清理超時的綁定信息,并及時更新綁定信息,同時寫入到數據庫中。2)維護已綁定地址信息。3)監(jiān)聽UDP端口(547和67),隨時接收來自客戶端的DHCP報文,并將接收到的報文分類后發(fā)送給消息處理函數。
消息處理函數根據IP協(xié)議棧的類型分為DHCPv4的消息處理函數和DHCPv6的消息處理函數兩類,分別對來自不同客戶端的DHCP消息進行響應與處理。
DHCP Client模塊由初始化、Server請求、IP請求、IP有效性檢測和IP維護部分組成,其主要功能是負責客戶端的地址申請、維護與釋放。
如圖7所示,當DHCP Client啟動后,首先初始化配置信息,若本機已有有效配置參數,則向Server發(fā)送一個確認報文,確認已有配置參數是否有效;若本機配置參數為空,則進行Server請求和IP請求。
當從Server獲得配置參數后,DHCP Client會檢測該配置參數的有效性。若有效則調用地址維護函數進行下一步處理;若無效則向服務器發(fā)送拒絕請求,重新開始請求IP。
地址維護函數的功能是完成對客戶端地址綁定、更新租期、地址信息釋放等操作。在地址使用租約達到0.5個首選生命期時,向Server發(fā)送租期更新請求報文接收應答報文以完成地址租期更新;達到0.8個首選生命期時,向Server發(fā)送地址重綁請求報文接收應答報文完成地址重綁。當租約超期或滿足地址釋放條件時,主動請求釋放地址信息 (Local_family=AF_INET6)或不做任何操作(Local_family=AF_INET)。
圖7 DHCP Client流程圖
DHCP Relay模塊主要分為初始化、代理服務器設置和中繼報文處理3部分。
如圖8所示,當DHCP Relay啟動后首先會初始化中繼相關的變量,如UDP端口的設置、IP地址族的設置等。初始化結束后,開始設置代理服務器,若代理服務器列表為空,則使用廣播地址作為代理服務器地址(DHCPv6情況下使用FF02::1:2作為目標地址)[2]。初始化和代理服務器設置結束后,DHCP Relay開始監(jiān)聽UDP端口,接收并處理中繼報文。
用4臺裝有Windows XP的PC機作為客戶端,兩臺使用了上述DHCP協(xié)議軟件模塊的企業(yè)網關分別做中繼端和服務端。
兩臺安裝好IPv6協(xié)議的PC機作為DHCPv6客戶端連接到網絡中,經反復測試,兩臺客戶端均可以迅速分配到一個有效的IPv6地址/前綴,作為DHCP服務器和中繼器的企業(yè)網關都運行正常。DHCPv6獲取IPv6地址過程如圖9所示。
兩臺未安裝IPv6協(xié)議的客戶端接入到網絡中,經反復測試,兩臺客戶端都可以有效獲取IPv4地址,作為DHCP服務器和中繼器的企業(yè)網關也都運行正常。DHCP獲取IP地址過程如圖10所示。
圖10 DHCP獲取IP地址過程(截圖)
在雙棧環(huán)境下的DHCP功能,可有效地解決IPv4向IPv6過渡過程中客戶端所需要的IPv4/IPv6地址自動分配功能。本文通過對IPv4,IPv6環(huán)境下的DHCP協(xié)議的深入研究,結合兩者的異同點設計開發(fā)了一種適用于基于雙棧環(huán)境的企業(yè)網關的DHCP協(xié)議軟件,最后經過實驗與工程應用驗證了該軟件模塊所具有良好的穩(wěn)定性和兼容性,具有較大的實用價值。
[1]RFC2131,Dynamic host configuration protocol(DHCP)[S].1997.
[2]RFC3315,Dynamic host configuration protocol for IPv6(DHCPv6)[S].2003.
[3]GARY R,WRIGHT W,RICHARD S.TCP/IP 協(xié)議詳解:卷2[M].北京:機械工業(yè)出版社,2009.