專利名稱:解決網(wǎng)際互聯(lián)協(xié)議上數(shù)據(jù)報(bào)損壞的方法
技術(shù)領(lǐng)域:
本發(fā)明涉及通過網(wǎng)際互聯(lián)協(xié)議可靠地傳輸數(shù)據(jù)報(bào)。
背景技術(shù):
在2006年4月4日,發(fā)表了一個(gè)公告,該公告涉及互聯(lián)網(wǎng)工程任務(wù) 組(IETF)維護(hù)的RFC 791中定義的標(biāo)準(zhǔn)網(wǎng)際互聯(lián)協(xié)議IPv4中存在的問 題。J.Heffner , M.Mathis 和 B. Chandler 起草的該文獻(xiàn) (http://www.psc. edu/ jheffner/drafts/draft-heffner-frag-harmf ul-XX. html,此處以引證的方式將其全部內(nèi)容結(jié)合于此)描述了通過IPv4 傳輸?shù)臄?shù)據(jù)報(bào)怎樣由于與IPv4報(bào)頭中的數(shù)據(jù)報(bào)標(biāo)識(shí)字段相關(guān)的問題而遭 受數(shù)據(jù)損壞。數(shù)據(jù)報(bào)損壞源于數(shù)據(jù)報(bào)的壽命期間有限數(shù)量的可用數(shù)據(jù)報(bào) 標(biāo)識(shí)符。作者沒有提供該問題的解決方案。
IPv4可以傳輸大小高達(dá)65,535 (2iS)字節(jié)的數(shù)據(jù)報(bào)。包括IPv4的 協(xié)議棧的網(wǎng)際互聯(lián)協(xié)議(工P)層可以給數(shù)據(jù)報(bào)指派16位的標(biāo)識(shí)符,這暗 示著存在65,535種可能的數(shù)據(jù)報(bào)標(biāo)識(shí)符。典型地,將IP數(shù)據(jù)報(bào)標(biāo)識(shí)符 實(shí)現(xiàn)為每次使用數(shù)據(jù)報(bào)標(biāo)識(shí)符時(shí)遞增的計(jì)數(shù)器。對(duì)于16位計(jì)數(shù)器,當(dāng)計(jì) 數(shù)器到達(dá)最大值65, 535時(shí),其值歸零。IP將大的數(shù)據(jù)報(bào)分割成較小的塊 以通過媒介例如以太網(wǎng)發(fā)送片段。如果以太網(wǎng)支持1500字節(jié)的幀,則IP 層可以生成高達(dá)44幀,其中每個(gè)幀具有相同的數(shù)據(jù)報(bào)標(biāo)識(shí)符且具有相對(duì) 于數(shù)據(jù)報(bào)的偏移。遠(yuǎn)程主機(jī)使用數(shù)據(jù)報(bào)標(biāo)識(shí)符和偏移信息在把數(shù)據(jù)報(bào)傳 遞到通信棧的上層之前重組數(shù)據(jù)報(bào)。對(duì)于高速媒介,主機(jī)將在極短的時(shí)
4間內(nèi)發(fā)送多于65, 535個(gè)數(shù)據(jù)報(bào),導(dǎo)致主機(jī)使數(shù)據(jù)報(bào)標(biāo)識(shí)符計(jì)數(shù)器的值復(fù) 位。例如,如果使用lGb每秒(Gbps)的以太網(wǎng),則對(duì)于較小的數(shù)據(jù)報(bào), 數(shù)據(jù)報(bào)標(biāo)識(shí)符計(jì)數(shù)器會(huì)在不到1秒內(nèi)復(fù)位。大多數(shù)通信棧保持?jǐn)?shù)據(jù)報(bào)30 秒至120秒以用于重組。因此,如果具有特定數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)據(jù)報(bào)被 存儲(chǔ)在存儲(chǔ)器中以用于重組且其片段之一丟失,則具有相同標(biāo)識(shí)符的后 續(xù)的不同數(shù)據(jù)報(bào)片段將導(dǎo)致第一數(shù)據(jù)報(bào)中的損壞。因?yàn)榻邮罩鳈C(jī)將來自 第二數(shù)據(jù)報(bào)的片段解釋為屬于第一數(shù)據(jù)報(bào),因?yàn)樗哂邢嗤臄?shù)據(jù)報(bào)標(biāo) 識(shí)符和偏移,損壞就會(huì)發(fā)生。該問題也存在于通過IP傳輸?shù)腡CP、 UDP、 工CMP或其他數(shù)據(jù)。問題特點(diǎn)在于由使用數(shù)據(jù)報(bào)標(biāo)識(shí)符池引起,其中當(dāng)數(shù) 據(jù)報(bào)在系統(tǒng)中存活時(shí),該池中只有有限數(shù)量的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符。
有趣的是,在發(fā)表該問題報(bào)告的同時(shí),網(wǎng)絡(luò)存儲(chǔ)技術(shù)生產(chǎn)商Zetera 公司遇到并解決了數(shù)據(jù)報(bào)損壞問題。Zetera在1Gbps的以太網(wǎng)系統(tǒng)上通 過UDP/工P運(yùn)行它自己的存儲(chǔ)協(xié)議一Z-SANTM協(xié)議時(shí)發(fā)現(xiàn)該問題。Zetera 提出了一種解決方案,該方案解決了 2006年4月10日提交的、轉(zhuǎn)讓給 Zetera的美國臨時(shí)專利申請60/791, 051中描述的問題,以引證的方式將 該申請的全部內(nèi)容結(jié)合于此。
關(guān)于數(shù)據(jù)報(bào)損壞問題的其他研究表明,該問題早在1987年當(dāng)Sun網(wǎng) 絡(luò)文件系統(tǒng)(NFS)實(shí)施的客戶遭受數(shù)據(jù)損壞時(shí)就顯現(xiàn)。NFS使用會(huì)由于 上述原因而損壞的8KBUPD數(shù)據(jù)報(bào)。NFS的實(shí)施通過縮短N(yùn)FS在應(yīng)用層等 待響應(yīng)的時(shí)間或通過數(shù)據(jù)報(bào)上的大的校驗(yàn)和值(32位校驗(yàn)和或更大)解 決該問題。這種解決方案減輕了丟失的風(fēng)險(xiǎn),但是并沒有解決該問題。 另外,較短的超時(shí)降低了系統(tǒng)的效率,因?yàn)橄到y(tǒng)必須執(zhí)行額外的重試。
題為"Prevention and detection of IP identification wraparound errors"的美國專利6, 894, 976教導(dǎo)了通過使用超時(shí)與校驗(yàn)和減小與IP 數(shù)據(jù)報(bào)標(biāo)識(shí)符復(fù)位的問題相關(guān)的風(fēng)險(xiǎn)的方法。然而,該文獻(xiàn)并沒有提出 適于所有基于IP的應(yīng)用的問題的可行解決方案。
所述問題是標(biāo)準(zhǔn)化IP的固有部分,并且如果不改變標(biāo)準(zhǔn),則不能普 遍解決。然而,希望有一種能夠以適用于網(wǎng)絡(luò)存儲(chǔ)、其他網(wǎng)絡(luò)設(shè)備或網(wǎng) 絡(luò)應(yīng)用的方式解決該問題的實(shí)際解決方案??梢灶A(yù)期,實(shí)際解決方案將
5被這些標(biāo)準(zhǔn)采用。所需的解決方案將具有下述特性
*該解決方案應(yīng)當(dāng)在IP層操作,使得應(yīng)用不需要改變。
*該解決方案應(yīng)當(dāng)具有后向兼容性,使得如果在標(biāo)準(zhǔn)中需要任何改
變,則通信棧的新版本可以與現(xiàn)有的棧一起工作。 *該解決方案應(yīng)當(dāng)只需要對(duì)現(xiàn)有棧作最小的變化。
*相對(duì)于數(shù)據(jù)傳輸?shù)牟粩嘣鲩L的速度(10Gpbs, 100Gpbs等),該
解決方案應(yīng)當(dāng)經(jīng)得起未來的考驗(yàn)。 *該解決方案應(yīng)當(dāng)將數(shù)據(jù)報(bào)標(biāo)識(shí)符與數(shù)據(jù)報(bào)壽命結(jié)合以幫助控制
數(shù)據(jù)報(bào)標(biāo)識(shí)符的使用。 很明顯,對(duì)于數(shù)據(jù)報(bào)損壞問題的解決方案仍存在長期需求。優(yōu)選地, 解決方案完全解決問題而不是僅減小問題發(fā)生的風(fēng)險(xiǎn)。
發(fā)明內(nèi)容
本發(fā)明包括用于解決由于使用具有有限供給的標(biāo)識(shí)符池的數(shù)據(jù)報(bào)標(biāo) 識(shí)符引起的數(shù)據(jù)報(bào)損壞問題的方法。該方法包括提供不同于第一池的標(biāo) 識(shí)符池且向數(shù)據(jù)報(bào)指派從第二池提取的數(shù)據(jù)報(bào)標(biāo)識(shí)符。而且,控制數(shù)據(jù) 報(bào)標(biāo)識(shí)符以防止在數(shù)據(jù)報(bào)的壽命期間被再次使用以確保不出現(xiàn)損壞問 題。在一些實(shí)施方式中,第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池包括更大數(shù)量的數(shù)據(jù)報(bào)標(biāo) 識(shí)符,而在其他實(shí)施方式中,該第二池包括更小數(shù)量的數(shù)據(jù)報(bào)標(biāo)識(shí)符。 在可用數(shù)據(jù)報(bào)標(biāo)識(shí)符數(shù)量增加的優(yōu)選實(shí)施方式中,數(shù)量增大的標(biāo)識(shí)符的 耗盡時(shí)間大于由于數(shù)據(jù)報(bào)傳輸速率而可能發(fā)生數(shù)據(jù)報(bào)損壞問題的時(shí)間。 在可用數(shù)據(jù)報(bào)標(biāo)識(shí)符數(shù)量減小,尤其是減小到一個(gè)標(biāo)識(shí)符的其他優(yōu)選實(shí) 施方式中,控制該標(biāo)識(shí)符以防止被后續(xù)數(shù)據(jù)報(bào)再次使用。
尤其優(yōu)選的實(shí)施方式包括使用所公開的該方法的存儲(chǔ)協(xié)議。使用存 儲(chǔ)協(xié)議,通過所構(gòu)想的數(shù)據(jù)報(bào)與存儲(chǔ)設(shè)備交換數(shù)據(jù)。存儲(chǔ)協(xié)議包括專有
的存儲(chǔ)協(xié)議或標(biāo)準(zhǔn)存儲(chǔ)協(xié)議。標(biāo)準(zhǔn)存儲(chǔ)協(xié)議的示例包括iSCSI、 FCIP或 iFCP。
在一些實(shí)施方式中,第一主機(jī)跟蹤當(dāng)前使用哪個(gè)數(shù)據(jù)報(bào)標(biāo)識(shí)符。第 一主機(jī)向第二主機(jī)通報(bào)允許的數(shù)據(jù)報(bào)標(biāo)識(shí)符;然后第二主機(jī)將該數(shù)據(jù)報(bào)
6標(biāo)識(shí)符用于發(fā)送回第一主機(jī)的數(shù)據(jù)報(bào)。第二主機(jī)將不再使用該數(shù)據(jù)報(bào)標(biāo) 識(shí)符,除非第一主機(jī)指示它可以再次使用。第一主機(jī)通過列表跟蹤使用 過的數(shù)據(jù)報(bào)標(biāo)識(shí)符。數(shù)據(jù)報(bào)標(biāo)識(shí)符以通信協(xié)議棧能夠照常重組分段數(shù)據(jù) 報(bào)的方式與數(shù)據(jù)報(bào)相關(guān)聯(lián)??刂谱罱褂玫臄?shù)據(jù)報(bào)標(biāo)識(shí)符以防止被再次 使用,以確保后續(xù)的數(shù)據(jù)報(bào)不破壞當(dāng)前數(shù)據(jù)報(bào)的重組。
使用網(wǎng)際互聯(lián)協(xié)議的網(wǎng)絡(luò)應(yīng)用的開發(fā)人員可以有利地采用此處的教 導(dǎo)來解決能夠?qū)е聰?shù)據(jù)損壞的數(shù)據(jù)報(bào)損壞??梢越Y(jié)合TCP或UDP傳輸或 影響發(fā)送數(shù)據(jù)報(bào)的工P的其他協(xié)議使用所提出的方法。所述方法尤其對(duì)客 戶可訪問的網(wǎng)絡(luò)設(shè)備中的部署(包括高度關(guān)注數(shù)據(jù)完整性的數(shù)據(jù)存儲(chǔ)應(yīng) 用)有用。
下面的描述涉及本文獻(xiàn)中使用的術(shù)語。提供術(shù)語以確保在沒有暗含 限制地討論本發(fā)明的各個(gè)方面時(shí)的清晰性,并減小文獻(xiàn)主體中的重復(fù)。
術(shù)語"數(shù)據(jù)報(bào)"表示通過通信鏈路發(fā)送的數(shù)據(jù)塊,其中所述塊可以
被分割成小片以便于發(fā)送。典型地,數(shù)據(jù)報(bào)與包括IPv4或IPv6在內(nèi)的 網(wǎng)際互聯(lián)協(xié)議(工P)相關(guān)聯(lián)。另外,通過數(shù)據(jù)報(bào)標(biāo)識(shí)符識(shí)別數(shù)據(jù)報(bào)以幫 助片段的重組。
本發(fā)明的各個(gè)目標(biāo)、特征、方面和優(yōu)點(diǎn)將從下面本發(fā)明的優(yōu)選實(shí)施 方式的詳細(xì)描述以及附圖更加顯現(xiàn),附圖中相同的數(shù)字代表相同的組件。
圖1A顯示了現(xiàn)有技術(shù)IPv4報(bào)頭; 圖1B顯示了現(xiàn)有技術(shù)IPv6報(bào)頭;
圖2示出了多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符的一個(gè)可能實(shí)施方式,其中數(shù)據(jù)報(bào) 標(biāo)識(shí)符的值是重復(fù)的;
圖3示出了多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符的一個(gè)可能實(shí)施方式,其中數(shù)據(jù)報(bào) 標(biāo)識(shí)符在不同字段中包括多個(gè)值;
圖4A示出了用于IPv4的多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符的一個(gè)可能實(shí)施方式,
術(shù)語表其中數(shù)據(jù)報(bào)標(biāo)識(shí)符包括工P選項(xiàng)的使用;
圖4B示出了用于IPv6的多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符的一個(gè)可能實(shí)施方式, 其中數(shù)據(jù)報(bào)標(biāo)識(shí)符包括使用多個(gè)片段報(bào)頭的IPv6報(bào)頭中的多個(gè)字段; 圖5示出了存儲(chǔ)數(shù)據(jù)報(bào)標(biāo)識(shí)符列表的存儲(chǔ)器的一個(gè)實(shí)施方式; 圖6呈現(xiàn)了用于控制從具有更少數(shù)量的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)據(jù)報(bào) 標(biāo)識(shí)符池中提取的數(shù)據(jù)報(bào)標(biāo)識(shí)符的再使用的方法的一個(gè)示例性實(shí)施方 式;
圖7示出了方法的示例性實(shí)施方式,其中創(chuàng)建數(shù)據(jù)報(bào)標(biāo)識(shí)符池以確 保不發(fā)生數(shù)據(jù)報(bào)損壞。
具體實(shí)施例方式
下面的描述給出了幾個(gè)示例來闡明本發(fā)明的概念。盡管使用示例, 它們決不是要限制發(fā)明本質(zhì)的范圍。應(yīng)當(dāng)從其最廣義范圍理解所給出的 實(shí)施方式。
概述
描述了用于解決與高速網(wǎng)絡(luò)上不可靠的IP分段相關(guān)的問題的解決 方案。IP分段涉及通信棧的執(zhí)行數(shù)據(jù)報(bào)的分段的IP層,該數(shù)據(jù)報(bào)可能傳 遞包括TCP、 UDP、工CMP、 IGMP的協(xié)議或其他協(xié)議,并且使得數(shù)據(jù)報(bào)與物 理介質(zhì)的最大傳輸單元(MTU)匹配。假設(shè)IP使用虛擬地址處理通信且 該IP需要使數(shù)據(jù)報(bào)傳輸與一般具有固定的最大尺寸的實(shí)際物理介質(zhì)匹 配,則分段是必須的。數(shù)據(jù)報(bào)可以具有高達(dá)65, 535字節(jié)的長度,其中802. 3 以太網(wǎng)物理層典型地具有1500字節(jié)的最大尺寸。IP既在發(fā)送操作過程中 執(zhí)行數(shù)據(jù)報(bào)的分段又在接收時(shí)執(zhí)行數(shù)據(jù)報(bào)的重組。例如,執(zhí)行重組的處 理通過包括源IP地址(32位)、數(shù)據(jù)報(bào)標(biāo)識(shí)字段(16位)、標(biāo)志(3位) 和片段偏移字段(13位)的工Pv4報(bào)頭中的字段的關(guān)聯(lián)來完成。
通過在IPv4中具有16位長度的數(shù)據(jù)報(bào)標(biāo)識(shí)符來識(shí)別傳輸中的多個(gè) 數(shù)據(jù)報(bào)。典型地,通信棧中的IP層使用計(jì)數(shù)器,每次使用數(shù)據(jù)報(bào)標(biāo)識(shí)符 時(shí),該計(jì)數(shù)器加l。計(jì)數(shù)器的值代表了數(shù)據(jù)報(bào)標(biāo)識(shí)符。數(shù)據(jù)報(bào)損壞問題在 重組中出現(xiàn);IP層將保留數(shù)據(jù)報(bào)的片段高達(dá)120秒以用于重組。具體而言,百1^0\^ 使用60秒的窗口,而Linux使用30秒的窗口??梢詷?gòu)建 最差情況的情形來說明該問題。
假設(shè)這樣的分段數(shù)據(jù),其中一個(gè)片段沒有被收到,使得接收緩沖器 在接下來的120秒中試圖進(jìn)行重組。然后使用也具有多個(gè)片段的附加IP 數(shù)據(jù)報(bào)繼續(xù)進(jìn)行通信。在支持l Gbps的網(wǎng)絡(luò)上,數(shù)據(jù)報(bào)標(biāo)識(shí)符將會(huì)在約 30秒內(nèi)復(fù)位。具體而言,使用512字節(jié)的有效載荷大小的協(xié)議將會(huì)在約 270毫秒內(nèi)遇到復(fù)位??紤]IP層等待高達(dá)120秒,片段與原始數(shù)據(jù)報(bào)錯(cuò) 誤關(guān)聯(lián)的可能性很大;由此,導(dǎo)致?lián)p壞的數(shù)據(jù)。有效載荷校驗(yàn)和可用于 試圖避免這種情況;然而,在16位的校驗(yàn)和字段并使用隨機(jī)數(shù)據(jù)的情況 下,在這些最差情況下每4.8小時(shí)就可能發(fā)生數(shù)據(jù)損壞。若是10Gbps則 遇到問題的速度要快10倍。
很明顯,需要解決這種問題。通過向數(shù)據(jù)報(bào)的工P報(bào)頭添加附加可選 字段可以解決這種問題。在一些實(shí)施方式中,可選字段包括擴(kuò)展數(shù)據(jù)報(bào) 標(biāo)識(shí)信息,該信息可以被主機(jī)用來增大可用數(shù)據(jù)報(bào)標(biāo)識(shí)符池。如果池具 有相對(duì)于網(wǎng)絡(luò)速度和數(shù)據(jù)報(bào)發(fā)送速率足夠的尺寸,則增大的可用數(shù)據(jù)報(bào) 標(biāo)識(shí)符池將具有足夠的分辨率來確保數(shù)據(jù)報(bào)損壞不發(fā)生??刂瓶捎脭?shù)據(jù) 報(bào)標(biāo)識(shí)符以防止僅通過它們的號(hào)碼再次使用這些標(biāo)識(shí)符。
在用于各命令具有不同響應(yīng)的協(xié)議的替代實(shí)施方式中,包括命令的 數(shù)據(jù)報(bào)將也在有效載荷中包括數(shù)據(jù)報(bào)標(biāo)識(shí)符。則響應(yīng)數(shù)據(jù)報(bào)將在有效載 荷和工P層報(bào)頭中都使用其響應(yīng)中的標(biāo)識(shí)符。主機(jī)則可以使用排除表或列 表來避免數(shù)據(jù)報(bào)壽命期間的數(shù)據(jù)報(bào)標(biāo)識(shí)符的再次使用。然后可以基于存 活時(shí)間大于超時(shí)時(shí)段的條目來清理排除表,這將確保沒有不匹配的關(guān)聯(lián)。 如果排除列表變滿,則認(rèn)為網(wǎng)絡(luò)"太臟"。因此,該解決方案是創(chuàng)建一個(gè) 具有可由一個(gè)主機(jī)控制的更少數(shù)量的可用數(shù)據(jù)報(bào)的數(shù)據(jù)報(bào)標(biāo)識(shí)符池。
用于網(wǎng)際互聯(lián)協(xié)議的數(shù)據(jù)報(bào)標(biāo)識(shí)
網(wǎng)際互聯(lián)協(xié)議(IP)可以包括標(biāo)準(zhǔn)化的IP,例如,IPv4或IPv6。 即使IPv4和IPv6是標(biāo)準(zhǔn)化的,由于它們識(shí)別數(shù)據(jù)報(bào)以進(jìn)行重組的方式, 它們也具有上述問題。圖1A顯示了現(xiàn)有技術(shù)IPv4報(bào)頭。在RFC 791中詳細(xì)描述了 IPv4報(bào) 頭,以引證的方式將其全部內(nèi)容結(jié)合于此。報(bào)頭100包括大量的標(biāo)準(zhǔn)化 字段,包括如下字段-
*版本103: IP協(xié)議的版本。IPv4使用的值為4。
* IP報(bào)頭長度105: IPv4報(bào)頭中32位字的數(shù)量,最小值為5。
*服務(wù)類型(ToS) 107:提供服務(wù)質(zhì)量的指示。
*數(shù)據(jù)報(bào)長度109:數(shù)據(jù)報(bào)的長度(以八位組(字節(jié))為單位)。
*標(biāo)識(shí)110:在分段或重組中使用的對(duì)于源和目的地使數(shù)據(jù)報(bào)彼此
區(qū)分的16位標(biāo)識(shí)符。
爭標(biāo)志1U:控制分段的標(biāo)志。
*片段偏移113:以八個(gè)字節(jié)遞增的當(dāng)前片段的偏移(以八位組為 單位)。
*壽命(TTL) 115:在數(shù)據(jù)報(bào)被丟棄之前允許的跳數(shù)。 *協(xié)議117:與數(shù)據(jù)報(bào)的傳輸相關(guān)的協(xié)議號(hào)。協(xié)議包括ICMP、 TCP、 UDP或其他。
*報(bào)頭校驗(yàn)和119:僅用于IPv4報(bào)頭的校驗(yàn)和。 *源地址121:數(shù)據(jù)報(bào)的源的IPv4地址。 *目的地地址123:數(shù)據(jù)報(bào)的目的地的IPv4地址。 *選項(xiàng)120A至120N:可以擴(kuò)展工Pv4報(bào)頭的選項(xiàng)。 IPv4標(biāo)準(zhǔn)在RFC 791中規(guī)定了標(biāo)識(shí)110 "對(duì)于該源-目的地對(duì)及協(xié)議 在互聯(lián)網(wǎng)系統(tǒng)上數(shù)據(jù)報(bào)有效的時(shí)間中必須是唯一的"。盡管存在很多方法 來獲取標(biāo)識(shí)110的值,在該標(biāo)準(zhǔn)中沒有提供確保標(biāo)識(shí)110在數(shù)據(jù)報(bào)的壽 命期間是唯一的指導(dǎo)。典型地,IPv4的實(shí)施使用計(jì)數(shù)器,該計(jì)數(shù)器在每 次使用數(shù)據(jù)報(bào)時(shí)加l。很明顯,在數(shù)據(jù)報(bào)的壽命超過了發(fā)生復(fù)位條件所需 要的時(shí)間時(shí),大多數(shù)IPv4實(shí)現(xiàn)方式實(shí)現(xiàn)的標(biāo)識(shí)110沒有遵循該標(biāo)準(zhǔn)。在 標(biāo)識(shí)110中簡單地置入16位信息代表不足以在數(shù)據(jù)報(bào)壽命期間保持唯一 性的數(shù)據(jù)報(bào)標(biāo)識(shí)符池。
圖1B顯示了現(xiàn)有技術(shù)IPv6報(bào)頭。在RFC 2460中描述了 IPv6標(biāo)準(zhǔn), 以引證的方式將其全部內(nèi)容結(jié)合于此。RFC 2460提供了 IPv6報(bào)頭150的詳細(xì)描述。相對(duì)于分段,IPv6報(bào)頭150通過"下一報(bào)頭"字段而不是在 其主報(bào)頭中處理分段信息。而且,工Pv6期望源來分割數(shù)據(jù)報(bào)而不是像IPv4
中那樣相反地由中間設(shè)備分割數(shù)據(jù)報(bào)。工Pv6報(bào)頭包括以下字段
*版本153: IP協(xié)議的版本。工Pv6使用的值為6。
*業(yè)務(wù)類型155:用于對(duì)不同類型的業(yè)務(wù)區(qū)分優(yōu)先次序。 *業(yè)務(wù)標(biāo)簽157:指示服務(wù)質(zhì)量。
*有效載荷長度159:數(shù)據(jù)報(bào)中除主報(bào)頭之外且包括任何后續(xù)報(bào)頭
字段在內(nèi)的數(shù)據(jù)長度。
*后續(xù)報(bào)頭161:指示后續(xù)報(bào)頭的類型的值,該值被適當(dāng)定義。見
IETF維護(hù)的RFC 1700。
*跳限制163:允許數(shù)據(jù)報(bào)經(jīng)過的跳數(shù)。
*源地址165:數(shù)據(jù)報(bào)的源的IPv6地址。 *目的地地址167:數(shù)據(jù)報(bào)的目的地的IPv6地址。 上述字段包括IPv6報(bào)頭150的強(qiáng)制組件。通過對(duì)后續(xù)報(bào)頭161設(shè)置 合適的值而允許附加報(bào)頭。例如,如果后續(xù)報(bào)頭161的值為6,則后續(xù)報(bào) 頭將是TCP報(bào)頭;如果后續(xù)報(bào)頭161的值為17,則后續(xù)報(bào)頭將是UDP報(bào) 頭;或如果后續(xù)報(bào)頭161的值為44,則后續(xù)報(bào)頭將是片段報(bào)頭。片段報(bào) 頭180包括用于分段的下述字段
*后續(xù)報(bào)頭171:指向數(shù)據(jù)報(bào)中的使用與后續(xù)報(bào)頭161相同的編號(hào)
方案的后續(xù)報(bào)頭。 *字段173和177:為未來使用而預(yù)留。
拳片段偏移175:以八字節(jié)為增量的當(dāng)前片段的偏移(八位組)。
*更多片段179:指示更多片段存在的位值。
*標(biāo)識(shí)170: 32位標(biāo)識(shí)符,用于對(duì)于源和目的地使數(shù)據(jù)報(bào)彼此區(qū)分。 和用于IPv4的RFC 791 —樣,RFC 2460規(guī)定了標(biāo)識(shí)170應(yīng)當(dāng)具有 "必須不同于使用相同源地址和目的地地址最近發(fā)送的任何其他分段分 組的值"的值。RFC 2460提議為每一對(duì)使用多個(gè)計(jì)數(shù)器;然而,它沒有 建議或啟發(fā)為數(shù)據(jù)報(bào)標(biāo)識(shí)符使用多個(gè)字段。盡管標(biāo)識(shí)170包括32位值, 可以預(yù)期,當(dāng)網(wǎng)絡(luò)速度增加時(shí),IPv6將經(jīng)歷與IPv4在較低的速度時(shí)相同
ii的數(shù)據(jù)損壞問題。例如,假設(shè)最小分段的IPv6數(shù)據(jù)報(bào),如果線路速度是 100 Gbps,則用于標(biāo)識(shí)170的232個(gè)值的池將在不到180秒(約3分鐘) 內(nèi)耗盡,接近網(wǎng)絡(luò)上數(shù)據(jù)報(bào)的壽命。如果線路速度是1000 Gbps,則用于 標(biāo)識(shí)符170的2 32個(gè)值的池將在不到18秒內(nèi)消耗,遠(yuǎn)低于數(shù)據(jù)報(bào)30至120
秒的壽命。
在前面的示例中選擇了 512字節(jié)的數(shù)據(jù)報(bào),因?yàn)閴K級(jí)網(wǎng)絡(luò)存儲(chǔ)典型 地以512字節(jié)的塊工作,盡管多個(gè)塊可以連接成單個(gè)數(shù)據(jù)報(bào)以由存儲(chǔ)介 質(zhì)進(jìn)行讀或?qū)憽6?,所設(shè)想的通信速度并不是不切實(shí)際的,因?yàn)橛锌?能利用IP作為內(nèi)部通信總線,其中距離短,數(shù)據(jù)速率可以很高。
數(shù)據(jù)報(bào)標(biāo)識(shí)符
在優(yōu)選實(shí)施方式中,與僅表示工P數(shù)據(jù)報(bào)報(bào)頭字段中的標(biāo)識(shí)字段(標(biāo) 識(shí)110和170)相比,數(shù)據(jù)報(bào)標(biāo)識(shí)符代表更廣泛的概念。數(shù)據(jù)報(bào)標(biāo)識(shí)符包 括一個(gè)或多個(gè)值,這些值共同使得在數(shù)據(jù)報(bào)的壽命期間在源和目的地之 間能夠唯一地識(shí)別數(shù)據(jù)報(bào)。數(shù)據(jù)報(bào)標(biāo)識(shí)符的"唯一性"不必是永恒的。 換句話說,當(dāng)超出數(shù)據(jù)報(bào)的壽命之后,數(shù)據(jù)報(bào)標(biāo)識(shí)符可以被再次使用以 識(shí)別任意后續(xù)發(fā)送的數(shù)據(jù)報(bào)。
多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符
數(shù)據(jù)報(bào)標(biāo)識(shí)符包括單字段標(biāo)識(shí)符或多字段標(biāo)識(shí)符。單字段標(biāo)識(shí)符是 具有指派給數(shù)據(jù)報(bào)以識(shí)別數(shù)據(jù)報(bào)的單各值的那些標(biāo)識(shí)符并且存儲(chǔ)在單個(gè) 字段中。單字段標(biāo)識(shí)符的示例包括ip"報(bào)頭中的16位標(biāo)識(shí)符110或IPv6
報(bào)頭中的32位標(biāo)識(shí)符170。多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符代表其中兩個(gè)或更多的 字段組合以形成數(shù)據(jù)報(bào)標(biāo)識(shí)符的標(biāo)識(shí)符。例如,標(biāo)識(shí)110可以與報(bào)頭中 的另一字段組合或可能與有效載荷組合以形成數(shù)據(jù)報(bào)標(biāo)識(shí)符。或者,用 于數(shù)據(jù)報(bào)標(biāo)識(shí)符的單值可以在數(shù)據(jù)報(bào)中重復(fù)多次。例如,如稍后部分中 討論的,單數(shù)據(jù)報(bào)標(biāo)識(shí)符值可以存儲(chǔ)在IPv4分組的報(bào)頭中作為標(biāo)識(shí)110, 并且在數(shù)據(jù)報(bào)本身的有效載荷內(nèi)重復(fù)??梢栽跀?shù)據(jù)報(bào)中使用的其他字段 包括標(biāo)識(shí)符GUID、校驗(yàn)和或其它可以在數(shù)據(jù)報(bào)的壽命期間提高數(shù)據(jù)報(bào)標(biāo)識(shí)符的"唯一性"的值。
多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符單值化
圖2示出了多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符的一個(gè)可能實(shí)施方式,其中數(shù)據(jù)報(bào) 標(biāo)識(shí)符的值被重復(fù)。在一個(gè)優(yōu)選實(shí)施方式中,數(shù)據(jù)報(bào)標(biāo)識(shí)符被放置在工P 報(bào)頭的標(biāo)識(shí)字段中,且還放置在數(shù)據(jù)報(bào)的有效載荷中。數(shù)據(jù)報(bào)200代表
具有報(bào)頭220和可能的有效載荷230的典型的IP數(shù)據(jù)報(bào)。在該實(shí)施方式 中,數(shù)據(jù)報(bào)標(biāo)識(shí)符210在報(bào)頭220和有效載荷230中重復(fù)。對(duì)于IPv4數(shù) 據(jù)報(bào),報(bào)頭220中的數(shù)據(jù)報(bào)標(biāo)識(shí)符210至少部分地存儲(chǔ)在圖1A的標(biāo)識(shí)110 中。對(duì)于工Pv6數(shù)據(jù)報(bào),報(bào)頭220中的數(shù)據(jù)報(bào)標(biāo)識(shí)符210至少部分地存儲(chǔ) 在圖1B的片段報(bào)頭中的標(biāo)識(shí)170中??梢灶A(yù)期數(shù)據(jù)報(bào)標(biāo)識(shí)符將可以是任 意尺寸,包括16位、32位、48位、64位或更大。
在有效載荷230中重復(fù)數(shù)據(jù)報(bào)標(biāo)識(shí)符210提供了若干優(yōu)點(diǎn)。 一個(gè)優(yōu) 點(diǎn)涉及不可能改變IP模塊的內(nèi)部工作的應(yīng)用。在有效載荷230中放置數(shù) 據(jù)報(bào)標(biāo)識(shí)符210提供了對(duì)數(shù)據(jù)報(bào)標(biāo)識(shí)符210的應(yīng)用控制。另一優(yōu)點(diǎn)包括 不必修改標(biāo)準(zhǔn)數(shù)據(jù)報(bào)報(bào)頭結(jié)構(gòu)就解決了數(shù)據(jù)報(bào)損壞問題。下面的部分將 進(jìn)一步闡明在有效載荷中放置數(shù)據(jù)報(bào)標(biāo)識(shí)符210怎樣提供對(duì)數(shù)據(jù)報(bào)標(biāo)識(shí) 符的"唯一性"的更強(qiáng)控制??梢灶A(yù)期,當(dāng)需要、有用或必要時(shí),數(shù)據(jù) 報(bào)標(biāo)識(shí)符的值被重復(fù)任意次。
多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符多值化
圖3示出了多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符的一個(gè)可能實(shí)施方式,其中數(shù)據(jù)報(bào) 標(biāo)識(shí)符包括不同字段中的多個(gè)值。數(shù)據(jù)報(bào)300包括報(bào)頭320和有效載荷 330。在該實(shí)施方式中,通過在數(shù)據(jù)報(bào)標(biāo)識(shí)符310A至310D代表的兩個(gè)或 更多字段之間分割的數(shù)據(jù)報(bào)標(biāo)識(shí)符識(shí)別數(shù)據(jù)報(bào)300。字段按照需要在報(bào)頭 320或有效載荷330之間擴(kuò)展。附加的字段使得能夠通過增加池中的可用 數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)量而擴(kuò)展數(shù)據(jù)報(bào)標(biāo)識(shí)符的分辨率。
多值字段的優(yōu)選實(shí)施方式位于IP數(shù)據(jù)報(bào)的報(bào)頭內(nèi)的可選字段中。因 為這些字段是可選的,使用可選報(bào)頭字段對(duì)現(xiàn)有IP模塊的改變減小到最
13小。當(dāng)改進(jìn)的IP模塊與現(xiàn)有的IP模塊交換具有可選報(bào)頭字段的數(shù)據(jù)報(bào) 時(shí),現(xiàn)有的IP模塊應(yīng)當(dāng)忽略任何未知選項(xiàng),由此實(shí)現(xiàn)現(xiàn)有的行為。當(dāng)改 進(jìn)的工P模塊與理解可選報(bào)頭字段的另一改進(jìn)的IP模塊交換數(shù)據(jù)報(bào)時(shí), 較高分辨率的數(shù)據(jù)報(bào)標(biāo)識(shí)符解決了數(shù)據(jù)報(bào)損壞問題。
多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符多值化的IPV4數(shù)據(jù)報(bào)標(biāo)識(shí)符 圖4A示出了用于IPv4的多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符的一個(gè)可能實(shí)施方
式,其中數(shù)據(jù)報(bào)標(biāo)識(shí)符包括IP選項(xiàng)的使用。IPv4報(bào)頭選項(xiàng)結(jié)構(gòu)在RFC 791 中定義。選項(xiàng)400包括三個(gè)字段,包括類型401、長度407和選項(xiàng)數(shù)據(jù) 409。長度407代表包括類型401、長度407和選項(xiàng)數(shù)據(jù)409的選項(xiàng)中的 總字節(jié)數(shù)。選項(xiàng)數(shù)據(jù)409包括與選項(xiàng)相關(guān)的信息且可以包括零或更多個(gè) 字節(jié)的信息。類型401還分成三個(gè)字段,這也在RFC 791中定義。復(fù)制 402表示選項(xiàng)401是否被復(fù)制到所有數(shù)據(jù)報(bào)片段。類型403表示選項(xiàng)400 是否是用于控制(值為0X0時(shí))或用于測量(值為0x3時(shí))。數(shù)字404代 表表示該選項(xiàng)實(shí)際代表什么的0至32范圍的值。國際賦號(hào)授權(quán)組織 (Internet Assigned Numbers Authority: IANA) 旨 底了這些《直。在!異寫本說 明書時(shí),值0至21以及23至24已經(jīng)被指派(參見 http://iana. org/assignments/ip-paraineters last updated 18-OCT-2005)。
在一個(gè)優(yōu)選實(shí)施方式中,如IPv4報(bào)頭420所例示,附加數(shù)據(jù)報(bào)頭選 項(xiàng)定義了擴(kuò)展數(shù)據(jù)報(bào)標(biāo)識(shí)符。報(bào)頭長度405具有大于5的值以表示在報(bào) 頭中存在超過最小值5的另外的32位字。例如,如選項(xiàng)430B和430C所 示,可以向報(bào)頭420添加一個(gè)或多個(gè)數(shù)據(jù)報(bào)片段標(biāo)識(shí)選項(xiàng)。標(biāo)識(shí)410A存 儲(chǔ)數(shù)據(jù)報(bào)標(biāo)識(shí)符的至少一部分。另外,標(biāo)識(shí)410B和410C擴(kuò)展了數(shù)據(jù)報(bào) 標(biāo)識(shí)符的分辨率??梢灶A(yù)期類型401B或401C將具有0xlA (復(fù)制(Copy) =0x0,類(Class) 二OxO,號(hào)(Number) =26(0xlA))的值以表示選項(xiàng) 是擴(kuò)展數(shù)據(jù)報(bào)片段標(biāo)識(shí)符選項(xiàng)。長度407B或407C將具有4的值以表示 總選項(xiàng)尺寸為4字節(jié)。在本實(shí)施方式中,標(biāo)識(shí)410B或410C向數(shù)據(jù)報(bào)標(biāo) 識(shí)符提供額外的16位。如果需要更大的分辨率,可以添加額外的選項(xiàng)。 本示例性實(shí)施方式示出了具有48位的數(shù)據(jù)報(bào)標(biāo)識(shí)符,包括標(biāo)識(shí)410A、410B和410C。盡管該示例示出了用于擴(kuò)展可用數(shù)據(jù)報(bào)標(biāo)識(shí)符池的一個(gè)實(shí)施方 式,本領(lǐng)域技術(shù)人員將意識(shí)到也存在增大可用標(biāo)識(shí)符池的其他可能實(shí)現(xiàn) 方法。例如,不是重復(fù)所有的選項(xiàng)信息,可以增加單個(gè)選項(xiàng)的長度以包 括來自后續(xù)32位字的字節(jié);因此,長度字段將具有8個(gè)字節(jié)的值,其中
兩個(gè)字節(jié)來自于報(bào)頭標(biāo)識(shí)字段,6個(gè)字節(jié)來自于數(shù)據(jù)報(bào)片段標(biāo)識(shí)選項(xiàng)字 段。因此,選項(xiàng)將包括高達(dá)48位的附加分辨率,生成64位的數(shù)據(jù)報(bào)標(biāo) 識(shí)符。通過改變選項(xiàng)長度值,數(shù)據(jù)報(bào)標(biāo)識(shí)符分辨率將一次增加8位。
多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符多值化的IPv6數(shù)據(jù)報(bào)標(biāo)識(shí)符
圖4B示出了用于工Pv6的多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符的一個(gè)可能實(shí)施方式, 其中,在使用多片段報(bào)頭選項(xiàng)的工Pv6中,數(shù)據(jù)報(bào)標(biāo)識(shí)符包括多個(gè)字段。 IPv6報(bào)頭450包括標(biāo)準(zhǔn)字段以及如片段報(bào)頭480A和480B所示的兩個(gè)或 更多的片段報(bào)頭。后續(xù)報(bào)頭461存儲(chǔ)指示下一報(bào)頭是片段報(bào)頭的值44。 片段報(bào)頭480A包括指示下一字段也是片段報(bào)頭的后續(xù)報(bào)頭471A。整個(gè)數(shù) 據(jù)報(bào)中可以包括零或更多的片段報(bào)頭。在該示例性實(shí)施方式中,片段報(bào) 頭480B通過存儲(chǔ)在后續(xù)報(bào)頭471B中的值6表示后續(xù)報(bào)頭是TCP。用于該 數(shù)據(jù)報(bào)的數(shù)據(jù)報(bào)報(bào)頭包括兩個(gè)或更多的標(biāo)識(shí)字段,如標(biāo)識(shí)470A和470B 所示。包括多個(gè)片段報(bào)頭使得IPv6數(shù)據(jù)報(bào)具有以32位塊擴(kuò)展的報(bào)頭標(biāo) 識(shí)符??梢灶A(yù)期,當(dāng)網(wǎng)絡(luò)上的條件改變時(shí),對(duì)于IPv6片段報(bào)頭的改變將 更有利于使得IPv6模塊能夠按需要改變片段報(bào)頭。使用多片段報(bào)頭允許 增加池中可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)據(jù);因此,池的大小超出了系統(tǒng)在數(shù)據(jù) 報(bào)壽命內(nèi)耗盡所有數(shù)據(jù)報(bào)標(biāo)識(shí)符的能力。
利用多值數(shù)據(jù)報(bào)標(biāo)識(shí)符的優(yōu)選實(shí)施方式使用現(xiàn)有報(bào)頭標(biāo)識(shí)符字段作 為數(shù)據(jù)報(bào)標(biāo)識(shí)符的最低有效位(LSB, Least Significant Bit)。通過在 現(xiàn)有字段中放置LSB,可以維持與現(xiàn)有IP模塊的互操作性。還可以預(yù)期, 可以定義新的可選報(bào)頭字段以取代標(biāo)識(shí)字段。因此,數(shù)據(jù)報(bào)標(biāo)識(shí)符將僅 被存儲(chǔ)在新的可選字段中作為單字段標(biāo)識(shí)符。
先前的實(shí)施方式提供了數(shù)據(jù)報(bào)損壞的解決方案,該解決方案涉及通 過增加能夠指派給數(shù)據(jù)報(bào)的可用數(shù)據(jù)報(bào)數(shù)量來提供數(shù)據(jù)報(bào)標(biāo)識(shí)符池。以這種方式控制數(shù)據(jù)報(bào)標(biāo)識(shí)符解決了數(shù)據(jù)報(bào)損壞問題。在優(yōu)選實(shí)施方式中, 這種方法被有利地應(yīng)用于網(wǎng)絡(luò)通信桟的工P層而不影響應(yīng)用。然而,因?yàn)?字段中配置的IP模塊的總數(shù)必須更新,使用這種方案可能是不實(shí)際的。
可以預(yù)期,包括Windows或Linux的通信棧將迅速更新到某一程度;然
而,存在成百萬的具有將保留的現(xiàn)有棧的設(shè)備,包括路由器、網(wǎng)關(guān)、打 印機(jī)或具有遺留棧的其他設(shè)備。在這種情況下,涉及具有單值的多字段 數(shù)據(jù)報(bào)標(biāo)識(shí)符的設(shè)備制造商可以釆取應(yīng)用級(jí)方法。創(chuàng)建可用數(shù)據(jù)報(bào)標(biāo)識(shí) 符數(shù)量減小的數(shù)據(jù)報(bào)標(biāo)識(shí)符池,且其中在數(shù)據(jù)報(bào)的壽命期間控制數(shù)據(jù)報(bào)
標(biāo)識(shí)符。
縮減的數(shù)據(jù)報(bào)標(biāo)識(shí)符池
優(yōu)選地,當(dāng)更加以應(yīng)用為中心的解決方案有用時(shí),通過兩個(gè)主機(jī)之 間就允許使用的數(shù)據(jù)報(bào)標(biāo)識(shí)符達(dá)成的一致來控制數(shù)據(jù)報(bào)標(biāo)識(shí)符。在優(yōu)選 實(shí)施方式中,第一主機(jī)通過確保使用中的任意數(shù)據(jù)報(bào)標(biāo)識(shí)符在指派了該 數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)據(jù)報(bào)的壽命期間不再使用來創(chuàng)建或控制數(shù)據(jù)報(bào)標(biāo)識(shí)符 池。因?yàn)楫?dāng)前可能正在使用某些標(biāo)識(shí)符,所述池具有數(shù)量減小的可用數(shù) 據(jù)報(bào)標(biāo)識(shí)符。第一主機(jī)向第二主機(jī)發(fā)送從該池提取的建議數(shù)據(jù)報(bào)標(biāo)識(shí)符。 第二主機(jī)在發(fā)送回第一主機(jī)的響應(yīng)數(shù)據(jù)報(bào)中使用該建議數(shù)據(jù)報(bào)標(biāo)識(shí)符。 第二主機(jī)在響應(yīng)數(shù)據(jù)報(bào)的報(bào)頭和有效載荷中編碼該建議數(shù)據(jù)報(bào)標(biāo)識(shí)符。 第一主機(jī)正常接收響應(yīng)數(shù)據(jù)報(bào)。 一旦數(shù)據(jù)報(bào)被重組,第一主機(jī)從響應(yīng)數(shù) 據(jù)報(bào)的有效載荷讀取建議數(shù)據(jù)報(bào)標(biāo)識(shí)符且將它放回池中以便再次使用。
縮減的數(shù)據(jù)報(bào)標(biāo)識(shí)符池允許的和排除的數(shù)據(jù)報(bào)標(biāo)識(shí)符的列表
圖5示出了存儲(chǔ)數(shù)據(jù)報(bào)標(biāo)識(shí)符的列表的存儲(chǔ)器的一個(gè)實(shí)施方式。存 儲(chǔ)器540與創(chuàng)建或控制具有數(shù)量減小的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)據(jù)報(bào)標(biāo)識(shí) 符池的主機(jī)相關(guān)聯(lián)。允許列表530代表允許被指派給數(shù)據(jù)報(bào)的數(shù)據(jù)報(bào)標(biāo) 識(shí)符的列表。列表530包括如ID 535A至535N所示的零個(gè)或更多個(gè)數(shù)據(jù) 報(bào)標(biāo)識(shí)符。列表中的各個(gè)元素都包括實(shí)際標(biāo)識(shí)符或標(biāo)識(shí)符的直接引用。 優(yōu)選地,該列表實(shí)現(xiàn)為鏈接列表,因?yàn)橛捎诓煌瑪?shù)據(jù)報(bào)具有不同壽命,
16標(biāo)識(shí)符的順序會(huì)改變。另外,優(yōu)選的列表以這樣的方式排序最老的標(biāo) 識(shí)符接近表頭而最近使用的標(biāo)識(shí)符列在表尾。以這種方式排列列表530 確保被指派了列表中的標(biāo)識(shí)符的數(shù)據(jù)報(bào)具有不在使用中或超出原先使用 的數(shù)據(jù)報(bào)標(biāo)識(shí)符的壽命的標(biāo)識(shí)符。
在一個(gè)優(yōu)選實(shí)施方式中,使用列表550代表當(dāng)前正被使用的那些標(biāo)
識(shí)符;因此,代表不能使用的標(biāo)識(shí)符。在這種意義上,列表550包括排 除列表。在一個(gè)優(yōu)選實(shí)施方式中,列表550包括如標(biāo)識(shí)符555A至555M 所示的以超時(shí)排序的零個(gè)或更多個(gè)標(biāo)識(shí)符。預(yù)期會(huì)首先超時(shí)的這些標(biāo)識(shí) 符比置于表尾的最近使用的那些標(biāo)識(shí)符更接近表頭。類似于列表530,列 表550可以通過鏈接列表實(shí)現(xiàn)。
在一個(gè)實(shí)施方式中,當(dāng)需要數(shù)據(jù)報(bào)標(biāo)識(shí)符時(shí),從列表530的頭部提 取標(biāo)識(shí)符且放置到如標(biāo)識(shí)符535A所示的列表550的末尾。 一旦從允許列 表530移除,該數(shù)據(jù)報(bào)標(biāo)識(shí)符被控制以防止被再次使用,直到超出其指 派的數(shù)據(jù)報(bào)的壽命為止。在一個(gè)優(yōu)選實(shí)施方式中,存在能夠?qū)⒘斜?50 中的標(biāo)識(shí)符移除并放回列表530中的兩種條件。第一條件是該標(biāo)識(shí)符所 指派的數(shù)據(jù)報(bào)已經(jīng)被接收且正確重組。當(dāng)重組時(shí),針對(duì)該標(biāo)識(shí)符檢查數(shù) 據(jù)報(bào)的有效載荷并從列表550移除該標(biāo)識(shí)符并放置在列表530的末尾, 如標(biāo)識(shí)符555B所示。第二條件是超過了數(shù)據(jù)報(bào)的壽命。在這些條件下, 從列表555A移除標(biāo)識(shí)符且將其放置在列表530的末尾,如標(biāo)識(shí)符555A 所示??梢砸院芏喾绞脚袛嘤糜诳刂屏斜?50的數(shù)據(jù)報(bào)壽命;優(yōu)選地, 它僅僅是大于IP模塊內(nèi)的重組時(shí)間。
例如,考慮使用工Pv4在IP上傳輸數(shù)據(jù)報(bào)的一個(gè)實(shí)施方式。因?yàn)槿?前所述IPv4報(bào)頭僅支持16位標(biāo)識(shí)字段,起初列表530包括最多65, 535 個(gè)數(shù)據(jù)報(bào)標(biāo)識(shí)符。當(dāng)使用數(shù)據(jù)報(bào)標(biāo)識(shí)符時(shí),列表變亂;不過,這沒有關(guān) 系,因?yàn)橹灰獦?biāo)識(shí)符在數(shù)據(jù)報(bào)的壽命中持續(xù)有效,標(biāo)識(shí)符的值并不重要。 對(duì)于具有充足的存儲(chǔ)器的計(jì)算機(jī)工作站而言,存儲(chǔ)65, 535個(gè)標(biāo)識(shí)符的列 表不是問題。通過使用這些技術(shù),主機(jī)創(chuàng)建具有數(shù)量減小的允許被指派 給數(shù)據(jù)報(bào)的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)據(jù)報(bào)標(biāo)識(shí)符池;由此,解決了數(shù)據(jù)損 壞問題。所得到的池不同于初始的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符池,因?yàn)榇嬖诓煌瑪?shù)量的實(shí)際可用的數(shù)據(jù)報(bào)標(biāo)識(shí)符且這些標(biāo)識(shí)符被控制。
盡管工作站典型地具有充足的存儲(chǔ)器用來存儲(chǔ)鏈接列表中65, 535
個(gè)標(biāo)識(shí)符,但其他系統(tǒng)不具有這種能力。嵌入式設(shè)備具有較小的存儲(chǔ)器, 應(yīng)當(dāng)利用空間節(jié)省技術(shù)來節(jié)約存儲(chǔ)器。某些實(shí)施方式使用在必要時(shí)可以
擴(kuò)展的簡化標(biāo)識(shí)符集。例如,不是控制所有的65,535個(gè)標(biāo)識(shí)符,設(shè)備可 能僅使用標(biāo)號(hào)為1至1024的1024個(gè)標(biāo)識(shí)符。如果該池不充足,可以通 過允許標(biāo)識(shí)符1至2048來進(jìn)行擴(kuò)展,或者如果傳輸速率下降它可以按需 要壓縮。以這種方式控制較小的列表或循環(huán)利用可用標(biāo)識(shí)符為不可能存 儲(chǔ)所有可能的232個(gè)數(shù)據(jù)報(bào)標(biāo)識(shí)符的IPv6實(shí)現(xiàn)方式提供了益處。
可以預(yù)期,簡化池可以具有其他特性。例如,應(yīng)當(dāng)注意,通過使第 一主機(jī)向第二主機(jī)建議單個(gè)數(shù)據(jù)報(bào)標(biāo)識(shí)符,得到的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符數(shù) 實(shí)際上為l。另外,大多數(shù)設(shè)備具有一種以上類型的相關(guān)的業(yè)務(wù)。因此, 可以將允許的數(shù)據(jù)報(bào)標(biāo)識(shí)符列表縮減為僅具有特定位模式的那些標(biāo)識(shí) 符,例如,將列表限制為具有最高有效位(MSB)組的標(biāo)識(shí)符。僅使用LSB 的標(biāo)識(shí)符可以用于正常業(yè)務(wù)。應(yīng)當(dāng)注意,還可以向第二主機(jī)建議代表多 個(gè)可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的標(biāo)識(shí)符塊。
為進(jìn)一步說明示例性實(shí)施方式,在IPv4中,標(biāo)識(shí)字段是16位。允 許列表530可以僅包括具有兩個(gè)最高有效位組的那些標(biāo)識(shí)符,這產(chǎn)生了 49, 152 (2"-2")個(gè)可用標(biāo)識(shí)符的池,留下不受控制且可用于其他業(yè)務(wù)的 16,384 (2")個(gè)標(biāo)識(shí)符。優(yōu)選地,所述池具有作為2的冪的函數(shù)的減少 的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符數(shù),例如2M-^,其中M是以位為單位的標(biāo)識(shí)符字段 的大小,且N具有小于32的整數(shù)值。當(dāng)N接近M時(shí),可用數(shù)將減小到很 小的數(shù)量,l或甚至是O。
存儲(chǔ)器540代表與計(jì)算系統(tǒng)相關(guān)聯(lián)的存儲(chǔ)器。在一個(gè)優(yōu)選實(shí)施方式 中,作為客戶端工作的計(jì)算機(jī)或設(shè)備包括存儲(chǔ)器540且使用這些列表來 訪問遠(yuǎn)程設(shè)備。示例性遠(yuǎn)程設(shè)備包括網(wǎng)絡(luò)存儲(chǔ)設(shè)備、打印機(jī)、傳真機(jī)、 掃描儀或使用IP通信的其他設(shè)備。存儲(chǔ)器540的實(shí)施方式包括使用RAM、 閃存、硬盤驅(qū)動(dòng)器或通過網(wǎng)絡(luò)上的計(jì)算設(shè)備可訪問的其他數(shù)據(jù)存儲(chǔ)器。簡化數(shù)據(jù)報(bào)標(biāo)識(shí)符池控制標(biāo)識(shí)符的示例方法
圖6給出了控制從具有數(shù)量減小的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)據(jù)報(bào)標(biāo)識(shí) 符池提取的數(shù)據(jù)報(bào)標(biāo)識(shí)符的方法的一個(gè)示例性實(shí)施方式。圖6中的示例 使用與具有單值的多字段數(shù)據(jù)報(bào)標(biāo)識(shí)符結(jié)合的先前描述的列表。在該示 例中,主機(jī)A代表希望訪問主機(jī)B的通信鏈路上的設(shè)備,主機(jī)B也可以
通過通信鏈路訪問。如有必要,通信鏈路使用IP以支持分段的方式從主
機(jī)A向主機(jī)B傳輸數(shù)據(jù)報(bào)或者相反。例如,主機(jī)A可代表客戶端計(jì)算機(jī) 且主機(jī)B代表網(wǎng)絡(luò)存儲(chǔ)服務(wù)器。在一些實(shí)施方式中,客戶使用UDP數(shù)據(jù) 報(bào)在存儲(chǔ)服務(wù)器上存取數(shù)據(jù)。
在步驟605,主機(jī)A希望利用數(shù)據(jù)報(bào)與主機(jī)B交換消息。在該示例 中,主機(jī)A期望對(duì)其請求的響應(yīng)。因此,主機(jī)A從代表可以使用的那些 數(shù)據(jù)報(bào)的數(shù)據(jù)報(bào)標(biāo)識(shí)符的允許列表中提取數(shù)據(jù)報(bào)標(biāo)識(shí)符。該標(biāo)識(shí)符被放 置在使用列表中,使得在該標(biāo)識(shí)符所指派的數(shù)據(jù)報(bào)的壽命期間不能使用 該標(biāo)識(shí)符,以免被再次使用。同時(shí),在步驟605,主機(jī)B等待來自于主機(jī) A的消息。
在步驟610,主機(jī)A準(zhǔn)備用于主機(jī)B的消息。優(yōu)選地,該消息包括 請求主機(jī)B采取某些行為(包括對(duì)主機(jī)A的消息作出響應(yīng))的請求。主 機(jī)A將標(biāo)識(shí)符放置在發(fā)給主機(jī)B的消息中??梢灶A(yù)期,該標(biāo)識(shí)符被放置 在數(shù)據(jù)報(bào)的有效載荷中。應(yīng)當(dāng)注意,在該示例性實(shí)施方式中,標(biāo)識(shí)符沒 有指派給主機(jī)A的數(shù)據(jù)報(bào),而是對(duì)包括主機(jī)B的響應(yīng)的數(shù)據(jù)報(bào)有意義的 建議。
在步驟615,主機(jī)A通過通信鏈路向主機(jī)B發(fā)送消息。例如,主機(jī)A 調(diào)用BSD套接字s朋c^呼叫以通過IP網(wǎng)絡(luò)發(fā)送消息。在步驟655,主機(jī) B從主機(jī)A接收數(shù)據(jù)報(bào)。優(yōu)選地,來自于主機(jī)A的消息足夠小使得它不會(huì) 被分段,例如,對(duì)于IPv4,如果總數(shù)據(jù)報(bào)大小小于576字節(jié),該數(shù)據(jù)報(bào) 將不被分段。主機(jī)A期望來自于主機(jī)B的響應(yīng),所以在步驟620,主機(jī)A 等待響應(yīng)。網(wǎng)絡(luò)應(yīng)用技術(shù)領(lǐng)域的技術(shù)人員將意識(shí)到該方法類似于客戶端-服務(wù)器交換。
在步驟660,主機(jī)B對(duì)于主機(jī)A的消息形成響應(yīng)。在該步驟中,主
19機(jī)B讀取主機(jī)A的消息或檢查消息的數(shù)據(jù)報(bào)以發(fā)現(xiàn)建議的標(biāo)識(shí)符。在一 些實(shí)施方式中,標(biāo)識(shí)符與消息請求命令相結(jié)合而編碼,使得兩者可以被 容易地發(fā)現(xiàn)和關(guān)聯(lián)。在一些實(shí)施方式中,數(shù)據(jù)報(bào)標(biāo)識(shí)符還可以用作事務(wù)
ID。在步驟665,主機(jī)B使用該標(biāo)識(shí)符作為包括其響應(yīng)消息的數(shù)據(jù)報(bào)的數(shù) 據(jù)報(bào)標(biāo)識(shí)符。在IPv4的情況下,主機(jī)B將該標(biāo)識(shí)符放置在IPv4報(bào)頭的 標(biāo)識(shí)字段中,或者在工Pv6的情況下,主機(jī)B將該標(biāo)識(shí)符放置在片段報(bào)頭 的標(biāo)識(shí)字段中。另外,主機(jī)B將標(biāo)識(shí)符編碼于數(shù)據(jù)報(bào)的有效載荷中。細(xì) 心的讀者將注意到,在本實(shí)施方式中,主機(jī)B具有被配置為允許進(jìn)行這 種數(shù)據(jù)報(bào)標(biāo)識(shí)符操作的IP模塊。
在步驟670,主機(jī)B將包括響應(yīng)消息的數(shù)據(jù)報(bào)發(fā)回到主機(jī)A。在步驟 625,主機(jī)A接收數(shù)據(jù)報(bào)。此時(shí),可以對(duì)該數(shù)據(jù)報(bào)進(jìn)行分段并且該數(shù)據(jù)報(bào) 可能經(jīng)過一定時(shí)段到達(dá)。主機(jī)A試圖根據(jù)該標(biāo)識(shí)符重組包括響應(yīng)消息的 數(shù)據(jù)報(bào)。在主機(jī)A控制標(biāo)識(shí)符的使用的情況下,沒有數(shù)據(jù)報(bào)損壞的風(fēng)險(xiǎn)。 而且,因?yàn)閿?shù)據(jù)報(bào)表現(xiàn)為正常數(shù)據(jù)報(bào),主機(jī)A正常地在IP層運(yùn)行,不需 要對(duì)主機(jī)A的工P模塊進(jìn)行修改。
在一個(gè)優(yōu)選實(shí)施方式中,需要結(jié)合從主機(jī)B接收的響應(yīng)數(shù)據(jù)報(bào)考慮 兩種情形恰當(dāng)?shù)刂亟M了數(shù)據(jù)報(bào),或沒有重組數(shù)據(jù)報(bào)。數(shù)據(jù)報(bào)可能沒有 被重組,因?yàn)榭赡軄G失了一個(gè)或多個(gè)片段。如果恰當(dāng)?shù)刂亟M了數(shù)據(jù)報(bào), 則主機(jī)A可以處理響應(yīng)。當(dāng)主機(jī)A處理該響應(yīng)時(shí),它讀取響應(yīng)數(shù)據(jù)報(bào)的 有效載荷中編碼的數(shù)據(jù)報(bào)標(biāo)識(shí)符。主機(jī)A現(xiàn)在知道該標(biāo)識(shí)符可以被再次 使用,因?yàn)閿?shù)據(jù)報(bào)已經(jīng)安全到達(dá)并且數(shù)據(jù)報(bào)的壽命已過;接著在步驟630, 主機(jī)A從使用列表中移除該標(biāo)識(shí)符且將它放置在允許列表的末尾。如果 由于片段丟失而沒有適當(dāng)重組數(shù)據(jù)報(bào),該數(shù)據(jù)報(bào)將被存儲(chǔ)在可能位于主 機(jī)A的IP模塊中的通信桟中,直到發(fā)生超時(shí)為止,典型地為30至120 秒的數(shù)量級(jí),在此之后,丟棄該數(shù)據(jù)報(bào)。此時(shí),主機(jī)A還必須處理丟棄 的數(shù)據(jù)報(bào)的標(biāo)識(shí)符。優(yōu)選地,主機(jī)A具有超時(shí)相關(guān)的使用數(shù)據(jù)報(bào)標(biāo)識(shí)符。 當(dāng)超出超時(shí)時(shí)間時(shí),表示數(shù)據(jù)報(bào)的壽命結(jié)束,主機(jī)A從使用列表中移除 該標(biāo)識(shí)符且將該標(biāo)識(shí)符放置在允許列表的末尾。
標(biāo)識(shí)符的使用列表超時(shí)優(yōu)選地比與重組數(shù)據(jù)報(bào)相關(guān)的超時(shí)時(shí)間長,
20可能為300秒。尤其優(yōu)選的實(shí)施方式將使用列表的超時(shí)與通信鏈路上的 條件結(jié)合起來。某些條件具有包括往返時(shí)間、吞吐量、擁塞、誤碼率等 的測量值或其他可測量條件??梢圆槐販y量而是根據(jù)策略來設(shè)置其他條 件。例如,超時(shí)時(shí)間可以通過管理員基于網(wǎng)絡(luò)速度來設(shè)置。
讀者應(yīng)當(dāng)注意到,前面的方法具有確保數(shù)據(jù)報(bào)標(biāo)識(shí)符在相關(guān)數(shù)據(jù)報(bào) 的壽命期間不被再次使用的優(yōu)點(diǎn)。 一個(gè)主機(jī)使用應(yīng)用級(jí)編碼來管理標(biāo)識(shí) 符列表,而不必改變主機(jī)中現(xiàn)有的通信棧。這對(duì)于具有在不可能對(duì)IP模
塊做出改變的確立的操作系統(tǒng)(包括Window或Linux)上運(yùn)行的軟件應(yīng) 用的實(shí)現(xiàn)是有利的。大多數(shù)應(yīng)用開發(fā)人員不能訪問通信桟內(nèi)部。另外, 該方法對(duì)于嵌入式設(shè)備的廠商是有利的,廠商可以訪問其設(shè)備的通信棧 的源碼。廠商可以修改設(shè)備的IP模塊以進(jìn)行所述操作。例如,生成網(wǎng)絡(luò) 存儲(chǔ)產(chǎn)品的公司可以修改它們的產(chǎn)品以具有所述特性。而且,通過在消 息中編碼標(biāo)識(shí)符信息,不需要附加消息來確立數(shù)據(jù)報(bào)標(biāo)識(shí)符的唯一屬性。 另外,所述方法確保了遵循需要數(shù)據(jù)報(bào)標(biāo)識(shí)符在數(shù)據(jù)報(bào)的壽命中是唯一 的IP標(biāo)準(zhǔn)。
尤其優(yōu)選的實(shí)施方式將所述技術(shù)用于包括存儲(chǔ)協(xié)議的命令響應(yīng)協(xié) 議。存儲(chǔ)協(xié)議包括專有的協(xié)議(包括Zetera的Z-SAN協(xié)議)或標(biāo)準(zhǔn)協(xié)議。 標(biāo)準(zhǔn)存儲(chǔ)協(xié)議包括iSCSI、 FCIP或iFCP。該技術(shù)可應(yīng)用于使用UDP或TCP 作為傳輸層的那些協(xié)議。例如,可以修改iSCCI的實(shí)現(xiàn)來交換建議的數(shù) 據(jù)報(bào)標(biāo)識(shí)符以確保在保持iSCSI標(biāo)準(zhǔn)的一致性的同時(shí)TCP數(shù)據(jù)報(bào)不遭受 數(shù)據(jù)報(bào)損壞。
提供數(shù)據(jù)報(bào)標(biāo)識(shí)符池
圖7示出了創(chuàng)建數(shù)據(jù)報(bào)標(biāo)識(shí)符池以確保不發(fā)生數(shù)據(jù)報(bào)損壞的方法的 一個(gè)示例性實(shí)施方式。本示例采用了許多前述概念。
在步驟700,建立第一數(shù)據(jù)報(bào)標(biāo)識(shí)符池。在一個(gè)優(yōu)選實(shí)施方式中, 第一池代表響應(yīng)于根據(jù)IP標(biāo)準(zhǔn)工作進(jìn)行操作而可用的池。在IPv4中, 由于IPv4報(bào)頭中的16位標(biāo)識(shí)字段,第一池包括216個(gè)可用標(biāo)識(shí)符。在IPv6 中,第一池包括232個(gè)可用標(biāo)識(shí)符。在兩種情況下,典型地,第一池通過遞增計(jì)數(shù)器實(shí)現(xiàn)。與標(biāo)準(zhǔn)的情況相反,當(dāng)數(shù)據(jù)報(bào)處于足夠快的通信鏈路 上時(shí),這些池不能在相關(guān)數(shù)據(jù)報(bào)的壽命中提供唯一的標(biāo)識(shí)符。提供具有 更強(qiáng)唯一特性的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的第二池解決了該問題。
為了保持與現(xiàn)有IP模塊的后向兼容性, 一個(gè)優(yōu)選實(shí)施方式具有閾值
函數(shù)判斷第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池是否有用。在一個(gè)實(shí)施方式中,閾值函數(shù) 監(jiān)視通信鏈路上第一主機(jī)和第二主機(jī)之間的通信條件以判斷是否應(yīng)該控 制數(shù)據(jù)報(bào)標(biāo)識(shí)符。 一個(gè)優(yōu)選實(shí)施方式使用與數(shù)據(jù)報(bào)的壽命相關(guān)的函數(shù)來 使壽命與數(shù)據(jù)報(bào)標(biāo)識(shí)符的使用更加緊密地結(jié)合。
優(yōu)選的閾值函數(shù)實(shí)施方式根據(jù)超時(shí)時(shí)間或數(shù)據(jù)報(bào)在通信鏈路上的傳 輸速率來工作。尤其優(yōu)選的實(shí)施方式使用超時(shí)時(shí)間和速率這兩者。例如, 閾值函數(shù)可以包括計(jì)算對(duì)于給定的數(shù)據(jù)率是否會(huì)在數(shù)據(jù)報(bào)標(biāo)識(shí)字段中出 現(xiàn)復(fù)位條件。如果數(shù)據(jù)報(bào)傳輸速率與數(shù)據(jù)報(bào)重組超時(shí)的乘積超過可用數(shù) 據(jù)報(bào)標(biāo)識(shí)符的數(shù)量,則標(biāo)識(shí)字段中的復(fù)位將導(dǎo)致數(shù)據(jù)報(bào)損壞。在這種條 件下,閾值函數(shù)指示第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池是有利的。可以預(yù)期,閾值函 數(shù)可以根據(jù)包括擁塞在內(nèi)的其他值而不是速率或超時(shí)時(shí)間來工作。因此, 可以想到所有的閾值函數(shù)。還可以預(yù)期第二池可以在必要時(shí)打開或關(guān)閉 以適應(yīng)現(xiàn)有IP模塊。例如,當(dāng)使用現(xiàn)有IP模塊工作以確保不浪費(fèi)CPU 周期時(shí),不使用第二池可能是有利的。
另外,在閾值函數(shù)中使用的值可以是測量的或者預(yù)定的。測量值可 以實(shí)時(shí)地獲取或在系統(tǒng)操作時(shí)隨時(shí)間獲取。例如,可以通過計(jì)算消息在 兩個(gè)主機(jī)之間的往返時(shí)間測量速率,或可以在整個(gè)通信鏈路上測量速率。
預(yù)定值包括網(wǎng)絡(luò)帶寬,例如以太網(wǎng)的1Gbps或10Gbps速率。
在步驟705,作出關(guān)于使用第二數(shù)據(jù)報(bào)標(biāo)識(shí)符的決定。如果第二池 是沒用的,則在步驟790,從第一數(shù)據(jù)報(bào)標(biāo)識(shí)符池獲取數(shù)據(jù)報(bào)標(biāo)識(shí)符,且 以常規(guī)方式繼續(xù)處理。如果如閾值函數(shù)所示,第二池是有用的,則可以
啟用第二池。
在步驟710,創(chuàng)建第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池。提供第二標(biāo)識(shí)符池代表確 立一組條件,其中,以確保相對(duì)于第一數(shù)據(jù)報(bào)標(biāo)識(shí)符池?cái)?shù)據(jù)報(bào)標(biāo)識(shí)符在 數(shù)據(jù)報(bào)的壽命期間是唯一的方式控制第二池中的數(shù)據(jù)報(bào)標(biāo)識(shí)符。因此,第二池不同于第一池,因?yàn)榭捎脭?shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)量不同或?qū)?shù)據(jù)報(bào)標(biāo) 識(shí)符的控制更大。提供第二池包括預(yù)先在運(yùn)行時(shí)間之前修改IP模塊或在 運(yùn)行時(shí)或期間更改工P層的行為。第二池的創(chuàng)建還包括以克服導(dǎo)致數(shù)據(jù)報(bào) 損壞問題的第一池中可用的受限供應(yīng)的方式增加可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù) 量。如上所述,通過使用包括擴(kuò)展數(shù)據(jù)報(bào)標(biāo)識(shí)符信息的附加報(bào)頭選項(xiàng)可 以實(shí)現(xiàn)增加可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)量。第二池的生成還包括減小用于數(shù) 據(jù)報(bào)的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)量。減小數(shù)量包括保持允許數(shù)據(jù)報(bào)標(biāo)識(shí)符 列表或建議單個(gè)的數(shù)據(jù)報(bào)標(biāo)識(shí)符或標(biāo)識(shí)符塊。在增加或減小可用數(shù)據(jù)報(bào) 標(biāo)識(shí)符數(shù)量的兩種情況下,控制數(shù)據(jù)報(bào)標(biāo)識(shí)符以防止提取導(dǎo)致數(shù)據(jù)報(bào)壽 命內(nèi)數(shù)據(jù)報(bào)損壞問題的值。由于各種原因可以生成多于一個(gè)的第二池。
多個(gè)第二池允許對(duì)各個(gè)主機(jī)對(duì)、協(xié)議指派(TCP、 UDP、 ICMP、 IGMP等)、 甚至對(duì)各個(gè)傳輸協(xié)議端口建立池。例如端口 80上的所有HTTP業(yè)務(wù)可以 具有一個(gè)池,而端口 21上的FTP業(yè)務(wù)可以具有不同的池。具有多于一個(gè) 的第二池還確保IP標(biāo)準(zhǔn)所要求的數(shù)據(jù)報(bào)標(biāo)識(shí)符唯一性。
一旦建立了第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池,在步驟720,從第二池提取數(shù)據(jù) 報(bào)標(biāo)識(shí)符。提取數(shù)據(jù)報(bào)標(biāo)識(shí)符包括使用列表中的下一標(biāo)識(shí)符或接收數(shù)據(jù) 報(bào)標(biāo)識(shí)符的建議進(jìn)行使用。在使用列表的情況下,從允許標(biāo)識(shí)符列表獲 取標(biāo)識(shí)符,或者在具有大池的情況下,類似于現(xiàn)有留工P模塊中所做的那 樣,通過遞增計(jì)數(shù)器產(chǎn)生標(biāo)識(shí)符。
在步驟730,控制數(shù)據(jù)報(bào)標(biāo)識(shí)符以防止被再次使用。在優(yōu)選實(shí)施方 式中,通過確保第二池具有足夠數(shù)量的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符(在與數(shù)據(jù)報(bào) 壽命相關(guān)的規(guī)定超時(shí)時(shí)間中不會(huì)使用標(biāo)識(shí)符不能),來控制標(biāo)識(shí)符以防止 在數(shù)據(jù)報(bào)的壽命期間被再次使用。在其他優(yōu)選實(shí)施方式中,可以通過跟 蹤第二池已經(jīng)使用的標(biāo)識(shí)符來控制數(shù)據(jù)報(bào)標(biāo)識(shí)符。
在步驟740,數(shù)據(jù)報(bào)標(biāo)識(shí)符被指派給數(shù)據(jù)報(bào)。在優(yōu)選實(shí)施方式中, 所述指派包括在工P報(bào)頭的識(shí)別字段中放置至少一部分?jǐn)?shù)據(jù)報(bào)標(biāo)識(shí)符。在 其他實(shí)施方式中,將標(biāo)識(shí)符的一部分放置在可選報(bào)頭字段中。在其他實(shí) 施方式中,將標(biāo)識(shí)符的一部分放置在數(shù)據(jù)報(bào)的有效載荷中。 一旦形成了 數(shù)據(jù)報(bào)且數(shù)據(jù)報(bào)標(biāo)識(shí)符被放置在數(shù)據(jù)報(bào)中,在步驟750,將數(shù)據(jù)報(bào)發(fā)送到
23遠(yuǎn)程主機(jī)。網(wǎng)絡(luò)應(yīng)用領(lǐng)域的技術(shù)人員將意識(shí)到可以以很多方式實(shí)現(xiàn)發(fā)送
數(shù)據(jù)報(bào),包括使用ICMP、 IGMP、 UDP、 TCP、在IP層上構(gòu)建原始數(shù)據(jù)報(bào)或
形成數(shù)據(jù)報(bào)的任意其他類的型協(xié)議。
在步驟755,對(duì)是否接收到數(shù)據(jù)報(bào)進(jìn)行檢查。從數(shù)據(jù)報(bào)的發(fā)送到接 收的任何時(shí)間,可以對(duì)數(shù)據(jù)報(bào)進(jìn)行分段。在IPv4網(wǎng)絡(luò)中,通過包括路由 器在內(nèi)的中間設(shè)備在網(wǎng)絡(luò)上進(jìn)行分段。在IPv6中,數(shù)據(jù)報(bào)源可以對(duì)數(shù)據(jù) 報(bào)進(jìn)行分段。如果已經(jīng)接收到數(shù)據(jù)報(bào)的一個(gè)或多個(gè)片段,在步驟760,使 用數(shù)據(jù)報(bào)標(biāo)識(shí)符或在重組過程中對(duì)標(biāo)識(shí)數(shù)據(jù)報(bào)片段有用的其他信息重組 數(shù)據(jù)報(bào)。其他有用的信息包括IP地址、協(xié)議號(hào)、端口指派或其他數(shù)據(jù)報(bào) 信息。在步驟765,對(duì)是否完全重組了數(shù)據(jù)報(bào)進(jìn)行檢查。
如果數(shù)據(jù)報(bào)的片段仍未到達(dá),在步驟775,對(duì)于數(shù)據(jù)報(bào)的壽命進(jìn)行 判定。在一些實(shí)施方式中,在主機(jī)等待響應(yīng)消息的應(yīng)用層進(jìn)行該檢查。 如果沒有超出數(shù)據(jù)報(bào)壽命,則通過返回步驟755,系統(tǒng)繼續(xù)等待數(shù)據(jù)報(bào)。 等待數(shù)據(jù)報(bào)一直進(jìn)行,直到數(shù)據(jù)報(bào)完成重組或超出了壽命。
在步驟785,執(zhí)行檢査以判斷是否對(duì)與數(shù)據(jù)報(bào)相關(guān)的標(biāo)識(shí)符進(jìn)行了 控制。在優(yōu)選實(shí)施方式中,當(dāng)數(shù)據(jù)報(bào)的有效載荷包括標(biāo)識(shí)符或者當(dāng)使用 了可選報(bào)頭字段時(shí),對(duì)數(shù)據(jù)報(bào)標(biāo)識(shí)符進(jìn)行了控制。如果沒有,則按照現(xiàn) 有IP模塊的方式對(duì)數(shù)據(jù)報(bào)進(jìn)行正常處理。否則,在步驟780,允許數(shù)據(jù) 報(bào)標(biāo)識(shí)符再次使用。在一些實(shí)施方式中,把標(biāo)識(shí)符從使用或排除列表移 動(dòng)到允許列表。在其他實(shí)施方式中,第二池足夠大,使得基于大計(jì)數(shù)器 的數(shù)據(jù)報(bào)標(biāo)識(shí)符將不會(huì)復(fù)位,而允許在超過數(shù)據(jù)報(bào)壽命之后再次使用標(biāo) 識(shí)符。
優(yōu)點(diǎn)
當(dāng)解決數(shù)據(jù)報(bào)損壞問題時(shí),采用本公開技術(shù)提供了很多優(yōu)點(diǎn)。在一 個(gè)實(shí)施方式中,解決方案在應(yīng)用層之下的IP層操作。IP層解決方案確保 不必修改應(yīng)用就可以很好地工作。另外,通過使用可選IP報(bào)頭字段,對(duì) 于運(yùn)行現(xiàn)有IP模塊的老設(shè)備具有最小的影響?,F(xiàn)有IP模塊可以通過忽 略不熟悉的可選報(bào)頭而正常工作。而且,通過使用多個(gè)可選報(bào)頭或創(chuàng)建具有擴(kuò)展信息的可選報(bào)頭,系統(tǒng)經(jīng)得住未來的考驗(yàn)。當(dāng)數(shù)據(jù)率提高導(dǎo)致 可用數(shù)據(jù)報(bào)標(biāo)識(shí)符池變得不充足時(shí),通過在有用時(shí)跟蹤一個(gè)或多個(gè)可選 數(shù)據(jù)報(bào)標(biāo)識(shí)符字段可以擴(kuò)展數(shù)據(jù)報(bào)標(biāo)識(shí)符。在IP報(bào)頭標(biāo)識(shí)符字段中放置 數(shù)據(jù)報(bào)標(biāo)識(shí)符的LSB部分確保后向兼容性和對(duì)于現(xiàn)有行為的回退。不再 必須使用校驗(yàn)和來解決標(biāo)識(shí)符沖突,因?yàn)榻鉀Q了數(shù)據(jù)報(bào)損壞問題;因此, 類似于NFS的應(yīng)用不必消耗CPU周期(消耗CPU周期會(huì)導(dǎo)致吞吐量的降 低)。
對(duì)于不可能對(duì)一組主機(jī)的IP模塊做出修改的情況,開發(fā)網(wǎng)絡(luò)應(yīng)用或 設(shè)備的廠商也可以采用本公開技術(shù)。控制可用或使用中的數(shù)據(jù)報(bào)標(biāo)識(shí)符 確保了數(shù)據(jù)報(bào)標(biāo)識(shí)符被控制以防止其不再使用,否則會(huì)導(dǎo)致數(shù)據(jù)報(bào)損壞。 廠商可以修改他們產(chǎn)品的IP模塊以保護(hù)數(shù)據(jù)報(bào)且在訪問控制該數(shù)據(jù)報(bào)標(biāo) 識(shí)符的產(chǎn)品的系統(tǒng)上具有相應(yīng)軟件模塊。用于網(wǎng)絡(luò)設(shè)備的示例性軟件模 塊包括設(shè)備驅(qū)動(dòng)器。
更緊密地將數(shù)據(jù)報(bào)壽命與數(shù)據(jù)報(bào)標(biāo)識(shí)符結(jié)合起來提供了對(duì)標(biāo)識(shí)符唯 一性的更強(qiáng)控制。因此,開發(fā)人員可以確保與現(xiàn)有標(biāo)準(zhǔn)的一致性并且經(jīng) 得起未來其它數(shù)據(jù)報(bào)損壞問題的考驗(yàn)。
其他考慮
網(wǎng)絡(luò)協(xié)議領(lǐng)域技術(shù)人員將意識(shí)到,存在落在本發(fā)明的范圍內(nèi)的其他
構(gòu)思。這些構(gòu)思包括以下各項(xiàng),但不限于以下各項(xiàng)
* ICMP提供為處理IP通信問題設(shè)計(jì)的控制機(jī)制。也可以修改ICMP
模塊以通過附加的ICMP消息或擴(kuò)展先前定義的ICMP消息來輔助
解決數(shù)據(jù)報(bào)損壞問題。 *本公開方法對(duì)于面向事務(wù)的協(xié)議也非常有效。另外,所述方法還
可用于包括TCP在內(nèi)的流協(xié)議。 *本方法可以對(duì)稱使用,其中兩個(gè)通信主機(jī)都采用所述方法,或可
以非對(duì)稱使用,其中僅一個(gè)主機(jī)采用本方法而另一個(gè)以現(xiàn)有模式工作。
*第三主機(jī)可以控制數(shù)據(jù)報(bào)標(biāo)識(shí)符以確保系統(tǒng)作為整體使用唯一的數(shù)據(jù)報(bào)標(biāo)識(shí)符。當(dāng)主機(jī)通信時(shí),它們可以獲取一個(gè)或多個(gè)允許
的數(shù)據(jù)報(bào)標(biāo)識(shí)符;優(yōu)選地,大塊的允許標(biāo)識(shí)符。例如,DHCP服
務(wù)器可以分發(fā)可用數(shù)據(jù)報(bào)標(biāo)識(shí)符塊。
盡管標(biāo)準(zhǔn)規(guī)定了數(shù)據(jù)報(bào)壽命中的唯一性,包括全球唯一標(biāo)識(shí)符
(GU工D, Globally Unique Identifier)在內(nèi)的標(biāo)識(shí)符也可用于 確保數(shù)據(jù)報(bào)總是唯一的,與數(shù)據(jù)報(bào)的壽命無關(guān)。 *甚至對(duì)于有限時(shí)間段是唯一的數(shù)據(jù)報(bào)標(biāo)識(shí)符也可以用作用于基 于事務(wù)的系統(tǒng)的事務(wù)標(biāo)識(shí)符。例如,期望多個(gè)響應(yīng)的網(wǎng)絡(luò)存儲(chǔ)客 戶端可以使用事務(wù)標(biāo)識(shí)符來幫助區(qū)分來自多個(gè)存儲(chǔ)設(shè)備的多個(gè) 響應(yīng)。
*在從IPv4架構(gòu)向IPv6架構(gòu)的過渡期間,可以采用一個(gè)或多個(gè)本 發(fā)明的技術(shù)來解決數(shù)據(jù)報(bào)損壞問題。例如,如果使IPv6取道于 IPv4,則IPv4方法可用于保護(hù)IPv6數(shù)據(jù)報(bào)。然后IPv6方法可 用于保護(hù)應(yīng)用數(shù)據(jù)。 盡管引用網(wǎng)絡(luò)存儲(chǔ)設(shè)備作為示例,應(yīng)當(dāng)意識(shí)到同一技術(shù)同樣可以很 好地應(yīng)用于任意網(wǎng)絡(luò)設(shè)備。網(wǎng)絡(luò)設(shè)備包括可以使用數(shù)據(jù)報(bào)在通信鏈路上 訪問的任意設(shè)備。網(wǎng)絡(luò)設(shè)備的示例包括打印機(jī)、數(shù)字視頻記錄、媒體播 放器、傳真機(jī)、掃描儀、復(fù)印機(jī)、VoIP電話或其他設(shè)備。
硬件
其他方面涉及與本發(fā)明相關(guān)的硬件??梢灶A(yù)期,能夠開發(fā)與本發(fā)明 的實(shí)體方面相關(guān)的用于存儲(chǔ)、原型制作(pr6totyping)、制造、操作、 管理、封裝、測試、物理控制或支持、或用于其他行為的硬件。因此, 本發(fā)明包括用于開發(fā)、生產(chǎn)、制造或運(yùn)行硬件的系統(tǒng)、方法或裝置。在 這種意義上,該硬件落入本發(fā)明的范圍內(nèi)。
軟件
在另一方面,可以預(yù)期,可以編寫能夠配置、模擬或管理本發(fā)明的 各個(gè)方面以及其相關(guān)架構(gòu)的軟件。從這個(gè)角度看,本發(fā)明包括編寫這種軟件、在機(jī)器可讀形式上記錄該軟件、授權(quán)、銷售、發(fā)行、安裝或在合 適的硬件上操作這種軟件的方法。而且,軟件本質(zhì)上被認(rèn)為落入本發(fā)明 的范圍內(nèi)。
因而,已經(jīng)公開了使用網(wǎng)際互聯(lián)協(xié)議解決數(shù)據(jù)報(bào)損壞問題的特定組 合和方法。然而,對(duì)于本領(lǐng)域技術(shù)人員而言,很明顯,可以在己經(jīng)描述 的方法上做出更多的修改而不偏離本發(fā)明這里的概念。因此,除了本公 開的精神,不是要限制本發(fā)明。而且,在解釋本公開時(shí),所有的術(shù)語應(yīng) 當(dāng)以與語境一致的最廣義的方式理解。具體而言,術(shù)語"包括"應(yīng)當(dāng)解 釋為以非排他方式引用元件、組件或步驟,表示所引用的元件、組件或 步驟可以存在或被利用,或與沒有明確引用的其他元件、組件或歩驟組
權(quán)利要求
1. 一種解決數(shù)據(jù)報(bào)損壞問題的方法,該數(shù)據(jù)報(bào)損壞問題由具有有限數(shù)量的可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的第一數(shù)據(jù)報(bào)標(biāo)識(shí)符池所導(dǎo)致,該方法包括以下步驟(a)提供不同于所述第一數(shù)據(jù)報(bào)標(biāo)識(shí)符池的第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池;(b)向數(shù)據(jù)報(bào)指派從所述第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池提取的數(shù)據(jù)報(bào)標(biāo)識(shí)符;其中使用所述第二池確保所述數(shù)據(jù)報(bào)標(biāo)識(shí)符在與所述數(shù)據(jù)報(bào)相關(guān)的壽命期間不被再次使用。
2. 根據(jù)權(quán)利要求l所述的方法,其中提供所述第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池 的步驟包括使可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)量增加到高于所述的有限數(shù)量。
3. 根據(jù)權(quán)利要求2所述的方法,其中所述第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池與主 機(jī)對(duì)相關(guān)聯(lián)。
4. 根據(jù)權(quán)利要求3所述的方法,其中所述第二數(shù)據(jù)報(bào)標(biāo)識(shí)符與關(guān)聯(lián) 到所述主機(jī)對(duì)的協(xié)議端口相關(guān)聯(lián)。
5. 根據(jù)權(quán)利要求l所述的方法,其中提供所述第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池 的步驟包括使可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)量減小到低于所述的有限數(shù)量。
6. 根據(jù)權(quán)利要求5所述的方法,其中所述可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù)量 是2"的函數(shù),其中N是小于32的整數(shù)值。
7. 根據(jù)權(quán)利要求6所述的方法,其中,所述可用數(shù)據(jù)報(bào)標(biāo)識(shí)符的數(shù) 量小于2。
8. 根據(jù)權(quán)利要求l所述的方法,其中,提供所述第二數(shù)據(jù)報(bào)標(biāo)識(shí)符 池的步驟響應(yīng)于與所述壽命相關(guān)的閾值函數(shù)。
9. 根據(jù)權(quán)利要求8所述的方法,其中,所述閾值函數(shù)是超時(shí)時(shí)間的函數(shù)。
10. 根據(jù)權(quán)利要求8所述的方法,其中,所述閾值函數(shù)是數(shù)據(jù)報(bào)傳 輸速率的函數(shù)。
11. 根據(jù)權(quán)利要求1所述的方法,其中,所述數(shù)據(jù)報(bào)與網(wǎng)際互聯(lián)協(xié)議相關(guān)。
12. 根據(jù)權(quán)利要求ll所述的方法,其中,所述網(wǎng)際互聯(lián)協(xié)議包括下述協(xié)議中的至少一個(gè)IPv4和IPv6。
13. 根據(jù)權(quán)利要求ll所述的方法,該方法還包括向所述數(shù)據(jù)報(bào)中的報(bào)頭添加可選報(bào)頭字段,其中所述報(bào)頭與所述網(wǎng)際互聯(lián)協(xié)議相關(guān)聯(lián),并 且所述可選報(bào)頭存儲(chǔ)所述數(shù)據(jù)報(bào)標(biāo)識(shí)符的至少一部分。
14. 根據(jù)權(quán)利要求13所述的方法,其中,所述數(shù)據(jù)報(bào)標(biāo)識(shí)符包括至 少32位。
15. 根據(jù)權(quán)利要求14所述的方法,其中,所述數(shù)據(jù)報(bào)標(biāo)識(shí)符包括至 少48位。
16. 根據(jù)權(quán)利要求1所述的方法,該方法還包括在網(wǎng)絡(luò)上從第一主 機(jī)向第二主機(jī)發(fā)送所述數(shù)據(jù)報(bào)。
17. 根據(jù)權(quán)利要求16所述的方法,該方法還包括所述第二主機(jī)向所 述第一主機(jī)建議所述數(shù)據(jù)報(bào)標(biāo)識(shí)符。
18. —種存儲(chǔ)協(xié)議,該存儲(chǔ)協(xié)議采用根據(jù)權(quán)利要求16所述的方法通 過所述數(shù)據(jù)報(bào)與存儲(chǔ)設(shè)備交換數(shù)據(jù)。
19. 根據(jù)權(quán)利要求18所述的存儲(chǔ)協(xié)議,該存儲(chǔ)協(xié)議包括下述協(xié)議中 的至少一種iSCSI、 FCIP和iFCP。
20. —種計(jì)算機(jī)可讀存儲(chǔ)器,該存儲(chǔ)器存儲(chǔ)有在處理單元上執(zhí)行的 指令,其中所述指令根據(jù)權(quán)利要求1所述的方法操作。
21. —種網(wǎng)絡(luò)上的計(jì)算設(shè)備,該計(jì)算設(shè)備包括根據(jù)權(quán)利要求20所述 的存儲(chǔ)器。
全文摘要
本系統(tǒng)和方法考慮到與網(wǎng)際互聯(lián)協(xié)議使用從第一數(shù)據(jù)報(bào)標(biāo)識(shí)符池提取的數(shù)據(jù)報(bào)標(biāo)識(shí)符相關(guān)的問題,確保數(shù)據(jù)報(bào)保持完整性。所述方法涉及控制數(shù)據(jù)報(bào)標(biāo)識(shí)符的使用以確保僅允許使用某些標(biāo)識(shí)符。創(chuàng)建不同于所述第一池的第二數(shù)據(jù)報(bào)標(biāo)識(shí)符池。從所述第二池提取數(shù)據(jù)報(bào)標(biāo)識(shí)符并指派給數(shù)據(jù)報(bào),使得控制數(shù)據(jù)報(bào)標(biāo)識(shí)符而防止其在所述數(shù)據(jù)報(bào)的壽命期間被再次使用。在替代實(shí)施方式中可用數(shù)據(jù)報(bào)的數(shù)量可以通過可選報(bào)頭字段增加或通過跟蹤允許的數(shù)據(jù)報(bào)標(biāo)識(shí)符減小。第一主機(jī)向第二主機(jī)通報(bào)允許的標(biāo)識(shí)符。所述第二主機(jī)將允許的標(biāo)識(shí)符用作數(shù)據(jù)報(bào)標(biāo)識(shí)符。
文檔編號(hào)H04L12/28GK101449519SQ200780018187
公開日2009年6月3日 申請日期2007年4月10日 優(yōu)先權(quán)日2006年4月10日
發(fā)明者塞繆爾·K·鮑曼, 尼古拉斯·維切, 托馬斯·厄爾·路德維格, 查爾斯·威廉·弗蘭克, 理查德·W·赫爾, 羅查克·夏爾馬, 阿德南·可汗, 馬克·亞當(dāng)斯 申請人:雷特澤遠(yuǎn)程管理有限公司