摘 要:本文主要描述基于linux軟件系統(tǒng)硬件防火墻的IPV6協(xié)議棧改造,以適應(yīng)防火墻多功能的支持。IPV6功能是智能網(wǎng)絡(luò)設(shè)備中必須實(shí)現(xiàn)的服務(wù)之一,幫助客戶在網(wǎng)絡(luò)部署上能更方便的接入IPV6環(huán)境,對于提高設(shè)備適應(yīng)性上都有積極的作用。
關(guān)鍵詞:嵌入式;linux;IPV6
中圖法分類號:TP319
基于linux環(huán)境的嵌入式網(wǎng)絡(luò)設(shè)備越來越多的出現(xiàn)在市場上,支持IPV6功能是網(wǎng)絡(luò)服務(wù)設(shè)備中必須要支持的項(xiàng)目,為網(wǎng)絡(luò)大規(guī)模的應(yīng)用打下基礎(chǔ)。本文主要在linux內(nèi)核IPV6協(xié)議棧上進(jìn)行改造,以適應(yīng)嵌入式網(wǎng)絡(luò)設(shè)備多功能的需求而開發(fā)的模型。
1 開發(fā)環(huán)境
開發(fā)環(huán)境是基于linux的交叉編譯環(huán)境,采用內(nèi)核版本2.6.25。編譯器版本gcc 4.3.0。編輯器采用vim 7.1,能更好的支持linux程序的開發(fā)。
2 開發(fā)目標(biāo)
2.1 IPV4的缺陷
(1)地址空間的局限性:IP地址空間的危機(jī)由來已久,并正是升級的主要?jiǎng)恿Α?/p>
(2)性能:盡管IP表現(xiàn)得不錯(cuò),一些源自20年甚至更早以前的設(shè)計(jì)還能夠進(jìn)一步改進(jìn)。
(3)安全性:安全性一直被認(rèn)為是由網(wǎng)絡(luò)層以上的層負(fù)責(zé),但它現(xiàn)在已經(jīng)成為I P的下一個(gè)版本可以發(fā)揮作用的地方。
(4)自動配置:對于IPv4節(jié)點(diǎn)的配置一直比較復(fù)雜,而網(wǎng)絡(luò)管理員與用戶則更喜歡“即插即用”,即:將計(jì)算機(jī)插在網(wǎng)絡(luò)上然后就可以開始使用。IP主機(jī)移動性的增強(qiáng)也要求當(dāng)主機(jī)在不同網(wǎng)絡(luò)間移動和使用不同的網(wǎng)絡(luò)接入點(diǎn)時(shí)能提供更好的配置支持。
2.2 IPV6相對于IPV4的主要改進(jìn)
(1)擴(kuò)展地址。保證了地址空間的容量。
(2)簡化頭格式。IPV6報(bào)文頭長度為固定的40字節(jié),提高了路由器轉(zhuǎn)發(fā)的效率。
(3)增強(qiáng)對于擴(kuò)展和選項(xiàng)的支持。
(4)流標(biāo)記。為實(shí)現(xiàn)Qos提供了手段,但關(guān)于IPV6 Qos的使用目前沒有統(tǒng)一。
(5)身份驗(yàn)證和保密。對IPSEC的支持是必選項(xiàng)。
3 功能定位
IPV6功能為FX/U系列產(chǎn)品新增功能,結(jié)合競爭對手分析,我們的IPV6模塊的實(shí)現(xiàn)功能定位為:與競爭對手相比,與做的比較好的保持同步,比做得一般或者差的競爭對手功能強(qiáng)。
4 需求模型
4.1 鄰居發(fā)現(xiàn)協(xié)議
IPv6的一個(gè)顯著特點(diǎn)就 是它具有“即插即用”功能。即插即用使節(jié)點(diǎn)直接連接到網(wǎng)絡(luò)后,不需要經(jīng)過任何人工配置就能夠使用,即插即用使網(wǎng)絡(luò)的管理和控制變得更加簡單;其次,節(jié)點(diǎn)只需要知道自己的鏈路層地址及本地網(wǎng)絡(luò)的子網(wǎng)前綴,就能夠通過IPv6的無狀態(tài)或者全狀態(tài)自動配置得到惟一的IPv6地址,從而成為網(wǎng)絡(luò)的一部分;另外,IPv6還實(shí)現(xiàn)了更好的對節(jié)點(diǎn)移動性的支持。這些功能都是通過Neighbour Discovery(鄰居發(fā)現(xiàn))協(xié)議來實(shí)現(xiàn)的,同一個(gè)子網(wǎng)內(nèi)的所有主機(jī)和路由器之間的交互也都是通過鄰居發(fā)現(xiàn)協(xié)議來實(shí)現(xiàn)的。
鄰居發(fā)現(xiàn)協(xié)議是IPv6協(xié)議的一個(gè)基本的組成部分,它實(shí)現(xiàn)了在IPv4中的地址解析協(xié)議(ARP)、控制報(bào)文協(xié)議(ICMP)中的路由器發(fā)現(xiàn)部分、重定向協(xié)議的所有功能,并具有鄰居不可達(dá)檢測機(jī)制。鄰居發(fā)現(xiàn)協(xié)議實(shí)現(xiàn)了路由器和前綴發(fā)現(xiàn)、地址解析、下一跳地址確定、重定向、鄰居不可達(dá)檢測、重復(fù)地址檢測等功能。
鄰居發(fā)現(xiàn)協(xié)議采用5種類型的IPv6控制信息報(bào)文(ICMPv6)來實(shí)現(xiàn)鄰居發(fā)現(xiàn)協(xié)議的各種功能。這5種類型消息如下。
(1)路由器請求(Router Solicitation):當(dāng)接口工作時(shí),主機(jī)發(fā)送路由器請求消息,要求路由器立即產(chǎn)生路由器通告消息,而不必等待下一個(gè)預(yù)定時(shí)間。
(2)路由器通告(Router Advertisement):路由器周期性地通告它的存在以及配置的鏈路和網(wǎng)絡(luò)參數(shù),或者對路由器請求消息作出響應(yīng)。路由器通告消息包含在連接(on-link)確定、地址配置的前綴和跳數(shù)限制值等。
(3)鄰居請求(Neighbor Solicitation):節(jié)點(diǎn)發(fā)送鄰居請求消息來請求鄰居的鏈路層地址,以驗(yàn)證它先前所獲得并保存在緩存中的鄰居鏈路層地址的可達(dá)性,或者驗(yàn)證它自己的地址在本地鏈路上是否是惟一的。
(4)鄰居通告(Neighbor Advertisement):鄰居請求消息的響應(yīng)。節(jié)點(diǎn)也可以發(fā)送非請求鄰居通告來指示鏈路層地址的變化。
(5)重定向(Redirect):路由器通過重定向消息通知主機(jī)。對于特定的目的地址,如果不是最佳的路由,則通知主機(jī)到達(dá)目的地的最佳下一跳。
IPv6鄰居發(fā)現(xiàn)協(xié)議與IPv4地址解析協(xié)議主要區(qū)別如下:
IPv4中地址解析協(xié)議ARP是獨(dú)立的協(xié)議,負(fù)責(zé)IP地址到鏈路層地址的轉(zhuǎn)換,對不同的鏈路層協(xié)議要定義不同的ARP協(xié)議。IPv6中鄰居發(fā)現(xiàn)協(xié)議NDP包含了ARP的功能,且運(yùn)行于因特網(wǎng)控制報(bào)文協(xié)議ICMPv6上,它的安全性可由IPv6的安全性來保證,而且運(yùn)行于網(wǎng)絡(luò)層,與介質(zhì)無關(guān),適用于各種鏈路層協(xié)議;
ARP協(xié)議以及ICMPv4路由器發(fā)現(xiàn)和ICMPv4重定向報(bào)文基于廣播,而NDP協(xié)議的鄰居發(fā)現(xiàn)報(bào)文基于高效的組播和單播;
IPv6鄰居發(fā)現(xiàn)協(xié)議具有更多路由器前綴發(fā)現(xiàn)、下一跳地址確定、重定向、鄰居不可達(dá)檢測、重復(fù)地址檢測等其他更多功能。
4.2 自動配置
IPV6地址的配置可以通過靜態(tài)方式來配置,也可以通過DHCP v6來配置。在IPV6提出了一種新的Statless IP Auto Configuration(無狀態(tài)地址自動配置)方式,它通過鄰居發(fā)現(xiàn)的路由器發(fā)現(xiàn)、路由器通告和重復(fù)地址檢測功能來實(shí)現(xiàn),它可以完成主機(jī)自動獲取IP的功能。
無狀態(tài)地址自動配置根據(jù)是否有路由器通告消息分為兩種情況:
(1)在沒有路由器宣告(Router Advertisement)的情況下,自動生成鏈路局域地址。鏈路局域地址最高位的10位由鏈路局域前綴FE80::/10組成,最低的64位根據(jù)EUI-64規(guī)則由以太網(wǎng)MAC地址生成。
如MAC地址00:02:55:22:2E:A1根據(jù)EUI-64規(guī)則映射為0x020255fffe222ea1,計(jì)64位,加上鏈路局域前綴FE80::/10,得到鏈路局域地址為 fe80::202:55ff:fe22:2ea1/64。
(2)在有IPv6路由器網(wǎng)絡(luò)環(huán)境下,路由器周期性地通告它的存在以及配置的鏈路和網(wǎng)絡(luò)參數(shù),主機(jī)接收路由器宣告獲得64比特的鏈路前綴作為其地址前綴,而后根據(jù)EUI-64規(guī)則將網(wǎng)卡地址映射為地址的低64比特,形成全局的IP地址。
圖1
如MAC地址00:02:55:22:2E:A1根據(jù)EUI-64規(guī)則映射為0x020255fffe222ea1,計(jì)64位;如果路由器通告消息中攜帶的路由器前綴為2001:db8:1:0::/64,則通過將路由器前綴和EUI-64轉(zhuǎn)換后的低64比特組合,得到主機(jī)的IP地址為2001:db8:1:0:202:55ff:fe22:2ea1/64。
如果當(dāng)前環(huán)境沒有路由器,要想獲得全局IPv6地址,一定要使用狀態(tài)方式地址自動配置,DHCPv6就是IPv6下的狀態(tài)方式地址自動配置的一種方案,DHCPv6在第二階段實(shí)現(xiàn),本文檔不做闡述。
5 結(jié)束語
為便于IPV6網(wǎng)絡(luò)部署的順利實(shí)施,IPV6的支持是必須實(shí)現(xiàn)的功能。通過對現(xiàn)在linux內(nèi)核IPV6協(xié)議棧的改造,支持硬件防火墻功能在IPV6環(huán)境下的實(shí)現(xiàn),是本文的主要目標(biāo)。在完成了初步模型改造的基礎(chǔ)上,今后會在效率和功能支持上做更多的研究。
參考文獻(xiàn):
[1]Gary R.Wright,W.Richard Stevens TCP/IP詳解卷2:實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2000(07).
[2]W.Richard Stevens TCP/IP詳解卷1:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2007(08).
[3]W.Richard Stevens TCP/IP詳解卷3:TCP事務(wù)協(xié)議、HTTP、NNTP和UNIX域協(xié)議[M].北京:機(jī)械工業(yè)出版社,2000(09).
[4]Daniel.P.Bovet,Marco Cesati深入理解LINUX內(nèi)核[M].北京:中國電力出版社,2007(09).
[5]毛德操,胡希明.LINUX內(nèi)核源代碼情景分析上冊[M].浙江:浙江大學(xué)出版社,2001(09).
[6]毛德操,胡希明.LINUX內(nèi)核源代碼情景分析下冊[M].浙江:浙江大學(xué)出版社,2001(09).
[7]Robert Love LINUX內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)(第二版)[M].北京:機(jī)械工業(yè)出版社,2006(01)
[8]Claudia Salzberg.LINUX內(nèi)核編程[M].北京:機(jī)械工業(yè)出版社,2006(07).
[9]Qing Li,KeiichiShima.IPv6詳解:卷1:核心協(xié)議實(shí)現(xiàn)[M].北京:人民郵電出版社,2009(01).
[10]Qing Li,KeiichiShima.IPv6詳解:卷2:高級協(xié)議實(shí)現(xiàn)[M].北京:人民郵電出版社,2009(01).
[11]M.Rose,K.McCloghrie.Concise MIB definitions[S].RFC 1212,Mar.1991.
[12]趙清晨,李同芳.Linux操作系統(tǒng)實(shí)用教程[M].北京:機(jī)械工業(yè)出版社,2008(02).
[13]孫斌,高翔.linux操作系統(tǒng)[M].西安:西安電子科技出版社,2011(02).
作者簡介:唐婷(1983.01-),女,四川船山人,助教,本科,研究方向:嵌入式系統(tǒng)開發(fā)。
作者單位:四川職業(yè)技術(shù)學(xué)院,四川遂寧 629000