專利名稱:利用多次重發(fā)定時(shí)器經(jīng)不可靠通信信道的遠(yuǎn)程過程調(diào)用的方法和系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及在分布式系統(tǒng)中遠(yuǎn)程過程調(diào)用(remote procedurecall),具體涉及經(jīng)由一個(gè)不可靠通信信道傳送的遠(yuǎn)程過程調(diào)用。
從客戶到服務(wù)器的遠(yuǎn)程過程調(diào)用是在分布式系統(tǒng)中廣泛應(yīng)用的技術(shù)??蛻粝蚍?wù)器發(fā)送一個(gè)請求,而后等待服務(wù)器確認(rèn)收到該請求消息。在不可靠信道上的遠(yuǎn)程過程調(diào)用需要恢復(fù)丟失消息。雖然確認(rèn)消息可以用來指示請求的收到,但確認(rèn)消息也可能通過傳送而被丟失。甚至在對確認(rèn)消息還要進(jìn)一步證實(shí)的情況下,對每一請求會有確認(rèn)消息的多次傳送?,F(xiàn)在需要一種有效和失效保險(xiǎn)的機(jī)制,使每個(gè)請求的傳送次數(shù)最小化,一個(gè)丟失消息被恢復(fù)的時(shí)間最小化。
如
圖1的標(biāo)號100所示,在先有技術(shù)中,為了恢復(fù)一個(gè)丟失的請求,一直利用每個(gè)客戶機(jī)—服務(wù)器對在一個(gè)單一的滿時(shí)周期來恢復(fù)丟失的請求。在發(fā)送請求102之后,客戶機(jī)便啟動(dòng)一個(gè)定時(shí)器,并等待一個(gè)預(yù)選的滿時(shí)周期104來得到確認(rèn)消息。如果在定時(shí)器滿時(shí)之前,由于丟失請求消息、丟失確認(rèn)消息106,或由于意外地大的往返程延遲,客戶機(jī)未收到確認(rèn)消息,則客戶機(jī)重發(fā)請求108,重新啟動(dòng)定時(shí)器并等待另一確認(rèn)消息110。在達(dá)到預(yù)定的限度之前,重復(fù)這一順序連串的步驟。滿時(shí)周期是一個(gè)給定客戶機(jī)—服務(wù)器對的往返程延遲。如果請求消息真的丟失了,則服務(wù)器不能識別重發(fā)請求與原始請求之間的差異。這個(gè)先有技術(shù)是通常稱之為“停止與等待協(xié)議”。
圖2以標(biāo)號200示出利用順序號來恢復(fù)丟失確認(rèn)消息的先有技術(shù)方法。當(dāng)對于一個(gè)給定請求(K)的確認(rèn)消息202丟失后,便在預(yù)選的滿時(shí)周期204之后,重發(fā)該請求(K)206,服務(wù)器忽略該請求,而發(fā)出一個(gè)新的確認(rèn)消息208。于是,服務(wù)器可以對每個(gè)請求的最近的收到順序號保持跟蹤,從而它能避免對任一請求服務(wù)一次以上。另一種替代的方法是,給原始請求作標(biāo)記,以區(qū)別于隨后的重發(fā)請求。
在先有技術(shù)的另一種實(shí)施方案中,將一個(gè)過程表存儲在含有每個(gè)過程的滿時(shí)周期信息的一個(gè)表目(entry)中,須對整個(gè)過程表進(jìn)行周期性掃描,以識別滿時(shí)的定時(shí)器。雖然在這種方法中建立和清除定時(shí)器的行動(dòng)僅需很少機(jī)器指令,但每個(gè)客戶機(jī)—服務(wù)器對仍然需要一個(gè)定時(shí)器。
常規(guī)的過程調(diào)用方法使用一個(gè)定時(shí)器恢復(fù)丟失的消息。如果客戶機(jī)在定時(shí)器滿時(shí)之前沒能收到確認(rèn)消息,則會重發(fā)該請求,并將定時(shí)器重新啟動(dòng)。往往就客戶機(jī)—服務(wù)器之間的往返程延遲,對定時(shí)器的滿時(shí)時(shí)間進(jìn)行優(yōu)化。如在網(wǎng)狀網(wǎng)路中那樣,由于不同的客戶機(jī)—服務(wù)器對可能相應(yīng)于不同的往返程延遲,故每個(gè)客戶機(jī)—服務(wù)器對就需要一個(gè)專用的定時(shí)器。當(dāng)客戶機(jī)—服務(wù)器對的數(shù)目加大時(shí),處理和存儲器資源可能受到限制。借助于使用單一的定時(shí)器值,便可以分享一個(gè)公用的定時(shí)器,從而避免不得不保持大數(shù)目不同周期定時(shí)器的問題。然而,采用這種方法,實(shí)際上要給每個(gè)客戶機(jī)—服務(wù)器對分配一個(gè)次優(yōu)的定時(shí)器值。
在一個(gè)地理分布式網(wǎng)路上實(shí)現(xiàn)遠(yuǎn)端過程調(diào)用的,同一個(gè)客戶機(jī)—服務(wù)器對的往返程延遲在不同時(shí)間可能有顯著的差異,因?yàn)樵诳蛻魴C(jī)和服務(wù)器間的連接可以取不同的路由。采用與往返程延遲嚴(yán)格相關(guān)的滿時(shí)周期需要有各種動(dòng)態(tài)調(diào)整,從而會大大增加系統(tǒng)的復(fù)雜性。當(dāng)采用遠(yuǎn)端過程調(diào)用的常規(guī)方法時(shí),客戶機(jī)—服務(wù)器對的一個(gè)無效(invalid)定時(shí)器值(即一個(gè)只適合一條路由而不適合另外路由加定時(shí)器值)會使它的通過量和延遲變差。
當(dāng)采用先有技術(shù)的遠(yuǎn)程過程調(diào)用方法時(shí),往返程延遲的不準(zhǔn)確估值能夠?qū)е乱粋€(gè)過程的冗余調(diào)用(invocations)。對于那些招致補(bǔ)償(penalty)的過程(非冪等過程)來說,這些多余的調(diào)用會帶來一系列不良影響。例如,當(dāng)過程是重置數(shù)據(jù)壓縮編碼器和譯碼器而使它們同步時(shí),與估值的往返程延遲有關(guān)的意外地大的往返程延遲會過多地增加重置的頻度,使壓縮性能和通過量明顯劣化。當(dāng)往返程延遲意外地小,并丟失請求和/或確認(rèn)消息時(shí),便會增大重新同步的延遲,使數(shù)據(jù)壓縮連接的通過量降低。為此,采用不準(zhǔn)確往返程延遲估值的現(xiàn)有過程調(diào)用方法會加劇非冪等過程調(diào)用的有害作用。動(dòng)態(tài)地估計(jì)往返程延遲在許多先有技術(shù)中已能為一種關(guān)鍵功能。現(xiàn)在需要使用最小數(shù)目的重發(fā)定時(shí)器經(jīng)由不可靠通信信道來提供遠(yuǎn)程過程調(diào)用的方法和系統(tǒng),其中最小數(shù)目的重發(fā)定時(shí)器可以避免由于次優(yōu)定時(shí)器帶來的問題,同時(shí)還可以降低系統(tǒng)性能對往返程延遲的敏感性。
圖1示出一種用以對每個(gè)客戶機(jī)—服務(wù)器對在一個(gè)單一的滿時(shí)周期來恢復(fù)丟失的請求的先有技術(shù)方法。
圖2示出一種用以恢復(fù)一個(gè)丟失的確認(rèn)消息的先有技術(shù)方法。
圖3示出本發(fā)明沿時(shí)線的方法的一個(gè)實(shí)施例的步驟。
圖4示出按照本發(fā)明的客戶狀態(tài)機(jī)的一個(gè)實(shí)施例。
圖5示出按照本發(fā)明的處理冪等過程的服務(wù)器狀態(tài)機(jī)的一個(gè)實(shí)施例圖。
圖6示出按照本發(fā)明的處理非冪等過程的服務(wù)器狀態(tài)機(jī)的一個(gè)實(shí)施例圖。
圖7示出用于“請求—確認(rèn)”的超長滿時(shí)周期的時(shí)序。
圖8示出用于“請求—確認(rèn)”的欠長滿時(shí)周期的時(shí)序。
圖9示出按照本發(fā)明方法的冪等情況下二種時(shí)序的例子,其中在初次“握手”失敗之后,獲得成功“握手”。
圖10示出按照本發(fā)明方法的冪等情況下四時(shí)序的例子,其中在初次“握手”失敗之后,獲得成功“握手”。
圖11示出按照本發(fā)明方法的非冪等情況下一個(gè)時(shí)序的例子,其中在初次“握手”失敗后,獲得成功“握手”。
圖12示出按照本發(fā)明方法的非冪等情況下三時(shí)序的例子,其中在初次“握手”失敗之后,獲得成功“握手”。
圖13示出按照本發(fā)明的譯碼器(客戶機(jī))狀態(tài)機(jī)的一個(gè)實(shí)施例步驟。
圖14示出按照本發(fā)明的編碼器(服務(wù)器)狀態(tài)機(jī)的一個(gè)實(shí)施例步驟,它與圖13譯碼器狀態(tài)機(jī)一起起作用。
圖15示出以第一級和第二級虛擬定時(shí)器分別代替第一級和第二級定時(shí)器的時(shí)線,并按照本發(fā)明按照片時(shí)鐘來實(shí)施。
本發(fā)明至少具有三個(gè)益處(1)具有大的往返程延遲的連接在恢復(fù)丟失原始請求消息中不再遭受長延遲影響,也不因其定時(shí)器滿時(shí)太頻繁而以許多不必要重發(fā)而告終,并且對于冪等過程而言,對于原始請求的確認(rèn)消息的丟失也不導(dǎo)致恢復(fù)中的長延遲;(2)由于沒有嚴(yán)格取決于往返程延遲的滿時(shí)周期,故該方案對于在地域上分布的動(dòng)態(tài)網(wǎng)路拓?fù)浣Y(jié)構(gòu)中遠(yuǎn)程過程調(diào)用是可靠的,從而在連接上提供更好的業(yè)務(wù)質(zhì)量;(3)無需對每個(gè)客戶機(jī)—服務(wù)器的連接有一個(gè)定時(shí)器,因此顯著節(jié)省了處理資源。
圖3以標(biāo)號300表示本發(fā)明沿時(shí)線方法的一個(gè)實(shí)施例步驟。在發(fā)送遠(yuǎn)程過程調(diào)用的過程中,客戶機(jī)給服務(wù)器發(fā)送一個(gè)初始請求302。一個(gè)初始請求是客戶機(jī)為調(diào)用預(yù)定的遠(yuǎn)程過程調(diào)用發(fā)出的最先的請求。本發(fā)明在跟隨初始請求302的預(yù)定的第一周期308之后,提供由客戶機(jī)發(fā)送的冗余請求306。除了冗余請求總在初始請求之后外,冗余請求與其相應(yīng)的初始請求302相似。預(yù)定的第一滿時(shí)周期308應(yīng)選取得足夠大,以避免可能的突發(fā)差錯(cuò)(即在連續(xù)的請求消息中的足夠大的解相關(guān)事件)。第一滿時(shí)周期308通常選取得大于突發(fā)差錯(cuò)的持續(xù)時(shí)間,而小于最小的往返程延遲(即在發(fā)送初始請求302和收到共享這一定時(shí)器的客戶機(jī)—服務(wù)器對的確認(rèn)304之間的周期)。因此,與先有技術(shù)遠(yuǎn)程調(diào)用方法有關(guān)的超長延遲的不良作用得以避免。
在冗余傳送也丟失(即收不到確認(rèn)310)的情況下,對滿時(shí)采用比第一滿時(shí)周期大的第二滿時(shí)周期312,而且一直重復(fù)第二滿時(shí)周期,直至已成功地收到對請求314的確認(rèn)316為止,或是重復(fù)再試預(yù)定的數(shù)目,以提高成功率,達(dá)到應(yīng)用所希望的任意高的概率。通常選取的第二滿時(shí)周期312大于共享定時(shí)器的客戶機(jī)—服務(wù)器對的最大往返程延遲,而小于高層協(xié)議的拆線的滿時(shí)周期。這樣有冗余傳送可靠的優(yōu)點(diǎn),并使本發(fā)明相對于先有技術(shù)方法有全面的好處。取決于應(yīng)用情況,初始請求可以區(qū)別于或不區(qū)別于冗余及相繼的其它請求。相繼請求除了總在冗余請求之后外,相繼請求與其相應(yīng)的冗余請求相類似。可以有多于一個(gè)的相繼請求,其中,除了第一相繼請求之外,每個(gè)其它相繼請求必須在另一相繼請求之后??蛻魴C(jī)可以連續(xù)發(fā)送相繼請求,直至收到確認(rèn)消息為止。
令T1和T2分別地表示第一和第二滿時(shí)周期。本發(fā)明的滿時(shí)序列為{T1,T2,T2……}。作為原始方案的一種變型,第一滿時(shí)周期可以重復(fù)預(yù)定的次數(shù)(例如,{T1,T1,T2,T2,T2,……})。另一種變型是有一個(gè)周期為T3的第三級滿時(shí)周期,這允許在第二滿時(shí)周期滿時(shí)后,接著重復(fù)滿時(shí)周期T3(即,{T1,T2,T3,T3,T3,……})。這一進(jìn)程甚至可以容納更寬的往返程延遲范圍。還有另一種變型是,在第一和第二超時(shí)周期之間交替變更(即,{T1,T2,T1,T2,……})。在一般情況下,任何預(yù)選取的超時(shí)周期序列都是可能的(例如,{T1,T2,T3,T4,……})。
冗余請求可以有效地降低最終需要的相繼滿時(shí)周期滿時(shí)的概率,實(shí)際上使相繼重發(fā)的機(jī)會可以忽略。對于可以按必要的頻度重復(fù)而不招致?lián)p壞的過程(即冪等過程),冗余請求或其它相繼請求都不需要與初始請求區(qū)分。對于非冪等過程,應(yīng)采用順序數(shù)目或多次請求類型,以使服務(wù)器不終止對同一請求的多次服務(wù)。
圖4以標(biāo)號為400表示按照本發(fā)明的客戶狀態(tài)機(jī)的一個(gè)實(shí)施例??蛻魻顟B(tài)機(jī)有三個(gè)狀態(tài)開始/正常處理402、等待第一滿時(shí)周期T1滿時(shí)404、等待第二滿時(shí)周期T2滿時(shí)406。在開始處理402時(shí),由客戶機(jī)發(fā)送初始請求,并啟動(dòng)定時(shí)器408,即,使預(yù)定的第一滿時(shí)周期T1開始。之后客戶機(jī)等待周期T1的滿時(shí)404。凡在第一周期T1間收到確認(rèn)消息,則客戶機(jī)取消T1,并再循環(huán)正常處理402。凡T1滿時(shí)而客戶機(jī)沒收到確認(rèn)消息,則客戶機(jī)發(fā)送一個(gè)冗余請求,并啟動(dòng)一個(gè)定時(shí)器410,即,使預(yù)定的第二滿時(shí)周期T2開始。之后客戶機(jī)等待T2滿時(shí)406。凡在T2414中收到一個(gè)確認(rèn)消息,則客戶機(jī)取消T2,并再重復(fù)正常處理402。凡T2滿時(shí)而客戶機(jī)沒收到確認(rèn)消息,則客戶機(jī)發(fā)送相繼請求,并啟動(dòng)滿時(shí)周期長度為T2的定時(shí)器412,并再循環(huán)等待T2滿時(shí)406;這一循環(huán)在客戶機(jī)收到確認(rèn)消息414之前一直重復(fù)進(jìn)行。
圖5以標(biāo)號500表示按照本發(fā)明的處理冪等過程的服務(wù)器狀態(tài)機(jī)的一個(gè)實(shí)施例。當(dāng)開始處理502之后,服務(wù)器等待一個(gè)請求。當(dāng)收到請求后,服務(wù)器執(zhí)行一個(gè)預(yù)定的程序,發(fā)送確認(rèn)消息504,之后重新循環(huán)正常處理。
圖6以標(biāo)號600表示按照本發(fā)明的處理非冪等過程的服務(wù)器狀態(tài)機(jī)的一個(gè)實(shí)施例。服務(wù)器等待初始請求、冗余請求和相繼請求602。凡收到初始請求后,則服務(wù)器執(zhí)行預(yù)定的程序,發(fā)送確認(rèn)消息給客戶機(jī)608,并等待下一個(gè)請求。凡收到冗余請求和相繼請求中的一個(gè),則服務(wù)器執(zhí)行預(yù)定的程序,并發(fā)送確認(rèn)消息給客戶機(jī)606。凡前一個(gè)收到的請求為初始請求,并接著收到冗余請求和相繼請求中的一個(gè)請求,則服務(wù)器停止響應(yīng)該請求,重新循環(huán)610至相應(yīng)于先前所收到的冗余/相繼請求602的狀態(tài)。凡先前收到的請求為初始請求,并接著收到另一個(gè)初始請求,則服務(wù)器執(zhí)行預(yù)定的程序,發(fā)送確認(rèn)消息,并重新循環(huán)612到與先前收到的初始請求604相應(yīng)的狀態(tài)。在非冪等情況下,如果下一個(gè)請求消息為冗余請求和相繼請求中的一個(gè)請求,則服務(wù)器不確認(rèn)跟隨初始請求消息接著收到的請求消息。因此,有必要區(qū)分初始請求與任一冗余或相繼請求。
為致力于解決往返程延遲隨時(shí)間變化的問題,一些現(xiàn)有技術(shù)從測量得到往返程延遲的估值,并使用該估值適應(yīng)性地更新每一連接的滿時(shí)周期。在Karn的算法中,是將滿時(shí)周期與指數(shù)定時(shí)器補(bǔ)償方法相結(jié)合。在這種方案中,滿時(shí)周期通常從往返程延遲的估值導(dǎo)出。如果定時(shí)器滿時(shí)并引起再次傳送,則滿時(shí)周期向上調(diào)整一個(gè)常數(shù)因子。除非滿時(shí)周期已達(dá)到上限,這一步驟在每次再傳送之后重復(fù)一次。每次定時(shí)器補(bǔ)償后,滿時(shí)值對相繼的消息保持不變,直至得到肯定的確認(rèn)消息為止,之后滿時(shí)值重置為從估計(jì)的往返程延遲導(dǎo)出的正常滿時(shí)值。
據(jù)此,利用現(xiàn)有技術(shù),如圖7以標(biāo)號700所示,滿時(shí)周期通常相應(yīng)于每次連接進(jìn)行優(yōu)化,并取決于其往返程延遲。凡滿時(shí)周期702大于往返程延遲704的,任一丟失的請求占用不必長的時(shí)間來恢復(fù)。如圖8以標(biāo)號800所示,凡滿時(shí)周期802小于往返程延遲804,則通常會有許多冗余請求,這是由于客戶機(jī)通常在每一重復(fù)滿時(shí)周期之后保持重發(fā)請求,直至客戶機(jī)可以收到確認(rèn)消息之前的更遲的往返程延遲為止。這些冗余請求占用帶寬,并加劇非冪等過程的有害作用。
據(jù)此,可以看到理想的滿時(shí)周期應(yīng)是往返程延遲。對于具有大的往返程延遲的連接來說,所需要的滿時(shí)周期也會大得使通過量顯著降低。對于具有小的往返程延遲的連接來說,滿時(shí)周期可能會太小,等待出某些突發(fā)誤碼差錯(cuò)。管理定時(shí)器所需的處理量不是很小的。為設(shè)置定時(shí)器,便需要建立數(shù)據(jù)結(jié)構(gòu),用以存儲狀態(tài)信息(規(guī)定何時(shí)定時(shí)器滿時(shí))和控制信息(當(dāng)定時(shí)器滿時(shí)后采取若干處理步驟)。將許多未決(pending)的定時(shí)器的數(shù)據(jù)結(jié)構(gòu)保存在以時(shí)間順序存儲的一個(gè)表格內(nèi)。因?yàn)槊恳贿B接需要一個(gè)定時(shí)器,故所需的定時(shí)器數(shù)目是極大的,因此可以對處理器和存儲器資源造成相當(dāng)大的壓力。實(shí)際上,只有很少的定時(shí)器同時(shí)滿時(shí)。在這方面,對定時(shí)器的很多處理工作存在浪費(fèi)。
利用本發(fā)明,精確的往返程延遲并非重要。并且,如果往返程延遲隨時(shí)間變化,也不影響協(xié)議。此外,正如諸如HDLC(高級數(shù)據(jù)鏈路控制)協(xié)議中的過程單元一類的其它協(xié)議,不必要調(diào)整任何參數(shù)。采用本發(fā)明,具有大的往返程延遲的連接不會在恢復(fù)丟失的請求消息中有出乎預(yù)料的長延遲,同時(shí)還可免除由于其定時(shí)器滿時(shí)太頻繁引起的許多不必要的和可能有害的過程的調(diào)用(invocation)。
由于定時(shí)器的值不取決于各自的連接,故本發(fā)明可以實(shí)施得可在一個(gè)多連接系統(tǒng)中使所有連接可以共用同樣的第一和第二定時(shí)器。這就顯著降低了更新軟件定時(shí)器中所開銷的處理器和存儲器資源。
當(dāng)在定時(shí)器滿時(shí)前客戶機(jī)沒能從服務(wù)器收到確認(rèn)消息時(shí),請求或確認(rèn)消息可能已經(jīng)丟失,或者往返程延遲出乎預(yù)料的大。在往返程延遲增大的情況下,在由客戶機(jī)收到對初始請求的確認(rèn)消息之前,會有多次再傳送。當(dāng)有增大的往返程延遲時(shí),指數(shù)定時(shí)器補(bǔ)償方法(例如Karn算法)可以使不必要再傳送成為最少。在這種方法中,每當(dāng)需要再次傳送時(shí),甚至當(dāng)出現(xiàn)由不為往返程延遲增大的其它事件引起的不能接收確認(rèn)消息時(shí),便會有補(bǔ)償。因此,恢復(fù)丟失的消息需要具有定時(shí)器補(bǔ)償通常占用的時(shí)間比沒有補(bǔ)償?shù)拈L些。本發(fā)明則沒有這一問題。不管往返程延遲增大還是消息已然丟失,請求消息的冗余傳送通常能夠加速恢復(fù)。在第二定時(shí)器周期之后的下一次再傳送,如果需要,便將定時(shí)器補(bǔ)償量增加一步程。由于需要增加一次重發(fā)的概率隨所完成的再傳送數(shù)目指數(shù)地下降,故恢復(fù)很少由于第二定時(shí)器而延遲。
現(xiàn)就本發(fā)明的性能與“停止和等待”(Stop-and-Wait)方法相比較作如下說明,其中,對冪等和非冪等兩種情況分別地進(jìn)行描述。性能比較是按照遠(yuǎn)程過程調(diào)用所占用的平均時(shí)間作出的。這個(gè)平均時(shí)間的乘法性的逆反給出遠(yuǎn)程過程調(diào)用方法的通過量的量度。
圖9以標(biāo)號900表示按照本發(fā)明方法的冪等情況下兩時(shí)間序列的例子,其中在初始“握手”失敗后,獲得成功“握手”。在冪等情況下,令Tr表是往返程延遲,令T1和T2分別地表示第一和第二定時(shí)器周期,令P為由客戶機(jī)傳送的請求和由服務(wù)器傳送的確認(rèn)的失敗概率(即失敗的“握手”,“握手”為預(yù)定信號的交換,該信號用以建立客戶機(jī)和服務(wù)器間的傳送遠(yuǎn)程過程調(diào)用的連接)。圖9表示初始“握手”失敗的兩種情況一是服務(wù)器沒能收到來自客戶機(jī)902的請求,一是客戶機(jī)沒能收到從服務(wù)器904來的確認(rèn)消息。
圖10以標(biāo)號1000示出說明按照本發(fā)明方法的冪等情況下四時(shí)序的例子,其中有二個(gè)初始“握手”失敗一是服務(wù)器沒能從客戶機(jī)收到初始請求1002和冗余請求1004;二是在用戶服務(wù)器沒能從客戶機(jī)收到初始請求時(shí),服務(wù)器收到了冗余請求,而客戶機(jī)沒能收到對該冗余請求的確認(rèn)消息1010;三是在服務(wù)器從客戶機(jī)收到初始請求1012時(shí),客戶機(jī)沒能收到對該初始請求的確認(rèn)消息1014,而服務(wù)器沒能從客戶機(jī)收到冗余請求1016;四是服務(wù)器從客戶機(jī)收到初始請求1022,客戶機(jī)沒能從服務(wù)器收到該初始請求的確認(rèn)消息1024,服務(wù)器收到由客戶機(jī)發(fā)送冗余請求1026,而客戶機(jī)沒能從服務(wù)器收到該冗余請求的確認(rèn)消息。在所有四種情況中,在二次失敗的“握手”之后,有一次成功的“握手”。
借助于檢驗(yàn)各數(shù)字,并預(yù)以推廣,便可得到下列每一遠(yuǎn)程過程調(diào)用所占用的平均時(shí)間T*T*=Tr+(1-p)pΣk=0∞(T1+kT2)pk]]>T*=Tr+(1-p)pT1(11-p)+(1-p)p2T2(11-p)2]]>T*=Tr+(p1-p){(1-p)T1+pT1+pT2}]]>Tr表示往返程延遲時(shí)間,P表示客戶機(jī)所傳送的請求失敗和服務(wù)器確認(rèn)消息失敗的概率,k表示從0至無穹大整數(shù)值,T1表示預(yù)定第一定時(shí)器滿時(shí)周期的值,T2表示預(yù)定第二定時(shí)器滿時(shí)周期的值。
令Ts為停止與等待協(xié)議的每一事例的平均時(shí)間,眾所周知Ts=Tr1-p]]>式中Tr也是表示往返程延遲時(shí)間,p表示客戶機(jī)發(fā)送的請求和服務(wù)器發(fā)送確認(rèn)的概率。
于是,T*=Ts-(p1-p){Tr-{(1-p)T1+pT2}}]]>式中,若Tr>(1+p)T1+pT2,則T*<Ts,并可以選取T1和T2,使之滿足上述不等式。因此,本發(fā)明具有比停止與等待協(xié)議(1/Ts)高的通過量(T*的乘法性逆反)。借助于有冗余請求,在第一定時(shí)器滿時(shí)周期后,再發(fā)送每一初始請求。此外,只有在第二或更高級事件(即,它需要至少二次“握手”失敗)之后才招致第二滿時(shí)周期。
圖11以標(biāo)號1100表示按照本發(fā)明方法的非冪等情況下一個(gè)時(shí)序的例子,其中在初始“握手”失敗之后得到成功的“握手”。令q為在任一方向傳輸中丟失消息的概率。僅若收到一個(gè)請求消息1102和相應(yīng)的確認(rèn)消息1104兩者之后,才得到一次“握手”。因此,p和q有如下關(guān)系p=q+(1-p)q或(1-p)2=(1-q)2式中p表示客戶機(jī)發(fā)送請求失敗和服務(wù)器發(fā)送確認(rèn)消息失敗的概率。請求傳輸?shù)耐党萄舆tTr總會發(fā)生。因此,在延遲(Tr+T1)之后完成過程調(diào)用的概率為q(1-p)。
圖12以標(biāo)號1200表示按照本發(fā)明方法的非冪等情況下三時(shí)序的例子,其中,在兩次初始“握手”失敗后1202得到成功的“握手”。正如從圖12可以看到的那樣,正好引起T2一次的概率為h(1-p),式中,h=(1-q)q+q2+q2(1-q)=q(1-q)+qp在非冪等情況中每次遠(yuǎn)程過程調(diào)用所占用的平均時(shí)間如下T*=Tr+p(1-p){1+p+p2+p3+…}T1+h(1-p){1+2p+3p2+4p3+…}T2因此,T*=Tr+pT1+(h1-p)T2]]>它可以如下表示,T*=Ts-(p1-p){Tr-{(1-p)T1+hpT2}}]]>因此,若Tr>(1-p)T1+hpT2,]]>則T*<Ts十分清楚,當(dāng)q趨近于0時(shí),h/p趨近于0.5。在這種情況下,T2大有提供相對小的延遲的優(yōu)點(diǎn)。然而,對于很小的p值,且若T2小于Tr的小整數(shù)倍時(shí),則T*小于Ts。
本發(fā)明可以應(yīng)用于編碼數(shù)據(jù)在不可靠網(wǎng)路上的傳輸。在進(jìn)行編碼之前可以加入檢錯(cuò)信息??梢圆捎弥刂脜f(xié)議來使編碼器重置,重置協(xié)議當(dāng)在定時(shí)時(shí)間滿時(shí)前收不到確認(rèn)時(shí)采用定時(shí)器產(chǎn)生另一重置請求。在先有技術(shù)中,如果譯碼器在其定時(shí)器滿時(shí)之前仍不能從編碼器收到有關(guān)前一個(gè)重置請求的確認(rèn)消息,則它含重置它的定時(shí)器。這一步驟一直重復(fù),直至請求得到成功確認(rèn)為止。
數(shù)據(jù)壓縮重置是過多頻度的重置的一種非冪等過程,可能潛在地影響數(shù)據(jù)壓縮比。由于先有技術(shù)中數(shù)據(jù)壓縮算法的收斂時(shí)間相對小于預(yù)期的再同步的時(shí)間間隔,冗余重置對數(shù)據(jù)壓縮性能沒有多少作用。本發(fā)明的非冪等情況對實(shí)現(xiàn)來說更為復(fù)雜,并具有比冪等情況低的時(shí)延性能。鑒于上述考慮,冪等方式為優(yōu)選的實(shí)施方案。為將本發(fā)明應(yīng)用于上述術(shù)語的重置方案,譯碼器和編碼器狀態(tài)機(jī)可以分別如圖13和圖14所示地進(jìn)行實(shí)施。在兩圖中,T1和T2分別地表示第一和第二滿時(shí)周期。RR表示重置請求。
圖13以標(biāo)號1300表示按照本發(fā)明的譯碼器(客戶機(jī))狀態(tài)機(jī)的一個(gè)實(shí)施例的步驟。譯碼器狀態(tài)機(jī)有三個(gè)狀態(tài)開始/正常處理(D0)(步驟1302),等待T1滿時(shí)(D1)(步驟1304)和等待T2滿時(shí)(D2)(步驟1306)。在狀態(tài)D0(步驟1302)中,當(dāng)收到重置確認(rèn)(RE-SET.Conf.)后,譯碼器執(zhí)行重置操作(步驟1308),并返回到D0狀態(tài)(步驟1302)。當(dāng)在D0狀態(tài)(步驟1302)時(shí),譯碼器或是等待編碼器進(jìn)行初始同步,或是已經(jīng)與編碼器同步,并以預(yù)定的方式譯碼數(shù)據(jù)。當(dāng)譯碼器檢測到失(去同)步后,它便發(fā)送重置請求(RR),啟動(dòng)定時(shí)期T1,并進(jìn)入狀態(tài)D1(步驟1310)。當(dāng)在狀態(tài)D1(步驟1304)時(shí),譯碼器等待重置確認(rèn)或T1滿時(shí)。在狀態(tài)D1,將數(shù)據(jù)丟棄而不進(jìn)行譯碼,并進(jìn)一步忽略失步指示。如果收到一個(gè)重置確認(rèn),則譯碼器返回到狀態(tài)D0(步驟1318)。如果T1滿時(shí),則編碼器發(fā)送一個(gè)另加的重置請求(RR2),啟動(dòng)定時(shí)器T2,并進(jìn)入狀態(tài)D2(步驟1312)。當(dāng)在狀態(tài)D2時(shí),譯碼器等待T2周期(通常大于T1)以得到重置確認(rèn)(步驟1306)。在這一狀態(tài)中,譯碼器丟棄數(shù)據(jù),并忽略失步指示。如果收到一個(gè)重置確認(rèn),則譯碼器返回狀態(tài)D0(步驟1316)。如果T2滿時(shí),則譯碼器發(fā)送另一重置請求,同時(shí)啟動(dòng)T2定時(shí)器(步驟1314)。重復(fù)進(jìn)行這一過程,直至收到一個(gè)重置確認(rèn)為止。如圖14以標(biāo)號1400所示的,與圖13譯碼器一起工作的編碼器狀態(tài)機(jī)只有一個(gè)狀態(tài),正常處理狀態(tài)(步驟1402)。編碼器在從譯碼器(步驟1404)收到每一重置請求時(shí),總是將它自身重置,同時(shí)發(fā)送RESET.conf.。為了同步的初始化,編碼器重置它自身,并發(fā)送一個(gè)RE-SET.conf.給譯碼器。
在采用相同的第一和第二滿時(shí)周期完成所有連接的條件下,第一和第二定時(shí)器便可以由第一和第二虛擬定時(shí)器分別地代替,例如用片時(shí)鐘實(shí)現(xiàn)的虛擬定時(shí)器。這就是說,如圖15以標(biāo)號1500所示的,在要啟動(dòng)給定定時(shí)器的時(shí)間點(diǎn)落入給定時(shí)隙(1502)時(shí),相應(yīng)的虛擬定時(shí)器將在下一時(shí)隙(1504)的末了滿時(shí)。
本發(fā)明還可以用于廣泛的應(yīng)用范圍,諸如加密、鑒權(quán)、調(diào)制解調(diào)訓(xùn)練、數(shù)率協(xié)商和在不可靠通信信道上的其它可靠的輕型(即非流屬性)傳輸協(xié)議。
本發(fā)明可以體現(xiàn)在其它具體形式中;而不違背本發(fā)明的精神和重要特性。所描述的實(shí)施例可以認(rèn)為是僅作為說明性的,并不是限制性的。據(jù)此,本發(fā)明的范圍應(yīng)由所附的權(quán)利要求書而不是前面的描述來限定。所有出自與權(quán)利要求書等效的含義和范圍內(nèi)的變動(dòng)都應(yīng)包括在本發(fā)明的范圍之內(nèi)。
權(quán)利要求
1.一種利用多個(gè)重發(fā)定時(shí)器經(jīng)由不可靠通信信道提供從客戶機(jī)至服務(wù)器的遠(yuǎn)程過程調(diào)用的方法,其特征在于,包括以下步驟1A)由客戶機(jī)給服務(wù)器發(fā)送一個(gè)請求,并等待確認(rèn)消息;1B)在每一預(yù)定順序的滿時(shí)周期后由客戶機(jī)給服務(wù)器重發(fā)請求(各滿時(shí)周期由多個(gè)重發(fā)定時(shí)器實(shí)現(xiàn)),直至收到確認(rèn)消息為止。
2.根據(jù)權(quán)利要求1的方法,其特征在于,該預(yù)定的滿時(shí)周期序列由第一滿時(shí)周期開始,后跟預(yù)定重復(fù)數(shù)目的第二滿時(shí)周期,并將第二滿時(shí)周期預(yù)選為大于第一滿時(shí)周期,在選取時(shí),有2A~2A中至少一個(gè)2A)多個(gè)客戶機(jī)—服務(wù)器對共用一個(gè)確定第一滿時(shí)周期的重發(fā)定時(shí)器,并且第一滿時(shí)周期為2A1)大于預(yù)定的突發(fā)誤碼持續(xù)時(shí)間;及2A2)小于共用重發(fā)定時(shí)器的各客戶機(jī)—服務(wù)器對的任一往返程延遲;及2B)多個(gè)客戶機(jī)—服務(wù)器對共用一個(gè)確定第二滿時(shí)周期的重發(fā)定時(shí)器,第二滿時(shí)周期為2B1)大于共用重發(fā)定時(shí)器的各客戶機(jī)—服務(wù)器對的任一往返程延遲;及2B2)小于預(yù)定的較高層協(xié)議的拆線的預(yù)定滿時(shí)時(shí)間。
3.根據(jù)權(quán)利要求1的方法,其特征在于,預(yù)定的滿時(shí)周期序列包括至少下列之一3A)第一滿時(shí)周期T1,它重復(fù)第一預(yù)定的次數(shù);及3B)第二滿時(shí)周期T2,它重復(fù)第二預(yù)定的次數(shù),并且凡選用時(shí),其中第三滿時(shí)周期T3跟在第二滿時(shí)之后,凡選用時(shí),它重復(fù)預(yù)定的次數(shù)。
4.根據(jù)權(quán)利要求1的方法,其特征在于,預(yù)定的滿時(shí)周期序列包括第一滿時(shí)周期和第二滿時(shí)周期,它們交替地執(zhí)行預(yù)定的循環(huán)次數(shù)。
5.一種利用預(yù)定第一重發(fā)定時(shí)器和預(yù)定第二重發(fā)定時(shí)器為多個(gè)客戶機(jī)—服務(wù)器對經(jīng)由不可靠通信信道提供遠(yuǎn)程過程調(diào)用的通信系統(tǒng),其中每個(gè)客戶機(jī)具有一個(gè)客戶狀態(tài)機(jī),其特征在于,包括5A)一個(gè)開始/正常處理狀態(tài)單元,可操作地耦合到第一等待狀態(tài)單元和第二等待狀態(tài)單元,用于開始/正常處理遠(yuǎn)程過程調(diào)用;5B)該第一等待狀態(tài)單元,可操作地耦合到開始/正常處理狀態(tài)單元,用以等待預(yù)定第一滿時(shí)周期T1的滿時(shí);5C)該第二等待狀態(tài)單元,可操作地耦合到第一等待狀態(tài)單元,用以等待預(yù)定第二滿時(shí)周期T2的滿時(shí),其中,將第一滿時(shí)周期選取為大于或等于預(yù)定的其間有連續(xù)請求消息中的去相關(guān)差錯(cuò)的周期,以便使相鄰的請求不受突發(fā)誤碼的影響,并將第二滿時(shí)周期選取為大于第一滿時(shí)周期。
6.根據(jù)權(quán)利要求5的通信系統(tǒng),其特征在于,包括6A~6C中至少一項(xiàng)6A)其中對于每一客戶機(jī)—服務(wù)器對在開始處理時(shí),由客戶機(jī)發(fā)送一個(gè)初始請求,并由第一定時(shí)器開始預(yù)定的第一滿時(shí)周期T1;客戶機(jī)隨后等待T1的滿時(shí)凡在T1中收到確認(rèn)消息,則客戶機(jī)取消T1,并再循環(huán)至開始處理;凡T1滿時(shí)而客戶機(jī)沒有收到確認(rèn)消息,則客戶機(jī)發(fā)出冗余請求,同時(shí)通過啟動(dòng)第二定時(shí)器開始預(yù)定的第二滿時(shí)周期T2;客戶機(jī)隨后等待T2的滿時(shí);凡在T2中收到確認(rèn)消息,則客戶機(jī)取消T2,并再循環(huán)至開始處理;凡T2滿時(shí)而客戶機(jī)沒收到確認(rèn)消息,則客戶機(jī)發(fā)送相繼請求,啟動(dòng)另一個(gè)時(shí)長的T2的滿時(shí)周期,而后再循環(huán)至等待T2的滿時(shí),重復(fù)發(fā)送相繼的請求,直至出現(xiàn)下列之一6A1)客戶機(jī)收到確認(rèn)消息;及6A2)已經(jīng)發(fā)送預(yù)定數(shù)目的相繼請求;6B)其中,在冪等過程中,對于每一客戶機(jī)—服務(wù)器對,服務(wù)器開始處理,并且當(dāng)從客戶機(jī)收到請求時(shí),服務(wù)器則執(zhí)行預(yù)定的程序,同時(shí)給客戶機(jī)發(fā)送確認(rèn)消息;及6C)其中,在非冪等過程中,對于每一客戶機(jī)—服務(wù)器對,服務(wù)器有6C1)服務(wù)器等待初始請求、冗余請求和相繼請求;6C2)凡已收到初始請求,服務(wù)器則執(zhí)行預(yù)定的程序,同時(shí)給客戶機(jī)發(fā)送確認(rèn)消息;6C3)凡收到冗余請求和相繼請求中的一個(gè)請求,則服務(wù)器執(zhí)行預(yù)定的程序,并給客戶機(jī)發(fā)送確認(rèn)消息;6C4)凡前次收到的請求為初始請求,并接著收到冗余請求和相繼請求中的一個(gè)請求,則服務(wù)器仍保持響應(yīng)于請求;及6C5)凡前次收到的請求為初始請求,并接著又收到另一初始請求,則服務(wù)器執(zhí)行預(yù)定的程序,并給客戶機(jī)發(fā)送確認(rèn)消息。
7.一種利用多個(gè)重發(fā)定時(shí)器為多個(gè)客戶機(jī)—服務(wù)器對經(jīng)由不可靠靠通信信道提供遠(yuǎn)程過程調(diào)用的通信系統(tǒng),其特征在于,對于每個(gè)客戶機(jī)—服務(wù)器對,客戶機(jī)采用以下步驟7A)由客戶機(jī)給服務(wù)器發(fā)送一個(gè)請求,并等待確認(rèn)消息;7B)在每一預(yù)定順序的滿時(shí)周期之后,由客戶機(jī)給服務(wù)器發(fā)送請求,直至收到確認(rèn)消息為止。
8.根據(jù)權(quán)利要求7的通信系統(tǒng),其特征在于,至少有8A~8B的一項(xiàng)8A)對于每一客戶機(jī)—服務(wù)器對,接收多個(gè)請求的服務(wù)器采用冪等過程工作;及8B)對于每一客戶機(jī)—服務(wù)器對,接收多個(gè)請求的服務(wù)器采用冪等過程工作。
9.一種可對多個(gè)編碼器—譯碼器對提供編碼數(shù)據(jù)在不可靠通信信道上傳輸?shù)耐ㄐ畔到y(tǒng),其中遠(yuǎn)程過程調(diào)用是利用一種實(shí)施多個(gè)重發(fā)定時(shí)器的方法來提供的,以便同步下述的每對功能上代表服務(wù)器的編碼器和功能上代表客戶機(jī)的譯碼器,亦即,每個(gè)編碼器—譯碼器對,其特征在于,該方法包括以下步驟9A)由譯碼器給編碼發(fā)送一個(gè)同步的請求,并等待確認(rèn)消息;及9B)在由多個(gè)重發(fā)定時(shí)器實(shí)現(xiàn)的一個(gè)預(yù)定的滿時(shí)周期序列的每個(gè)滿時(shí)周期之后,由譯碼器給編碼器發(fā)送請求,直至收到確認(rèn)消息為止。
10.根據(jù)權(quán)利要求9的通信系統(tǒng),其特征在于,對于每個(gè)編碼器—譯碼器對而言,10A)編碼器包括一個(gè)具有一種狀態(tài)的編碼器狀態(tài)機(jī),該狀態(tài)是,在當(dāng)從譯碼器收到每一重置請求時(shí)編碼器重置其自身并給譯碼器發(fā)送確認(rèn)消息之后,編碼器總是返回的狀態(tài),及10B)譯碼器包括譯碼器狀態(tài)機(jī),包含10B1)一個(gè)開始/正常處理D0單元,操作上接至第一等待單元D1和第二等待單元;10B2)第一等待單元D1,操作上接至開始/正常處理單元D0,用于設(shè)置第一滿時(shí)周期;10B3)第二等待單元D2,操作上接至第一等待單元D1,用于設(shè)置第二滿時(shí)周期;其中第一滿時(shí)周期預(yù)選取為大于或等于一個(gè)預(yù)定的周期,在該周期時(shí)提供連續(xù)請求消息中的差錯(cuò)事件的去相關(guān),以便使相鄰請求消息不受突發(fā)誤碼的影響,并且第二滿時(shí)周期預(yù)選取為大于第一滿時(shí)周期,并且對于每個(gè)編碼器—譯碼器對,當(dāng)譯碼器狀態(tài)機(jī)收到重置確認(rèn)時(shí)選擇狀態(tài)D0,由譯碼器狀態(tài)機(jī)執(zhí)行重置操作,并返回D0狀態(tài),當(dāng)在狀態(tài)D0時(shí),為10C~10D之一10C)由譯碼器狀態(tài)機(jī)等待編碼器進(jìn)行初始同步;及10D)若已經(jīng)與編碼器同步,由譯碼器狀態(tài)機(jī)按照預(yù)定的譯碼方案譯碼數(shù)據(jù);當(dāng)譯碼器狀態(tài)機(jī)檢測到失步后,由譯碼器狀態(tài)機(jī)發(fā)送重置請求,啟動(dòng)定時(shí)器T1,并進(jìn)入狀態(tài)D1;當(dāng)在狀態(tài)D1時(shí),由譯碼器狀態(tài)機(jī)等待重置確認(rèn)和T1滿時(shí)中的任一個(gè);在狀態(tài)D1,由譯碼狀態(tài)機(jī)丟棄數(shù)據(jù)而不對數(shù)據(jù)進(jìn)行譯碼,并忽略進(jìn)一步出現(xiàn)的失步指示;凡收到重置確認(rèn),則由譯碼器狀態(tài)機(jī)重置為狀態(tài)D0;凡T1滿時(shí),則由譯碼器狀態(tài)機(jī)發(fā)送另一重置請求,啟動(dòng)定時(shí)器T2,并進(jìn)入D2狀態(tài);當(dāng)在D2狀態(tài)時(shí),由譯碼器狀態(tài)機(jī)等待重置確認(rèn),直至定時(shí)器T2滿時(shí);在狀態(tài)D2中,由譯碼器狀態(tài)機(jī)丟棄數(shù)據(jù),并忽略進(jìn)一步出現(xiàn)的失步指示;凡收到重置確認(rèn),由譯碼器狀態(tài)機(jī)返回狀態(tài)D0;及凡T2滿時(shí),則由譯碼器狀態(tài)機(jī)發(fā)送另一重置請求,并再次啟動(dòng)T2定時(shí)器,重復(fù)發(fā)送重置請求,直至出現(xiàn)下列之一收到重置確認(rèn)和已發(fā)送預(yù)定數(shù)目的重置請求,并且凡要進(jìn)一步選擇,其中第一滿時(shí)周期和第二滿時(shí)周期的重發(fā)定時(shí)器可由虛擬定時(shí)器實(shí)現(xiàn),并且凡要進(jìn)一步選擇,其中虛擬定時(shí)器為片時(shí)間鐘。
全文摘要
方法(300)和通信系統(tǒng)(400、500、600、1300、1400)采用多個(gè)重發(fā)定時(shí)器提供從客戶機(jī)至服務(wù)器間經(jīng)由不可靠通信信道的遠(yuǎn)程過程調(diào)用。該方法包括由客戶機(jī)給服務(wù)器發(fā)送請求,并等待確認(rèn)消息;在每一由多個(gè)重發(fā)定時(shí)器實(shí)現(xiàn)的預(yù)定的滿時(shí)周期序列之后,由客戶機(jī)給服務(wù)器重發(fā)請求,直至收到確認(rèn)消息為止。
文檔編號H04L29/06GK1149919SQ96190264
公開日1997年5月14日 申請日期1996年1月29日 優(yōu)先權(quán)日1995年3月30日
發(fā)明者魏秋立, 岳龍辰, 詹姆斯·A·帕斯考-安德森 申請人:摩托羅拉公司