專(zhuān)利名稱(chēng):用于大量信道的硬件加速的制作方法
技術(shù)領(lǐng)域:
概括地說(shuō),本發(fā)明涉及網(wǎng)絡(luò)通信,具體地說(shuō),本發(fā)明涉及管理網(wǎng)絡(luò)中大量的信道, 在該網(wǎng)絡(luò)中,硬件資源用于某些分組。
背景技術(shù):
網(wǎng)絡(luò)可以在有多個(gè)設(shè)備的情況下運(yùn)行。這些設(shè)備可以是同類(lèi)型的,也可以是多種 不同類(lèi)型的,可能需要區(qū)別對(duì)待。通常情況下,多個(gè)設(shè)備就需要多個(gè)相應(yīng)的信道,每個(gè)設(shè)備 要對(duì)應(yīng)至少一個(gè)信道,或者更多的信道。管理這些信道會(huì)是一個(gè)難題。此外,將網(wǎng)絡(luò)設(shè)備與 有關(guān)的信道相匹配也可能是一個(gè)難題。網(wǎng)絡(luò)是實(shí)時(shí)運(yùn)行的。因此,當(dāng)訪(fǎng)問(wèn)一個(gè)信道時(shí),必須快速找到該信道。優(yōu)選情況下, 找到信道的時(shí)間是可以預(yù)測(cè)的。當(dāng)存在大量信道時(shí),訪(fǎng)問(wèn)特定信道上的信息可能會(huì)很慢。此 外,允許附加的信道也會(huì)變得比較困難。因此,針對(duì)信道信息提供快速和可預(yù)測(cè)的訪(fǎng)問(wèn)時(shí)間 是很有用的。此外,在某些情況下,硬件加速可以用于處理多個(gè)分組。然而,基于中斷驅(qū)動(dòng)來(lái)管 理硬件加速可以造成驅(qū)動(dòng)器將正等待必要硬件(例如密碼加速器)的大量分組丟棄。硬件 中斷是不可預(yù)測(cè)的,跟分組傳輸時(shí)間或分組延時(shí)相比,硬件處理時(shí)間往往比較長(zhǎng)。人們期望讓驅(qū)動(dòng)器等待硬件資源,并在等待資源期間拒絕到來(lái)的分組?;蛘?,驅(qū)動(dòng) 器可以對(duì)到來(lái)的分組使用有限的緩沖器,但這可能在等待硬件資源期間造成溢出,從而導(dǎo) 致拒絕到來(lái)的分組。因此,不需要驅(qū)動(dòng)器等待硬件中斷或互斥的硬件資源管理是很有用處 的。
發(fā)明內(nèi)容
本文描述了用于大量信道的硬件加速的方法、裝置和系統(tǒng)。在一個(gè)實(shí)施例中,本發(fā)明是一種維護(hù)信道的自由列表的方法,該方法包括接收信 道請(qǐng)求;提供來(lái)自該自由列表的第一信道標(biāo)識(shí)符,該自由列表具有起始指針和末端指針; 更新該起始指針,以指向該自由列表的下一個(gè)信道;接收信道超時(shí)提示;將超時(shí)信道添加 到該自由列表的末端;以及更新該末端指針,以指向該自由列表的末端。在另一實(shí)施例中,本發(fā)明是一種處理信道消息的密碼操作的方法,該方法包括接 收加密的消息;使用消息長(zhǎng)度和類(lèi)型、消息編碼和封裝類(lèi)型、一個(gè)或多個(gè)資源隊(duì)列等待時(shí) 間、資源的狀態(tài)和資源的容量,確定要應(yīng)用哪些密碼資源;將該消息放在選擇的密碼資源 中應(yīng)用該選擇的密碼資源;以及在信道上傳遞解密的消息。將在所述的各種實(shí)施例中舉例說(shuō)明本發(fā)明,本發(fā)明的精神和保護(hù)范圍僅由所附權(quán) 利要求書(shū)界定。
下面將通過(guò)各種具體實(shí)施例對(duì)本發(fā)明進(jìn)行描述,本發(fā)明的精神和保護(hù)范圍僅由所 附權(quán)利要求書(shū)限定。圖1示出了具有軸輻式拓?fù)浣Y(jié)構(gòu)的網(wǎng)絡(luò)的實(shí)施例;圖2示出了散列表的實(shí)施例;圖3示出了在散列表中查找信道項(xiàng)的過(guò)程的實(shí)施例;圖4示出了在陣列中查找信道的過(guò)程的實(shí)施例;圖5示出了信道項(xiàng)陣列的實(shí)施例;圖6示出了信道信息的數(shù)據(jù)結(jié)構(gòu)的實(shí)施例;圖7示出了由機(jī)器組成的網(wǎng)絡(luò)的實(shí)施例;圖8示出了機(jī)器或計(jì)算機(jī)的實(shí)施例;圖9示出了蜂窩網(wǎng)絡(luò)的實(shí)施例;圖10示出了維護(hù)信道信息陣列的過(guò)程的實(shí)施例;圖11示出了信道信息擴(kuò)展陣列的一個(gè)實(shí)施例;圖12示出了信道信息擴(kuò)展陣列的替代實(shí)施例;圖13示出了維護(hù)自由列表的過(guò)程的實(shí)施例;圖14示出了機(jī)器可讀介質(zhì)的實(shí)施例;圖15示出了自由列表的實(shí)施例;圖16示出了管理信道消息的密碼的過(guò)程的實(shí)施例;圖17示出了可以實(shí)現(xiàn)圖16的過(guò)程的一組部件的實(shí)施例;圖18示出了將作業(yè)分配給硬件模塊的過(guò)程的實(shí)施例;圖19示出了管理分組的過(guò)程的實(shí)施例;圖20示出了管理分組的系統(tǒng)堆棧的實(shí)施例;圖21示出了包括硬件加速的用于管理分組的系統(tǒng)的實(shí)施例;圖22示出了如何表示作業(yè)的實(shí)施例;圖23示出了信道列表的實(shí)施例;圖24示出了如何表示驅(qū)動(dòng)器的實(shí)施例;圖25示出了包括分配器和一組驅(qū)動(dòng)器的系統(tǒng)的實(shí)施例;圖26示出了作業(yè)列表的替代實(shí)施例;圖27示出了包括硬件加速的用于管理分組的系統(tǒng)的替代實(shí)施例。在各附圖中,相同的附圖標(biāo)記表示相同的元件。
具體實(shí)施例方式下面結(jié)合不同范圍的系統(tǒng)、裝置和方法,對(duì)本發(fā)明進(jìn)行描述和說(shuō)明。除了在發(fā)明內(nèi) 容部分中描述的本發(fā)明的多個(gè)方面外,通過(guò)參考附圖和閱讀以下的詳細(xì)描述,本發(fā)明的其 它方面也會(huì)變得顯而易見(jiàn)。本文描述了用于大量信道的硬件加速的方法、裝置和系統(tǒng)。在一個(gè)實(shí)施例中,本發(fā)明是一種方法。該方法包括接收網(wǎng)絡(luò)中通信信道的信道標(biāo) 識(shí)符。該方法還包括檢查在信道項(xiàng)陣列中與該信道標(biāo)識(shí)符相對(duì)應(yīng)的項(xiàng)。信道項(xiàng)陣列用通信信道的信道標(biāo)識(shí)符作索引。該方法還包括使用信道信息,操作與該信道標(biāo)識(shí)符相對(duì)應(yīng)的信 道,該信道信息來(lái)自信道項(xiàng)陣列中與該信道標(biāo)識(shí)符相對(duì)應(yīng)的項(xiàng)。在另一實(shí)施例中,本發(fā)明是一種裝置。該裝置包括一個(gè)處理器。該裝置還包括與處 理器相連的存儲(chǔ)器。該裝置還包括與處理器相連的網(wǎng)絡(luò)接口。該處理器用于接收網(wǎng)絡(luò)中通 信信道的信道標(biāo)識(shí)符。該處理器還用于檢查在信道項(xiàng)陣列中與該信道標(biāo)識(shí)符相對(duì)應(yīng)的項(xiàng)。 信道項(xiàng)陣列用通信信道的信道標(biāo)識(shí)符作索引。該處理器還用于使用信道信息,操作與該信 道標(biāo)識(shí)符相對(duì)應(yīng)的信道,該信道信息來(lái)自信道項(xiàng)陣列中與該信道標(biāo)識(shí)符相對(duì)應(yīng)的項(xiàng)。在另一個(gè)實(shí)施例中,本發(fā)明是一種裝置。該裝置包括接收信道標(biāo)識(shí)符的模塊。該 裝置還包括檢查在信道項(xiàng)陣列中與該信道標(biāo)識(shí)符相對(duì)應(yīng)的項(xiàng)的模塊。信道項(xiàng)陣列用通信信 道的信道標(biāo)識(shí)符作索引。該裝置還包括使用信道信息操作與該信道標(biāo)識(shí)符相對(duì)應(yīng)的信道的 模塊,該信道信息來(lái)自信道項(xiàng)陣列中與該信道標(biāo)識(shí)符相對(duì)應(yīng)的項(xiàng)。在另一個(gè)實(shí)施例中,本發(fā)明是包括指令的機(jī)器可讀介質(zhì)。指令可由處理器執(zhí)行。指 令使處理器執(zhí)行一種方法。該方法包括接收網(wǎng)絡(luò)中通信信道的信道標(biāo)識(shí)符。該方法還包括 檢查在信道項(xiàng)陣列中與該信道標(biāo)識(shí)符相對(duì)應(yīng)的項(xiàng)。信道項(xiàng)陣列用通信信道的信道標(biāo)識(shí)符作 索引。該方法還包括使用信道信息,操作與該信道標(biāo)識(shí)符相對(duì)應(yīng)的信道,該信道信息來(lái)自信 道項(xiàng)陣列中與該信道標(biāo)識(shí)符相對(duì)應(yīng)的項(xiàng)。在另一個(gè)實(shí)施例中,本發(fā)明是一種方法。該方法包括監(jiān)視入站隊(duì)列中的硬件作業(yè)。 該方法還包括檢測(cè)硬件部件的中斷。該方法還包括從入站隊(duì)列到硬件部件傳輸作業(yè)。該方 法還可以包括從硬件部件到出站隊(duì)列傳輸完成的作業(yè)。該方法還可以包括提供出站隊(duì)列中 的作業(yè)的完成的指示。在另一個(gè)實(shí)施例中,本發(fā)明是一種方法。該方法包括接收一組信道中一個(gè)信道上 的分組。該方法還包括確定分組由硬件部件進(jìn)行處理。該方法還包括將分組置于硬件部件 的分配器的入站隊(duì)列中。該方法還可以包括從硬件部件的分配器的出站隊(duì)列中接收完成的 分組。該方法還可以包括確定完成的分組在分配器的出站隊(duì)列中是可用的。圖1示出了具有軸輻式拓?fù)浣Y(jié)構(gòu)(hub and spokes topology)的網(wǎng)絡(luò)的實(shí)施例。 網(wǎng)絡(luò)100可以表示多種不同類(lèi)型的網(wǎng)絡(luò)。例如,網(wǎng)絡(luò)100可以表示由工作站(120)和服務(wù) 器 110 組成的網(wǎng)絡(luò)。因此,工作站 120b、120c、120d、120e、120g、120h、120j,120k 以及 1201 都耦合到或連接到服務(wù)器110,從而實(shí)現(xiàn)通過(guò)服務(wù)器110以及因此通過(guò)網(wǎng)絡(luò)100進(jìn)行通信。 工作站120a、120f和120i都沒(méi)有和服務(wù)器110相連,因此沒(méi)有集成到網(wǎng)絡(luò)100中。需要理 解的是,每個(gè)工作站120均可以通過(guò)信道連接或耦合到服務(wù)器110。因此,維持每個(gè)工作站 的信道的狀態(tài)對(duì)網(wǎng)絡(luò)100的運(yùn)行是至關(guān)重要的。散列表是可用于維持網(wǎng)絡(luò)中信道狀態(tài)的結(jié)構(gòu)的一個(gè)例子。圖2示出了散列表的實(shí) 施例。散列表 200 包括散列桶(hash bucket) 210、220、230、240、250、260、270、280 和 290。 每個(gè)散列桶包括由多個(gè)項(xiàng)組成的列表。為了基于標(biāo)識(shí)符找到一項(xiàng),計(jì)算該標(biāo)識(shí)符相應(yīng)的散 列值,并在散列桶的項(xiàng)列表中尋找對(duì)應(yīng)的項(xiàng),該散列桶由散列值進(jìn)行標(biāo)識(shí)。通常,單個(gè)的散 列值是由很多不同的標(biāo)識(shí)符所產(chǎn)生的,因此它只是項(xiàng)的列表的必要條件。如圖所示,項(xiàng)列表215對(duì)應(yīng)于散列桶210,與此類(lèi)似,項(xiàng)列表225對(duì)應(yīng)于散列桶 220,項(xiàng)列表235對(duì)應(yīng)于散列桶230,項(xiàng)列表245對(duì)應(yīng)于散列桶240,項(xiàng)列表255對(duì)應(yīng)于散列 桶250,項(xiàng)列表265對(duì)應(yīng)于散列桶260,項(xiàng)列表275對(duì)應(yīng)于散列桶270,項(xiàng)列表285對(duì)應(yīng)于散列桶280,項(xiàng)列表295對(duì)應(yīng)于散列桶290。列表215、235、245、255、275和295的項(xiàng)均多于三 個(gè),如圖中的省略號(hào)所示。列表225和列表285均只包括兩項(xiàng),而列表265則包括三項(xiàng)。因 此,搜尋散列表所需的時(shí)間既取決于散列桶列表的長(zhǎng)度又取決于期望項(xiàng)在列表中的位置而 變化。通常,散列表的搜尋時(shí)間是odogn)。散列表的搜索過(guò)程指明了搜索散列表可能會(huì)比較緩慢的原因。雖然在某些應(yīng)用中 o(logn)的時(shí)間是所期望的,但對(duì)于實(shí)時(shí)運(yùn)行來(lái)說(shuō)還是太緩慢了。圖3示出了在散列表中查 找信道項(xiàng)的過(guò)程的實(shí)施例。圖3所示的過(guò)程和所示及所描述的其它過(guò)程均包括一組模塊, 這組模塊可以以各種方式來(lái)實(shí)現(xiàn),從而能夠并行或串行執(zhí)行。過(guò)程300包括接收標(biāo)識(shí)符; 在散列表中找到對(duì)應(yīng)項(xiàng);找到對(duì)應(yīng)項(xiàng)的信道信息;操作對(duì)應(yīng)的信道。在模塊310中,接收信道的標(biāo)識(shí)符。在模塊320中,根據(jù)標(biāo)識(shí)符計(jì)算散列值。在模 塊330中,根據(jù)散列值搜索到散列表列表。在模塊340中,搜索散列表列表中的項(xiàng)。在模塊 350中,在散列表列表的多項(xiàng)中的一項(xiàng)內(nèi)搜索到了信道的信道信息。在模塊360,根據(jù)散列 表項(xiàng)的信道信息,對(duì)信道進(jìn)行操作。相比之下,使用信道項(xiàng)陣列(或信道項(xiàng)的指針)可以在0(1)時(shí)間(恒定時(shí)間)內(nèi) 對(duì)信道信息進(jìn)行訪(fǎng)問(wèn)。在實(shí)時(shí)運(yùn)行中,掌握運(yùn)行的恒定且因此可預(yù)測(cè)的時(shí)間是特別重要的。 圖4示出了在陣列中查找信道的過(guò)程的實(shí)施例。過(guò)程400包括接收標(biāo)識(shí)符;將其索引入陣 列中;找到信道信息并對(duì)信道進(jìn)行操作。在模塊410中,接收信道的標(biāo)識(shí)符。在模塊425中,使用標(biāo)識(shí)符直接索引信道信息 數(shù)據(jù)結(jié)構(gòu)的陣列。在模塊455中,在陣列中找到信道的相關(guān)信道信息。在模塊465中,對(duì)相 關(guān)的信道進(jìn)行操作。因此,如果蜂窩電話(huà)在網(wǎng)絡(luò)中通過(guò)信道發(fā)送信息,則基于由蜂窩電話(huà)提 供的信道的標(biāo)識(shí)符,網(wǎng)絡(luò)可以在恒定的時(shí)間內(nèi)找到信道信息數(shù)據(jù)結(jié)構(gòu)中的控制信息。圖5示出了信道項(xiàng)陣列的實(shí)施例。陣列500包括陣列表510,具有和每個(gè)標(biāo)識(shí)符 相對(duì)應(yīng)的項(xiàng);信道信息數(shù)據(jù)結(jié)構(gòu)520。陣列表510的項(xiàng)可以是信道信息數(shù)據(jù)結(jié)構(gòu)520的指 針,或者陣列表510的項(xiàng)可以是實(shí)際的信道信息數(shù)據(jù)結(jié)構(gòu)520。圖6示出了信道信息的數(shù) 據(jù)結(jié)構(gòu)的實(shí)施例。數(shù)據(jù)結(jié)構(gòu)600是可用作數(shù)據(jù)結(jié)構(gòu)520的數(shù)據(jù)結(jié)構(gòu)的例子或?qū)嵤├T谝?個(gè)實(shí)施例中,數(shù)據(jù)結(jié)構(gòu)600包括信道標(biāo)識(shí)符610、信道狀態(tài)620、信道計(jì)時(shí)器630和用戶(hù)標(biāo)識(shí) 符640。如圖所示,在數(shù)據(jù)結(jié)構(gòu)600中還可以包括其它信息。其它實(shí)施例可以包括不同的信 息,或者以不同的方式組織這些其它的實(shí)施例。此外,單一網(wǎng)絡(luò)中的不同類(lèi)型的信道可以具 有不同的相關(guān)數(shù)據(jù)結(jié)構(gòu)。下面對(duì)圖7-8的描述是為了概述適于執(zhí)行上述和下述本發(fā)明方法的計(jì)算機(jī)硬件 和其它操作部件,而不是為了限制應(yīng)用環(huán)境。相似地,計(jì)算機(jī)硬件和其它操作部件可以適于 作為上述本發(fā)明的多個(gè)裝置中的一部分。本發(fā)明可用其它計(jì)算機(jī)系統(tǒng)配置(包括手持設(shè) 備、多處理器系統(tǒng)、基于微處理器或可編程的消費(fèi)電子產(chǎn)品、網(wǎng)絡(luò)PC(計(jì)算機(jī))、迷你計(jì)算機(jī) 以及大型計(jì)算機(jī)等待)來(lái)實(shí)現(xiàn)。本發(fā)明亦可實(shí)現(xiàn)在分布式計(jì)算環(huán)境中,在分布式計(jì)算環(huán)境 中,由通過(guò)通信網(wǎng)絡(luò)鏈接的遠(yuǎn)程計(jì)算設(shè)備來(lái)執(zhí)行任務(wù)。圖7示出了通過(guò)網(wǎng)絡(luò)705 (例如互聯(lián)網(wǎng))連接到一起的幾個(gè)計(jì)算機(jī)系統(tǒng)。這里所 用的術(shù)語(yǔ)“互聯(lián)網(wǎng)”是指由使用某些協(xié)議(例如tcp/ip協(xié)議)以及其它可能的協(xié)議(例如 組成萬(wàn)維網(wǎng)(web)的超文本標(biāo)記語(yǔ)言(html)文件所用的超文本傳輸協(xié)議(HTTP))的多個(gè) 網(wǎng)絡(luò)組成的網(wǎng)絡(luò)。對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)說(shuō),互聯(lián)網(wǎng)的物理連接、互聯(lián)網(wǎng)的這些協(xié)議以
6及通信過(guò)程都是公知的。通常,由互聯(lián)網(wǎng)服務(wù)供應(yīng)商(isp)(例如isp 710和715)提供對(duì)互聯(lián)網(wǎng)705的訪(fǎng) 問(wèn)??蛻?hù)端系統(tǒng)(例如客戶(hù)端計(jì)算機(jī)系統(tǒng)730、740、750以及760)上的用戶(hù)通過(guò)互聯(lián)網(wǎng)服務(wù) 供應(yīng)商(例如isp 710和715)獲得對(duì)互聯(lián)網(wǎng)的訪(fǎng)問(wèn)。對(duì)互聯(lián)網(wǎng)的訪(fǎng)問(wèn)使客戶(hù)端計(jì)算機(jī)系 統(tǒng)的用戶(hù)能夠交換信息、收發(fā)電子郵件以及瀏覽諸如html之類(lèi)格式的文件。這些文件往往 由web服務(wù)器(例如被認(rèn)為是位于互聯(lián)網(wǎng)“上”的web服務(wù)器720)提供。盡管在計(jì)算機(jī)系 統(tǒng)不是isp的情況下該系統(tǒng)也能建立并連接到互聯(lián)網(wǎng),但通常這些web服務(wù)器是由isp (例 如isp 710)提供的。Web服務(wù)器720通常是至少一個(gè)計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)是作為服務(wù)器計(jì)算機(jī) 系統(tǒng),其使用萬(wàn)維網(wǎng)的多個(gè)協(xié)議工作,并連接到互聯(lián)網(wǎng)。可選地,web服務(wù)器720可以是提 供對(duì)客戶(hù)端系統(tǒng)的互聯(lián)網(wǎng)進(jìn)行訪(fǎng)問(wèn)的isp的一部分。所示的web服務(wù)器720連接到服務(wù)器 計(jì)算機(jī)系統(tǒng)725,該服務(wù)器計(jì)算機(jī)系統(tǒng)725自身連接到可被視為一種媒體數(shù)據(jù)庫(kù)形式的web 內(nèi)容795。雖然圖7中示出了兩個(gè)計(jì)算機(jī)系統(tǒng)720和725,但web服務(wù)器系統(tǒng)720和服務(wù)器 計(jì)算機(jī)系統(tǒng)725也可以是一個(gè)計(jì)算機(jī)系統(tǒng),該計(jì)算機(jī)系統(tǒng)具有不同的軟件部件,這些軟件 部件提供web服務(wù)器功能和由下面將進(jìn)一步描述的服務(wù)器計(jì)算機(jī)系統(tǒng)725所提供的服務(wù)器 功能??蛻?hù)端計(jì)算機(jī)系統(tǒng)730、740、750和760均可以使用適當(dāng)?shù)膚eb瀏覽軟件來(lái)瀏覽由 web服務(wù)器720所提供的html頁(yè)面。Isp 710通過(guò)可以被視為客戶(hù)端計(jì)算機(jī)系統(tǒng)730 —部 分的調(diào)制解調(diào)器(modem)接口 735來(lái)提供到客戶(hù)端計(jì)算機(jī)系統(tǒng)730的互聯(lián)網(wǎng)連接??蛻?hù)端 計(jì)算機(jī)系統(tǒng)可以是個(gè)人計(jì)算機(jī)系統(tǒng)、網(wǎng)絡(luò)計(jì)算機(jī)、web電視(tv)系統(tǒng),或其它諸如此類(lèi)的計(jì) 算機(jī)系統(tǒng)。相似地,盡管如圖7所示,客戶(hù)端系統(tǒng)740、750和760的連接并不相同,但isp 715 提供了這三個(gè)計(jì)算機(jī)系統(tǒng)的互聯(lián)網(wǎng)連接。客戶(hù)端計(jì)算機(jī)系統(tǒng)740通過(guò)調(diào)制解調(diào)器接口 745 進(jìn)行連接,而客戶(hù)端計(jì)算機(jī)系統(tǒng)750和760是局域網(wǎng)(Ian)的一部分。雖然圖7所示的接 口 735和745統(tǒng)稱(chēng)為“調(diào)制解調(diào)器”,但這些接口均可以是模擬調(diào)制解調(diào)器、isdn調(diào)制解調(diào) 器、電纜調(diào)制解調(diào)器、衛(wèi)星傳輸接口(例如“直接PC (direct pc)”)或用于把計(jì)算機(jī)系統(tǒng)連 接到其它計(jì)算機(jī)系統(tǒng)的其它接口。 客戶(hù)端計(jì)算機(jī)系統(tǒng)750和760通過(guò)網(wǎng)絡(luò)接口 755和765 (可以是以太網(wǎng)接口或其它 網(wǎng)絡(luò)接口)連接到lan 770。lan 770也連接到網(wǎng)關(guān)計(jì)算機(jī)系統(tǒng)775,后者提供用于局域網(wǎng) 的防火墻和其它互聯(lián)網(wǎng)相關(guān)服務(wù)。網(wǎng)關(guān)計(jì)算機(jī)系統(tǒng)775連接到isp 715來(lái)提供客戶(hù)端計(jì)算 機(jī)系統(tǒng)750和760的互聯(lián)網(wǎng)連接。網(wǎng)關(guān)計(jì)算機(jī)系統(tǒng)775可以是常規(guī)的服務(wù)器計(jì)算機(jī)系統(tǒng)。 同樣,web服務(wù)器系統(tǒng)720也可以是常規(guī)服務(wù)器計(jì)算機(jī)系統(tǒng)?;蛘撸?wù)器計(jì)算機(jī)系統(tǒng)780可以通過(guò)網(wǎng)絡(luò)接口 785直接連接到lan 770,從而向 客戶(hù)端750和760提供文件790和其它服務(wù),而無(wú)需通過(guò)網(wǎng)關(guān)系統(tǒng)775連接到互聯(lián)網(wǎng)。圖8示出了可用作客戶(hù)端計(jì)算機(jī)系統(tǒng)或服務(wù)器計(jì)算機(jī)系統(tǒng)或可用作web服務(wù)器系 統(tǒng)的常規(guī)計(jì)算機(jī)系統(tǒng)的一個(gè)例子。這種計(jì)算機(jī)系統(tǒng)可以用于執(zhí)行互聯(lián)網(wǎng)服務(wù)供應(yīng)商(例如 isp 710)的許多功能。計(jì)算機(jī)系統(tǒng)800通過(guò)調(diào)制解調(diào)器或網(wǎng)絡(luò)接口 820與外部系統(tǒng)相交 互。需要注意的是,調(diào)制解調(diào)器或網(wǎng)絡(luò)接口 820可以被視為計(jì)算機(jī)系統(tǒng)800的一部分。接 口 820可以是模擬調(diào)制解調(diào)器、isdn調(diào)制解調(diào)器、電纜調(diào)制解調(diào)器、令牌環(huán)接口、衛(wèi)星傳輸接口(例如“直接PC(direCtpC)”)或用于把計(jì)算機(jī)系統(tǒng)連接到其它計(jì)算機(jī)系統(tǒng)的其它接□。計(jì)算機(jī)系統(tǒng)800包括處理器810,后者可以是諸如英特爾(intel)奔騰(pentium) 微處理器或摩托羅拉(motorola)power pc微處理器之類(lèi)的常規(guī)微處理器。存儲(chǔ)器840通 過(guò)總線(xiàn)870連接到處理器810。存儲(chǔ)器840可以是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)并且也可以 包括靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)??偩€(xiàn)870將處理器810連接到存儲(chǔ)器840、非易失性存 儲(chǔ)設(shè)備850、顯示控制器830以及輸入/輸出(i/o)控制器860。顯示控制器830以常規(guī)方式控制顯示設(shè)備835 (其可以是陰極射線(xiàn)管(crt)或液 晶顯示器(led))上的顯示。輸入/輸出設(shè)備855可以包括鍵盤(pán)、磁盤(pán)驅(qū)動(dòng)器、打印機(jī)、掃描 儀和包括鼠標(biāo)和其它指向設(shè)備的其它輸入輸出設(shè)備。顯示控制器830和i/o控制器860可 以使用常規(guī)的公知技術(shù)來(lái)實(shí)現(xiàn)。數(shù)字圖像輸入設(shè)備865可以是數(shù)碼照相機(jī),其連接到i/o 控制器860,從而使數(shù)碼照相機(jī)的圖像能夠輸入到計(jì)算機(jī)系統(tǒng)800中。非易失性存儲(chǔ)設(shè)備850通常是磁硬盤(pán)、光盤(pán)或另一種形式的大容量數(shù)據(jù)存儲(chǔ)設(shè) 備。在計(jì)算機(jī)系統(tǒng)800的軟件執(zhí)行過(guò)程中,這些數(shù)據(jù)中的一些數(shù)據(jù)往往通過(guò)直接的存儲(chǔ)器 訪(fǎng)問(wèn)處理寫(xiě)入存儲(chǔ)器840中。本領(lǐng)域普通技術(shù)人員可以立即識(shí)別出術(shù)語(yǔ)“機(jī)器可讀介質(zhì)”或 “計(jì)算機(jī)可讀介質(zhì)”包括任何類(lèi)型的存儲(chǔ)設(shè)備,該存儲(chǔ)設(shè)備可由處理器810訪(fǎng)問(wèn),并包括對(duì)數(shù) 據(jù)信號(hào)進(jìn)行編碼的載波。計(jì)算機(jī)系統(tǒng)800是具有不同結(jié)構(gòu)的多種可能的計(jì)算機(jī)系統(tǒng)中的一個(gè)例子。例如, 基于intel處理器的個(gè)人計(jì)算機(jī)往往有多條總線(xiàn),其中一條總線(xiàn)可以是用于周邊設(shè)備的輸 入/輸出(i/o)總線(xiàn),一條總線(xiàn)可以直接連接處理器810和存儲(chǔ)器840 (往往被稱(chēng)作“存儲(chǔ) 器總線(xiàn)”)。多個(gè)總線(xiàn)通過(guò)橋接器部件連接到一起,橋接器部件可以根據(jù)不同的總線(xiàn)協(xié)議執(zhí) 行任何必要的轉(zhuǎn)換。網(wǎng)絡(luò)計(jì)算機(jī)是可用于本發(fā)明的另一類(lèi)計(jì)算機(jī)系統(tǒng)。網(wǎng)絡(luò)計(jì)算機(jī)通常并不包括硬盤(pán) 或其它大容量存儲(chǔ)設(shè)備,而是將由處理器810執(zhí)行的可執(zhí)行程序從網(wǎng)絡(luò)連接加載到存儲(chǔ)器 840中。本領(lǐng)域公知的web電視系統(tǒng)雖然可能缺少圖8所示的某些特征(例如特定的輸入 或輸出設(shè)備),但其也被認(rèn)為是一種根據(jù)本發(fā)明的計(jì)算機(jī)系統(tǒng)。典型的計(jì)算機(jī)系統(tǒng)通常包括 至少一個(gè)處理器、存儲(chǔ)器以及連接存儲(chǔ)器和處理器的總線(xiàn)。另外,計(jì)算機(jī)系統(tǒng)800由包括文件管理系統(tǒng)的操作系統(tǒng)軟件來(lái)控制,該文件管理 系統(tǒng)可以例如是作為操作系統(tǒng)軟件一部分的磁盤(pán)操作系統(tǒng)。具有其相關(guān)的文件管理系統(tǒng)軟 件的操作系統(tǒng)軟件的一個(gè)例子是位于華盛頓州雷德蒙(Redmond)的微軟(Microsoft)公司 所出品的被稱(chēng)作Windows (視窗) 的操作系統(tǒng)家族產(chǎn)品及其相關(guān)的文件管理系統(tǒng)。具有 其相關(guān)的文件管理系統(tǒng)軟件的操作系統(tǒng)軟件的另一個(gè)例子是LINUX操作系統(tǒng)及其相關(guān)的 文件管理系統(tǒng)。文件管理系統(tǒng)通常存儲(chǔ)于非易失性存儲(chǔ)器850中,并且使處理器810執(zhí)行 操作系統(tǒng)所需的各種動(dòng)作,以輸入輸出數(shù)據(jù),并將數(shù)據(jù)存儲(chǔ)在存儲(chǔ)器中,包括將文件存儲(chǔ)在 非易失性存儲(chǔ)器850中。詳細(xì)描述的某些部分將以計(jì)算機(jī)存儲(chǔ)器內(nèi)數(shù)據(jù)比特操作的算法和符號(hào)表示的方 式給出。這些算法描述和表示是數(shù)據(jù)處理領(lǐng)域普通技術(shù)人員很有效地將他們工作的實(shí)質(zhì)傳 達(dá)給本領(lǐng)域中其他技術(shù)人員的常用手段。這里所構(gòu)思的算法通常是能夠得出期望結(jié)果的由 操作構(gòu)成的自相一致的序列。這些操作需要對(duì)物理量進(jìn)行物理控制。通常情況下,雖然非必要,但這些量是以電或磁信號(hào)的形式出現(xiàn)的,可以存儲(chǔ)、傳輸、組合、比較或者控制這些信 號(hào)。主要由于常用的緣故,有時(shí)方便地將這些信號(hào)稱(chēng)作比特、值、元素、符號(hào)、字符、條目、數(shù)
字等等。
然而,應(yīng)注意的是,所有這些術(shù)語(yǔ)和相似的術(shù)語(yǔ)是與適合的物理量相關(guān)聯(lián)的并且 僅是這些量的方便的標(biāo)記。除非以下論述中特別指出或非常明顯,否則應(yīng)該理解的是,本文 中論述所使用的諸如“處理”、“計(jì)算”、“運(yùn)算”、“確定”或“顯示”之類(lèi)的術(shù)語(yǔ)是指計(jì)算機(jī)系 統(tǒng)或相似的電子計(jì)算設(shè)備的動(dòng)作和處理,計(jì)算機(jī)系統(tǒng)或相似的電子計(jì)算設(shè)備控制并將由計(jì) 算機(jī)系統(tǒng)寄存器和存儲(chǔ)器內(nèi)的物理(電子)量表示的數(shù)據(jù)轉(zhuǎn)換為相似地由計(jì)算機(jī)系統(tǒng)存儲(chǔ) 器、寄存器、或其它這種信息存儲(chǔ)設(shè)備、傳輸或顯示設(shè)備內(nèi)的物理(電子)量表示的其它數(shù) 據(jù)。在某些實(shí)施例中,本發(fā)明也涉及用于執(zhí)行本文操作的裝置。該裝置可以根據(jù)所需 的目的而特別構(gòu)造,或者可以包括通用計(jì)算機(jī),通用計(jì)算機(jī)可由存儲(chǔ)于計(jì)算機(jī)中的計(jì)算機(jī) 程序有選擇性地激活或重新配置。這種計(jì)算機(jī)程序可以存儲(chǔ)在計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中,該 計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)例如、但不限于包括軟盤(pán)、光盤(pán)、cd-rom和磁光盤(pán)的任何類(lèi)型的磁 盤(pán),只讀存儲(chǔ)器(rom),隨機(jī)讀取存儲(chǔ)器(ram),eprom, e印rom,磁或光卡,或適于存儲(chǔ)電子 指令的其它任何類(lèi)型的介質(zhì),這些存儲(chǔ)介質(zhì)均連接到計(jì)算機(jī)系統(tǒng)總線(xiàn)上。本文所提供的算法和畫(huà)面并不內(nèi)在地關(guān)聯(lián)于任何特定的計(jì)算機(jī)或其它裝置。對(duì)根 據(jù)本發(fā)明教義的程序可使用各種通用系統(tǒng),或也可以構(gòu)造專(zhuān)用的裝置,來(lái)更方便地執(zhí)行所 需的方法步驟。下文描述中,將顯示各種這些系統(tǒng)的所需結(jié)構(gòu)。另外,本發(fā)明并不是結(jié)合任 何特定的編程語(yǔ)言來(lái)進(jìn)行描述的,因此可以使用多樣的編程語(yǔ)言來(lái)實(shí)施各種實(shí)施例??梢允褂弥T如圖7和8所示的網(wǎng)絡(luò)和機(jī)器之類(lèi)的各種網(wǎng)絡(luò)和機(jī)器。另一種網(wǎng)絡(luò)可 以是蜂窩網(wǎng)絡(luò)。圖9示出了蜂窩網(wǎng)絡(luò)的實(shí)施例。網(wǎng)絡(luò)900包括中央網(wǎng)絡(luò)、基站以及蜂窩設(shè) 備。中央網(wǎng)絡(luò)930把呼叫從一個(gè)基站910尋徑到另一個(gè)基站910或?qū)降綗o(wú)線(xiàn)網(wǎng)絡(luò)940。 基站910把呼叫尋徑到附近蜂窩設(shè)備920或?qū)?lái)自附近蜂窩設(shè)備920的呼叫進(jìn)行尋徑。因 此,蜂窩設(shè)備可以與其它蜂窩設(shè)備進(jìn)行通信,或與連接到其它網(wǎng)絡(luò)上的設(shè)備進(jìn)行通信。如圖所示,基站910a、910b、910c、9IOd和9IOe均連接到中央網(wǎng)絡(luò)930,該中央網(wǎng) 絡(luò)930連接到無(wú)線(xiàn)網(wǎng)絡(luò)940。蜂窩設(shè)備920a、920b、920c和920d均連接到基站910e。相似 地,蜂窩設(shè)備920e和920f連接到基站910d。同樣地,蜂窩設(shè)備920g和920h連接到基站 910c。此外,蜂窩設(shè)備920i和920j連接到基站910b。需要注意的是,這種網(wǎng)絡(luò)中的信道可 以特定用于單獨(dú)的設(shè)備,在某些情況下,某些設(shè)備可以具有多個(gè)通信信道。因此,中央網(wǎng)絡(luò) 930處用于設(shè)備920a的信道可以不同于用于設(shè)備920b的信道,盡管這兩者都連接到基站 910e并因此連接到中央網(wǎng)絡(luò)930。此外,諸如基站910d之類(lèi)的基站可以有其自己的一組信 道,例如,用于設(shè)備920e的第一信道和用于設(shè)備920f的第二信道。由于網(wǎng)絡(luò)的各種通信信道是在恒定或偶發(fā)基礎(chǔ)上進(jìn)行使用的,因此維持這些信道 的相關(guān)信息就變得很必要。圖10示出了維護(hù)信道信息陣列的過(guò)程的實(shí)施例。圖10的過(guò)程 1000是圍繞著確定信道是否已經(jīng)超時(shí)而進(jìn)行說(shuō)明的,但其也可以用于其它形式的維護(hù),例 如各種狀態(tài)參數(shù)的更新。該過(guò)程包括檢查信道;確定其是否已經(jīng)超時(shí);將超時(shí)的信道移動(dòng) 到自由列表中;移動(dòng)到下一信道。在模塊1010中,過(guò)程起始(或重新起始)于第一信道。在模塊1020中,過(guò)程檢查信道計(jì)時(shí)器或信道數(shù)據(jù)結(jié)構(gòu)陣列中的超時(shí)信息。這可以使用多種方式來(lái)實(shí)現(xiàn),包括將時(shí)間 戳和當(dāng)前時(shí)間進(jìn)行比較;將計(jì)時(shí)器字段和預(yù)定極限進(jìn)行比較;或者確定最近是否使用了信 道。在模塊1030中,確定模塊1020的檢查是否指明了信道已經(jīng)超時(shí)。這可能取決于信道 類(lèi)型而變化,可以標(biāo)記某些信道使其絕不會(huì)超時(shí)。如果信道已經(jīng)超時(shí),則在模塊1040中,通 過(guò)例如將信道加入由末端指針?biāo)赶虻捻?xiàng)的指針,將信道加入自由列表。如果信道沒(méi)有超 時(shí),或者在將超時(shí)信道加入自由列表后,在模塊1050處,過(guò)程移向下一個(gè)信道。過(guò)程隨后在 模塊1060中檢查是否存在下一個(gè)信道(或者例如如果剛剛通過(guò)了陣列的末端)。如果下一 個(gè)信道存在,則在模塊1020中,檢查下一個(gè)信道。如果信道不存在,則在模塊1010中,過(guò)程 重新從第一信道起始。雖然陣列可能允許許多信道(在隨機(jī)存取存儲(chǔ)器介質(zhì)中)具有恒定訪(fǎng)問(wèn)時(shí)間,但 其很難擴(kuò)展。圖11示出了信道信息擴(kuò)展陣列的一個(gè)實(shí)施例。擴(kuò)展陣列1100包括陣列項(xiàng) 1110和第二陣列項(xiàng)1140。由數(shù)據(jù)項(xiàng)1110中的項(xiàng)指向數(shù)據(jù)結(jié)構(gòu)1120。陣列項(xiàng)1110的最后 一項(xiàng)的指針1130指向第二陣列項(xiàng)1140。第二陣列項(xiàng)1140的項(xiàng)指向數(shù)據(jù)結(jié)構(gòu)1150,因此實(shí) 現(xiàn)了第二(或更多)組信道。或者,可以通過(guò)在存儲(chǔ)器中簡(jiǎn)單地直接擴(kuò)展陣列,來(lái)更好地保留陣列的簡(jiǎn)單隨機(jī) 存取特性。圖12示出了信道信息擴(kuò)展陣列的替代實(shí)施例。陣列1200包括陣列項(xiàng)1210和 數(shù)據(jù)結(jié)構(gòu)1220。部分1260代表陣列1200原始部分的陣列項(xiàng)1210和數(shù)據(jù)結(jié)構(gòu)1220。部分 1270代表陣列1200的擴(kuò)展部分。因此,部分1260可以對(duì)應(yīng)于諸如陣列500之類(lèi)的陣列,而 部分1270代表容納附加信道的擴(kuò)展部分。雖然可以擴(kuò)展陣列來(lái)容納信道請(qǐng)求,但在信道從使用中被釋放后重新使用陣列項(xiàng) 可能會(huì)更高效。圖13示出了維護(hù)自由列表的過(guò)程的實(shí)施例。過(guò)程1300包括根據(jù)自由列表 提供使用的信道并將未使用的信道加入自由列表中的過(guò)程。在模塊1310中,接收到了信道 請(qǐng)求。在模塊1320中,提供了來(lái)自自由列表(例如來(lái)自起始指針)的第一信道標(biāo)識(shí)符。在 模塊1330中,更新起始指針,以指向自由列表的下一個(gè)信道,并有效地將第一信道從自由 列表中移除。從模塊1330,過(guò)程可以移動(dòng)到模塊1310或模塊1340。 在模塊1340中,接收到了信道超時(shí)指示或通知。在模塊1350中,例如,通過(guò)將由末 端指針指向的數(shù)據(jù)結(jié)構(gòu)中的索引修改為超時(shí)信道的索引,將超時(shí)信道加入列表的末端。在 模塊1360中,隨后更新末端指針,來(lái)指向自由列表的新末端或最后一個(gè)信道。從模塊1360 起,過(guò)程可以移動(dòng)到模塊1340或1310。需要注意的是,可以將該過(guò)程視為兩個(gè)相互關(guān)聯(lián)但 獨(dú)立執(zhí)行的過(guò)程,一個(gè)過(guò)程包括模塊1310、1320和1330,另一個(gè)過(guò)程包括模塊1340、1350和 1360。當(dāng)使用機(jī)器來(lái)執(zhí)行過(guò)程時(shí),機(jī)器可以從介質(zhì)中獲得指示(其可以執(zhí)行指令)。圖 14示出了機(jī)器可讀介質(zhì)的實(shí)施例;介質(zhì)1400可以是各種類(lèi)型的介質(zhì),并且可以是單個(gè)介質(zhì) 或單個(gè)介質(zhì)的多個(gè)分離部分或多個(gè)介質(zhì)。介質(zhì)1400包括信道維護(hù)、自由列表維護(hù)、新信道 分配、標(biāo)識(shí)符接口和操作接口,以及控制模塊。新信道分配1410可以包括提供信道數(shù)據(jù)結(jié)構(gòu)的擴(kuò)展陣列的模塊和根據(jù)信道自由 列表提供新信道的模塊這兩者中的一個(gè)或兩個(gè)。自由列表維護(hù)1450可以包括將超時(shí)/過(guò) 期信道加入自由列表的模塊,并且還可以包括根據(jù)自由列表提供信道的模塊。標(biāo)識(shí)符接口 1420能夠接收信道的標(biāo)識(shí)符。信道維護(hù)模塊1430例如通過(guò)確定信道是否超時(shí)或已經(jīng)超出
10容許利用級(jí)別,來(lái)維護(hù)信道。操作接口 1440提供了與網(wǎng)絡(luò)部分的接口,該網(wǎng)絡(luò)操作由陣列 跟蹤的信道??刂颇K1460控制其它模塊和接口的操作(1410、1420、1430、1440和1450)。如上所述,可以維持可用或可分配信道的自由列表。圖15示出了自由列表的實(shí)施 例。列表1500是數(shù)據(jù)結(jié)構(gòu)1530的鏈表,其中每個(gè)數(shù)據(jù)結(jié)構(gòu)包括信道標(biāo)識(shí)符和指向下一個(gè)數(shù) 據(jù)結(jié)構(gòu)的指針。起始指針1510指向列表1500的第一結(jié)構(gòu)1530 (本實(shí)施例中所示的1530a)。 因此,起始指針1510可以指明最遠(yuǎn)的臨近使用的信道。末端指針1520指向列表1500的最 后結(jié)構(gòu)1530 (本實(shí)施例中所示的1530n)。如圖所示,列表1500中鏈接了結(jié)構(gòu)1510a、1510b、 1510c和1510d。列表隨后繼續(xù),最終到達(dá)結(jié)構(gòu)1530m和1530n。需要注意的是,對(duì)于列表的 最后結(jié)構(gòu)即結(jié)構(gòu)1530n,在一個(gè)實(shí)施例中分配給其指針的是Null (空)值。本文所論述的網(wǎng)絡(luò)中可以使用各種設(shè)備。例如,上面結(jié)合網(wǎng)絡(luò)提及了多種蜂窩電 話(huà)和計(jì)算機(jī)。但是,也可以將其它的智能設(shè)備或應(yīng)用用于網(wǎng)絡(luò)。此外,設(shè)備可以是移動(dòng)的 (例如,機(jī)動(dòng)車(chē)或建筑機(jī)械)或者固定的(例如燈柱或空調(diào)設(shè)備)。另外,網(wǎng)絡(luò)可以具有多 種拓?fù)浜徒Y(jié)構(gòu),從而使信道可以表示例如通過(guò)網(wǎng)絡(luò)或直接連接的一條路徑。當(dāng)操作某些實(shí)施例的信道時(shí),密碼術(shù)可能會(huì)造成性能瓶頸。因此,使用所有的可 用密碼資源來(lái)管理密碼是有益的。圖16示出了管理信道消息的密碼的過(guò)程的實(shí)施例。過(guò) 程1600包括接收消息;確定應(yīng)用什么可用的密碼資源;應(yīng)用密碼資源;將消息沿著信道 傳遞。在模塊1610中,接收到了消息。在此時(shí),信道往往是已知的,并且正在操作信道。但 是,在某些實(shí)施例中,信道信息也可以是加密的。在模塊1620中,確定應(yīng)用什么密碼資源。例如,基于硬件的密碼引擎可以管理加 密和解密,軟件模塊可以用于例如加密、解密或握手/密鑰交換。通常情況下,可以用硬件 或軟件來(lái)實(shí)現(xiàn)密碼資源??梢曰诙喾N因素,例如消息長(zhǎng)度和類(lèi)型(例如內(nèi)容類(lèi)型)、可用 資源的隊(duì)列長(zhǎng)度、可用資源的狀態(tài)(例如可用或禁用)、可用資源的容量和其它因素,來(lái)選 擇使用哪種資源(例如硬件/軟件)來(lái)用于密碼操作。在模塊1630中,基于模塊1620的判斷結(jié)果,消息在選定資源的隊(duì)列中排隊(duì)等候。 需要注意的是,隊(duì)列可以是一個(gè)消息(將要操作的消息)的隊(duì)列或多個(gè)消息的隊(duì)列,例如該 由多個(gè)消息組成的隊(duì)列可以帶有或不帶有附加的優(yōu)先級(jí)特征。在模塊1640中,所選擇的密 碼資源對(duì)消息(到達(dá)隊(duì)列的適合部分的消息)進(jìn)行操作。操作可以包括加密、解密、密鑰交 換或查找、或其它密碼操作。此外,可以由消息的類(lèi)型以及與其相關(guān)的編碼或封裝信息來(lái)部 分地確定操作。在模塊1650中,將消息沿著信道傳遞,從而與整體系統(tǒng)性能保持一致??梢砸远鄻拥姆绞綄?shí)現(xiàn)圖16的過(guò)程1600。圖17示出了可以實(shí)現(xiàn)圖16的過(guò)程的 一組部件的實(shí)施例。系統(tǒng)1700包括硬件和軟件密碼資源、消息評(píng)估模塊以及密碼判優(yōu)器, 這些都可以與消息交互。硬件密碼加速器1710是密碼資源的硬件實(shí)現(xiàn),其能夠?qū)崿F(xiàn)加密、解密和其它密碼 功能。硬件密碼加速器1710包括隊(duì)列1720(其可以作為傳統(tǒng)隊(duì)列或待處理的單個(gè)消息/ 分組的項(xiàng)來(lái)實(shí)現(xiàn))。相似地,軟件密碼模塊1730可以包括加密、解密和其它密碼功能。軟件 密碼模塊1730可以作為例如一組模塊或軟件庫(kù)和功能來(lái)實(shí)現(xiàn)。隊(duì)列1740可以是模塊1730 的單個(gè)隊(duì)列或一組隊(duì)列(例如,對(duì)應(yīng)于多個(gè)不同功能中的每一種功能)。此外,隊(duì)列1740可 以只是一個(gè)指向處理數(shù)據(jù)的指針。消息評(píng)估器1750是評(píng)估消息1760的屬性(舉例)的模塊,來(lái)確定對(duì)消息1760 (例如指定了何種格式)和消息1760的其它屬性進(jìn)行何種類(lèi)型的密碼處理。通常情況下,消 息1760包括長(zhǎng)度參數(shù)1770 (例如有效載荷長(zhǎng)度)。密碼判優(yōu)器1790是從硬件密碼加速器 1710、軟件密碼模塊1730、消息評(píng)估器1750和消息1760接收狀態(tài)信息的模塊。判優(yōu)器1790 隨后處理該信息,從而確定應(yīng)使用什么密碼資源來(lái)對(duì)消息1760進(jìn)行密碼操作。該確定是基 于長(zhǎng)度1770、隊(duì)列1720和1740的狀態(tài)、以及來(lái)自加速器1710、模塊1730和評(píng)估器1750的 其它狀態(tài)信息來(lái)進(jìn)行的。需要注意的是,可由其它資源或圖17所示的資源來(lái)執(zhí)行諸如密鑰 交換或密鑰查找等操作。硬件加速實(shí)現(xiàn)方式在一些實(shí)施例中,硬件加速可用于處理某些分組。然而,基于中斷驅(qū)動(dòng)來(lái)管理硬件 加速會(huì)使驅(qū)動(dòng)器將等待必要硬件(例如密碼加速器)的大量分組丟棄。人們期望驅(qū)動(dòng)器能 夠等待硬件資源,并在等待資源期間拒絕到來(lái)的分組?;蛘?,驅(qū)動(dòng)器可以使用有限的緩沖器 來(lái)處置到來(lái)的分組,但這可能在等待硬件資源期間造成溢出,從而導(dǎo)致拒絕到來(lái)的分組。因 此,不需要驅(qū)動(dòng)器等待硬件中斷或互斥的硬件資源管理是很有用處的。分配流程或分配模塊可用于管理硬件模塊的分組或作業(yè),而無(wú)需驅(qū)動(dòng)器來(lái)特別服 務(wù)硬件中斷。圖18示出了將作業(yè)分配給硬件模塊的過(guò)程的實(shí)施例。過(guò)程1800包括監(jiān)視 入站作業(yè)隊(duì)列;檢查中斷;將完成的作業(yè)傳輸?shù)匠稣咀鳂I(yè)隊(duì)列;選擇入站作業(yè)以進(jìn)行處理。模塊1810包括監(jiān)視入站作業(yè)隊(duì)列,例如確定工作是否在等待、當(dāng)存在多個(gè)隊(duì)列時(shí) 作業(yè)在哪個(gè)隊(duì)列中等待。模塊1810可以包括對(duì)入站(以及可能的出站)隊(duì)列進(jìn)行維護(hù)。在 模塊1820中,確定硬件模塊(或部件)是否發(fā)出了一個(gè)中斷。如果沒(méi)有的話(huà),則過(guò)程繼續(xù) 在模塊1810中等待。如果有的話(huà),則在1830中,將來(lái)自硬件模塊的完成的作業(yè)置入適合的 出站隊(duì)列中。在模塊1840中,確定作業(yè)實(shí)際上是否在入站隊(duì)列中等候。如果不是的話(huà),流程在 模塊1850中過(guò)程監(jiān)視入站隊(duì)列,實(shí)質(zhì)上等候入站作業(yè)。如果是的話(huà),則在模塊1860中,選擇 硬件模塊處理的下一個(gè)作業(yè)。如果只有一個(gè)作業(yè),則假定選擇該作業(yè)。若有多個(gè)隊(duì)列包括 作業(yè),則可以基于優(yōu)先級(jí)考慮或基于所做出的選擇的順序(例如,隊(duì)列列表中的下一個(gè)), 來(lái)進(jìn)行選擇。將作業(yè)提供給硬件部件以進(jìn)行處理,過(guò)程進(jìn)入模塊1810中。因此,分配器可以向諸如密碼加速器之類(lèi)的硬件部件提供一批作業(yè),其中,到來(lái)的 作業(yè)處于到來(lái)隊(duì)列中,離去的作業(yè)處于離去隊(duì)列中。分配器可以管理由硬件發(fā)出的任何中 斷。此外,分配器不需要知道與作業(yè)的類(lèi)型或硬件部件的類(lèi)型相關(guān)的信息。驅(qū)動(dòng)器可以以各種方式與分配器交互,該分配器操作圖18和圖19示出的管理分 組的過(guò)程的實(shí)施例的過(guò)程。例如,過(guò)程1900代表了驅(qū)動(dòng)器的過(guò)程(簡(jiǎn)化的形式)。過(guò)程 1900包括接收分組;確定是否需要硬件加速;如需要?jiǎng)t將分組置于分配器隊(duì)列中;確定是 否完成了硬件加速;處理完成的分組。在模塊1910中接收分組。在模塊1920中,確定分組是否需要硬件加速(例如密 碼加速或圖形加速)。如果是的話(huà),則在模塊1930中,驅(qū)動(dòng)器將分組置于分配器的隊(duì)列中 (分配器的作業(yè)的入站隊(duì)列)。隨后,分組可預(yù)期得到硬件加速處理,而不考慮到來(lái)的分組。如果無(wú)需加速,或在將分組置入隊(duì)列后,在模塊1940中,確定對(duì)分組的硬件加速 是否完成。需要注意的是,在模塊1940中所確定的分組無(wú)需和在模塊1910中接收的分組相 同,例如,前者可以是在模塊1910中先前接收的分組。如果對(duì)分組的硬件加速已經(jīng)完成了,則在模塊1950中,通過(guò)例如將完成的分組傳輸給周邊系統(tǒng)的另一部分,來(lái)對(duì)完成的分組進(jìn) 行處理。最后,過(guò)程返回到模塊1910,以等待另一個(gè)分組的接收。需要注意的是,對(duì)來(lái)自硬件部件的完成的分組的檢測(cè)可以作為單獨(dú)過(guò)程的一部分 而出現(xiàn)。因此,模塊1940可以由驅(qū)動(dòng)器分開(kāi)實(shí)現(xiàn)。此外,在檢查由硬件加速器完成的分組 時(shí),多個(gè)分組可以等待驅(qū)動(dòng)器,從而能夠?qū)Χ鄠€(gè)分組進(jìn)行處理。另外,無(wú)需硬件加速的分組 可以立即被處理,而不用例如檢查完成的硬件加速。各種系統(tǒng)可以采用或執(zhí)行所述的方法來(lái)管理硬件加速。圖20示出了管理分組的 系統(tǒng)堆棧的實(shí)施例。堆棧2000是系統(tǒng)堆棧,后者包括軟件和硬件部件(或軟件和硬件接口 的軟件實(shí)現(xiàn))。堆棧200包括tls/ssl部件2005和ssh/ire部件2010,其均可以是例如驅(qū) 動(dòng)器。特別的是,部件2005可以是例如插口(socket)驅(qū)動(dòng)器。部件2005和2010覆蓋于 tcp部件2020上。Tcp部件2020可以是例如傳輸控制協(xié)議部件。Tcp部件2020覆蓋于ip部件2030上,后者可以是例如互聯(lián)網(wǎng)協(xié)議模塊。Ip部件 2030覆蓋于ipsec部件2040 (例如ip安全部件)上。在某些實(shí)施例中Ipsec部件2040覆 蓋于ip分段(fragmentation)部件2050上。Ip分段部件2050覆蓋于以太網(wǎng)驅(qū)動(dòng)器部件 2060 上。以太網(wǎng)驅(qū)動(dòng)器部件2060覆蓋于分配器模塊2070上,后者可以是例如硬件模塊的 分配器。在堆棧2000的底部是硬件2080,后者包括密碼加速器2085和/或其它硬件加速 部件或模塊等等。在某些實(shí)施例中可以將堆棧2000理解為占據(jù)了系統(tǒng)中三個(gè)不同的區(qū)域。部件 2005,2010和2020是系統(tǒng)的應(yīng)用空間或用戶(hù)空間的一部分。部件2030、2040、2050和2060 是系統(tǒng)核心空間的一部分。部件2070、2080和2085是系統(tǒng)固件/硬件部分的一部分。此 外,需要注意的是,上述的覆蓋還可以指各種部件和數(shù)據(jù)路徑指示之間的接口,而不是指例 如物理上的覆蓋或堆疊。人們期望諸如驅(qū)動(dòng)器2005之類(lèi)的驅(qū)動(dòng)器和諸如加速器2085之類(lèi)的硬件加速器之 間的通信,從而無(wú)需驅(qū)動(dòng)器2005等待響應(yīng)。圖21示出了包括硬件加速的用于管理分組的 系統(tǒng)的實(shí)施例。在這些部件之間,當(dāng)監(jiān)控到中斷時(shí),分配器2070對(duì)一個(gè)或多個(gè)隊(duì)列進(jìn)行處 理。因此,驅(qū)動(dòng)器2005無(wú)需等待硬件中斷,當(dāng)有作業(yè)時(shí)加速器2085即可接收到作業(yè)。
0107]分配器2070包括中斷處理機(jī)2075,后者監(jiān)控加速器2085的中斷。加速器2085在 作業(yè)完成或檢測(cè)到無(wú)作業(yè)要管理時(shí),發(fā)出中斷。分配器2070隨后從諸如隊(duì)列2110之類(lèi)的 入站作業(yè)隊(duì)列中檢查入站作業(yè)。分配器2070例如通過(guò)還檢查入站作業(yè)隊(duì)列2140,從而在多 個(gè)隊(duì)列中檢查入站作業(yè)。此外,分配器2070可以以各種方式區(qū)分來(lái)自多個(gè)隊(duì)列中的作業(yè)的 優(yōu)先級(jí)。此外,分配器2070可以將完成的作業(yè)(或其表征)置于出站作業(yè)隊(duì)列中,例如出 站隊(duì)列2120或2150。將多個(gè)入站隊(duì)列和出站隊(duì)列予以配對(duì),例如一個(gè)驅(qū)動(dòng)器對(duì)應(yīng)著一個(gè)入 站隊(duì)列和一個(gè)出站隊(duì)列。從而,將來(lái)自入站隊(duì)列中的作業(yè),在經(jīng)過(guò)處理后,放入對(duì)應(yīng)的出站 隊(duì)列中。例如,提供隊(duì)列2110和2120來(lái)用于和驅(qū)動(dòng)器2005進(jìn)行通信。驅(qū)動(dòng)器2005可以檢查來(lái)自各種信道的到來(lái)分組,如信道結(jié)構(gòu)2130所表示的那樣。 信道結(jié)構(gòu)2130可以是一組信道,例如圖11和12所示。因此,當(dāng)來(lái)自多個(gè)信道的數(shù)據(jù)到來(lái) 時(shí),驅(qū)動(dòng)器2005可以處理該數(shù)據(jù),并將數(shù)據(jù)指示給硬件加速器2085,以按需進(jìn)行處理。信道結(jié)構(gòu)2130可以具有,例如,自由和活動(dòng)的列表,這些列表由驅(qū)動(dòng)器2005維護(hù),從而指明所示 的信道在當(dāng)時(shí)是否采用由驅(qū)動(dòng)器2005所監(jiān)視的通信方法。在一個(gè)實(shí)施例中,驅(qū)動(dòng)器2005和分配器2070之間的下列規(guī)則適用于該系統(tǒng)只有驅(qū)動(dòng)器2005可以將作業(yè)加入隊(duì)列2110中。只有分配器2070可以從隊(duì)列2110 (硬件調(diào)度表)中讀取作業(yè)。只有分配器2070可以響應(yīng)于中斷處理機(jī)2075而使用完成的作業(yè)或作業(yè)標(biāo)識(shí)符來(lái) 更新隊(duì)列2120。只有驅(qū)動(dòng)器2005可以讀取隊(duì)列2120 (硬件完成)。只有驅(qū)動(dòng)器2005可以訪(fǎng)問(wèn)信道列表/結(jié)構(gòu)2130。因此,驅(qū)動(dòng)器2005負(fù)責(zé)擴(kuò)充隊(duì)列2110 (并避免溢出)。分配器2070負(fù)責(zé)擴(kuò)充隊(duì)列 2120。驅(qū)動(dòng)器2005也可以負(fù)責(zé)防止隊(duì)列2120的溢出。將分配器2070與作業(yè)源自的信道 隔開(kāi),并將驅(qū)動(dòng)器2005與硬件加速器的硬件中斷隔開(kāi)。此外,需要注意的是,隊(duì)列2120 (和 例如隊(duì)列2150)可以在信息中包括,例如,作業(yè)數(shù)據(jù)或作業(yè)的表示(例如cookie),以及可以 找到完成的作業(yè)數(shù)據(jù)的有關(guān)信息。傳遞給分配器的作業(yè)可以具有多樣的形式。圖22示出了作業(yè)表示的實(shí)施例。將 作業(yè)2200表示為包括驅(qū)動(dòng)器上下文2220和周邊系統(tǒng)上下文2210。因此,系統(tǒng)上下文2210 可以是由周邊系統(tǒng)提供的包裝(wrapper),從而例如使分配器能夠進(jìn)行處理。此外,載荷可 以是驅(qū)動(dòng)器上下文2220的一部分,或者作業(yè)2200的一個(gè)分離(未示出)的部分。分配器 可以以已知方式從作業(yè)中提取有待進(jìn)行處理的數(shù)據(jù),并基于兩個(gè)上下文使作業(yè)回到合適的 目的地。此外,作業(yè)的附加處理參數(shù)可以包括于這兩個(gè)上下文中的一個(gè)或兩個(gè)內(nèi)。驅(qū)動(dòng)器 上下文2220也可以包括相關(guān)于驅(qū)動(dòng)器的信道信息??梢允褂眯诺?作業(yè)源自其中)列表的各種表示。圖23示出了信道列表的實(shí)施 例。結(jié)構(gòu)2300是信道的列表和相關(guān)于該列表的一組指針。信道列表2350包括一組例如可 以在圖11或12中發(fā)現(xiàn)的信道。自由指針2310指向自由信道列表中的第一個(gè)信道,例如, 可以分配這些自由信道用于通信目的?;顒?dòng)指針2320指向活動(dòng)信道列表中的第一個(gè)信道, 這些信道在此時(shí)是活動(dòng)的或正在通信。如圖所示,這兩個(gè)列表都是信道的鏈表。作為對(duì)比, 信道列表2350可以是信道陣列。硬件加速列表2330是指向第一信道的指針,該第一信道正在經(jīng)歷或等待硬件加 速。這些就是由于各種原因需要硬件加速的活動(dòng)信道。例如,這些信道均在分配器的入站 作業(yè)隊(duì)列中有相關(guān)的一個(gè)作業(yè)(或多個(gè)作業(yè))。如圖所示,盡管簡(jiǎn)單的鏈表就已經(jīng)足夠了, 但此列表是循環(huán)隊(duì)列。而且,在所示的實(shí)施例中,硬件加速器指針2340所指向的信道相關(guān) 于當(dāng)前正由硬件加速器處理的作業(yè)(需要注意的是,此信道并不一定是由指針2330所指向 的信道)?;谛诺罓顟B(tài),可以在各種列表之間快速地移動(dòng)信道。結(jié)合通信信道工作的驅(qū)動(dòng)器也可以具有各種結(jié)構(gòu)。圖24示出了驅(qū)動(dòng)器的表示的 實(shí)施例。驅(qū)動(dòng)器2400包括典型的驅(qū)動(dòng)器結(jié)構(gòu)2420 (例如,提供的驅(qū)動(dòng)器用于系統(tǒng)或設(shè)備) 和包裹驅(qū)動(dòng)器的系統(tǒng)結(jié)構(gòu)2410。系統(tǒng)結(jié)構(gòu)2410可以提供驅(qū)動(dòng)器2420和系統(tǒng)其余部分之間 的接口。但是,需要理解的是,盡管驅(qū)動(dòng)器2400包括系統(tǒng)特定的部件,但其可以是周邊系統(tǒng) 中的驅(qū)動(dòng)器。驅(qū)動(dòng)器2400隨后可以跟分配器和周邊系統(tǒng)的其它部分交互。例如,多個(gè)驅(qū)動(dòng)器可以與分配器交互。圖25示出了包括分配器和一組驅(qū)動(dòng)器的系統(tǒng)的實(shí)施例。分配系統(tǒng)2500包括帶有中斷處理機(jī)2515的分配器2510。其還包括三個(gè)隊(duì) 列(2525,2535和2545),這三個(gè)隊(duì)列均對(duì)應(yīng)于驅(qū)動(dòng)器(相應(yīng)的2520、2530和2540)。在所 示的系統(tǒng)中,驅(qū)動(dòng)器2520是ssl驅(qū)動(dòng)器,驅(qū)動(dòng)器2230是ssh驅(qū)動(dòng)器,驅(qū)動(dòng)器2240是ipsec 驅(qū)動(dòng)器。需要注意的是,為了便于說(shuō)明,圖中只示出了出站隊(duì)列。在各個(gè)實(shí)例中,可以預(yù)料 到,還存在相對(duì)應(yīng)的入站隊(duì)列。雖然可以用多種方式實(shí)現(xiàn)隊(duì)列,但迄今為止所示的這些隊(duì)列是簡(jiǎn)單鏈表。圖26示 出了作業(yè)列表的替代實(shí)施例。緩沖器2600是組織成陣列2610的一組作業(yè),陣列2610可 以作用為循環(huán)fifo緩沖器或隊(duì)列。緩沖器2600還包括分配器頭指針2620、驅(qū)動(dòng)器尾指針 2630和分配器尾指針2640。在一個(gè)實(shí)施例中,驅(qū)動(dòng)器尾指針2630指向當(dāng)前正由硬件加速器處理的作業(yè)。相似 地,分配器頭指針2620指向可以將新作業(yè)加入隊(duì)列的位置。此外,分配器尾指針2640指向 將由硬件加速器處理的下一個(gè)作業(yè)(以及其后的作業(yè))。因此,指針2620、2630和2640可 以沿著陣列2610前進(jìn),從而實(shí)現(xiàn)對(duì)入站作業(yè)(以及可能還有出站作業(yè))的訪(fǎng)問(wèn)。如上所說(shuō)明和描述的那樣,使用了單個(gè)硬件加速模塊。然而,多硬件加速模塊可以 包括于系統(tǒng)內(nèi)并在處理分組時(shí)使用。圖27示出了包括硬件加速的管理分組所用的系統(tǒng)的 替代實(shí)施例。系統(tǒng)2700包括分配器、一組硬件加速模塊和入站以及出站隊(duì)列。在各種實(shí)施 例中,加速模塊可以包括例如圖形加速器、密碼加速器、霍夫曼(Huffman)編碼譯碼加速器 和其它加速模塊。分配器2710包括中斷處理機(jī)2715,后者監(jiān)視加速器2720、2730和2740的中斷。 當(dāng)作業(yè)完成或檢測(cè)到無(wú)作業(yè)可管理時(shí),加速器2720、2730和2740會(huì)發(fā)出中斷。分配器2710 隨后在如隊(duì)列2750之類(lèi)的一個(gè)入站作業(yè)隊(duì)列中檢查入站作業(yè)。分配器2710可以在多個(gè)隊(duì) 列中檢查入站作業(yè),例如還檢查入站作業(yè)隊(duì)列2770。此外,分配器2710可以以多種方式為 多個(gè)隊(duì)列中的作業(yè)劃分優(yōu)先級(jí)。在某些實(shí)施例中,硬件加速器2720、2730和2740均為同樣類(lèi)型的加速器,從而能 夠?yàn)槿魏巫鳂I(yè)置換任何加速器——這意味著總可以把下一個(gè)加速器安置給下一個(gè)作業(yè)。在 其它實(shí)施例中,加速器2720、2730和2740屬于多種不同類(lèi)型。在某些這種實(shí)施例中,當(dāng)硬 件加速器可用時(shí),分配器2710可以搜索入站作業(yè)隊(duì)列來(lái)尋找適合的作業(yè)。在其它這種實(shí)施 例中,由于在分配器2710隊(duì)列的末端沒(méi)有作業(yè),則在這種情況改變之前,都會(huì)致使硬件模 塊處于空閑狀態(tài)。分配器2710還可以將完成的作業(yè)(或其表示)置于出站作業(yè)隊(duì)列(例如出站隊(duì) 列2760或2780)中。將多個(gè)入站和出站隊(duì)列予以配對(duì),例如一個(gè)驅(qū)動(dòng)器對(duì)應(yīng)有一個(gè)入站隊(duì) 列和一個(gè)出站隊(duì)列。從而,將來(lái)自入站隊(duì)列中的作業(yè),在經(jīng)過(guò)處理后,置入對(duì)應(yīng)的出站隊(duì)列 中。例如,提供隊(duì)列2750和2760來(lái)用于和單獨(dú)的驅(qū)動(dòng)器進(jìn)行通信。從以上描述可以看出,本文所述的本發(fā)明具體實(shí)施例僅用于說(shuō)明的目的,在不背 離本發(fā)明的精神和保護(hù)范圍的前提下可以對(duì)其進(jìn)行各式各樣的修改。在某些實(shí)例中,引 用了在不同或某些實(shí)施例中可能出現(xiàn)的特征,但這些特征并不限制本發(fā)明的精神和保護(hù)范 圍。在說(shuō)明和描述中,所給出的結(jié)構(gòu)也可以在本發(fā)明的精神和保護(hù)范圍內(nèi)以其他方式形成 或重組。此外,通常來(lái)說(shuō),一個(gè)實(shí)施例的特征可用于本文中所提及的其它實(shí)施例,只要這些 特征并不以某種方式相互排斥即可。
15
特別的是,各種框圖的分離模塊表示方法或裝置的功能模塊,這些各種框圖的分 離模塊并不是指本發(fā)明精神和保護(hù)范圍的操作順序、或者物理或邏輯上的分離。相似地,所 描述和說(shuō)明的方法是線(xiàn)性過(guò)程,但在本發(fā)明的精神和保護(hù)范圍內(nèi),也可以用并行方式重排 列或?qū)崿F(xiàn)這些方法的操作。因此,本發(fā)明僅由權(quán)利要求書(shū)界定。
權(quán)利要求
一種維護(hù)信道的自由列表的方法,該方法包括接收信道請(qǐng)求;提供來(lái)自該自由列表的第一信道標(biāo)識(shí)符,該自由列表具有起始指針和末端指針;更新該起始指針,以指向該自由列表的下一個(gè)信道;接收信道超時(shí)提示;將超時(shí)信道添加到該自由列表的末端;以及更新該末端指針,以指向該自由列表的末端。
2.—種處理信道消息的密碼操作的方法,該方法包括 接收加密的消息;使用消息長(zhǎng)度和類(lèi)型、消息編碼和封裝類(lèi)型、一個(gè)或多個(gè)資源隊(duì)列等待時(shí)間、資源的狀 態(tài)和資源的容量,確定要應(yīng)用哪些密碼資源; 將該消息放在選擇的密碼資源中; 應(yīng)用該選擇的密碼資源;以及 在信道上傳遞解密的消息。
全文摘要
本發(fā)明涉及一種維護(hù)信道的自由列表的方法,該方法包括接收信道請(qǐng)求;提供來(lái)自該自由列表的第一信道標(biāo)識(shí)符,該自由列表具有起始指針和末端指針;更新該起始指針,以指向該自由列表的下一個(gè)信道;接收信道超時(shí)提示;將超時(shí)信道添加到該自由列表的末端;以及更新該末端指針,以指向該自由列表的末端。本發(fā)明還涉及一種處理信道消息的密碼操作的方法。
文檔編號(hào)H04L12/56GK101877674SQ20101018096
公開(kāi)日2010年11月3日 申請(qǐng)日期2005年7月29日 優(yōu)先權(quán)日2004年7月30日
發(fā)明者詹姆斯·布萊斯德?tīng)? 阿德里安·特納 申請(qǐng)人:莫克納公司