亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

通過(guò)直接數(shù)據(jù)布置處理無(wú)線系統(tǒng)內(nèi)亂序分段的方法及系統(tǒng)的制作方法

文檔序號(hào):7620595閱讀:113來(lái)源:國(guó)知局
專利名稱:通過(guò)直接數(shù)據(jù)布置處理無(wú)線系統(tǒng)內(nèi)亂序分段的方法及系統(tǒng)的制作方法
技術(shù)領(lǐng)域
本發(fā)明的某些實(shí)施例涉及通信過(guò)程中的信息分段。更具體地,本發(fā)明的某些實(shí)施例涉及通過(guò)直接數(shù)據(jù)布置處理無(wú)線系統(tǒng)內(nèi)亂序分段的方法及系統(tǒng)。
背景技術(shù)
IEEE 802.11標(biāo)準(zhǔn)提供用于提供多種功能的公共媒介訪問(wèn)控制(mediumaccess control,簡(jiǎn)稱MAC)層,其支持基于無(wú)線局域網(wǎng)(WLAN)的802.11。該MAC層適用于在一個(gè)共享無(wú)線通信信道上推動(dòng)及管理接入點(diǎn)(AP)及站點(diǎn)(STA)間的通信。該MAC層適用于處理多種功能,如掃描、驗(yàn)證、聯(lián)合、節(jié)能及存儲(chǔ)碎片。由802.11MAC提供的可選功能包括加密及RTS/CTS信息交換。
該802.11標(biāo)準(zhǔn)包括被動(dòng)掃描模式及主動(dòng)掃描模式。在被動(dòng)掃描模式中,一個(gè)如無(wú)線收發(fā)機(jī)或NIC這樣的無(wú)線站點(diǎn)通過(guò)在信道或一連串信道上監(jiān)聽接入點(diǎn)而搜索服務(wù)。被動(dòng)地掃描的無(wú)線站點(diǎn)沒(méi)有傳輸。802.11標(biāo)準(zhǔn)內(nèi),被動(dòng)地掃描被定義為強(qiáng)制性掃描模式,主動(dòng)掃描被定義為可選掃描模式。在主動(dòng)掃描模式中,每一個(gè)無(wú)線收發(fā)機(jī)或NIC會(huì)發(fā)送試圖引出探測(cè)反應(yīng)幀的探測(cè)幀,以掃描單獨(dú)的信道來(lái)定位接入點(diǎn)。試探性結(jié)合的最佳接入點(diǎn)決定于無(wú)線站點(diǎn)接收的來(lái)自每個(gè)接入點(diǎn)的信號(hào)的物理性能,與在掃描操作期間所接收的各種其它信號(hào)相結(jié)合,這些信號(hào)如接入點(diǎn)支持的速率、QOS性能、當(dāng)前負(fù)荷因數(shù)及其它特性的支持。一個(gè)接入點(diǎn)可以周期性地發(fā)送一個(gè)信標(biāo)幀,該信標(biāo)幀可以在掃描期間被無(wú)線收發(fā)機(jī)或STA接收器接收。該信標(biāo)幀包括相應(yīng)AP的信號(hào)強(qiáng)度信息,同如服務(wù)集標(biāo)識(shí)符(Service SetIdentifier,SSID)這樣的接入點(diǎn)特別信息,及由接入點(diǎn)所支持的數(shù)據(jù)率。該無(wú)線STA基于從一個(gè)或多個(gè)接入點(diǎn)接收的接入點(diǎn)特別信息可以確定將要連接哪一個(gè)接入點(diǎn)。在該可選主動(dòng)掃描模式期間,無(wú)線STA可以發(fā)送一個(gè)探測(cè)幀,及所有接收該探測(cè)幀的接入點(diǎn)可以響應(yīng)于其相應(yīng)的特別信息,該特別信息如SSID、信號(hào)強(qiáng)度及支持的數(shù)據(jù)率。主動(dòng)掃描允許無(wú)線STA從一個(gè)或多個(gè)接入點(diǎn)平均地接收較快的響應(yīng),而無(wú)需等待信標(biāo)幀頻的傳輸。由于探測(cè)幀被發(fā)送及來(lái)自響應(yīng)AP的響應(yīng)幀被接收,主動(dòng)掃描的一個(gè)缺點(diǎn)是其強(qiáng)加了額外的網(wǎng)絡(luò)消耗。另外,該執(zhí)行主動(dòng)掃描的無(wú)線STA可干擾網(wǎng)絡(luò)的正常通信,因?yàn)樵搾呙鑃TA已切換至具有很少關(guān)于當(dāng)前信道狀態(tài)的信息的當(dāng)前信道。
該802.11標(biāo)準(zhǔn)提供了開放系統(tǒng)驗(yàn)證方法及共享密鑰驗(yàn)證方法,以對(duì)如無(wú)線STA這樣的網(wǎng)絡(luò)實(shí)體的身份進(jìn)行驗(yàn)證。在802.11標(biāo)準(zhǔn)中,開放系統(tǒng)驗(yàn)證方法被指定為強(qiáng)制性的,而共享密鑰驗(yàn)證方法被指定為可選的。通過(guò)開放系統(tǒng)驗(yàn)證,無(wú)線STA可發(fā)通過(guò)發(fā)送一個(gè)驗(yàn)證請(qǐng)求至一個(gè)接入點(diǎn)而開始驗(yàn)證。在響應(yīng)方面,該接入點(diǎn)可以用一個(gè)驗(yàn)證響應(yīng)進(jìn)行回答,以認(rèn)可或否認(rèn)驗(yàn)證。驗(yàn)證的認(rèn)可或否認(rèn)在一個(gè)幀內(nèi)的狀態(tài)碼域中被指示。對(duì)于可選的共享密鑰驗(yàn)證,基于一個(gè)驗(yàn)證設(shè)備如無(wú)線STA是否具有適當(dāng)?shù)挠芯€等效協(xié)議(wired equivalent privacy,簡(jiǎn)稱WEP)密鑰而使驗(yàn)證受到影響。在這個(gè)方面,該無(wú)線STA可以發(fā)送一個(gè)驗(yàn)證請(qǐng)求至接入點(diǎn),及該接入點(diǎn)可以通過(guò)在被發(fā)送至無(wú)線STA的響應(yīng)幀內(nèi)引入質(zhì)詢文本而進(jìn)行響應(yīng)。該無(wú)線STA被配置成使用其WEP密鑰加密該質(zhì)詢文本,及該加密的質(zhì)詢文本然后被從STA傳送至該接入點(diǎn)。一旦接收了該加密的質(zhì)詢文本,該接入點(diǎn)被用于解密該加密的質(zhì)詢文本及將其與原始文本進(jìn)行對(duì)比。如果解密的文本與原始文本的對(duì)比表示二者間相互匹配,則該接入點(diǎn)假定該無(wú)線STA具有正確的有線等效協(xié)議密鑰。因此,該接入點(diǎn)會(huì)發(fā)送一個(gè)驗(yàn)證幀至該無(wú)線STA,表明如果匹配則服務(wù)認(rèn)可,如果匹配失敗則服務(wù)否認(rèn)。
在無(wú)線STA接入無(wú)線媒介及被驗(yàn)證之后,該無(wú)線STA在數(shù)據(jù)通信開始之前必須要與接入點(diǎn)聯(lián)系。聯(lián)系允許如同步及接入點(diǎn)與無(wú)線STA間的重要信息的交換這樣的任務(wù)。例如,在聯(lián)系期間,關(guān)聯(lián)的數(shù)據(jù)率可被從一個(gè)接入點(diǎn)傳送至一個(gè)無(wú)線STA。無(wú)線STA可用于通過(guò)傳送一個(gè)聯(lián)系請(qǐng)求而啟動(dòng)聯(lián)系,該聯(lián)系請(qǐng)求包括的信息如支持的數(shù)據(jù)率、可選性能支持、安全性能支持、其它可選特性支持及SSID信息。在響應(yīng)中,接入點(diǎn)可傳送包括聯(lián)系身份識(shí)別(ID)及其它接入點(diǎn)特別信息的聯(lián)系響應(yīng)幀。一旦該無(wú)線STA及接入點(diǎn)完成了聯(lián)系,該無(wú)線STA然后開始與接入點(diǎn)進(jìn)行數(shù)據(jù)幀的通信。
如果可用,該802.11標(biāo)準(zhǔn)提供一個(gè)可由用戶開啟或禁止的可選節(jié)能模式。如果被執(zhí)行,該節(jié)能模式允許用戶激活無(wú)線STA以適當(dāng)?shù)卮蜷_或關(guān)閉其無(wú)線收發(fā)機(jī),以保存電池能量。例如,當(dāng)不需要無(wú)線收發(fā)機(jī)或STA傳送信息時(shí),該無(wú)線STA可以關(guān)閉其無(wú)線收發(fā)機(jī)。在當(dāng)該節(jié)能模式被打開的例子中,無(wú)線STA可通知可能的接入點(diǎn)其可進(jìn)入休眠狀態(tài)。在每個(gè)幀標(biāo)題中的狀態(tài)位可被用于表示無(wú)線STA的節(jié)能模式。在這點(diǎn)上,節(jié)能模式在該位為高電平時(shí)被打開,該位為低電平時(shí)被關(guān)閉。接入點(diǎn)被配置成記錄表示其意圖進(jìn)入或退出該節(jié)能模式的每個(gè)無(wú)線站點(diǎn)。其允許該接入點(diǎn)緩沖那些當(dāng)其在休眠模式時(shí)已經(jīng)指示其可能進(jìn)入休眠模式的可能性的無(wú)線STA的數(shù)據(jù)包,避免緩沖那些用于已經(jīng)指示其試圖退出(或不進(jìn)入)休眠模式的無(wú)線STA的數(shù)據(jù)包。該已經(jīng)進(jìn)入休眠模式的STA可以周期性地從休眠狀態(tài)醒來(lái),并檢測(cè)接入點(diǎn)是否具有緩沖的數(shù)據(jù)或新數(shù)據(jù)是否正在等候被傳送。
該802.11協(xié)議提供對(duì)可被用于傳輸同步及時(shí)間限制服務(wù)的兩個(gè)不同媒介訪問(wèn)控制(MAC)機(jī)制的支持。該第一機(jī)制為分布式協(xié)調(diào)功能(distributedcoordination function,簡(jiǎn)稱DCF),及第二機(jī)制為點(diǎn)協(xié)調(diào)功能(point coordinationfunction,簡(jiǎn)稱PCF)。分布式協(xié)調(diào)功能利用盡力服務(wù)促進(jìn)信息的通信,其中具有要傳送信息的接入設(shè)備具有同等的機(jī)會(huì)以傳送信息。點(diǎn)協(xié)調(diào)功能可用于傳送時(shí)間敏感或潛在敏感信息。在這方面,點(diǎn)協(xié)調(diào)功能利用輪詢機(jī)制,其可由扮演中央?yún)f(xié)調(diào)站(Point Coordinator,PC)角色的接入點(diǎn)(AP)控制。
在傳輸幀之前,站點(diǎn)被要求首先獲得至共享無(wú)線媒介的訪問(wèn)。該802.11標(biāo)準(zhǔn)定義了一個(gè)媒介訪問(wèn)的分布協(xié)調(diào)功能(DCF)類型及媒介訪問(wèn)的點(diǎn)協(xié)調(diào)功能(PCF)類型。媒介訪問(wèn)的DCF類型是強(qiáng)制性的,且其用具有碰撞避免(CSMA/CA)協(xié)議的載波偵聽多路訪問(wèn)。當(dāng)無(wú)線STA試圖發(fā)送幀時(shí),DCF允許多個(gè)無(wú)線STA競(jìng)爭(zhēng)訪問(wèn)無(wú)線媒介。無(wú)線STA可利用二進(jìn)制補(bǔ)償機(jī)制提供公平的媒介訪問(wèn)機(jī)制。因此,無(wú)線STA在試圖訪問(wèn)媒介前會(huì)補(bǔ)償一個(gè)隨機(jī)數(shù)量的媒介空閑時(shí)間。
MAC層利用網(wǎng)絡(luò)分配向量(network allocation vector,NAV)確保對(duì)媒介的公平訪問(wèn)。該NAV是一個(gè)計(jì)算器,其駐留地每個(gè)無(wú)線站點(diǎn)處,且代表一個(gè)幀或一組幀序列將要求傳送包含于其中的數(shù)據(jù)的時(shí)間數(shù)量。為了允許公平訪問(wèn)媒介,MAC層檢測(cè)網(wǎng)絡(luò)分配向量(NAV)的值。當(dāng)無(wú)線STA的NAV為0且任何補(bǔ)償已被完成時(shí),其被允許發(fā)送幀。在被允許發(fā)送幀之前,基于幀的長(zhǎng)度及幀的數(shù)據(jù)率,站點(diǎn)被要求確定其需傳送當(dāng)前幀加上任何為相同幀序列部分的序列幀的時(shí)間數(shù)量。該站點(diǎn)會(huì)將這個(gè)確定的時(shí)間放置于要被傳送的幀的幀標(biāo)題的持續(xù)時(shí)間域中。當(dāng)無(wú)線STA接收到該幀時(shí),該時(shí)間從接收幀的持續(xù)時(shí)間域被獲得,并被用于為其NAV確定相應(yīng)的值。
被用于DCF的隨機(jī)補(bǔ)償計(jì)時(shí)器可被STA用于確定或檢測(cè)該媒介是否是可訪問(wèn)的或繁忙的。如果確定了該媒介是繁忙的,STA在訪問(wèn)該媒體的另一試圖做出前必須等待一個(gè)隨機(jī)產(chǎn)生的時(shí)間段。這可確保一個(gè)公平的訪問(wèn)機(jī)制,并減少在相同時(shí)間上多個(gè)基站在媒介上傳送數(shù)據(jù)的可能性。通過(guò)補(bǔ)償強(qiáng)加的隨機(jī)延遲,防止了多個(gè)無(wú)線STA在一個(gè)單獨(dú)傳輸完結(jié)的空閑時(shí)同時(shí)感應(yīng)媒介及隨后同時(shí)試圖傳輸,其會(huì)導(dǎo)致碰撞。因此,該隨機(jī)補(bǔ)償計(jì)時(shí)器顯著地減少了碰撞的次數(shù),因此重發(fā)的次數(shù)也減少了,這當(dāng)主動(dòng)無(wú)線STA數(shù)量增加時(shí)是極其重要的。
當(dāng)無(wú)線STA傳送數(shù)據(jù)時(shí)其不會(huì)監(jiān)聽碰撞,因?yàn)楫?dāng)傳輸數(shù)據(jù)時(shí),其不能使其接收器打開。這意味著無(wú)論何時(shí)接收的幀內(nèi)沒(méi)有錯(cuò)誤被探測(cè)時(shí),正接收的無(wú)線STA不得不發(fā)送肯定應(yīng)答(ACK)。如果在一個(gè)確定的時(shí)間段過(guò)去后正傳送的STA沒(méi)有接收到ACK,該正傳送的STA會(huì)自動(dòng)地假定碰撞發(fā)生,且會(huì)在其自己的協(xié)定上重發(fā)該幀。該802.11標(biāo)準(zhǔn)通過(guò)可選的點(diǎn)協(xié)調(diào)功能(PCF)提供數(shù)據(jù)幀的時(shí)間限制傳送。在可選的點(diǎn)協(xié)調(diào)功能中,在爭(zhēng)用空閑時(shí)間期間通過(guò)輪詢,一個(gè)接入點(diǎn)可以每一站點(diǎn)為基礎(chǔ)而準(zhǔn)許訪問(wèn)媒介。在這個(gè)方面上,無(wú)線STA在被允許傳送幀之前必須被輪詢。PCF通信業(yè)務(wù)可于可選的爭(zhēng)用或DCF周期間被發(fā)送。在這個(gè)方面上,接入點(diǎn)可基于一個(gè)輪詢表而輪詢無(wú)線STA,并在無(wú)線STA使用DCF的周期內(nèi)轉(zhuǎn)換至一個(gè)輪詢周期。這可允許同步操作模式,也可允許異步操作模式。例如,同步操作模式可被用于基于視頻的應(yīng)用,及異步操作模式可被用于支持瀏覽或消息應(yīng)用。
無(wú)線STA適合于在每個(gè)幀的傳送之前使用一個(gè)共同WEP密鑰而加密每個(gè)幀的可效載荷。接收到加密的幀,正接收的無(wú)線STA或接入點(diǎn)會(huì)使用共同WEP密鑰解密該接收的加密的幀。有多種不同尺寸的共同WEP密鑰可用及每一個(gè)適于提供加密的變化強(qiáng)度。該協(xié)議也支持另外的安全方案。
包括發(fā)送請(qǐng)求(Request To Send,RTS)及清除發(fā)送(Clear To Send,RTS/CTS)的交換信號(hào)被接入點(diǎn)或STA用于控制通過(guò)RTS/CTS激活的STA訪問(wèn)及使用無(wú)線媒介。該無(wú)限STA可建立最大幀長(zhǎng)度且無(wú)論何時(shí)該最大幀長(zhǎng)度被超過(guò),PTS/CTS都可自動(dòng)被使用。無(wú)論何時(shí)無(wú)線STA激活RTS/CTS交換機(jī)制,該無(wú)線STA都會(huì)在其傳送一個(gè)數(shù)據(jù)幀之前傳送一個(gè)RTS幀至接入點(diǎn)或另一個(gè)STA。響應(yīng)地,該接入點(diǎn)或其它的STA會(huì)傳送一個(gè)CTS幀,表明了該無(wú)線STA可以傳送數(shù)據(jù)幀。關(guān)于CTS幀,接入點(diǎn)或STA可以從RTS幀的幀標(biāo)題內(nèi)的持續(xù)時(shí)間域改變持續(xù)時(shí)間值,并將這個(gè)改變的值放進(jìn)CTS幀的幀標(biāo)題內(nèi)的持續(xù)時(shí)間域。這會(huì)阻礙其它站點(diǎn)的傳送,直到啟動(dòng)PTS傳送該數(shù)據(jù)幀的該無(wú)線STA已經(jīng)完成了傳送數(shù)據(jù)幀,且已經(jīng)有機(jī)會(huì)接收ACK幀。
在傳送期間,傳送較小的信息片段比較長(zhǎng)的數(shù)據(jù)片段更有效。這些較小的信息片段可被作為片段(fragment)。例如,一個(gè)包括L2標(biāo)題信息、L3標(biāo)題信息、L4標(biāo)題信息、ULP信息及有效載荷數(shù)據(jù)的幀可被分成多個(gè)片段,其中所有的L3、L4、L5標(biāo)題均在一個(gè)單獨(dú)的片段內(nèi),該ULP信息及有效載荷數(shù)據(jù)的一部分可在另一個(gè)片段內(nèi),及剩余的有效載荷數(shù)據(jù)部分可分至其它多個(gè)片段內(nèi)。如果該片段發(fā)生于802.11層內(nèi),與該標(biāo)準(zhǔn)相符合,該發(fā)送機(jī)不會(huì)亂序地發(fā)送這些片段。在這個(gè)方面上,該發(fā)送機(jī)可不開始后續(xù)的(n+i)片段的發(fā)送,其中I大于1,直至第n個(gè)或在先片段已被成功地發(fā)送。因此,亂序(out-of-order,簡(jiǎn)稱OOO)片段不會(huì)在這種情況下發(fā)生。
媒介訪問(wèn)的標(biāo)準(zhǔn)分布協(xié)調(diào)功能就帶寬利用來(lái)說(shuō)是無(wú)效的,尤其在更高的特理層(PHY)速度上,例如,54Mbps或更高。該DCF可適用于解決如典型地與一些無(wú)線鏈接相關(guān)的網(wǎng)絡(luò)擁擠及高包錯(cuò)誤率(packet error rate,簡(jiǎn)稱PER)這樣的問(wèn)題。該DCF也可按指數(shù)規(guī)律地增加補(bǔ)償及肯定確認(rèn)(positive acknowledgments,簡(jiǎn)稱PACKs)。每一個(gè)MAC協(xié)議數(shù)據(jù)單元(MAC protocol data unit,簡(jiǎn)稱MPDU)的補(bǔ)償時(shí)間可為重發(fā)送按指數(shù)規(guī)律地增加,每個(gè)MPDU的PACK可在高物理層(PHY)速度上呈現(xiàn)帶寬使用無(wú)效。該RTS/CTS機(jī)制在與規(guī)則DCF協(xié)同被使用時(shí),可以減小效能,甚至可導(dǎo)致很少被使用。例如,在沒(méi)有RTS/CTS被使用的情況下,傳送以在54Mbps的速度傳送一個(gè)包括MAC標(biāo)題的1500字節(jié)幀要用248微秒。當(dāng)PACK以24Mbps的速度傳送時(shí),傳送平均補(bǔ)償、PACK及短幀間空間(shortinterframe space,簡(jiǎn)稱SIFS)的總和用130微秒。前置傳輸時(shí)間比數(shù)據(jù)傳輸時(shí)間的一半還多。
分布協(xié)調(diào)功能不是最大帶寬有效傳輸機(jī)制。該802.11標(biāo)準(zhǔn)為MAC協(xié)議數(shù)據(jù)單元(MSDU)定義了一個(gè)分裂方法,稱為存儲(chǔ)碎片。在這個(gè)方面,MAC服務(wù)數(shù)據(jù)單元(MSDU)可于MAC級(jí)上被分成多個(gè)較小的MPDU。單獨(dú)的MPDU包括一個(gè)可被以“猝發(fā)”形式被傳送的MSDU,其中該幀間空間為一個(gè)SIFS,及PACK幀跟隨每個(gè)片段的傳輸。因此,一個(gè)存儲(chǔ)碎片下的典型幀交換序列為數(shù)據(jù)-短幀間空間-肯定確認(rèn)-短幀間空間-數(shù)據(jù)-短幀間空間-肯定確認(rèn)(DATA-SIFS-PACK-SIFS-DATA-SIFS-PACK),例如,在開始時(shí)具有一個(gè)可選的RTS/CTS交換。然而,在802.11標(biāo)準(zhǔn)中,存儲(chǔ)碎片被定義為一種反對(duì)具有高包錯(cuò)誤率(PER)的不可靠的無(wú)線鏈接方法。在可靠的無(wú)線鏈接中,即,那些具有低包錯(cuò)誤率的無(wú)線鏈接中,由于在MPDU及PACK間的每個(gè)MPDU及SIFS間隔上引進(jìn)了MAC標(biāo)題,存儲(chǔ)碎片可降低MAC效能。
為了處理各種服務(wù)質(zhì)量(QoS)問(wèn)題,如特別的QoS及MAC有效性的確保傳送,要求更有效的帶寬配置及使用機(jī)制。IEEE 802.11e起草標(biāo)準(zhǔn)定義了塊肯定應(yīng)答規(guī)則,其排除了為每個(gè)MPDU單獨(dú)地傳送肯定應(yīng)答(PACK)的需要。該塊肯定應(yīng)答方案允許多個(gè)片段和/或幀在MAC層上被傳送,而沒(méi)有為每個(gè)片段發(fā)布一個(gè)單獨(dú)的肯定應(yīng)答。然而,這個(gè)塊PACK機(jī)制引進(jìn)了包括塊PACK請(qǐng)求幀及塊PACK響應(yīng)幀的額外的系統(tǒng)開銷。在塊肯定應(yīng)答方案下,一個(gè)傳送機(jī)在塊PACK響應(yīng)被接收到之前會(huì)發(fā)送參數(shù)化數(shù)量的幀,確認(rèn)塊中幀的接收。MAC層應(yīng)答機(jī)制盡管如此,但當(dāng)亂序TCP片段被傳送的情況下,也相應(yīng)地會(huì)導(dǎo)致亂序段。IEEE802.11e起草標(biāo)準(zhǔn)還定義了分配特別設(shè)備的時(shí)間的爭(zhēng)用空閑周期,其中幀可與間隔的SIFS周期一起被傳送,而不是在先描述的被一個(gè)單獨(dú)的無(wú)線STA于傳送的幀間的補(bǔ)償間隔。這個(gè)配置的機(jī)制是復(fù)雜的,并包括涉及輪詢機(jī)制的額外開銷。
通過(guò)結(jié)合附圖的本申請(qǐng)的其余部分的闡述,將本發(fā)明一些方面與這種系統(tǒng)進(jìn)行對(duì)比,常用的和傳統(tǒng)的方法的進(jìn)一步限制及缺點(diǎn)對(duì)本領(lǐng)域的普通技術(shù)人員來(lái)說(shuō)是顯而易見的。

