国产精品1024永久观看,大尺度欧美暖暖视频在线观看,亚洲宅男精品一区在线观看,欧美日韩一区二区三区视频,2021中文字幕在线观看

  • <option id="fbvk0"></option>
    1. <rt id="fbvk0"><tr id="fbvk0"></tr></rt>
      <center id="fbvk0"><optgroup id="fbvk0"></optgroup></center>
      <center id="fbvk0"></center>

      <li id="fbvk0"><abbr id="fbvk0"><dl id="fbvk0"></dl></abbr></li>

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

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

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


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

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