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