發(fā)明內(nèi)容
本發(fā)明提供一種通過(guò)直接數(shù)據(jù)布置處理無(wú)線系統(tǒng)內(nèi)亂序分段的方法和/或系統(tǒng),結(jié)合至少一個(gè)附圖充分地展示和/或描述,并更完整地于權(quán)利要求中提出。
根據(jù)本發(fā)明的一個(gè)方面,提供一種處理無(wú)線系統(tǒng)內(nèi)亂序TCP分段的方法,包括下列至少之一將無(wú)線網(wǎng)絡(luò)處理器接收的第一TCP分段放置于主機(jī)緩沖區(qū)內(nèi),映射所述第一TCP分段的TCP序列數(shù)量及相應(yīng)緩沖區(qū)地址,確定第二接收的TCP分段是否為有序TCP分段或亂序TCP分段中之一;及如果所述無(wú)線網(wǎng)絡(luò)處理器接收的所述第二TCP分段為亂序TCP分段,則將與至少所述第二TCP分段相關(guān)的控制信息存儲(chǔ)于所述無(wú)線網(wǎng)絡(luò)處理器上;及將所述亂序TCP分段放置于所述主機(jī)緩沖區(qū)的一部分內(nèi)。
優(yōu)選地,所述方法進(jìn)一步包括記錄所述無(wú)線網(wǎng)絡(luò)處理器上被所述第一接收的TCP分段的結(jié)尾占用的至少一個(gè)緩沖區(qū)地址,所述緩沖區(qū)為TCP緩沖區(qū)、ULP緩沖區(qū)及應(yīng)用緩沖區(qū)之一。
優(yōu)選地,所述方法進(jìn)一步包括如果所述第二接收的TCP分段為有序TCP分段,則將所述有序TCP分段相鄰于所述第一接收的TCP分段放置于所述主機(jī)緩沖區(qū)內(nèi)。
優(yōu)選地,所述方法進(jìn)一步包括將所述有序TCP分段從與所述第一接收的TCP分段的所述結(jié)尾占用的所述被記錄的地址相鄰的地址開始放置于所述主機(jī)緩沖區(qū)內(nèi)。
優(yōu)選地,該方法進(jìn)一步包括下列至少之一
通過(guò)所述無(wú)線網(wǎng)絡(luò)處理器記錄下列數(shù)據(jù)指示至少之一所述有序TCP分段的結(jié)尾占用的結(jié)尾緩沖區(qū)地址;開始緩沖區(qū)地址加上所述有序TCP分段的數(shù)據(jù)部分的長(zhǎng)度;及跟隨所述有序TCP分段的結(jié)尾的一個(gè)字節(jié)的緩沖區(qū)地址;及在所述無(wú)線網(wǎng)絡(luò)處理器上存儲(chǔ)與至少一個(gè)所述指示數(shù)據(jù)相關(guān)的控制信息。
優(yōu)選地,該方法進(jìn)一步包括下列至少之一在所述無(wú)線網(wǎng)絡(luò)處理器上記錄下列數(shù)據(jù)指示至少之一所述放置的亂序TCP分段的開始所占用的地址,及所述放置的亂序TCP分段的結(jié)尾所占用的地址;及所述的加上所述放置的亂序TCP分段占用的長(zhǎng)度的開始緩沖區(qū)地址;在所述無(wú)線網(wǎng)絡(luò)處理器上存儲(chǔ)與所述網(wǎng)絡(luò)處理器上的所述指示數(shù)據(jù)相關(guān)的控制信息。
優(yōu)選地,所述方法進(jìn)一步包括通過(guò)所述無(wú)線網(wǎng)絡(luò)處理器接收第三亂序TCP分段。
優(yōu)選地,所述方法進(jìn)一步包括通過(guò)所述無(wú)限網(wǎng)絡(luò)處理器確定所述主機(jī)緩沖區(qū)中的所述第三接收的亂序TCP分段的放置。
優(yōu)選地,所述方法進(jìn)一步包括如果所述第三接收的亂序TCP分段是與所述放置的亂序TCP分段有序的,則將所述第三亂序TCP分段相鄰于所述放置的亂序TCP分段放置于所述主機(jī)緩沖區(qū)內(nèi);及下列至少之一將所述放置的亂序TCP分段所占用的開始地址調(diào)整為結(jié)合所述第三亂序TCP分段及所述亂序TCP分段的開始地址;及將所述放置的亂序TCP分段所占用的開始地址調(diào)整為結(jié)合所述第三亂序TCP分段及所述亂序TCP分段的結(jié)尾地址。
優(yōu)選地,所述方法進(jìn)一步包括,如果所述第三接收的亂序分段是關(guān)于所述放置的亂序分段亂序的,則將所述第三亂序TCP分段放置于在所述主機(jī)緩沖區(qū)內(nèi)一個(gè)地址上,該地址位于所述放置的亂序TCP分段之前及所述放置的亂序TCP分段之后之一。
優(yōu)選地,所述方法進(jìn)一步包括下列至少之一在所述無(wú)線網(wǎng)絡(luò)處理器上記錄至少一個(gè)位置數(shù)據(jù)表示所述第三接收的TCP分段被放置于所述無(wú)線網(wǎng)絡(luò)處理器上的主機(jī)緩沖區(qū)中的位置的開始地址及結(jié)尾地址;開始地址加上所述第三接收的TCP分段被放置于所述無(wú)線網(wǎng)絡(luò)處理器上的主機(jī)緩沖區(qū)處的長(zhǎng)度;及跟隨所述第三接收的TCP分段被放置于所述無(wú)線網(wǎng)絡(luò)處理器上的主機(jī)緩沖區(qū)處的結(jié)尾的字節(jié);及在所述無(wú)線網(wǎng)絡(luò)處理器上存儲(chǔ)與至少所述第三接收的TCP分段被放置處的所述位置數(shù)據(jù)相關(guān)的控制信息。
優(yōu)選地,所述方法進(jìn)一步包括在所述主機(jī)緩沖區(qū)內(nèi)所述第一接收的TCP分段的所述放置之上將TCP窗口調(diào)整至所述最后有序接收的TCP分段的結(jié)尾。
優(yōu)選地,所述方法進(jìn)一步包括下列之一將所述TCP窗口的左邊緣調(diào)整至緊接著與最后有序在先接收的TCP分段的結(jié)尾相鄰放置的亂序TCP分段的結(jié)尾的下一個(gè)字節(jié);及將所述TCP窗口的左邊緣調(diào)整至緊接著與最后有序在先接收的TCP分段的結(jié)尾相鄰放置的多個(gè)亂序TCP窗口的最后一個(gè)的結(jié)尾的下一個(gè)字節(jié)。
優(yōu)選地,所述方法進(jìn)一步包括將所述TCP窗口的左邊緣調(diào)整至緊接著與所述第一接收的TCP分段相鄰放置的最后有序TCP分段的結(jié)尾的下一個(gè)字節(jié)。
優(yōu)選地,所述方法進(jìn)一步包括將與至少所述TCP窗口的位置相關(guān)的控制信息存儲(chǔ)在所述無(wú)線網(wǎng)絡(luò)處理器上。
優(yōu)選地,所述方法進(jìn)一步包括每當(dāng)所述TCP窗口被調(diào)整時(shí),更新所述與至少所述TCP窗口的位置相關(guān)的控制信息。
優(yōu)選地,所述方法進(jìn)一步包括在第一緩沖區(qū)內(nèi)計(jì)算第一TCP分段的數(shù)據(jù)的第一字節(jié)的位置的緩沖區(qū)地址;基于相應(yīng)于所述第二TCP分段的TCP分段數(shù)量的緩沖區(qū)地址于第二TCP分段內(nèi)計(jì)算所述第一數(shù)據(jù)字節(jié)的緩沖區(qū)地址;及計(jì)算從相應(yīng)于所述第一TCP分段的所述TCP分段數(shù)量至所述第二TCP分段的第一字節(jié)的偏移量。
優(yōu)選地,所述方法進(jìn)一步包括確定所述計(jì)算的偏移量是否大于所述第一緩沖區(qū)的長(zhǎng)度。
優(yōu)選地,所述方法進(jìn)一步包括如果所述計(jì)算的偏移量大于所述第一緩沖區(qū)的長(zhǎng)度,則從所述計(jì)算的偏移量中減去所述第一緩沖區(qū)的長(zhǎng)度由此得出一個(gè)新的偏移量。
優(yōu)選地,所述方法進(jìn)一步包括從所述新的偏移量中減去第二緩沖區(qū)的長(zhǎng)度。
優(yōu)選地,所述方法進(jìn)一步包括如果所述第二緩沖區(qū)的減去導(dǎo)致所述新的偏移量小于所述第二緩沖區(qū)的長(zhǎng)度,在所述第一緩沖區(qū)及所述第二緩沖區(qū)中緩沖所述第二TCP分段的數(shù)據(jù)。
優(yōu)選地,所述方法進(jìn)一步包括如果所述新的偏移量大于所述第二緩沖區(qū)的長(zhǎng)度,減去其它緩沖區(qū)的長(zhǎng)度,直到以下之一所述緩沖區(qū)被用盡;及剩余的偏移量小于當(dāng)前緩沖區(qū)的長(zhǎng)度。
優(yōu)選地,所述方法進(jìn)一步包括如果剩余的偏移量小于所述當(dāng)前緩沖區(qū)的長(zhǎng)度,在所述第二緩沖區(qū)、所述第三緩沖區(qū)及所述其它緩沖區(qū)內(nèi)緩沖所述第二TCP分段的數(shù)據(jù)。
優(yōu)選地,所述方法進(jìn)一步包括如果緩沖區(qū)被用盡,丟棄所述第二TCP分段。
根據(jù)本發(fā)明的一個(gè)方面,提供一種處理無(wú)線系統(tǒng)內(nèi)亂序TCP分段的系統(tǒng),該系統(tǒng)包括至少一個(gè)處理器用于執(zhí)行下列至少之一將無(wú)線網(wǎng)絡(luò)處理器接收的第一TCP分段放置于主機(jī)緩沖區(qū)內(nèi),在TCP序列數(shù)量與相應(yīng)緩沖區(qū)地址間具有一個(gè)映射,確定無(wú)線網(wǎng)絡(luò)處理器接收的第二TCP分段是否為有序TCP分段或亂序TCP分段中之一;及如果所述第二接收的TCP分段為亂序TCP分段,則所述至少一個(gè)處理器將與至少所述第二TCP分段相關(guān)的控制信息存儲(chǔ)于所述無(wú)線網(wǎng)絡(luò)處理器上;及所述至少一個(gè)處理器將所述亂序TCP分段放置于所述主機(jī)緩沖區(qū)的一部分內(nèi)。
優(yōu)選地,所述至少一個(gè)處理器記錄所述無(wú)線網(wǎng)絡(luò)處理器上被所述第一接收的TCP分段的結(jié)尾占用的至少一個(gè)緩沖區(qū)地址,所述緩沖區(qū)為TCP緩沖區(qū)、ULP緩沖區(qū)及應(yīng)用緩沖區(qū)之一。
優(yōu)選地,如果所述第二接收的TCP分段為有序TCP分段,則所述至少一個(gè)處理器將所述有序TCP分段相鄰于所述第一接收的TCP分段放置于所述主機(jī)緩沖區(qū)內(nèi)。
優(yōu)選地,所述至少一個(gè)處理器將所述有序TCP分段從與所述第一接收的TCP分段的所述結(jié)尾占用的所述被記錄的地址相鄰的地址開始放置于所述主機(jī)緩沖區(qū)內(nèi)。
優(yōu)選地,所述至少一個(gè)處理器執(zhí)行下列至少之一通過(guò)所述無(wú)線網(wǎng)絡(luò)處理器記錄下列數(shù)據(jù)指示至少之一所述有序TCP分段的結(jié)尾占用的結(jié)尾緩沖區(qū)地址;開始緩沖區(qū)地址加上所述有序TCP分段的數(shù)據(jù)部分的長(zhǎng)度;及跟隨所述有序TCP分段的結(jié)尾的一個(gè)字節(jié)的緩沖區(qū)地址;及在所述無(wú)線網(wǎng)絡(luò)處理器上存儲(chǔ)與至少一個(gè)所述指示數(shù)據(jù)相關(guān)的控制信息。
優(yōu)選地,所述至少一個(gè)處理器執(zhí)行下列至少之一在所述無(wú)線網(wǎng)絡(luò)處理器上記錄至少一個(gè)數(shù)據(jù)指示所述放置的亂序TCP分段的開始所占用的地址,及所述放置的亂序TCP分段的結(jié)尾所占用的地址;及所述的加上所述放置的亂序TCP分段占用的長(zhǎng)度的開始緩沖區(qū)地址;在所述無(wú)線網(wǎng)絡(luò)處理器上存儲(chǔ)與所述網(wǎng)絡(luò)處理器上的所述指示數(shù)據(jù)相關(guān)的控制信息。
優(yōu)選地,所述緩沖區(qū)地址TCP、ULP及驅(qū)動(dòng)器至少之一提供。
優(yōu)選地,所述至少一個(gè)處理器為TCP卸載引擎(TCP offload engine,簡(jiǎn)稱TOE)、RISC處理器及有限狀態(tài)機(jī)(finite state machine,簡(jiǎn)稱FSM)之一,其中每一個(gè)被集成于所述無(wú)線網(wǎng)絡(luò)處理器中。
本發(fā)明的這些及其它優(yōu)點(diǎn)、方面及新穎性特征同所舉的實(shí)施例的細(xì)節(jié)將從下面的描述及附圖中被更全面地理解。


