專利名稱:用于檢測(cè)通信設(shè)備中模塊之間發(fā)送的消息丟失的系統(tǒng)和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及一種用于跟蹤通信設(shè)備中兩個(gè)模塊之間發(fā)送的消息的系統(tǒng)和方法。具體地說,本發(fā)明涉及一種檢測(cè)在什么時(shí)候目的地模塊沒有接收到發(fā)送的消息的方法。
背景技術(shù):
在通信設(shè)備中,設(shè)備的功能典型地體現(xiàn)在幾個(gè)模塊中。例如,在通信交換機(jī)中,模塊包括線路卡、交換結(jié)構(gòu)和控制系統(tǒng)。而每個(gè)模塊自身可以又包括若干子模塊。子模塊結(jié)構(gòu)可一直重復(fù)進(jìn)行下去。隨著集成電路的電路密度的增加,一般將該電路開發(fā)為互聯(lián)模塊系列。信號(hào)在模塊之間通過模塊之間的連接進(jìn)行通信。由于集成電路的密度和工作頻率的增加,連接上承載的信號(hào)易于受到錯(cuò)誤影響。
對(duì)通信設(shè)備的模塊來說,一般用消息傳送系統(tǒng)。其中,每一模塊可產(chǎn)生具有管理和負(fù)載信息的消息。該管理信息可包括消息想要發(fā)送的目的地、消息的大小和錯(cuò)誤管理信息。該消息在從源模塊到目的地模塊之間的通信鏈路上發(fā)送。
通常,必須以某種順序來保持由通信設(shè)備處理的消息和數(shù)據(jù)分組。一種現(xiàn)有的跟蹤數(shù)據(jù)分組的方法是將序列號(hào)與每一分組相關(guān)。當(dāng)通信設(shè)備接收到分組時(shí),其模塊內(nèi)部處理該分組,最后該設(shè)備將該分組發(fā)送到另一個(gè)通信設(shè)備。為便于由通信設(shè)備進(jìn)行分組的內(nèi)部處理,通常將單獨(dú)的消息與每一分組相關(guān)。該消息在模塊間發(fā)送,同時(shí)由模塊進(jìn)行的相關(guān)分組的處理。應(yīng)當(dāng)理解,由于該消息包含關(guān)于其分組的管理消息,處理消息的模塊不必與處理分組的模塊相同。比如說,在處理分組時(shí),一個(gè)模塊可負(fù)責(zé)確定分組的行為(如排隊(duì)、丟棄、修改等),另一個(gè)模塊可執(zhí)行該行為。
當(dāng)發(fā)送消息時(shí),發(fā)送消息的模塊需要知道目的地模塊是否接收到了發(fā)送的消息。通信鏈路失敗或消息自身錯(cuò)誤都可引起消息丟失。解決辦法是,現(xiàn)有技術(shù)的消息傳送系統(tǒng)通過讓接收消息的模塊生成并發(fā)送確認(rèn)(ACK)消息回發(fā)送模塊來跟蹤消息。當(dāng)發(fā)送模塊最終接收到ACK消息時(shí),就知道接收到了發(fā)送的消息。
該發(fā)送/ACK消息的方案具有一些缺點(diǎn)。例如,如果當(dāng)由發(fā)送模塊發(fā)送初始消息時(shí)產(chǎn)生失敗,想要發(fā)往的接收模塊將接收不到該消息,而將不能生成應(yīng)答ACK消息。在這種情況下,發(fā)送模塊可能就要無限期地等待ACK消息。如果在當(dāng)由接收模塊發(fā)送ACK消息時(shí)產(chǎn)生失敗,發(fā)起的發(fā)送模塊將接收不到ACK消息,就不知道初始信號(hào)實(shí)際上已經(jīng)成功地由接收模塊接收了。這些失敗不是等效的,因?yàn)榻邮漳K是處于不同的狀態(tài),要么接收到了初始消息,要么沒接收到初始消息。在很多情形下,消息的丟失可以引起系統(tǒng)操作的持久惡化。假定發(fā)送/ACK消息傳送方案對(duì)這些失敗機(jī)理不加區(qū)分,唯一能采取的正確的行動(dòng)可能就是將該系統(tǒng)復(fù)位。顯然,這將使系統(tǒng)操作中斷。
因此,就需要一種用于在兩個(gè)模塊之間提供改善的消息傳送方案的系統(tǒng)和方法,在該方案中,可對(duì)模塊間的消息發(fā)送的個(gè)別失敗進(jìn)行檢測(cè)和調(diào)整。
發(fā)明內(nèi)容
在第一方面,提供了一種跟蹤在通信設(shè)備中從發(fā)送模塊發(fā)送到接收模塊的消息發(fā)送的方法。該方法包括步驟(a)在接收模塊接收消息。該方法還包括步驟(b)估計(jì)接收的消息以確定如果有由發(fā)送模塊發(fā)送的先前消息的話,接收模塊是否以相對(duì)于該先前消息的適當(dāng)順序接收到了該接收的消息。該方法還包括步驟(c)生成從接收模塊到發(fā)送模塊的確認(rèn)消息,該確認(rèn)消息包括指示符,指示符的值指示如果有在接收的消息之前剛剛從發(fā)送模塊發(fā)送到接收模塊的先前消息的話,接收模塊是否接收到該先前消息。
如果步驟(b)確定沒有以適當(dāng)?shù)捻樞蚪邮盏皆摻邮盏南?,該指示符的值可指示接收模塊未接收到該先前消息。
該方法還可包括步驟(d)發(fā)送確認(rèn)消息到發(fā)送模塊。
該消息和該確認(rèn)消息可與從發(fā)送模塊發(fā)送到接收模塊的分組相關(guān)。
每一個(gè)確認(rèn)消息可包括第一字段和第二字段,第一字段包括指示對(duì)接收的消息的確認(rèn)響應(yīng)的值,第二字段包括下列之一(i)指示符的值;(ii)指示對(duì)在接收的消息之前剛剛從發(fā)送模塊發(fā)送到接收模塊的先前消息的確認(rèn)響應(yīng)的值。
對(duì)先前消息的確認(rèn)響應(yīng)和對(duì)接收的消息的確認(rèn)響應(yīng)可分別指示接收模塊是否接受了該先前消息和該接收的消息。
該方法還可包括步驟(e)在發(fā)送模塊接收由接收模塊發(fā)送的確認(rèn)消息,以及(f)確定如果有由接收模塊發(fā)送的先前確認(rèn)消息的話,發(fā)送模塊是否以相對(duì)于該先前確認(rèn)消息的適當(dāng)順序接收到了接收的確認(rèn)消息。
每個(gè)確認(rèn)消息還可包括序號(hào)。如果步驟(b)確定沒有以適當(dāng)?shù)捻樞蚪邮盏皆摻邮盏南?,步驟(c)可設(shè)置該確認(rèn)消息的序號(hào)到一個(gè)值來指示這一點(diǎn)。步驟(f)可根據(jù)接收的確認(rèn)消息的序號(hào)的值來確定發(fā)送模塊是否以相對(duì)于該先前確認(rèn)消息的適當(dāng)順序接收到了該接收的確認(rèn)消息。
該方法還可包括步驟(g),如果發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮盏浇邮盏拇_認(rèn)消息,估計(jì)第二字段的值以確定接收模塊是否接收到在接收的消息之前剛剛從發(fā)送模塊發(fā)送到接收模塊的先前消息。
該方法還可包括步驟(h1),如果發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮盏浇邮盏拇_認(rèn)消息,并且如果第二字段的值指示接收模塊沒有接收到從發(fā)送模塊發(fā)送的先前消息,則將發(fā)送模塊的內(nèi)部狀態(tài)與接收模塊同步,以反映出先前消息的丟失。
該方法還可包括步驟(h2),如果發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮盏浇邮盏拇_認(rèn)消息,并且如果第二字段的值指示接收模塊接收到了從發(fā)送模塊發(fā)送的先前消息,則處理對(duì)第二字段中包含的先前消息的確認(rèn)響應(yīng)。
發(fā)送模塊可分配與發(fā)送到接收模塊的消息相關(guān)的存儲(chǔ)器。該方法還可包括步驟(i)響應(yīng)第一字段的值和第二字段的值重新分配存儲(chǔ)器。
在第二方面,提供了一種跟蹤在通信設(shè)備中從接收模塊發(fā)送到發(fā)送模塊的確認(rèn)消息的發(fā)送的方法。每個(gè)確認(rèn)消息與從發(fā)送模塊發(fā)送到接收模塊的消息相關(guān)。該方法包括步驟(a)在發(fā)送模塊接收由接收模塊發(fā)送的確認(rèn)消息,該接收的確認(rèn)消息包括指示符,指示符的值指示如果有在與接收的確認(rèn)消息相關(guān)的消息之前剛剛從發(fā)送模塊發(fā)送到接收模塊的先前消息的話,接收模塊是否接收到該先前消息。該方法還包括步驟(b)確定如果有由接收模塊發(fā)送的先前確認(rèn)消息的話,發(fā)送模塊是否以相對(duì)于該先前確認(rèn)消息的適當(dāng)順序接收到該接收的確認(rèn)消息。
在第三方面,提供了一種接收模塊,用于跟蹤在通信設(shè)備中從發(fā)送模塊發(fā)送到接收模塊的消息的發(fā)送。接收模塊包括用于接收消息的第一輸入,以及一個(gè)序列估計(jì)單元,用于估計(jì)接收的消息以確定如果有由發(fā)送模塊發(fā)送的較早消息的話,是否以相對(duì)于該較早消息的適當(dāng)順序接收到了該接收的消息。該接收模塊還包括用于生成用于從接收模塊發(fā)送到發(fā)送模塊的確認(rèn)消息的確認(rèn)單元,該確認(rèn)消息包括指示符,指示符的值指示如果有在接收的消息之前剛剛從發(fā)送模塊發(fā)送到接收模塊的先前消息的話,接收模塊是否接收到該先前消息。
在第四方面,提供了一種發(fā)送模塊,用于跟蹤在通信設(shè)備中從接收模塊發(fā)送到發(fā)送模塊的確認(rèn)消息的發(fā)送。發(fā)送模塊包括用于在發(fā)送模塊接收由接收模塊發(fā)送的確認(rèn)消息的第一輸入,該接收的確認(rèn)消息包括指示符,指示符的值指示如果有在與接收的確認(rèn)消息相關(guān)的消息之前剛剛從發(fā)送模塊發(fā)送到接收模塊的先前消息的話,接收模塊是否接收到該先前消息。該發(fā)送模塊還包括序列估計(jì)單元,用于確定如果有由接收模塊發(fā)送的先前確認(rèn)消息的話,發(fā)送模塊是否以相對(duì)于該先前確認(rèn)消息的適當(dāng)順序接收到該接收的確認(rèn)消息。
在其他方面,提供了上述方面的各種組合和子集。
本發(fā)明的以上及其他方面將從其特定實(shí)施例的下列描述和僅通過舉例的方式來說明本發(fā)明的原理的附圖中看得更加清楚。在附圖中,相同元件特征標(biāo)有相同標(biāo)號(hào)(其中,單個(gè)元件具有唯一的標(biāo)號(hào))。
圖1A是現(xiàn)有技術(shù)通信設(shè)備的兩個(gè)模塊的框圖;圖1B是由圖1A的設(shè)備生成并發(fā)送的消息及其字段的框圖;
圖1C是由圖1A的設(shè)備生成并發(fā)送的確認(rèn)(ACK)消息及其字段的框圖;圖2是表示由圖1A的設(shè)備發(fā)送一串消息和相關(guān)ACK消息的進(jìn)程的時(shí)序框圖;圖3A是一個(gè)實(shí)施例的通信設(shè)備以及表示發(fā)送由該設(shè)備生成并處理的一串消息和相關(guān)ACK消息的進(jìn)程的時(shí)序的框圖;圖3B是由圖3A的設(shè)備生成并發(fā)送的消息及其字段的框圖;圖3C是由圖3A的設(shè)備生成并發(fā)送的ACK消息及其字段的框圖;圖4是表示發(fā)送由圖3A的設(shè)備生成并處理的一串消息和相關(guān)ACK消息的另一個(gè)進(jìn)程的時(shí)序框圖;圖5是表示發(fā)送由圖3A的設(shè)備生成并處理的一串消息和相關(guān)ACK消息的再一個(gè)進(jìn)程的時(shí)序框圖;圖6A是表示發(fā)送由該設(shè)備的另一個(gè)實(shí)施例生成并處理的一串消息和相關(guān)ACK消息的進(jìn)程的時(shí)序框圖;圖6B是由圖6A的設(shè)備生成并發(fā)送的消息及其字段的框圖;圖6C是由圖6A的設(shè)備生成并發(fā)送的ACK消息及其字段的框圖。
具體實(shí)施例方式
通過舉出本發(fā)明原理的特定實(shí)施例的一個(gè)或若干個(gè)實(shí)例的方式,給出了以下描述和其中描述的實(shí)施例。這些實(shí)例用于解釋,并非用于限制本發(fā)明的原理。在以下的描述中,相同的部分在整個(gè)說明書和附圖中用相同的相同的標(biāo)號(hào)表示。
現(xiàn)有技術(shù)消息傳送方案為說明實(shí)施例的特征,首先要給出現(xiàn)有技術(shù)消息傳送方案的特征及其問題。
參照?qǐng)D1A,圖中示出了通信交換機(jī)中的現(xiàn)有技術(shù)通信設(shè)備100。通信交換機(jī)及其相應(yīng)通信設(shè)備100處理數(shù)據(jù)業(yè)務(wù)的發(fā)送。已知在處理數(shù)據(jù)業(yè)務(wù)時(shí),交換機(jī)可以將數(shù)據(jù)業(yè)務(wù)分成一串分段或分組。到交換機(jī)的上行設(shè)備也可能已經(jīng)完成了分段。每一分組是相對(duì)于數(shù)據(jù)業(yè)務(wù)的其他分組的有序元素。每個(gè)分組被單獨(dú)處理并由通信設(shè)備發(fā)送。為有助于跟蹤分組的處理和發(fā)送,通信設(shè)備利用一串離散的消息來跟蹤每個(gè)分組。設(shè)備100具有在處理分組期間跟蹤分組及其消息的模塊102和模塊104。模塊102和104分別具有內(nèi)部存儲(chǔ)器108和110,以存儲(chǔ)與分組和消息相關(guān)的信息。模塊102和104在通信鏈路106上互相發(fā)送其消息。
當(dāng)分組120到達(dá)模塊102,模塊102從內(nèi)部存儲(chǔ)器108中分配存儲(chǔ)器122以存儲(chǔ)分組120。在處理分組120的發(fā)送時(shí),由模塊102和104生成消息130,該消息130在通信鏈路106上互相發(fā)送。模塊102在通信鏈路106上發(fā)送消息130到模塊104,如箭頭132所示,以處理與分組120相關(guān)的信息。當(dāng)模塊104接收到消息130時(shí),模塊104通過在通信鏈路106上發(fā)送ACK134到模塊102進(jìn)行響應(yīng),如箭頭136所示。
參見圖1B,在一個(gè)現(xiàn)有技術(shù)實(shí)現(xiàn)方案中,消息130包括4個(gè)字節(jié),并分段成一串字段,包括包含消息識(shí)別符162的消息識(shí)別符字段162’(4比特);包含序號(hào)164的序號(hào)字段164’(8比特);包含消息負(fù)載166的消息負(fù)載字段166’(20比特)。參見圖1C,在一個(gè)現(xiàn)有技術(shù)實(shí)現(xiàn)方案中,ACK134包括2個(gè)字節(jié),并且也分段成一串字段,包括包含消息識(shí)別符172的消息識(shí)別符字段172’(4比特);包含序號(hào)174的序號(hào)字段174’(8比特);包含應(yīng)答176的應(yīng)答字段176’(1比特);以及填充字段178’(3比特)。在本例中,應(yīng)答字段176’包含對(duì)其相應(yīng)消息130的響應(yīng),該響應(yīng)指示了應(yīng)當(dāng)接受還是丟棄相應(yīng)分組120。位于字段164’和174’的序號(hào)使消息可以排序。
參見圖2,圖中給出了在通信鏈路106上在模塊102和104之間交換消息130和ACK134的三種情形。時(shí)間軸200劃分在模塊102和104之間發(fā)送消息130和ACK134的時(shí)間。
在第一種情形,一串消息130和ACK134在模塊102和104之間成功地交換。其中,在時(shí)間202,分組120(1)到達(dá)模塊102,觸發(fā)模塊102生成并發(fā)送消息130(1)到模塊104。模塊102在通信鏈路106上發(fā)送消息130(1)到模塊104,如箭頭232(1)所示。在時(shí)間208,模塊104接收消息130(1),并響應(yīng)接收消息130(1)生成ACK134(1)。相應(yīng)地,模塊104發(fā)送ACK134(1)到模塊102,如箭頭236(1)所示,ACK134(1)在時(shí)間214到達(dá)模塊102。通過接收ACK134(1),模塊102可確定模塊104已經(jīng)接收到了消息130(1)。
在第二種情形下,在消息130和ACK134的交換中引入了失敗點(diǎn)。其中在時(shí)間206,分組120(2)到達(dá)模塊102,觸發(fā)生成并在通信鏈路106上發(fā)送消息130(2)到模塊104,如箭頭232(2)所示。在時(shí)間212,模塊104接收消息130(2)并生成ACK134(2),發(fā)送ACK134(2)到模塊102,如箭頭236(2)所示。但在通信鏈路106中的故障240使在模塊102不能接收到ACK134(2)。因此,在一串消息130和相應(yīng)串的處理過的分組120之間產(chǎn)生了同步的失聯(lián)。
在第三種情形下,在從模塊102到模塊104的消息傳送過程中引入了失敗點(diǎn)。在時(shí)間210,分組120(3)到達(dá)模塊102,觸發(fā)生成并發(fā)送消息130(3)到模塊104,如箭頭232(3)所示。但是故障242使消息130(3)不能到達(dá)模塊104。因此,模塊104不能生成并發(fā)送對(duì)消息130(3)的ACK134。
在第二和第三種情形下,設(shè)備100必須響應(yīng)故障條件以重新獲得存儲(chǔ)器并將模塊102和104中包含的信息重新同步。如果不這樣的話,就容易損害或徹底失去模塊之間的協(xié)調(diào),且已經(jīng)使用過的存儲(chǔ)器不可能重新分配。當(dāng)相同的故障條件再發(fā)生時(shí),另外的存儲(chǔ)器就可能不能用了,最后導(dǎo)致通信設(shè)備不可用。
現(xiàn)有技術(shù)的系統(tǒng)及實(shí)施例的消息,也包括ACK消息可采用包括奇偶性校驗(yàn)、循環(huán)冗余校驗(yàn)(CRC)及其他已知編碼方案的各種錯(cuò)誤檢測(cè)方案(或錯(cuò)誤檢測(cè)及糾正方案)。提供錯(cuò)誤檢測(cè)及糾正的編碼方案不是在整個(gè)帶寬上都有效的。錯(cuò)誤檢測(cè)方案能非常有效地阻止錯(cuò)誤信息的通過,但是,響應(yīng)一般僅限于丟棄錯(cuò)誤消息。
實(shí)施例的基本特征簡(jiǎn)短地說,實(shí)施例的通信設(shè)備具有第一模塊和第二模塊,在第一和第二模塊之間的通信鏈路上進(jìn)行通信。在典型消息傳送系統(tǒng)中,第一模塊發(fā)送消息到第二模塊。第二模塊以確認(rèn)消息(“ACK消息”,或簡(jiǎn)寫為“ACK”)來對(duì)該消息進(jìn)行應(yīng)答。ACK表示第二模塊已經(jīng)接收到了當(dāng)前消息。但是,ACK還包含第二模塊是否已接收到先前消息,具體地說,即在當(dāng)前消息之前發(fā)送的最后一個(gè)消息的指示。消息具有序號(hào)以將自身彼此區(qū)分并識(shí)別其彼此的順序。第二模塊還跟蹤接收的消息的序號(hào),并能確定是否接收到先前消息。實(shí)施例的消息傳送方案使得參照先前接收的消息和預(yù)期的消息跟蹤當(dāng)前消息成為可能。
實(shí)施例的消息傳送方案和通信設(shè)備參見圖3A,實(shí)施例的通信設(shè)備300與設(shè)備100的相同之處在于其具有通過通信鏈路306連接的第一模塊302和第二模塊304。與本發(fā)明相關(guān)的區(qū)別在于用于在模塊間發(fā)送的通信的消息傳送方案。具體地說,模塊302具有內(nèi)部存儲(chǔ)器308,模塊304具有內(nèi)部存儲(chǔ)器310。設(shè)備300中的模塊302和304互相發(fā)送消息330,以處理到達(dá)設(shè)備300的分組(未示出)。當(dāng)模塊304接收到消息330,它發(fā)送ACK334到模塊302。模塊302和304可以是ASIC,其處理由通信交換機(jī)發(fā)送的分組的各方面,其具有適當(dāng)?shù)目刂七壿嬕詫?shí)現(xiàn)在此描述的消息處理?;蛘撸⑻幚砜梢砸赃\(yùn)行在模塊上的適當(dāng)軟件/固件模塊來實(shí)現(xiàn)。在該實(shí)施例中,通信鏈路306優(yōu)選地是光信令鏈路??赡苄枰D(zhuǎn)換消息330和ACK334的內(nèi)容以按照通信鏈路306的傳輸協(xié)議來進(jìn)行傳輸。在不同的實(shí)施例中,模塊302和304可位于同一功能元件上,例如同一線路卡,或者其可位于不同的功能元件上,例如模塊302可位于線路卡上,而模塊304可位于控制系統(tǒng)中。在特定實(shí)現(xiàn)方案中,被認(rèn)為是一個(gè)整體的系統(tǒng)是線路卡的一部分,而兩個(gè)模塊是位于該線路卡上的ASIC。
在設(shè)備300中,每一消息330與序號(hào)相關(guān),該序號(hào)作為歷史識(shí)別符,指示了其在為有序分組的相應(yīng)組而生成的消息330組中的順序位置。通過跟蹤序號(hào),當(dāng)模塊接收到消息330時(shí),就能提取該包含的序號(hào)并確定剛剛接收的消息是否遵循在其之前剛剛接收的消息330的次序。該模塊還能確定緊接著其后所期望接收的是什么樣的消息330??梢砸孕蛱?hào)在(與消息/ACK信號(hào)序列的一次發(fā)送和接收的傳輸時(shí)間可比的)一段時(shí)間內(nèi)不重復(fù)的任意方式來進(jìn)行序號(hào)的生成,并可以在兩個(gè)位置上以相同的值獨(dú)立地生成序列。(在最大值時(shí)回卷的)計(jì)數(shù)器是滿足這些條件的一個(gè)簡(jiǎn)單的實(shí)例,其還具有從任意給定值容易確定前面的或后面的值的優(yōu)點(diǎn)。從這種意義上,如果模塊304存儲(chǔ)其接收的最后一個(gè)消息330的序號(hào),其就能夠確定其接收的下一個(gè)消息330是否按序。如果不是,它能夠確定沒接收到哪個(gè)(些)消息330。同樣地,如果模塊302存儲(chǔ)其接收的最后一個(gè)ACK334的序號(hào),它就能確定其接收的下一個(gè)ACK334是否按序到達(dá)。如果不是,它能夠確定沒有接收到哪個(gè)(些)ACK334。
參見圖3B,(由模塊302生成的)消息330包括至少以下字段包含消息識(shí)別符362的消息識(shí)別符字段362’(4比特);包含序號(hào)364的序號(hào)字段364’(8比特);包含消息負(fù)載366的消息負(fù)載字段366’(20比特)。對(duì)于接收的消息330,模塊304能夠用序號(hào)364來確定在剛剛接收的消息330之后應(yīng)當(dāng)接收什么樣的消息330,并能夠確定在剛剛接收的消息330和它之前接收的消息330之間是否存在消息間斷,即丟失的消息330。在模塊302,由序列估計(jì)單元344來估計(jì)序列中的間斷。
參見圖3C,在模塊304由確認(rèn)單元348生成ACK334以發(fā)送到模塊302,該ACK334是對(duì)接收的消息330的響應(yīng)。ACK334具有至少下列字段包含消息識(shí)別符372的消息識(shí)別符字段372’(4比特);包含序號(hào)374的序號(hào)字段374’(8比特);包含第一應(yīng)答376的第一應(yīng)答字段376’(1比特),該第一應(yīng)答是對(duì)其相應(yīng)消息的確認(rèn)響應(yīng)(接受或丟棄);包含第二應(yīng)答378的第二應(yīng)答字段378’(2比特);以及填充字段380’(1比特)。應(yīng)當(dāng)理解,在該實(shí)施例中,ACK334的大小與ACK134(圖1C)一樣。因此,對(duì)該實(shí)施例的信令方案來說,有低的帶寬開銷。此外,在許多情況下,也沒有增加信令帶寬的需求。
第二應(yīng)答378提供了在緊前一個(gè)ACK334中發(fā)送的第一應(yīng)答376的確認(rèn)響應(yīng)的指示。因此,如果沒有發(fā)生消息間斷,模塊304存儲(chǔ)緊前一個(gè)ACK334的第一響應(yīng)376以填充下一個(gè)ACK334的第二應(yīng)答378。模塊302也存儲(chǔ)先前接收的ACK334的序號(hào)374并識(shí)別什么時(shí)候接收的ACK334的序列中的間斷發(fā)生。在模塊302由序列估計(jì)單元344估計(jì)序列中的間斷。序列中的間斷促使模塊302從第二應(yīng)答378中讀出信息。從包含的信息中,模塊302接收來自于丟失的ACK334的信息。
圖3A表示了在模塊302和304之間交換消息330和ACK334的兩種情形。時(shí)間軸312劃分在模塊302和304之間發(fā)送消息330和ACK334的時(shí)間。
在第一種情形下,在模塊302和304之間標(biāo)準(zhǔn)的交換一系列消息330和ACK334。在時(shí)間314,模塊302生成并在通信鏈路306上發(fā)送消息330(1)到模塊304,如箭頭332(1)所示。消息330(1)填充有序號(hào)364(1)和包含用于模塊304的處理指令的消息負(fù)載366(1)。然后,消息330(1)到達(dá)模塊304。此后,在時(shí)間318,模塊304的確認(rèn)單元348生成ACK334(1)并以序號(hào)374(1)、第一應(yīng)答376(1)和第二應(yīng)答378(1)進(jìn)行填充。序號(hào)374(1)包含作為與消息330(1)的序號(hào)364(1)相關(guān)的一個(gè)數(shù)的代碼。在該實(shí)施例中,將ACK334的序號(hào)374設(shè)置到其消息330的序號(hào)364。第一應(yīng)答376(1)包含對(duì)消息330(1)的確認(rèn)響應(yīng)(標(biāo)為“A1”),而第二應(yīng)答378(1)包含對(duì)先前消息,消息330(0)(未示出)的確認(rèn)響應(yīng)(標(biāo)為“A0”)。模塊304存儲(chǔ)序號(hào)364(1)和第一應(yīng)答376(1)供將來使用。模塊304將ACK334(1)發(fā)送到模塊302,如箭頭336(1)所示,ACK334(1)在時(shí)間322到達(dá)。通過跟蹤順序發(fā)送的分組的序號(hào)374,當(dāng)模塊302接收到ACK334(1)時(shí),序列估計(jì)單元344能夠從中提取序號(hào)374(1)并將其與先前接收的序號(hào)374進(jìn)行比較。這是通過將存儲(chǔ)的序號(hào)374與接收的序號(hào)374(1)進(jìn)行比較來實(shí)現(xiàn)的。序列估計(jì)單元344可或者從存儲(chǔ)的序號(hào)374往上數(shù),或者從下一個(gè)接收的序號(hào)374往下數(shù),以確定是否存在消息間斷。序列中的間斷指示出在上兩個(gè)序號(hào)374,即上兩個(gè)接收的ACK334之間沒有接收到ACK334。序列估計(jì)單元344確定出不存在消息間斷。
在第二種情形下,由于在時(shí)間322剛過時(shí)在通信鏈路306上出現(xiàn)故障340,ACK334在到模塊302的途中丟失。其中,在時(shí)間316,模塊302在通信鏈路306上發(fā)送消息330(2)到模塊304,如箭頭332(2)所示。然后,消息330(2)到達(dá)模塊304。在時(shí)間320,確認(rèn)單元348生成ACK334(2),ACK334(2)包括序號(hào)374(2)、第一應(yīng)答376(2)和第二應(yīng)答378(2)。模塊304在通信鏈路306上發(fā)送ACK334(2),如箭頭336(2)所示,但其由于故障340沒有到達(dá)模塊302。此后,在時(shí)間320,模塊302在通信鏈路306上發(fā)送消息330(3)到模塊304,如箭頭332(3)所示。然后,消息330(3)到達(dá)模塊304。在時(shí)間324,確認(rèn)單元348生成ACK334(3),并將其填充上序號(hào)374(3)、第一應(yīng)答376(3)和第二應(yīng)答378(3)。第二應(yīng)答378(3)包含提供給沒有到達(dá)模塊302的消息330(2)的確認(rèn)響應(yīng)。模塊304發(fā)送ACK334(3)到模塊302,如箭頭336(3)所示。ACK334(3)在時(shí)間328到達(dá)模塊302。序列估計(jì)單元344再將接收的序號(hào)374(3)與存儲(chǔ)的序號(hào)374(1)進(jìn)行比較。序列估計(jì)單元344或者通過從存儲(chǔ)的序號(hào)374(1)往上數(shù),或者通過從接收的序號(hào)374(3)往下數(shù)來實(shí)現(xiàn)這一點(diǎn)。由于當(dāng)前響應(yīng)的序號(hào)374(3)是“3”,如圖所示,序列估計(jì)單元344確定該序號(hào)是否具有對(duì)接收的ACK334的所期望的下一個(gè)值。由于對(duì)標(biāo)號(hào)“3”所期望的是“2”,而其未被提供,序列估計(jì)單元344認(rèn)識(shí)到這一偏差,注意到發(fā)生了錯(cuò)誤。序列估計(jì)單元344將該錯(cuò)誤指示到模塊302,然后模塊302從第二應(yīng)答378(3)中讀出丟失的信息。此時(shí),提供先前丟失的對(duì)消息330(2)的確認(rèn)響應(yīng)給模塊302。
接下來參見圖4,模塊304跟蹤序號(hào)364來確定是否接收到了先前發(fā)送的消息330。模塊304通過存儲(chǔ)來自于先前消息330的序號(hào)364來確定是否存在消息間斷。在接收到具有序號(hào)364的消息330后,模塊304將序號(hào)364與存儲(chǔ)的序號(hào)364進(jìn)行比較。模塊304或者從存儲(chǔ)的序號(hào)364往上數(shù),或者從接收的序號(hào)往下數(shù),以確定接收的序號(hào)364是否具有所期望的值。在模塊304,由序列估計(jì)單元346來估計(jì)序列中的間斷。如果模塊304確定其沒有接收到先前發(fā)送的消息330,由模塊304設(shè)置當(dāng)前ACK334中的第二應(yīng)答378到指示該情況的標(biāo)志值。在模塊304,由確認(rèn)單元348生成ACK334。模塊304生成指示ACK334序列中的間斷的序號(hào)374的值。發(fā)送具有序號(hào)374的ACK334到模塊302。模塊302檢查接收的序號(hào)374中的間斷。在模塊302,由序列估計(jì)單元344估計(jì)序列中的間斷。序列中的間斷促使模塊302從第二應(yīng)答378中讀出信息,在第二應(yīng)答378中,標(biāo)志值作為指示符來向模塊302指示模塊304沒有接收到先前發(fā)送的消息330。然后,模塊302就能通過更新其內(nèi)部狀態(tài)以反映出消息330的丟失,來將自身與模塊304重新同步??梢酝ㄟ^例如丟棄與丟失的消息330有關(guān)的信息或重新發(fā)送該丟失的消息330的方式來實(shí)現(xiàn)同步。因此,如果當(dāng)發(fā)生消息間斷時(shí)必須重新發(fā)送已發(fā)送的消息330,模塊302可存儲(chǔ)已發(fā)送的消息330。
在圖4中,示出了在到設(shè)備300的模塊304的途中丟失了的消息330的實(shí)例。時(shí)間軸400劃分在模塊302和304之間發(fā)送消息和ACK的時(shí)間。在時(shí)間402,模塊302生成用于在通信鏈路306上發(fā)送到模塊304的消息330(11),如箭頭432(11)所示。消息330(11)填充有序號(hào)364(11)和包含用于模塊304的處理參數(shù)的消息負(fù)載366(11)。然后,消息330(11)到達(dá)模塊304。
模塊304的序列估計(jì)單元346將序號(hào)364(11)與先前存儲(chǔ)的序號(hào)364進(jìn)行比較。序列估計(jì)單元346確定出沒有發(fā)生消息間斷。
在時(shí)間406,確認(rèn)單元348生成ACK334(11)并將其填充上序號(hào)374(11)、第一應(yīng)答376(11)和第二應(yīng)答378(11)。第一應(yīng)答376(11)包含對(duì)消息330(11)的確認(rèn)響應(yīng)(標(biāo)為“A11”),而第二應(yīng)答378(11)包含對(duì)先前消息,消息330(10)(未示出)的確認(rèn)響應(yīng)(標(biāo)為“A10”)。模塊304存儲(chǔ)序號(hào)364(11)和第一應(yīng)答376(11)供將來使用。模塊304發(fā)送ACK334(11)到模塊302,如箭頭436(11)所示,ACK334(11)在時(shí)間410到達(dá)。同樣地,在模塊302的序列估計(jì)單元344將序號(hào)374(11)與先前存儲(chǔ)的序號(hào)374進(jìn)行比較,并確定出沒有發(fā)生消息間斷。
在時(shí)間404,模塊302生成并在通信鏈路306上發(fā)送消息330(12)到模塊304,如箭頭432(12)所示。但是,由于故障442,消息330(12)沒有到達(dá)模塊304。因此,確認(rèn)單元348不觸發(fā)生成ACK334。
在時(shí)間406,模塊302在通信鏈路306上發(fā)送消息330(13)到模塊304,如箭頭432(13)所示。然后,消息330(13)到達(dá)模塊304。序列估計(jì)單元346從消息330(13)中提取序號(hào)364(13),并將其與存儲(chǔ)的序號(hào)364(11)進(jìn)行比較。序列估計(jì)單元346或者通過從存儲(chǔ)的序號(hào)364(11)往上數(shù),或者通過從接收的序號(hào)364(13)往下數(shù)來實(shí)現(xiàn)這一點(diǎn)。由于當(dāng)前消息的序號(hào)364(13)是“13”,如圖所示,序列估計(jì)單元346確定序號(hào)是否具有對(duì)于上一個(gè)接收的消息330的所期望的下一個(gè)值。由于對(duì)標(biāo)號(hào)“13”所期望的是“12”,而其未被提供,因此發(fā)生了錯(cuò)誤。因此,確認(rèn)單元348將以指示沒有接收到先前消息330的“無效”標(biāo)志(標(biāo)為“inv”)來填充第二應(yīng)答378(13)。
在時(shí)間410,確認(rèn)單元348生成ACK334(13)并將其填充上序號(hào)374(13)、第一應(yīng)答376(13)和第二應(yīng)答378(13)。模塊304生成指示ACK334序列中的間斷的序號(hào)374(13)的值。通過從消息330(13)中復(fù)制序號(hào)364(13)的值,最容易實(shí)現(xiàn)這一點(diǎn)。第一應(yīng)答376(13)包含對(duì)消息330(13)的確認(rèn)響應(yīng)(標(biāo)為“A13”),而第二應(yīng)答378(13)包含“無效”標(biāo)志。
模塊304發(fā)送ACK334(13)到模塊302,如箭頭436(13)所示,ACK334(13)在時(shí)間414到達(dá)。序列估計(jì)單元344再檢查接收的序號(hào)374中的間斷。序列估計(jì)單元344檢測(cè)出序列中的間斷,該間斷促使模塊302從第二應(yīng)答378(13)中讀出信息。在第二應(yīng)答378(13)中的“無效”標(biāo)志向模塊302指示先前消息330(12)沒有到達(dá)模塊304。模塊302然后將自身與模塊304重新同步。在本例中,模塊302發(fā)送帶有由于故障442而丟失的處理參數(shù)的消息330(14)到模塊304,如箭頭432(14)所示。該處理參數(shù)用在消息330(14)中、一開始在消息330(12)中發(fā)送的消息負(fù)載366(14)中的值“M12”來指示。應(yīng)當(dāng)理解模塊302可將自身與模塊304通過其他方式重新同步,包括丟棄與消息負(fù)載364(12)相關(guān)的信息。
到目前為止所描述的實(shí)施例的基本算法和方案沒有跟蹤最后一個(gè)ACK334的丟失到消息330組。設(shè)備300以下列方式處理該情形,如圖5所示。圖中,時(shí)間軸500劃分在模塊302和304之間發(fā)送消息330和ACK334的時(shí)間。圖中顯示了對(duì)消息330(11)的最終ACK334(21)(i)在到模塊302的途中丟失的情形,如在故障540終止的箭頭536(21)(i)所示。模塊304監(jiān)視通信鏈路306看是否有多余帶寬。如果在通信鏈路306上有可用帶寬,模塊304重新發(fā)送ACK334(21)(iii)到模塊302,如箭頭536(21)(ii)所示。序列估計(jì)單元344檢查序列中的間斷,確定出ACK334(21)(ii)是下一個(gè)所期望的ACK334并相應(yīng)地對(duì)其進(jìn)行處理。
如果從模塊302到模塊304的最終消息330丟失,則模塊304在通信鏈路306的可用帶寬上重新發(fā)送先前的ACK334。下一個(gè)ACK334包含與由模塊302接收的先前ACK334同樣的信息。在模塊302的序列估計(jì)單元344檢查序列中的間斷,確定接收的序號(hào)374是否與最后一個(gè)序號(hào)374匹配。模塊302由此知道最終消息330丟失并重新發(fā)送最終消息330。
在沒有消息從模塊302發(fā)送到模塊304的空閑狀態(tài)下,當(dāng)帶寬可用時(shí),模塊304將發(fā)送其先前已發(fā)送的最后一個(gè)有效ACK334。為節(jié)省帶寬的使用,最好是限制發(fā)送ACK334的速率,而不是將所有的空閑帶寬都用于此。在沒有接收到消息330的初始情況下,將生成指示沒有接收到有效消息330的ACK334??衫靡恍┓椒▉碇甘緵]有接收到有效消息330。第一應(yīng)答376可具有一個(gè)加到其上的“有效/無效”比特,序號(hào)374可賦給無效值,或者可將序號(hào)374初始設(shè)置為序號(hào)374的初始值的前一個(gè)值。例如如果序號(hào)374的長度為8比特,模塊302將其初始設(shè)置為代表“0”的二進(jìn)制數(shù),則在該狀態(tài)下,模塊304將發(fā)送包含具有代表“255”的二進(jìn)制數(shù)的序號(hào)374的ACK334消息。
此外,模塊302可提供“時(shí)間已過”功能,其中,如果在某確定的時(shí)間段中沒有接收到與消息330相應(yīng)的ACK334,模塊302將認(rèn)為消息330已經(jīng)丟失并相應(yīng)地重新采取行動(dòng)。
在該實(shí)施例的設(shè)備中,在模塊302和304之間的消息傳送通常是非常可靠的,即與所發(fā)送的消息330和ACK334的數(shù)目相比,所丟失的消息330和ACK334是比較少的。但是,對(duì)在設(shè)備300中發(fā)送的高容量消息330和ACK334來說,這仍會(huì)使模塊302和304不能跟蹤其各自的內(nèi)部存儲(chǔ)器308和310的很大一部分。由于在設(shè)備300的正常操作中丟失連續(xù)的消息330或ACK334的發(fā)生率是很低的,因此,該實(shí)施例的發(fā)送消息330和ACK334的方法運(yùn)行良好。如果由于消息330和ACK334在發(fā)送中的丟失率超過系統(tǒng)生成在模塊間成功發(fā)送的消息的能力,該實(shí)施例不能執(zhí)行上面詳述的糾正,可認(rèn)為發(fā)生了重要的、不可恢復(fù)的故障,需要系統(tǒng)進(jìn)行復(fù)位。
如果上述系統(tǒng)丟失消息330使得在模塊302接收的序號(hào)374指示出兩個(gè)或更多序號(hào)374的間斷,上述的特定實(shí)施例可能就不能糾正該間斷,可能就不能保證在單個(gè)消息330或ACK334丟失的情況下可能的系統(tǒng)糾正水平。在這種情況下,模塊302可認(rèn)定沒有接收到ACK334的消息330丟失了,由于時(shí)間已過的期間屆滿,模塊302可能已經(jīng)完成了這一動(dòng)作。注意,由于可能有若干個(gè)ACK334消息丟失了,因此就不能保證糾正行為了。當(dāng)若干個(gè)消息330和/或ACK334丟失時(shí),很可能鏈路層錯(cuò)誤檢測(cè)會(huì)向系統(tǒng)中的更高層設(shè)備告警,這可能會(huì)觸發(fā)系統(tǒng)復(fù)位。如果在模塊302接收的序號(hào)374指示出兩個(gè)或更多序號(hào)374的間斷,模塊302可用此來告警,然后該告警又可用來觸發(fā)系統(tǒng)復(fù)位。
接下來將描述支持從連續(xù)消息的丟失中恢復(fù)系統(tǒng)而無需系統(tǒng)復(fù)位的擴(kuò)展實(shí)施例??梢园凑账谕倪B續(xù)錯(cuò)誤率來制定丟失可以恢復(fù)的連續(xù)消息的數(shù)目。
跟蹤連續(xù)丟失的ACK或消息的實(shí)施例的消息傳送方案和通信設(shè)備在更易于發(fā)生連續(xù)消息330或ACK334丟失的情況下,可以通過增加ACK334的長度及發(fā)送若干先前確認(rèn)響應(yīng)到發(fā)出模塊來擴(kuò)展上述實(shí)施例。因此,參見圖6A,圖中示出了通信設(shè)備600,它是一個(gè)擴(kuò)展實(shí)施例。其中,設(shè)備600與設(shè)備300的相同之處在于其具有由通信鏈路606連接的第一模塊602和第二模塊604。模塊602和604都具有內(nèi)部存儲(chǔ)器(未示出)。模塊602和604互相發(fā)送消息630以處理到達(dá)設(shè)備600的分組。接收消息630的模塊發(fā)送ACK634到生成消息630的模塊。
如參照模塊304所述的那樣,在模塊604的序列估計(jì)單元646能通過序號(hào)664來跟蹤所期望的接下來的消息630,并用序號(hào)664來確定在剛剛接收的消息630和上一個(gè)接收的消息630之間是否有序號(hào)664中的間斷。
參見圖6B,當(dāng)模塊602生成消息630時(shí),消息630至少具有下列字段包含消息識(shí)別符662的消息識(shí)別符字段662’(4比特);包含序號(hào)664的序號(hào)字段664’(8比特);以及包含消息負(fù)載666的消息負(fù)載字段666’(20比特)。
設(shè)備600在如何發(fā)送ACK634的方面與設(shè)備300不同。在模塊604,由確認(rèn)單元648生成的ACK634包括一串對(duì)先前消息630的兩比特應(yīng)答。在本實(shí)施例中,ACK634包括對(duì)先前消息630的應(yīng)答和對(duì)兩個(gè)先前消息630的應(yīng)答。參見圖6C,當(dāng)模塊604提供對(duì)接收的消息630作出響應(yīng)的ACK634到模塊602時(shí),ACK634至少具有以下字段包含消息識(shí)別符672的消息識(shí)別符字段672’(4比特);包含序號(hào)674的序號(hào)字段674’(8比特);包含指示該應(yīng)答是接受還是拒絕的第一應(yīng)答676的第一應(yīng)答字段676’(1比特);包含提供對(duì)緊前一個(gè)消息630的應(yīng)答的第二應(yīng)答678的第二應(yīng)答字段678’(2比特);包含提供對(duì)緊前一個(gè)消息630的前一個(gè)發(fā)送的消息630的應(yīng)答的第三應(yīng)答680的第三應(yīng)答字段680’(2比特);以及填充字段682’。如果模塊602沒有接收到緊前一個(gè)ACK634,第二應(yīng)答678作為來自于前一個(gè)ACK634的第一應(yīng)答676的重新發(fā)送。如果模塊602沒有接收到緊前一個(gè)ACK634或緊前一個(gè)ACK634的前一個(gè)ACK634,第二應(yīng)答678作為來自于緊前一個(gè)ACK634的第一應(yīng)答676的重新發(fā)送,而第三應(yīng)答680作為來自于緊前一個(gè)ACK634的前一個(gè)ACK634的第一應(yīng)答676的重新發(fā)送。為提供這些特征,模塊602存儲(chǔ)其接收的最后一個(gè)ACK634的序號(hào)674,或者其期望的下一個(gè)ACK634的序號(hào)674。當(dāng)其接收到ACK634時(shí),可檢測(cè)出序列674中的間斷,并可從重新發(fā)送的信息中讀出信息。模塊604需要存儲(chǔ)包括是否發(fā)送了“無效”標(biāo)志的其先前ACK信息以使模塊604能夠重新發(fā)送在先前ACK634中包含的信息。
如果模塊604的序列估計(jì)單元646根據(jù)序號(hào)664確定出其沒有接收到至少一個(gè)先前發(fā)送的消息630,確認(rèn)單元648在適當(dāng)?shù)牡诙?yīng)答678或第三應(yīng)答680中指示出這一點(diǎn)。在這種情況下,和前面一樣,模塊604的序列估計(jì)單元646根據(jù)接收的序號(hào)664來確定出發(fā)生了間斷。在模塊602的序列估計(jì)單元644同樣根據(jù)接收的序號(hào)674來確定發(fā)生了間斷,并讀出在第二應(yīng)答678和第三應(yīng)答680的之一或兩者中發(fā)送的“無效”標(biāo)志。模塊602根據(jù)哪一個(gè)消息630丟失了的指示將自身與模塊604重新同步??赏ㄟ^,例如丟棄與丟失消息630相關(guān)的信息或重新發(fā)送丟失消息630的方式來實(shí)現(xiàn)同步。如果要重新發(fā)送先前發(fā)送的消息630,模塊602需要存儲(chǔ)其先前消息的信息。
圖6A示出了三種情形,其中時(shí)間軸670劃分在模塊602和604之間發(fā)送消息630和ACK634的時(shí)間。
在第一種情形下,在模塊602和604之間成功地交換了一系列消息630和ACK634。在時(shí)間702,模塊602生成并在通信鏈路606上發(fā)送消息630(29)到模塊604,如箭頭632(29)所示。消息630(29)包括序號(hào)664(29)和包含用于模塊604的指令的消息負(fù)載666(29)。消息630(29)到達(dá)模塊604。模塊604的序列估計(jì)單元646讀出序號(hào)664(29)并確定出沒有發(fā)生消息間斷。
在時(shí)間706,確認(rèn)單元648生成ACK634(29),并將其填充上序號(hào)674(29)和應(yīng)答676(29)、678(29)、680(29)。第一應(yīng)答676(29)包含對(duì)消息630(29)的確認(rèn)響應(yīng)(標(biāo)為“A29”);第二應(yīng)答678(29)包含對(duì)先前消息,消息630(28)(未示出)的確認(rèn)響應(yīng)(標(biāo)為“A28”);第三應(yīng)答680(29)包含對(duì)再前面一個(gè)消息,消息630(27)(未示出)的確認(rèn)響應(yīng)(標(biāo)為“A27”)。模塊604發(fā)送ACK634(29)到模塊602,如箭頭636(29)所示,ACK634(29)在時(shí)間710到達(dá)。模塊602接收到ACK634(29),序列估計(jì)單元644讀出序號(hào)674(29)并確定沒有發(fā)生消息間斷。
第二種情形示出了消息630在到模塊604的途中丟失的實(shí)例。在時(shí)間704,模塊602生成并在通信鏈路606上發(fā)送消息630(30),如箭頭632(30)所示。故障642阻止消息630(30)到達(dá)模塊604。設(shè)備600以與設(shè)備300同樣的方式處理該故障642,在第二應(yīng)答678(31)中提供“無效”標(biāo)志作為對(duì)下一個(gè)消息630(31)的ACK634(31)的一部分。模塊604生成序號(hào)674(31)的值,該值指示出ACK634的序列中的間斷。這最容易通過從消息630(31)中復(fù)制序號(hào)664(31)的值來實(shí)現(xiàn)。
模塊602的序列估計(jì)單元644檢查在ACK634中接收的序號(hào)674的序列中的間斷。序列估計(jì)單元644確定發(fā)生了間斷且沒有接收到最后一個(gè)ACK634(30)。因此,模塊602從第二應(yīng)答678(31)中讀出“無效”標(biāo)志,它指示出由于模塊604沒有接收到消息630(30),因此沒有生成ACK634(30)。模塊602然后將自身與模塊604重新同步。在本例中,模塊602在消息630(33)中重新發(fā)送來自于消息630(30)的處理參數(shù),如消息負(fù)載666(33)中的“M30”所示,“M30”一開始是在消息630(30)的消息負(fù)載666(30)中發(fā)送的。應(yīng)當(dāng)理解,模塊602可通過包括丟棄與消息負(fù)載666(30)相關(guān)的信息的其他方式來將自身與模塊604重新同步。
還應(yīng)當(dāng)理解,模塊602和604可用于跟蹤若干連續(xù)消息630的丟失,就象ACK634的所述實(shí)施例能夠指示出到模塊604的兩個(gè)連續(xù)消息630的丟失那樣。
第三種情形示出了一串ACK634在到模塊602的途中丟失的實(shí)例。在時(shí)間708和時(shí)間714,模塊602分別生成并發(fā)送消息630(32)和630(33)到模塊604。模塊604的序列估計(jì)單元646確定出沒有發(fā)生消息間斷且確認(rèn)單元648分別生成ACK634(32)和634(33)。模塊604在通信鏈路606上發(fā)送這些ACK634,分別如箭頭636(32)和636(33)所示。故障640(i)和640(ii)阻止ACK634(32)和634(33)到達(dá)模塊602。在時(shí)間716,模塊602生成并在通信鏈路606上發(fā)送消息630(34)到模塊604,如箭頭632(34)所示。消息630(34)包括序號(hào)664(34)和包含用于模塊604的處理參數(shù)的消息負(fù)載666(34)。消息630(34)到達(dá)模塊604。序列估計(jì)單元646再確定出沒有發(fā)生消息間斷。在時(shí)間720,確認(rèn)單元648生成ACK634(34),并將其填充上序號(hào)674(34)和應(yīng)答676(34)、678(34)、680(34)。第一應(yīng)答676(34)包含對(duì)消息630(34)的確認(rèn)響應(yīng)(標(biāo)為“A34”);第二應(yīng)答678(34)包含對(duì)前一個(gè)消息630(33)的確認(rèn)響應(yīng)(標(biāo)為“A33”);且第三應(yīng)答680(34)包含對(duì)再前面一個(gè)消息630(32)的確認(rèn)響應(yīng)(標(biāo)為“A32”)。模塊604發(fā)送ACK634(34)到模塊602,如箭頭636(34)所示,ACK634(34)在時(shí)間724到達(dá)。
模塊602的序列估計(jì)單元644檢查接收的序號(hào)674的序列中的間斷。序列估計(jì)單元644確定出發(fā)生了間斷且沒有接收到最后兩個(gè)ACK634(32)和634(33)。因此,模塊602從ACK634(34)中讀出第二應(yīng)答678(34)和第三應(yīng)答680(34)。因此,提供給了模塊602對(duì)消息630(32)和630(33)的確認(rèn)響應(yīng),這些確認(rèn)響應(yīng)分別由于故障640(i)和640(ii)而丟失。
應(yīng)當(dāng)理解ACK634還可以擴(kuò)展為承載多于三個(gè)確認(rèn)響應(yīng),以提供對(duì)丟失多于兩個(gè)連續(xù)消息630或ACK634的支持。
在其它實(shí)施例中,應(yīng)當(dāng)理解可以將序號(hào)系統(tǒng)換成任意有序碼組。此外,在其它實(shí)施例中,ACK可以在已經(jīng)描述的任一應(yīng)答字段中填充上先前被響應(yīng)的消息的序號(hào)。在該實(shí)施例中,ACK包含兩個(gè)序號(hào),由此使得由示例模塊302、602通過簡(jiǎn)單地提取并比較兩個(gè)序號(hào)的值來直接確定丟失的分組成為可能。在另外的其它實(shí)施例中,模塊304和604還可被改為當(dāng)從模塊302和602發(fā)送的分組丟失時(shí),直接在ACK中報(bào)告。其中,模塊304和604將跟蹤來自于接收的消息的序號(hào),并確定是否存在序號(hào)中的間斷。檢測(cè)到任何這樣的間斷后,可發(fā)送專門的消息到模塊302和602以立即通知它們丟失的消息。
上述實(shí)施例可以以能夠訪問信元流、且具有分析信元流并在其中插入數(shù)據(jù)的所需功能的軟件、固件或硬件模塊來實(shí)現(xiàn)。該提取分析和插入技術(shù)可包含本領(lǐng)域中公知的技術(shù),但要有在此定義的附加功能。
應(yīng)當(dāng)注意,本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解可以對(duì)本發(fā)明實(shí)施例作出各種細(xì)節(jié)的修改,所有這些都在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種跟蹤通信設(shè)備中從發(fā)送模塊發(fā)送到接收模塊的消息發(fā)送的方法,所述方法包括以下步驟(a)在所述接收模塊接收消息;(b)估計(jì)所述接收的消息以確定如果有由所述發(fā)送模塊發(fā)送的先前消息的話,所述接收模塊是否以相對(duì)于該先前消息的適當(dāng)順序接收到了所述接收的消息;以及(c)生成從所述接收模塊到所述發(fā)送模塊的確認(rèn)消息,所述確認(rèn)消息包括指示符,所述指示符的值指示如果有在所述接收的消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息的話,所述接收模塊是否接收到該先前消息。
2.如權(quán)利要求1所述的跟蹤消息發(fā)送的方法,其中如果所述步驟(b)確定沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏南?,所述指示符的所述值指示所述接收模塊未接收到所述先前消息。
3.如權(quán)利要求2所述的跟蹤消息發(fā)送的方法,其中所述方法還包括下列步驟(d)發(fā)送所述確認(rèn)消息到所述發(fā)送模塊。
4.如權(quán)利要求3所述的跟蹤消息發(fā)送的方法,其中所述消息和所述確認(rèn)消息與從所述發(fā)送模塊發(fā)送到所述接收模塊的分組相關(guān)。
5.如權(quán)利要求4所述的跟蹤消息發(fā)送的方法,其中每一個(gè)所述確認(rèn)消息包括第一字段,包括指示對(duì)所述接收的消息的確認(rèn)響應(yīng)的值;以及第二字段,包括下列之一(i)所述指示符的所述值;以及(ii)指示對(duì)在所述接收的消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息的確認(rèn)響應(yīng)的值。
6.如權(quán)利要求5所述的跟蹤消息發(fā)送的方法,其中對(duì)所述先前消息的所述確認(rèn)響應(yīng)和對(duì)所述接收的消息的所述確認(rèn)響應(yīng)分別指示所述接收模塊是否接受了所述先前消息和所述接收的消息。
7.如權(quán)利要求6所述的跟蹤消息發(fā)送的方法,其中所述方法還包括下列步驟(e)在所述發(fā)送模塊接收由所述接收模塊發(fā)送的所述確認(rèn)消息;以及(f)確定如果有由所述接收模塊發(fā)送的先前確認(rèn)消息的話,所述發(fā)送模塊是否以相對(duì)于該先前確認(rèn)消息的適當(dāng)順序接收到所述接收的確認(rèn)消息。
8.如權(quán)利要求7所述的跟蹤消息發(fā)送的方法,其中每個(gè)所述確認(rèn)消息還包括序號(hào);如果所述步驟(b)確定出沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏南?,所述步驟(c)設(shè)置所述確認(rèn)消息的所述序號(hào)到一個(gè)值來指示這一點(diǎn);以及所述步驟(f)根據(jù)所述接收的確認(rèn)消息的所述序號(hào)的所述值來確定所述發(fā)送模塊是否以相對(duì)于先前確認(rèn)消息的適當(dāng)順序接收到所述接收的確認(rèn)消息。
9.如權(quán)利要求8所述的跟蹤消息發(fā)送的方法,其中該方法還包括下列步驟(g)如果所述發(fā)送模塊沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,估計(jì)所述第二字段的所述值以確定所述接收模塊是否接收到在所述接收的消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息。
10.如權(quán)利要求9所述的跟蹤消息發(fā)送的方法,其中所述方法還包括下列步驟(h1)如果所述發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,并且如果所述第二字段的所述值指示所述接收模塊沒有接收到從所述發(fā)送模塊發(fā)送的所述先前消息,則將所述發(fā)送模塊的內(nèi)部狀態(tài)與所述接收模塊同步,以反映出所述先前消息丟失。
11.如權(quán)利要求10所述的跟蹤消息發(fā)送的方法,其中所述方法還包括下列步驟(h2)如果所述發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,并且如果所述第二字段的所述值指示所述接收模塊接收到了從所述發(fā)送模塊發(fā)送的所述先前消息,則處理對(duì)所述第二字段中包含的所述先前消息的所述確認(rèn)響應(yīng)。
12.如權(quán)利要求11所述的跟蹤消息發(fā)送的方法,其中所述發(fā)送模塊分配與發(fā)送到所述接收模塊的所述消息相關(guān)的存儲(chǔ)器,所述方法還包括下列步驟(i)響應(yīng)所述第一字段的所述值和所述第二字段的所述值重新分配所述存儲(chǔ)器。
13.一種跟蹤通信設(shè)備中從接收模塊發(fā)送到發(fā)送模塊的確認(rèn)消息的發(fā)送的方法,每個(gè)所述確認(rèn)消息與從所述發(fā)送模塊發(fā)送到所述接收模塊的消息相關(guān),所述方法包括下列步驟(a)在所述發(fā)送模塊接收由所述接收模塊發(fā)送的確認(rèn)消息,所述接收的確認(rèn)消息包括指示符,所述指示符的值指示如果有在與所述接收的確認(rèn)消息相關(guān)的消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的先前消息的話,所述接收模塊是否接收到該先前消息;以及(b)確定如果有由所述接收模塊發(fā)送的先前確認(rèn)消息的話,所述發(fā)送模塊是否以相對(duì)于該先前確認(rèn)消息的適當(dāng)順序接收到所述接收的確認(rèn)消息。
14.如權(quán)利要求13所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中該方法還包括下列步驟(c)如果所述發(fā)送模塊沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,估計(jì)所述指示符的所述值以確定所述接收模塊是否接收到在與所述接收的確認(rèn)消息相關(guān)的所述消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息。
15.如權(quán)利要求14所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中所述方法還包括下列步驟(d1)如果所述發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,并且如果所述指示符指示所述接收模塊沒有接收到從所述發(fā)送模塊發(fā)送的所述先前消息,則同步所述發(fā)送模塊的內(nèi)部狀態(tài)以反映出所述先前消息丟失。
16.如權(quán)利要求15所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中所述方法還包括下列步驟(d2)如果所述發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,并且如果所述指示符指示所述接收模塊接收到了從所述發(fā)送模塊發(fā)送的所述先前消息,則處理對(duì)所述接收的確認(rèn)消息中包含的所述先前消息的確認(rèn)響應(yīng)。
17.如權(quán)利要求16所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中每個(gè)所述接收的確認(rèn)消息與一個(gè)序號(hào)相關(guān);以及所述步驟(b)包括根據(jù)所述先前的確認(rèn)消息的所述序號(hào)確定所述接收的確認(rèn)消息的預(yù)期序號(hào);以及如果所述預(yù)期序號(hào)與所述接收的確認(rèn)消息的所述序號(hào)不匹配,指示出所述發(fā)送模塊沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息。
18.如權(quán)利要求16所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中每個(gè)所述確認(rèn)消息與一個(gè)序號(hào)相關(guān);以及所述步驟(b)包括根據(jù)所述接收的確認(rèn)消息的所述序號(hào)確定所述先前確認(rèn)消息的預(yù)期序號(hào);以及如果所述預(yù)期序號(hào)與所述發(fā)送模塊接收的所述先前確認(rèn)消息的所述序號(hào)不匹配,指示出所述發(fā)送模塊沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息。
19.如權(quán)利要求16所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中所述確認(rèn)消息和所述消息與從所述發(fā)送模塊發(fā)送到所述接收模塊的分組相關(guān)。
20.如權(quán)利要求19所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中每個(gè)所述確認(rèn)消息包括第一字段,包括指示對(duì)與所述接收的確認(rèn)消息相關(guān)的所述消息的確認(rèn)響應(yīng)的值;以及第二字段,包括下列之一(a)所述指示符的所述值;以及(b)指示對(duì)在與所述接收的確認(rèn)消息相關(guān)的所述消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息的確認(rèn)響應(yīng)的值。
21.如權(quán)利要求20所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中所述發(fā)送模塊在發(fā)送時(shí)分配與發(fā)送到所述接收模塊的所述消息相關(guān)的存儲(chǔ)器;以及所述方法還包括下列步驟(e)響應(yīng)所述第一字段的所述值和所述第二字段的所述值重新分配所述存儲(chǔ)器。
22.如權(quán)利要求21所述的跟蹤確認(rèn)消息的發(fā)送的方法,其中對(duì)所述先前消息的所述確認(rèn)響應(yīng)和對(duì)與所述接收的確認(rèn)消息相關(guān)的所述消息的所述確認(rèn)響應(yīng)分別指示所述接收模塊是否接受了所述先前消息和與所述接收的確認(rèn)消息相關(guān)的所述消息。
23.一種接收模塊,用于跟蹤通信設(shè)備中從發(fā)送模塊發(fā)送到所述接收模塊的消息的發(fā)送,所述接收模塊包括第一輸入,用于接收消息的;一個(gè)序列估計(jì)單元,用于估計(jì)所述接收的消息以確定如果有由所述發(fā)送模塊發(fā)送的較早消息的話,是否以相對(duì)于該較早消息的適當(dāng)順序接收到了所述接收的消息;以及一個(gè)確認(rèn)單元,用于生成從所述接收模塊發(fā)送到所述發(fā)送模塊的確認(rèn)消息,所述確認(rèn)消息包括指示符,所述指示符的值指示如果有在所述接收的消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的先前消息的話,所述接收模塊是否接收到該先前消息。
24.如權(quán)利要求23所述的用于跟蹤消息的發(fā)送的接收模塊,其中如果所述序列估計(jì)單元確定沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏南?,所述確認(rèn)單元設(shè)置所述指示符的所述值,以指示出所述接收模塊沒有接收到所述先前消息。
25.如權(quán)利要求24所述的用于跟蹤消息的發(fā)送的接收模塊,其中每個(gè)所述接收的消息與一個(gè)序號(hào)相關(guān);以及所述序列估計(jì)單元根據(jù)所述接收模塊接收的所述先前消息的所述序號(hào)確定所述接收的消息的預(yù)期序號(hào);以及如果所述預(yù)期序號(hào)與所述接收的消息的所述序號(hào)不匹配,指示出所述接收模塊沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏南ⅰ?br>
26.如權(quán)利要求24所述的用于跟蹤消息的發(fā)送的接收模塊,其中每個(gè)所述消息與一個(gè)序號(hào)相關(guān);以及所述序列估計(jì)單元根據(jù)所述接收的消息的所述序號(hào)確定從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息的預(yù)期序號(hào);以及如果所述預(yù)期序號(hào)與所述接收模塊接收的所述先前消息的所述序號(hào)不匹配,指示出所述接收模塊沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏南ⅰ?br>
27.如權(quán)利要求24所述的用于跟蹤消息的發(fā)送的接收模塊,其中所述消息和所述確認(rèn)消息與從所述發(fā)送模塊發(fā)送到所述接收模塊的分組相關(guān)。
28.如權(quán)利要求27所述的用于跟蹤消息的發(fā)送的接收模塊,其中每個(gè)所述確認(rèn)消息包括第一字段,包括指示對(duì)所述接收的消息的確認(rèn)響應(yīng)的值;以及第二字段,包括下列之一(i)所述指示符的所述值;以及(ii)指示對(duì)在所述接收的消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息的確認(rèn)響應(yīng)的值。
29.如權(quán)利要求28所述的用于跟蹤消息的發(fā)送的接收模塊,其中,對(duì)所述先前消息的所述確認(rèn)響應(yīng)和對(duì)所述接收的消息的所述確認(rèn)響應(yīng)分別指示所述接收模塊是否接收了所述先前消息和所述接收的消息。
30.一種發(fā)送模塊,用于跟蹤通信設(shè)備中從接收模塊發(fā)送到所述發(fā)送模塊的確認(rèn)消息的發(fā)送,所述發(fā)送模塊包括第一輸入,用于在所述發(fā)送模塊接收由所述接收模塊發(fā)送的確認(rèn)消息,所述接收的確認(rèn)消息包括指示符,所述指示符的值指示如果有在與所述接收的確認(rèn)消息相關(guān)的消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的先前消息的話,所述接收模塊是否接收到該先前消息;以及序列估計(jì)單元,用于確定如果有由所述接收模塊發(fā)送的先前確認(rèn)消息的話,所述發(fā)送模塊是否以相對(duì)于該先前確認(rèn)消息的適當(dāng)順序接收所述接收的確認(rèn)消息。
31.如權(quán)利要求30所述的用于跟蹤確認(rèn)消息的發(fā)送的發(fā)送模塊,其中,如果所述發(fā)送模塊沒有以所述適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,所述發(fā)送模塊估計(jì)所述指示符的所述值以確定所述接收模塊是否接收到在與所述接收的確認(rèn)消息相關(guān)的所述消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息。
32.如權(quán)利要求31所述的用于跟蹤確認(rèn)消息的發(fā)送的發(fā)送模塊,其中,如果所述發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,且如果所述指示符指示所述接收模塊沒有接收到從所述發(fā)送模塊發(fā)送的所述先前消息,所述發(fā)送模塊同步所述發(fā)送模塊的內(nèi)部狀態(tài),以反映出所述先前消息的丟失。
33.如權(quán)利要求32所述的用于跟蹤確認(rèn)消息的發(fā)送的發(fā)送模塊,其中,如果所述序列估計(jì)單元確定所述發(fā)送模塊沒有以適當(dāng)?shù)捻樞蚪邮账鼋邮盏拇_認(rèn)消息,且如果所述指示符指示所述接收模塊沒有接收到從所述發(fā)送模塊發(fā)送的所述先前消息,所述發(fā)送模塊處理在所述接收的確認(rèn)消息中包含的對(duì)所述先前消息的確認(rèn)響應(yīng)。
34.如權(quán)利要求33所述的用于跟蹤確認(rèn)消息的發(fā)送的發(fā)送模塊,其中,所述確認(rèn)消息和所述消息與從所述發(fā)送模塊發(fā)送到所述接收模塊的分組相關(guān)。
35.如權(quán)利要求34所述的用于跟蹤確認(rèn)消息的發(fā)送的發(fā)送模塊,其中每個(gè)所述確認(rèn)消息包括第一字段,包括指示對(duì)與所述接收的確認(rèn)消息相關(guān)的所述消息的確認(rèn)響應(yīng)的值;以及第二字段,包括下列之一(a)所述指示符的所述值;以及(b)指示對(duì)在與所述接收的確認(rèn)消息相關(guān)的所述消息之前剛剛從所述發(fā)送模塊發(fā)送到所述接收模塊的所述先前消息的確認(rèn)響應(yīng)的值。
36.如權(quán)利要求35所述的用于跟蹤確認(rèn)消息的發(fā)送的發(fā)送模塊,其中所述發(fā)送模塊還包括存儲(chǔ)器;以及所述發(fā)送模塊分配所述存儲(chǔ)器以存儲(chǔ)與發(fā)送到所述接收模塊的所述消息相關(guān)的信息,并且響應(yīng)所述第一字段的所述值和所述第二字段的所述值重新分配所述存儲(chǔ)器。
37.如權(quán)利要求36所述的用于跟蹤確認(rèn)消息的發(fā)送的發(fā)送模塊,其中,對(duì)所述先前消息的所述確認(rèn)響應(yīng)和對(duì)與所述接收的確認(rèn)消息相關(guān)的所述消息的所述確認(rèn)響應(yīng)分別指示所述接收模塊是否接收到了所述先前消息和與所述接收的確認(rèn)消息相關(guān)的所述消息。
全文摘要
一種用于跟蹤通信設(shè)備中從發(fā)送模塊發(fā)送到接收模塊的消息的發(fā)送的方法和模塊。該方法包括步驟(a),在接收模塊接收消息。該方法還包括步驟(b),估計(jì)該接收的消息以確定如果有由該發(fā)送模塊發(fā)送的先前消息的話,該接收模塊是否以相對(duì)于該先前消息的適當(dāng)順序接收到該接收的消息;該方法還包括步驟(c)生成從該接收模塊到該發(fā)送模塊的確認(rèn)消息,該確認(rèn)消息包括指示符,該指示符的值指示如果有在該接收的消息之前剛剛從該發(fā)送模塊發(fā)送到該接收模塊的該先前消息的話,該接收模塊是否接收到該先前消息。
文檔編號(hào)H04L29/14GK1503513SQ20031011347
公開日2004年6月9日 申請(qǐng)日期2003年11月11日 優(yōu)先權(quán)日2002年11月27日
發(fā)明者R·E·羅博塔姆, K·米斯特里, R E 羅博塔姆, 固乩 申請(qǐng)人:阿爾卡特加拿大公司