摘 要:本文主要描述基于linux軟件系統(tǒng)硬件防火墻的DHCP功能的構(gòu)建。DHCP功能是智能網(wǎng)絡(luò)設(shè)備中最重要的服務(wù)之一,幫助被認(rèn)證客戶很簡(jiǎn)單的接入互聯(lián)網(wǎng),對(duì)于提高設(shè)備易用性上都有積極的作用。
關(guān)鍵詞:嵌入式;linux;DHCP
中圖法分類號(hào):TP319
1 簡(jiǎn)介
基于linux環(huán)境的嵌入式網(wǎng)絡(luò)設(shè)備越來(lái)越多的出現(xiàn)在市場(chǎng)上,DHCP功能是網(wǎng)絡(luò)服務(wù)設(shè)備中比較重要的功能之一。在網(wǎng)絡(luò)設(shè)備主打功能的基礎(chǔ)上,做到更有特色的附屬功能,對(duì)設(shè)備的銷售和營(yíng)銷買點(diǎn)會(huì)有很大的幫助。
本文主要在linux環(huán)境搭建DHCP服務(wù)器,設(shè)定開發(fā)產(chǎn)品為硬件防火墻,具有更加多樣化的網(wǎng)絡(luò)功能,為該類設(shè)備打造具有基礎(chǔ)的DHCP功能外,特色化的DHCP Server和DHCP Relay功能。
2 開發(fā)環(huán)境
開發(fā)環(huán)境是基于linux的交叉編譯環(huán)境,采用內(nèi)核版本2.6.25。編譯器版本gcc 4.3.0。編輯器采用vim 7.1,能更好的支持linux程序的開發(fā)。
3 開發(fā)目標(biāo)
主要用來(lái)實(shí)現(xiàn)DHCP Server功能和DHCP Relay功能。
DHCP:動(dòng)態(tài)主機(jī)配置協(xié)議。
DHCP Server:當(dāng)一臺(tái)連接到TCP/IP網(wǎng)絡(luò)上的計(jì)算機(jī)啟動(dòng)時(shí),能夠自動(dòng)地為這臺(tái)計(jì)算機(jī)配置有關(guān)的TCP/IP參數(shù),包括IP地址、子網(wǎng)掩碼、缺省網(wǎng)關(guān)、DNS等等。
DHCP Relay:如果DHCP客戶機(jī)與DHCP服務(wù)器在同一個(gè)物理網(wǎng)段,則客戶機(jī)可以正確地獲得動(dòng)態(tài)分配的ip地址。如果不在同一個(gè)物理網(wǎng)段,則需要DCHP Relay Agent(中繼代理)。用DHCP Relay代理可以免去在每個(gè)物理的網(wǎng)段都要有DHCP服務(wù)器的必要,它可以把客戶機(jī)的消息傳遞到不在同一個(gè)物理子網(wǎng)的DHCP服務(wù)器,也可以將服務(wù)器的消息傳回給不在同一個(gè)物理子網(wǎng)的DHCP客戶機(jī)。
4 系統(tǒng)架構(gòu)
4.1 系統(tǒng)DHCP設(shè)計(jì)原理
DHCP采用客戶/服務(wù)器模型,當(dāng)DHCP客戶端程序發(fā)出一個(gè)廣播信息,請(qǐng)求一個(gè)動(dòng)態(tài)的IP地址時(shí),DHCP服務(wù)器會(huì)根據(jù)目前已經(jīng)配置的地址范圍中選擇一個(gè)IP地址,以地址租約形式提供一個(gè)可供使用的IP地址和子網(wǎng)掩碼給客戶端,圖1給出的是一個(gè)最簡(jiǎn)單的情況。
客戶計(jì)算機(jī)從DHCP服務(wù)器獲得租約要經(jīng)過(guò)以下四個(gè)步驟:
(1)請(qǐng)求IP租約
當(dāng)DHCP客戶計(jì)算機(jī)第一次啟動(dòng)或初始化IP時(shí),其IP地址并沒有任何設(shè)置,使用0.0.0.0作為源地址,將DHCP DISCOVER消息廣播發(fā)送給本地子網(wǎng)。
DHCP DISCOVER消息中還包含客戶的MAC地址和客戶機(jī)名稱,這樣DHCP服務(wù)器可以確定是哪個(gè)客戶機(jī)發(fā)來(lái)的請(qǐng)求。
(2)提供IP租約
DHCP服務(wù)器收到DHCP DISCOVER消息后,將DHCP OFEER信息直接送到客戶機(jī)。DHCP OFEER信息中包含了客戶機(jī)的MAC地址,所提供IP地址,子網(wǎng)掩碼以及DHCP服務(wù)器的IP地址。
DHCP服務(wù)器發(fā)送DHCP OFEER信息之后仍暫時(shí)保留發(fā)送給客戶計(jì)算機(jī)的地址,并等待該地址客戶的確認(rèn)信息。
如果在一秒鐘內(nèi)DHCP客戶機(jī)沒有收到IP地址,就將DHCPDISCOVER消息重復(fù)廣播四次,四次重試的間隔時(shí)間為2、4、8、16秒。四次之后,如果仍未能收到服務(wù)器的回應(yīng),則運(yùn)行Windows 2000的DHCP客戶機(jī)將從169.254.0.0/16這個(gè)自動(dòng)保留的私有IP地址(APIPA)中選用一個(gè)IP地址,而運(yùn)行其他操作系統(tǒng)的DHCP客戶機(jī)將無(wú)法獲得IP地址。DHCP客戶機(jī)仍然每隔5分鐘重新廣播一次,如果收到某個(gè)服務(wù)器的回應(yīng),則繼續(xù)IP租用過(guò)程。
(3)選擇IP租約
因?yàn)榭蛻艨赡苁盏骄W(wǎng)絡(luò)上多個(gè)DHCP服務(wù)器的DHCP OFEER消息,要決定使用哪一條消息。一般情況下,客戶機(jī)使用第一條接到的信息,然后廣播DHCP REQUEST消息作為響應(yīng),消息中還包括它所接受的IP租約的DHCP服務(wù)器的MAC地址,這樣,其他DHCP服務(wù)器可在收到廣播后將它們的IP地址釋放回可用的地址池。
(4)確認(rèn)IP租約
當(dāng)被選擇IP租約的DHCP服務(wù)器收到DHCPREQUEST消息后,將用DHCP ACK消息應(yīng)答。DHCP ACK消息告訴客戶計(jì)算機(jī)它現(xiàn)在具有有效租約。一旦客戶機(jī)接收到DHCP ACK消息,就完成自己的IP配置并成為一個(gè)完全受租的客戶。
當(dāng)DHCP客戶機(jī)在租約期限過(guò)了一半的時(shí)候,嘗試更新租約。DHCP客戶機(jī)直接給DHCP服務(wù)器發(fā)送DHCP REQUEST消息。如果DHCP服務(wù)器可用,將發(fā)回DHCP ACK消息,其中包含新的租約和已更新的參數(shù)。DHCP客戶機(jī)在收到DHCP ACK消息后更新配置。如果DHCP服務(wù)器不可用,客戶機(jī)將繼續(xù)使用它的租約。然后在租約期限過(guò)了87.5%的時(shí)候,廣播DHCP DISCOVER消息,接受任何DHCP服務(wù)器發(fā)出的租約。
如果租約到期,客戶機(jī)必須停止使用當(dāng)前的IP地址。然后開始新的租約過(guò)程。
在客戶機(jī)請(qǐng)求一個(gè)非法的或重復(fù)的IP地址,DHCP服務(wù)器用DHCP NAK消息拒絕,迫使客戶機(jī)重新獲得一個(gè)新的合法的地址。
4.2 DHCP Server服務(wù)
DHCP Server主要作用是為網(wǎng)絡(luò)客戶機(jī)分配動(dòng)態(tài)的IP地址,從而提供安全、可靠的TCP/IP網(wǎng)絡(luò)配置,保證IP地址不發(fā)生沖突,減少了在TCP/IP網(wǎng)絡(luò)上增添、移動(dòng)和配置計(jì)算機(jī)的管理負(fù)擔(dān),使IP地址管理自動(dòng)化。
4.3 DHCP Relay服務(wù)
DHCP Relay在處于不同子網(wǎng)間的DHCP客戶機(jī)和服務(wù)器之間承擔(dān)中繼服務(wù),可以將DHCP協(xié)議報(bào)文中繼到跨網(wǎng)段的目的DHCP服務(wù)器(或客戶機(jī)),于是不同網(wǎng)絡(luò)上的DHCP客戶機(jī)可以使用同一個(gè)DHCP服務(wù)器。這樣,既節(jié)省開銷又便于集中管理。
DHCP Relay工作原理如下:
當(dāng)DHCP客戶機(jī)啟動(dòng)并進(jìn)行DHCP初始化時(shí),它會(huì)在本網(wǎng)絡(luò)廣播配置請(qǐng)求報(bào)文;如果本網(wǎng)絡(luò)存在DHCP服務(wù)器則不需要配置DHCP Relay直接就可以進(jìn)行DHCP配置操作;如果本網(wǎng)絡(luò)里沒有DHCP服務(wù)器,則與本網(wǎng)絡(luò)相連的帶DHCP Relay功能的網(wǎng)絡(luò)設(shè)備在收到該廣播報(bào)文并適當(dāng)處理后,會(huì)將該廣播報(bào)文轉(zhuǎn)發(fā)給其它網(wǎng)絡(luò)中的DHCP服務(wù)器;DHCP服務(wù)器根據(jù)客戶機(jī)提供的信息,為其作相應(yīng)的配置,并通過(guò)DHCP Relay將該配置信息發(fā)送給客戶機(jī),完成對(duì)客戶機(jī)的動(dòng)態(tài)配置。
5 性能測(cè)試
采用的基準(zhǔn)測(cè)試平臺(tái)是:EM系列平臺(tái),發(fā)往外部服務(wù)器的處理能力為10K/s。硬件性能1.5G Atom處理器,2G內(nèi)存。超過(guò)處理能力時(shí)會(huì)丟棄日志,比如隊(duì)列滿了的時(shí)候會(huì)丟棄該日志。當(dāng)高處理能力為1K/s時(shí),不會(huì)發(fā)生丟棄日志的情況,大于1K/s發(fā)生日志丟失。
性能測(cè)試目標(biāo)
(1)可以配置得DHCP得VLAN接口和VLAN得個(gè)數(shù)一樣,4094個(gè)。
(2)每個(gè)VLAN接口最多可以配一個(gè)DHCP Server,每個(gè)DHCP Server可以最多配置512個(gè)靜5.3態(tài)IP。
(3)靜態(tài)IP的最大數(shù)目是4k個(gè)。
(4)1s內(nèi)可以為100個(gè)主機(jī)成功分配IP。
(5)啟動(dòng)DHCP Relay服務(wù)和DHCP Server服務(wù)的VLAN接口個(gè)數(shù)限制為512個(gè)。
6 結(jié)束語(yǔ)
按照上述模式成型的DHCP能基本滿足設(shè)備應(yīng)用。但測(cè)試中發(fā)現(xiàn)在極端測(cè)試環(huán)境中還存在對(duì)其他模塊配合不夠精細(xì)的情況,也就是DHCP Relay服務(wù)是個(gè)全局得模塊,并沒有實(shí)現(xiàn)只是針對(duì)單個(gè)DHCP接口啟動(dòng)relay服務(wù)的功能,后續(xù)開發(fā)中繼續(xù)針對(duì)這種情況作優(yōu)化。
參考文獻(xiàn):
[1]Gary R.Wright,W.Richard Stevens TCP/IP詳解卷2:實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2000,7.
[2]W.Richard Stevens TCP/IP詳解卷1:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2007,8.
[3]W.Richard Stevens TCP/IP詳解卷3:TCP事務(wù)協(xié)議、HTTP、NNTP和UNIX域協(xié)議[M].北京:機(jī)械工業(yè)出版社,2000,9.
[4]Daniel.P.Bovet,Marco Cesati深入理解LINUX內(nèi)核[M].北京:中國(guó)電力出版社,2007,9.
[5]毛德操,胡希明.LINUX內(nèi)核源代碼情景分析上冊(cè)[M].浙江:浙江大學(xué)出版社,2001,9.
[6]毛德操,胡希明.LINUX內(nèi)核源代碼情景分析下冊(cè)[M].浙江:浙江大學(xué)出版社,2001,9.
[7]Robert Love LINUX內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)(第二版)[M].北京:機(jī)械工業(yè)出版社,2006,1.
[8]Claudia Salzberg LINUX內(nèi)核編程[M].北京:機(jī)械工業(yè)出版社,2006,7.
[9]Qing Li.KeiichiShima IPv6詳解:卷1:核心協(xié)議實(shí)現(xiàn)[M].北京:人民郵電出版社,2009,1.
[10]Qing Li.KeiichiShima IPv6詳解:卷2:高級(jí)協(xié)議實(shí)現(xiàn)[M].北京:人民郵電出版社,2009,1.
[11]M.Rose,K.McCloghrie.Concise MIB definitions[S].RFC 1212,Mar,1991.
[12]趙清晨,李同芳.Linux操作系統(tǒng)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2008,2.
[13]孫斌,高翔.linux操作系統(tǒng)[M].西安:西安電子科技出版社,2011,2.
作者簡(jiǎn)介:唐婷(1983.1-),女,四川省遂寧市船山區(qū)人,助教,本科,主要研究方向:嵌入式系統(tǒng)開發(fā)。
作者單位:四川職業(yè)技術(shù)學(xué)院,四川遂寧 629000