圖1A為根據(jù)本發(fā)明的實(shí)施例的無(wú)線通信系統(tǒng)的結(jié)構(gòu)示意圖。
圖1B為根據(jù)本發(fā)明的實(shí)施例的用于與處理無(wú)線系統(tǒng)內(nèi)亂序分段有關(guān)的一示例性系統(tǒng)的結(jié)構(gòu)示意圖。
圖1C為根據(jù)本發(fā)明的實(shí)施例的用于與處理無(wú)線系統(tǒng)內(nèi)亂序分段有關(guān)的另一示例性系統(tǒng)的結(jié)構(gòu)示意圖。
圖1D為根據(jù)本發(fā)明的實(shí)施例的用于處理亂序(OOO)TCP分段的示例性系統(tǒng)的可選實(shí)施例的結(jié)構(gòu)示意圖。
圖1E為根據(jù)本發(fā)明的實(shí)施例的以一種直通方式處理亂序(OOO)傳輸控制協(xié)議(TCP)數(shù)據(jù)報(bào)的系統(tǒng)的的結(jié)構(gòu)示意圖。
圖1F為根據(jù)本發(fā)明的實(shí)施例的幀接收的示例性步驟的流程圖。
圖1G為根據(jù)本發(fā)明的實(shí)施例的示例性傳輸路徑的結(jié)構(gòu)示意圖。
圖2A為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)接收的TCP分段的結(jié)構(gòu)示意圖。
圖2B為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的亂序TCP分段的結(jié)構(gòu)示意圖。
圖3為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)多個(gè)接收的亂序TCP分段的結(jié)構(gòu)示意圖。
圖4為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的有序TCP分段的結(jié)構(gòu)示意圖。
圖5為根據(jù)本發(fā)明的實(shí)施例的插入第一漏洞的一部分且用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的亂序TCP分段的結(jié)構(gòu)示意圖。
圖6為根據(jù)本發(fā)明的實(shí)施例的插入第一漏洞的剩余部分且用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的亂序TCP分段的結(jié)構(gòu)示意圖。
圖7A為根據(jù)本發(fā)明的實(shí)施例的完全插入一個(gè)漏洞且用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的亂序TCP分段的結(jié)構(gòu)示意圖。
圖7B為根據(jù)本發(fā)明的實(shí)施例的示例性的更新變量的結(jié)構(gòu)示意圖。
圖8為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)及配置前的示例性變量及緩沖區(qū)的狀態(tài)的新接收的有序TCP分段的結(jié)構(gòu)示意圖。
圖9為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)及描述隨后配置的示例性變量及緩沖區(qū)的各種狀態(tài)的新接收的有序TCP分段的結(jié)構(gòu)示意圖。
圖10為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間及其緩沖內(nèi)的新接收的有序TCP分段的處理的結(jié)構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明的某些實(shí)施例可被發(fā)現(xiàn)于通過(guò)直接數(shù)據(jù)布置處理無(wú)線系統(tǒng)內(nèi)亂序片段(fragment)或分段(segment)的方法及系統(tǒng)中。
圖1A為根據(jù)本發(fā)明的實(shí)施例的無(wú)線通信系統(tǒng)的結(jié)構(gòu)示意圖。參考圖1A,所示的通信系統(tǒng)10包括多個(gè)基站和/或接入點(diǎn)12-16,多個(gè)無(wú)線通信設(shè)備18-32及網(wǎng)絡(luò)硬件元件34。該無(wú)線通信設(shè)備18-32可為膝上型主機(jī)電腦18及26、個(gè)人數(shù)字助理主機(jī)20及30、個(gè)人計(jì)算機(jī)(PC)主機(jī)24及32和/或蜂窩電話主機(jī)22及28。
例如,基站和/或接入點(diǎn)12-16可通過(guò)局域網(wǎng)(local area network,簡(jiǎn)稱LAN)連接36、38及40而被操作地連接至網(wǎng)絡(luò)硬件34。該網(wǎng)絡(luò)硬件34如路由器、開關(guān)、電橋、調(diào)制解調(diào)器或系統(tǒng)控制器可為通信系統(tǒng)10提供廣域網(wǎng)連接42。每個(gè)基站和/或接入點(diǎn)12-16可具有一個(gè)相關(guān)的天線或天線陣列,以在其區(qū)域內(nèi)與無(wú)線通信設(shè)備進(jìn)行通信。典型地,無(wú)線通信設(shè)備向一特定基站和/或接入點(diǎn)12-16注冊(cè),以從該通信系統(tǒng)10接收服務(wù)。對(duì)于直接連接,例如點(diǎn)對(duì)點(diǎn)通信,無(wú)線通信設(shè)備可通過(guò)一個(gè)或多個(gè)分配的信道直接地通信。一般,基站被用于蜂窩電話系統(tǒng)或相似類型的系統(tǒng),而接入點(diǎn)被用于家庭內(nèi)或室內(nèi)無(wú)線網(wǎng)絡(luò)。無(wú)論哪種特定類型的通信系統(tǒng),每個(gè)無(wú)線通信設(shè)備包括內(nèi)置無(wú)線電設(shè)備和/或與無(wú)線電設(shè)備相連接。
圖1B為根據(jù)本發(fā)明的實(shí)施例的用于與處理無(wú)線系統(tǒng)內(nèi)亂序分段相關(guān)的示例性系統(tǒng)的結(jié)構(gòu)示意圖。參照?qǐng)D1B,該系統(tǒng)包括處理器102、存儲(chǔ)控制器104、主機(jī)存儲(chǔ)器106、主機(jī)界面108、無(wú)線網(wǎng)絡(luò)界面處理系統(tǒng)110及天線112。在本發(fā)明的一個(gè)實(shí)施例中,存儲(chǔ)控制器104可集成至控制器102。無(wú)線網(wǎng)絡(luò)界面處理系統(tǒng)110可為一個(gè)無(wú)線網(wǎng)絡(luò)處理器110。
無(wú)線網(wǎng)絡(luò)處理器110包括如TCP卸載引擎(TCP Offload Engine,TOE)114或集成的無(wú)線網(wǎng)絡(luò)處理器芯片或芯片組。該無(wú)線網(wǎng)絡(luò)處理器110包括如無(wú)線網(wǎng)絡(luò)界面卡(WNIC)和/或無(wú)線網(wǎng)絡(luò)界面處理邏輯、電路和/或編碼。例如,該無(wú)線網(wǎng)絡(luò)界面處理邏輯包括單片無(wú)線網(wǎng)絡(luò)芯片或處理器或芯片組以用于提供相似類型的功能。在本發(fā)明的一個(gè)實(shí)施例中,該無(wú)線網(wǎng)絡(luò)界面卡可通過(guò)主機(jī)界面108而被連接至主機(jī)105。主機(jī)界面108可為如通用串行總線(universal serial bus,簡(jiǎn)稱USB)、外圍部件互連(peripheral component interconnect,簡(jiǎn)稱PCI)、PCI-X、ISA、SCSI或其它類型的總線。該存儲(chǔ)控制器106可被連接至處理器104、存儲(chǔ)器106及主機(jī)界面108。圖1B的系統(tǒng)可根據(jù)本發(fā)明的各個(gè)方面而以用于直通式方式處理亂序(OOO)傳輸控制協(xié)議(TCP)數(shù)據(jù)報(bào)。
圖1C為根據(jù)本發(fā)明的實(shí)施例的用于與處理無(wú)線系統(tǒng)內(nèi)亂序分段有關(guān)的另一示例性系統(tǒng)的結(jié)構(gòu)示意圖。參照?qǐng)D1C,該系統(tǒng)包括如處理器102、主機(jī)存儲(chǔ)器106、專用存儲(chǔ)器116及芯片組118。該芯片組118包括如無(wú)線網(wǎng)絡(luò)處理器110。該芯片組118可被連接至CPU102、主機(jī)存儲(chǔ)器106及專用存儲(chǔ)器116及天線112。該芯片組118的無(wú)線網(wǎng)絡(luò)處理器110包括TOE,且可被連接至天線112。該專用存儲(chǔ)器116可為文本和/或數(shù)據(jù)提供緩沖。圖1C的系統(tǒng)可用于處理亂序(OOO)傳輸控制協(xié)議(TCP)數(shù)據(jù)報(bào),例如,根據(jù)本發(fā)明的各個(gè)方面以直通式方式。
該專用存儲(chǔ)器116為文本和/或數(shù)據(jù)提供緩沖。存在多個(gè)選擇以存儲(chǔ)文本緩沖。這些選擇包括于TOE114內(nèi)存儲(chǔ)文本,于專用存儲(chǔ)器116內(nèi)存儲(chǔ)文本及于主機(jī)存儲(chǔ)器106內(nèi)存儲(chǔ)文本。相應(yīng)地,圖1A、圖1B、圖1C及圖1D中所示的各個(gè)實(shí)施例配置擁有在通過(guò)這些存儲(chǔ)選擇中處理文本存儲(chǔ)的能力。
雖然本發(fā)明舉例示出了各種實(shí)施例,例如,CPU及包括天線的無(wú)線界面,本發(fā)明不必限于這些例子。相應(yīng)地,本發(fā)明的各種實(shí)施例可分別地采用,例如,任何類型的電路和/或處理器及任何類型的數(shù)據(jù)鏈接層或物理媒介。相應(yīng)地,雖然示例的為連接至圖1B的天線112或TOE 114可被用于處理各種類型的數(shù)據(jù)鏈接層或物理媒介。而且,本發(fā)明還考慮到在圖1B-C中所示元件間的不同程度的集成及分離。例如,TOE114可為從嵌入至一個(gè)電路板的芯片組118上分離的集成芯片或可被嵌入于WNIC中。另外,專用存儲(chǔ)器116可被集成至芯片組118或被集成至圖1C的無(wú)線網(wǎng)絡(luò)處理器110。
圖1D為根據(jù)本發(fā)明的實(shí)施例的可用于處理亂序(OOO)TCP分段的示例性系統(tǒng)的可選實(shí)施例。參照?qǐng)D1D,其示出了主機(jī)處理器124、主機(jī)存儲(chǔ)器/緩沖區(qū)126、軟件算法模塊134及無(wú)線網(wǎng)絡(luò)處理模塊128。無(wú)線網(wǎng)絡(luò)處理模塊128包括網(wǎng)絡(luò)處理器130及簡(jiǎn)化的無(wú)線網(wǎng)絡(luò)處理器存儲(chǔ)器/緩沖區(qū)模塊132。
根據(jù)本發(fā)明的實(shí)施例,軟件算法模塊134包括可被用于控制主機(jī)處理器124和/或無(wú)線網(wǎng)絡(luò)處理器(WNP)128的代碼,以處理亂序(OOO)TCP分段。亂序TCP分段可被語(yǔ)法分析或TCP文本信息可被獲得。主機(jī)處理器124可決定標(biāo)題信息及有效載荷的邊界,及該有效載荷數(shù)據(jù)可被映射至主機(jī)存儲(chǔ)器/緩沖區(qū)126。映射之后,該有效載荷可被傳送至主機(jī)存儲(chǔ)器/緩沖區(qū)126。
圖1E為根據(jù)本發(fā)明的實(shí)施例的以一種直通方式處理亂序(OOO)傳輸控制協(xié)議(TCP)數(shù)據(jù)報(bào)的系統(tǒng)的的結(jié)構(gòu)示意圖。參照?qǐng)D1E,其示出了物理層(PHY)71、媒介訪問(wèn)控制(MAC)模塊72、CRC模塊73、DMA引擎、主機(jī)總線75、主機(jī)緩沖模塊76、控制路徑78、數(shù)據(jù)路徑78、幀緩沖區(qū)83、幀語(yǔ)法分析模塊84。圖1E進(jìn)一步包括多個(gè)存儲(chǔ)選擇,其包括芯片內(nèi)高速緩沖存儲(chǔ)器模塊79a、79b、主機(jī)上存儲(chǔ)模塊80a、80b、芯片外存儲(chǔ)器81a、81b,81c及芯片內(nèi)存儲(chǔ)器82a、82b。
一般,輸入幀可以被L2處理,包括如地址濾波、幀有效性及錯(cuò)誤探測(cè)。一個(gè)輸入幀在由PHY 71、MAC 72及CRC模塊72處理之后,或被發(fā)送至幀語(yǔ)法分析模塊84,以進(jìn)行語(yǔ)法分析。幀語(yǔ)法分析模塊84可被用于分析來(lái)自幀的控制信息及實(shí)際的有效載荷數(shù)據(jù)。幀語(yǔ)法分析模塊84可被用于促進(jìn)L2、L3、L4標(biāo)題信息的語(yǔ)法分析、相容性檢測(cè)、多元組查找及可編程和固定規(guī)則檢測(cè)。在幀語(yǔ)法分析模塊84完成語(yǔ)法分析后,所得的控制信息可通過(guò)控制路徑77被傳送以進(jìn)行處理,及有效載荷數(shù)據(jù)和/或原始打包數(shù)據(jù)可通過(guò)數(shù)據(jù)路徑78被傳送以進(jìn)行處理。該原始打包數(shù)據(jù)包括可選標(biāo)題信息。該經(jīng)語(yǔ)法分析的有效載荷打包數(shù)據(jù)可于幀緩沖模塊內(nèi)被緩沖。在本發(fā)明的一個(gè)可選實(shí)施例中,經(jīng)語(yǔ)法分析的有效載荷打包數(shù)據(jù)的至少一部分可被存儲(chǔ)于芯片外存儲(chǔ)模塊,如芯片外存儲(chǔ)器81c。在這個(gè)方面,進(jìn)出幀緩沖區(qū)的原始打包信息和/或有效載荷數(shù)據(jù)可被移至該芯片外存儲(chǔ)器。DMA引擎74可將出幀緩沖區(qū)的DMA數(shù)據(jù)移入主機(jī)緩沖區(qū)模塊76內(nèi)的緩沖區(qū)。
與普通以太網(wǎng)控制器不同,處理的下一個(gè)階段包括如IP處理這樣的L3及如TCP處理這樣的L4。該無(wú)線網(wǎng)絡(luò)處理器110可減少主機(jī)CPU的使用及存儲(chǔ)器帶寬,例如,通過(guò)在硬件卸載TCP/IP連接上處理通信業(yè)務(wù)。該無(wú)線網(wǎng)絡(luò)處理器110可探測(cè)如輸入數(shù)據(jù)包所屬的協(xié)議。對(duì)于TCP,無(wú)線網(wǎng)絡(luò)處理器110可探測(cè)該數(shù)據(jù)包是否相應(yīng)于一個(gè)卸載TCP連接,例如,對(duì)于一個(gè)連接,至少一些TCP狀態(tài)信息可被無(wú)線網(wǎng)絡(luò)處理器110保持。一旦連接已經(jīng)與數(shù)據(jù)包或幀的連接,如L5或其上的任何更高級(jí)別的處理可被獲得。如果該數(shù)據(jù)包相應(yīng)于一個(gè)卸載連接,那么該無(wú)線網(wǎng)絡(luò)處理器110可指引所述幀的數(shù)據(jù)有效載荷部分的數(shù)據(jù)移動(dòng)。有效載荷數(shù)據(jù)的目的地可從與幀內(nèi)方向信息相結(jié)合的連接狀態(tài)信息確定。如該目的地可為主機(jī)存儲(chǔ)器。最后,該無(wú)線網(wǎng)絡(luò)處理器110更新其內(nèi)部TCP及連接狀態(tài)的更高級(jí)別,且可獲得來(lái)自其內(nèi)部連接狀態(tài)的主機(jī)緩沖區(qū)地址及長(zhǎng)度。
該控制路徑77內(nèi)的系統(tǒng)元件可被用于處理各種用于以最大適應(yīng)性及效率及目標(biāo)有線速度完成如L3/L4或高級(jí)處理的處理階段。這些元件包括聯(lián)系模塊85,文本獲取模塊86,接收(Rx)處理模塊87,TCP代碼88及高速緩沖存儲(chǔ)器模塊。這些處理階段的結(jié)果包括如一個(gè)或多個(gè)數(shù)據(jù)包識(shí)別卡(PID_Cs),其可提供與幀有效載荷數(shù)據(jù)相關(guān)聯(lián)的承載信息的控制結(jié)構(gòu)。當(dāng)在各種模塊內(nèi)處理數(shù)據(jù)包時(shí),其已經(jīng)發(fā)生于無(wú)線網(wǎng)絡(luò)處理器110內(nèi)。該接收處理模塊包括適合的邏輯、電路和/或代碼,可被用于產(chǎn)生被用于控制DMA引擎74的緩沖控制信息。
在幀語(yǔ)法分析模塊84分析來(lái)自輸入幀的TCP/IP標(biāo)題后,聯(lián)系模塊85將該幀與端到端TCP/IP連接聯(lián)系。該文本獲取模塊86被用于獲取TCP連接文本及處理TCP/IP標(biāo)題。標(biāo)題和/或數(shù)據(jù)邊界可被確定,數(shù)據(jù)可被映射至主機(jī)緩沖區(qū)模塊76內(nèi)的一個(gè)或多個(gè)主機(jī)緩沖區(qū)。該DMA引擎74可被用于通過(guò)主機(jī)總線75將數(shù)據(jù)DMA傳送至主機(jī)緩沖區(qū)模塊76內(nèi)的緩沖區(qū)。該標(biāo)題可在芯片內(nèi)被消耗或通過(guò)DMA引擎被傳送至主機(jī)。
幀緩沖區(qū)83可為接收系統(tǒng)結(jié)構(gòu)內(nèi)的可選模塊。其為了相同的目的而被使用、如先進(jìn)先出(FIFO)數(shù)據(jù)結(jié)構(gòu)被用于傳統(tǒng)L2 NIC或?yàn)閭鹘y(tǒng)的處理存儲(chǔ)更高層通信業(yè)務(wù)。接收系統(tǒng)內(nèi)的該幀緩沖區(qū)83不被限于一個(gè)單獨(dú)的例子,且相應(yīng)地,可為該幀緩沖區(qū)83的多個(gè)例子。在本發(fā)明的一個(gè)實(shí)施例中,F(xiàn)IFO的一個(gè)例子可被用于多個(gè)連接。當(dāng)控制路徑77處理語(yǔ)法分析的控制信息的處理時(shí),根據(jù)協(xié)議要求,該數(shù)據(jù)路徑78可一次或多次在數(shù)據(jù)處理階段之間存儲(chǔ)相應(yīng)的數(shù)據(jù)。
圖1F為根據(jù)本發(fā)明的實(shí)施例的幀接收的示例性步驟的流程圖。參照?qǐng)D1E及圖1F,在步驟191中,無(wú)線網(wǎng)絡(luò)處理器110從如天線112接收一個(gè)幀。在幀192中,該幀語(yǔ)法分析模塊84可對(duì)該幀進(jìn)行語(yǔ)法分析,如,發(fā)現(xiàn)L3及L4標(biāo)題信息。該幀語(yǔ)法分析模塊84可處理引導(dǎo)L3標(biāo)題信息的L2標(biāo)題信息,如第4版本IP(IPv4)標(biāo)題或第6版本IP(IPv6)標(biāo)題。該IP標(biāo)題版本域可被用于確定該幀是否承載IPv4數(shù)據(jù)報(bào)或IPv6數(shù)據(jù)報(bào)。
例如,如果IP標(biāo)題版本域承載值為4,那么該幀可承載IPv4數(shù)據(jù)報(bào)。如果,例如,該IP標(biāo)題版本域承載值為6,那么該幀可承載IPv6數(shù)據(jù)報(bào)。該IP標(biāo)題域可被提取,因此獲得如該IP源(IP SRC)地址,該IP目的(IP DST)地址,及該IPv4標(biāo)題“協(xié)議”域或該IPv6“下一個(gè)標(biāo)題”。如果該IPv4標(biāo)題“協(xié)議”域或該IPv6“下一個(gè)標(biāo)題”標(biāo)題域承載值為6,那么接下來(lái)的標(biāo)題可為TCP標(biāo)題。語(yǔ)法分析的結(jié)果可被加到PID_C及該P(yáng)ID_C可在無(wú)線網(wǎng)絡(luò)處理器110內(nèi)與數(shù)據(jù)包一起傳輸。
其余該IP測(cè)試的處理可以一種與傳統(tǒng)的現(xiàn)有軟件棧內(nèi)的處理相似的方式而隨后發(fā)生。執(zhí)行可從嵌入式處理器上的韌件的使用到潛在地更快的專用的有限狀態(tài)機(jī),或處理器與狀態(tài)機(jī)的結(jié)合的范圍內(nèi)變化。該執(zhí)行可如通過(guò)一個(gè)或更多的處理器、狀態(tài)機(jī)或混合電路,隨處理的多個(gè)階段一起變化。該IP處理包括但不限于提取與如長(zhǎng)度、有效性及存儲(chǔ)碎片相關(guān)的信息。該定位的TCP標(biāo)題信息也可被語(yǔ)法分析和處理。該TCP標(biāo)題信息的語(yǔ)法分析可提取與如源端口及目的端口相關(guān)的信息。
該TCP處理可被分成多個(gè)附加的處理階段。在步驟193中,該幀可與一端到端TCP/IP連接相聯(lián)系。在L2處理之后,在一個(gè)實(shí)施例中,本發(fā)明可提供TCP校驗(yàn)和被驗(yàn)證。該端到端連接可被通過(guò)例如如下5個(gè)多元組而被唯一地定義IP源地址(IP SRC addr);IP目的地址(IP DST addr);如TCP、UDP或其它上層協(xié)議這樣的IP協(xié)議之上的L4協(xié)議;TCP源端口數(shù)量(TCP SRC);及TCP目的端口數(shù)量(TCP DST)。該處理可適用于具有相關(guān)IP地址選擇的IPv4或IPv6。在步驟194中,TCP連接文本可被獲取。在步驟195中,該TCP/IP標(biāo)題可被處理。在步驟196中,確定標(biāo)題信息及有效載荷數(shù)據(jù)的邊緣。其可包括TCP選擇及任何上層協(xié)議(ULP)標(biāo)題信息。TCP選擇或ULP的另外處理可先于有效載荷映射及布置。在步驟197中,有效載荷數(shù)據(jù)可被映射至一個(gè)或更多的主機(jī)緩沖區(qū)。在步驟198中,有效載荷數(shù)據(jù)可被傳輸至它們被映射到的主機(jī)緩沖區(qū)。
作為在步驟192幀語(yǔ)法分析的結(jié)果,該5個(gè)多元組可被完全地提取,且可于PID_C內(nèi)獲得。聯(lián)系硬件可將該接收到的5個(gè)多元組與存儲(chǔ)于無(wú)線網(wǎng)絡(luò)處理器110內(nèi)的5個(gè)多元組的列表進(jìn)行對(duì)比。該無(wú)線網(wǎng)絡(luò)處理器110可保留多元組的列表,其代表著如前一個(gè)處理過(guò)的卸載連接或正被無(wú)線網(wǎng)絡(luò)處理器110管理的卸載連接。該用于存儲(chǔ)聯(lián)系信息的存儲(chǔ)器資源對(duì)于芯片內(nèi)及芯片外的選擇來(lái)說(shuō)是昂貴的。因此,不是所有的聯(lián)系信息均被收容于芯片上是有可能的。高速緩沖存儲(chǔ)器可被用于芯片上的存儲(chǔ)最有效的主動(dòng)連接。如果發(fā)現(xiàn)了一個(gè)匹配,那么該無(wú)線網(wǎng)絡(luò)處理器110可管理與該匹配的5多元組相連接的特定TCP/IP。
圖1G為根據(jù)本發(fā)明的實(shí)施例的示例性傳輸路徑。參照?qǐng)D1G,該無(wú)線網(wǎng)絡(luò)處理器110包括如物理層(PHY)180、MAC層190、標(biāo)題生成器200、文本預(yù)取210、計(jì)時(shí)器模塊220、傳送處理器230、數(shù)據(jù)及控制模塊240、確認(rèn)模塊250、程序安排260及DMA引擎270。該計(jì)時(shí)器模塊220包括如TCP狀態(tài)傳送及重傳送計(jì)時(shí)器。該程序安排260被用于進(jìn)行如至具有傳輸、共享及請(qǐng)求訪問(wèn)媒介、窗口和/或重傳送判斷的多連接的下一個(gè)連接的選擇。該DMA引擎270包括如XSUM模塊280或其它數(shù)據(jù)特別處理。例如,用于如iSCSI協(xié)議要求的CRC。其包括將數(shù)據(jù)插入由主機(jī)提供的數(shù)據(jù)中及計(jì)算CRC值。
在傳輸路徑上,對(duì)L4及更高級(jí)別的支持包括附加的復(fù)雜性及功能性。傳輸包括執(zhí)行如下的一個(gè)或更多安排傳輸流程;通過(guò)DMA傳送數(shù)據(jù);獲取文本;傳送處理;將L5或更高與TCP/IP標(biāo)題相加;提供計(jì)時(shí)器;及L2傳送。
程序安排260可用于確定接下來(lái)應(yīng)進(jìn)行哪一個(gè)流程。該程序安排260也可被用于處理通信業(yè)務(wù)的L2、L4及更高級(jí)別的復(fù)用。關(guān)于通信業(yè)務(wù)的L4及更高級(jí)別,安排一個(gè)特別的TCP/IP流程以用于傳輸?shù)臎Q定依賴于如下因素的一個(gè)或更多在主機(jī)側(cè)傳輸?shù)臄?shù)據(jù)有效性;遠(yuǎn)端緩沖狀態(tài)如當(dāng)遠(yuǎn)程TCP連接沒(méi)關(guān)閉TCP窗口時(shí);防止媒介上的潛在大量TCP連接競(jìng)爭(zhēng)時(shí)間中的資源缺乏;來(lái)自接收側(cè)的TCP確認(rèn)的有效性;及在TCP連接的利益上重傳送信息的需要。
利用上面識(shí)別的信息或其它信息的一些或全部,程序安排260可選擇下一個(gè)要被傳輸?shù)牧鞒?。在本發(fā)明的一個(gè)實(shí)施例中,程序安排260包括適合的邏輯,電路和/或代碼,以用于選取來(lái)自文本信息的至下一個(gè)主機(jī)常駐緩沖區(qū)的指示器。該程序安排260還編程DMA引擎270以如在芯片內(nèi)FIFO緩沖區(qū)中得到數(shù)據(jù)并存儲(chǔ)數(shù)據(jù)。
該DMA引擎270包括適合的邏輯,電路和/或代碼,以用于將數(shù)據(jù)從主機(jī)緩沖區(qū)或緩沖區(qū)傳送至如芯片內(nèi)傳送側(cè)FIFO緩沖區(qū)。如IPv4校驗(yàn)和/或TCP校驗(yàn)這樣的IP校驗(yàn)可為正被傳送的數(shù)據(jù)被計(jì)算。該計(jì)算可與數(shù)據(jù)移動(dòng)同時(shí)被執(zhí)行。更高級(jí)的數(shù)據(jù)處理也可在該階段被執(zhí)行。
通過(guò)文本預(yù)取210從中心文本源中可獲取流程文本。訪問(wèn)該中心文本源可增加其所有消耗裝置中的鎖定機(jī)構(gòu)的有效性以確保數(shù)據(jù)的完整性及相干性。鎖定機(jī)構(gòu)可有效地最小化不渴望性能影響。該選擇的流程文本可被提供至如CPU和/或有限狀態(tài)機(jī)(FSM)這樣的傳送處理器230。
該傳送處理器230可被用于如執(zhí)行TCP/IP及更高代碼級(jí),以更新文本及產(chǎn)生TCP/IP及更高級(jí)標(biāo)題變量以被放置于標(biāo)題內(nèi)。該更新的文本被存儲(chǔ)。這個(gè)階段的處理通過(guò)一個(gè)或更多包括一個(gè)或更多處理器、狀態(tài)機(jī)或混合處理器的階段而被執(zhí)行。
標(biāo)題生成器200可被使用應(yīng)用通過(guò)傳送處理器230產(chǎn)生標(biāo)題變量,及可產(chǎn)生TCP/IP及更高級(jí)別的標(biāo)題信息和/或報(bào)尾,及可將該TCP/IP及更高級(jí)別的標(biāo)題附著于要被傳送的數(shù)據(jù)的前面。通過(guò)使用自DMA引擎270獲得的部分校驗(yàn)和結(jié)果,該標(biāo)題生成器200可最后確定該校驗(yàn)和域及可將它們安置于各自的標(biāo)題內(nèi)。傳送處理不限于特定數(shù)量的階段和處理,且可作為在不同級(jí)的最佳處理階段被執(zhí)行。
該計(jì)時(shí)器220被傳送處理器230提供,且可更新其未來(lái)計(jì)時(shí)事件表。當(dāng)該L4及更高級(jí)的處理被完成時(shí),該L2處理及傳輸可通過(guò)傳統(tǒng)的無(wú)線控制器而遵從傳統(tǒng)步驟執(zhí)行。
重傳送事件與正常傳送相似,除了要被發(fā)送的數(shù)據(jù)如以前從主機(jī)緩沖區(qū)獲取或從任何其它暫時(shí)的支持緩沖區(qū)獲取。這個(gè)數(shù)據(jù)的地址可被計(jì)算。主機(jī)緩沖區(qū)地址的計(jì)算可更復(fù)雜。描述于接收路徑段的相同映射功能可被用于重傳送TCP序列數(shù)值范圍。一旦緩沖區(qū)地址被確定,傳輸處理的剩余部分可按如上所述而發(fā)生。
對(duì)于接收器上的數(shù)據(jù)重新裝配,一塊接收的幀包括亂序信息是可能的。在這個(gè)方面,接收塊內(nèi)的一個(gè)或更多的TCP分段可能是遺漏的。一個(gè)遺漏的TCP段可被認(rèn)作為一個(gè)漏洞(hole)。具有遺漏的TCP分段或漏洞的控制信息或數(shù)據(jù)的總和也可被存儲(chǔ)或保留于無(wú)線網(wǎng)絡(luò)處理器110或網(wǎng)絡(luò)系統(tǒng)50。其可提供一個(gè)直通式結(jié)構(gòu),該結(jié)構(gòu)可在無(wú)線NIC或無(wú)線網(wǎng)絡(luò)處理器上要求最小的資源。在這個(gè)方面,該無(wú)線網(wǎng)絡(luò)處理器不需要支持緩沖區(qū)用于存儲(chǔ)或緩沖亂序TCP分段,且能夠利用源有效可升級(jí)存儲(chǔ)器管理亂序TCP分段,因?yàn)閬y序TCP分段可被放置或至少存儲(chǔ)于暫時(shí)的緩沖區(qū)內(nèi)。在本發(fā)明的一個(gè)方面中,如FIFO這樣的暫時(shí)緩沖區(qū)或主機(jī)緩沖區(qū)可被用于暫時(shí)性地緩沖TCP分段。通過(guò)這種方法,數(shù)據(jù)要求的存儲(chǔ)器不會(huì)如典型的傳統(tǒng)系統(tǒng)那樣與連接數(shù)量、每個(gè)連接的漏洞的數(shù)量或TCP連接帶寬延遲產(chǎn)品數(shù)量成比例。相應(yīng)地,被定位以容置控制數(shù)據(jù)的附加空間與漏洞的數(shù)量成比例,不與亂序的TCP分段或幀的數(shù)量成比例。
根據(jù)本發(fā)明的一個(gè)方面,示例性的TCP控制板狀態(tài)的分析連同其提供給用戶的信息及服務(wù),顯示了稍微多一些的計(jì)算,直通式無(wú)線或無(wú)線網(wǎng)絡(luò)處理器可支持亂序TCP分段而不用為on-NIC數(shù)據(jù)緩沖區(qū)存儲(chǔ)亂序TCP分段。如FIFO或芯片內(nèi)存儲(chǔ)器的其它組織這樣的暫時(shí)性的緩沖可被利用。相應(yīng)地,無(wú)論何時(shí)數(shù)據(jù)符合TCP規(guī)則或被適當(dāng)?shù)鼐芙^,亂序TCP分段一到達(dá)被充分地處理以允許數(shù)據(jù)的布置。在這個(gè)方面,被適當(dāng)?shù)鼐芙^的數(shù)據(jù)如非法的或失效的數(shù)據(jù)。非法的或失效的數(shù)據(jù)包括已經(jīng)超出相應(yīng)的TCP窗口或沒(méi)有在相應(yīng)的TCP窗口內(nèi)被接收到的數(shù)據(jù)。
圖2A為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)接收的TCP分段的結(jié)構(gòu)示意圖。參照?qǐng)D2A,其示出了在TCP序列空間及TCP窗口282內(nèi)的一個(gè)接收的TCP分段281。TCP接收窗口(RCV.NXT)左邊界右邊的數(shù)據(jù)表示為L(zhǎng),及TCP接收窗口(RCV.NXT+RCV_WIND)右邊界左邊的數(shù)據(jù)表示為R,其根據(jù)TCP協(xié)議而被接收。
圖2B為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的亂序TCP分段的結(jié)構(gòu)示意圖。參照?qǐng)D2B,其示出了TCP序列空間及TCP窗口285內(nèi)的有序TCP分段283、亂序TCP分段284。
在本發(fā)明的一個(gè)實(shí)施例中,新接收的亂序TCP片段284產(chǎn)生位于有序TCP分段283與新接收的亂序TCP分段284間的第一漏洞。該第一漏洞的開始由一個(gè)變量Hole_1_Start表示,該第一漏洞的結(jié)尾由一個(gè)變量Hole_1_End表示。新接收的亂序TCP分段284的最左邊部分的位置可被賦值一個(gè)變量First_TCP_Seq,新接收的亂序TCP分段284的最右邊部分的位置可被賦值一個(gè)變量Last_TCP_Seq。新接收的亂序TCP分段284的最左邊部分的位置還可被賦值一個(gè)變量如OOO_List
.Begin。新接收的亂序TCP分段284的最右邊部分的位置還可被賦值一個(gè)變量如OOO_List
.End。一般,變量OOO_List
.Begin及變量OOO_List
.End提供了一個(gè)可被用于跟蹤亂序TCP分段的列表。相應(yīng)地,在本發(fā)明的一個(gè)方面中,被用于跟蹤亂序TCP分段的列表可在一個(gè)陣列中被執(zhí)行。而且,本發(fā)明不只限于此,而其它數(shù)據(jù)結(jié)構(gòu)可被利用而不脫離本發(fā)明的各種方面。
在TCP分段是亂序的例子中,在一個(gè)主機(jī)處理器或?qū)S玫臒o(wú)線網(wǎng)絡(luò)界面卡上運(yùn)行的共同TCP堆?;蛘呗淙朐揟CP分段或者緩沖該TCP分段,直到TCP序列空間的漏洞被堵上。堵上后,該作為亂序TCP分段被接收的一個(gè)或多個(gè)TCP分段可被處理。
盡管如此,通過(guò)直通式結(jié)構(gòu),希望TCP分段的TCP處理具有最小的或真實(shí)的無(wú)芯片內(nèi)緩沖。在這個(gè)方面,在網(wǎng)絡(luò)被接收時(shí),有效的TCP分段可被處理并被置于主機(jī)緩沖區(qū)內(nèi)。有效的TCP分段是那些可以落入TCP窗口內(nèi)的分段。在這種情況下,接收器可以獲得和/或監(jiān)視與亂序TCP分段相關(guān)的數(shù)據(jù),且保持TCP控制空間的計(jì)算以使漏洞可被堵上并加倍阻止。對(duì)于TCP分段空間內(nèi)的每個(gè)漏洞,接收器可保持例如其開始及結(jié)尾點(diǎn)的TCP序列數(shù)量或開始及長(zhǎng)度。我們用一個(gè)作為例子的方法舉例說(shuō)明了關(guān)于偽碼的另一個(gè)方法。其后接收的任何新的TCP分段可被檢測(cè)以注意其是否為有序的,相鄰于一個(gè)漏洞或是否為新的亂序TCP分段。漏洞的邊緣或邊界可被相應(yīng)地移動(dòng)。該接收處理遵從TCP協(xié)議,其中,復(fù)制的字節(jié)不被接收及落出窗口外的數(shù)據(jù)不被接收。例如,變量First_TCP_Seq及Last_TCP_Seq可被用于保持第一漏洞的軌跡,該第一漏洞由圖2B的TCP序列空間上的新的亂序分段284的布置而產(chǎn)生。
圖3為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)多個(gè)接收的亂序TCP分段的結(jié)構(gòu)示意圖。參照?qǐng)D3,其示出了有序TCP分段302、在先亂序TCP分段304及新的亂序TCP分段306。該第一漏洞被配置于圖2B所示的有序TCP分段302和在先亂序TCP分段304之間。由于新的亂序TCP分段306的布置,第二漏洞被配置于在先亂序TCP分段304與新的亂序TCP分段306之間。第二漏洞的開始可由如變量Hole_2_Start表示,該第二漏洞的結(jié)尾由如一個(gè)變量Hole_2_End表示。新的亂序TCP分段306與第二漏洞的結(jié)尾相鄰的部分Hole_2_End可被賦值一個(gè)變量如OOO_List[1].Begin。分段306的結(jié)尾可被賦值一個(gè)變量OOO_List[1].End。
圖4為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的有序TCP分段的結(jié)構(gòu)示意圖。參照?qǐng)D4,其示出了一個(gè)有序分段404、新的有序分段、在先亂序分段406及新的亂序分段408,所有的這些被置于一個(gè)TCP序列空間內(nèi)。新接收的有序分段404與有序分段402相鄰,根據(jù)本發(fā)明的一個(gè)方面,因?yàn)樵撔碌挠行騎CP分段關(guān)于該有序分段402是有序的,相關(guān)于第一漏洞和/或第二漏洞的變量不必被改變。然而TCP窗口的左邊緣可被更新。另外,其也可造成TCP窗口的右邊緣的更新。
圖5為根據(jù)本發(fā)明的實(shí)施例的插入第一漏洞的一部分且用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的亂序TCP分段的結(jié)構(gòu)示意圖。參照?qǐng)D5,其示出了有序分段502、新的亂序分段506及亂序分段508及在先亂序分段510,所有的這些被置于一個(gè)TCP序列空間內(nèi)。
新接收的有序分段506與亂序分段508相鄰且堵上了第一漏洞的一部分。相應(yīng)地,在本發(fā)明的一個(gè)方面中,由于該新接收的有序分段506堵上了第一漏洞的一部分,變量OOO_List[1].Begin的開始可被調(diào)整以反映相鄰于亂序分段508的新接收的有序分段506的位置。然而,由于新接收的有序分段506與亂序段508相鄰,變量OOO_List[1].End不必被改變。當(dāng)新的亂序幀被接收時(shí),該第一漏洞收縮可被要求進(jìn)行漏洞管理的信息的數(shù)量中沒(méi)有改變的尺寸。
圖6為根據(jù)本發(fā)明的實(shí)施例的插入第一漏洞的剩余部分且用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的亂序TCP分段的結(jié)構(gòu)示意圖。參照?qǐng)D6,其示出了合并的TCP分段602、新的亂序分段606、合并的TCP分段610及亂序分段612,所有的這些被置于一個(gè)TCP序列空間內(nèi)。新接收的亂序段606在合并的TCP片段602與合并的TCP片段610之間。在這個(gè)方面,新的亂序分段606堵上了第一漏洞的剩余部分。
一些如TCP上的RDMA的ULP不被TCP內(nèi)的漏洞開啟,及完成ULP處理仍然是可能的。對(duì)于一些ULP,當(dāng)在TCP分段內(nèi)有一個(gè)漏洞時(shí),這可激活一些不可能的ULP處理。這個(gè)處理可于芯片內(nèi)或主機(jī)上被執(zhí)行。在另一種情況下,TCP有效載荷的布置可被執(zhí)行。
接著第一漏洞的堵上,在新的第一漏洞處第二漏洞被指示,與第二漏洞相關(guān)的參數(shù)被指示與該新的或當(dāng)前的第一漏洞相關(guān)。例如,先前與第二漏洞相關(guān)的變量OOO_List[1].Begin被調(diào)整或被指示為變量OOO_List
.Begin。先前與第二漏洞相關(guān)的變量OOO_List[1].End被調(diào)整或被指示為變量OOO_List
.End。最后,TCP窗口614的開始從在先第一漏洞的開始移動(dòng)至新的或當(dāng)前第一漏洞的開始。在這個(gè)方面,變量TCP Seq=RCV_NXT的移動(dòng)方式為,變量TCP Seq=RCV_NXT開始于新的或當(dāng)前第一漏洞的開始,并延伸至TCP序列空間的右邊。如果附加的緩沖區(qū)對(duì)于接收器來(lái)說(shuō)是有用的,并已經(jīng)通過(guò)TCP協(xié)議被通告至遠(yuǎn)端對(duì)等處,則變量TCP Seq=RCV_NXT+REV_WIND可通過(guò)等于TCP窗口614的尺寸的數(shù)值而被延伸至右邊。在本發(fā)明的一個(gè)方面中,由于新的亂序幀完全地堵上了第一漏洞,漏洞管理的要求較少的信息被存儲(chǔ)。相應(yīng)地,一個(gè)漏洞描述符可被移除,且窗口左邊緣移動(dòng)至右邊。
一般,被接收及被確定為亂序的新的TCP分段或幀可被用于縮減與任何存在的漏洞相鄰的它們所占用的TCP序列數(shù)量空間內(nèi)的任何漏洞。如果新的幀堵上了兩個(gè)相鄰漏洞間的空間,那么該漏洞被合并進(jìn)一個(gè)漏洞。相應(yīng)地,通過(guò)附加參考圖5,圖6示出了當(dāng)一個(gè)漏洞由一個(gè)亂序TCP分段完全堵上時(shí)的TCP分段的合并。另外,圖6舉例示出了當(dāng)一個(gè)漏洞被完全地堵上時(shí),TCP窗口614的左邊緣的移動(dòng)及可選的右邊緣的移動(dòng)。在這個(gè)方面,通過(guò)參考圖5及圖6,TCP窗口614的最左側(cè)邊緣從有序TCP分段502(圖5)的最右邊緣移動(dòng)至在先亂序TCP分段610(圖6)的最右側(cè)邊緣,該在先亂序分段現(xiàn)在是最后有序分段。新的有序TCP分段502的最右邊緣與合并的TCP分段602是同步的。
圖7A為根據(jù)本發(fā)明的實(shí)施例的完全插入一個(gè)漏洞且用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)新接收的亂序TCP分段的結(jié)構(gòu)示意圖。參照?qǐng)D7A,其示出了第一漏洞、第二漏洞、有序TCP分段702、在先亂序TCP分段704、新的亂序TCP分段706及在先亂序TCP分段708。除了圖7A,圖3也被用于作為圖7A的示例的參考。
相應(yīng)地,圖7A的第一漏洞配置于有序TCP分段702與在先亂序TCP分段704之間。第二漏洞配置于在先亂序TCP分段704與在先亂序TCP分段708之間。該新的亂序TCP分段與在先亂序TCP分段704與在先亂序TCP分段708均相鄰。在這一點(diǎn)上,亂序TCP分段706完全堵上了第二漏洞。在本發(fā)明的一個(gè)方面中,由于第二漏洞被完全堵上了,與第二和/或第一漏洞相關(guān)的參數(shù)可被更新以反映第二漏洞的缺席。例如,由于第二漏洞不再存在,先前與第二漏洞相關(guān)的變量OOO_List[1].Begin不再被要求。由于漏洞的右邊緣由變量OOO_List[1].End表示,先前與該結(jié)尾第一漏洞相關(guān)的變量OOO_List
.End保留一個(gè)作廢的值。因此,由變量OOO_List[1].End表示的數(shù)值現(xiàn)在被復(fù)制到變量OOO_List
.End。最后,由于不再有第二漏洞,變量OOO_List[1].End被移除。相應(yīng)地,三個(gè)相鄰的TCP分段704、706及708具有相應(yīng)的變量OOO_List
.Begin及OOO_List
.End,其中變量OOO_List
.Begin表示在先亂序TCP分段704的最左側(cè)部分,變量OOO_List
.End表示亂序TCP分段708的最右側(cè)部分。從另一方面,三個(gè)相鄰的TCP分段704、706及708可被認(rèn)為是一個(gè)具有相應(yīng)的變量OOO_List
.Begin及OOO_List
.End的單獨(dú)的亂序TCP分段710。雖然新的分段能部分地或完全地交疊一個(gè)或多個(gè)在先接收的分段,為了簡(jiǎn)化這里舉例說(shuō)明。然而,這種方案被包含于下面的偽碼中。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,直通式無(wú)線網(wǎng)絡(luò)處理器可如所希望地管理TCP接收窗口內(nèi)的許多漏洞。直通式無(wú)線網(wǎng)絡(luò)處理器支持的漏洞的最佳數(shù)量依賴于如與一個(gè)特定的連接相關(guān)的典型的下降出錯(cuò)位組(drop syndrome)。例如,該連接可為WAN連接,其中該下降主要由于大窗口內(nèi)路由擁擠而潛在地產(chǎn)生很多漏洞。該連接還可為L(zhǎng)AN連接,該LAN連接具有例如單獨(dú)下降應(yīng)有的切換,及在這種情況下,逐條鏈路控制或擁擠避免會(huì)花掉一些時(shí)間來(lái)開始機(jī)能。
由于如漏洞數(shù)量及漏洞中分段或幀的數(shù)量這樣的下降的類型可以變化,可使用可編程的漏洞數(shù)量。每一個(gè)漏洞要求可被用于保持其開始及結(jié)尾點(diǎn)的狀態(tài)變量。在直通式無(wú)線網(wǎng)絡(luò)處理器支持TCP之上的上層協(xié)議(ULP)的情況下,每一個(gè)洞要求更多的狀態(tài)變量。一旦一個(gè)漏洞被堵上,上層協(xié)議的特別動(dòng)作會(huì)被要求,且接收器獲得更多關(guān)于由TCP控制板中上層協(xié)議期望的行為的信息。例如,該上層協(xié)議被通知消息的完成。然而,在這種情況中,數(shù)據(jù)及控制板間的基本的間隔會(huì)允許直通式無(wú)線網(wǎng)絡(luò)處理器完成實(shí)質(zhì)上沒(méi)有數(shù)據(jù)的緩沖或沒(méi)有亂序TCP分段的緩沖的布置。
在本發(fā)明的實(shí)施例中,數(shù)據(jù)的布置通過(guò)將TCP序列空間映射至緩沖區(qū)空間而被執(zhí)行。在這個(gè)方面,該緩沖區(qū)空間可被看作為一個(gè)線性空間。相應(yīng)地,該緩沖區(qū)的第一個(gè)字節(jié)可相應(yīng)于TCP序列空間內(nèi)的特定的TCP序列值。因此,當(dāng)與第一字節(jié)的序列值比較時(shí),TCP分段內(nèi)的其它字節(jié)被放置于緩沖區(qū)的一個(gè)偏移上,相應(yīng)于其TCP序列空間內(nèi)的△(delta)或偏移。換句話說(shuō),TCP分段或TCP幀的第一字節(jié)的開始地址或位置可被作為一個(gè)參考點(diǎn)而操作,且任何其它字節(jié)可作為從TCP序列空間內(nèi)的第一字節(jié)的偏移而被定位。在本發(fā)明的另一方面,存在有高層協(xié)議特別傳輸,其被用于將TCP序列數(shù)量的一定范圍映射至緩沖空間內(nèi)的特別緩沖區(qū)域。然而,這樣不會(huì)改變本發(fā)明的各個(gè)方面所揭示的基本映射。
圖7B為根據(jù)本發(fā)明的實(shí)施例的示例性的更新變量的結(jié)構(gòu)示意圖。參照?qǐng)D7B,其示出了有序分段752、新的亂序分段754、亂序分段756及在先亂序分段758。同樣示于圖7B,緩沖區(qū)空間762為有序分段752a及新的亂序分段754a。該新的亂序分段754a跨越第一緩沖區(qū)(i)及連續(xù)的緩沖區(qū)(i+1)。緩沖區(qū)空間762具有緩沖區(qū)長(zhǎng)度L并被分隔入緩沖區(qū)(i)、緩沖區(qū)(i+1)、…、緩沖區(qū)(n)。緩沖區(qū)空間762具有一個(gè)基本地址(Phy_addr),例如,其位于偏移量為0處。該基本地址可為任何物理地址,且為了方便,可被表示為偏移量0。在其當(dāng)前狀態(tài)下,有序TCP分段被配置于在基本地址開始,偏移量0處的緩沖區(qū)空間762。變量Nxt_addr指示下一個(gè)地址,在此數(shù)據(jù)被配置于該緩沖區(qū)空間762內(nèi),且在這個(gè)例子中,該變量為超出有序分段752a的結(jié)尾一個(gè)字節(jié)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,接收的亂序TCP分段于緩沖區(qū)空間762內(nèi)跨越多個(gè)緩沖區(qū)。例如,接收的亂序TCP分段可跨越緩沖區(qū)(i)及緩沖區(qū)(i+1)。該緩沖區(qū)長(zhǎng)度至少等于TCP窗口尺寸。
參照?qǐng)D7B,為了反映變化,新接收的亂序分段754變成亂序分段列表內(nèi)的第一個(gè)成員,且其相關(guān)的變量被相應(yīng)地更新。以一個(gè)有些相似的方法,與亂序分段756相關(guān)的變量也被更新,以反映出亂序分段756為亂序分段列表內(nèi)的第二個(gè)成員。在先地,亂序分段756為亂序分段列表內(nèi)的第一TCP分段。最后,亂序TCP分段758成為亂序分段列表內(nèi)的第三個(gè)成員,且其相關(guān)變量被相應(yīng)地更新。在先地,亂序TCP分段758為亂序段列表內(nèi)的第二TCP分段。下表舉例說(shuō)明了新接收的亂序TCP分段754、亂序TCP分段756及亂序TCP分段758的先前的及更新的變量。

