專利名稱:重復(fù)分組檢測(cè)器、方法、程序存儲(chǔ)設(shè)備和互連網(wǎng)絡(luò)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明針對(duì)對(duì)穿過(guò)數(shù)據(jù)處理節(jié)點(diǎn)網(wǎng)絡(luò)中各條路徑的分組重復(fù)進(jìn)行檢測(cè)的問(wèn)題。
背景技術(shù):
非常希望為諸如數(shù)字集中計(jì)算(NIC)之類的運(yùn)行于多個(gè)領(lǐng)域中的應(yīng)用程序配備能夠檢測(cè)數(shù)據(jù)處理網(wǎng)絡(luò)中的分組重復(fù)的接口機(jī)制。NIC應(yīng)用程序特別地以在專用于解決各種問(wèn)題的節(jié)點(diǎn)之間發(fā)送部分結(jié)果的方式操作。因此,NIC應(yīng)用程序和類似的程序(對(duì)于這些程序,數(shù)據(jù)分組的互換有助于改善性能)將得益于促進(jìn)數(shù)據(jù)分組的迅速傳送而不必顧慮到節(jié)點(diǎn)之間的分組重復(fù)的方法。很多應(yīng)用依賴于僅確保一次“消息傳送完成”通知,并且在已經(jīng)向ULP(上層協(xié)議)或終端用戶發(fā)送通知之后,不會(huì)發(fā)生不期望的數(shù)據(jù)緩沖器超載(override)。
例如,在網(wǎng)絡(luò)檢測(cè)到循環(huán)并修改構(gòu)成生成樹(shù)的鏈路(這是用于在網(wǎng)絡(luò)中對(duì)分組進(jìn)行路由的機(jī)制)的期間可能會(huì)發(fā)生重復(fù)。術(shù)語(yǔ)“生成樹(shù)”是一種圖形理論概念,其描述了針對(duì)數(shù)據(jù)處理系統(tǒng)中的節(jié)點(diǎn)集合的互連圖形的相連子集,其中呈現(xiàn)了所有的節(jié)點(diǎn)和鏈路,但其不具有閉環(huán)。注意,對(duì)于任意給定的互連圖形,對(duì)生成樹(shù)的選擇和/或確定不是唯一的。目前,諸如以太網(wǎng)(其是用于數(shù)據(jù)分組傳輸?shù)娜舾蓞f(xié)議之一)之類的網(wǎng)絡(luò)是這樣一種網(wǎng)絡(luò),即其可以采用生成樹(shù)來(lái)確定用于數(shù)據(jù)分組傳輸?shù)臄?shù)據(jù)路徑。生成樹(shù)方法用于保證相同的分組不會(huì)被目的地網(wǎng)絡(luò)適配器接受兩次。然而,隨著網(wǎng)絡(luò)拓?fù)涓淖?如同在向節(jié)點(diǎn)集合添加節(jié)點(diǎn)或從中刪除節(jié)點(diǎn)時(shí)可能出現(xiàn)的那樣),會(huì)存在某些時(shí)間段,其中有可能出現(xiàn)一個(gè)或多個(gè)瞬態(tài)運(yùn)行循環(huán),在這些瞬態(tài)運(yùn)行循環(huán)期間,數(shù)據(jù)分組多次到達(dá)目的地節(jié)點(diǎn),直到路由機(jī)制檢測(cè)到該循環(huán)并且刪除某些路由以保證能夠合適地實(shí)現(xiàn)一個(gè)適當(dāng)形成的新的生成樹(shù)。
下面參考圖1-圖5更具體地討論該問(wèn)題。
需要NIC級(jí)別的重復(fù)分組檢測(cè)的應(yīng)用的一個(gè)例子是RDMA(遠(yuǎn)程直接存儲(chǔ)器訪問(wèn))傳輸協(xié)議,其中上層協(xié)議(ULP)希望網(wǎng)絡(luò)中沒(méi)有分組重復(fù)以便正確工作(2004年12月20日提交的題為“Third Party,Broadcast,Multicast and Conditional RDMA Operations”(第三方、廣播、組播和條件RDMA操作)、序列號(hào)為11/017,355的美國(guó)專利申請(qǐng))。對(duì)于RDMA操作,難題是在接收端網(wǎng)絡(luò)適配器上有效地檢測(cè)重復(fù)以及在網(wǎng)絡(luò)中發(fā)生消息的分組重復(fù)時(shí)不公布針對(duì)消息傳送的完成通知。由于上層協(xié)議(ULP)不參與解析RDMA消息的每個(gè)分組(這由網(wǎng)絡(luò)適配器完成),因此不能采用上層協(xié)議來(lái)檢測(cè)和丟棄重復(fù)分組。接收端網(wǎng)絡(luò)適配器直接將RDMA消息的分組移動(dòng)到目標(biāo)緩沖器。另一個(gè)難題是在不需要在適配器上進(jìn)行復(fù)雜的狀態(tài)維護(hù)的情況下,保持用于確定分組重復(fù)的邏輯非常簡(jiǎn)單并且迅速。此外,應(yīng)當(dāng)試圖保證傳輸能夠利用具有一對(duì)節(jié)點(diǎn)之間的多個(gè)路由的實(shí)際交換機(jī)的優(yōu)點(diǎn),該傳輸應(yīng)當(dāng)不需要對(duì)分組進(jìn)行按順序的傳送。
其他人已經(jīng)試圖以不同的方式解決重復(fù)數(shù)據(jù)分組傳輸?shù)膯?wèn)題。例如,在已公開(kāi)的序列號(hào)為2003/02321596 A1的美國(guó)專利申請(qǐng)(“Processing a Duplicate Data Packet”,對(duì)重復(fù)數(shù)據(jù)分組進(jìn)行處理)中描述了一種用于通過(guò)將分組中的時(shí)戳與所接收的最后的有效分組的時(shí)戳核對(duì)并檢查表明設(shè)備是處于激活狀態(tài)還是非激活狀態(tài)的事件比特來(lái)檢測(cè)重復(fù)分組的方法。這與本發(fā)明完全不同,原因是本發(fā)明不涉及時(shí)戳,然而,要解決的基本問(wèn)題是類似的。
此外,已公開(kāi)的序列號(hào)為2004/0062248A1的美國(guó)專利申請(qǐng)(“Sequence Number Schemes for Acceptance/Rejection of DuplicatedPackets in a Packet-Based Network”,用于在基于分組的網(wǎng)絡(luò)中接受和/或拒絕重復(fù)的分組的序列號(hào)方案)中解決的問(wèn)題同樣類似于本發(fā)明解決的問(wèn)題。然而,完全不同的是在基于分組的傳輸環(huán)境中采用序列號(hào)方案來(lái)接受和/或拒絕重復(fù)的分組的想法。同樣,在已公開(kāi)的序列號(hào)為2005/0078653 A1的美國(guó)專利申請(qǐng)(“A Method and Apparatus forData Communications Over Multiple Channels”,一種用于多個(gè)信道上的數(shù)據(jù)通信的方法和設(shè)備)中,作者在其中描述了一種方法,該方法針對(duì)采用一種用基于序列號(hào)的重復(fù)作為“過(guò)濾”(即去掉)重復(fù)分組的基礎(chǔ)的方法在多個(gè)信道上傳送數(shù)據(jù)。然而,通過(guò)對(duì)比,與基于序列號(hào)的過(guò)濾所需的存儲(chǔ)器需求相關(guān)聯(lián)的問(wèn)題正好是促成提出本發(fā)明的問(wèn)題。除了其中的與分組重復(fù)檢測(cè)有關(guān)的討論之外,具有序列號(hào)2005/0078653 A1的已公開(kāi)的專利申請(qǐng)與本申請(qǐng)沒(méi)有密切關(guān)系。
美國(guó)專利No.6,167,051(“Network Node and Method of PacketTransfer”,用于分組傳送的網(wǎng)絡(luò)節(jié)點(diǎn)和方法)中的所描述的成果涉及對(duì)組播業(yè)務(wù)的調(diào)度和路由,以及一種用于對(duì)組播業(yè)務(wù)進(jìn)行調(diào)度和路由以便避免產(chǎn)生重復(fù)分組的裝置。該成果不涉及重復(fù)數(shù)據(jù)分組的過(guò)濾并且與本發(fā)明關(guān)系不密切。
美國(guó)專利No.6,853,641(“Method of Protecting Traffic in a MeshNetwork”,在網(wǎng)狀網(wǎng)絡(luò)中保護(hù)業(yè)務(wù)的方法)中的所描述的成果描述了有目的地傳輸重復(fù)分組以保證網(wǎng)絡(luò)上的高可靠性以及為分組標(biāo)上序列號(hào)以便接收方能夠丟棄副本并重構(gòu)原始分組流。這樣,其不僅與本發(fā)明顯著不同,并且其實(shí)際上給出了偏離本發(fā)明的主要原理(即避免重復(fù)數(shù)據(jù)分組的產(chǎn)生和傳輸)的啟示。
美國(guó)專利No.5,610,595(“Packet Radio Communication SystemProtocol”,分組無(wú)線通信系統(tǒng)協(xié)議)描述了一種用以基于所發(fā)送分組中的重復(fù)計(jì)數(shù)來(lái)進(jìn)行分組重復(fù)檢測(cè)的方法。除了這一點(diǎn)是顯著的不同之外,該系統(tǒng)的無(wú)線方面沒(méi)有提出引起在此所討論的數(shù)據(jù)分組重復(fù)的主要原因之一,即網(wǎng)絡(luò)中節(jié)點(diǎn)的數(shù)目和連接的變化。
美國(guó)專利No.6,671,264(“Method for Detecting Invalid Packets byAssigning Super Transaction Number”,用于通過(guò)分配高級(jí)事務(wù)號(hào)來(lái)檢測(cè)無(wú)效分組的方法)也是與本發(fā)明不相關(guān)的,這不僅是因?yàn)樵搶@褂昧耸聞?wù)號(hào)(類似于序列號(hào)方法),而且是因?yàn)樵搶@谄洳僮髦性噲D在源處抑制重復(fù)數(shù)據(jù)分組的傳輸,這與由網(wǎng)絡(luò)互連圖形結(jié)構(gòu)的變化而引起的問(wèn)題相反。
本申請(qǐng)中所描述的機(jī)制也不同于標(biāo)準(zhǔn)的用于檢測(cè)假分組(ghostpacket)和重復(fù)分組的基于滑動(dòng)窗的協(xié)議。此外,在那種方法中,重復(fù)分組由發(fā)送方在預(yù)定的超時(shí)之后插入。由發(fā)送方插入的重復(fù)分組還具有設(shè)置為表明該重復(fù)分組是重復(fù)傳輸?shù)奶囟ū忍?,為檢測(cè)重復(fù)的目的,接收方用該特定比特來(lái)進(jìn)行檢查。
在此處所描述的發(fā)明與現(xiàn)有技術(shù)中所提供的方案之間有很多不同。本發(fā)明具有以下優(yōu)點(diǎn)1.接收端不要求為重復(fù)分組標(biāo)上特定比特。
2.不需要滑動(dòng)窗協(xié)議或相關(guān)聯(lián)的狀態(tài)維護(hù)。該機(jī)制不需要接收端發(fā)送周期性的確認(rèn)以保證發(fā)送端的流控窗能夠前進(jìn)。
3.此外,如果來(lái)自接收端的確認(rèn)發(fā)生延遲(如在標(biāo)準(zhǔn)的滑動(dòng)窗協(xié)議中經(jīng)常發(fā)生的那樣),則不會(huì)不必要地抑制發(fā)送端。
4.在上述已公開(kāi)的序列號(hào)為2004/0062248 A1的美國(guó)專利申請(qǐng)中,接收方必須保持定時(shí)器對(duì)分組是否已經(jīng)在網(wǎng)絡(luò)中存在超過(guò)預(yù)期的時(shí)間、分組是否不按序列(out of sequence)到達(dá)、或到達(dá)分組的序列號(hào)是否小于所接收的最近的序列號(hào)的情況進(jìn)行檢查。在本發(fā)明中,在接收端不需要這種基于預(yù)期時(shí)間的檢查。
5.就指令的順序和必要狀態(tài)信息的量而言,本方法的整體效率與其他方法相比要高得多。
發(fā)明內(nèi)容
因此,在此提供了一種用于在多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中檢測(cè)是否存在重復(fù)數(shù)據(jù)分組的方法。該方法包括隨多個(gè)數(shù)據(jù)分組(除了一個(gè)這種分組之外)發(fā)送具有隨機(jī)生成的比特的字段。這些比特是針對(duì)待發(fā)送的每個(gè)分組而生成的。對(duì)于消息中這些分組中的一個(gè)分組,發(fā)送計(jì)算出的具有基于其他數(shù)據(jù)分組的字段中的隨機(jī)比特的非零校驗(yàn)和值的字段。針對(duì)所接收的每個(gè)數(shù)據(jù)分組,累計(jì)這些字段的和并將其用于確定所接收的任意分組是否重復(fù)。
因此,本發(fā)明的一個(gè)目的是提供一種用于在數(shù)據(jù)處理單元或節(jié)點(diǎn)的互連網(wǎng)絡(luò)中檢測(cè)重復(fù)數(shù)據(jù)分組的機(jī)制。
本發(fā)明的另一個(gè)目的是基于UD(用戶數(shù)據(jù))傳輸協(xié)議提高RDMA能力的有用性和利用率。
本發(fā)明的又一個(gè)目的是提供一種用于數(shù)據(jù)分組重復(fù)檢測(cè)的方法,可以通過(guò)擴(kuò)大分組中包含隨機(jī)比特的字段而在減小錯(cuò)誤概率方面使得數(shù)據(jù)分組重復(fù)檢測(cè)達(dá)到任何精確度。
本發(fā)明的又一個(gè)目的是提供一種簡(jiǎn)化網(wǎng)絡(luò)適配器設(shè)計(jì)的數(shù)據(jù)分組重復(fù)檢測(cè)協(xié)議。
本發(fā)明的又一個(gè)目的是提供一種用于檢測(cè)數(shù)據(jù)分組重復(fù)的機(jī)制,其不需要分組的計(jì)數(shù)、定時(shí)和確認(rèn),滑動(dòng)窗協(xié)議,或其他復(fù)雜的狀態(tài)跟蹤就能檢測(cè)重復(fù)。
本發(fā)明的又一個(gè)目的是減少網(wǎng)絡(luò)拓?fù)涞母淖儗?duì)性能產(chǎn)生的影響。
最后但不局限于此,本發(fā)明的一個(gè)目的是改善互連的數(shù)據(jù)處理網(wǎng)絡(luò)的操作和性能以及其在傳輸模型中的使用,這種使用必須避免接收端接受重復(fù)分組。
在此對(duì)通過(guò)本發(fā)明的各實(shí)施例來(lái)實(shí)現(xiàn)的一系列期望目的的描述并不意味著暗示或建議單獨(dú)地或共同地在本發(fā)明的最通用的實(shí)施例中或在任意本發(fā)明的更具體的實(shí)施例中將這些目的中的任意目的或全部目的作為實(shí)質(zhì)特征而提出。
特別地指出并清楚地在本說(shuō)明書所附的權(quán)利要求中要求保護(hù)被視為本發(fā)明的主題。然而,通過(guò)參考以下結(jié)合附圖而進(jìn)行的描述,可以最好地理解本發(fā)明(關(guān)于組織和實(shí)現(xiàn)方法)以及其另外的目的和優(yōu)點(diǎn),其中圖1是示出可用于數(shù)據(jù)分組傳輸?shù)木W(wǎng)絡(luò)互連的初始配置的圖形;圖2中的圖形與圖1中示出的圖形相同,但更特別地用粗線示出了作為可用于避免接收重復(fù)數(shù)據(jù)分組的圖形的生成樹(shù)的一部分的那些鏈路;圖3中的圖形與圖2中示出的圖形相同,但其現(xiàn)在表明了由于引入了新的節(jié)點(diǎn)而引起的互連的變化;圖4中的圖形與圖3中示出的圖形相同,但其現(xiàn)在用粗線將某些鏈路示出為構(gòu)造新的生成樹(shù)的過(guò)程中的初始步驟;并且圖5中的圖形與圖4中示出的圖形相同,但其現(xiàn)在示出適用于具有新添加的節(jié)點(diǎn)的網(wǎng)絡(luò)的生成樹(shù)。
具體實(shí)施例方式
在提供對(duì)上述問(wèn)題的解決方案之前,適當(dāng)?shù)淖龇ǖ氖翘峁?duì)要解決的問(wèn)題的本質(zhì)的更詳細(xì)描述。相應(yīng)地,圖1示出了示例性初始網(wǎng)絡(luò)配置。為了加強(qiáng)對(duì)本發(fā)明的結(jié)構(gòu)和功能的理解,節(jié)點(diǎn)數(shù)目限于7。然而,應(yīng)當(dāng)理解,實(shí)際上節(jié)點(diǎn)數(shù)目的范圍通常在幾百到幾千(或甚至更大)?;谒九渲茫鐖D2中的粗黑線所示地構(gòu)造用于進(jìn)行路由的示例性生成樹(shù)。在圖2中的網(wǎng)絡(luò)內(nèi)的任意兩個(gè)節(jié)點(diǎn)之間,使用生成樹(shù)只有一條路線用以到達(dá)另一節(jié)點(diǎn)(由于將生成樹(shù)的結(jié)構(gòu)定義為不具有閉環(huán))。路由協(xié)議經(jīng)由生成樹(shù)鏈路將消息的分組轉(zhuǎn)發(fā)給目的地節(jié)點(diǎn)。這保證了數(shù)據(jù)分組永遠(yuǎn)不會(huì)被傳送多次。如圖3所示,例如通過(guò)利用從配置中的一個(gè)或多個(gè)節(jié)點(diǎn)到新節(jié)點(diǎn)(本例中的節(jié)點(diǎn)8)的鏈路而在網(wǎng)絡(luò)中添加新節(jié)點(diǎn),配置的拓?fù)淇梢愿淖?。由于?jié)點(diǎn)8是新的并且連接到節(jié)點(diǎn)4、5和6,因此起初節(jié)點(diǎn)4、5和6中的全部節(jié)點(diǎn)都有可能希望將其到節(jié)點(diǎn)8的鏈路添加到生成樹(shù)中(參見(jiàn)圖4)。因此,從節(jié)點(diǎn)1到節(jié)點(diǎn)8的分組有可能會(huì)3次到達(dá)節(jié)點(diǎn)8(分別從節(jié)點(diǎn)4、5和6到達(dá)一次)。對(duì)于通過(guò)主機(jī)上的IP棧使數(shù)據(jù)分組分階段傳送(stage)的基于標(biāo)準(zhǔn)網(wǎng)際協(xié)議(IP)的傳輸,可以經(jīng)由IP協(xié)議的上層(TCP,傳輸控制協(xié)議)通過(guò)分組的報(bào)頭解析出的分組序列號(hào)來(lái)容易地檢測(cè)分組重復(fù)。然后,節(jié)點(diǎn)8可以從生成樹(shù)中裁減掉來(lái)自節(jié)點(diǎn)5和節(jié)點(diǎn)6的鏈路(并選擇在生成樹(shù)中添加節(jié)點(diǎn)4與節(jié)點(diǎn)8之間的鏈路)。圖5示出了新的生成樹(shù)。因此,對(duì)于圖1和圖5中示出的狀態(tài)之間的較短的持續(xù)時(shí)間,某些分組有可能多次到達(dá)節(jié)點(diǎn)8。此外,還應(yīng)注意,由節(jié)點(diǎn)8發(fā)送給某些其他節(jié)點(diǎn)的分組也有可能引起分組重復(fù)。
目前已經(jīng)達(dá)到了對(duì)分組重復(fù)問(wèn)題的更詳細(xì)的理解,現(xiàn)在提出對(duì)該問(wèn)題的一種解決方案。所提出的解決方案是基于概率校驗(yàn)和的方法。RDMA(RDMA在此用作示例性應(yīng)用)消息的每個(gè)分組i(除了最后一個(gè)分組)具有添加在報(bào)頭中的r個(gè)比特的隨機(jī)值h[i]。消息的最后一個(gè)分組k具有特定的值h[K],使得h[1]+h[2]+h[K]+…+h[K]=q; (1)其中“q”是某個(gè)預(yù)定的非零校驗(yàn)和值,并且除非以其他方式特別指出,否則上面等式1中的表達(dá)式中以及本文獻(xiàn)的其余部分中的“+”號(hào)是指XOR(異或)運(yùn)算。發(fā)送端和接收端的網(wǎng)絡(luò)適配器維持消息的每個(gè)分組的h值的運(yùn)行校驗(yàn)和。
應(yīng)注意,盡管本發(fā)明的優(yōu)選實(shí)現(xiàn)將所添加的隨機(jī)的r個(gè)比特的字段部署在了分組報(bào)頭中,但其他協(xié)議可以在數(shù)據(jù)分組中的其他位置提供該字段。唯一的要求是該字段要隨數(shù)據(jù)分組發(fā)送并且發(fā)送端和接收端的適配器要對(duì)分組中該隨機(jī)值開(kāi)始的確切位置和該分組的長(zhǎng)度協(xié)商一致。
接收端適配器計(jì)算其接收的消息的前k個(gè)分組的XOR校驗(yàn)和C。并驗(yàn)證該校驗(yàn)和C=q。如果校驗(yàn)和匹配,則可以以非常高的概率可靠地假定在消息的傳送中沒(méi)有發(fā)生分組重復(fù)。如果C≠q,則接收端應(yīng)用程序(例如NIC)得出網(wǎng)絡(luò)中已經(jīng)發(fā)生了分組重復(fù)的結(jié)論。
該方法具有若干顯著的優(yōu)點(diǎn)(1)由于XOR運(yùn)算與發(fā)送或接收的順序無(wú)關(guān),因此該消息的分組可以不按順序到達(dá)。就通過(guò)任意源-目的地對(duì)之間的多條路徑使得消息的不同分組可以穿過(guò)交換機(jī)中的不同路由從而在網(wǎng)絡(luò)中對(duì)分組進(jìn)行跟蹤以及利用可能的并行機(jī)制而言,這一點(diǎn)是非常有利的。這一方面產(chǎn)生的原因是XOR運(yùn)算既是結(jié)合的又是可交換的。
(2)對(duì)適配器的空間要求僅僅是對(duì)于所討論的端點(diǎn)網(wǎng)絡(luò)適配器每個(gè)正在傳輸?shù)南⒂衦個(gè)比特的值。因此,對(duì)該算法的空間要求是每個(gè)正在傳輸?shù)南⒂衦個(gè)比特。發(fā)送端和接收端的NIC可以通過(guò)簡(jiǎn)單的計(jì)算根據(jù)每個(gè)分組的消息和有效載荷的長(zhǎng)度來(lái)計(jì)算每個(gè)消息的預(yù)期分組數(shù)目。
(3)該算法沒(méi)有必需的附加狀態(tài)維護(hù)。
(4)一個(gè)值與其本身的XOR的結(jié)果是0校驗(yàn)和。因此,如果分組到達(dá)目的地偶數(shù)次,則就凈校驗(yàn)和而言,這與該分組從未到達(dá)是相同的。
(5)一個(gè)值的奇數(shù)次XOR與該XOR運(yùn)算只執(zhí)行一次的效果相同。因此,就對(duì)校驗(yàn)和的影響而言,到達(dá)奇數(shù)次的分組與只到達(dá)一次的分組相同。
(6)一旦已經(jīng)接收到消息的k個(gè)分組,就由接收端網(wǎng)絡(luò)適配器對(duì)校驗(yàn)和值以及其是否與預(yù)期的校驗(yàn)和C相匹配進(jìn)行判斷。消息的隨后的分組被接收端適配器作為副本丟棄。
(7)在發(fā)送端和接收端的網(wǎng)絡(luò)適配器處針對(duì)每個(gè)分組的整體計(jì)算開(kāi)銷是0(1)。
應(yīng)注意,分組在網(wǎng)絡(luò)中被重復(fù)的概率本身是較小的(例如由于這會(huì)要求個(gè)人改變配置),并且因此校驗(yàn)和與復(fù)制的分組相匹配的整體概率需要與本已較小的分組被復(fù)制的概率相乘。
為了更好地理解本發(fā)明方法的運(yùn)算、其精確性以及優(yōu)點(diǎn),下面提供數(shù)學(xué)分析。上面的屬性4和屬性5有助于極大地簡(jiǎn)化這種分析。
為具有k個(gè)分組的序列的前k-1個(gè)分組中的每個(gè)分組分配一個(gè)獨(dú)立選擇的r比特的隨機(jī)哈希值h[j]。將最后一個(gè)分組的哈希值設(shè)為q+h[1]+h[2]+…+h[k-1] (2)然后,具有k個(gè)分組的序列上的校驗(yàn)和由下式給出C={h[1]+h[2]+…+h[k-1]}+h[k]={h[1]+h[2]+…+h[k-1]}+{h[1]+h[2]+…+h[k-1]+q}=q. (3)在此,感興趣的是分組流被分組重復(fù)或分組丟棄中斷的情況。應(yīng)注意,接收方永遠(yuǎn)不會(huì)接收到具有k個(gè)分組的事務(wù)的多于k個(gè)分組,并且如果在超時(shí)內(nèi)到達(dá)的分組少于k個(gè),則必然會(huì)檢測(cè)到錯(cuò)誤(例如,參見(jiàn)上述基于UD的RDMA的專利申請(qǐng))。
以以下方式描述中斷的特征。設(shè)m[j]為接收到分組j的次數(shù)。由于總共接收到k個(gè)(有可能是重復(fù)的)分組,因此m[1]+m[2]+…+m[k]=k (4)在此不試圖計(jì)算給定中斷發(fā)生的概率。而是對(duì)于每次中斷,在此示出以非常高的概率檢測(cè)到這種中斷(即對(duì)于幾乎所有的哈希值分配,分組序列校驗(yàn)和都是不正確的)。
確定給定中斷的概率不是一個(gè)非常明確的問(wèn)題。在其他因素中,分組重復(fù)通常是人為活動(dòng)(例如向現(xiàn)有配置添加節(jié)點(diǎn))的結(jié)果??梢詳嘌?,如果以足夠高的概率檢測(cè)到中斷,就是可靠的(并且使r更大,以滿足此處的概率性的可靠需求)。
應(yīng)注意,在以下的討論中,所遇到的情況只依賴于中斷,而不依賴于哈希值。
設(shè)v[1]、v[2]、...,v[k’]為使m[j]為奇數(shù)的索引j。于是,所接收的具有k個(gè)分組的序列的校驗(yàn)和C為C=h[v[1]]+h[v[2]]+…+h[v[k’]] (5)如下所示,將分析分為幾種情況情況1k’=0。
在此情況下,其中所有接收分組都被接收了偶數(shù)次,C=0,因此C不能等于q。在此情況下,檢測(cè)到這種錯(cuò)誤的概率為1。
情況2am[k]是偶數(shù)。
在此情況下,最后一個(gè)分組(具有哈希值h[k])不會(huì)影響C。因此,C是k’個(gè)獨(dú)立選擇的隨機(jī)r比特值之和。因此,C取均勻分布的隨機(jī)值并且因此C等于q的概率為2-r。
P2a(C=q)=2-r(6)情況2bm[k]是奇數(shù)。
在此情況下,h[k]的確會(huì)影響C。設(shè)w[1]、…、w[k”]為使m[j]為偶數(shù)的索引j(即v的補(bǔ)數(shù),使k’+k”=k)。現(xiàn)在,有兩種子情況要考慮(子情況2b1和子情況2b2)子情況2b1k”>0。
在此情況下C=h[v[1]]+h[v[2]]+…+h[v[k’]]C=h[v[1]]+h[v[2]]+…+h[v[k’-1]]+{q+h[1]+h[2]+…+h[k’-1]}C=q+h[w[1]]+h[w[2]]+…+h[w[k”]](7)因此,C是一個(gè)常數(shù)加上一組獨(dú)立的隨機(jī)值之和,并且因此C等于q的概率為2-r。
子情況2b2k”=0。
在此情況下,到達(dá)的所有分組具有奇數(shù)相重性(multiplicity),因此每個(gè)分組一定曾經(jīng)到達(dá)了恰好一次,并且因此C=q,并且沒(méi)有重復(fù)。
重要的是注意到,可以根據(jù)所期望的概率來(lái)設(shè)置校驗(yàn)和變量r的大小(就比特?cái)?shù)目而言)。
本方法相對(duì)于現(xiàn)有方法提供了以下優(yōu)點(diǎn)1.本方法滿足了某些正在出現(xiàn)的傳輸協(xié)議(例如在上述專利申請(qǐng)中描述的基于UD的RDMA模型)的關(guān)鍵要求。
2.需要的狀態(tài)維護(hù)非常少,并且與在現(xiàn)有的滑動(dòng)窗協(xié)議的文獻(xiàn)中建議的復(fù)雜得多的方法相比,提供了0(1)的開(kāi)銷。
3.本方法使得網(wǎng)絡(luò)適配器硬件設(shè)計(jì)保持非常簡(jiǎn)單。
4.該方法不會(huì)施加附加的流控限制。(不需要分組級(jí)確認(rèn)并且沒(méi)有發(fā)送端抑制,即不用等待ACKS(確認(rèn))以使流控滑動(dòng)窗前進(jìn))。
5.本方法不需要按順序傳送消息分組。
6.該方法不需要上層協(xié)議(ULP)中的任何附加連接。該設(shè)計(jì)完全包含在網(wǎng)絡(luò)適配器中。
因此,從以上內(nèi)容可以看出,本發(fā)明提供了一種簡(jiǎn)單的概率算法,該概率算法已經(jīng)被設(shè)計(jì)為檢測(cè)網(wǎng)絡(luò)中的可能的分組重復(fù)并丟棄這些消息。這是在數(shù)據(jù)處理節(jié)點(diǎn)的網(wǎng)絡(luò)中實(shí)現(xiàn)基于UD的有效RDMA的重要特征。該算法采用非常簡(jiǎn)單的硬件增強(qiáng)并引起非常小的開(kāi)銷。出于實(shí)際的目的,本方法相對(duì)于用于解決相同問(wèn)題的其他方法提供了顯著的優(yōu)點(diǎn)。
該方法可以擴(kuò)展為確定性地檢測(cè)包括r個(gè)或更少的分組的消息中的分組重復(fù)。這可以通過(guò)將第k個(gè)分組的校驗(yàn)和字段設(shè)為2k并檢查所接收的校驗(yàn)和的總和是否為1+2+4+…+2r來(lái)實(shí)現(xiàn)。
盡管在此已經(jīng)根據(jù)本發(fā)明的特定優(yōu)選實(shí)施例對(duì)本發(fā)明進(jìn)行了詳細(xì)描述,但本領(lǐng)域的普通技術(shù)人員可以在其中實(shí)現(xiàn)多種修改和改變。因此,所附權(quán)利要求旨在覆蓋在本發(fā)明的本質(zhì)和范圍內(nèi)的所有這些修改和改變。
權(quán)利要求
1.一種用于在多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中檢測(cè)多分組消息中是否存在重復(fù)數(shù)據(jù)分組的方法,所述方法包括步驟除了一個(gè)分組之外,隨多個(gè)所述數(shù)據(jù)分組發(fā)送具有針對(duì)所述數(shù)據(jù)分組隨機(jī)生成的比特的字段;隨所述例外的數(shù)據(jù)分組發(fā)送具有基于非例外數(shù)據(jù)分組中的隨機(jī)比特的校驗(yàn)和值的字段;以及針對(duì)所接收的每個(gè)數(shù)據(jù)分組,累計(jì)所述字段的校驗(yàn)和。
2.根據(jù)權(quán)利要求1所述的方法,其中將所述例外分組指示為最后的分組。
3.根據(jù)權(quán)利要求1所述的方法,還包括步驟改變所述多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中的節(jié)點(diǎn)數(shù)目。
4.根據(jù)權(quán)利要求3所述的方法,其中所述改變發(fā)生在所述第一發(fā)送操作期間。
5.根據(jù)權(quán)利要求1所述的方法,其中所述例外分組是待發(fā)送的最后分組。
6.根據(jù)權(quán)利要求1所述的方法,其中所述累計(jì)包括通過(guò)異或運(yùn)算將每個(gè)新到達(dá)的字段變?yōu)槌跏紴榱愕闹怠?br>
7.根據(jù)權(quán)利要求1所述的方法,其中所述例外數(shù)據(jù)分組的所述字段是所述其他數(shù)據(jù)分組的相應(yīng)字段中的隨機(jī)比特與預(yù)定值q的異或。
8.根據(jù)權(quán)利要求7所述的方法,其中確定所述數(shù)據(jù)分組重復(fù)基于與所述預(yù)定值q的比較。
9.根據(jù)權(quán)利要求1所述的方法,其中所述多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)分組傳輸采用生成樹(shù)來(lái)改善重復(fù)數(shù)據(jù)分組傳輸?shù)膯?wèn)題。
10.根據(jù)權(quán)利要求1所述的方法,其中所述多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)采用遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)來(lái)進(jìn)行數(shù)據(jù)分組傳輸。
11.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)分組不是按順序發(fā)送的。
12.根據(jù)權(quán)利要求1所述的方法,其中所述數(shù)據(jù)分組不按照與發(fā)送它們的順序相同的順序到達(dá)。
13.根據(jù)權(quán)利要求1所述的方法,其中每個(gè)所述字段包括r個(gè)比特。
14.根據(jù)權(quán)利要求1所述的方法,其中所述隨機(jī)生成字段具有均勻的概率分布。
15.根據(jù)權(quán)利要求1所述的方法,還包括判斷重復(fù)數(shù)據(jù)分組傳輸?shù)牟襟E。
16.根據(jù)權(quán)利要求15所述的方法,其中一但接收到消息中的特定數(shù)目的分組,就進(jìn)行所述判斷。
17.根據(jù)權(quán)利要求1所述的方法,還包括一個(gè)步驟,即如果在預(yù)定超時(shí)值內(nèi)已經(jīng)到達(dá)的數(shù)據(jù)分組少于特定數(shù)目,則表明發(fā)生錯(cuò)誤。
18.根據(jù)權(quán)利要求1所述的方法,其中消息包括特定數(shù)目k個(gè)數(shù)據(jù)分組。
19.根據(jù)權(quán)利要求1所述的方法,其中所述校驗(yàn)和是預(yù)定的。
20.根據(jù)權(quán)利要求1所述的方法,其中消息的不同分組穿過(guò)所述數(shù)據(jù)處理系統(tǒng)中的不同路由。
21.根據(jù)權(quán)利要求1所述的方法,其中在所述例外分組中提供了一個(gè)字段,該字段是其他分組中的所述字段的異或和。
22.根據(jù)權(quán)利要求1所述的方法,其中在發(fā)送端適配器和接收端適配器上每個(gè)正在傳輸?shù)南⒂泻愣〝?shù)目r個(gè)狀態(tài)比特,并且在每個(gè)適配器上針對(duì)每個(gè)分組執(zhí)行簡(jiǎn)單異或運(yùn)算。
23.根據(jù)權(quán)利要求1所述的方法,其中僅當(dāng)在接收到消息的前k個(gè)分組之后沒(méi)有檢測(cè)到重復(fù)時(shí)才提供對(duì)上層協(xié)議的通知。
24.根據(jù)權(quán)利要求1所述的方法,其中所述預(yù)定的校驗(yàn)和是非零的。
25.一種機(jī)器可讀的程序存儲(chǔ)設(shè)備,所述程序存儲(chǔ)設(shè)備以實(shí)體形式體現(xiàn)至少一個(gè)具有機(jī)器可執(zhí)行的指令的程序,所述指令用以在多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中檢測(cè)多分組消息中是否存在重復(fù)數(shù)據(jù)分組,所述指令具體實(shí)現(xiàn)步驟除了一個(gè)分組之外,隨多個(gè)所述數(shù)據(jù)分組發(fā)送具有針對(duì)所述數(shù)據(jù)分組隨機(jī)生成的比特的字段;隨所述例外的數(shù)據(jù)分組發(fā)送具有基于非例外數(shù)據(jù)分組中的隨機(jī)比特的非零校驗(yàn)和值的字段;以及針對(duì)所接收的每個(gè)數(shù)據(jù)分組,累計(jì)所述字段的和。
26.一種數(shù)據(jù)處理節(jié)點(diǎn)的互連網(wǎng)絡(luò),所述數(shù)據(jù)處理節(jié)點(diǎn)中已經(jīng)包含可由所述節(jié)點(diǎn)執(zhí)行的指令,所述指令用以在多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中檢測(cè)多分組消息中是否存在重復(fù)數(shù)據(jù)分組,所述指令具體實(shí)現(xiàn)步驟除了一個(gè)分組之外,隨多個(gè)所述數(shù)據(jù)分組發(fā)送具有針對(duì)所述數(shù)據(jù)分組隨機(jī)生成的比特的字段;隨所述例外的數(shù)據(jù)分組發(fā)送具有基于非例外數(shù)據(jù)分組中的隨機(jī)比特的非零校驗(yàn)和值的字段;以及針對(duì)所接收的每個(gè)數(shù)據(jù)分組,累計(jì)所述字段的和。
27.一種用于在多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中檢測(cè)多分組消息中是否存在重復(fù)數(shù)據(jù)分組的方法,所述方法包括步驟在接收節(jié)點(diǎn)處累計(jì)所接收的每個(gè)數(shù)據(jù)分組中的字段的校驗(yàn)和,每個(gè)數(shù)據(jù)分組中的所述字段是隨機(jī)生成的比特,只有一個(gè)數(shù)據(jù)分組例外,該例外數(shù)據(jù)分組的字段被預(yù)先設(shè)置為其他數(shù)據(jù)分組中的隨機(jī)生成比特的函數(shù)。
28.根據(jù)權(quán)利要求27所述的方法,還包括基于所述累計(jì)的校驗(yàn)和而表明存在重復(fù)分組的步驟。
29.一種用于在多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中檢測(cè)多分組消息中是否存在重復(fù)數(shù)據(jù)分組的檢測(cè)器,所述檢測(cè)器包括用于除了一個(gè)分組之外,隨多個(gè)所述數(shù)據(jù)分組發(fā)送具有針對(duì)所述數(shù)據(jù)分組隨機(jī)生成的比特的字段的裝置;用于隨所述例外的數(shù)據(jù)分組發(fā)送具有基于非例外數(shù)據(jù)分組中的隨機(jī)比特的校驗(yàn)和值的字段的裝置;以及用于針對(duì)所接收的每個(gè)數(shù)據(jù)分組累計(jì)所述字段的校驗(yàn)和的裝置。
30.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中將所述例外分組指示為最后的分組。
31.根據(jù)權(quán)利要求29所述的檢測(cè)器,還包括用于改變所述多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中的節(jié)點(diǎn)數(shù)目的裝置。
32.根據(jù)權(quán)利要求31所述的檢測(cè)器,其中所述改變發(fā)生在所述第一發(fā)送裝置操作期間。
33.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述例外分組是待發(fā)送的最后分組。
34.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述累計(jì)包括通過(guò)異或運(yùn)算將每個(gè)新到達(dá)的字段變?yōu)槌跏紴榱愕闹怠?br>
35.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述例外數(shù)據(jù)分組的所述字段是所述其他數(shù)據(jù)分組的相應(yīng)字段中的隨機(jī)比特與預(yù)定值q的異或。
36.根據(jù)權(quán)利要求35所述的檢測(cè)器,其中確定所述數(shù)據(jù)分組重復(fù)基于與所述預(yù)定值q的比較。
37.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中的數(shù)據(jù)分組傳輸采用生成樹(shù)來(lái)改善重復(fù)數(shù)據(jù)分組傳輸?shù)膯?wèn)題。
38.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)采用遠(yuǎn)程直接存儲(chǔ)器訪問(wèn)來(lái)進(jìn)行數(shù)據(jù)分組傳輸。
39.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述數(shù)據(jù)分組不是按順序發(fā)送的。
40.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述數(shù)據(jù)分組不按照與發(fā)送它們的順序相同的順序到達(dá)。
41.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中每個(gè)所述字段包括r個(gè)比特。
42.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述隨機(jī)生成字段具有均勻的概率分布。
43.根據(jù)權(quán)利要求29所述的檢測(cè)器,還包括用于判斷重復(fù)數(shù)據(jù)分組傳輸?shù)难b置。
44.根據(jù)權(quán)利要求43所述的檢測(cè)器,其中一但接收到消息中的特定數(shù)目的分組,就進(jìn)行所述判斷。
45.根據(jù)權(quán)利要求29所述的檢測(cè)器,還包括如果在預(yù)定超時(shí)值內(nèi)已經(jīng)到達(dá)的數(shù)據(jù)分組少于特定數(shù)目則表明發(fā)生錯(cuò)誤的裝置。
46.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中消息包括特定數(shù)目k個(gè)數(shù)據(jù)分組。
47.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述校驗(yàn)和是預(yù)定的。
48.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中消息的不同分組穿過(guò)所述數(shù)據(jù)處理系統(tǒng)中的不同路由。
49.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中在所述例外分組中提供了一個(gè)字段,該字段是其他分組中的所述字段的異或和。
50.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中在發(fā)送端適配器和接收端適配器上每個(gè)正在傳輸?shù)南⒂泻愣〝?shù)目r個(gè)狀態(tài)比特,并且在每個(gè)適配器上針對(duì)每個(gè)分組執(zhí)行簡(jiǎn)單異或運(yùn)算。
51.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中僅當(dāng)在接收到消息的前k個(gè)分組之后沒(méi)有檢測(cè)到重復(fù)時(shí)才提供對(duì)上層協(xié)議的通知。
52.根據(jù)權(quán)利要求29所述的檢測(cè)器,其中所述預(yù)定的校驗(yàn)和是非零的。
全文摘要
為了解決在互連的多節(jié)點(diǎn)數(shù)據(jù)處理系統(tǒng)中檢測(cè)重復(fù)數(shù)據(jù)分組的到達(dá)這一問(wèn)題,為每個(gè)數(shù)據(jù)分組提供具有針對(duì)每個(gè)數(shù)據(jù)分組隨機(jī)生成的r個(gè)比特的字段。然而,為其中一個(gè)分組提供在得到選定的非零校驗(yàn)和值的校驗(yàn)和計(jì)算中根據(jù)其他隨機(jī)生成字段條目計(jì)算得到的字段。將在接收方處的運(yùn)行校驗(yàn)和用于確定在接收到特定數(shù)目k個(gè)數(shù)據(jù)分組之后,是否已經(jīng)接收到重復(fù)分組。
文檔編號(hào)H04L12/56GK1960233SQ20061010591
公開(kāi)日2007年5月9日 申請(qǐng)日期2006年7月14日 優(yōu)先權(quán)日2005年11月1日
發(fā)明者拉馬·K·戈文達(dá)拉朱, 理查德·A·斯韋茨, 卡爾·A·本德, 凱文·J·吉爾德, 彼得·H·霍克希爾德, 杰伊·R·赫林, 張富恭 申請(qǐng)人:國(guó)際商業(yè)機(jī)器公司