專利名稱:iSCSI通信方法以及相應(yīng)的發(fā)起設(shè)備和目標(biāo)設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及iSCSI技術(shù),尤其涉及主要應(yīng)用在目標(biāo)設(shè)備位于NAT設(shè) 備之后情況下的一種iSCSI通信方法,以及相應(yīng)的iSCSI發(fā)起設(shè)備和iSCSI目標(biāo)設(shè)備。
背景技術(shù):
iSCSI(internet Small Computer System Interface,基于互聯(lián)網(wǎng)的SCSI) 協(xié)議是一種基于TCP (Transmission Control Protocol,傳輸控制協(xié)議)/IP (Internet Protocol,互聯(lián)網(wǎng)協(xié)議)的SCSI (Small Computer System Interface,小型計算機(jī)系統(tǒng)接口 )傳輸協(xié)議,其在應(yīng)用主機(jī)和存儲系統(tǒng)之 間利用TCP/IP封裝來可靠傳輸SCSI命令/數(shù)據(jù)。iSCSI協(xié)議的典型應(yīng)用環(huán)境如圖1所示,應(yīng)用主機(jī)110與存儲系統(tǒng) 120之間通過IP網(wǎng)絡(luò)130來傳輸SCSI命令和數(shù)據(jù)。其中,應(yīng)用主機(jī)IIO 中安裝有發(fā)起模塊(initiator),因此通常又稱為發(fā)起端;而存儲系統(tǒng)120 中集成有目標(biāo)模塊(target),因此通常又稱為目標(biāo)端。然而,由于IP地址不足,現(xiàn)在存在大量的企業(yè)都采用私有地址組網(wǎng) (RFC1918),并通過NAT (Network Address Translation,網(wǎng)絡(luò)地址轉(zhuǎn) 換)來控制與公共網(wǎng)絡(luò)的通信。NAT能夠完成私有編址與公網(wǎng)編址的相 互轉(zhuǎn)化,還可通過設(shè)置相應(yīng)的包過濾規(guī)則讓不滿足條件的IP (Internet Protocol,因特網(wǎng)協(xié)議)包不能夠穿透NAT。圖2給出了應(yīng)用NAT的典型組網(wǎng)示意圖。如圖2所示,假設(shè)私網(wǎng)內(nèi) 設(shè)備150的私網(wǎng)地址為10.1.1.5,當(dāng)其要訪問外網(wǎng)130時,則由NAT設(shè) 備140會分配一個公網(wǎng)地址(比如210.222.10.12)給它,并相應(yīng)生成一 個私有地址10.1.1.5與公網(wǎng)地址210.222.10.12的轉(zhuǎn)換表項(xiàng)。這樣,私網(wǎng) 內(nèi)設(shè)備150發(fā)往外網(wǎng)130的報文中的源地址10.1.1.5將由NAT設(shè)備140
替換成210.222.10.12之后再發(fā)出,而外網(wǎng)130發(fā)往公網(wǎng)地址210.222.10.12 的報文中的目的地址也將由NAT設(shè)備140替換成10.1.1.5之后再轉(zhuǎn)發(fā)給 設(shè)備150。NAT的運(yùn)用為IP網(wǎng)絡(luò)帶來了很多好處,比如,緩解了IPv4構(gòu)架下 因特網(wǎng)IP地址緊張的問題,提高了私有網(wǎng)絡(luò)內(nèi)部的安全性和可控性。但 是,在圖2所示的NAT應(yīng)用組網(wǎng)環(huán)境下,如果位于NAT設(shè)備140之后 的私網(wǎng)內(nèi)設(shè)備150不主動連接位于外網(wǎng)130中的主機(jī),則NAT設(shè)備140 中就不會存在設(shè)備150的地址轉(zhuǎn)換表項(xiàng),這也就意味著外網(wǎng)130中的主 機(jī)不能主動發(fā)起與設(shè)備150的通信連接。于是,對于目前總是先由發(fā)起端主動提出iSCSI登錄請求、再由目 標(biāo)端做出響應(yīng)該iSCSI登錄請求的現(xiàn)有iSCSI連接建立技術(shù)來說,當(dāng)目標(biāo) 端120如圖3所示位于NAT設(shè)備140之后時,則外網(wǎng)130中的發(fā)起端110 將無法與處于私網(wǎng)中的目標(biāo)端120建立iSCSI連接。發(fā)明內(nèi)容有鑒于此,本發(fā)明目的在于提供一種iSCSI通信方法,使得即使目 標(biāo)設(shè)備位于NAT設(shè)備之后,相應(yīng)的發(fā)起設(shè)備還是能夠穿越所述NAT設(shè) 備與所述目標(biāo)設(shè)備建立iSCSI連接并相互傳輸iSCSI命令/數(shù)據(jù)。同時,本發(fā)明另一目的在于提供一種iSCSI發(fā)起設(shè)備,以支持上述 方法的實(shí)施。此外,本發(fā)明再一目的在于提供一種iSCSI目標(biāo)設(shè)備,用于與上述 iSCSI發(fā)起設(shè)備相配合,以支持上述方法的實(shí)施。為了達(dá)到上述目的,本發(fā)明公開了一種iSCSI通信方法,主要應(yīng)用 在目標(biāo)設(shè)備位于NAT設(shè)備之后的情況下。該iSCSI通信方法主要包括有 所述目標(biāo)設(shè)備將其私網(wǎng)地址經(jīng)由所述NAT設(shè)備告知發(fā)起設(shè)備; 所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備分別利用UDP (User Data Protocol, 用戶數(shù)據(jù)報協(xié)議)或TCP (Transmit Control Protocol,傳輸控制協(xié)議)等 網(wǎng)絡(luò)傳輸協(xié)議封裝各自生成的iSCSI報文,并將所述封裝而成的報文經(jīng) 由所述NAT設(shè)備轉(zhuǎn)發(fā)至對方;以及 所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備分別解封裝處理來自對方的封裝有iSCSI報文的報文,并根據(jù)提取出來的iSCSI報文進(jìn)行相應(yīng)處理。對于上述iSCSI通信方法,優(yōu)選地,所述生成及封裝iSCSI報文的具體操作包括有所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備生成一個向?qū)Ψ絺鬏攊SCSI命令/數(shù)據(jù) 的iSCSI報文,其中向所述目標(biāo)設(shè)備傳輸iSCSI命令/數(shù)據(jù)的iSCSI報文 的目的地址為所述目標(biāo)設(shè)備的私網(wǎng)地址;所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備利用所述UDP (User Data Protocol, 用戶數(shù)據(jù)報協(xié)議)或TCP (Transmit Control Protocol,傳輸控制協(xié)議)等 網(wǎng)絡(luò)傳輸協(xié)議封裝所述iSCSI報文,且封裝而成的報文的目的地址為所 述目標(biāo)設(shè)備的公網(wǎng)地址或所述發(fā)起設(shè)備的地址;以及所述發(fā)送設(shè)備或所述目標(biāo)設(shè)備將所述封裝而成的報文經(jīng)由所述NAT 設(shè)備發(fā)送給對方。對于上述iSCSI通信方法,優(yōu)選地,所述提取并處理iSCSI報文的具 體操作包括有'所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備解封裝處理來自對方的封裝有iSCSI 報文的報文,以提取出其中的iSCSI報文;以及所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備根據(jù)所述提取出來的iSCSI報文進(jìn)行 相應(yīng)處理。對于上述iSCSI通信方法,優(yōu)選地,將所述目標(biāo)設(shè)備的私網(wǎng)地址告 知所述發(fā)起設(shè)備的具體操作包括有所述目標(biāo)設(shè)備生成一個至少包含其私網(wǎng)地址的消息報文,并將所述 消息報文發(fā)送給述NAT設(shè)備;以及在收到所述消息報文后,所述NAT設(shè)備生成與所述目標(biāo)設(shè)備對應(yīng)的 地址轉(zhuǎn)換表項(xiàng),并將所述消息報文轉(zhuǎn)發(fā)給所述發(fā)起設(shè)備。對于上述iSCSI通信方法,進(jìn)一步優(yōu)選地,所述消息報文中還包含 所述目標(biāo)設(shè)備預(yù)先給所述發(fā)起設(shè)備分配的存儲資源信息。對于上述iSCSI通信方法,更進(jìn)一步優(yōu)選地,每隔預(yù)定時間重復(fù)將 所述目標(biāo)設(shè)備的私網(wǎng)地址告知所述發(fā)起設(shè)備的操作。
為了達(dá)到上述另一目的,本發(fā)明公開了一種iSCSI發(fā)起設(shè)備,主要 應(yīng)用在相應(yīng)的iSCSI目標(biāo)設(shè)備位于NAT設(shè)備之后的情況下。該iSCSI發(fā) 起設(shè)備主要包括發(fā)起模塊,報文封裝模塊,以及報文提取模塊。其中-所述發(fā)起模塊用于生成和/或處理iSCSI報文,且所述iSCSI報文用于在 所述iSCSI發(fā)起設(shè)備與所述iSCSI目標(biāo)設(shè)備之間相互傳輸iSCSI命令/數(shù) 據(jù);所述報文封裝模塊與所述發(fā)起模塊相連,用于利用UDP (User Data Protocol,用戶數(shù)據(jù)報協(xié)議)或TCP (Transmit Control Protocol,傳輸控 制協(xié)議)等網(wǎng)絡(luò)傳輸協(xié)議封裝所述發(fā)起模塊生成的iSCSI報文,并將所 述封裝而成的報文發(fā)送至所述iSCSI目標(biāo)設(shè)備;而所述報文提取模塊與 所述發(fā)起模塊相連,用于解封裝處理來自所述iSCSI目標(biāo)設(shè)備的封裝有 iSCSI報文的報文,并將提取出來的iSCSI報文輸出至所述發(fā)起模塊以進(jìn) 行相應(yīng)處理。對于上述iSCSI發(fā)起設(shè)備,優(yōu)選地,其還包括對端地址獲知模塊。 所述對端地址獲知模塊與所述發(fā)起模塊和/或所述報文封裝模塊相連,用 于分析來自所述iSCSI目標(biāo)設(shè)備的、至少包含所述iSCSI目標(biāo)設(shè)備私網(wǎng)地 址信息的消息報文。并且,所述對端地址獲知模塊將其分析得到的所述 iSCSI目標(biāo)設(shè)備私網(wǎng)地址輸出給所述發(fā)起模塊,以使得所述發(fā)起模塊可以 將所述私網(wǎng)地址用作向所述iSCSI目標(biāo)設(shè)備發(fā)送iSCSI報文的目的地址; 和/或所述對端地址獲知模塊將其分析得到的所述iSCSI目標(biāo)設(shè)備公網(wǎng)地 址輸出給所述報文封裝模塊,以使得所述報文封裝模塊可以將所述公網(wǎng) 地址用作向所述iSCSI目標(biāo)設(shè)備發(fā)送封裝報文的目的地址。為了達(dá)到上述再一目的,本發(fā)明公開了一種iSCSI目標(biāo)設(shè)備,主要 應(yīng)用在所述iSCSI目標(biāo)設(shè)備位于NAT設(shè)備的情況下。該iSCSI目標(biāo)設(shè)備 主要包括目標(biāo)模塊,私網(wǎng)地址通知模塊,報文封裝模塊,以及報文提取 模塊。其中所述目標(biāo)模塊用于生成和/或處理iSCSI報文,且所述iSCSI 報文用于在所述iSCSI目標(biāo)設(shè)備與相應(yīng)的iSCSI發(fā)起設(shè)備之間相互傳輸 iSCSI命令/數(shù)據(jù);所述私網(wǎng)地址通知模塊用于將所述iSCSI目標(biāo)設(shè)備的 私網(wǎng)地址經(jīng)由所述NAT設(shè)備告知所述iSCSI發(fā)起設(shè)備;所述報文封裝模 塊與所述目標(biāo)模塊相連,用于利用UDP (User Data Protocol,用戶數(shù)據(jù) 報協(xié)議)或TCP (Transmit Control Protocol,傳輸控制協(xié)議)等網(wǎng)絡(luò)傳輸 協(xié)議封裝所述目標(biāo)模塊生成的iSCSI報文,并將所述封裝而成的報文發(fā) 送至所述iSCSI發(fā)起設(shè)備;而所述報文提取模塊與所述目標(biāo)模塊相連, 用于解封裝處理來自所述發(fā)起設(shè)備的封裝有iSCSI報文的報文,并將提 取出來的iSCSI報文輸出至所述目標(biāo)模塊以進(jìn)行相應(yīng)處理。對于上述iSCSI目標(biāo)設(shè)備,優(yōu)選地,所述私網(wǎng)地址通知模塊還用于 將所述iSCSI目標(biāo)設(shè)備或所述目標(biāo)模塊預(yù)先給所述iSCSI發(fā)起設(shè)備分配的 存儲資源信息告知所述iSCSI發(fā)起設(shè)備。對于上述iSCSI目標(biāo)設(shè)備,進(jìn)一步優(yōu)選地,所述私網(wǎng)地址通知模塊 每隔預(yù)定時間重復(fù)一次將所述iSCSI目標(biāo)設(shè)備的私網(wǎng)地址經(jīng)由所述NAT 設(shè)備告知所述iSCSI發(fā)起設(shè)備的操作。與現(xiàn)有技術(shù)相比,本發(fā)明具有如下優(yōu)點(diǎn)首先,通過由位于NAT設(shè)備之后的目標(biāo)設(shè)備預(yù)先將其私網(wǎng)地址告知 相應(yīng)的發(fā)起設(shè)備,本發(fā)明使得外網(wǎng)中的應(yīng)用主機(jī)(發(fā)起設(shè)備)能夠穿越 NAT訪問內(nèi)網(wǎng)中的存儲系統(tǒng)(目標(biāo)設(shè)備)。其次,通過將iSCSI報文封裝在諸如UDP或TCP之類的網(wǎng)絡(luò)傳輸協(xié) 議報文中,也即在應(yīng)用主機(jī)(發(fā)起設(shè)備)和存儲系統(tǒng)(目標(biāo)設(shè)備)建立 UDP或TCP隧道來傳輸iSCSI報文,本發(fā)明有效避免了中間網(wǎng)絡(luò)對 iSCSI報文的影響。最后,應(yīng)用本發(fā)明技術(shù)方案時無需對NAT設(shè)備進(jìn)行任何更改,從而 使得本發(fā)明技術(shù)方案具有很好的通用性。
圖1為現(xiàn)有技術(shù)中iSCSI協(xié)議運(yùn)用的組網(wǎng)示意圖;圖2為現(xiàn)有技術(shù)中NAT運(yùn)用的組網(wǎng)示意圖;圖3為現(xiàn)有技術(shù)中iSCSI目標(biāo)端位于NAT設(shè)備之后的組網(wǎng)示意圖; 圖4為本發(fā)明iSCSI通信方法實(shí)施例之一的報文流轉(zhuǎn)圖; 圖5為本發(fā)明iSCSI發(fā)起設(shè)備實(shí)施例之一的結(jié)構(gòu)框圖; 圖6為本發(fā)明iSCSI目標(biāo)設(shè)備實(shí)施例之一的結(jié)構(gòu)框圖。
具體實(shí)施方式
本發(fā)明的上述及其他技術(shù)特征和有益效果,將通過參照附圖進(jìn)行的 優(yōu)選實(shí)施例介紹得到更充分的闡述。首先,請參閱圖4,其為本發(fā)明所提供iSCSI通信方法的流程圖。如 圖4所示,該方法主要應(yīng)用在作為iSCSI目標(biāo)端的存儲系統(tǒng)120位于NAT 設(shè)備140之后、而作為iSCSI發(fā)起端的應(yīng)用主機(jī)110處于外網(wǎng)中的情況 下。也就是說,應(yīng)用主機(jī)110與存儲系統(tǒng)120之間的通信需要經(jīng)由NAT 設(shè)備轉(zhuǎn)發(fā),并且在圖4中用c-突出標(biāo)識應(yīng)用主機(jī)lio與NAT設(shè)備140 之間的報文傳輸屬于外網(wǎng)通信,而用—突出標(biāo)識存儲系統(tǒng)120與NAT 設(shè)備140之間的報文傳輸屬于內(nèi)網(wǎng)通信。如圖4所示,在正式相互進(jìn)行iSCSI通信之前,作為iSCSI目標(biāo)端的 存儲系統(tǒng)120預(yù)先給相應(yīng)的作為iSCSI發(fā)起端的應(yīng)用主機(jī)110分配好存 儲資源(步驟SO)。對此,本領(lǐng)域技術(shù)人員應(yīng)能理解,步驟SO所執(zhí)行 操作為iSCSI的現(xiàn)有技術(shù)內(nèi)容,故在此不多贅述。接著,鑒于在存儲系統(tǒng)120位于NAT設(shè)備140之后的情況下,現(xiàn)有 需要由應(yīng)用主機(jī)110主動發(fā)起的iSCSI通信技術(shù)將iSCSI目標(biāo)端地址未知 而無法實(shí)施;因此,為了能夠穿越NAT建立iSCSI通信,存儲系統(tǒng)120 需要將其私網(wǎng)地址經(jīng)由NAT設(shè)備140告知給應(yīng)用主機(jī)110。并且,如圖 4所示,所述私網(wǎng)地址告知的具體操作內(nèi)容包括有-步驟S1-1,存儲系統(tǒng)120基于其私網(wǎng)地址生成一個消息報文①,并 將該消息報文①發(fā)送給NAT設(shè)備140;步驟Sl-2, NAT設(shè)備140在收到消息報文①之后,首先生成一個與 存儲系統(tǒng)120對應(yīng)的NAT轉(zhuǎn)換表項(xiàng),隨后基于該NAT轉(zhuǎn)換表項(xiàng)對消息 報文①進(jìn)行NAT轉(zhuǎn)換,并將NAT轉(zhuǎn)換后得到的報文②發(fā)送給應(yīng)用主機(jī)110;步驟Sl-3,應(yīng)用主機(jī)IIO在收到經(jīng)由NAT設(shè)備140轉(zhuǎn)發(fā)的消息報文 ②之后,對該消息報文②進(jìn)行處理,從中獲知存儲系統(tǒng)120的私網(wǎng)地址。至此,由于處于外網(wǎng)中的應(yīng)用主機(jī)110已經(jīng)獲知位于NAT設(shè)備之后 的存儲系統(tǒng)120的私網(wǎng)地址以及公網(wǎng)地址,因而其完全可以主動向存儲
系統(tǒng)120發(fā)起iSCSI連接。需要說明的是,為了使應(yīng)用主機(jī)110在斷開連接或重啟后還能夠及 連接到存儲系統(tǒng)120,存儲系統(tǒng)120優(yōu)選地每隔預(yù)定時間重復(fù)一次將上述 的私網(wǎng)地址告知操作。當(dāng)然,所述預(yù)定時間完全可由用戶根據(jù)實(shí)際應(yīng)用 需要靈活設(shè)定。同時,如步驟SO所示,存儲系統(tǒng)120預(yù)先給應(yīng)用主機(jī)110分配相應(yīng) 的存儲資源為現(xiàn)有iSCSI技術(shù)的普遍要求。因此,消息報文①中除了包 含存儲系統(tǒng)120的私網(wǎng)地址信息之外,還可包含相應(yīng)的存儲資源分配信 息。甚或,本領(lǐng)域技術(shù)人員不難將消息報文①所包含內(nèi)容延及至任何其 它可用來幫助應(yīng)用主機(jī)IIO主動連接存儲系統(tǒng)120的信息。隨后,在應(yīng)用主機(jī)110獲知存儲系統(tǒng)120的私網(wǎng)地址及公網(wǎng)地址使 得相互進(jìn)行iSCSI通信成為可能之后,本發(fā)明還通過在應(yīng)用主機(jī)110和 存儲系統(tǒng)120之間建立一條iSCSI報文傳輸隧道,來使得應(yīng)用主機(jī)110 和存儲系統(tǒng)120相互傳輸?shù)膇SCSI命令/數(shù)據(jù)能夠順利穿越NAT設(shè)備到達(dá) 對端,同時還可以盡量減少中間網(wǎng)絡(luò)對iSCSI報文的影響。而隧道作為一種封裝技術(shù),其主要是利用一種網(wǎng)絡(luò)傳輸協(xié)議將其它 協(xié)議生成的數(shù)據(jù)報文封裝在它自己的報文中后再進(jìn)行網(wǎng)絡(luò)傳輸。 一般來 說,可用于建立隧道的網(wǎng)絡(luò)傳輸協(xié)議有很多,比如UDP (User Data Protocol,用戶數(shù)據(jù)報協(xié)議)、或者TCP (Transmit Control Protocol,傳 輸控制協(xié)議)等?;趥鬏斔俣确矫娴目紤],本發(fā)明優(yōu)選利用UDP來建立所述iSCSI 報文傳輸隧道。具體而言應(yīng)用主機(jī)110或存儲系統(tǒng)120分別利用UDP 封裝各自生成的iSCSI報文,并將封裝而成的報文經(jīng)由NAT設(shè)備140轉(zhuǎn) 發(fā)給對方;以及,應(yīng)用主機(jī)UO或存儲系統(tǒng)120分別解封裝處理來自對 方的封裝有iSCSI報文的報文,并根據(jù)提取出來的iSCSI報文進(jìn)行相應(yīng)的 iSCSI通信處理。下面參照圖4,并從發(fā)起iSCSI連接請求開始,詳細(xì)介紹應(yīng)用主機(jī) 110和存儲系統(tǒng)120之間通過UDP隧道穿越NAT進(jìn)行的iSCSI通信。如 圖4所示,該iSCSI通信主要包括有步驟Si2-1,在應(yīng)用主機(jī)110獲知了存儲系統(tǒng)120的私網(wǎng)地址及公網(wǎng)
地址之后,如果需要與存儲系統(tǒng)120進(jìn)行iSCSI通信,應(yīng)用主機(jī)110則 生成一個向存儲系統(tǒng)120請求建立iSCSI連接的iSCSI連接請求報文③。需要注意的是,這里的iSCSI連接請求報文③是一個完整的iSCSI 報文,即包括IP首部、TCP首部等;同時,iSCSI連接請求報文③的目 的地址為存儲系統(tǒng)120的私網(wǎng)地址。步驟Si2-2,應(yīng)用主機(jī)110對iSCSI連接請求報文③進(jìn)行UDP封裝, 并將封裝而成的UDP報文④發(fā)送給NAT設(shè)備140。需要注意的是,這里的UDP報文④的目的地址為存儲系統(tǒng)120的公 網(wǎng)地址。這樣,NAT設(shè)備140在收到該UDP報文④后,才能首先根據(jù)其 上相應(yīng)的NAT轉(zhuǎn)換表項(xiàng)對該UDP報文④進(jìn)行NAT轉(zhuǎn)換,然后再將相應(yīng) NAT轉(zhuǎn)換后的UDP報文⑤轉(zhuǎn)發(fā)給存儲系統(tǒng)120。步驟St3-l,存儲系統(tǒng)120在收到經(jīng)由NAT設(shè)備140轉(zhuǎn)發(fā)的、來自 應(yīng)用主機(jī)110的、包含iSCSI連接請求報文③的UDP報文⑤之后,對該 UDP報文⑤進(jìn)行解封裝處理,以提取出其中的iSCSI連接請求報文③。步驟St3-2,存儲系統(tǒng)120根據(jù)提取出來的iSCSI連接請求報文③進(jìn) 行相應(yīng)的iSCSI通信處理,比如生成相應(yīng)的iSCSI報文⑥以對該iSCSI連接請求報文③作出響應(yīng)。步驟St2,與應(yīng)用主機(jī)110端類似,存儲系統(tǒng)120也利用UDP封裝 由其生成的iSCSI報文⑥,并將封裝而成的UDP報文⑦發(fā)送給NAT設(shè) 備140。然而,這里的UDP報文⑦的目的地址為應(yīng)用主機(jī)110的地址。這樣, NAT設(shè)備140在收到該UDP報文⑦之后,也將首先根據(jù)其上相應(yīng)的NAT 轉(zhuǎn)換表項(xiàng)對該UDP報文⑦進(jìn)行NAT轉(zhuǎn)換,然后再將相應(yīng)NAT轉(zhuǎn)換后的 UDP報文⑧轉(zhuǎn)發(fā)給應(yīng)用主機(jī)110。步驟Si3-1,與存儲系統(tǒng)120端類似,在收到經(jīng)由NAT設(shè)備140轉(zhuǎn) 發(fā)的、來自存儲系統(tǒng)120的、包含iSCSI報文⑥的UDP報文⑧之后,應(yīng) 用主機(jī)110也會對該UDP報文⑧進(jìn)行解封裝處理,以提取出其中的iSCSI 報文⑥。步驟Si3-2,同樣與存儲系統(tǒng)120端類似,應(yīng)用主機(jī)120也根據(jù)提取 出來的iSCSI報文⑥進(jìn)行相應(yīng)的iSCSI通信處理,比如生成用于向存儲系
統(tǒng)120傳輸iSCSI命令/數(shù)據(jù)的相應(yīng)iSCSI報文③。在相互成功建立了 iSCSI連接后,應(yīng)用主機(jī)110與存儲系統(tǒng)120分 別采用與前述相同的方式處理后續(xù)用于數(shù)據(jù)讀寫的iSCSI報文,即利用 UDP封裝本端生成的iSCSI報文③/⑥后再輸出、以及解封裝來自對端的 UDP報文獲取包含其中的iSCSI報文⑥/③后進(jìn)行相應(yīng)的處理。通過上述介紹可知,通過將位于NAT設(shè)備之后的iSCSI目標(biāo)端的私 網(wǎng)地址預(yù)先告知給處于公網(wǎng)中的iSCSI發(fā)起端、以及在iSCSI目標(biāo)端和 iSCSI發(fā)起端之間建立iSCSI報文傳輸隧道,本發(fā)明所提供iSCSI通信方 法不僅有效實(shí)現(xiàn)了 iSCSI對NAT的穿越,還能夠盡量避免中間網(wǎng)絡(luò)對 iSCSI報文的影響。同時,由于無需對NAT設(shè)備進(jìn)行任何修改,本發(fā)明所提供iSCSI通 信方法還具有很好的普適性。下面參照圖5詳細(xì)介紹本發(fā)明所提供iSCSI發(fā)起設(shè)備的一個優(yōu)選實(shí) 施例。如圖5所示,iSCSI發(fā)起設(shè)備500主要應(yīng)用在相應(yīng)的iSCSI目標(biāo)設(shè)備 600位于NAT設(shè)備140之后、而其處于外網(wǎng)中的情況下。該iSCSI發(fā)起 設(shè)備500主要包括發(fā)起模塊510,對端地址獲知模塊540、報文封裝模塊 520,以及報文提取模塊530。其中發(fā)起模塊510用于生成iSCSI報文③和/或處理iSCSI報文⑥,其中 iSCSI報文③用作發(fā)起設(shè)備500向iSCSI目標(biāo)設(shè)備600傳輸iSCSI命令/ 數(shù)據(jù),而iSCSI報文⑥在用作iSCSI目標(biāo)設(shè)備600向iSCSI發(fā)起設(shè)備500 傳輸iSCSI命令/數(shù)據(jù)。需要注意的是,此處的iSCSI報文③為完整的iSCSI報文,也即包括 相應(yīng)的IP首部、TCP首部等。同時,該iSCSI報文③的目的地址為iSCSI 目標(biāo)設(shè)備600的私網(wǎng)地址⑨,而該iSCSI目標(biāo)設(shè)備600的私網(wǎng)地址(D是 對端地址獲知模塊540通過分析由NAT設(shè)備140轉(zhuǎn)發(fā)的消息報文②后得 到的。 一般來說,消息報文②需要在發(fā)起iSCSI連接之前送達(dá)iSCSI發(fā)起 設(shè)備,且其中除了包含iSCSI目標(biāo)設(shè)備600的私網(wǎng)地址⑨之外,還可能 包含任何其它對發(fā)起iSCSI連接有用的信息,比如iSCSI目標(biāo)設(shè)備600
預(yù)先為iSCSI發(fā)起設(shè)備500分配的存儲資源信息等。報文封裝模塊520與發(fā)起模塊510相連,用于利用UDP或TCP等網(wǎng) 絡(luò)傳輸協(xié)議封裝發(fā)起模塊510生成的iSCSI報文③,并將封裝而成的報 文④發(fā)送給NAT設(shè)備140。其中,該封裝報文④的目的地址為iSCSI目 標(biāo)設(shè)備600的公網(wǎng)地址⑩,從而使得NAT設(shè)備140在收到該封裝報文④ 后能夠根據(jù)相應(yīng)的NAT轉(zhuǎn)換表項(xiàng)進(jìn)行NAT轉(zhuǎn)換,并將進(jìn)行NAT轉(zhuǎn)換之 后的封裝報文⑤發(fā)送給iSCSI目標(biāo)設(shè)備600。類似地,該iSCSI目標(biāo)設(shè)備 的公網(wǎng)地址⑩也是對端地址獲知模塊540通過分析由NAT設(shè)備140轉(zhuǎn)發(fā) 的消息報文②后得到的。而報文提取模塊530也與發(fā)起模塊510相連,用于解封裝處理經(jīng)由 NAT設(shè)備140轉(zhuǎn)發(fā)的、來自iSCSI目標(biāo)設(shè)備600的封裝有完整iSCSI報 文的報文⑧,并將從該封裝報文⑧中提取出來的完整iSCSI報文⑥輸出 至發(fā)起模塊510,從而使得發(fā)起模塊510能夠根據(jù)該iSCSI報文⑥進(jìn)行相 應(yīng)的iSCSI通信處理,比如生成向iSCSI發(fā)起設(shè)備500傳輸iSCSI命令/ 數(shù)據(jù)的iSCSI報文③。需要說明的是,上述僅針對本發(fā)明所要解決的問題而重點(diǎn)介紹了 iSCSI發(fā)起設(shè)備500中使其支持iSCSI并可以穿越NAT的功能模塊。然 而,本領(lǐng)域技術(shù)人員應(yīng)能理解,在實(shí)際實(shí)施本發(fā)明時,iSCSI發(fā)起設(shè)備 500還可包括其它通用的應(yīng)用主機(jī)功能模塊。也就是說,本發(fā)明所提供 iSCSI發(fā)起設(shè)備500包括但不限于發(fā)起模塊510,報文封裝模塊520,以 及報文提取模塊530。下面參照圖6詳細(xì)介紹本發(fā)明所提供iSCSI目標(biāo)設(shè)備的一個優(yōu)選實(shí) 施例。如圖6所示,iSCSI目標(biāo)設(shè)備600主要應(yīng)用在其位于NAT設(shè)備140 之后、而相應(yīng)的iSCSI發(fā)起設(shè)備500處于外網(wǎng)中的情況下。該iSCSI目標(biāo) 設(shè)備600主要包括目標(biāo)模塊610,私網(wǎng)地址通知模塊620,報文封裝模塊 630,以及報文提取模塊640。其中目標(biāo)模塊610用于生成iSCSI報文⑥和/或處理iSCSI報文③,其中 iSCSI報文③用作發(fā)起設(shè)備500向iSCSI目標(biāo)設(shè)備600傳輸iSCSI命令/
數(shù)據(jù),而iSCSI報文⑥在用作iSCSI目標(biāo)設(shè)備600向iSCSI發(fā)起設(shè)備500 傳輸iSCSI命令/數(shù)據(jù)。私網(wǎng)地址通知模塊620用于將iSCSI目標(biāo)設(shè)備600的私網(wǎng)地址經(jīng)由 NAT設(shè)備140轉(zhuǎn)發(fā)而告知給iSCSI發(fā)起設(shè)備500。如圖6所示,iSCSI目標(biāo)設(shè)備600告知iSCSI發(fā)起設(shè)備其私網(wǎng)地址的 過程可能具體為首先,私網(wǎng)地址通知模塊620生成一個至少包含其私 網(wǎng)地址的消息報文①,并將該消息報文①發(fā)送給NAT設(shè)備140;接著, NAT設(shè)備在收到該消息報文①之后,首先將生成一個與iSCSI目標(biāo)設(shè)備 600對應(yīng)的NAT轉(zhuǎn)換表項(xiàng),然后利用該NAT轉(zhuǎn)換表項(xiàng)對消息報文①進(jìn)行 NAT轉(zhuǎn)換,并將進(jìn)行NAT轉(zhuǎn)換后的報文②發(fā)送給iSCSI發(fā)起設(shè)備500; 至此,iSCSI發(fā)起設(shè)備500就可根據(jù)經(jīng)由NAT設(shè)備140轉(zhuǎn)發(fā)包含私網(wǎng)地 址信息的報文②來獲知iSCSI目標(biāo)設(shè)備600的私網(wǎng)地址。通過上述介紹可知,在iSCSI目標(biāo)設(shè)備600中增加私網(wǎng)地址通知模 塊620的目的是為了將iSCSI目標(biāo)設(shè)備600的私網(wǎng)地址預(yù)先告知相應(yīng)的 iSCSI發(fā)起設(shè)備,以使得iSCSI發(fā)起設(shè)備500能夠穿越NAT主動發(fā)起與 iSCSI目標(biāo)設(shè)備600的iSCSI連接,即使iSCSI目標(biāo)設(shè)備600位于NAT 設(shè)備140之后。因此,為了使得iSCSI發(fā)起設(shè)備500在斷開連接或重啟 后能夠及時與iSCSI目標(biāo)設(shè)備600建立連接,私網(wǎng)地址通知模塊620優(yōu) 選地每隔預(yù)定時間重復(fù)一次將iSCSI目標(biāo)設(shè)備600的私網(wǎng)地址經(jīng)由NAT 設(shè)備140告知給iSCSI發(fā)起設(shè)備500的操作。當(dāng)然,所述預(yù)定時間完全 可由用戶根據(jù)實(shí)際應(yīng)用需要靈活設(shè)定。此外,有鑒于現(xiàn)有iSCSI技術(shù)普遍要求作為存儲系統(tǒng)的iSCSI目標(biāo)設(shè) 備預(yù)先為作為應(yīng)用主機(jī)的iSCSI發(fā)起設(shè)備分配存儲資源,因此在消息報 文①中還可以優(yōu)選地包含有iSCSI目標(biāo)設(shè)備600(或具體為其中目標(biāo)模塊 610)預(yù)先為iSCSI發(fā)起設(shè)備500分配的存儲資源相關(guān)信息。報文封裝模塊630與目標(biāo)模塊610相連,用于利用UDP或TCP等網(wǎng) 絡(luò)傳輸協(xié)議封裝目標(biāo)模塊610生成的iSCSI報文 ,并將封裝而成的報 文⑦發(fā)送給NAT設(shè)備140。其中,該封裝報文⑦的目的地址為iSCSI發(fā) 起設(shè)備500的地址,從而使得NAT設(shè)備140在收到該封裝報文⑦后能夠 根據(jù)相應(yīng)的NAT轉(zhuǎn)換表項(xiàng)進(jìn)行NAT轉(zhuǎn)換,并將進(jìn)行NAT轉(zhuǎn)換之后的封
裝報文⑧發(fā)送給iSCSI發(fā)起設(shè)備500。而報文提取模塊640也與目標(biāo)模塊610相連,用于解封裝處理經(jīng)由 NAT設(shè)備140轉(zhuǎn)發(fā)的、來自iSCSI發(fā)起設(shè)備500的封裝有完整iSCSI報 文的報文⑤,并將從該封裝報文⑤中提取出來的完整iSCSI報文③輸出 至目標(biāo)模塊610,從而使得目標(biāo)模塊610能夠根據(jù)該iSCSI報文③進(jìn)行相 應(yīng)的iSCSI通信處理,比如生成向iSCSI發(fā)起設(shè)備500傳輸iSCSI命令/ 數(shù)據(jù)的iSCSI報文(D。需要說明的是,上述僅針對本發(fā)明所要解決的問題而重點(diǎn)介紹了 iSCSI目標(biāo)設(shè)備600中使其支持iSCSI并可以穿越NAT的功能模塊。然 而,本領(lǐng)域技術(shù)人員應(yīng)能理解,在實(shí)際實(shí)施本發(fā)明時,iSCSI目標(biāo)設(shè)備 600還可包括其它通用的存儲系統(tǒng)功能模塊。也就是說,本發(fā)明所提供 iSCSI目標(biāo)設(shè)備600包括但不限于目標(biāo)模塊610,私網(wǎng)地址通知模塊620, 報文封裝模塊630,以及報文提取模塊640。需要聲明的是,上述發(fā)明內(nèi)容及具體實(shí)施方式
意在證明本發(fā)明所提 供技術(shù)方案的實(shí)際應(yīng)用,不應(yīng)解釋為對本發(fā)明保護(hù)范圍的限定。本領(lǐng)域 技術(shù)人員在本發(fā)明的精神和原理內(nèi),當(dāng)可作各種修改、等同替換、或改 進(jìn)。本發(fā)明的保護(hù)范圍以所附權(quán)利要求書為準(zhǔn)。
權(quán)利要求
1.一種iSCSI通信方法,應(yīng)用在目標(biāo)設(shè)備位于NAT設(shè)備之后的情況下;其特征在于,包括有所述目標(biāo)設(shè)備將其私網(wǎng)地址經(jīng)由所述NAT設(shè)備告知發(fā)起設(shè)備;所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備分別利用網(wǎng)絡(luò)傳輸協(xié)議封裝各自生成的iSCSI報文,并將所述封裝而成的報文經(jīng)由所述NAT設(shè)備轉(zhuǎn)發(fā)至對方;以及所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備分別解封裝處理來自對方的封裝有iSCSI報文的報文,并根據(jù)提取出來的iSCSI報文進(jìn)行相應(yīng)處理。
2. 如權(quán)利要求1所述的iSCSI通信方法,其特征在于,所述生成及封 裝iSCSI報文的具體操作包括有所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備生成一個向?qū)Ψ絺鬏攊SCSI命令/數(shù)據(jù) 的iSCSI報文,其中向所述目標(biāo)設(shè)備傳輸iSCSI命令/數(shù)據(jù)的iSCSI報文 的目的地址為所述目標(biāo)設(shè)備的私網(wǎng)地址;所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備利用所述網(wǎng)絡(luò)傳輸協(xié)議封裝所述 iSCSI報文,且封裝而成的報文的目的地址為所述目標(biāo)設(shè)備的公網(wǎng)地址或 所述發(fā)起設(shè)備的地址;以及所述發(fā)送設(shè)備或所述目標(biāo)設(shè)備將所述封裝而成的報文經(jīng)由所述NAT 設(shè)備發(fā)送給對方。
3. 如權(quán)利要求1所述的iSCSI通信方法,其特征在于,所述提取并處 理iSCSI報文的具體操作包括有所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備解封裝處理來自對方的封裝有iSCSI 報文的報文,以提取出其中的iSCSI報文;以及所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備根據(jù)所述提取出來的iSCSI報文進(jìn)行 相應(yīng)處理。
4. 如權(quán)利要求1所述的iSCSI通信方法,其特征在于,將所述目標(biāo)設(shè) 備的私網(wǎng)地址告知所述發(fā)起設(shè)備的具體操作包括有所述目標(biāo)設(shè)備生成一個至少包含其私網(wǎng)地址的消息報文,并將所述 消息報文發(fā)送給所述NAT設(shè)備;以及 在收到所述消息報文后,所述NAT設(shè)備生成與所述目標(biāo)設(shè)備對應(yīng)的 地址轉(zhuǎn)換表項(xiàng),并將所述消息報文轉(zhuǎn)發(fā)給所述發(fā)起設(shè)備。
5. 如權(quán)利要求4所述的iSCSI通信方法,其特征在于,所述消息報文 中還包含所述目標(biāo)設(shè)備預(yù)先給所述發(fā)起設(shè)備分配的存儲資源信息。
6. 如權(quán)利要求1至5任一所述的iSCSI通信方法,其特征在于,所述 網(wǎng)絡(luò)傳輸協(xié)議為用戶數(shù)據(jù)報協(xié)議,或者為傳輸控制協(xié)議。
7. 如權(quán)利要求l至5任一所述的iSCSI通信方法,其特征在于,每隔 預(yù)定時間重復(fù)將所述目標(biāo)設(shè)備的私網(wǎng)地址告知所述發(fā)起設(shè)備的操作。
8. —種iSCSI發(fā)起設(shè)備,包括用于生成和/或處理iSCSI報文的發(fā)起 模塊,且所述iSCSI報文用于在所述iSCSI發(fā)起設(shè)備與相應(yīng)的iSCSI目標(biāo) 設(shè)備之間傳輸iSCSI命令/數(shù)據(jù);其特征在于,還包括報文封裝模塊,與所述發(fā)起模塊相連,用于利用網(wǎng)絡(luò)傳輸協(xié)議封裝 所述發(fā)起模塊生成的iSCSI報文,并將所述封裝而成的報文發(fā)送至所述 iSCSI目標(biāo)設(shè)備;以及報文提取模塊,與所述發(fā)起模塊相連,用于解封裝處理來自所述 iSCSI目標(biāo)設(shè)備的封裝有iSCSI報文的報文,并將提取出來的iSCSI報文輸出至所述發(fā)起模塊。
9. 如權(quán)利要求8所述的iSCSI發(fā)起設(shè)備,其特征在于,還包括 對端地址獲知模塊,與所述發(fā)起模塊和/或所述報文封裝模塊相連,用于分析來自所述iSCSI目標(biāo)設(shè)備的、至少包含所述iSCSI目標(biāo)設(shè)備私網(wǎng) 地址信息的消息報文;所述對端地址獲知模塊將其分析得到的所述iSCSI目標(biāo)設(shè)備私網(wǎng)地 址輸出給所述發(fā)起模塊,而所述發(fā)起模塊將把所述私網(wǎng)地址作為向所述 iSCSI目標(biāo)設(shè)備發(fā)送iSCSI報文的目的地址;和/或所述對端地址獲知模塊將其分析得到的所述iSCSI目標(biāo)設(shè)備公網(wǎng)地 址輸出給所述報文封裝模塊,而所述報文封裝模塊將所述公網(wǎng)地址作為 向所述iSCSI目標(biāo)設(shè)備發(fā)送封裝報文的目的地址。
10. 如權(quán)利要求8或9所述的iSCSI發(fā)起設(shè)備,其特征在于,所述網(wǎng) 絡(luò)傳輸協(xié)議為用戶數(shù)據(jù)報協(xié)議,或者為傳輸控制協(xié)議。
11. 一種iSCSI目標(biāo)設(shè)備,包括用于生成和/或處理iSCSI報文的目標(biāo) 模塊,且所述iSCSI報文用于在所述iSCSI目標(biāo)設(shè)備與相應(yīng)的iSCSI發(fā)起 設(shè)備之間相互傳輸iSCSI命令/數(shù)據(jù);其特征在于,還包括私網(wǎng)地址通知模塊,用于在所述iSCSI目標(biāo)設(shè)備位于NAT設(shè)備的情 況下,將所述iSCSI目標(biāo)設(shè)備的私網(wǎng)地址經(jīng)由所述NAT設(shè)備告知所述 iSCSI發(fā)起設(shè)備;報文封裝模塊,與所述目標(biāo)模塊相連,用于利用網(wǎng)絡(luò)傳輸協(xié)議封裝 所述目標(biāo)模塊生成的iSCSI報文,并將所述封裝而成的報文發(fā)送至所述 iSCSI發(fā)起設(shè)備;以及報文提取模塊,與所述目標(biāo)模塊相連,用于解封裝處理來自所述發(fā) 起設(shè)備的封裝有iSCSI報文的報文,并將提取出來的iSCSI報文輸出至所 述目標(biāo)模塊。
12. 如權(quán)利要求ll所述的iSCSI目標(biāo)設(shè)備,其特征在于,所述網(wǎng)絡(luò)傳輸協(xié)議為用戶數(shù)據(jù)報協(xié)議,或者為傳輸控制協(xié)議。
13. 如權(quán)利要求11或12所述的iSCSI目標(biāo)設(shè)備,其特征在于,所述 私網(wǎng)地址通知模塊還用于將所述iSCSI目標(biāo)設(shè)備或所述目標(biāo)模塊預(yù)先給 所述iSCSI發(fā)起設(shè)備分配的存儲資源信息告知所述iSCSI發(fā)起設(shè)備。
14.如權(quán)利要求ll或12所述的iSCSI目標(biāo)設(shè)備,其特征在于,所述 私網(wǎng)地址通知模塊每隔預(yù)定時間重復(fù)一次將所述iSCSI目標(biāo)設(shè)備的私網(wǎng) 地址經(jīng)由所述NAT設(shè)備告知所述iSCSI發(fā)起設(shè)備的操作。
全文摘要
對于目標(biāo)設(shè)備位于NAT設(shè)備之后的組網(wǎng)情況,本發(fā)明公開了一種iSCSI通信方法,以及相應(yīng)的發(fā)起設(shè)備和目標(biāo)設(shè)備。所述iSCSI通信方法主要包括所述目標(biāo)設(shè)備將其私網(wǎng)地址經(jīng)由所述NAT設(shè)備告知相應(yīng)的發(fā)起設(shè)備;所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備分別利用網(wǎng)絡(luò)傳輸協(xié)議封裝各自生成的iSCSI報文,并將封裝而成的報文經(jīng)由所述NAT設(shè)備轉(zhuǎn)發(fā)至對方;以及所述發(fā)起設(shè)備或所述目標(biāo)設(shè)備分別解封裝處理來自對方的封裝有iSCSI報文的報文,并根據(jù)提取出來的iSCSI報文進(jìn)行相應(yīng)處理。本發(fā)明有效實(shí)現(xiàn)了iSCSI對NAT的穿越,還可以避免中間網(wǎng)絡(luò)對iSCSI報文的影響。
文檔編號H04L12/56GK101119374SQ20071012156
公開日2008年2月6日 申請日期2007年9月10日 優(yōu)先權(quán)日2007年9月10日
發(fā)明者迪 周 申請人:杭州華三通信技術(shù)有限公司