專(zhuān)利名稱(chēng):網(wǎng)絡(luò)過(guò)濾驅(qū)動(dòng)器的構(gòu)造和運(yùn)行環(huán)境的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及過(guò)濾數(shù)據(jù)包。尤其是,本發(fā)明涉及用于一種抽象接口的系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品,以便管理將過(guò)濾器實(shí)例插入過(guò)濾器棧、從過(guò)濾器棧中除去過(guò)濾器實(shí)例,以及回避過(guò)濾器實(shí)例的功能性,而不中斷有關(guān)的協(xié)議棧操作。
背景技術(shù):
在當(dāng)今世界,大量的計(jì)算機(jī)通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)(例如,互聯(lián)網(wǎng))而彼此耦合,這使各臺(tái)計(jì)算機(jī)能夠交換數(shù)據(jù)。但是,這些計(jì)算機(jī)中的大多數(shù)計(jì)算機(jī)的耦合關(guān)系并不是直接的一對(duì)一的關(guān)系。相反,這些計(jì)算機(jī)通常處于多臺(tái)計(jì)算機(jī)被互連的網(wǎng)絡(luò)環(huán)境中,每臺(tái)計(jì)算機(jī)都可以與網(wǎng)絡(luò)中的所有其他的計(jì)算機(jī)交換數(shù)據(jù)。隨著被耦合到傳統(tǒng)網(wǎng)絡(luò)的計(jì)算機(jī)的數(shù)量的增加,通過(guò)這類(lèi)網(wǎng)絡(luò)而被轉(zhuǎn)移的數(shù)據(jù)的數(shù)量也增長(zhǎng)了。結(jié)果,開(kāi)發(fā)了一些用于通過(guò)計(jì)算機(jī)網(wǎng)絡(luò)來(lái)有效、可靠地轉(zhuǎn)移數(shù)據(jù)的技術(shù)。
促進(jìn)數(shù)據(jù)通過(guò)網(wǎng)絡(luò)來(lái)被有效轉(zhuǎn)移的一種技術(shù)是“分包”(“packetizing”)。通過(guò)分包技術(shù),大量數(shù)據(jù)被分成較小的段或“包”。與龐大的數(shù)據(jù)相比,包所要求的用于處理的資源較少。此外,通過(guò)使用包,可以用遞增的方式來(lái)接收數(shù)據(jù),這樣,當(dāng)傳輸中發(fā)生錯(cuò)誤時(shí),必須被重新發(fā)送的數(shù)據(jù)的數(shù)量減少了。
另一種技術(shù)是使用“開(kāi)放式系統(tǒng)互聯(lián)”(“OSI”)模型,該技術(shù)定義用于執(zhí)行通信協(xié)議的聯(lián)網(wǎng)結(jié)構(gòu)。OSI模型中將數(shù)據(jù)轉(zhuǎn)移操作分入七個(gè)不同的“層”中進(jìn)行,每個(gè)層被指定執(zhí)行數(shù)據(jù)轉(zhuǎn)移過(guò)程中的某些操作。雖然一些聯(lián)網(wǎng)應(yīng)用程序已實(shí)現(xiàn)了每個(gè)層,但是,許多應(yīng)用程序只實(shí)現(xiàn)用于通過(guò)網(wǎng)絡(luò)來(lái)轉(zhuǎn)移數(shù)據(jù)的選擇性層。由多數(shù)協(xié)議棧中引入的兩個(gè)層是傳輸層和數(shù)據(jù)鏈路層。傳輸層通常與分包的數(shù)據(jù)有關(guān)。傳輸層協(xié)議的一個(gè)例子是“傳輸控制協(xié)議” (“TCP”)。數(shù)據(jù)鏈路層通常與將位編碼成包以及將包解碼成位有關(guān)。
將數(shù)據(jù)從計(jì)算機(jī)設(shè)備發(fā)送到網(wǎng)絡(luò)通常包括為龐大的數(shù)據(jù)分包的一個(gè)傳輸層驅(qū)動(dòng)器、將包解碼成位的一個(gè)數(shù)據(jù)鏈路層驅(qū)動(dòng)器,以及將位傳輸?shù)骄W(wǎng)絡(luò)上的網(wǎng)絡(luò)硬件(例如,網(wǎng)卡)。從網(wǎng)絡(luò)接收數(shù)據(jù)的計(jì)算機(jī)設(shè)備通常包括按相反順序進(jìn)行的這些操作。也就是說(shuō),硬件設(shè)備接收位,數(shù)據(jù)鏈路層驅(qū)動(dòng)器將位編碼成包,這些包被發(fā)送到傳輸層驅(qū)動(dòng)器,進(jìn)而結(jié)合成龐大的數(shù)據(jù)。當(dāng)將包解碼成分派給網(wǎng)絡(luò)硬件的位時(shí),以及當(dāng)將位編碼成分派給傳輸層協(xié)議的包時(shí),數(shù)據(jù)鏈路層驅(qū)動(dòng)器可以對(duì)數(shù)據(jù)執(zhí)行特殊的操作。這是有利的,因?yàn)閿?shù)據(jù)在被發(fā)送到網(wǎng)絡(luò)上或被發(fā)送到更高層次的協(xié)議之前可能需要進(jìn)行修改。
過(guò)去,為某個(gè)特殊的平臺(tái)編寫(xiě)或指定數(shù)據(jù)鏈路層驅(qū)動(dòng)器,以促進(jìn)數(shù)據(jù)的兼容轉(zhuǎn)移。隨著協(xié)議和硬件設(shè)備類(lèi)型的數(shù)量的激增,這導(dǎo)致了一些問(wèn)題的產(chǎn)生。要?jiǎng)h除、添加或修改數(shù)據(jù)鏈路層驅(qū)動(dòng)器所執(zhí)行的操作,必須完全重寫(xiě)驅(qū)動(dòng)器。重寫(xiě)數(shù)據(jù)鏈路層驅(qū)動(dòng)器的成本十分昂貴,涉及高水平的專(zhuān)門(mén)技術(shù),經(jīng)常會(huì)造成現(xiàn)有硬件的荒廢或使這類(lèi)硬件的用戶放棄被增強(qiáng)的功能性。此外,當(dāng)計(jì)算機(jī)系統(tǒng)內(nèi)存在多個(gè)數(shù)據(jù)鏈路層驅(qū)動(dòng)器時(shí),各種數(shù)據(jù)鏈路層驅(qū)動(dòng)器中所包括的功能可能會(huì)變成多余,卻仍要求一些適當(dāng)?shù)牟僮鳌?br>
結(jié)果,在協(xié)議棧的數(shù)據(jù)鏈路層方面,開(kāi)發(fā)了一些其他的方法,用于對(duì)數(shù)據(jù)執(zhí)行操作。一種這類(lèi)的方法是“IP防火墻鉤”,用于當(dāng)數(shù)據(jù)包在協(xié)議棧的數(shù)據(jù)鏈路層與傳輸層之間傳遞時(shí)“鉤住”這些數(shù)據(jù)包。鉤住包的好處在于可以容易地執(zhí)行數(shù)據(jù)監(jiān)控功能,例如,檢查包的起源地址,以確定應(yīng)該對(duì)包進(jìn)行處理還是放棄。但是,鉤住包的好處也有限,因?yàn)榭赡軣o(wú)法修改包并將其插回到數(shù)據(jù)流中。另外,還開(kāi)發(fā)了與鉤住包不相兼容的其他更現(xiàn)代的聯(lián)網(wǎng)技術(shù)。例如,IP防火墻鉤不能與普遍使用的“互聯(lián)網(wǎng)連接共享”技術(shù)共同操作。
用于對(duì)通過(guò)協(xié)議棧的數(shù)據(jù)鏈路層的數(shù)據(jù)包執(zhí)行操作的另一種方法是使用“中間驅(qū)動(dòng)器”。中間驅(qū)動(dòng)器介于傳輸層與數(shù)據(jù)鏈路層之間,可以執(zhí)行傳統(tǒng)的數(shù)據(jù)監(jiān)控和其他更先進(jìn)的過(guò)濾功能(例如,數(shù)據(jù)壓縮和加密)。中間驅(qū)動(dòng)器允許為協(xié)議棧添加功能性或刪除功能性,而不必重寫(xiě)根本的鏈接層設(shè)備驅(qū)動(dòng)器。此外,可以對(duì)多個(gè)中間驅(qū)動(dòng)器進(jìn)行分層,以便對(duì)通過(guò)數(shù)據(jù)鏈路層的數(shù)據(jù)執(zhí)行一系列功能。
與IP防火墻鉤相比,中間驅(qū)動(dòng)器所提供的功能性增加了,但是,中間驅(qū)動(dòng)器存在某些固有的問(wèn)題。中間驅(qū)動(dòng)器的安裝和配置經(jīng)常涉及合并來(lái)自一個(gè)操作系統(tǒng)部件(例如,注冊(cè)表)的數(shù)據(jù)或?qū)?shù)據(jù)提供給一個(gè)操作系統(tǒng)部件(例如,注冊(cè)表)。其中有中間驅(qū)動(dòng)器處理操作系統(tǒng)數(shù)據(jù)的過(guò)濾環(huán)境是有害的,這至少有兩個(gè)原因。
從協(xié)議棧安裝或除去中間驅(qū)動(dòng)器可能會(huì)要求拆卸和重建該協(xié)議棧。這可能會(huì)導(dǎo)致必須重建協(xié)議棧,以便添加中間驅(qū)動(dòng)器的功能性。同樣,如果編寫(xiě)數(shù)據(jù)的中間驅(qū)動(dòng)器不被重建,則會(huì)使協(xié)議棧發(fā)生故障。拆卸和重建協(xié)議??赡馨ㄖ匦聠?dòng)計(jì)算機(jī)系統(tǒng),以便為中間驅(qū)動(dòng)器對(duì)數(shù)據(jù)進(jìn)行適當(dāng)?shù)某跏蓟?。此外,在某些情況下,在所安裝的中間驅(qū)動(dòng)器被激活之后,它可能只需要觀察網(wǎng)絡(luò)數(shù)據(jù)。但是,即使中間驅(qū)動(dòng)器處于不活動(dòng)的狀態(tài),它也將保持被安裝并使用各種寶貴的操作系統(tǒng)資源,因而使網(wǎng)絡(luò)性能退化。
所以,我們需要的是一些系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品,用于按節(jié)約處理資源和網(wǎng)絡(luò)資源的方式來(lái)有效地過(guò)濾數(shù)據(jù)包并改變過(guò)濾操作。
發(fā)明內(nèi)容
本發(fā)明的原理用于有效地過(guò)濾數(shù)據(jù)包和改變過(guò)濾操作。計(jì)算機(jī)設(shè)備中所包括的協(xié)議棧與可能包括一個(gè)或多個(gè)過(guò)濾器實(shí)例的過(guò)濾器棧有關(guān)。與協(xié)議棧有關(guān)的數(shù)據(jù)包通過(guò)過(guò)濾器實(shí)例,這些過(guò)濾器實(shí)例可以對(duì)該數(shù)據(jù)包執(zhí)行過(guò)濾操作。過(guò)濾器實(shí)例可以被插入過(guò)濾器?;驈倪^(guò)濾器棧中被除去,所采用的方式減少了中斷有關(guān)的協(xié)議棧的可能性。
此外,可以根據(jù)數(shù)據(jù)包和/或配置參數(shù)的特征來(lái)回避與過(guò)濾器實(shí)例有關(guān)的過(guò)濾操作??梢杂酶鞣N方式來(lái)回避過(guò)濾操作。當(dāng)包完全避開(kāi)與通信路徑(例如,數(shù)據(jù)路徑或控制路徑)有關(guān)的過(guò)濾器實(shí)例時(shí),可以回避過(guò)濾操作。當(dāng)不對(duì)所接收的數(shù)據(jù)包執(zhí)行過(guò)濾器實(shí)例內(nèi)部的一項(xiàng)或多項(xiàng)過(guò)濾操作時(shí),也可以回避過(guò)濾操作。抽象接口通過(guò)調(diào)用過(guò)濾驅(qū)動(dòng)器來(lái)管理過(guò)濾器棧,這些過(guò)濾驅(qū)動(dòng)器促進(jìn)動(dòng)態(tài)地插入和除去對(duì)應(yīng)于該過(guò)濾器棧的過(guò)濾器實(shí)例。
當(dāng)過(guò)濾器實(shí)例被插入過(guò)濾器棧時(shí),過(guò)濾驅(qū)動(dòng)器可以從抽象接口接收參數(shù)。這些參數(shù)有助于過(guò)濾器實(shí)例的配置,以執(zhí)行過(guò)濾操作。可以對(duì)過(guò)濾器實(shí)例進(jìn)行配置,以便根據(jù)被輸入的數(shù)據(jù)包的特征來(lái)執(zhí)行不同的過(guò)濾操作。例如,一個(gè)過(guò)濾器??赡軙?huì)既過(guò)濾“互聯(lián)網(wǎng)協(xié)議” (“IP”)包,又過(guò)濾“網(wǎng)絡(luò)分組交換”(“IPX”)包。如果合適的話,不管數(shù)據(jù)是被包括在IP包中還是被包括在IPX包中,這些參數(shù)都可能會(huì)使過(guò)濾器實(shí)例執(zhí)行相同的處理。此外,如果合適的話,這些參數(shù)也可能會(huì)根據(jù)數(shù)據(jù)是被包括在IP包中還是被包括在IPX包中,來(lái)使過(guò)濾器實(shí)例執(zhí)行類(lèi)似(但有些不同)的處理。
較之于每個(gè)傳輸使用一個(gè)實(shí)例,所有傳輸使用一個(gè)單個(gè)的過(guò)濾器棧來(lái)過(guò)濾數(shù)據(jù)包,可以減少由計(jì)算機(jī)設(shè)備配置和保持的過(guò)濾器實(shí)例的數(shù)量。這減少了過(guò)濾器棧將被配置多余邏輯的可能性,因此也降低了與過(guò)濾數(shù)據(jù)包有關(guān)的操作的復(fù)雜程度。
當(dāng)抽象接口促進(jìn)將新的過(guò)濾器實(shí)例插入操作的過(guò)濾器棧時(shí),它可能首先通知有關(guān)的協(xié)議棧將要暫停使用當(dāng)前的過(guò)濾器棧。然后,抽象接口可能會(huì)暫停使用過(guò)濾器棧。暫停使用過(guò)濾器??赡軙?huì)涉及調(diào)用與當(dāng)前過(guò)濾器棧中的每個(gè)過(guò)濾器實(shí)例有關(guān)的“暫?!蹦K。一旦所有的過(guò)濾器實(shí)例都被暫停使用,就可以將新的過(guò)濾器實(shí)例插入過(guò)濾器棧中的適當(dāng)?shù)奈恢?。然后,抽象接口可以通知所有協(xié)議過(guò)濾器棧將被啟動(dòng),它包括最新添加的過(guò)濾器實(shí)例的功能性。然后,可以啟動(dòng)新的過(guò)濾器棧。這可能會(huì)涉及調(diào)用與新的過(guò)濾器棧中的每個(gè)過(guò)濾器模塊有關(guān)的“啟動(dòng)”模塊。
當(dāng)將過(guò)濾器實(shí)例插入過(guò)濾器棧時(shí),抽象接口可以將參數(shù)(包括一個(gè)“過(guò)濾器句柄”)發(fā)送到有關(guān)的過(guò)濾驅(qū)動(dòng)器。過(guò)濾器句柄實(shí)質(zhì)上是一個(gè)返回地址,過(guò)濾驅(qū)動(dòng)器可以使用該返回地址將與過(guò)濾器實(shí)例有關(guān)的數(shù)據(jù)傳送到抽象接口。通過(guò)使用所接收的參數(shù),過(guò)濾驅(qū)動(dòng)器可以創(chuàng)建“過(guò)濾器上下文”,并為有關(guān)的過(guò)濾器實(shí)例分配資源。然后,可以將有關(guān)的過(guò)濾器實(shí)例的過(guò)濾器上下文傳送到抽象接口。過(guò)濾器上下文實(shí)質(zhì)上是抽象接口可用來(lái)將數(shù)據(jù)傳送到與對(duì)應(yīng)的過(guò)濾器實(shí)例有關(guān)的過(guò)濾驅(qū)動(dòng)器的返回地址。
可以根據(jù)所接收的參數(shù)來(lái)將過(guò)濾器實(shí)例插入過(guò)濾器棧。過(guò)濾驅(qū)動(dòng)器可以將狀況代碼發(fā)送到抽象接口,指出嘗試將過(guò)濾器實(shí)例插入過(guò)濾器棧的各種結(jié)果。通過(guò)使用不同的過(guò)濾器句柄,可以將同一個(gè)過(guò)濾器的多個(gè)獨(dú)立的過(guò)濾器實(shí)例安裝到過(guò)濾器棧中??梢杂靡环N方式來(lái)執(zhí)行所有這些操作,該方式減少了拆卸有關(guān)的協(xié)議棧或重置有關(guān)的操作系統(tǒng)的可能性。
在數(shù)據(jù)實(shí)際轉(zhuǎn)移期間,過(guò)濾器實(shí)例可以根據(jù)其所接收的一個(gè)被輸入的數(shù)據(jù)包的特征來(lái)執(zhí)行一些(而不是全部)有關(guān)的內(nèi)部過(guò)濾操作。例如,當(dāng)過(guò)濾器實(shí)例收到一個(gè)IP包時(shí),它可以執(zhí)行某些過(guò)濾操作;如果過(guò)濾器實(shí)例收到一個(gè)IPX包,則不會(huì)執(zhí)行這些過(guò)濾操作。過(guò)濾器實(shí)例也可以被配置成用“回避”模式進(jìn)行操作,其中,包完全回避與通信路徑(例如,數(shù)據(jù)路徑或控制路徑)有關(guān)的過(guò)濾器實(shí)例。由于不使用處理器資源來(lái)執(zhí)行無(wú)關(guān)的過(guò)濾操作,因此,這提高了過(guò)濾過(guò)程的效率。
本發(fā)明的額外的特點(diǎn)和優(yōu)點(diǎn)將在下文中加以陳述,其部分內(nèi)容將從描述中顯而易見(jiàn),或可以通過(guò)實(shí)踐本發(fā)明而得知??梢岳盟綑?quán)利要求中所特別指出的工具和組合裝置來(lái)實(shí)現(xiàn)并獲得本發(fā)明的各種特點(diǎn)和優(yōu)點(diǎn)。通過(guò)以下描述和所附權(quán)利要求,將更加清楚本發(fā)明的這些和其他的特點(diǎn),或者,可以通過(guò)實(shí)踐如下文所述的本發(fā)明來(lái)對(duì)其加以了解。
為了描述本發(fā)明上述和其他的優(yōu)點(diǎn)與特點(diǎn)的獲得方式,將參考附圖中所展示的本發(fā)明的特殊實(shí)施例,來(lái)對(duì)以上作簡(jiǎn)要描述的本發(fā)明進(jìn)行更加詳細(xì)的描述。不言而喻,這些附圖只描繪本發(fā)明的典型實(shí)施例,因此,它們不被認(rèn)為是本發(fā)明范圍的限制。將通過(guò)使用附圖來(lái)更加確切、詳細(xì)地描述和解釋本發(fā)明。在這些附圖中圖1展示了為本發(fā)明提供合適的操作環(huán)境的一種示例處理系統(tǒng)。
圖2A展示了一些功能性部件的一個(gè)例子,這些功能性部件可以促進(jìn)將過(guò)濾器實(shí)例插入過(guò)濾器棧。
圖2B展示了一些交互過(guò)程的一個(gè)例子,這些交互過(guò)程可能發(fā)生在各個(gè)功能性部件之間,以促進(jìn)將過(guò)濾器實(shí)例插入過(guò)濾器棧。
圖2C展示了一些功能性部件的一個(gè)例子,這些功能性部件可以促進(jìn)回避與過(guò)濾器實(shí)例有關(guān)的過(guò)濾操作。
圖3是流程圖,展示了用于將過(guò)濾器實(shí)例插入過(guò)濾器棧的方法的一個(gè)例子。
圖4是流程圖,展示了用于至少回避與過(guò)濾器實(shí)例有關(guān)的一些過(guò)濾操作的方法的一個(gè)例子。
具體實(shí)施例方式
本發(fā)明涉及系統(tǒng)、方法和計(jì)算機(jī)程序產(chǎn)品,用于過(guò)濾數(shù)據(jù)包,所采用的方式可節(jié)約處理器和網(wǎng)絡(luò)資源。一種抽象接口對(duì)過(guò)濾器棧進(jìn)行管理,過(guò)濾器棧包括一個(gè)或多個(gè)過(guò)濾器實(shí)例。每個(gè)過(guò)濾器實(shí)例都可以對(duì)從網(wǎng)絡(luò)接收到的或被發(fā)送到網(wǎng)絡(luò)的數(shù)據(jù)包執(zhí)行過(guò)濾操作。過(guò)濾器實(shí)例可以根據(jù)可完全回避過(guò)濾器實(shí)例的一個(gè)數(shù)據(jù)包或多個(gè)數(shù)據(jù)包的特征來(lái)執(zhí)行不同的過(guò)濾操作。此外,過(guò)濾器實(shí)例可以被添加到過(guò)濾器?;驈倪^(guò)濾器棧中被除去,所采用的方式減少了必須重新啟動(dòng)有關(guān)的協(xié)議棧的可能性。能夠容易地交換過(guò)濾器實(shí)例(每個(gè)過(guò)濾器實(shí)例都可以執(zhí)行不同的過(guò)濾操作)的能力,這會(huì)產(chǎn)生許多不同的過(guò)濾選項(xiàng)。
要從過(guò)濾器棧添加或除去過(guò)濾器實(shí)例,可以首先暫停使用過(guò)濾器棧。暫停使用過(guò)濾器??梢园〞和J褂眠^(guò)濾器棧中所包括的各個(gè)單獨(dú)的過(guò)濾器實(shí)例。當(dāng)將要暫停使用過(guò)濾器棧時(shí),可以通知利用該過(guò)濾器棧來(lái)執(zhí)行過(guò)濾操作的協(xié)議棧。當(dāng)暫停使用過(guò)濾器棧時(shí),抽象接口可以調(diào)用過(guò)濾驅(qū)動(dòng)器,來(lái)插入或除去過(guò)濾器實(shí)例。在插入或除去過(guò)濾器實(shí)例之后,可以將過(guò)濾器棧的新配置通知給有關(guān)的協(xié)議棧。
在操作期間,抽象接口在傳輸層與數(shù)據(jù)鏈路層之間進(jìn)行操作,以管理數(shù)據(jù)包到過(guò)濾器棧的轉(zhuǎn)移。當(dāng)抽象接口從數(shù)據(jù)鏈路層接收到數(shù)據(jù)包時(shí),它將數(shù)據(jù)包傳送到過(guò)濾器棧,從離數(shù)據(jù)鏈路層最近的過(guò)濾器實(shí)例開(kāi)始。然后,抽象接口可以接連將數(shù)據(jù)包依次傳送到離傳輸層較近的每個(gè)過(guò)濾器實(shí)例,直到數(shù)據(jù)包通過(guò)所有的過(guò)濾器模塊為止。然后,抽象接口可以將被過(guò)濾的數(shù)據(jù)包發(fā)送到傳輸層。
當(dāng)抽象接口從傳輸層接收到數(shù)據(jù)包時(shí),它按實(shí)質(zhì)上相反的順序來(lái)執(zhí)行這些操作。抽象接口將數(shù)據(jù)包傳送到過(guò)濾器棧,從離傳輸層最近的過(guò)濾器實(shí)例開(kāi)始。然后,抽象接口可以接連將數(shù)據(jù)包傳送到離數(shù)據(jù)鏈路層較近的每個(gè)過(guò)濾器實(shí)例,直到數(shù)據(jù)包通過(guò)所有的過(guò)濾器實(shí)例為止。然后,抽象接口可以將被過(guò)濾的數(shù)據(jù)包發(fā)送到數(shù)據(jù)鏈路層。
在通過(guò)過(guò)濾器棧的轉(zhuǎn)移期間,不同的數(shù)據(jù)包可以由不同的過(guò)濾操作來(lái)進(jìn)行過(guò)濾。這可能由數(shù)據(jù)包的特征引起。例如, “互聯(lián)網(wǎng)協(xié)議”(“IP”)包的過(guò)濾方式可能不同于“網(wǎng)絡(luò)分組交換”(“IPX”)包的過(guò)濾方式。用不同的過(guò)濾操作來(lái)過(guò)濾不同的數(shù)據(jù)包也可能由數(shù)據(jù)包的流向引起。也就是說(shuō),對(duì)從數(shù)據(jù)鏈路層被轉(zhuǎn)移到傳輸層的數(shù)據(jù)包執(zhí)行的過(guò)濾操作可能不同于對(duì)從傳輸層被轉(zhuǎn)移到數(shù)據(jù)鏈路層的數(shù)據(jù)包執(zhí)行的過(guò)濾操作。
可能是這種情況在一個(gè)數(shù)據(jù)流方向上,數(shù)據(jù)包完全回避過(guò)濾器實(shí)例;而在另一個(gè)數(shù)據(jù)流方向上,數(shù)據(jù)包不完全回避過(guò)濾器實(shí)例。例如,正從數(shù)據(jù)鏈路層被轉(zhuǎn)移到傳輸層的數(shù)據(jù)包可以完全回避過(guò)濾器實(shí)例,而正從傳輸層被轉(zhuǎn)移到數(shù)據(jù)鏈路層的數(shù)據(jù)包由過(guò)濾器實(shí)例進(jìn)行過(guò)濾。除了數(shù)據(jù)包以外,也可以對(duì)過(guò)濾器棧進(jìn)行配置,以便通過(guò)過(guò)濾器棧的控制信息完全回避過(guò)濾器實(shí)例。
本發(fā)明的實(shí)施例可以包括專(zhuān)用或通用計(jì)算機(jī)(包括各種部件),下文將更加詳細(xì)地加以討論。本發(fā)明范圍內(nèi)的實(shí)施例還可以包括計(jì)算機(jī)可讀介質(zhì),用于攜帶或保存被存儲(chǔ)于其上的計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)。這類(lèi)計(jì)算機(jī)可讀介質(zhì)可以是通用或?qū)S糜?jì)算機(jī)能夠存取的任何可用的介質(zhì)。舉例來(lái)說(shuō)(但不作限制),這類(lèi)計(jì)算機(jī)可讀介質(zhì)可以包括RAM、ROM、EEPROM、CD-ROM或其他光盤(pán)存儲(chǔ)器、磁盤(pán)存儲(chǔ)器或其他磁性存儲(chǔ)設(shè)備,或可以被用于以計(jì)算機(jī)可執(zhí)行指令或數(shù)據(jù)結(jié)構(gòu)的形式來(lái)攜帶或存儲(chǔ)所需的程序代碼方法并可以由通用或?qū)S糜?jì)算機(jī)進(jìn)行存取的任何其他的介質(zhì)。
當(dāng)信息通過(guò)網(wǎng)絡(luò)或另一種通信連接(硬連線通信連接、無(wú)線通信連接,或者硬連線通信連接或無(wú)線通信連接的組合)被轉(zhuǎn)移或提供給計(jì)算機(jī)時(shí),計(jì)算機(jī)適當(dāng)?shù)貙⑦B接視作一種計(jì)算機(jī)可讀介質(zhì)。因此,任何這樣的連接都適于被稱(chēng)為“計(jì)算機(jī)可讀介質(zhì)”。上述內(nèi)容的組合也應(yīng)該被包括在計(jì)算機(jī)可讀介質(zhì)的范圍內(nèi)。例如,計(jì)算機(jī)可執(zhí)行指令包括可以使通用計(jì)算機(jī)、專(zhuān)用計(jì)算機(jī)或?qū)S锰幚碓O(shè)備執(zhí)行某項(xiàng)功能或某組功能的指令和數(shù)據(jù)。
圖1和以下的討論意在對(duì)可以實(shí)施本發(fā)明的一種合適的計(jì)算機(jī)環(huán)境進(jìn)行簡(jiǎn)要、一般的描述。雖然不作要求,但是,將在計(jì)算機(jī)可執(zhí)行指令(例如,程序模塊)的總環(huán)境中描述本發(fā)明,這些計(jì)算機(jī)可執(zhí)行指令由網(wǎng)絡(luò)環(huán)境中的計(jì)算機(jī)執(zhí)行。通常,程序模塊包括執(zhí)行特殊任務(wù)或?qū)崿F(xiàn)特殊抽象數(shù)據(jù)類(lèi)型的例行程序、程序、對(duì)象、組件、數(shù)據(jù)結(jié)構(gòu)等。計(jì)算機(jī)可執(zhí)行指令、有關(guān)的數(shù)據(jù)結(jié)構(gòu)和程序模塊代表用于執(zhí)行這里所揭示的各種方法的步驟的程序代碼方法的例子。這類(lèi)可執(zhí)行指令或有關(guān)的數(shù)據(jù)結(jié)構(gòu)的特殊順序代表用于執(zhí)行這類(lèi)步驟中所描述的各種功能的對(duì)應(yīng)動(dòng)作的例子。
精通該技術(shù)領(lǐng)域的人將會(huì)理解,可以在具有許多類(lèi)型的計(jì)算機(jī)系統(tǒng)配置的各種網(wǎng)絡(luò)計(jì)算機(jī)環(huán)境中實(shí)踐本發(fā)明,包括個(gè)人計(jì)算機(jī)、手持設(shè)備、移動(dòng)電話、個(gè)人數(shù)字助理(“PDA”)、多處理器系統(tǒng)、基于微處理器的或可編程的消費(fèi)電子設(shè)備、網(wǎng)絡(luò)PCs、小型計(jì)算機(jī)、大型計(jì)算機(jī)和類(lèi)似的設(shè)備。也可以在各種分布式計(jì)算機(jī)環(huán)境中實(shí)踐本發(fā)明,在這些分布式計(jì)算機(jī)環(huán)境中,本地處理設(shè)備和遠(yuǎn)程處理設(shè)備通過(guò)通信網(wǎng)絡(luò)被連接(通過(guò)硬連線鏈接、無(wú)線鏈接,或者通過(guò)硬連線鏈接或無(wú)線鏈接的組合),并且,地方處理設(shè)備和遠(yuǎn)程處理設(shè)備都執(zhí)行任務(wù)。
參考圖1,用于實(shí)施本發(fā)明的一種示例系統(tǒng)包括采用傳統(tǒng)計(jì)算機(jī)120的形式的一個(gè)通用計(jì)算機(jī)設(shè)備,傳統(tǒng)計(jì)算機(jī)120包括一個(gè)處理單元121、一個(gè)系統(tǒng)存儲(chǔ)器122和將各種系統(tǒng)部件(包括系統(tǒng)存儲(chǔ)器122)耦合到處理單元121的一個(gè)系統(tǒng)總線123。系統(tǒng)總線123可以是幾種總線結(jié)構(gòu)(包括一個(gè)存儲(chǔ)總線或存儲(chǔ)控制器、一個(gè)外圍總線,以及使用各種總線構(gòu)造中的任一種構(gòu)造的一個(gè)本地總線)中的任何一種。系統(tǒng)存儲(chǔ)器可以包括只讀存儲(chǔ)器(“ROM”)124和隨機(jī)存取存儲(chǔ)器(“RAM”)125?;据斎?輸出系統(tǒng)(“BIOS”)126可以被存儲(chǔ)在ROM 124中,基本輸入/輸出系統(tǒng)包含幫助在計(jì)算機(jī)120內(nèi)的各個(gè)元件之間轉(zhuǎn)移信息的各種基本例行程序(如在啟動(dòng)期間)。
計(jì)算機(jī)120也可以包括用于從磁性硬盤(pán)139讀取和對(duì)其寫(xiě)入的一個(gè)磁性硬盤(pán)驅(qū)動(dòng)器127、用于從可移動(dòng)的磁盤(pán)129讀取或?qū)ζ鋵?xiě)入的一個(gè)磁盤(pán)驅(qū)動(dòng)器128,以及用于從可移動(dòng)的光盤(pán)131(例如,CD-ROM或其他光學(xué)介質(zhì))讀取或?qū)ζ鋵?xiě)入的一個(gè)光盤(pán)驅(qū)動(dòng)器130。磁性硬盤(pán)驅(qū)動(dòng)器127、磁盤(pán)驅(qū)動(dòng)器128和光盤(pán)驅(qū)動(dòng)器130分別通過(guò)硬盤(pán)驅(qū)動(dòng)器接口132、磁盤(pán)驅(qū)動(dòng)器接口133和光驅(qū)接口134被連接到系統(tǒng)總線123。驅(qū)動(dòng)器及其有關(guān)的計(jì)算機(jī)可讀介質(zhì)為計(jì)算機(jī)120提供計(jì)算機(jī)可執(zhí)行指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊和其他數(shù)據(jù)進(jìn)行非易失性存儲(chǔ)。雖然這里所描述的示例環(huán)境使用磁性硬盤(pán)139、可移動(dòng)的磁盤(pán)129和可移動(dòng)的光盤(pán)131,但是,也可以使用用于存儲(chǔ)數(shù)據(jù)的其他類(lèi)型的計(jì)算機(jī)可讀介質(zhì),包括盒式磁帶、閃存卡、數(shù)字多用途盤(pán)片、伯努里式編碼磁帶、RAM、ROM和類(lèi)似物。
包含一個(gè)或多個(gè)程序模塊的程序代碼方法可以被存儲(chǔ)在硬盤(pán)139、磁盤(pán)129、光盤(pán)131、ROM124或RAM125上,包括一個(gè)操作系統(tǒng)135、一個(gè)或多個(gè)應(yīng)用程序136、其他程序模塊137和程序數(shù)據(jù)138。用戶可以通過(guò)鍵盤(pán)140、指示設(shè)備142或其他輸入設(shè)備(未示出) (例如,話筒、操縱桿、游戲手柄、圓盤(pán)式衛(wèi)星電視天線、掃描儀或類(lèi)似的設(shè)備)來(lái)將命令和信息輸入計(jì)算機(jī)120。這些和其他的輸入設(shè)備經(jīng)常通過(guò)與系統(tǒng)總線123相耦合的串行端口接口146被連接到處理單元121。或者,各個(gè)輸入設(shè)備可以由其他的接口(例如,并行端口、游戲端口或“通用串行總線”(“USB”))來(lái)連接。監(jiān)視器147或另一個(gè)顯示設(shè)備也經(jīng)由一個(gè)接口(例如,視頻適配器148)被連接到系統(tǒng)總線123。除了監(jiān)視器以外,個(gè)人計(jì)算機(jī)通常包括其他的外圍輸出設(shè)備(未示出)(例如,揚(yáng)聲器和打印機(jī))。
計(jì)算機(jī)120可以在使用與一臺(tái)或多臺(tái)遠(yuǎn)程計(jì)算機(jī)(例如,遠(yuǎn)程計(jì)算機(jī)149a和149b)的邏輯連接的聯(lián)網(wǎng)環(huán)境中進(jìn)行操作。遠(yuǎn)程計(jì)算機(jī)149a和149b都可以是另一臺(tái)個(gè)人計(jì)算機(jī)、服務(wù)器、路由器、網(wǎng)絡(luò)PC、對(duì)等設(shè)備或其他共公網(wǎng)絡(luò)節(jié)點(diǎn)。雖然圖1中只展示了內(nèi)存存儲(chǔ)設(shè)備150a與150b及其有關(guān)的應(yīng)用程序136a與136b,但是,遠(yuǎn)程計(jì)算機(jī)149a和149b可以包括與計(jì)算機(jī)120有關(guān)的上述許多或所有元件。圖1中所描繪的邏輯連接包括這里舉例(而不是限制)提出的一個(gè)局域網(wǎng)(LAN)151和一個(gè)廣域網(wǎng)(WAN)152。在辦公室范圍或企業(yè)范圍的計(jì)算機(jī)網(wǎng)絡(luò)、內(nèi)聯(lián)網(wǎng)和互聯(lián)網(wǎng)中,這類(lèi)聯(lián)網(wǎng)環(huán)境很普遍。
當(dāng)計(jì)算機(jī)120在LAN聯(lián)網(wǎng)環(huán)境中被使用時(shí),它通過(guò)網(wǎng)絡(luò)接口適配器153或類(lèi)似的適配器被連接到本地網(wǎng)絡(luò)151。當(dāng)計(jì)算機(jī)120在WAN聯(lián)網(wǎng)環(huán)境中被使用時(shí),它可以包括一個(gè)調(diào)制解調(diào)器154、一個(gè)無(wú)線鏈路或用于在廣域網(wǎng)152(例如,互聯(lián)網(wǎng))上建立通信的其他裝置。調(diào)制解調(diào)器154(可以是內(nèi)置的,也可以是外置的)經(jīng)由串行端口接口146被連接到系統(tǒng)總線123。在聯(lián)網(wǎng)環(huán)境中,可以將與計(jì)算機(jī)120有關(guān)的所述程序模塊或其各個(gè)部分存儲(chǔ)在遠(yuǎn)程內(nèi)存存儲(chǔ)設(shè)備中。將會(huì)理解,所示的網(wǎng)絡(luò)連接是起示范的作用,可以使用在廣域網(wǎng)152上建立通信的其他方法。
在此文和隨后的權(quán)利要求中,“虛擬例行程序”被定義為不執(zhí)行任何任務(wù)的例行程序。虛擬例行程序可能是一個(gè)程序模塊或一套計(jì)算機(jī)可執(zhí)行指令的一個(gè)部分,它包括用于接收數(shù)據(jù)的一個(gè)頭部,但不對(duì)它所接收的數(shù)據(jù)執(zhí)行操作。也就是說(shuō),從虛擬例行程序被輸出的數(shù)據(jù)與曾被輸入到虛擬例行程序的數(shù)據(jù)相同。
在此文和隨后的權(quán)利要求中,“入口點(diǎn)”被定義為一個(gè)程序模塊或一套計(jì)算機(jī)可執(zhí)行指令的一個(gè)部分中的一個(gè)位置。外部程序模塊可以調(diào)用一個(gè)入口點(diǎn),并發(fā)送被輸入的數(shù)據(jù),以促進(jìn)執(zhí)行與入口點(diǎn)有關(guān)的指令執(zhí)行。例如,虛擬例行程序可以有一個(gè)入口點(diǎn)。
在此文和隨后的權(quán)利要求中,“系統(tǒng)注冊(cè)表”被定義為可以由操作系統(tǒng)用來(lái)存儲(chǔ)配置信息的數(shù)據(jù)庫(kù)。
根據(jù)本發(fā)明,可以存儲(chǔ)程序模塊(包括抽象接口、過(guò)濾器棧、過(guò)濾器實(shí)例、被用來(lái)促進(jìn)過(guò)濾數(shù)據(jù)包的過(guò)濾驅(qū)動(dòng)器,以及有關(guān)的程序數(shù)據(jù)),并從任何與計(jì)算機(jī)系統(tǒng)120有關(guān)的計(jì)算機(jī)可讀介質(zhì)來(lái)對(duì)其進(jìn)行存取。例如,操作系統(tǒng)135、應(yīng)用程序136、其他的程序模塊137和/或程序數(shù)據(jù)138中包括部分抽象接口、過(guò)濾器棧、過(guò)濾器實(shí)例、過(guò)濾驅(qū)動(dòng)器和有關(guān)的程序數(shù)據(jù),用于存儲(chǔ)在磁性硬盤(pán)139上。如前所述,可以在分布式環(huán)境中執(zhí)行與過(guò)濾數(shù)據(jù)包有關(guān)的程序模塊。例如,遠(yuǎn)程計(jì)算機(jī)設(shè)備(例如,遠(yuǎn)程計(jì)算機(jī)149a或149b)中所包括的過(guò)濾驅(qū)動(dòng)器可以促進(jìn)將過(guò)濾器實(shí)例插入本地處理設(shè)備(例如,計(jì)算機(jī)120)中所包括的過(guò)濾器棧,或者,反之亦然。
圖2A表現(xiàn)了可用于促進(jìn)將過(guò)濾器實(shí)例插入過(guò)濾器棧的一些功能性部件。如所展示的,計(jì)算機(jī)201以通信聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò)205。在計(jì)算機(jī)201與網(wǎng)絡(luò)205之間被轉(zhuǎn)移的包可以通過(guò)包括傳輸層協(xié)議202、抽象接口203和數(shù)據(jù)鏈路驅(qū)動(dòng)器204的通信路徑傳輸。計(jì)算機(jī)201可以包括在圖1討論中所參考的任何部件。網(wǎng)絡(luò)205可以包括在圖1討論中所參考的任何網(wǎng)絡(luò)環(huán)境。
抽象接口203可以與過(guò)濾器棧206和過(guò)濾驅(qū)動(dòng)器210進(jìn)行通信。當(dāng)接收數(shù)據(jù)包時(shí),抽象接口203可以將數(shù)據(jù)包轉(zhuǎn)移給過(guò)濾器棧206中所包括的每個(gè)過(guò)濾器實(shí)例。如果從傳輸層協(xié)議202接收數(shù)據(jù)包,則抽象接口203可以將該數(shù)據(jù)包傳送到過(guò)濾器實(shí)例207a,再依次地傳送到離數(shù)據(jù)鏈路驅(qū)動(dòng)器204較近的其他過(guò)濾器模塊。如果從數(shù)據(jù)鏈路驅(qū)動(dòng)器204接收數(shù)據(jù)包,則抽象接口203可以將該數(shù)據(jù)包傳送到過(guò)濾器實(shí)例211a,再依次地傳送到離傳輸層協(xié)議202較近的其他過(guò)濾器模塊。
抽象接口203可以與過(guò)濾驅(qū)動(dòng)器210進(jìn)行通信,以促進(jìn)將過(guò)濾器實(shí)例插入過(guò)濾器棧206或從過(guò)濾器棧206中除去過(guò)濾器實(shí)例。過(guò)濾驅(qū)動(dòng)器210中包括過(guò)濾器插入模塊220、過(guò)濾器啟動(dòng)模塊221和過(guò)濾器暫停模塊222。圖2B表現(xiàn)了一些交互過(guò)程的一個(gè)例子,這些交互過(guò)程可以發(fā)生在圖2A所示的各個(gè)功能性部件之間,以促進(jìn)將過(guò)濾器實(shí)例插入過(guò)濾器棧。圖3是流程圖,展示了用于將過(guò)濾器實(shí)例插入過(guò)濾器棧的一種方法。將參考圖2A和2B中所包括的功能性部件來(lái)討論圖3中的方法。
如圖3所示,可以通過(guò)暫停過(guò)濾器棧的操作來(lái)開(kāi)始插入過(guò)濾器實(shí)例(動(dòng)作301)。這可以包括暫停使用當(dāng)前正在過(guò)濾器棧中進(jìn)行操作的各個(gè)單獨(dú)的過(guò)濾器實(shí)例??梢酝ㄟ^(guò)調(diào)用有關(guān)的暫停模塊來(lái)暫停使用過(guò)濾器實(shí)例。例如,過(guò)濾器暫停模塊222可以促進(jìn)暫停使用曾由過(guò)濾驅(qū)動(dòng)器210插入過(guò)濾器棧的過(guò)濾器實(shí)例??梢酝ㄖ獏f(xié)議棧過(guò)濾器棧將被暫停使用。
如圖2A所示,過(guò)濾器棧206包括過(guò)濾器實(shí)例210a,過(guò)濾器實(shí)例210a可能以前已由過(guò)濾驅(qū)動(dòng)器210插入過(guò)濾器棧206。抽象接口203可以將數(shù)據(jù)傳送到過(guò)濾器暫停模塊222,以便使過(guò)濾器實(shí)例210a(或由過(guò)濾驅(qū)動(dòng)器210插入過(guò)濾器棧206的其他過(guò)濾器實(shí)例)進(jìn)入暫停狀態(tài)。當(dāng)使過(guò)濾器實(shí)例進(jìn)入暫停狀態(tài)時(shí),過(guò)濾驅(qū)動(dòng)器可以執(zhí)行某些操作。例如,過(guò)濾驅(qū)動(dòng)器可以使與過(guò)濾器實(shí)例有關(guān)的隊(duì)列包被清除,可以停止與過(guò)濾器實(shí)例有關(guān)的其他運(yùn)行的操作,并可以延遲使過(guò)濾器實(shí)例進(jìn)入暫停狀態(tài),直到過(guò)濾器實(shí)例處理好未完成的包和請(qǐng)求為止。
可以連續(xù)暫停使用過(guò)濾器實(shí)例。例如,可以首先暫停離傳輸層協(xié)議202最近的過(guò)濾器實(shí)例。如圖2A所示,過(guò)濾器207a將會(huì)是被暫停使用的第一個(gè)過(guò)濾器實(shí)例。在成功地暫停使用離傳輸層協(xié)議202最近的過(guò)濾器實(shí)例之后,可以暫停使用下一個(gè)最近的過(guò)濾器實(shí)例(即,過(guò)濾器實(shí)例208a)。在這個(gè)例子中,如果將要暫停使用整個(gè)過(guò)濾器棧,則會(huì)按以下的順序來(lái)暫停使用其余的過(guò)濾器實(shí)例208b、209a、210a和211a。一旦過(guò)濾器實(shí)例211a(離數(shù)據(jù)鏈路層最近的過(guò)濾器實(shí)例)成功地到達(dá)暫停狀態(tài),也就可以認(rèn)為過(guò)濾器棧206進(jìn)入暫停狀態(tài)。然后,可以通知協(xié)議棧過(guò)濾器棧206被成功地暫停使用。
過(guò)濾器實(shí)例可能與“例行程序處理機(jī)”有關(guān),“例行程序處理機(jī)”是被用來(lái)促進(jìn)發(fā)送、接收和要求數(shù)據(jù)包的模塊。在一個(gè)實(shí)施例中,暫停使用過(guò)濾器也可以包括與虛擬例行程序交換例行程序處理機(jī)。這樣,數(shù)據(jù)包可以通過(guò)虛擬例行程序(而不是實(shí)際的例行程序處理機(jī))被轉(zhuǎn)移。例如,數(shù)據(jù)包可以被發(fā)送到虛擬例行程序,而不是被發(fā)送到用于接收數(shù)據(jù)包的例行程序處理機(jī)??梢杂沙橄蠼涌趤?lái)執(zhí)行交換,以便過(guò)濾器實(shí)例在處于暫停狀態(tài)時(shí)不必處理任何新的包。
當(dāng)配置過(guò)濾器實(shí)例的操作時(shí),可能需要暫停使用該過(guò)濾器實(shí)例。可以通過(guò)局部暫停使用過(guò)濾器棧來(lái)暫停使用特定的過(guò)濾器實(shí)例。也就是說(shuō),過(guò)濾器棧中的一些過(guò)濾器實(shí)例被暫停使用,而其他過(guò)濾器實(shí)例繼續(xù)進(jìn)行操作。在這些情況中,可能暫停使用離傳輸層較近的過(guò)濾器實(shí)例,而不暫停使用離數(shù)據(jù)鏈路層較近的過(guò)濾器實(shí)例??梢圆捎眠B續(xù)的方式來(lái)加以執(zhí)行,離傳輸層較近的過(guò)濾器實(shí)例在離數(shù)據(jù)鏈路層較近的過(guò)濾器實(shí)例之前被暫停使用。
例如,在圖2A中,假設(shè)過(guò)濾器棧206中的所有過(guò)濾器實(shí)例當(dāng)前都正在運(yùn)作。如果過(guò)濾器實(shí)例208b將要接收配置參數(shù),則可以暫停使用過(guò)濾器實(shí)例207a,再暫停使用過(guò)濾器208a,然后暫停使用過(guò)濾器實(shí)例208b。但是,在配置過(guò)濾器實(shí)例208b的期間,離數(shù)據(jù)鏈路層較近的其他過(guò)濾器實(shí)例(包括過(guò)濾器實(shí)例209a、過(guò)濾器實(shí)例210a和過(guò)濾器實(shí)例211a)可以繼續(xù)進(jìn)行操作。
要重新啟動(dòng)被局部暫停使用的過(guò)濾器棧,可以首先重新啟動(dòng)離數(shù)據(jù)鏈路層最近的、被暫停使用的過(guò)濾器實(shí)例,然后連續(xù)重新啟動(dòng)離傳輸層較近的每個(gè)被暫停使用的過(guò)濾器實(shí)例。在以上段落的例子中,將重新啟動(dòng)過(guò)濾器實(shí)例208b,再重新啟動(dòng)過(guò)濾器實(shí)例208a,然后重新啟動(dòng)過(guò)濾器實(shí)例207a。
圖3中的方法可以包括用于重新配置過(guò)濾器棧中所包括的操作的一個(gè)步驟(步驟304)。這可以包括執(zhí)行一些動(dòng)作在將過(guò)濾器實(shí)例插入過(guò)濾器棧的同時(shí),至少一個(gè)協(xié)議棧繼續(xù)能夠轉(zhuǎn)移數(shù)據(jù)(動(dòng)作302)并開(kāi)始操作過(guò)濾器棧(動(dòng)作303)。在插入過(guò)濾器實(shí)例的同時(shí),協(xié)議棧繼續(xù)能夠轉(zhuǎn)移數(shù)據(jù),這有助于沿通信路徑有效地轉(zhuǎn)移數(shù)據(jù)。
將過(guò)濾器實(shí)例插入過(guò)濾器??梢园ㄟ^(guò)濾驅(qū)動(dòng)器從抽象接口接收參數(shù)。圖2B中的箭頭1展示了抽象接口203將參數(shù)發(fā)送到過(guò)濾驅(qū)動(dòng)器210。被發(fā)送到過(guò)濾驅(qū)動(dòng)器210的參數(shù)可以包括一個(gè)過(guò)濾器句柄,可以使用該過(guò)濾器句柄來(lái)指代所創(chuàng)建的過(guò)濾器實(shí)例。例如,如果箭頭1中所包括的參數(shù)曾被用來(lái)創(chuàng)建過(guò)濾器實(shí)例210b,則過(guò)濾驅(qū)動(dòng)器210可以使用過(guò)濾器句柄,將與過(guò)濾器實(shí)例210b相對(duì)應(yīng)的數(shù)據(jù)發(fā)送到抽象接口203。參數(shù)也可以包括在過(guò)濾器棧中應(yīng)該插入過(guò)濾器實(shí)例的位置。例如,在圖2B中,過(guò)濾驅(qū)動(dòng)器210可能已接收到一個(gè)參數(shù),該參數(shù)曾指出應(yīng)該在過(guò)濾器實(shí)例208b與209a之間插入過(guò)濾器實(shí)例210b。
將過(guò)濾器實(shí)例插入過(guò)濾器??梢园▌?chuàng)建過(guò)濾器實(shí)例上下文。圖2B中的箭頭2展示了上下文創(chuàng)建模塊230為過(guò)濾器實(shí)例210b創(chuàng)建過(guò)濾器實(shí)例上下文。可以將一個(gè)過(guò)濾器的多個(gè)實(shí)例插入一個(gè)過(guò)濾器棧。例如,圖2B中展示了過(guò)濾器實(shí)例208a和208b。同一個(gè)過(guò)濾驅(qū)動(dòng)器可能已將過(guò)濾器實(shí)例208a和208b插入過(guò)濾器棧206。但是,過(guò)濾器實(shí)例208a和208b可能會(huì)根據(jù)曾被用來(lái)創(chuàng)建它們的參數(shù)而有所不同??梢允褂眠^(guò)濾器實(shí)例上下文來(lái)區(qū)別曾由同一個(gè)過(guò)濾驅(qū)動(dòng)器創(chuàng)建的過(guò)濾器實(shí)例(例如,過(guò)濾器實(shí)例208a和208b)。
將過(guò)濾器實(shí)例插入過(guò)濾器棧可以包括為過(guò)濾器實(shí)例分配資源。圖2B中的箭頭3展示了資源分配模塊231為過(guò)濾器實(shí)例210b分配資源。這可以包括為過(guò)濾器實(shí)例分配內(nèi)存,供進(jìn)行操作;以及為隊(duì)列數(shù)據(jù)包分配內(nèi)存,供過(guò)濾器實(shí)例進(jìn)行處理。這些只是在將過(guò)濾器實(shí)例插入過(guò)濾器棧時(shí)可以被分配的資源的一些例子。精通該技術(shù)領(lǐng)域的人在閱讀此文之后將顯而易見(jiàn),可以分配各種類(lèi)型的資源,供過(guò)濾器實(shí)例使用。
將過(guò)濾器實(shí)例插入過(guò)濾器??梢园▽⑦^(guò)濾器實(shí)例上下文發(fā)送到抽象接口。圖2B中的箭頭4展示了過(guò)濾驅(qū)動(dòng)器210將關(guān)于過(guò)濾器實(shí)例210b的過(guò)濾器實(shí)例上下文發(fā)送到抽象接口203。抽象接口203可以將過(guò)濾器實(shí)例上下文用作對(duì)過(guò)濾器實(shí)例210b的指代。例如,當(dāng)抽象接口203將與過(guò)濾器實(shí)例210b有關(guān)的數(shù)據(jù)發(fā)送到過(guò)濾驅(qū)動(dòng)器210時(shí),抽象接口203可以將過(guò)濾器實(shí)例上下文包括在內(nèi)。抽象接口203可以使用過(guò)濾器實(shí)例上下文來(lái)讓過(guò)濾驅(qū)動(dòng)器210認(rèn)識(shí)到所接收的數(shù)據(jù)與過(guò)濾器實(shí)例210b有關(guān)。
將過(guò)濾器實(shí)例插入過(guò)濾器??梢园◤南到y(tǒng)注冊(cè)表讀取可配置的參數(shù)。圖2B中的箭頭5展示了可配置參數(shù)存取模塊233從系統(tǒng)注冊(cè)表223讀取可配置的參數(shù)??膳渲脜?shù)存取模塊233可以使用以前所接收的配置句柄來(lái)對(duì)系統(tǒng)注冊(cè)表進(jìn)行存取。配置句柄可以是指針或其他尋址機(jī)制,它將可配置參數(shù)存取模塊233指引到系統(tǒng)注冊(cè)表的一個(gè)部分,與過(guò)濾器實(shí)例210b有關(guān)的參數(shù)可能位于那里。讀取系統(tǒng)注冊(cè)表可以包括讀取代表過(guò)濾器實(shí)例的識(shí)別號(hào)碼。
在一個(gè)實(shí)施例中,過(guò)濾驅(qū)動(dòng)器登記到抽象接口,當(dāng)該抽象接口發(fā)送參數(shù)(例如,由圖2B中的箭頭1代表的參數(shù))時(shí),它可以將配置句柄發(fā)送到過(guò)濾驅(qū)動(dòng)器。抽象接口可以管理登記或?qū)⒌怯泜魉偷较到y(tǒng)注冊(cè)表?;蛘?,過(guò)濾驅(qū)動(dòng)器可以將數(shù)據(jù)直接登記在系統(tǒng)注冊(cè)表。
將過(guò)濾器實(shí)例插入過(guò)濾器??梢园ǜ鶕?jù)所接收的參數(shù)來(lái)配置過(guò)濾器實(shí)例。所接收的參數(shù)可能已從抽象接口被發(fā)送或已從系統(tǒng)注冊(cè)表被讀取。圖2B中的箭頭6展示了過(guò)濾器插入模塊220發(fā)送參數(shù)來(lái)配置過(guò)濾器實(shí)例210b。過(guò)濾器實(shí)例可以被配置成執(zhí)行各種過(guò)濾操作例如,監(jiān)控?cái)?shù)據(jù)包,除去、插入和/或修改數(shù)據(jù)包中的數(shù)據(jù),檢查與數(shù)據(jù)包有關(guān)的地址,壓縮數(shù)據(jù)包,為數(shù)據(jù)包加密,或其任何組合。
過(guò)濾器實(shí)例可以被配置成過(guò)濾通過(guò)“虛擬個(gè)人網(wǎng)絡(luò)”(“VPN”)而被轉(zhuǎn)移的數(shù)據(jù)包。例如,可以通過(guò)使用沒(méi)有真實(shí)的物質(zhì)實(shí)體的虛擬連接來(lái)轉(zhuǎn)移在網(wǎng)絡(luò)205上被轉(zhuǎn)移的數(shù)據(jù)包。盡管依次將數(shù)據(jù)包傳遞到正確的目的地,但是,可以用臨時(shí)的方式經(jīng)由各種機(jī)器來(lái)發(fā)送這些數(shù)據(jù)包。也就是說(shuō),連接不采用專(zhuān)門(mén)的物理線路。
過(guò)濾器實(shí)例也可以配置有一個(gè)入口點(diǎn),以便接收電源管理(“PM”)和/或即插即用(“PnP”)數(shù)據(jù)。當(dāng)計(jì)算機(jī)設(shè)備由于處于不活動(dòng)狀態(tài)而進(jìn)入待命模式時(shí),可以將有關(guān)的電源管理數(shù)據(jù)發(fā)送到過(guò)濾器實(shí)例。同樣,如果可能影響數(shù)據(jù)包流動(dòng)的外圍設(shè)備(例如,網(wǎng)卡)被插入計(jì)算機(jī)設(shè)備,則可以將有關(guān)的數(shù)據(jù)發(fā)送到過(guò)濾器實(shí)例。
在一個(gè)實(shí)施例中,可以使用管理接口來(lái)配置過(guò)濾器實(shí)例。管理接口可以包括一個(gè)用戶接口,其中,用戶經(jīng)由輸入設(shè)備來(lái)輸入與過(guò)濾器實(shí)例有關(guān)的參數(shù)。這些參數(shù)由過(guò)濾驅(qū)動(dòng)器接收,并促進(jìn)過(guò)濾器實(shí)例的配置。這樣的一個(gè)例子是用戶可配置的防火墻。
配置過(guò)濾器實(shí)例也可以包括將過(guò)濾器實(shí)例與多個(gè)傳輸層協(xié)議“綁定”。當(dāng)過(guò)濾器實(shí)例與傳輸層協(xié)議綁定時(shí),它可以過(guò)濾與傳輸層協(xié)議有關(guān)的數(shù)據(jù)包。例如,如圖2A所示,過(guò)濾器實(shí)例210b可以被配置成既過(guò)濾數(shù)據(jù)包傳輸A又過(guò)濾數(shù)據(jù)包傳輸B。
不言而喻,以前所描述的過(guò)濾器實(shí)例配置只是一些例子。精通該技術(shù)領(lǐng)域的人在閱讀此文之后將顯而易見(jiàn),可以用許多不同的方式來(lái)配置過(guò)濾器實(shí)例。
將過(guò)濾器實(shí)例插入過(guò)濾器??梢园ㄗC實(shí)過(guò)濾器實(shí)例被適當(dāng)?shù)夭迦脒^(guò)濾器棧。這可以包括將插入狀況發(fā)送到抽象接口。圖2B中的箭頭7和8展示了插入狀況模塊232接收對(duì)過(guò)濾器實(shí)例210b的插入狀況的證實(shí)并將插入狀況發(fā)送到抽象接口203。
返回圖3,將過(guò)濾器實(shí)例插入過(guò)濾器棧可以包括開(kāi)始過(guò)濾器棧的操作(動(dòng)作303)。這可以包括啟動(dòng)當(dāng)前被暫停使用的各個(gè)單獨(dú)的過(guò)濾器實(shí)例??梢酝ㄟ^(guò)調(diào)用有關(guān)的啟動(dòng)模塊來(lái)啟動(dòng)過(guò)濾器實(shí)例。例如,過(guò)濾器啟動(dòng)模塊221可以促進(jìn)啟動(dòng)曾由過(guò)濾驅(qū)動(dòng)器210插入過(guò)濾器棧的過(guò)濾器實(shí)例(例如,過(guò)濾器實(shí)例210a和210b)??梢酝ㄖ獏f(xié)議棧將要啟動(dòng)過(guò)濾器棧。
抽象接口203可以將數(shù)據(jù)傳送到過(guò)濾器啟動(dòng)模塊221,以便使過(guò)濾器實(shí)例210a、210b或由過(guò)濾驅(qū)動(dòng)器210插入過(guò)濾器棧206的其他過(guò)濾器實(shí)例進(jìn)入操作狀態(tài)??梢赃B續(xù)啟動(dòng)過(guò)濾器實(shí)例。例如,可以首先啟動(dòng)離數(shù)據(jù)鏈路驅(qū)動(dòng)器204最近的過(guò)濾器實(shí)例(即過(guò)濾器實(shí)例211a)。在成功地啟動(dòng)離數(shù)據(jù)鏈路驅(qū)動(dòng)器204最近的過(guò)濾器實(shí)例之后,可以啟動(dòng)下一個(gè)最近的過(guò)濾器實(shí)例。如圖2B所示,將會(huì)是過(guò)濾器實(shí)例210a。在這個(gè)例子中,將按以下的順序來(lái)啟動(dòng)其余的過(guò)濾器實(shí)例209a、210b、208b、208a和207a。一旦過(guò)濾器實(shí)例207a成功地到達(dá)操作狀態(tài),也就可以認(rèn)為過(guò)濾器棧206處于操作狀態(tài)。啟動(dòng)過(guò)濾器棧也可以包括與例行程序處理機(jī)交換虛擬例行程序,以便過(guò)濾器棧206可以適當(dāng)?shù)靥幚頂?shù)據(jù)包。然后,可以通知協(xié)議棧過(guò)濾器棧206處于操作狀態(tài)。
可能會(huì)局部重新啟動(dòng)完全被暫停使用的過(guò)濾器棧。也就是說(shuō),過(guò)濾器棧中的一些過(guò)濾器實(shí)例被重新啟動(dòng),而其他的過(guò)濾器實(shí)例仍然被暫停使用。當(dāng)過(guò)濾器棧中的一個(gè)特定的過(guò)濾器實(shí)例將要被重新啟動(dòng)時(shí),可能會(huì)發(fā)生這種情況。在這些情況中,可能會(huì)重新啟動(dòng)離數(shù)據(jù)鏈路層較近的過(guò)濾器實(shí)例,而離傳輸層較近的過(guò)濾器實(shí)例仍然被暫停使用??梢杂眠B續(xù)的方式來(lái)加以執(zhí)行,其中,離數(shù)據(jù)鏈路層較近的過(guò)濾器實(shí)例在離傳輸層較近的過(guò)濾器實(shí)例之前被重新啟動(dòng)。
例如,在圖2A中,假設(shè)過(guò)濾器棧206中的所有過(guò)濾器實(shí)例當(dāng)前被暫停使用。如果將要重新啟動(dòng)過(guò)濾器實(shí)例209a,則可以首先重新啟動(dòng)過(guò)濾器實(shí)例211a,再重新啟動(dòng)過(guò)濾器實(shí)例210a,然后重新啟動(dòng)過(guò)濾器實(shí)例209b。離傳輸層較近的其他過(guò)濾器實(shí)例(包括過(guò)濾器實(shí)例208b、過(guò)濾器實(shí)例208a和過(guò)濾器實(shí)例207a)仍然可以被暫停使用。
不言而喻,圖2A和2B中所展示的模塊和箭頭只是一些例子。在不脫離本發(fā)明的精神和范圍的前提下,可以組合不同的模塊和有關(guān)的功能性。例如,過(guò)濾驅(qū)動(dòng)器210可以包括一個(gè)單個(gè)的模塊,該模塊執(zhí)行與將過(guò)濾器實(shí)例添加到過(guò)濾器棧有關(guān)的操作。也可能將過(guò)濾驅(qū)動(dòng)器210包括為抽象接口203的一部分。同樣,與圖2B中所包括的箭頭有關(guān)的功能性的執(zhí)行順序也只是起示范的作用。在不脫離本發(fā)明的精神和范圍的前提下,可以按各種順序來(lái)執(zhí)行與圖2B中所包括的箭頭有關(guān)的功能性。精通該技術(shù)領(lǐng)域的人在閱讀此文之后將顯而易見(jiàn),可以用許多不同的方式來(lái)組合模塊及其有關(guān)的功能。
除了將過(guò)濾器實(shí)例插入過(guò)濾器棧以外,本發(fā)明的實(shí)施例可以從過(guò)濾器棧中除去過(guò)濾器實(shí)例。當(dāng)從過(guò)濾器棧中除去過(guò)濾器實(shí)例時(shí),可能會(huì)使用以前所描述的各種方法來(lái)暫停使用和啟動(dòng)過(guò)濾器棧。
當(dāng)從過(guò)濾器棧中除去過(guò)濾器實(shí)例時(shí),過(guò)濾驅(qū)動(dòng)器可以釋放以前被分配給過(guò)濾器實(shí)例使用的資源。例如,抽象接口203可以將數(shù)據(jù)發(fā)送到過(guò)濾驅(qū)動(dòng)器210,指出應(yīng)該從過(guò)濾器棧206中除去過(guò)濾器實(shí)例210b。過(guò)濾器棧206可以被暫停使用,過(guò)濾驅(qū)動(dòng)器210可以從過(guò)濾器棧206中除去過(guò)濾器實(shí)例210b。然后,過(guò)濾驅(qū)動(dòng)器210可以釋放曾被分配給過(guò)濾器實(shí)例210b使用的資源。隨后,可以啟動(dòng)過(guò)濾器棧206。可以通知有關(guān)的協(xié)議棧該過(guò)濾器棧不再包括過(guò)濾器實(shí)例210b的功能性。
圖2C表現(xiàn)了一些功能性部件的一個(gè)例子,這些功能性部件可以促進(jìn)回避與過(guò)濾器實(shí)例有關(guān)的過(guò)濾操作??梢愿鶕?jù)與包和/或配置信息有關(guān)的特征來(lái)回避過(guò)濾操作?;乇苓^(guò)濾操作可以包括一個(gè)包完全回避過(guò)濾器實(shí)例和一個(gè)所接收的包回避過(guò)濾器實(shí)例的一項(xiàng)或多項(xiàng)內(nèi)部過(guò)濾操作。圖4是流程圖,展示了一種用于至少回避與過(guò)濾器實(shí)例有關(guān)的過(guò)濾操作的方法的一個(gè)例子。將參考圖2C中所包括的功能性部件來(lái)討論圖4中的方法。
圖2C中展示了過(guò)濾器實(shí)例210b,過(guò)濾器實(shí)例210b被包括在過(guò)濾器棧206中。過(guò)濾器實(shí)例210b包括控制模塊215,以及過(guò)濾器操作216a、216b和216c。圖2C中展示了一個(gè)通信路徑,包通過(guò)該通信路徑從傳輸層被轉(zhuǎn)移到數(shù)據(jù)鏈路層。但是,也可以利用通信路徑來(lái)實(shí)踐本發(fā)明,包通過(guò)通信路徑從數(shù)據(jù)鏈路層被轉(zhuǎn)移到傳輸層。通信路徑可以包括一個(gè)數(shù)據(jù)路徑,數(shù)據(jù)包藉此數(shù)據(jù)路徑通過(guò)協(xié)議棧被轉(zhuǎn)移;也可以包括一個(gè)控制路徑,控制包藉此控制路徑通過(guò)協(xié)議棧被轉(zhuǎn)移。
這類(lèi)控制路徑可以包括請(qǐng)求和狀況指示。可以將請(qǐng)求從傳輸層向下轉(zhuǎn)移到數(shù)據(jù)鏈路層。請(qǐng)求可以包括一個(gè)指示網(wǎng)絡(luò)接口適配器(例如,網(wǎng)絡(luò)接口適配器153)將接受多點(diǎn)傳送包或?qū)⒈恢糜诨祀s模式。請(qǐng)求也可以包括一個(gè)詢問(wèn)。例如,請(qǐng)求可以詢問(wèn)網(wǎng)絡(luò)接口適配器的媒介訪問(wèn)控制地址,也可以詢問(wèn)網(wǎng)絡(luò)接口適配器當(dāng)前是否正在接收多點(diǎn)傳送包。
可以將狀況指示從數(shù)據(jù)鏈路層轉(zhuǎn)移到傳輸層。狀況指示可以包括來(lái)自數(shù)據(jù)鏈路層的一個(gè)指示介質(zhì)當(dāng)前被連接或被斷開(kāi)。
圖4中的方法可以包括處理輸入包的動(dòng)作(動(dòng)作401)。這可以包括過(guò)濾器實(shí)例210b接收包240a。在圖2C中,曾從過(guò)濾器實(shí)例208b發(fā)送包240a。在這個(gè)所展示的實(shí)施例中,包240a將會(huì)沿從傳輸層協(xié)議202到數(shù)據(jù)鏈路驅(qū)動(dòng)器204的數(shù)據(jù)路徑被轉(zhuǎn)移。但是,這只是起說(shuō)明性的作用,因?yàn)楫?dāng)數(shù)據(jù)包沿從數(shù)據(jù)鏈路驅(qū)動(dòng)器204到傳輸層協(xié)議202的數(shù)據(jù)路徑被轉(zhuǎn)移時(shí),也可以對(duì)其進(jìn)行過(guò)濾。也可能對(duì)正沿控制路徑被轉(zhuǎn)移的包進(jìn)行過(guò)濾。過(guò)濾器實(shí)例也可能無(wú)法按任何特定的順序?qū)ΠM(jìn)行過(guò)濾。例如,可以將包從過(guò)濾器實(shí)例208a傳送到過(guò)濾器實(shí)例210a。輸入包也可能是曾由過(guò)濾器實(shí)例創(chuàng)建的包。
在一個(gè)替換的實(shí)施例中,可以處理由包240c代表的包。包240c的處理可以確定,包240c正通過(guò)數(shù)據(jù)路徑或控制路徑被轉(zhuǎn)移,該數(shù)據(jù)路徑或控制路徑完全回避過(guò)濾器實(shí)例210b的過(guò)濾操作。如圖2C所示,虛線箭頭將包240c從過(guò)濾器208b直接轉(zhuǎn)移到過(guò)濾器實(shí)例209a。包240c可以回避過(guò)濾器實(shí)例210b,因?yàn)檫^(guò)濾器實(shí)例210b已被配置成按數(shù)據(jù)路徑或控制路徑的“回避”模式進(jìn)行操作。
過(guò)濾器實(shí)例可以由抽象接口203配置成按回避模式進(jìn)行操作。當(dāng)過(guò)濾器實(shí)例最初被啟動(dòng)或在運(yùn)行時(shí),可以將其配置為回避模式。也就是說(shuō),曾經(jīng)沒(méi)有被初始化進(jìn)入回避模式的過(guò)濾器實(shí)例以后可以被設(shè)置成按回避模式進(jìn)行操作。在初始化期間,通過(guò)指明啟動(dòng)過(guò)程中那個(gè)數(shù)據(jù)路徑的NULL處理機(jī),過(guò)濾驅(qū)動(dòng)器指出它希望過(guò)濾器實(shí)例按對(duì)一個(gè)或多個(gè)數(shù)據(jù)路徑或控制路徑的回避模式來(lái)啟動(dòng)。
在初始化之后和在運(yùn)行時(shí),過(guò)濾驅(qū)動(dòng)器可能希望將過(guò)濾器實(shí)例設(shè)置為對(duì)一些數(shù)據(jù)路徑或一些控制路徑的回避模式。在那種情況下,過(guò)濾驅(qū)動(dòng)器將要求抽象接口重新啟動(dòng)過(guò)濾器實(shí)例。然后,抽象接口將暫停使用過(guò)濾器實(shí)例,并按照此文前面所展示的各種方法來(lái)重新啟動(dòng)它。當(dāng)過(guò)濾器實(shí)例被重新啟動(dòng)時(shí),通過(guò)為被回避的路徑提供NULL處理機(jī),過(guò)濾驅(qū)動(dòng)器可以指出過(guò)濾器實(shí)例將按對(duì)一些數(shù)據(jù)路徑或控制路徑的回避模式進(jìn)行操作。
過(guò)濾器實(shí)例可以被配置成使與一些數(shù)據(jù)路徑或控制路徑有關(guān)的包回避過(guò)濾器實(shí)例,使與其他數(shù)據(jù)路徑或控制路徑有關(guān)的包由過(guò)濾器實(shí)例來(lái)接收。例如,過(guò)濾器實(shí)例可以被配置成回避狀況指示,但接收所有其他類(lèi)型的包??梢詧?zhí)行這一點(diǎn),以抑制介質(zhì)斷開(kāi)消息,應(yīng)用程序?qū)@些消息不感興趣。在另一個(gè)例子中,沿從數(shù)據(jù)鏈路層到傳輸層的數(shù)據(jù)路徑被轉(zhuǎn)移的數(shù)據(jù)包可以由過(guò)濾器實(shí)例來(lái)接收,而沿從傳輸層到數(shù)據(jù)鏈路層的數(shù)據(jù)路徑被轉(zhuǎn)移的數(shù)據(jù)包回避過(guò)濾器實(shí)例。
同樣,當(dāng)前處于數(shù)據(jù)路徑或控制路徑的回避模式的過(guò)濾器實(shí)例可以在運(yùn)行時(shí)被配置成接收該數(shù)據(jù)路徑或控制路徑的包。在這些情況下,過(guò)濾驅(qū)動(dòng)器可以要求抽象接口203重新啟動(dòng)過(guò)濾器實(shí)例。然后,抽象接口203將按照此文前面所展示的各種方法來(lái)暫停使用和重新啟動(dòng)過(guò)濾器實(shí)例。當(dāng)過(guò)濾器實(shí)例被重新啟動(dòng)時(shí),通過(guò)為被激活的數(shù)據(jù)路徑提供非NULL處理機(jī),過(guò)濾驅(qū)動(dòng)器可以指出過(guò)濾器實(shí)例將從數(shù)據(jù)路徑或控制路徑接收包。
外部事件可能會(huì)引起對(duì)過(guò)濾器實(shí)例進(jìn)行配置,使過(guò)濾器實(shí)例按回避模式進(jìn)行操作或接收包。例如,通過(guò)與防火墻有關(guān)的管理接口,用戶可以將過(guò)濾器實(shí)例配置成按一些數(shù)據(jù)路徑的回避模式進(jìn)行操作。在過(guò)濾器實(shí)例過(guò)濾操作導(dǎo)致當(dāng)前正在使用的應(yīng)用程序中斷的情況下,可以如此執(zhí)行。
圖4中的方法可以包括一個(gè)步驟轉(zhuǎn)移一個(gè)輸出包,該輸出包可能已由過(guò)濾器棧中所包括的一些(而不是所有)操作進(jìn)行過(guò)濾(步驟404)。這可以包括執(zhí)行兩個(gè)動(dòng)作回避與過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)過(guò)濾操作(動(dòng)作402);以及,如果曾執(zhí)行過(guò)濾操作,則發(fā)送一個(gè)可能不同于輸入包的輸出包(動(dòng)作403)。通過(guò)轉(zhuǎn)移回避過(guò)濾操作的包,可以提高過(guò)濾過(guò)程的效率。
回避與過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)過(guò)濾操作(動(dòng)作402)可以包括回避過(guò)濾器實(shí)例210b中所包括的一項(xiàng)或多項(xiàng)過(guò)濾操作。當(dāng)過(guò)濾器實(shí)例210b接收數(shù)據(jù)包240a時(shí),控制模塊215可以分析數(shù)據(jù)包240a的特征。分析可以包括確定輸入包的數(shù)據(jù)流的方向。數(shù)據(jù)流的方向可以從數(shù)據(jù)鏈路驅(qū)動(dòng)器到傳輸層協(xié)議,也可以從傳輸層協(xié)議到數(shù)據(jù)鏈路驅(qū)動(dòng)器。分析也可以包括確定與輸入數(shù)據(jù)包有關(guān)的一個(gè)協(xié)議,例如,IP、TCP、“網(wǎng)絡(luò)分組交換”(“IPX”)、其他傳輸層協(xié)議或與“開(kāi)放式系統(tǒng)互聯(lián)”(“OSI”)模型的各個(gè)層有關(guān)的其他協(xié)議。如果控制模塊215確定數(shù)據(jù)包240a與IPX有關(guān),則可以回避過(guò)濾器操作216a和216c。但是,如果控制模塊215確定數(shù)據(jù)包240a與IP有關(guān),則可以回避過(guò)濾器操作216b。
或者,過(guò)濾器實(shí)例210b可能被配置成使沿?cái)?shù)據(jù)路徑或控制路徑的包完全回避過(guò)濾器實(shí)例210b。如圖2C所示,可以對(duì)過(guò)濾器實(shí)例210b進(jìn)行配置,以便沿從傳輸層到數(shù)據(jù)鏈路層的數(shù)據(jù)路徑被轉(zhuǎn)移的包可以回避過(guò)濾器實(shí)例210b。如果包240c是數(shù)據(jù)包,它將會(huì)如從過(guò)濾器實(shí)例208b到過(guò)濾器實(shí)例209a的虛線箭頭所示的那樣回避過(guò)濾器實(shí)例210b。
也可能是這種情況雖然過(guò)濾器實(shí)例210b接收到一個(gè)包,但是,控制模塊215直接通過(guò)過(guò)濾器實(shí)例210b來(lái)傳送包,而不執(zhí)行任何過(guò)濾操作。如果用這種方式來(lái)回避所有的過(guò)濾操作,則數(shù)據(jù)包240a和數(shù)據(jù)包240b可能實(shí)質(zhì)上相類(lèi)似。
如果曾執(zhí)行過(guò)濾操作,則發(fā)送一個(gè)可能不同于輸入數(shù)據(jù)包的輸出數(shù)據(jù)包(動(dòng)作403),這可以包括發(fā)送包括被修改過(guò)的數(shù)據(jù)的一個(gè)數(shù)據(jù)包。如果執(zhí)行過(guò)濾器實(shí)例210b中所包括的任何過(guò)濾操作,則數(shù)據(jù)包240b可能不同于數(shù)據(jù)包240a。如果任何過(guò)濾操作曾將數(shù)據(jù)添加到數(shù)據(jù)包240a、從數(shù)據(jù)包240a中除去數(shù)據(jù)或修改數(shù)據(jù)包240a中所包括的數(shù)據(jù),則可能會(huì)發(fā)生這種情況。但是,如果沒(méi)有執(zhí)行過(guò)過(guò)濾操作,則數(shù)據(jù)包240a和數(shù)據(jù)包240b可能實(shí)質(zhì)上相類(lèi)似。
可以使用本發(fā)明的各種方法來(lái)過(guò)濾數(shù)據(jù)包,所采用的方式促進(jìn)數(shù)據(jù)包有效地流過(guò)通信路徑。過(guò)濾器實(shí)例可以被插入過(guò)濾器棧或從過(guò)濾器棧中被除去,同時(shí),有關(guān)的協(xié)議棧仍然能夠轉(zhuǎn)移數(shù)據(jù)。這節(jié)約了處理器和網(wǎng)絡(luò)資源,因?yàn)楫?dāng)過(guò)濾器棧的功能性變化時(shí),協(xié)議棧不被重建。由于過(guò)濾器實(shí)例可以被多個(gè)協(xié)議使用,因此,減少了將在計(jì)算機(jī)設(shè)備中執(zhí)行多余邏輯的可能性。此外,根據(jù)數(shù)據(jù)包和/或配置信息的特征來(lái)回避過(guò)濾操作,這減少了將執(zhí)行無(wú)關(guān)的處理器操作的可能性。
在不脫離本發(fā)明的精神或必要特征的前提下,可以用其他特殊的形式來(lái)具體表現(xiàn)本發(fā)明。所描述的實(shí)施例在所有方面都將被認(rèn)為只起說(shuō)明性的作用,而不作限制。所以,本發(fā)明的范圍由所附的權(quán)利要求(而不是前述內(nèi)容)指出。不脫離權(quán)利要求的等效物的含義和范圍的所有變化都將被包含在其范圍之內(nèi)。
權(quán)利要求書(shū)受到美國(guó)專(zhuān)利特許證的保護(hù),內(nèi)容如下所述
權(quán)利要求
1.一種在計(jì)算機(jī)設(shè)備中將過(guò)濾器實(shí)例插入過(guò)濾器棧的方法,該方法不會(huì)中斷有關(guān)的協(xié)議棧的操作,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),它包括與用于管理過(guò)濾器棧的抽象接口有關(guān)的一個(gè)或多個(gè)協(xié)議棧,過(guò)濾器棧包括一個(gè)或多個(gè)過(guò)濾器實(shí)例,可對(duì)正在經(jīng)由通信路徑被轉(zhuǎn)移的數(shù)據(jù)包執(zhí)行過(guò)濾操作,該方法的包括暫停過(guò)濾器棧操作的動(dòng)作;在將過(guò)濾器實(shí)例插入過(guò)濾器棧的同時(shí),至少一個(gè)有關(guān)的協(xié)議棧能夠繼續(xù)轉(zhuǎn)移數(shù)據(jù)的動(dòng)作;以及,開(kāi)始過(guò)濾器棧操作的動(dòng)作。
2.如權(quán)利要求1中所述的方法,其特征在于其中,暫停過(guò)濾器棧操作包括以下內(nèi)容暫停使用過(guò)濾器棧中所包括的一個(gè)或多個(gè)過(guò)濾器實(shí)例的動(dòng)作。
3.如權(quán)利要求2中所述的方法,其特征在于其中,暫停使用過(guò)濾器棧中所包括的一個(gè)或多個(gè)過(guò)濾器實(shí)例包括以下內(nèi)容一個(gè)或多個(gè)暫停例行程序接收指出應(yīng)該暫停使用一個(gè)或多個(gè)過(guò)濾器實(shí)例的數(shù)據(jù)。
4.如權(quán)利要求1中所述的方法,其特征在于其中,暫停過(guò)濾器棧操作包括以下內(nèi)容使被轉(zhuǎn)移的數(shù)據(jù)包重定向到虛擬例行程序,該虛擬例行程序?qū)?shù)據(jù)包返回到通信路徑,而不修改數(shù)據(jù)包中所包括的數(shù)據(jù)。
5.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容插入一個(gè)過(guò)濾器實(shí)例,該過(guò)濾器實(shí)例曾通過(guò)使用從抽象接口被接收的參數(shù)來(lái)加以配置。
6.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器接收一個(gè)過(guò)濾器句柄,該過(guò)濾器句柄可以被用來(lái)促進(jìn)將數(shù)據(jù)轉(zhuǎn)移到抽象接口。
7.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器為過(guò)濾器實(shí)例分配資源的動(dòng)作。
8.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器為過(guò)濾器實(shí)例創(chuàng)建過(guò)濾器實(shí)例上下文的動(dòng)作。
9.如權(quán)利要求8中所述的方法,其特征在于其中,過(guò)濾驅(qū)動(dòng)器為過(guò)濾器實(shí)例創(chuàng)建過(guò)濾器實(shí)例上下文包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器將過(guò)濾器實(shí)例上下文發(fā)送到抽象接口的動(dòng)作。
10.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器在抽象接口登記數(shù)據(jù)的動(dòng)作。
11.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器將數(shù)據(jù)登記在系統(tǒng)注冊(cè)表中的動(dòng)作。
12.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容插入過(guò)濾器實(shí)例,該過(guò)濾器實(shí)例曾通過(guò)使用從系統(tǒng)注冊(cè)表被接收的參數(shù)來(lái)加以配置。
13.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容將過(guò)濾器實(shí)例插在過(guò)濾器棧中的預(yù)定位置的動(dòng)作。
14.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容插入一個(gè)過(guò)濾器實(shí)例,該過(guò)濾器實(shí)例能夠過(guò)濾在虛擬連接上被轉(zhuǎn)移的數(shù)據(jù)包。
15.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容插入一個(gè)過(guò)濾器實(shí)例,該過(guò)濾器實(shí)例包括一個(gè)入口點(diǎn),以接收與計(jì)算機(jī)設(shè)備的能源管理有關(guān)的數(shù)據(jù)。
16.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容插入一個(gè)過(guò)濾器實(shí)例,該過(guò)濾器實(shí)例包括一個(gè)入口點(diǎn),以接收與即插即用設(shè)備有關(guān)的數(shù)據(jù)。
17.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容插入一個(gè)過(guò)濾器實(shí)例,該過(guò)濾器實(shí)例包括可以通過(guò)管理接口來(lái)加以修改的屬性。
18.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容在過(guò)濾器棧上插入一個(gè)過(guò)濾器實(shí)例,該過(guò)濾器棧與多個(gè)傳輸層協(xié)議綁字。
19.如權(quán)利要求1中所述的方法,其特征在于其中,將過(guò)濾器實(shí)例插入過(guò)濾器棧包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器證實(shí)過(guò)濾器實(shí)例曾被插入過(guò)濾器棧的動(dòng)作。
20.如權(quán)利要求19中所述的方法,其特征在于其中,過(guò)濾驅(qū)動(dòng)器證實(shí)過(guò)濾器實(shí)例曾被插入過(guò)濾器棧包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器將插入狀況發(fā)送到抽象接口的動(dòng)作。
21.如權(quán)利要求1中所述的方法,其特征在于其中,開(kāi)始過(guò)濾器棧操作包括以下內(nèi)容啟動(dòng)過(guò)濾器棧中所包括的一個(gè)或多個(gè)過(guò)濾器實(shí)例的動(dòng)作。
22.如權(quán)利要求21中所述的方法,其特征在于其中,啟動(dòng)過(guò)濾器棧中所包括的一個(gè)或多個(gè)過(guò)濾器實(shí)例包括以下內(nèi)容一個(gè)或多個(gè)啟動(dòng)例行程序接收指出應(yīng)該啟動(dòng)一個(gè)或多個(gè)過(guò)濾器實(shí)例的數(shù)據(jù)。
23.如權(quán)利要求1中所述的方法,其特征在于還包括通知有關(guān)的協(xié)議棧將要暫停過(guò)濾器棧的操作。
24.如權(quán)利要求1中所述的方法,其特征在于還包括通知有關(guān)的協(xié)議棧過(guò)濾器?,F(xiàn)在包括被插入的過(guò)濾器實(shí)例。
25.如權(quán)利要求1中所述的方法,其特征在于還包括通知有關(guān)的協(xié)議棧將要開(kāi)始操作過(guò)濾器棧。
26.一種在計(jì)算機(jī)設(shè)備中從過(guò)濾器棧中除去過(guò)濾器實(shí)例的方法,該方法不會(huì)中斷有關(guān)的協(xié)議棧的操作,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),它包括與用于管理過(guò)濾器棧的抽象接口有關(guān)的一個(gè)或多個(gè)協(xié)議棧,過(guò)濾器棧包括一個(gè)或多個(gè)過(guò)濾器實(shí)例,該方法包括暫停過(guò)濾器棧操作的動(dòng)作;在從過(guò)濾器棧中除去過(guò)濾器實(shí)例的同時(shí),至少一個(gè)有關(guān)的協(xié)議棧能夠繼續(xù)轉(zhuǎn)移數(shù)據(jù)的動(dòng)作;以及,開(kāi)始操作過(guò)濾器棧的動(dòng)作。
27.如權(quán)利要求26中所述的方法,其特征在于其中,暫停過(guò)濾器棧操作包括以下內(nèi)容暫停使用過(guò)濾器棧中所包括的一個(gè)或多個(gè)過(guò)濾器實(shí)例的動(dòng)作。
28.如權(quán)利要求27中所述的方法,其特征在于其中,暫停使用過(guò)濾器棧中所包括的一個(gè)或多個(gè)過(guò)濾器實(shí)例包括以下內(nèi)容一個(gè)或多個(gè)暫停例行程序接收指出應(yīng)該暫停使用一個(gè)或多個(gè)過(guò)濾器實(shí)例的數(shù)據(jù)。
29.如權(quán)利要求26中所述的方法,其特征在于其中,暫停過(guò)濾器棧操作包括以下內(nèi)容使被轉(zhuǎn)移的數(shù)據(jù)包重定向到各個(gè)虛擬例行程序,這些虛擬例行程序?qū)?shù)據(jù)包返回到通信路徑。
30.如權(quán)利要求26中所述的方法,其特征在于其中,從過(guò)濾器棧中除去過(guò)濾器實(shí)例包括以下內(nèi)容暫停使用過(guò)濾器實(shí)例的動(dòng)作。
31.如權(quán)利要求26中所述的方法,其特征在于其中,從過(guò)濾器棧中除去過(guò)濾器實(shí)例包括以下內(nèi)容過(guò)濾驅(qū)動(dòng)器釋放與過(guò)濾器實(shí)例有關(guān)的資源的動(dòng)作。
32.如權(quán)利要求26中所述的方法,其特征在于其中,開(kāi)始過(guò)濾器棧操作包括以下內(nèi)容啟動(dòng)過(guò)濾器棧中所包括的一個(gè)或多個(gè)過(guò)濾器實(shí)例的動(dòng)作。
33.權(quán)利要求32中所述的方法,其特征在于其中,啟動(dòng)過(guò)濾器棧中所包括的一個(gè)或多個(gè)過(guò)濾器實(shí)例包括以下內(nèi)容一個(gè)或多個(gè)啟動(dòng)例行程序接收指出應(yīng)該啟動(dòng)一個(gè)或多個(gè)過(guò)濾器實(shí)例的數(shù)據(jù)。
34.如權(quán)利要求26中所述的方法,其特征在于還包括通知有關(guān)的協(xié)議棧將要暫停過(guò)濾器棧的操作。
35.如權(quán)利要求26中所述的方法,其特征在于還包括通知有關(guān)的協(xié)議棧過(guò)濾器實(shí)例已從過(guò)濾器棧中被除去。
36.如權(quán)利要求26中所述的方法,其特征在于還包括通知有關(guān)的協(xié)議棧將要開(kāi)始過(guò)濾器棧操作。
37.一種在計(jì)算機(jī)設(shè)備中將過(guò)濾器實(shí)例插入過(guò)濾器棧的方法,該方法不會(huì)中斷有關(guān)的協(xié)議棧的操作,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備可能通過(guò)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),它包括與用于管理過(guò)濾器棧的抽象接口有關(guān)的一個(gè)或多個(gè)協(xié)議棧,可對(duì)正在經(jīng)由通信路徑被轉(zhuǎn)移的數(shù)據(jù)包的各個(gè)部分執(zhí)行過(guò)濾操作,該方法包括暫停過(guò)濾器棧操作的動(dòng)作;一個(gè)步驟重新配置過(guò)濾器棧中所包括的過(guò)濾操作,所采用的方式促進(jìn)在重新配置期間有效地沿通信路徑轉(zhuǎn)移數(shù)據(jù)。
38.一種在計(jì)算機(jī)設(shè)備中用于過(guò)濾與一個(gè)或多個(gè)協(xié)議有關(guān)的包的方法,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)一個(gè)或多個(gè)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),它包括與抽象接口有關(guān)的一個(gè)或多個(gè)協(xié)議棧,該抽象接口管理可以對(duì)包執(zhí)行過(guò)濾操作的一個(gè)或多個(gè)過(guò)濾器實(shí)例,該方法包括處理輸入包的動(dòng)作;輸入包回避與過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)過(guò)濾操作的動(dòng)作;以及如果曾執(zhí)行過(guò)過(guò)濾操作,則發(fā)送一個(gè)可能不同于輸入包的輸出包的動(dòng)作。
39.如權(quán)利要求38中所述的方法,其特征在于其中,處理輸入包包括以下內(nèi)容處理與數(shù)據(jù)鏈路層有關(guān)的輸入包的動(dòng)作。
40.如權(quán)利要求38中所述的方法,其特征在于其中,處理有關(guān)的輸入包包括以下內(nèi)容處理與數(shù)據(jù)鏈路層驅(qū)動(dòng)器有關(guān)的輸入包的動(dòng)作。
41.如權(quán)利要求38中所述的方法,其特征在于其中,處理輸入包包括以下內(nèi)容處理與傳輸層協(xié)議有關(guān)的輸入包的動(dòng)作。
42.如權(quán)利要求41中所述的方法,其特征在于其中,處理與傳輸層協(xié)議有關(guān)的輸入包包括以下內(nèi)容處理與“傳輸控制協(xié)議”有關(guān)的輸入數(shù)據(jù)包的動(dòng)作。
43.如權(quán)利要求41中所述的方法,其特征在于其中,處理與傳輸層協(xié)議有關(guān)的輸入包包括以下內(nèi)容處理與“互聯(lián)網(wǎng)協(xié)議”有關(guān)的輸入數(shù)據(jù)包的動(dòng)作。
44.如權(quán)利要求41中所述的方法,其特征在于其中,處理與傳輸層協(xié)議有關(guān)的輸入包包括以下內(nèi)容處理來(lái)自傳輸層驅(qū)動(dòng)器的輸入包的動(dòng)作。
45.如權(quán)利要求38中所述的方法,其特征在于其中,處理輸入包包括以下內(nèi)容處理沿從傳輸層到數(shù)據(jù)鏈路層的數(shù)據(jù)路徑被轉(zhuǎn)移的數(shù)據(jù)包的動(dòng)作。
46.如權(quán)利要求38中所述的方法,其特征在于其中,處理輸入包包括以下內(nèi)容處理沿從數(shù)據(jù)鏈路層到傳輸層的數(shù)據(jù)路徑被轉(zhuǎn)移的數(shù)據(jù)包的動(dòng)作。
47.如權(quán)利要求38中所述的方法,其特征在于其中,處理輸入包包括以下內(nèi)容處理控制包,該控制包包括請(qǐng)求信息并正在沿控制路徑被轉(zhuǎn)移。
48.如權(quán)利要求38中所述的方法,其特征在于其中,處理輸入包包括以下內(nèi)容處理控制包,該控制包包括系統(tǒng)指示信息并正在沿控制路徑被轉(zhuǎn)移。
49.如權(quán)利要求38中所述的方法,其特征在于其中,輸入包回避與過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)過(guò)濾操作包括以下內(nèi)容所接收的輸入包回避與過(guò)濾器棧中所包括的過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)內(nèi)部過(guò)濾操作。
50.如權(quán)利要求38中所述的方法,其特征在于其中,輸入包回避與過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)過(guò)濾操作包括以下內(nèi)容所接收的輸入包根據(jù)與該輸入包有關(guān)的特征來(lái)回避與過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)內(nèi)部過(guò)濾操作。
51.如權(quán)利要求38中所述的方法,其特征在于其中,輸入包回避與過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)過(guò)濾操作包括以下內(nèi)容輸入包完全回避過(guò)濾器實(shí)例的動(dòng)作。
52.如權(quán)利要求51中所述的方法,其特征在于其中,輸入包完全回避過(guò)濾器實(shí)例包括以下內(nèi)容輸入包完全回避過(guò)濾器實(shí)例,因?yàn)樵鴮⑦^(guò)濾器實(shí)例配置成按通信路徑的回避模式進(jìn)行操作,輸入包正在沿該通信路徑被轉(zhuǎn)移。
53.如權(quán)利要求50中所述的方法,其特征在于其中,輸入包根據(jù)關(guān)于輸入包的特征來(lái)回避與過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)過(guò)濾操作包括以下內(nèi)容當(dāng)輸入包與第一個(gè)協(xié)議有關(guān)時(shí),回避第一套過(guò)濾操作;當(dāng)輸入包與第二個(gè)協(xié)議有關(guān)時(shí),回避第二套過(guò)濾操作。
54.如權(quán)利要求53中所述的方法,其特征在于其中,第一套過(guò)濾操作和第二套過(guò)濾操作不同。
55.如權(quán)利要求38中所述的方法,其特征在于其中,如果曾對(duì)輸入包執(zhí)行過(guò)濾操作,則發(fā)送一個(gè)可能不同于輸入包的輸出包,這包括以下內(nèi)容如果過(guò)濾操作修改過(guò)輸入包,則發(fā)送一個(gè)可能不同于輸入包的輸出包。
56.一種在計(jì)算機(jī)設(shè)備中用于過(guò)濾與一個(gè)或多個(gè)協(xié)議有關(guān)的包的方法,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)一個(gè)或多個(gè)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),它包括與用于管理過(guò)濾器棧的抽象接口有關(guān)的一個(gè)或多個(gè)協(xié)議棧,該方法包括接收與協(xié)議有關(guān)的一個(gè)輸入包的動(dòng)作;一個(gè)步驟轉(zhuǎn)移一個(gè)輸出包,該輸出包已由過(guò)濾器棧中所包括的一些而不是所有過(guò)濾操作進(jìn)行過(guò)濾,以便提高過(guò)濾過(guò)程的效率。
57.一種在計(jì)算機(jī)設(shè)備中用于過(guò)濾與一個(gè)或多個(gè)協(xié)議有關(guān)的包的方法,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)一個(gè)或多個(gè)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),該計(jì)算機(jī)設(shè)備包括與一個(gè)或多個(gè)過(guò)濾器實(shí)例有關(guān)的一個(gè)或多個(gè)協(xié)議棧,這些過(guò)濾器實(shí)例可以對(duì)包執(zhí)行過(guò)濾操作,該方法包括過(guò)濾器實(shí)例接收一個(gè)輸入包的動(dòng)作;當(dāng)通過(guò)從數(shù)據(jù)鏈路層到傳輸層的通信路徑來(lái)轉(zhuǎn)移輸入包時(shí),回避第一套過(guò)濾操作;當(dāng)通過(guò)從傳輸層到數(shù)據(jù)鏈路層的通信路徑來(lái)轉(zhuǎn)移輸入包時(shí),回避第二套過(guò)濾操作的動(dòng)作;以及如果曾執(zhí)行過(guò)過(guò)濾操作,則發(fā)送一個(gè)可能不同于輸入包的輸出包的動(dòng)作。
58.如權(quán)利要求57中所述的方法,其特征在于其中,第一套過(guò)濾操作和第二套過(guò)濾操作不同。
59.如權(quán)利要求57中所述的方法,其特征在于其中,通信路徑是數(shù)據(jù)路徑。
60.如權(quán)利要求57中所述的方法,其特征在于其中,通信路徑是控制路徑。
61.一種在計(jì)算機(jī)設(shè)備中用于過(guò)濾與一個(gè)或多個(gè)協(xié)議有關(guān)的包的方法,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)一個(gè)或多個(gè)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),該計(jì)算機(jī)設(shè)備包括與一個(gè)或多個(gè)過(guò)濾器實(shí)例有關(guān)的一個(gè)或多個(gè)協(xié)議棧,這些過(guò)濾器實(shí)例可以對(duì)包執(zhí)行過(guò)濾操作,該方法包括處理當(dāng)前正通過(guò)通信路徑被轉(zhuǎn)移的一個(gè)包的動(dòng)作;包完全回避通信路徑中的第一個(gè)過(guò)濾器實(shí)例的動(dòng)作,因?yàn)樵鴮⒌谝粋€(gè)過(guò)濾器實(shí)例配置成按通信路徑的回避模式進(jìn)行操作;以及包正由通信路徑中的第二個(gè)過(guò)濾器實(shí)例接收的動(dòng)作,曾將該通信路徑配置成接收正通過(guò)通信路徑被轉(zhuǎn)移的包。
62.如權(quán)利要求61中所述的方法,其特征在于其中,包完全回避通信路徑中的第一個(gè)過(guò)濾器實(shí)例,因?yàn)樵鴮⒌谝粋€(gè)過(guò)濾器實(shí)例配置成按通信路徑的回避模式進(jìn)行操作,這包括以下內(nèi)容包完全回避通信路徑中的第一個(gè)過(guò)濾器實(shí)例,因?yàn)槌橄蠼涌谠鴮⒌谝粋€(gè)過(guò)濾器實(shí)例配置成按通信路徑的回避模式進(jìn)行操作。
63.如權(quán)利要求62中所述的方法,其特征在于還包括抽象接口對(duì)過(guò)濾器實(shí)例進(jìn)行配置,以恢復(fù)接收包。
64.如權(quán)利要求61中所述的方法,其特征在于,包完全回避通信路徑中的第一個(gè)過(guò)濾器實(shí)例,因?yàn)樵鴮⒌谝粋€(gè)過(guò)濾器實(shí)例配置成按通信路徑的回避模式進(jìn)行操作,這包括以下內(nèi)容輸入數(shù)據(jù)包完全回避數(shù)據(jù)路徑中的第一個(gè)過(guò)濾器實(shí)例,因?yàn)樵鴮⒌谝粋€(gè)過(guò)濾器實(shí)例配置成按數(shù)據(jù)路徑的回避模式進(jìn)行操作。
65.如權(quán)利要求61中所述的方法,其特征在于,包完全回避通信路徑中的第一個(gè)過(guò)濾器實(shí)例,因?yàn)樵鴮⒌谝粋€(gè)過(guò)濾器實(shí)例配置成按通信路徑的回避模式進(jìn)行操作,這包括以下內(nèi)容輸入控制包完全回避控制路徑中的第一個(gè)過(guò)濾器實(shí)例,因?yàn)樵鴮⒌谝粋€(gè)過(guò)濾器示例配置成按控制路徑的回避模式進(jìn)行操作。
66.一種計(jì)算機(jī)程序產(chǎn)品,用于在計(jì)算機(jī)設(shè)備中執(zhí)行將過(guò)濾器實(shí)例插入過(guò)濾器棧的一種方法,該方法不會(huì)中斷有關(guān)的協(xié)議棧的操作,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),它包括與用于管理過(guò)濾器棧的抽象接口有關(guān)的一個(gè)或多個(gè)協(xié)議棧,可對(duì)正在經(jīng)由通信路徑被轉(zhuǎn)移的數(shù)據(jù)包的各個(gè)部分執(zhí)行過(guò)濾操作,該計(jì)算機(jī)程序產(chǎn)品包括攜帶計(jì)算機(jī)可執(zhí)行指令的一個(gè)計(jì)算機(jī)可讀介質(zhì),當(dāng)這些計(jì)算機(jī)可執(zhí)行指令在計(jì)算機(jī)設(shè)備處被執(zhí)行時(shí),它們使計(jì)算機(jī)設(shè)備執(zhí)行該方法,包括暫停過(guò)濾器棧操作的動(dòng)作;在將過(guò)濾器實(shí)例插入過(guò)濾器棧的同時(shí),至少一個(gè)有關(guān)的協(xié)議棧能夠繼續(xù)轉(zhuǎn)移數(shù)據(jù)的動(dòng)作;以及開(kāi)始過(guò)濾器棧操作的動(dòng)作。
67.一種計(jì)算機(jī)程序產(chǎn)品,用于在計(jì)算機(jī)設(shè)備中執(zhí)行將過(guò)濾器實(shí)例插入過(guò)濾器棧的一種方法,該方法不會(huì)中斷有關(guān)的協(xié)議棧的操作,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),它包括與用于管理過(guò)濾器棧的抽象接口有關(guān)的一個(gè)或多個(gè)協(xié)議棧,該過(guò)濾器棧包括一個(gè)或多個(gè)過(guò)濾器實(shí)例,可對(duì)正在經(jīng)由通信路徑被轉(zhuǎn)移的數(shù)據(jù)包的各個(gè)部分執(zhí)行過(guò)濾操作,該計(jì)算機(jī)程序產(chǎn)品包括攜帶計(jì)算機(jī)可執(zhí)行指令的一個(gè)計(jì)算機(jī)可讀介質(zhì),當(dāng)這些計(jì)算機(jī)可執(zhí)行指令在計(jì)算機(jī)設(shè)備處被執(zhí)行時(shí),它們使計(jì)算機(jī)設(shè)備執(zhí)行該方法,包括暫停過(guò)濾器棧操作的動(dòng)作;在從過(guò)濾器棧中除去過(guò)濾器實(shí)例的同時(shí),至少一個(gè)有關(guān)的協(xié)議棧能夠繼續(xù)轉(zhuǎn)移數(shù)據(jù)的動(dòng)作;以及開(kāi)始過(guò)濾器棧操作的動(dòng)作。
68.一種計(jì)算機(jī)程序產(chǎn)品,用于在計(jì)算機(jī)設(shè)備中執(zhí)行一種用于過(guò)濾與一個(gè)或多個(gè)協(xié)議有關(guān)的包的方法,以節(jié)約處理器和網(wǎng)絡(luò)資源,該計(jì)算機(jī)設(shè)備能通過(guò)一個(gè)或多個(gè)通信路徑以通訊聯(lián)絡(luò)的方式被耦合到網(wǎng)絡(luò),它包括與管理過(guò)濾器棧的抽象接口有關(guān)的一個(gè)或多個(gè)協(xié)議棧,該過(guò)濾器棧包括可以對(duì)包的各個(gè)部分執(zhí)行過(guò)濾操作的一個(gè)或多個(gè)過(guò)濾器實(shí)例,該計(jì)算機(jī)程序產(chǎn)品的特征在于包括攜帶計(jì)算機(jī)可執(zhí)行指令的一個(gè)計(jì)算機(jī)可讀介質(zhì),當(dāng)這些計(jì)算機(jī)可執(zhí)行指令在計(jì)算機(jī)設(shè)備處被執(zhí)行時(shí),它們使計(jì)算機(jī)設(shè)備執(zhí)行該方法,包括處理一個(gè)輸入包的動(dòng)作;輸入包回避與一個(gè)過(guò)濾器實(shí)例有關(guān)的一項(xiàng)或多項(xiàng)過(guò)濾操作的動(dòng)作;以及如果曾對(duì)輸入包執(zhí)行過(guò)濾操作,則發(fā)送一個(gè)可能不同于輸入包的輸出包的動(dòng)作。
全文摘要
本發(fā)明提出了一種網(wǎng)絡(luò)過(guò)濾驅(qū)動(dòng)器的構(gòu)造和運(yùn)行環(huán)境。其中過(guò)濾數(shù)據(jù)包所采用的方式促進(jìn)數(shù)據(jù)有效地流過(guò)通信路徑。過(guò)濾器棧包括一個(gè)或多個(gè)過(guò)濾器實(shí)例,這些過(guò)濾器實(shí)例可以過(guò)濾通過(guò)過(guò)濾器棧的數(shù)據(jù)包。該過(guò)濾器棧與一個(gè)或多個(gè)協(xié)議棧有關(guān),這些協(xié)議棧在計(jì)算機(jī)設(shè)備與網(wǎng)絡(luò)之間的通信路徑中發(fā)揮作用。當(dāng)過(guò)濾實(shí)例被插入過(guò)濾器?;驈倪^(guò)濾器棧中被除去時(shí),有關(guān)的協(xié)議棧仍然能夠轉(zhuǎn)移數(shù)據(jù)。抽象接口通過(guò)將數(shù)據(jù)傳送到創(chuàng)建過(guò)濾器實(shí)例的過(guò)濾驅(qū)動(dòng)器,來(lái)促進(jìn)插入和除去過(guò)濾器實(shí)例。過(guò)濾驅(qū)動(dòng)器可以創(chuàng)建多個(gè)過(guò)濾器實(shí)例??梢愿鶕?jù)數(shù)據(jù)流、控制流的方向和包的特征來(lái)回避與過(guò)濾器實(shí)例有關(guān)的過(guò)濾操作。
文檔編號(hào)H04L29/08GK1424663SQ0215616
公開(kāi)日2003年6月18日 申請(qǐng)日期2002年12月11日 優(yōu)先權(quán)日2001年12月11日
發(fā)明者A·默奇, A·達(dá)巴格, A·迪布, F·F·劉 申請(qǐng)人:微軟公司