圖8為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間及配置前的示例性變量及緩沖區(qū)的狀態(tài)內(nèi)新接收的有序TCP分段的結(jié)構(gòu)示意圖。當(dāng)數(shù)據(jù)被按順序接收時(shí),示例性的被用控制TCP狀態(tài)及緩沖區(qū)空間的變量被示于圖8中。這些變量被用于下面提出的偽碼中。參照?qǐng)D8,其示出了7有序TCP分段802、新的有序TCP分段804、亂序分段806、亂序分段808及TCP窗口810,所有這些均位于TCP序列空間內(nèi)。新接收的有序TCP分段80處于與有序分段802相鄰,堵上了第一漏洞的最左邊緣,且與TCP窗口810的左邊緣在一行上。相應(yīng)地,在本發(fā)明的一個(gè)方面中,亂序TCP分段806的最左邊緣可被表示為變量OOO_List
.Begin及亂序TCP分段806的最右邊緣可被表示為變量OOO_List
.End。以一個(gè)有些相似的方法,在先亂序TCP分段808的最左邊緣可被表示為變量OOO_List[1].Begin及亂序TCP分段808的最右邊緣可被表示為變量OOO_List[1].End。
圖8也示出了相應(yīng)的緩沖區(qū)空間812及有序TCP分段802a。該緩沖區(qū)空間812的緩沖區(qū)長(zhǎng)度為L(zhǎng)及該緩沖區(qū)空間可被分段成緩沖區(qū)(i)、緩沖區(qū)(i+1)、…、緩沖區(qū)(n)。有序TCP分段802a相應(yīng)于TCP序列空間內(nèi)的有序TCP分段802。緩沖區(qū)空間812具有一個(gè)基本地址(Phy_addr),例如,其位于偏移量為0處。該基本地址可為任何物理地址,且為了方便,可被表示為偏移量0。在其當(dāng)前狀態(tài)下,有序TCP分段被配置于在基本地址開始,偏移量0處的緩沖區(qū)空間812。變量Nxt_addr指示下一個(gè)地址,在此數(shù)據(jù)被配置于該緩沖區(qū)空間812內(nèi),且在這個(gè)例子中,該變量為超出有序分段802a的結(jié)尾的一個(gè)字節(jié)。根據(jù)本發(fā)明的一個(gè)實(shí)施例,接收的亂序TCP分段于緩沖區(qū)空間812內(nèi)跨越出多個(gè)緩沖區(qū)。例如,接收的亂序TCP分段可跨越出緩沖區(qū)(i)及緩沖區(qū)(i+1)。該緩沖區(qū)長(zhǎng)度至少等于TCP窗口尺寸。
圖9為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間內(nèi)及描述隨后配置的示例性變量及緩沖區(qū)的各種狀態(tài)的新接收的有序TCP分段的結(jié)構(gòu)示意圖。當(dāng)數(shù)據(jù)被按順序接收時(shí),圖8中用于控制TCP狀態(tài)及緩沖區(qū)空間的示范性的變量也被描述于圖9中。
參照?qǐng)D9,其示出了有序TCP分段902、新的有序TCP分段904及TCP窗口910,所有的這些均位于TCP序列空間內(nèi)。該新接收的有序TCP分段904與有序TCP分段902相鄰放置,堵上了第一漏洞的最左邊緣,且與TCP窗口910的左邊緣在一行上。
在本發(fā)明的一個(gè)方面中,由于新接收的有序TCP分段904是有序的,該新接收的有序TCP分段904被與有序TCP分段902相鄰放置。因此,TCP窗口910被調(diào)整以使新的有序TCP分段904的最右邊緣成于TCP窗口910的最左邊緣。在這個(gè)方面,該窗口從有序TCP分段902的最右邊緣滑動(dòng)至有序TCP分段904的最右邊緣。
同樣如圖9,其示出了緩沖區(qū)長(zhǎng)度為L(zhǎng)的相應(yīng)的緩沖區(qū)空間912、有序TCP分段902a及新接收的有序TCP分段904a。該有序TCP分段902a相應(yīng)于有序TCP分段902,該TCP分段904a相應(yīng)于新接收的有序TCP分段904。在這個(gè)方面,有序TCP分段902a可被認(rèn)為在先配置的有序TCP分段。緩沖區(qū)空間912具有一個(gè)基本地址(Phy_addr),其位于偏移量為0處。在其當(dāng)前狀態(tài)下,新接收的有序TCP分段904a可與在先配置的開始于圖8所示的Nxt_addr位置處的有序TCP分段902a的相鄰配置。由于新接收的有序TCP分段904a相鄰有序TCP分段902a放置,那么,在這種情況下,在數(shù)據(jù)被配置之后,下一個(gè)地址(Nxt_addr)及該緩沖區(qū)偏移被定位于新接收的有序TCP分段904a的最右邊緣上。下一個(gè)被接收的有序分段將被配置于Nxt_addr,其在這種情況下,其指示緩沖區(qū)空間912內(nèi)的有序TCP分段的結(jié)尾。在本發(fā)明的一個(gè)方面中,新的有序TCP分段904a跨越包括緩沖區(qū)空間912內(nèi)的緩沖區(qū)(i)及緩沖區(qū)(i+1)的多個(gè)緩沖區(qū)。在其它的例子中,新的有序TCP分段904a可以跨越多個(gè)TCP分段。既然緩沖區(qū)(i)是完全充滿的,緩沖區(qū)(i)對(duì)于ULP、本申請(qǐng)或任何提供該緩沖區(qū)開始的人來(lái)說(shuō)均是完整的。
圖10為根據(jù)本發(fā)明的實(shí)施例的用于與亂序TCP分段或幀的數(shù)據(jù)布置有關(guān)的TCP序列空間及其緩沖內(nèi)的新接收的有序TCP分段的處理的結(jié)構(gòu)示意圖。參照?qǐng)D10,其示出了有序TCP分段1002及新的亂序TCP分段1004。緩沖區(qū)空間1012內(nèi)的有序TCP分段1002a映射至TCP分段空間內(nèi)的有序TCP分段1002。以一個(gè)有些相似的方法,緩沖區(qū)空間1012內(nèi)的新接收的亂序TCP分段1004a映射至TCP分段空間內(nèi)的亂序TCP分段1004。當(dāng)數(shù)據(jù)被按順序接收時(shí),被用于控制TCP狀態(tài)及緩沖區(qū)空間的圖8所示的示例性變量也同樣被示于圖10中。參照?qǐng)D10,其示出了有序TCP分段1002、新的亂序TCP分段1004,所有這些被置于一個(gè)TCP序列空間內(nèi)。新接收的亂序TCP分段1004位于第一漏洞的一部分內(nèi)。
圖10還包括緩沖區(qū)長(zhǎng)度為L(zhǎng)的相應(yīng)的緩沖區(qū)空間1012、有序TCP分段1002a及新接收的亂序TCP分段1004a。該有序TCP分段1002a相應(yīng)于有序TCP分段1002,及該新接收的有序TCP分段1004a相應(yīng)于新接收的有序TCP分段1004。緩沖區(qū)空間1012具有一個(gè)基本地址(Phy_addr),其位于偏移量為0處。在其當(dāng)前狀態(tài)下,新接收的有序TCP分段1004a可被配置于被指示為緩沖區(qū)偏移位置的開始處。在這個(gè)方面,由于新接收的有序TCP分段不是有序TCP分段,其不會(huì)被配置于Nxt_addr。在一個(gè)新的有序TCP分段被接收的情況下,其與開始于Nxt_addr的有序TCP分段1002a的相鄰配置。作為代代替,其可被配置于等于TCP空間內(nèi)的數(shù)據(jù)的偏移內(nèi)。這個(gè)TCP序列空間△可被用于計(jì)算緩沖區(qū)內(nèi)的偏移。
新接收的有序TCP分段904a可與在先配置的開始于圖8所示的Nxt_addr位置處的有序TCP分段902a的相鄰配置。由于新接收的有序TCP分段904a相鄰有序TCP分段902a放置,那么,在這種情況下,在數(shù)據(jù)被配置之后,下一個(gè)地址(Nxt_addr)及該緩沖區(qū)偏移被定位于新接收的有序TCP分段904a的最右邊緣上。下一個(gè)被接收的有序分段將被配置于Nxt_addr,其在這種情況下,其指示緩沖區(qū)空間912內(nèi)的有序TCP分段的結(jié)尾。在本發(fā)明的一個(gè)方面中,新的有序TCP分段904a跨越包括緩沖區(qū)空間912內(nèi)的緩沖區(qū)(i)及緩沖區(qū)(i+1)的多個(gè)緩沖區(qū)。在其它的例子中,新的有序TCP分段904a可以跨越多個(gè)TCP分段。既然緩沖區(qū)(i)是完全充滿的,緩沖區(qū)(i)對(duì)于ULP、本申請(qǐng)或任何提供該緩沖區(qū)開始的人來(lái)說(shuō)均是完整的。
根據(jù)本發(fā)明的一個(gè)實(shí)施例,可被假定主機(jī)提供了充足的緩沖區(qū),以使緩沖區(qū)的總長(zhǎng)度總是大于或等于TCP窗口尺寸。然而,在由TCP、ULP或本申請(qǐng)沒(méi)有的緩沖器不足夠大的緩沖區(qū)的例子中,那么接收器可決定不接收沒(méi)有緩沖區(qū)的亂序TCP分段。在這個(gè)方面,該接收器會(huì)丟棄那么亂序分段。接收器的另一個(gè)選擇是使用通過(guò)其驅(qū)動(dòng)器、TCP或任何其它機(jī)構(gòu)提供的其它緩沖區(qū),并作為一個(gè)數(shù)據(jù)暫時(shí)的存儲(chǔ),并繼而將其復(fù)制至配置的緩沖區(qū)。相應(yīng)地,該處理可發(fā)生于由TCP、ULP、驅(qū)動(dòng)器、任何其它機(jī)構(gòu)所配置的緩沖區(qū)內(nèi)或任何其結(jié)合內(nèi)。例如,布置可以開始于由該驅(qū)動(dòng)器提供的暫時(shí)的緩沖區(qū)內(nèi),且在ULP服從的緩沖區(qū)內(nèi)繼續(xù)。接下來(lái),該放置于由驅(qū)動(dòng)器提供的緩沖區(qū)內(nèi)的文本可被硬件或任何軟件實(shí)體復(fù)制,該硬件或任何軟件實(shí)體如驅(qū)動(dòng)器、通信棧和/或指示的緩沖區(qū)的中間設(shè)備。
根據(jù)本發(fā)明的另一個(gè)實(shí)施例,下面的偽碼舉例說(shuō)明了一個(gè)用于將數(shù)據(jù)從TCP分段移動(dòng)至緩沖區(qū)列表的示例性的處理。為了簡(jiǎn)化,覆蓋處理PUSH位或“當(dāng)前緩沖區(qū)列表內(nèi)無(wú)空間”的偽碼被省略。然而,偽碼的省略不會(huì)限制本發(fā)明。同樣,該偽碼假定一個(gè)沒(méi)有接收的TCP窗口更新的靜態(tài)的TCP情形。然而,增加代碼而不會(huì)偏離本發(fā)明的各種實(shí)施例。另外,TCP序列數(shù)量空間的回繞不包括于偽碼內(nèi)。該偽碼同樣假定當(dāng)當(dāng)前幀在被處理時(shí),沒(méi)有其它幀被處理而。在這個(gè)方面,偽碼假定中斷是無(wú)效的。該偽碼如下所示/*整體初始化*/Number_of_holes=0;
Number_of_holes=0;
OOO_Data{Begin Int32;
ULP_Event_present Boolean;/*在OOO分段內(nèi)的ULP事件的出現(xiàn)的變量保持標(biāo)識(shí)符*/ULP_Event_TCP_Sequence_number Int32;/*ULP事件的TCP序列數(shù)量*/}OOO_list[1];/*這列結(jié)構(gòu)保持接收O-O-O的分段的TCP序列數(shù)量的標(biāo)識(shí)符。創(chuàng)造最大數(shù)的量被支持漏洞的列表及將所有變量初始化為0*//*RCV_NXT為期望被接收的下一個(gè)字節(jié)的TCP序列數(shù)量*/1./*TCP序列數(shù)量(TCP有效載荷的第一個(gè)字節(jié)的TCP序列#為First_TCP_Seq,最后一個(gè)字節(jié)的TCP序列#為End_TCP_Seq)被檢測(cè)出在TCV窗口的范圍內(nèi)(在RCV_NXT與RCV_NXT+RCV_Window之間)*/1A./*如果窗口(失效的或復(fù)制的)外邊的幀丟棄該幀*/if((First_TCP_Seq>(RCV_NXT+RCV_window))||(Last_TCP_Seq<RCV_NXT))then drop_frame();
1B./*如果一些字節(jié)之前已被接收,忽略復(fù)制的字節(jié)*/if First_TCP_Seq<RCV_NXT then First_TCP_Seq=RCV_NXT;
1C./*在一些字節(jié)在窗口之外的情況下,該接收器可丟棄整個(gè)分段。這里該接收器只丟棄禁用的字節(jié)*/if Last_TCP_Seq>(RCV_NXT+RCV_window)then Last_TCP_Seq=(RCV_NXT+RCV_window);
1D./*在最后的數(shù)據(jù)為O-O-O的情況下;進(jìn)行計(jì)算。其可為一個(gè)新的漏洞或堵上一個(gè)漏洞或與一個(gè)漏洞相鄰*/if First_TCP_Seq>RCV_NxT then Number_of_holes=Hole_accounting();
1E./*在數(shù)據(jù)為有序的情況下;其為堵上一個(gè)漏洞*/if(First_TCP_Seq==RCV_NXT)RCV_NXT=Last_TCP_Seq+1;/*RCV_Window的更新在這個(gè)編碼范圍之外*/{if((Number_of_Holes>0)&&(Last_TCP_Seq+1==OOO_list[1].Begin))then{/*移除元素I,接下來(lái)的元素的索引減1*/Remove_OOO_list_element(1);Number_of_Holes-;
}}2./*在緩沖區(qū)列表中找到最邊的入口。放置對(duì)于有序、亂序或部分漏洞問(wèn)題是不在意的*/Segment_Length=Last_TCP_Seq-First_TCP_Seq;/*TCP_Delta支持TCP序列數(shù)量與幀的位置第一字節(jié)的差。其還為緩沖區(qū)空間至應(yīng)該被用于存儲(chǔ)的第一字節(jié)的距離*/TCP_Delta=(First_TCP_Seq-RCV_NXT)/*Delta來(lái)自TCP空間內(nèi)的錨點(diǎn)*/i=0; /*被用于動(dòng)態(tài)地指示相應(yīng)于RCV NXT的緩沖區(qū)*//*Host_Buffer_List.Buffer
已經(jīng)被使用。需要示出有多少是左邊的*/if(TCP_Delta<(Host_Buffer_List.Buffer
.length-(Host_Buffer_List.Buffer
.NXT_Addr-Host_Buffer_List.Buffer
.Phy_Addr))){Buffer_Offset=TCP_Delta+(Host_Buffer_List.Buffer
.NXT_Addr-Host_Buffer_List.Buffer
.Phy_Addr);}else{Buffer_Offset=TCP_Delta-(Host_Buffer_List.Buffer
.length-(Host_Buffer_List.Buffer
.NXT_Addr-Host_Buffer_List.Buffer
.Phy_Addr));i=1;Do while{Buffer_Offset-{Host_Buffer_List.Buffer[i].length>0}{Buffer_Offset=Host_Buffer_List_Buffer[i].length;i++;}i--;}/*第一次緩沖后,該變量i指向第i個(gè)緩沖區(qū),其為數(shù)據(jù)配置的開始處。Buffer_Offset支持該偏移進(jìn)入這個(gè)緩沖區(qū)*/3./*DMA進(jìn)入第一個(gè)緩沖區(qū),DMA_Data的語(yǔ)法(從地址至地址,長(zhǎng)度)第一個(gè)緩沖區(qū)是特別的,因?yàn)榉胖每梢蚤_始于緩沖區(qū)內(nèi)側(cè)的任何地方*/DMA_Data(@First_TCP_Seq,Host_Buffer_List.Buffer[i].Phy_Address+Buffer_Offsaet,Min((Host_Buffer_List.Buffer[i].length-Buffer_Offset).Segment_Length));
5./*完成ULP第一緩沖區(qū)如果數(shù)據(jù)是有序的正好在緩沖區(qū)內(nèi)的第一個(gè)可得字節(jié),及緩沖區(qū)目前是充分的,及其內(nèi)無(wú)漏洞及所有接續(xù)它的緩沖區(qū)(如相關(guān)于低TCP序列數(shù)量的數(shù)據(jù))對(duì)于ULP已經(jīng)是完成的。注意第一緩沖區(qū)包括TCP窗口如有序TCP數(shù)據(jù)的左邊緣*/if(i==0&&(Buffer_Offset==Host_Buffer_List.Buffer
.NXT_Addr)&&Segment_Length>=(Host_Buffer_List.Buffe
.length-(Host_Buffer_List.Buffer
.NXT_Addr-Host_Buffer_List.Buffer
.Phy_Addr)) &&(OOO_list
.Begin>0) &&(OOO_list
.Begin>(First_TCP_Seq+Min((Host_Buffer_List.Buffer
.length-Buffer_Offset).Segment_Length)){Indicate_buffer_to_ULP(Host Buffer_Ust.Buffer
);remove_buffer_from_list(Host_Buffer_List.Buffer
);/*following buffer isnow the first*/} /*接下來(lái)的緩沖區(qū)為當(dāng)前的第一個(gè)*/6./*保持TCP變量。為簡(jiǎn)單僅處理RCV_NXT。如果數(shù)據(jù)是有序的且一個(gè)緩沖區(qū)可獲得,其遞增*/if(TCP_Delta==0)RCV_NXT+=Segment_Length;
7./*處理下一個(gè)緩沖區(qū)(為簡(jiǎn)化跳過(guò)對(duì)緩沖區(qū)可用性的檢測(cè))。引入臨時(shí)變量Bytes_to_DMA及Start_TCP_Seq。注意i指向接下來(lái)的緩沖區(qū)的第一緩沖區(qū)數(shù)據(jù)已被存儲(chǔ)。在有序接收的情況中,如果第一緩沖區(qū)(i=0)已被完成且有更多的字節(jié)要被存儲(chǔ),i=0但指向原來(lái)的第二個(gè)緩沖區(qū)*/Bytes_to_DMA=Segment_Length-Min((Host_Buffer_List.Buffer[i].length-Buffer_Offset),Segment_Length);/*已被DMA移至第一緩沖區(qū)的字節(jié)*/Start_TCP_Seq=First_TCP_Seq+Min((Host_Buffer_List.Buffer[i].length-Buffer_Offset),Segment_Length);
8./*如果需要,DMA進(jìn)入下一個(gè)緩沖區(qū)*/Do while{Byles_to_DMA>0}{DMA data(@Start_TCP_Seq.Host_Buffer_List.Buffer[i].Phy_Addtess,Min((Host_Buffer_List.Buffer[i].length,Bytes_to_DMA)Bytes_to_DMA-=Min((Host_Buffer_List.Buffer[i].length,Bytee_to_DMA;
Start_TCP_Seq+=Min((Host_Buffer_List.Buffer[i].length.Bytes_to_DMAi++;
if i>max_buffers then no_more_buffers();/*退出無(wú)可得的緩沖區(qū)*/}9./*計(jì)算窗口內(nèi)接收的亂序TCP數(shù)據(jù)的規(guī)則。建構(gòu)O-O-O數(shù)據(jù)管理結(jié)構(gòu),返回漏洞的數(shù)量*/int32Hole_accounting(){/*檢測(cè)無(wú)復(fù)制的O-O-O數(shù)據(jù)。數(shù)據(jù)可于緩沖區(qū)內(nèi)重寫(當(dāng)內(nèi)容通過(guò)要被識(shí)別的TCP確認(rèn)時(shí))或保留DMA循環(huán)可以寫入緩沖區(qū)正好該接收數(shù)據(jù)沒(méi)有被先前接收*/I=0;Do while(Number_of_Holes>1){/*為了偽碼的簡(jiǎn)化,一個(gè)TCP分段交疊超過(guò)一個(gè)漏洞的情況此處沒(méi)被討論。然而,其為下述編碼的簡(jiǎn)單推論*//*如果新漏洞在元素I的左側(cè),分配空間對(duì)其進(jìn)行管理*/If((Last_TCP_Seq+1)<OOO_list[I].Begin)then{/*在原始元素I之前插入元素I,將原始I+1及子序列元素1上向推*/Insert_OOO_list_element(I);
OOO_list[I].Begin=First_TCP_Seq;
OOO_list[I].End=Last_TCP_Seq;
return(Number_of_Holes++);
}If((Lest_TCP_Seq+1)==OOO_list[I].Beglh))then OOO_list[I].Begin=First_TCP_Seq;Else If((First_TCP_Seq<(OOO_list[i].Begin)&&(Last_TCP_Seq>(OOO_list[I].Begin)&&(Last_TCP_Seq<=(OOO_list[I].End))thenLast_TCP_seq=(OOO_list[I].BeginElse If((Firs_TCP_Seq>=(OOO_list[I].Begin)&&(Last_TCP_Seq<=(OOO_list[I].End))then drop_frame();Else If((Firs_TCP_Seq>=(OOO_list[I].Begin)&&(First_TCP_Seq<(OOO_list[I].End)&&(Last_TCP_Seq>(OOO_list[I].End)thenFirst_TCP_seq=(OOO_list[I].End/*這個(gè)數(shù)據(jù)與存在的漏洞的右邊相鄰?移動(dòng)漏洞的邊緣?,F(xiàn)在漏洞被堵上嗎?*/If((First_TCP_Seq==OOO_list[I].End+1) then OOO_list[I].End=Last_TCP_Seq;
If((OOO_list[I].End+1)==OOO_list[I+1].Begin)then{OOO_list[I].End=OOO_list[I+1].End;
/*移除元素I+1,(將其變量重新設(shè)置為0)接下來(lái)的元素的索引減1*/Remove_OOO_list_element(I+1);
return(Number_of_Holes--);
}/*漏洞現(xiàn)在從左邊被堵上嗎?*/If(OOO_list[I].Begin==OOO_list[I-1].End+1)then{OOO_list[I-1].End=OOO_list[I].End;
/*移除元素I,接下來(lái)的元素的索引減1*/Remove_OOO_list_element(I);
return(Number_of_Holes--);
}/*如果新的漏洞在元素I的左側(cè),分配空間以管理*/If((First_TCP_Seq+1)>OOO_list[I].End)&&(Last_TCP_Seq<
OOO_list[I+1]))then{/*在原始元素I之后插入元素I+1,將原始I+1及子序列元素1上向推*/Insert_OOO_list_element(I+1);`
OOO_list[I+1].Begin=First_TCP_Seq;
OOO_list[I+1].End=Last_TCP_Seq;
return(Number_of_Holes++);
}I++;
}}本發(fā)明的另一個(gè)實(shí)施例提供了一種機(jī)器可讀存儲(chǔ)器,其中存儲(chǔ)有計(jì)算機(jī)程序,該計(jì)算機(jī)程序具有可于無(wú)線系統(tǒng)內(nèi)提供處理亂序TCP分段的數(shù)據(jù)的至少一個(gè)代碼段。該至少一個(gè)代碼段可通過(guò)機(jī)器執(zhí)行,因此造成該機(jī)器執(zhí)行如此處所描述的亂序(OOO)TCP分段的處理。
相應(yīng)地,本發(fā)明可于硬件、軟件或硬件與軟件的結(jié)合中而被實(shí)現(xiàn)。本發(fā)明可于至少一個(gè)計(jì)算機(jī)系統(tǒng)的集中形式中而被實(shí)現(xiàn),或以一個(gè)其不同的元件分散交叉于幾個(gè)相互連接的計(jì)算機(jī)系統(tǒng)中的分布式實(shí)現(xiàn)。任何類型的計(jì)算機(jī)系統(tǒng)或其它設(shè)備被用于執(zhí)行此處所述的方式均是適合的。一種典型的硬件與軟件的結(jié)合為包含有計(jì)算機(jī)程序通用計(jì)算機(jī)系統(tǒng),當(dāng)被登陸及被執(zhí)行時(shí),其控制該計(jì)算機(jī)系統(tǒng),以使其執(zhí)行此處所述的方法。
本發(fā)明還可被嵌入一個(gè)計(jì)算機(jī)產(chǎn)品中,其包括所有的可執(zhí)行此處所述方法的特征,當(dāng)?shù)顷懙揭粋€(gè)計(jì)算機(jī)系統(tǒng)中時(shí),這些方法可被執(zhí)行。本文所術(shù)的計(jì)算機(jī)系統(tǒng)意味著任何表達(dá),以任何語(yǔ)言、代碼或國(guó)家,一組指令可造成一個(gè)具有信息處理能力的系統(tǒng)或者直接地執(zhí)行一個(gè)特別功能,或者以下面的二者或二者之一執(zhí)行a)轉(zhuǎn)換成另一種語(yǔ)言、代碼或國(guó)家;b)以不同的物質(zhì)形式重新產(chǎn)生。
當(dāng)本發(fā)明通過(guò)參考某些實(shí)施例而被描述時(shí),其會(huì)被本領(lǐng)域的普通技術(shù)人員所理解的是可作出各種改變及等同的替代而不脫離本發(fā)明的范圍。另外,可作出很多修改以適合本發(fā)明的技術(shù)的特別情況或材質(zhì)而不脫離其范圍。因此,其意味著本發(fā)明不會(huì)被限制于所揭示的特別實(shí)施例,但是本發(fā)明可包括落入權(quán)利要求的范圍內(nèi)的所有實(shí)施例。
通過(guò)參考而交叉參考相關(guān)的申請(qǐng)/結(jié)合本申請(qǐng)參考、主張優(yōu)先權(quán)及要求系列號(hào)為____(代理機(jī)構(gòu)案件號(hào)為NO.15774US02)名稱為___美國(guó)專利申請(qǐng)的益處。
本申請(qǐng)參考系列號(hào)為___(代理機(jī)構(gòu)案件號(hào)為NO.15064US02)名稱為___的美國(guó)專利申請(qǐng);及系列號(hào)為___(代理機(jī)構(gòu)案件號(hào)為NO.1378US02)名稱為___的美國(guó)專利申請(qǐng)。
上面所述的申請(qǐng)通過(guò)參考其全文而被結(jié)合于此處。
權(quán)利要求
1.一種處理無(wú)線系統(tǒng)內(nèi)亂序TCP分段的方法,其特征在于,包括下列至少之一將無(wú)線網(wǎng)絡(luò)處理器接收的第一TCP分段放置于主機(jī)緩沖區(qū)內(nèi),映射所述第一TCP分段的TCP序列數(shù)量及相應(yīng)緩沖區(qū)地址,確定第二接收的TCP分段是否為有序TCP分段或亂序TCP分段中之一;及如果所述無(wú)線網(wǎng)絡(luò)處理器接收的所述第二TCP分段為亂序TCP分段,則將與至少所述第二TCP分段相關(guān)的控制信息存儲(chǔ)于所述無(wú)線網(wǎng)絡(luò)處理器上;及將所述亂序TCP分段放置于所述主機(jī)緩沖區(qū)的一部分內(nèi)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,進(jìn)一步包括記錄所述無(wú)線網(wǎng)絡(luò)處理器上被所述第一接收的TCP分段的結(jié)尾占用的至少一個(gè)緩沖區(qū)地址,所述緩沖區(qū)為TCP緩沖區(qū)、ULP緩沖區(qū)及應(yīng)用緩沖區(qū)之一。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,進(jìn)一步包括如果所述第二接收的TCP分段為有序TCP分段,則將所述有序TCP分段相鄰于所述第一接收的TCP分段放置于所述主機(jī)緩沖區(qū)內(nèi)。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,進(jìn)一步包括將所述有序TCP分段從與所述第一接收的TCP分段的所述結(jié)尾占用的所述被記錄的地址相鄰的地址開始放置于所述主機(jī)緩沖區(qū)內(nèi)。
5.一種處理無(wú)線系統(tǒng)內(nèi)亂序TCP分段的系統(tǒng),其特征在于,包括將無(wú)線網(wǎng)絡(luò)處理器接收的第一TCP分段放置于主機(jī)緩沖區(qū)內(nèi),在TCP序列數(shù)量與相應(yīng)緩沖區(qū)地址間具有一個(gè)映射,確定無(wú)線網(wǎng)絡(luò)處理器接收的第二TCP分段是否為有序TCP分段或亂序TCP分段中之一;及如果所述第二接收的TCP分段為亂序TCP分段,則所述至少一個(gè)處理器將與至少所述第二TCP分段相關(guān)的控制信息存儲(chǔ)于所述無(wú)線網(wǎng)絡(luò)處理器上;及所述至少一個(gè)處理器將所述亂序TCP分段放置于所述主機(jī)緩沖區(qū)的一部分內(nèi)。
6.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述至少一個(gè)處理器記錄所述無(wú)線網(wǎng)絡(luò)處理器上被所述第一接收的TCP分段的結(jié)尾占用的至少一個(gè)緩沖區(qū)地址,所述緩沖區(qū)為TCP緩沖區(qū)、ULP緩沖區(qū)及應(yīng)用緩沖區(qū)之一。
7.根據(jù)權(quán)利要求6所述的系統(tǒng),其特征在于,如果所述第二接收的TCP分段為有序TCP分段,則所述至少一個(gè)處理器將所述有序TCP分段相鄰于所述第一接收的TCP分段放置于所述主機(jī)緩沖區(qū)內(nèi)。
8.根據(jù)權(quán)利要求7所述的系統(tǒng),其特征在于,所述至少一個(gè)處理器將所述有序TCP分段從與所述第一接收的TCP分段的所述結(jié)尾占用的所述被記錄的地址相鄰的地址開始放置于所述主機(jī)緩沖區(qū)內(nèi)。
9.根據(jù)權(quán)利要求8所述的系統(tǒng),其特征在于,所述至少一個(gè)處理器執(zhí)行下列至少之一通過(guò)所述無(wú)線網(wǎng)絡(luò)處理器記錄下列數(shù)據(jù)指示至少之一所述有序TCP分段的結(jié)尾占用的結(jié)尾緩沖區(qū)地址;開始緩沖區(qū)地址加上所述有序TCP分段的數(shù)據(jù)部分的長(zhǎng)度;及跟隨所述有序TCP分段的結(jié)尾的一個(gè)字節(jié)的緩沖區(qū)地址;及在所述無(wú)線網(wǎng)絡(luò)處理器上存儲(chǔ)與至少一個(gè)所述指示數(shù)據(jù)相關(guān)的控制信息。
10.根據(jù)權(quán)利要求5所述的系統(tǒng),其特征在于,所述至少一個(gè)處理器執(zhí)行下列至少之一在所述無(wú)線網(wǎng)絡(luò)處理器上記錄至少一個(gè)數(shù)據(jù)指示所述放置的亂序TCP分段的開始所占用的地址,及所述放置的亂序TCP分段的結(jié)尾所占用的地址;及所述的加上所述放置的亂序TCP分段占用的長(zhǎng)度的開始緩沖區(qū)地址;及在所述無(wú)線網(wǎng)絡(luò)處理器上存儲(chǔ)與所述網(wǎng)絡(luò)處理器上的所述指示數(shù)據(jù)相關(guān)的控制信息。
全文摘要
一種處理無(wú)線系統(tǒng)內(nèi)亂序分段的方法及系統(tǒng)包括下列至少之一將無(wú)線網(wǎng)絡(luò)處理器接收的第一TCP分段放置于主機(jī)緩沖區(qū)內(nèi),在TCP序列數(shù)量與相應(yīng)緩沖區(qū)地址間具有一個(gè)映射。確定無(wú)線網(wǎng)絡(luò)處理器接收的第二TCP分段是否為有序TCP分段或亂序TCP分段中之一。如果所述第二接收的TCP分段為亂序TCP分段,則與至少所述第二TCP分段相關(guān)的控制信息被存儲(chǔ)于所述無(wú)線網(wǎng)絡(luò)處理器上。所述亂序TCP分段被放置于所述主機(jī)緩沖區(qū)的一部分內(nèi)。
文檔編號(hào)H04L12/56GK1863197SQ200510083698
公開日2006年11月15日 申請(qǐng)日期2005年6月30日 優(yōu)先權(quán)日2005年5月11日
發(fā)明者吉漢·卡若古, 尤里·伊萊澤, 詹姆士·D·貝內(nèi)特 申請(qǐng)人:美國(guó)博通公司
網(wǎng)友詢問(wèn)留言 已有0條留言
  • 還沒(méi)有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1