專利名稱:計(jì)算機(jī)網(wǎng)絡(luò)中輸入/輸出鏈路重試、故障及恢復(fù)方法和設(shè)備的制作方法
技術(shù)領(lǐng)域:
本發(fā)明總地涉及在一個(gè)計(jì)算機(jī)網(wǎng)絡(luò)中控制節(jié)點(diǎn)(或兩個(gè)點(diǎn))之間的數(shù)據(jù)流的方法和設(shè)備,更特別地涉及在一個(gè)系統(tǒng)區(qū)域網(wǎng)絡(luò)中控制兩個(gè)節(jié)點(diǎn)(或兩個(gè)點(diǎn))之間的數(shù)據(jù)流的方法和設(shè)備。
背景技術(shù):
在本申請(qǐng)中,術(shù)語“節(jié)點(diǎn)“將被用來描述一條消息的起始點(diǎn)或一條消息的終止點(diǎn)。術(shù)語“點(diǎn)“將被用來指示兩個(gè)節(jié)點(diǎn)之間傳送的瞬時(shí)位置。本發(fā)明包括一個(gè)第一節(jié)點(diǎn)和一個(gè)第二節(jié)點(diǎn),一個(gè)節(jié)點(diǎn)和作為鏈路一部分的一臺(tái)交換機(jī),一個(gè)第一交換機(jī)和包含一條鏈路的第二交換機(jī),或一臺(tái)交換機(jī)和一個(gè)節(jié)點(diǎn)之間的通信。
被稱為停等式ARQ的現(xiàn)有的流量控制協(xié)議發(fā)送一個(gè)數(shù)據(jù)分組,然后在發(fā)送下一個(gè)分組之前等待一個(gè)確認(rèn)(ACK)。當(dāng)數(shù)據(jù)分組從一個(gè)點(diǎn)到下一個(gè)點(diǎn)在網(wǎng)絡(luò)中流過時(shí),等待時(shí)間成為一個(gè)問題。等待時(shí)間是由組成網(wǎng)絡(luò)的結(jié)構(gòu)中的很大數(shù)量的鏈路和交換機(jī)而導(dǎo)致的。這是因?yàn)樵谙乱粋€(gè)數(shù)據(jù)分組被從發(fā)送節(jié)點(diǎn)中發(fā)送出之前每個(gè)分組都需要來自于一個(gè)接收節(jié)點(diǎn)的成功接收的確認(rèn)。因此,由于從接收節(jié)點(diǎn)到達(dá)發(fā)送節(jié)點(diǎn)的確認(rèn)的傳輸時(shí)間而存在固有延遲。
一個(gè)被稱為退回n的ARQ的解決方案使用順序編號(hào)的分組,其中序列號(hào)在包含分組的幀的頭標(biāo)中被發(fā)送。在這種情況下,幾個(gè)連續(xù)的分組不用等待確認(rèn)返回就被發(fā)送。根據(jù)這個(gè)協(xié)議,接收節(jié)點(diǎn)只接受正確順序的分組并將請(qǐng)求號(hào)(RN)發(fā)送回發(fā)送節(jié)點(diǎn)。給定的請(qǐng)求號(hào)的作用是確認(rèn)被請(qǐng)求的分組之前的所有分組并請(qǐng)求發(fā)送與該請(qǐng)求號(hào)相關(guān)的分組。退回號(hào)n是一個(gè)決定在沒有一個(gè)新分組的請(qǐng)求時(shí)有多少連續(xù)分組能被從發(fā)送器中發(fā)送出去的參數(shù)。具體地,不允許發(fā)送節(jié)點(diǎn)在i被確認(rèn)之前(即在i+1被請(qǐng)求之前)發(fā)送分組i+n。這樣,如果i是從接收節(jié)點(diǎn)中最近接收到的請(qǐng)求,則允許發(fā)送器在接收到下一個(gè)確認(rèn)之前發(fā)送窗口中的n個(gè)分組。在這個(gè)協(xié)議中,如果有一個(gè)錯(cuò)誤,則由于接收節(jié)點(diǎn)只允許按順序接收分組,而使得整個(gè)窗口必須被重傳。這樣,即使錯(cuò)誤在窗口末端附近,整個(gè)窗口也必須被重傳。這個(gè)協(xié)議最適合于有高錯(cuò)誤概率的大規(guī)模網(wǎng)絡(luò)。
在一個(gè)允許大數(shù)據(jù)分組的結(jié)構(gòu)中,不必要的過量分組重傳成為一個(gè)重要的效率問題。例如,重傳整個(gè)窗口的數(shù)據(jù)分組而每個(gè)分組都約是4G字節(jié),則這將會(huì)是相對(duì)低效率的。
另一個(gè)已知的流量控制協(xié)議只要求被錯(cuò)誤接收的分組的重傳。這要求接收器保留一個(gè)被正確接收的分組的緩沖器并且在重傳的分組被成功接收后對(duì)它們重新排序。盡管這種協(xié)議保持帶寬需求最小,但是它使得接收器的設(shè)計(jì)比起退回n的ARQ所要求的更復(fù)雜。
因此本發(fā)明針對(duì)開發(fā)一種在系統(tǒng)區(qū)域網(wǎng)絡(luò)中控制節(jié)點(diǎn)之間的數(shù)據(jù)流以提高通信效率而不需要使接收端處理過度復(fù)雜化的方法和設(shè)備的問題。
發(fā)明內(nèi)容
本發(fā)明提供一種在網(wǎng)絡(luò)中從源節(jié)點(diǎn)發(fā)送數(shù)據(jù)到目的節(jié)點(diǎn)的方法。根據(jù)本發(fā)明的方法,數(shù)據(jù)分組被從源節(jié)點(diǎn)發(fā)送到至少一個(gè)中間點(diǎn)。每個(gè)分組都被源節(jié)點(diǎn)分配以一個(gè)相應(yīng)的序列號(hào)。每個(gè)分組的一個(gè)拷貝都被保留到源節(jié)點(diǎn)的一個(gè)緩沖器中直到該分組被中間點(diǎn)成功接收的確認(rèn)被接收到為止。在該中間點(diǎn),一個(gè)中間點(diǎn)序列號(hào)被分配給每個(gè)被中間點(diǎn)接收到的分組。
本發(fā)明提供在多條鏈路構(gòu)成的結(jié)構(gòu)中的兩條鏈路之間傳送數(shù)據(jù)的設(shè)備。該設(shè)備包括兩臺(tái)交換機(jī)和一個(gè)緩沖器。第一臺(tái)交換機(jī)被放置在一條鏈路的第一個(gè)點(diǎn)中且從鏈路中的第一個(gè)點(diǎn)發(fā)送數(shù)據(jù)分組到鏈路中的第二個(gè)點(diǎn)。第一臺(tái)交換機(jī)將第一點(diǎn)序列號(hào)分配給該分組,其中第一點(diǎn)序列號(hào)獨(dú)立于由分組源所分配的源序列號(hào)。緩沖器被放置在第一點(diǎn)中,它被連接到第一臺(tái)交換機(jī)且存儲(chǔ)每個(gè)分組直到接收到該分組已經(jīng)被成功接收的確認(rèn)或接收到的該分組的收到版本包含至少一個(gè)錯(cuò)誤的錯(cuò)誤指示為止。第二臺(tái)交換機(jī)被放置在第二點(diǎn)中,接收每個(gè)被發(fā)送的數(shù)據(jù)分組,且在接收到一個(gè)無錯(cuò)誤分組后就發(fā)送一個(gè)確認(rèn)以指明對(duì)該無錯(cuò)誤分組以及在上一個(gè)被確認(rèn)的分組和該無錯(cuò)誤分組之間的序列中的所有分組的成功接收。第二臺(tái)交換機(jī)也將第二點(diǎn)序列號(hào)分配給所有被接收到的分組,其中第二點(diǎn)序列號(hào)是獨(dú)立于第一點(diǎn)序列號(hào)的。
圖1示例了根據(jù)本發(fā)明的一個(gè)示范實(shí)施方案的整個(gè)NG I/O鏈接結(jié)構(gòu)。
圖2是根據(jù)本發(fā)明的一個(gè)示范實(shí)施方案、用于I/O通過的NG I/O結(jié)構(gòu)的方塊圖。
圖3是示例根據(jù)本發(fā)明的基于點(diǎn)的協(xié)議的操作。
圖4是示例根據(jù)本發(fā)明的、多個(gè)節(jié)點(diǎn)情況下的基于點(diǎn)的協(xié)議的操作。
具體實(shí)施例方式
結(jié)構(gòu)總覽下一代輸入/輸出(NG I/O)結(jié)構(gòu)是描述基于NG I/O概念且使用一個(gè)NG I/O架構(gòu)的系統(tǒng)的通用術(shù)語。NG I/O架構(gòu)是一組允許兩個(gè)NG I/O裝置通信的電線和交換機(jī)。NG I/O架構(gòu)是被設(shè)計(jì)成將服務(wù)器節(jié)點(diǎn)連接成簇并且連接各種I/O裝置(比如存儲(chǔ)裝置、橋和網(wǎng)絡(luò)接口)的標(biāo)準(zhǔn)接口。一個(gè)或多個(gè)NG I/O“交換機(jī)”與一系列鏈路一起組成一個(gè)“架構(gòu)”。
一條NG I/O鏈路是被用來互連兩個(gè)點(diǎn)的線和在那些線上運(yùn)行的伴隨協(xié)議。一個(gè)I/O通過是基于裝載/存儲(chǔ)的存儲(chǔ)器事務(wù)將I/O裝置連接到一個(gè)計(jì)算機(jī)節(jié)點(diǎn),或?qū)蓚€(gè)計(jì)算機(jī)節(jié)點(diǎn)連接到一起的方法。一個(gè)基于I/O通過的互連是對(duì)處于該互連的任何一端的實(shí)體透明的。NGI/O(物理的)是互連兩個(gè)實(shí)體的線和在鏈路上運(yùn)行的協(xié)議的最小組。例如,將一個(gè)計(jì)算機(jī)節(jié)點(diǎn)連接到一臺(tái)交換機(jī)的線和協(xié)議組成一條鏈路。捆綁的NG I/O是指并行連接兩個(gè)或多個(gè)NG I/O鏈路在一起的能力。這種被捆綁的鏈路可以被用來獲得增加的帶寬或提高一條給定鏈路的整體可靠性。根據(jù)本發(fā)明,一臺(tái)交換機(jī)可以被定義成任何能夠通過一個(gè)或多個(gè)端口接收分組(也被稱作I/O分組)并基于包含在該分組中的目的地址通過另一個(gè)端口重傳那些分組的裝置。在網(wǎng)絡(luò)術(shù)語中,一臺(tái)交換機(jī)典型地操作在開放系統(tǒng)互連(OSI)的數(shù)據(jù)鏈路層。
圖1示例了根據(jù)本發(fā)明的一個(gè)示范實(shí)施方案的整體NG I/O鏈接結(jié)構(gòu)。整體NG I/O鏈接結(jié)構(gòu)可以被示例為包含一臺(tái)或多臺(tái)計(jì)算機(jī)210(例如,服務(wù)器,工作站,個(gè)人計(jì)算機(jī)或類似的機(jī)器),其中包含計(jì)算機(jī)210A和210B。計(jì)算機(jī)210通過包含一個(gè)含有網(wǎng)絡(luò)層212、數(shù)據(jù)鏈路層214和物理層216的分層結(jié)構(gòu)的交換NG I/O架構(gòu)互相通信。一臺(tái)NG I/O交換機(jī)220(例如,包含數(shù)據(jù)鏈路和物理層)與計(jì)算機(jī)210A和210B互連。每臺(tái)計(jì)算機(jī)210能夠利用例如根據(jù)本發(fā)明并將在下面被更詳細(xì)描述的I/O通過技術(shù)226,而通過NG I/O架構(gòu)與一個(gè)或多個(gè)I/O裝置224(224A和224B)通信。每臺(tái)計(jì)算機(jī)210能夠替代地用一個(gè)分布式消息通過技術(shù)(DMP)227與一個(gè)或多個(gè)I/O裝置224(224A和224B)通信。其結(jié)果是,I/O裝置224可以位于每臺(tái)計(jì)算機(jī)210的遠(yuǎn)端。
圖2是根據(jù)本發(fā)明的實(shí)施方案用于I/O通過的NG I/O結(jié)構(gòu)的方塊圖。NG I/O結(jié)構(gòu)包括一臺(tái)計(jì)算機(jī)310和一臺(tái)計(jì)算機(jī)360,各個(gè)都可以是服務(wù)器、工作站、個(gè)人計(jì)算機(jī)(PC)或其它計(jì)算機(jī)。計(jì)算機(jī)310和360作為主機(jī)裝置操作。通過包含一條或多條NG I/O鏈路(例如,NG I/O鏈路330A,330B,330C,330D)的交換NG I/O架構(gòu)328,計(jì)算機(jī)310和360每個(gè)都被互連到I/O系統(tǒng)318A和318B。I/O系統(tǒng)318能夠位于計(jì)算機(jī)310和360的遠(yuǎn)端。
計(jì)算機(jī)310包括一個(gè)CPU/存儲(chǔ)器組合312(包含未表示出的通過一條主機(jī)總線典型互連的一個(gè)CPU和主存儲(chǔ)器),一個(gè)NG I/O主機(jī)橋314,輔助存儲(chǔ)器315(例如一個(gè)硬盤驅(qū)動(dòng)器),和一個(gè)網(wǎng)絡(luò)控制器316。對(duì)于輸出事務(wù)(例如從計(jì)算機(jī)310發(fā)送到I/O系統(tǒng)318的信息),NG I/O主機(jī)橋314操作以便將該主機(jī)事務(wù)打包到一個(gè)NG I/O分組中而在NGI/O架構(gòu)328上傳輸。對(duì)于進(jìn)入事務(wù)(例如,從I/O系統(tǒng)318發(fā)送到計(jì)算機(jī)310的信息),NG I/O主機(jī)橋314操作以便對(duì)在架構(gòu)328上的一個(gè)NG I/O分組中提供的數(shù)據(jù)(例如,PCI事務(wù))解包,然后將被解包的數(shù)據(jù)(例如,PCI事務(wù))轉(zhuǎn)換成一個(gè)主機(jī)事務(wù)。與計(jì)算機(jī)310類似,計(jì)算機(jī)360包括一個(gè)CPU/存儲(chǔ)器組合362,一個(gè)NG I/O主機(jī)橋364,輔助存儲(chǔ)器365,和一個(gè)網(wǎng)絡(luò)控制器366。計(jì)算機(jī)360以與計(jì)算機(jī)310相似的方式操作。
每個(gè)I/O系統(tǒng)318包含一個(gè)NG I/O到PCI的橋320,一個(gè)通過一條PCI總線322連接到該NG I/O到PCI的橋的PCI存儲(chǔ)控制器324,和一個(gè)或多個(gè)I/O裝置326。(如圖2所示,后綴A標(biāo)識(shí)I/O系統(tǒng)318A的部件,而后綴B標(biāo)識(shí)I/O系統(tǒng)318B的相應(yīng)部件)。對(duì)于輸出事務(wù),NG I/O到PCI的橋320操作以便將在NG I/O架構(gòu)328上接收到的NGI/O分組的數(shù)據(jù)解包,然后將被解包的數(shù)據(jù)(例如,一個(gè)主機(jī)事務(wù)或數(shù)據(jù))轉(zhuǎn)換成一個(gè)PCI事務(wù)。類似地,對(duì)于進(jìn)入事務(wù),NG I/O到PCI的橋320操作以便將PCI事務(wù)打包到一個(gè)NG I/O分組中用于在NG I/O架構(gòu)328上傳輸?shù)接?jì)算機(jī)310。
PCI存儲(chǔ)控制器324操作來控制并協(xié)調(diào)PCI總線322和I/O裝置326之間的PCI事務(wù)的發(fā)送和接收。I/O裝置326可以包含,例如,一個(gè)SCSI存儲(chǔ)裝置,或其它I/O裝置。
盡管圖2所示例的本發(fā)明的NG I/O結(jié)構(gòu)的實(shí)施方案包括一個(gè)NGI/O到PCI的橋320,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解其它類型的橋也可以被使用。例如,一般來講,橋320可以被稱作“網(wǎng)絡(luò)到外圍的橋”,用于使網(wǎng)絡(luò)分組轉(zhuǎn)換到與總線322(總線322可以是廣泛的各種類型的I/O或外圍總線,例如一條PCI總線)兼容的格式和從該格式轉(zhuǎn)換回來。類似地,PCI存儲(chǔ)控制器324一般可以被稱作是用于幾種類型的I/O裝置的任意一種的“外圍存儲(chǔ)控制器”因此,本發(fā)明并不局限于PCI橋,而是可以應(yīng)用于廣泛的各種其它的I/O總線,例如工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(ISA)、擴(kuò)展工業(yè)標(biāo)準(zhǔn)結(jié)構(gòu)(EISA)、加速圖形端口(AGP)等。PC只被用作描述本發(fā)明的原理的一個(gè)例子。類似的,NG I/O到主機(jī)的橋364一般被稱作一個(gè)“網(wǎng)絡(luò)到主機(jī)的橋”,因?yàn)樗鼘?NG I/O)網(wǎng)絡(luò)分組轉(zhuǎn)換到一個(gè)主機(jī)格式(主機(jī)事務(wù))和從主機(jī)格式轉(zhuǎn)換回來。
圖2示例了一個(gè)NG I/O架構(gòu)328可以被用來將存儲(chǔ)裝置移出服務(wù)器機(jī)殼并將存儲(chǔ)裝置放置在計(jì)算機(jī)310的遠(yuǎn)程。架構(gòu)328可以包含一個(gè)或多個(gè)計(jì)算機(jī)410和每個(gè)I/O系統(tǒng)418之間的點(diǎn)到點(diǎn)鏈路,或可以包含多個(gè)由一臺(tái)或多臺(tái)交換機(jī)互連的點(diǎn)到點(diǎn)鏈路。這個(gè)結(jié)構(gòu)允許一個(gè)比當(dāng)前可獲得的更分布開的環(huán)境。
本發(fā)明提供了一個(gè)簡(jiǎn)單途徑,用于生成一個(gè)帶有流量控制機(jī)制、不允許由于擁塞而導(dǎo)致數(shù)據(jù)丟失和由于內(nèi)部或外部系統(tǒng)噪聲而導(dǎo)致瞬時(shí)比特錯(cuò)誤的工作網(wǎng)絡(luò)。本發(fā)明使用一種不要求端到端或鏈路到鏈路信用的流量控制方法,本發(fā)明將檢測(cè)一個(gè)被破壞或失序分組的能力以及重試(重發(fā))任何/所有分組以便維持所有數(shù)據(jù)都不被破壞地傳送的能力相組合,而不丟失任何數(shù)據(jù)且保持?jǐn)?shù)據(jù)被發(fā)送的順序。這通過給每個(gè)分組分配一個(gè)序列號(hào)并計(jì)算一個(gè)32比特循環(huán)冗余校驗(yàn)(CRC)并確認(rèn)(ACK)或否定確認(rèn)(NAK)每個(gè)分組來實(shí)現(xiàn)。
本發(fā)明假設(shè)一個(gè)構(gòu)建的、沒有點(diǎn)到點(diǎn)鏈路的網(wǎng)絡(luò)。參考圖3,最小尺寸的網(wǎng)絡(luò)10是通過架構(gòu)15被連接的兩個(gè)端點(diǎn)3和4。為簡(jiǎn)單起見,網(wǎng)絡(luò)3和4中的兩個(gè)端點(diǎn)分別被命名為源和目的地,并將被用于描述本發(fā)明,注意到本發(fā)明支持任何不限尺寸的網(wǎng)絡(luò)。架構(gòu)15包括一臺(tái)交換機(jī)13和鏈路8和9。鏈路8將源連接到交換機(jī)13且鏈路9將目的與交換機(jī)13相連接。如上所述,NG I/O協(xié)議如所給出的,是在點(diǎn)到點(diǎn)間200工作而不是在端到端間100工作。
本發(fā)明假設(shè)在每個(gè)端點(diǎn)有發(fā)送隊(duì)列和接收隊(duì)列(即,在源一側(cè)有一個(gè)發(fā)送隊(duì)列SE1和一個(gè)接收隊(duì)列RE1,且在目的地一側(cè),有一個(gè)發(fā)送隊(duì)列SE2和一個(gè)接收隊(duì)列RE2)以及在架構(gòu)13中在每條鏈路交換連接上有發(fā)送和接收隊(duì)列(即,在鏈路8的鏈路交換連接上有一個(gè)發(fā)送隊(duì)列X1和一個(gè)接收隊(duì)列X2,且在鏈路9的鏈路交換連接上,有一個(gè)發(fā)送隊(duì)列X3和一個(gè)接收器隊(duì)列X4)。發(fā)送隊(duì)列SE1的尺寸不需要匹配于接收隊(duì)列X2的尺寸,發(fā)送隊(duì)列X1的尺寸也不需要匹配于接收器隊(duì)列RE1的尺寸。對(duì)于去往和來自目的地4以及鏈路9的鏈路交換連接的發(fā)送和接收隊(duì)列也是這樣。一般地,發(fā)送隊(duì)列要比接收隊(duì)列大一些(不過,對(duì)于本發(fā)明不需要這樣)。在這個(gè)例子中,源的發(fā)送隊(duì)列RE1的尺寸被定義為S1,源的接收隊(duì)列2的尺寸被定義為R1,目的地的發(fā)送隊(duì)列2的尺寸被定義為S2,且目的地的接收隊(duì)列2的尺寸被定義為R2。此外,發(fā)送和接收隊(duì)列X1-X4的尺寸被分別定義為LX1-LX4。
源3被允許發(fā)送至多S1個(gè)分組到交換機(jī)13的接收隊(duì)列X1。在無擁塞的條件下,在交換機(jī)13接收到的分組將被處理并立刻傳送到目的地4。返回去參考圖3中的例子,交換機(jī)13必須發(fā)送回來一個(gè)確認(rèn)(ACK)以便通過確認(rèn)一個(gè)序列號(hào)去通知源分組已經(jīng)被鏈路8的鏈路交換連接正確接收。分組有一個(gè)唯一的與鏈路相關(guān)的序列號(hào)。在任意給定的鏈路上,分組必須按照被發(fā)送的順序到達(dá)。在任意給定的鏈路上,描述符被按照它們被排隊(duì)的順序重試。注意,作為對(duì)這個(gè)算法的效率提高,鏈路8的鏈路交換通過確認(rèn)已經(jīng)被正確接收的最高序列號(hào)就能夠一次確認(rèn)多個(gè)分組,即如果源3接收到對(duì)于分組#9的確認(rèn),然后接收到對(duì)于分組#14的確認(rèn),則分組#10-#13也被隱含確認(rèn)。鏈路8的鏈路交換發(fā)送一個(gè)分組已經(jīng)被正確發(fā)送的ACK后,交換機(jī)9的鏈路交換就把分組發(fā)送到目的地4。目的地4必須發(fā)送回一個(gè)確認(rèn)給交換機(jī)9的鏈路交換以確認(rèn)數(shù)據(jù)已被正確發(fā)送。一組新的序列號(hào)被分配給從交換機(jī)9的鏈路交換發(fā)送到目的地的分組。
瞬時(shí)錯(cuò)誤是分組被從一個(gè)發(fā)送節(jié)點(diǎn)發(fā)送到一個(gè)接收節(jié)點(diǎn)時(shí)發(fā)生的錯(cuò)誤。在一個(gè)歸因于內(nèi)部或外部系統(tǒng)噪聲的瞬時(shí)錯(cuò)誤事件中,數(shù)據(jù)可能在源3和目的地4之間被破壞。分組的接收器必須計(jì)算接收到的數(shù)據(jù)的CRC,并將它與被添加到該分組尾端的CRC相比較。如果被計(jì)算出的CRC與被接收到的CRC匹配,則該分組被確認(rèn)。如果兩個(gè)CRC不匹配,則該分組必須被否定確認(rèn),再次用序列號(hào)標(biāo)識(shí)。在接收到否定確認(rèn)后,發(fā)送器必須再次重發(fā)指定的分組,以及跟隨在它后面的所有分組。例如,如果發(fā)送器已經(jīng)發(fā)送了多達(dá)序列號(hào)16的分組卻接收到一個(gè)分組#14的NAK,則它必須重發(fā)分組#14,以及后面的分組#15和分組#16。注意ACK和NAK還可以被組合。利用前面一段的例子,分組9被確認(rèn),然后分組#10-#13被假設(shè)沒有數(shù)據(jù)破壞地被按順序接收,隨后的分組#14有被破壞的數(shù)據(jù);則分組#14的NAK意味著分組#10-#13被無錯(cuò)誤地接收,但分組#14被有錯(cuò)誤接收且必須被重發(fā)。
圖4是示例根據(jù)本發(fā)明的一個(gè)實(shí)施方案的NG I/O鏈路的方塊圖。架構(gòu)400在分別被標(biāo)注為401、402和403的節(jié)點(diǎn)A、B和C之間被連接。如圖4所示,鏈路411被放置在節(jié)點(diǎn)A和架構(gòu)400之間,鏈路412被放置在節(jié)點(diǎn)B和架構(gòu)400之間且鏈路413被放置在節(jié)點(diǎn)C和架構(gòu)400之間。每條鏈路是在架構(gòu)400中的兩個(gè)NG I/O連接點(diǎn)之間的雙向通信路徑。如圖4所示,鏈路411的一條單向路徑431被在節(jié)點(diǎn)A的輸出端口422和架構(gòu)400的一個(gè)輸入端口414之間連接且一條單向路徑432被在節(jié)點(diǎn)A的輸入端口426和架構(gòu)400的輸出端口428之間連接,從而提供一條雙向鏈路。
返回去參考圖4,假設(shè)例如,節(jié)點(diǎn)A和C想通過發(fā)送數(shù)據(jù)分組到節(jié)點(diǎn)B去與節(jié)點(diǎn)B通信。根據(jù)本發(fā)明的原理,節(jié)點(diǎn)A可以通過鏈路411轉(zhuǎn)送分組#1-#3到架構(gòu)400。這些分組被分配以一個(gè)指明這些分組被接收點(diǎn)或節(jié)點(diǎn)接收的順序的序列號(hào)。節(jié)點(diǎn)C也想與節(jié)點(diǎn)B通信,它通過鏈路413轉(zhuǎn)送分組#11-#12到架構(gòu)400。序列號(hào)再次被分配給這些分組以保證它們被按照發(fā)送的順序接收。架構(gòu)400包含至少一臺(tái)被用來接收已發(fā)送的分組的交換機(jī)410。交換機(jī)410也分配一個(gè)新的序列號(hào)給它接收到的所有分組。例如,交換機(jī)410分配一個(gè)新的序列號(hào)給分組#1-#3和#11-#13。這些分組的序列號(hào)可以被按照不只一種方法安排,只要它們遵循分組被從發(fā)送器發(fā)送到交換機(jī)410的相同順序。例如,交換機(jī)410可以分別分配新的序列號(hào)101-106給分組#1-#3和#11-#13。另外,新序列號(hào)101-106可以分別被分配給分組#1、#11、#2、#12、#3和#13。其它分配也是可能的只要不偏離本發(fā)明。
根據(jù)本發(fā)明的原理,不再需要對(duì)于發(fā)送分組的源的識(shí)別。這樣,一旦分組被從源發(fā)送到交換機(jī),并被交換機(jī)確認(rèn),就不再需要對(duì)源的識(shí)別。返回去參考前面的例子,被分配以新的序列號(hào)101-106的分組#1-#3和#11-#13,接著被轉(zhuǎn)送到節(jié)點(diǎn)B。在節(jié)點(diǎn)B,這些分組被確認(rèn)或否定確認(rèn)。如果分組被確認(rèn),則成功的數(shù)據(jù)傳輸就被完成?;蛘?,如果NAK被交換機(jī)從節(jié)點(diǎn)B接收到,則交換機(jī)確定哪些分組要被重發(fā)。根據(jù)本發(fā)明的特征,新的序列號(hào)101-106被用于標(biāo)識(shí)分組。這樣,對(duì)于序列號(hào)104的NAK意味著序列號(hào)101-103代表的分組被無錯(cuò)誤接收,但序列號(hào)104-106代表的分組被有錯(cuò)誤接收且必須被重傳。
如果網(wǎng)絡(luò)中發(fā)生了擁塞,則被接收到的分組就不能立即在網(wǎng)絡(luò)中繼續(xù)前進(jìn)。網(wǎng)絡(luò)中的擁塞是通過網(wǎng)絡(luò)的分組發(fā)生擁擠而造成的。擁塞控制和擁塞管理是網(wǎng)絡(luò)可以用來有效處理大業(yè)務(wù)量的兩種機(jī)制。返回去參考圖3,當(dāng)在一個(gè)接收隊(duì)列中本地緩沖器空間被填滿時(shí),額外的分組就將被丟失,例如,當(dāng)隊(duì)列X1填滿時(shí),隨后的分組將被丟棄。不過,假設(shè)重試可以發(fā)生在網(wǎng)絡(luò)的每個(gè)點(diǎn)而不是每端,則被丟棄的分組能相對(duì)簡(jiǎn)單地被恢復(fù)。接收隊(duì)列X1一旦開始將分組移出其接收緩沖器,它就給出了用來接收額外分組的空間。接收隊(duì)列X2將檢查它接收的下一個(gè)分組的序列號(hào)。在源3已經(jīng)發(fā)送了被丟棄的分組的事件中,第一個(gè)被丟棄的分組將被否定確認(rèn)從而從該分組開始重傳。
根據(jù)本發(fā)明,發(fā)送隊(duì)列S1只是不斷發(fā)送分組直到其發(fā)送隊(duì)列已經(jīng)被還未被確認(rèn)的分組充滿為止。在它能重新使用那些緩沖器之前,它必須等待對(duì)于那些分組的確認(rèn)(如果需要的話,它需要能夠重試那些分組)。
本發(fā)明有許多優(yōu)點(diǎn)。例如,本發(fā)明允許被破壞的分組能在網(wǎng)絡(luò)中的每個(gè)點(diǎn)而不只是在網(wǎng)絡(luò)的源和目的地被重試。根據(jù)本發(fā)明,在第一個(gè)節(jié)點(diǎn)(源)發(fā)送到和從一個(gè)中間節(jié)點(diǎn)接收一個(gè)確認(rèn)后,第一個(gè)節(jié)點(diǎn)就不再被依賴去重發(fā)信息,盡管該信息后來在從其它中間節(jié)點(diǎn)到目的地的傳輸路徑中可能被破壞。這樣,本發(fā)明的重試特征簡(jiǎn)化了數(shù)據(jù)傳輸并使得其更有效。由于在傳輸期間發(fā)生了破壞時(shí)第一個(gè)節(jié)點(diǎn)不再被依賴去重發(fā)數(shù)據(jù),所以在第一個(gè)節(jié)點(diǎn)從第一個(gè)中間點(diǎn)接收到一個(gè)確認(rèn)之后它就不用發(fā)送額外數(shù)據(jù)到其它位置或相同的目的地。
此外,本發(fā)明也允許在信元級(jí)檢測(cè)錯(cuò)誤分組。根據(jù)本發(fā)明的原理,分組中的每個(gè)信元被檢查錯(cuò)誤。在檢測(cè)到分組中的第一個(gè)被破壞信元后,一個(gè)錯(cuò)誤指示就被返回給分組的發(fā)送器。這樣,整個(gè)分組在一個(gè)錯(cuò)誤指示被返回之前不需要被檢查。
另外,本發(fā)明實(shí)現(xiàn)了兩個(gè)點(diǎn)之間的流量控制,它比傳統(tǒng)的基于信用的流量控制(當(dāng)所有信用被用盡時(shí),一個(gè)基于信用的方案就停止發(fā)送分組,且傳輸不能被恢復(fù)直到額外的信用被收到為止)有更好的、提高鏈路效率的帶寬。因此,在一個(gè)基于信用的方案中,開始和停止數(shù)據(jù)傳送的時(shí)間依賴于經(jīng)過的鏈路的往返行程時(shí)間。本發(fā)明的最有利之處在于它發(fā)送分組帶有它們都被正確接收的預(yù)期而且不依賴于鏈路的往返行程時(shí)間。
權(quán)利要求
1.一種在網(wǎng)絡(luò)中發(fā)送數(shù)據(jù)的方法,它包含在一個(gè)中間節(jié)點(diǎn)處接收來自源節(jié)點(diǎn)的數(shù)據(jù),該數(shù)據(jù)是在多個(gè)分組中,每個(gè)分組在源節(jié)點(diǎn)處被分配以一個(gè)序列號(hào);給接收到的每個(gè)分組分配另一個(gè)序列號(hào),其中該另一個(gè)序列號(hào)獨(dú)立于在所述源節(jié)點(diǎn)處分配的序列號(hào);將帶有該另一個(gè)序列號(hào)的每個(gè)分組發(fā)送到下一個(gè)傳遞點(diǎn);以及在所述中間點(diǎn)的緩沖器中保留每個(gè)分組的一個(gè)拷貝直至接收到指示每個(gè)分組已經(jīng)在該下一個(gè)傳遞點(diǎn)處成功接收的確認(rèn)為止。
2.根據(jù)權(quán)利要求1的方法,還包含基于接收到指示在下一個(gè)傳遞點(diǎn)處成功接收一個(gè)特定分組的確認(rèn)而從該緩沖器釋放該特定分組;以及從該緩沖器釋放在該特定分組和已接收到指示在下一個(gè)傳遞點(diǎn)處成功接收的確認(rèn)的上一個(gè)分組之間的任何其它分組。
3.根據(jù)權(quán)利要求1的方法,還包含基于接收到指示一個(gè)特定分組在于下一個(gè)傳遞點(diǎn)處接收時(shí)包括至少一個(gè)錯(cuò)誤的確認(rèn),而重傳該特定分組和所有隨后的分組。
4.根據(jù)權(quán)利要求3的方法,其中指示該特定分組包括至少一個(gè)錯(cuò)誤的確認(rèn)也是一個(gè)指示在該特定分組之前接收的所有先前分組都被成功接收的確認(rèn)。
5.根據(jù)權(quán)利要求4的方法,還包含從該緩沖器釋放在該特定分組之前接收到的所有先前的分組。
6.根據(jù)權(quán)利要求1的方法,其中指示在該下一個(gè)傳遞點(diǎn)處成功接收到一個(gè)特定分組的確認(rèn)也是一個(gè)指示成功接收到在該特定分組和一個(gè)先前發(fā)送的分組之間的所有分組的確認(rèn),該中間點(diǎn)已接收到對(duì)于該先前發(fā)送的分組的、在該下一個(gè)傳遞點(diǎn)處成功接收的確認(rèn)。
7.一種在一個(gè)結(jié)構(gòu)的兩個(gè)鏈路之間發(fā)送數(shù)據(jù)的設(shè)備,該設(shè)備包括被布置在一個(gè)第一鏈路和一個(gè)第二鏈路之間的交換機(jī),該交換機(jī)在第一鏈路上接收來自一個(gè)源節(jié)點(diǎn)的數(shù)據(jù),該數(shù)據(jù)是在多個(gè)分組中,每個(gè)分組在源節(jié)點(diǎn)處被分配一個(gè)序列號(hào),該交換機(jī)給每個(gè)接收到的分組分配另一個(gè)序列號(hào),該另一個(gè)序列號(hào)獨(dú)立于在所述源節(jié)點(diǎn)處分配的序列號(hào);在該第二鏈路上將每個(gè)接收到的分組發(fā)送給下一個(gè)傳遞點(diǎn);以及在緩沖器中存儲(chǔ)每個(gè)所發(fā)送的分組直至接收到指示每個(gè)分組已經(jīng)在下一個(gè)傳遞點(diǎn)處成功接收的確認(rèn)為止。
8.根據(jù)權(quán)利要求7的設(shè)備,其中該交換機(jī)基于接收到指示在下一個(gè)傳遞點(diǎn)處成功接收一個(gè)特定分組的確認(rèn)而釋放該緩沖器中的該特定的存儲(chǔ)的分組,該確認(rèn)也指示緩沖器中在該序列中先于該特定分組的所有分組同樣在該下一個(gè)傳遞點(diǎn)被成功接收。
9.根據(jù)權(quán)利要求7的設(shè)備,其中該交換機(jī)基于接收到指示在下一個(gè)傳遞點(diǎn)處接收到一個(gè)特定分組時(shí)與該特定分組相關(guān)聯(lián)的至少一個(gè)錯(cuò)誤的確認(rèn),而發(fā)送該特定分組和在序列中在該特定分組之后的所有分組。
10.根據(jù)權(quán)利要求9的設(shè)備,其中該下一個(gè)傳遞點(diǎn)丟棄所有在序列中在該特定分組之后的接收到的分組,直至從該接收機(jī)成功接收到該特定分組的重傳版本為止。
全文摘要
從源節(jié)點(diǎn)傳送數(shù)據(jù)到目的節(jié)點(diǎn)的方法,包括中間點(diǎn)和分組序列號(hào)。該分組的拷貝被存儲(chǔ)在源節(jié)點(diǎn)的緩沖器中直到接收它已被中間點(diǎn)成功接收的確認(rèn)。該中間點(diǎn)分配中間點(diǎn)序列號(hào)給該分組且該分組的拷貝被保留在緩沖器中直到從下一傳遞點(diǎn)接收到確認(rèn)。一旦緩沖器中的分組被成功接收,該分組就被釋放。接收到錯(cuò)誤指示后,要重傳每個(gè)分組。在接收端,所有被接收的、跟隨在與錯(cuò)誤指示相關(guān)的分組后的分組都被丟棄,直到成功地接收到該分組被重傳的版本。單一的否定確認(rèn)指明與該否定確認(rèn)相關(guān)的分組包含至少一個(gè)錯(cuò)誤,且同時(shí)指明在與該否定確認(rèn)相關(guān)的分組前被接收的所有先前分組都被正確接收。在傳送前,獨(dú)立的鏈路序列號(hào)被分配給每個(gè)分組。
文檔編號(hào)H04L12/24GK1764099SQ20051011804
公開日2006年4月26日 申請(qǐng)日期1999年7月30日 優(yōu)先權(quán)日1998年8月27日
發(fā)明者K·德羅塔, D·S·敦寧, D·F·卡梅隆 申請(qǐng)人:英特爾公司