王悅
摘要:互聯(lián)網(wǎng)協(xié)議 IPv4技術(shù)存在很多缺陷,如網(wǎng)絡(luò)地址資源有限,地址空間狹小,網(wǎng)絡(luò)地址分配率低,安全性不高等問題。隨著互聯(lián)網(wǎng)規(guī)模和網(wǎng)絡(luò)結(jié)構(gòu)的不斷擴(kuò)大和發(fā)展,人們對網(wǎng)絡(luò)協(xié)議的要求就越來越高,而IPv4技術(shù)已經(jīng)遠(yuǎn)遠(yuǎn)不能滿足互聯(lián)網(wǎng)發(fā)展的實(shí)際需要。在這樣的形勢下, IPv6作為IPv4技術(shù)的下一代網(wǎng)絡(luò)協(xié)議就運(yùn)用而生。網(wǎng)絡(luò)協(xié)議 IPv6技術(shù)作為新一代網(wǎng)絡(luò)協(xié)議,很大程度上解決了傳統(tǒng)IPv4技術(shù)的多種不足問題,成為新一代網(wǎng)絡(luò)協(xié)議的主要標(biāo)志,使用了將近20余年的IPv4技術(shù)將會成為歷史。該文主要針對IPv6存儲集群網(wǎng)絡(luò)模塊的設(shè)計(jì)和應(yīng)用進(jìn)行了分析和探討。
關(guān)鍵詞:IPv6;IPv4;存儲集群;網(wǎng)絡(luò)模塊;設(shè)計(jì)應(yīng)用
中圖分類號:TP393 文獻(xiàn)標(biāo)識碼:A 文章編號:1009-3044(2015)012-0044-02
IPv6作為新一代網(wǎng)絡(luò)協(xié)議技術(shù)具備多重優(yōu)點(diǎn),網(wǎng)絡(luò)地址資源豐富,有超大的網(wǎng)絡(luò)地址空間,服務(wù)質(zhì)量高,分級地址模式以及安全性高等特點(diǎn)。隨著科技的不斷創(chuàng)新和人們要求的不斷提高,視頻會議、流媒體直播以及數(shù)據(jù)通信等等業(yè)務(wù)的增加,而這些實(shí)現(xiàn)這些應(yīng)用的過程中都需要足夠的網(wǎng)絡(luò)儲存支持,這就導(dǎo)致網(wǎng)絡(luò)的數(shù)據(jù)量急劇增長。
SAN和NAS是以往常用的存儲集群系統(tǒng),SAN和NAS屬于共享存儲系統(tǒng),系統(tǒng)中的每個節(jié)點(diǎn)都可以對其進(jìn)行訪問,但如果系統(tǒng)中的節(jié)點(diǎn)增加到一定程度時(shí),I/0總線將會影響系統(tǒng)性能的進(jìn)一步增長,這樣就不能滿足實(shí)際需要。而Lustre的出現(xiàn)有效地解決了SAN和NAS中出現(xiàn)的問題,為海量存儲系統(tǒng)的構(gòu)建提供了基礎(chǔ)條件。目前,大多數(shù)分布式文件系統(tǒng)都是通過IPv4技術(shù)實(shí)現(xiàn)的,在IPv6網(wǎng)絡(luò)協(xié)議逐漸成為互聯(lián)網(wǎng)標(biāo)準(zhǔn)的形勢下,構(gòu)建基于IPv6的分布式文件系統(tǒng)將成為互聯(lián)網(wǎng)的必然發(fā)展趨勢。文章將介紹把支持IPv4的Lustre分布式文件系統(tǒng)改進(jìn)為支持IPv4和IPv6兩種網(wǎng)絡(luò)協(xié)議的分布式文件系統(tǒng)的設(shè)計(jì)原理和方法步驟,并在兩種協(xié)議環(huán)境中對Lustre的性能進(jìn)行測試。
1 基于Lustre的文件系統(tǒng)、網(wǎng)絡(luò)模塊
Lustre文件系統(tǒng)是有多個公司和科研機(jī)構(gòu)共同研發(fā)的基于對象存儲的文件系統(tǒng),其中之一的IBM(即國際商業(yè)機(jī)器公司)開發(fā)的超級計(jì)算機(jī)Bule Gene(深藍(lán))和HPStorageWorks Scalable File Share(HP的可擴(kuò)展文件共享系統(tǒng))用到的文件存儲系統(tǒng)都是都是Lustre文件系統(tǒng)。Lustre文件系統(tǒng)表現(xiàn)的多方面優(yōu)點(diǎn)主要原因是因?yàn)樵撓到y(tǒng)同時(shí)采用了MDS(元數(shù)據(jù)服務(wù)器)、OST(基于對象的存儲服務(wù)器)以及Client(客戶端)形成三方通信模式。元數(shù)據(jù)服務(wù)器的主要功能是維護(hù)和管理目錄結(jié)構(gòu)、命名空間以及用戶權(quán)限,并且還負(fù)責(zé)保持系統(tǒng)數(shù)據(jù)的一致性;存儲服務(wù)器主要就是負(fù)責(zé)系統(tǒng)對象數(shù)據(jù)的存儲管理;客戶端負(fù)責(zé)存儲系統(tǒng)文件的運(yùn)行,和存儲服務(wù)器實(shí)現(xiàn)系統(tǒng)數(shù)據(jù)交互,負(fù)責(zé)系統(tǒng)文件的讀寫以及存儲對象的屬性改變,另外還有通過獲取符合鏈接、目錄、inode結(jié)構(gòu)等方式與元數(shù)據(jù)服務(wù)器進(jìn)行交互。
開發(fā)基于IPv6的Lustre文件存儲系統(tǒng)要解決的一個關(guān)鍵性問題就是Lustre文件存儲系統(tǒng)的網(wǎng)絡(luò)模塊,Lustre文件存儲系統(tǒng)采用的網(wǎng)絡(luò)模塊是Portals MPI,Portals MPI主要是針對規(guī)模較大的并行系統(tǒng)而設(shè)計(jì)開發(fā)的,該網(wǎng)絡(luò)模塊利用旁路應(yīng)用程序以及旁路操作系統(tǒng)等相關(guān)技術(shù)到達(dá)零拷貝的效果,并通過對網(wǎng)絡(luò)抽象層的應(yīng)用可以獨(dú)立支持各種網(wǎng)絡(luò)類型。TCP/IP NAL是Portals 支持的多種網(wǎng)絡(luò)類型中唯一一個涉及IP協(xié)議棧的,所以只需要對網(wǎng)絡(luò)抽象層進(jìn)行改進(jìn)設(shè)計(jì)。為了對Socket API同時(shí)支持IPv4和IPv6的原理有更深入的理解,就需要對Socket API的內(nèi)核實(shí)現(xiàn)原理進(jìn)行分析。Linux系統(tǒng)內(nèi)核對IPv6的支持是從該系統(tǒng)版本2.2開始,本文是以版本2.6為研究對象進(jìn)行分析。
2支持IPv4和IPv6雙協(xié)議棧的Socket設(shè)計(jì)原理
2.1選擇地址結(jié)構(gòu)
IPv4和IPv6之間最明顯的變化及時(shí)把32位地址位數(shù)增加到128位,in6_addr和in_addr分別是兩者在Linux系統(tǒng)中的描述形式,但最后還是采用其對應(yīng)的Socket地址結(jié)構(gòu)進(jìn)行描述,極sockaddr_in6和sockaddr_in,主要原因有三個:
第一,實(shí)現(xiàn)協(xié)議無關(guān)性的一個關(guān)鍵要素就是系統(tǒng)再進(jìn)行IP地址傳遞同時(shí)就其所屬協(xié)議族進(jìn)行傳遞,這就需要地址結(jié)構(gòu)中包含有所屬協(xié)議族,而Socket地址結(jié)構(gòu)很好地解決了這個問題。
第二,IPv4的單播地址可以保證全球唯一,但I(xiàn)Pv6包含有鏈接局部和聚合全局單播地址等,鏈接局部單播地址只能在給定鏈路內(nèi)保證唯一,但不可以保證全球惟一,其代表的接口是否相同不能利用in6_addr來進(jìn)行具體判斷,只有把sockaddr_in6結(jié)構(gòu)中的sin6_scope_id(指定鏈路范圍的成員)與結(jié)構(gòu)中in6_addr(Pv6地址成員)進(jìn)行有效結(jié)合才可以對接口進(jìn)行精確識別。
第三,sockaddr_storage 結(jié)構(gòu)和sockaddr 結(jié)構(gòu)是Socket 的兩個通用地址結(jié)構(gòu),sockaddr 結(jié)構(gòu)的容量要比sockaddr_storage 結(jié)構(gòu)小很多,因此在進(jìn)行空間預(yù)留時(shí)很容易出現(xiàn)空間不夠的問題,而sockaddr_storage 結(jié)構(gòu)有足夠大的容量。
2.2 選擇IP地址類型
第一,選擇IPv6地址類型。大端字節(jié)序和小端字節(jié)序是系統(tǒng)內(nèi)存中多字節(jié)類型的兩個存儲方法,兩個存儲方法的主要區(qū)別就是高序字節(jié)存儲在起始地址,還是低序字節(jié)存儲在起始地址。IPv6地址的表達(dá)方式有三種,三種地址表達(dá)方法的128位數(shù)地址都是利用數(shù)組來表示。數(shù)組元素是多字節(jié)的表達(dá)方式有兩種,另外一種是s6_addr,s6_addr的元素是利用長度為16的單字節(jié)數(shù)組。為了省去大端字節(jié)和小端字節(jié)相互轉(zhuǎn)換的麻煩,IPv6地址的表達(dá)方式盡可能采用s6_addr。
第二,選擇IPv4的地址類型。通常采用的int的IPv4地址表達(dá)方法其實(shí)是很不安全的,因?yàn)閕nt類型在很多情況下并不是32為,而且程序的可讀性也有所降低,因此IPv4的地址類型可以用in_addr來表示。
2.3使用同時(shí)支持IPv4和IPv6 雙棧的Socket API
以往的Socket API僅僅支持IPv4協(xié)議,隨著IPv6的誕生和發(fā)展,產(chǎn)生了支持雙棧的API。在對支持雙棧的API進(jìn)行調(diào)用時(shí)一定要明確地址結(jié)構(gòu)的格式和地址結(jié)構(gòu)的地址族,協(xié)議之間的相關(guān)性不能被隱藏。Getnameinfo()和getaddrinfo()是Socket API提供的兩個新型函數(shù),協(xié)議無關(guān)性可以利用這兩個函數(shù)來實(shí)現(xiàn)。利用getnameinfo()可以通過服務(wù)端口號和Socket地址結(jié)構(gòu)獲取服務(wù)名和主機(jī)名;getaddrinfo()可以由服務(wù)名和主機(jī)名獲取服務(wù)端口號和Socket地址結(jié)構(gòu)。
2.4 Socket系統(tǒng)在內(nèi)核中的調(diào)用
系統(tǒng)調(diào)用主要是給用戶空間的程序提供內(nèi)核服務(wù),系統(tǒng)調(diào)用用到的函數(shù)主要有connect(),socket(),以及setsockopt()等。對于比較重視效率的程序,如分布式系統(tǒng),其系統(tǒng)調(diào)用如果比較頻繁的話就需要轉(zhuǎn)移到內(nèi)核空間,以便提高效率。
在內(nèi)核中實(shí)現(xiàn)的系統(tǒng)直接調(diào)用的過程中,效率較高的都是底層函數(shù)。進(jìn)行socket系統(tǒng)調(diào)用的時(shí)候,獲得socket結(jié)構(gòu)指針后對其所指向的方法進(jìn)行直接調(diào)用,此時(shí)程序可以到達(dá)最高效率。結(jié)合文章以上論述分析,這種情況下指定的操作集就是socket指針指向的方法。另外,因?yàn)橛脩艨臻g的地址范圍和內(nèi)核空間的地址范圍有所不同,所以一定要對寄存器的段描述符進(jìn)行更改,使段描述符指向內(nèi)核空間,才可以實(shí)現(xiàn)內(nèi)核中的系統(tǒng)調(diào)用。
3對改進(jìn)后的 Lustre文件系統(tǒng)進(jìn)行測試
運(yùn)用文章的上述設(shè)計(jì)原理,成功設(shè)計(jì)開發(fā)出同時(shí)支持IPv4和IPv6雙協(xié)議的分布式文件存儲系統(tǒng)。對改進(jìn)后的Lustre文件系統(tǒng)性能進(jìn)行測試,該文件系統(tǒng)既可以在IPv4網(wǎng)上正常運(yùn)行,同時(shí)也可以在純粹的IPv6網(wǎng)上運(yùn)行。
為了對IPv4環(huán)境下的Lustre和IPv6環(huán)境下的Lustre進(jìn)行性能比較,進(jìn)行了對比性測試。測試的需要的相關(guān)設(shè)備:配置相同的兩臺機(jī)器,其一為Client和OST,另外一個是MDS;硬盤(300 GB×2 SATA)、DDR RAM(512 MB)、CPU(3. 0 G)作為性能測試硬件環(huán)境;Linux-2.4版本的RedHat 9.0和Lustre-1.2(改進(jìn)后的文件系統(tǒng))作為軟件環(huán)境。Iozone為測試工具。
具體測試方法:在Linux-2.4加載IPv6以及不加載IPv6的環(huán)境下運(yùn)行支持IPv4和IPv6雙棧的文件系統(tǒng)Lustre,利用Iozone在系統(tǒng)中寫出一定大小的文件,根據(jù)測試結(jié)果分析,系統(tǒng)的數(shù)據(jù)塊從小逐漸到大,在IPv4和IPv6環(huán)境下Lustre都可以獲得寬帶,Lustre在兩種環(huán)境中的運(yùn)行性能沒有表現(xiàn)出太多差別,主要是因?yàn)镮Pv4的地址長度僅僅是IPv6地址長度的四分之一,但I(xiàn)Pv6的數(shù)據(jù)包結(jié)構(gòu)比較簡單,而且有固定的報(bào)頭長度,有利于硬件的運(yùn)行和實(shí)現(xiàn),整體分析,Lustre在IPv4和IPv6環(huán)境下的性能基本相同。
4 結(jié)束語
本文以僅支持IPv4網(wǎng)絡(luò)協(xié)議的分布式文件系統(tǒng)Lustre為基礎(chǔ),利用Socket接口設(shè)計(jì)、開發(fā)了同時(shí)支持IPv4和IPv6兩種網(wǎng)絡(luò)協(xié)議的分布式文件系統(tǒng),對其設(shè)計(jì)開發(fā)原理做了具體闡述,并對改進(jìn)后的Lustre分布式文件系統(tǒng)進(jìn)行性能測試。測試結(jié)果證明基于IPv6的Lustre分布式文件系統(tǒng)可以用于構(gòu)建新一代網(wǎng)絡(luò)儲存集群,接下來要研究的是基于IPv6的數(shù)據(jù)傳輸問題。
參考文獻(xiàn):
[1] 曹強(qiáng),羅怡,謝長生,張常軍.IPv6存儲集群網(wǎng)絡(luò)模塊的設(shè)計(jì)應(yīng)用[J].江南大學(xué)學(xué)報(bào):自然科學(xué)版,2007(4).
[2] 陳如明. 對IP 技術(shù)發(fā)展中一些問題的思考[J]. 電信科學(xué), 2005, 21(8): 6-9 .
[3] 徐志桐. 在IPV4環(huán)境下部署IPV6網(wǎng)絡(luò)的策略[J]. 中國新技術(shù)新產(chǎn)品,2009(9) .
[4] 羅怡,謝長生,曹強(qiáng),張常軍. 下一代互聯(lián)網(wǎng)存儲集群系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J]. 計(jì)算機(jī)工程與科學(xué),2007(6) .
[5] 周俊. 對IPv4到IPv6過渡策略的淺析[J]. 揚(yáng)州職業(yè)大學(xué)學(xué)報(bào),2004(4) .
[6] 袁秀梅,樊勁輝,武浦軍. IPv4/IPv6過渡時(shí)期的網(wǎng)絡(luò)方案設(shè)計(jì)[J]. 北京工業(yè)職業(yè)技術(shù)學(xué)院學(xué)報(bào), 2004(3) .
[7] 王曉娟,劉景然,丁峰. IPv4向IPv6過渡方法的研究[J]. 青島遠(yuǎn)洋船員學(xué)院學(xué)報(bào),2006(2) .
[8] 羅林,李臘元. IPv4/IPv6過渡機(jī)制的研究[J]. 中國水運(yùn):理論版,2006(4) .