CN1262941C - 网络过滤驱动器的构造和运行环境 - Google Patents
网络过滤驱动器的构造和运行环境 Download PDFInfo
- Publication number
- CN1262941C CN1262941C CN02156164.8A CN02156164A CN1262941C CN 1262941 C CN1262941 C CN 1262941C CN 02156164 A CN02156164 A CN 02156164A CN 1262941 C CN1262941 C CN 1262941C
- Authority
- CN
- China
- Prior art keywords
- filtrator
- stack
- relevant
- method described
- bag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Expired - Fee Related
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
- H04L63/0227—Filtering policies
- H04L63/0263—Rule management
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/20—Network architectures or network communication protocols for network security for managing network security; network security policies in general
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/321—Interlayer communication protocols or service data unit [SDU] definitions; Interfaces between layers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Business, Economics & Management (AREA)
- General Business, Economics & Management (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
- Small-Scale Networks (AREA)
- Communication Control (AREA)
Abstract
过滤数据包,所采用的方式促进数据有效地流过通信路径。过滤器栈包括一个或多个过滤器实例,这些过滤器实例可以过滤通过过滤器栈的数据包。该过滤器栈与一个或多个协议栈有关,这些协议栈在计算机设备与网络之间的通信路径中发挥作用。当过滤实例被***过滤器栈或从过滤器栈中被除去时,有关的协议栈仍然能够转移数据。抽象接口通过将数据传送到创建过滤器实例的过滤驱动器,来促进***和除去过滤器实例。过滤驱动器可以创建多个过滤器实例。可以根据数据流、控制流的方向和包的特征来回避与过滤器实例有关的过滤操作。
Description
技术领域
本发明涉及过滤数据包。尤其是,本发明涉及用于一种抽象接口的***、方法和计算机程序产品,以便管理将过滤器实例***过滤器栈、从过滤器栈中除去过滤器实例,以及回避过滤器实例的功能性,而不中断有关的协议栈操作。
背景技术
在当今世界,大量的计算机通过计算机网络(例如,互联网)而彼此耦合,这使各台计算机能够交换数据。但是,这些计算机中的大多数计算机的耦合关系并不是直接的一对一的关系。相反,这些计算机通常处于多台计算机被互连的网络环境中,每台计算机都可以与网络中的所有其他的计算机交换数据。随着被耦合到传统网络的计算机的数量的增加,通过这类网络而被转移的数据的数量也增长了。结果,开发了一些用于通过计算机网络来有效、可靠地转移数据的技术。
促进数据通过网络来被有效转移的一种技术是“分包”(“packetizing”)。通过分包技术,大量数据被分成较小的段或“包”。与庞大的数据相比,包所要求的用于处理的资源较少。此外,通过使用包,可以用递增的方式来接收数据,这样,当传输中发生错误时,必须被重新发送的数据的数量减少了。
另一种技术是使用“开放式***互联”(“OSI”)模型,该技术定义用于执行通信协议的联网结构。OSI模型中将数据转移操作分入七个不同的“层”中进行,每个层被指定执行数据转移过程中的某些操作。虽然一些联网应用程序已实现了每个层,但是,许多应用程序只实现用于通过网络来转移数据的选择性层。由多数协议栈中引入的两个层是传输层和数据链路层。传输层通常与分包的数据有关。传输层协议的一个例子是“传输控制协议”(“TCP”)。数据链路层通常与将位编码成包以及将包解码成位有关。
将数据从计算机设备发送到网络通常包括为庞大的数据分包的一个传输层驱动器、将包解码成位的一个数据链路层驱动器,以及将位传输到网络上的网络硬件(例如,网卡)。从网络接收数据的计算机设备通常包括按相反顺序进行的这些操作。也就是说,硬件设备接收位,数据链路层驱动器将位编码成包,这些包被发送到传输层驱动器,进而结合成庞大的数据。当将包解码成分派给网络硬件的位时,以及当将位编码成分派给传输层协议的包时,数据链路层驱动器可以对数据执行特殊的操作。这是有利的,因为数据在被发送到网络上或被发送到更高层次的协议之前可能需要进行修改。
过去,为某个特殊的平台编写或指定数据链路层驱动器,以促进数据的兼容转移。随着协议和硬件设备类型的数量的激增,这导致了一些问题的产生。要删除、添加或修改数据链路层驱动器所执行的操作,必须完全重写驱动器。重写数据链路层驱动器的成本十分昂贵,涉及高水平的专门技术,经常会造成现有硬件的荒废或使这类硬件的用户放弃被增强的功能性。此外,当计算机***内存在多个数据链路层驱动器时,各种数据链路层驱动器中所包括的功能可能会变成多余,却仍要求一些适当的操作。
结果,在协议栈的数据链路层方面,开发了一些其他的方法,用于对数据执行操作。一种这类的方法是“IP防火墙钩”,用于当数据包在协议栈的数据链路层与传输层之间传递时“钩住”这些数据包。钩住包的好处在于:可以容易地执行数据监控功能,例如,检查包的起源地址,以确定应该对包进行处理还是放弃。但是,钩住包的好处也有限,因为可能无法修改包并将其插回到数据流中。另外,还开发了与钩住包不相兼容的其他更现代的联网技术。例如,IP防火墙钩不能与普遍使用的“互联网连接共享”技术共同操作。
用于对通过协议栈的数据链路层的数据包执行操作的另一种方法是:使用“中间驱动器”。中间驱动器介于传输层与数据链路层之间,可以执行传统的数据监控和其他更先进的过滤功能(例如,数据压缩和加密)。中间驱动器允许为协议栈添加功能性或删除功能性,而不必重写根本的链接层设备驱动器。此外,可以对多个中间驱动器进行分层,以便对通过数据链路层的数据执行一系列功能。
与IP防火墙钩相比,中间驱动器所提供的功能性增加了,但是,中间驱动器存在某些固有的问题。中间驱动器的安装和配置经常涉及合并来自一个操作***部件(例如,注册表)的数据或将数据提供给一个操作***部件(例如,注册表)。其中有中间驱动器处理操作***数据的过滤环境是有害的,这至少有两个原因。
从协议栈安装或除去中间驱动器可能会要求拆卸和重建该协议栈。这可能会导致必须重建协议栈,以便添加中间驱动器的功能性。同样,如果编写数据的中间驱动器不被重建,则会使协议栈发生故障。拆卸和重建协议栈可能包括重新启动计算机***,以便为中间驱动器对数据进行适当的初始化。此外,在某些情况下,在所安装的中间驱动器被激活之后,它可能只需要观察网络数据。但是,即使中间驱动器处于不活动的状态,它也将保持被安装并使用各种宝贵的操作***资源,因而使网络性能退化。
所以,我们需要的是一些***、方法和计算机程序产品,用于按节约处理资源和网络资源的方式来有效地过滤数据包并改变过滤操作。
发明内容
本发明的原理用于有效地过滤数据包和改变过滤操作。计算机设备中所包括的协议栈与可能包括一个或多个过滤器实例的过滤器栈有关。与协议栈有关的数据包通过过滤器实例,这些过滤器实例可以对该数据包执行过滤操作。过滤器实例可以被***过滤器栈或从过滤器栈中被除去,所采用的方式减少了中断有关的协议栈的可能性。
此外,可以根据数据包和/或配置参数的特征来回避与过滤器实例有关的过滤操作。可以用各种方式来回避过滤操作。当包完全避开与通信路径(例如,数据路径或控制路径)有关的过滤器实例时,可以回避过滤操作。当不对所接收的数据包执行过滤器实例内部的一项或多项过滤操作时,也可以回避过滤操作。抽象接口通过调用过滤驱动器来管理过滤器栈,这些过滤驱动器促进动态地***和除去对应于该过滤器栈的过滤器实例。
当过滤器实例被***过滤器栈时,过滤驱动器可以从抽象接口接收参数。这些参数有助于过滤器实例的配置,以执行过滤操作。可以对过滤器实例进行配置,以便根据被输入的数据包的特征来执行不同的过滤操作。例如,一个过滤器栈可能会既过滤“互联网协议”(“IP”)包,又过滤“网络分组交换”(“IPX”)包。如果合适的话,不管数据是被包括在IP包中还是被包括在IPX包中,这些参数都可能会使过滤器实例执行相同的处理。此外,如果合适的话,这些参数也可能会根据数据是被包括在IP包中还是被包括在IPX包中,来使过滤器实例执行类似(但有些不同)的处理。
较之于每个传输使用一个实例,所有传输使用一个单个的过滤器栈来过滤数据包,可以减少由计算机设备配置和保持的过滤器实例的数量。这减少了过滤器栈将被配置多余逻辑的可能性,因此也降低了与过滤数据包有关的操作的复杂程度。
当抽象接口促进将新的过滤器实例***操作的过滤器栈时,它可能首先通知有关的协议栈:将要暂停使用当前的过滤器栈。然后,抽象接口可能会暂停使用过滤器栈。暂停使用过滤器栈可能会涉及调用与当前过滤器栈中的每个过滤器实例有关的“暂停”模块。一旦所有的过滤器实例都被暂停使用,就可以将新的过滤器实例***过滤器栈中的适当的位置。然后,抽象接口可以通知所有协议:过滤器栈将被启动,它包括最新添加的过滤器实例的功能性。然后,可以启动新的过滤器栈。这可能会涉及调用与新的过滤器栈中的每个过滤器模块有关的“启动”模块。
当将过滤器实例***过滤器栈时,抽象接口可以将参数(包括一个“过滤器句柄”)发送到有关的过滤驱动器。过滤器句柄实质上是一个返回地址,过滤驱动器可以使用该返回地址将与过滤器实例有关的数据传送到抽象接口。通过使用所接收的参数,过滤驱动器可以创建“过滤器上下文”,并为有关的过滤器实例分配资源。然后,可以将有关的过滤器实例的过滤器上下文传送到抽象接口。过滤器上下文实质上是抽象接口可用来将数据传送到与对应的过滤器实例有关的过滤驱动器的返回地址。
可以根据所接收的参数来将过滤器实例***过滤器栈。过滤驱动器可以将状况代码发送到抽象接口,指出尝试将过滤器实例***过滤器栈的各种结果。通过使用不同的过滤器句柄,可以将同一个过滤器的多个独立的过滤器实例安装到过滤器栈中。可以用一种方式来执行所有这些操作,该方式减少了拆卸有关的协议栈或重置有关的操作***的可能性。
在数据实际转移期间,过滤器实例可以根据其所接收的一个被输入的数据包的特征来执行一些(而不是全部)有关的内部过滤操作。例如,当过滤器实例收到一个IP包时,它可以执行某些过滤操作;如果过滤器实例收到一个IPX包,则不会执行这些过滤操作。过滤器实例也可以被配置成用“回避”模式进行操作,其中,包完全回避与通信路径(例如,数据路径或控制路径)有关的过滤器实例。由于不使用处理器资源来执行无关的过滤操作,因此,这提高了过滤过程的效率。
本发明的额外的特点和优点将在下文中加以陈述,其部分内容将从描述中显而易见,或可以通过实践本发明而得知。可以利用所附权利要求中所特别指出的工具和组合装置来实现并获得本发明的各种特点和优点。通过以下描述和所附权利要求,将更加清楚本发明的这些和其他的特点,或者,可以通过实践如下文所述的本发明来对其加以了解。
附图说明
为了描述本发明上述和其他的优点与特点的获得方式,将参考附图中所展示的本发明的特殊实施例,来对以上作简要描述的本发明进行更加详细的描述。不言而喻,这些附图只描绘本发明的典型实施例,因此,它们不被认为是本发明范围的限制。将通过使用附图来更加确切、详细地描述和解释本发明。在这些附图中:
图1展示了为本发明提供合适的操作环境的一种示例处理***。
图2A展示了一些功能性部件的一个例子,这些功能性部件可以促进将过滤器实例***过滤器栈。
图2B展示了一些交互过程的一个例子,这些交互过程可能发生在各个功能性部件之间,以促进将过滤器实例***过滤器栈。
图2C展示了一些功能性部件的一个例子,这些功能性部件可以促进回避与过滤器实例有关的过滤操作。
图3是流程图,展示了用于将过滤器实例***过滤器栈的方法的一个例子。
图4是流程图,展示了用于至少回避与过滤器实例有关的一些过滤操作的方法的一个例子。
具体实施方式
本发明涉及***、方法和计算机程序产品,用于过滤数据包,所采用的方式可节约处理器和网络资源。一种抽象接口对过滤器栈进行管理,过滤器栈包括一个或多个过滤器实例。每个过滤器实例都可以对从网络接收到的或被发送到网络的数据包执行过滤操作。过滤器实例可以根据可完全回避过滤器实例的一个数据包或多个数据包的特征来执行不同的过滤操作。此外,过滤器实例可以被添加到过滤器栈或从过滤器栈中被除去,所采用的方式减少了必须重新启动有关的协议栈的可能性。能够容易地交换过滤器实例(每个过滤器实例都可以执行不同的过滤操作)的能力,这会产生许多不同的过滤选项。
要从过滤器栈添加或除去过滤器实例,可以首先暂停使用过滤器栈。暂停使用过滤器栈可以包括:暂停使用过滤器栈中所包括的各个单独的过滤器实例。当将要暂停使用过滤器栈时,可以通知利用该过滤器栈来执行过滤操作的协议栈。当暂停使用过滤器栈时,抽象接口可以调用过滤驱动器,来***或除去过滤器实例。在***或除去过滤器实例之后,可以将过滤器栈的新配置通知给有关的协议栈。
在操作期间,抽象接口在传输层与数据链路层之间进行操作,以管理数据包到过滤器栈的转移。当抽象接口从数据链路层接收到数据包时,它将数据包传送到过滤器栈,从离数据链路层最近的过滤器实例开始。然后,抽象接口可以接连将数据包依次传送到离传输层较近的每个过滤器实例,直到数据包通过所有的过滤器模块为止。然后,抽象接口可以将被过滤的数据包发送到传输层。
当抽象接口从传输层接收到数据包时,它按实质上相反的顺序来执行这些操作。抽象接口将数据包传送到过滤器栈,从离传输层最近的过滤器实例开始。然后,抽象接口可以接连将数据包传送到离数据链路层较近的每个过滤器实例,直到数据包通过所有的过滤器实例为止。然后,抽象接口可以将被过滤的数据包发送到数据链路层。
在通过过滤器栈的转移期间,不同的数据包可以由不同的过滤操作来进行过滤。这可能由数据包的特征引起。例如,“互联网协议”(“IP”)包的过滤方式可能不同于“网络分组交换”(“IPX”)包的过滤方式。用不同的过滤操作来过滤不同的数据包也可能由数据包的流向引起。也就是说,对从数据链路层被转移到传输层的数据包执行的过滤操作可能不同于对从传输层被转移到数据链路层的数据包执行的过滤操作。
可能是这种情况:在一个数据流方向上,数据包完全回避过滤器实例;而在另一个数据流方向上,数据包不完全回避过滤器实例。例如,正从数据链路层被转移到传输层的数据包可以完全回避过滤器实例,而正从传输层被转移到数据链路层的数据包由过滤器实例进行过滤。除了数据包以外,也可以对过滤器栈进行配置,以便通过过滤器栈的控制信息完全回避过滤器实例。
本发明的实施例可以包括专用或通用计算机(包括各种部件),下文将更加详细地加以讨论。本发明范围内的实施例还可以包括计算机可读介质,用于携带或保存被存储于其上的计算机可执行指令或数据结构。这类计算机可读介质可以是通用或专用计算机能够存取的任何可用的介质。举例来说(但不作限制),这类计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储器、磁盘存储器或其他磁性存储设备,或可以被用于以计算机可执行指令或数据结构的形式来携带或存储所需的程序代码方法并可以由通用或专用计算机进行存取的任何其他的介质。
当信息通过网络或另一种通信连接(硬连线通信连接、无线通信连接,或者硬连线通信连接或无线通信连接的组合)被转移或提供给计算机时,计算机适当地将连接视作一种计算机可读介质。因此,任何这样的连接都适于被称为“计算机可读介质”。上述内容的组合也应该被包括在计算机可读介质的范围内。例如,计算机可执行指令包括可以使通用计算机、专用计算机或专用处理设备执行某项功能或某组功能的指令和数据。
图1和以下的讨论意在对可以实施本发明的一种合适的计算机环境进行简要、一般的描述。虽然不作要求,但是,将在计算机可执行指令(例如,程序模块)的总环境中描述本发明,这些计算机可执行指令由网络环境中的计算机执行。通常,程序模块包括执行特殊任务或实现特殊抽象数据类型的例行程序、程序、对象、组件、数据结构等。计算机可执行指令、有关的数据结构和程序模块代表用于执行这里所揭示的各种方法的步骤的程序代码方法的例子。这类可执行指令或有关的数据结构的特殊顺序代表用于执行这类步骤中所描述的各种功能的对应动作的例子。
精通该技术领域的人将会理解,可以在具有许多类型的计算机***配置的各种网络计算机环境中实践本发明,包括个人计算机、手持设备、移动电话、个人数字助理(“PDA”)、多处理器***、基于微处理器的或可编程的消费电子设备、网络PCs、小型计算机、大型计算机和类似的设备。也可以在各种分布式计算机环境中实践本发明,在这些分布式计算机环境中,本地处理设备和远程处理设备通过通信网络被连接(通过硬连线链接、无线链接,或者通过硬连线链接或无线链接的组合),并且,地方处理设备和远程处理设备都执行任务。
参考图1,用于实施本发明的一种示例***包括采用传统计算机120的形式的一个通用计算机设备,传统计算机120包括一个处理单元121、一个***存储器122和将各种***部件(包括***存储器122)耦合到处理单元121的一个***总线123。***总线123可以是几种总线结构(包括一个存储总线或存储控制器、一个***总线,以及使用各种总线构造中的任一种构造的一个本地总线)中的任何一种。***存储器可以包括只读存储器(“ROM”)124和随机存取存储器(“RAM”)125。基本输入/输出***(“BIOS”)126可以被存储在ROM 124中,基本输入/输出***包含帮助在计算机120内的各个元件之间转移信息的各种基本例行程序(如在启动期间)。
计算机120也可以包括用于从磁性硬盘139读取和对其写入的一个磁性硬盘驱动器127、用于从可移动的磁盘129读取或对其写入的一个磁盘驱动器128,以及用于从可移动的光盘131(例如,CD-ROM或其他光学介质)读取或对其写入的一个光盘驱动器130。磁性硬盘驱动器127、磁盘驱动器128和光盘驱动器130分别通过硬盘驱动器接口132、磁盘驱动器接口133和光驱接口134被连接到***总线123。驱动器及其有关的计算机可读介质为计算机120提供计算机可执行指令、数据结构、程序模块和其他数据进行非易失性存储。虽然这里所描述的示例环境使用磁性硬盘139、可移动的磁盘129和可移动的光盘131,但是,也可以使用用于存储数据的其他类型的计算机可读介质,包括盒式磁带、闪存卡、数字多用途盘片、伯努里式编码磁带、RAM、ROM和类似物。
包含一个或多个程序模块的程序代码方法可以被存储在硬盘139、磁盘129、光盘131、ROM 124或RAM 125上,包括一个操作***135、一个或多个应用程序136、其他程序模块137和程序数据138。用户可以通过键盘140、指示设备142或其他输入设备(未示出)(例如,话筒、操纵杆、游戏手柄、圆盘式***天线、扫描仪或类似的设备)来将命令和信息输入计算机120。这些和其他的输入设备经常通过与***总线123相耦合的串行端口接口146被连接到处理单元121。或者,各个输入设备可以由其他的接口(例如,并行端口、游戏端口或“通用串行总线”(“USB”))来连接。监视器147或另一个显示设备也经由一个接口(例如,视频适配器148)被连接到***总线123。除了监视器以外,个人计算机通常包括其他的***输出设备(未示出)(例如,扬声器和打印机)。
计算机120可以在使用与一台或多台远程计算机(例如,远程计算机149a和149b)的逻辑连接的联网环境中进行操作。远程计算机149a和149b都可以是另一台个人计算机、服务器、路由器、网络PC、对等设备或其他共公网络节点。虽然图1中只展示了内存存储设备150a与150b及其有关的应用程序136a与136b,但是,远程计算机149a和149b可以包括与计算机120有关的上述许多或所有元件。图1中所描绘的逻辑连接包括这里举例(而不是限制)提出的一个局域网(LAN)151和一个广域网(WAN)152。在办公室范围或企业范围的计算机网络、内联网和互联网中,这类联网环境很普遍。
当计算机120在LAN联网环境中被使用时,它通过网络接口适配器153或类似的适配器被连接到本地网络151。当计算机120在WAN联网环境中被使用时,它可以包括一个调制解调器154、一个无线链路或用于在广域网152(例如,互联网)上建立通信的其他装置。调制解调器154(可以是内置的,也可以是外置的)经由串行端口接口146被连接到***总线123。在联网环境中,可以将与计算机120有关的所述程序模块或其各个部分存储在远程内存存储设备中。将会理解,所示的网络连接是起示范的作用,可以使用在广域网152上建立通信的其他方法。
在此文和随后的权利要求中,“虚拟例行程序”被定义为不执行任何任务的例行程序。虚拟例行程序可能是一个程序模块或一套计算机可执行指令的一个部分,它包括用于接收数据的一个头部,但不对它所接收的数据执行操作。也就是说,从虚拟例行程序被输出的数据与曾被输入到虚拟例行程序的数据相同。
在此文和随后的权利要求中,“入口点”被定义为一个程序模块或一套计算机可执行指令的一个部分中的一个位置。外部程序模块可以调用一个入口点,并发送被输入的数据,以促进执行与入口点有关的指令执行。例如,虚拟例行程序可以有一个入口点。
在此文和随后的权利要求中,“***注册表”被定义为可以由操作***用来存储配置信息的数据库。
根据本发明,可以存储程序模块(包括抽象接口、过滤器栈、过滤器实例、被用来促进过滤数据包的过滤驱动器,以及有关的程序数据),并从任何与计算机***120有关的计算机可读介质来对其进行存取。例如,操作***135、应用程序136、其他的程序模块137和/或程序数据138中包括部分抽象接口、过滤器栈、过滤器实例、过滤驱动器和有关的程序数据,用于存储在磁性硬盘139上。如前所述,可以在分布式环境中执行与过滤数据包有关的程序模块。例如,远程计算机设备(例如,远程计算机149a或149b)中所包括的过滤驱动器可以促进将过滤器实例***本地处理设备(例如,计算机120)中所包括的过滤器栈,或者,反之亦然。
图2A表现了可用于促进将过滤器实例***过滤器栈的一些功能性部件。如所展示的,计算机201以通信联络的方式被耦合到网络205。在计算机201与网络205之间被转移的包可以通过包括传输层协议202、抽象接口203和数据链路驱动器204的通信路径传输。计算机201可以包括在图1讨论中所参考的任何部件。网络205可以包括在图1讨论中所参考的任何网络环境。
抽象接口203可以与过滤器栈206和过滤驱动器210进行通信。当接收数据包时,抽象接口203可以将数据包转移给过滤器栈206中所包括的每个过滤器实例。如果从传输层协议202接收数据包,则抽象接口203可以将该数据包传送到过滤器实例207a,再依次地传送到离数据链路驱动器204较近的其他过滤器模块。如果从数据链路驱动器204接收数据包,则抽象接口203可以将该数据包传送到过滤器实例211a,再依次地传送到离传输层协议202较近的其他过滤器模块。
抽象接口203可以与过滤驱动器210进行通信,以促进将过滤器实例***过滤器栈206或从过滤器栈206中除去过滤器实例。过滤驱动器210中包括过滤器***模块220、过滤器启动模块221和过滤器暂停模块222。图2B表现了一些交互过程的一个例子,这些交互过程可以发生在图2A所示的各个功能性部件之间,以促进将过滤器实例***过滤器栈。图3是流程图,展示了用于将过滤器实例***过滤器栈的一种方法。将参考图2A和2B中所包括的功能性部件来讨论图3中的方法。
如图3所示,可以通过暂停过滤器栈的操作来开始***过滤器实例(动作301)。这可以包括暂停使用当前正在过滤器栈中进行操作的各个单独的过滤器实例。可以通过调用有关的暂停模块来暂停使用过滤器实例。例如,过滤器暂停模块222可以促进暂停使用曾由过滤驱动器210***过滤器栈的过滤器实例。可以通知协议栈:过滤器栈将被暂停使用。
如图2A所示,过滤器栈206包括过滤器实例210a,过滤器实例210a可能以前已由过滤驱动器210***过滤器栈206。抽象接口203可以将数据传送到过滤器暂停模块222,以便使过滤器实例210a(或由过滤驱动器210***过滤器栈206的其他过滤器实例)进入暂停状态。当使过滤器实例进入暂停状态时,过滤驱动器可以执行某些操作。例如,过滤驱动器可以使与过滤器实例有关的队列包被清除,可以停止与过滤器实例有关的其他运行的操作,并可以延迟使过滤器实例进入暂停状态,直到过滤器实例处理好未完成的包和请求为止。
可以连续暂停使用过滤器实例。例如,可以首先暂停离传输层协议202最近的过滤器实例。如图2A所示,过滤器207a将会是被暂停使用的第一个过滤器实例。在成功地暂停使用离传输层协议202最近的过滤器实例之后,可以暂停使用下一个最近的过滤器实例(即,过滤器实例208a)。在这个例子中,如果将要暂停使用整个过滤器栈,则会按以下的顺序来暂停使用其余的过滤器实例:208b、209a、210a和211a。一旦过滤器实例211a(离数据链路层最近的过滤器实例)成功地到达暂停状态,也就可以认为过滤器栈206进入暂停状态。然后,可以通知协议栈:过滤器栈206被成功地暂停使用。
过滤器实例可能与“例行程序处理机”有关,“例行程序处理机”是被用来促进发送、接收和要求数据包的模块。在一个实施例中,暂停使用过滤器也可以包括:与虚拟例行程序交换例行程序处理机。这样,数据包可以通过虚拟例行程序(而不是实际的例行程序处理机)被转移。例如,数据包可以被发送到虚拟例行程序,而不是被发送到用于接收数据包的例行程序处理机。可以由抽象接口来执行交换,以便过滤器实例在处于暂停状态时不必处理任何新的包。
当配置过滤器实例的操作时,可能需要暂停使用该过滤器实例。可以通过局部暂停使用过滤器栈来暂停使用特定的过滤器实例。也就是说,过滤器栈中的一些过滤器实例被暂停使用,而其他过滤器实例继续进行操作。在这些情况中,可能暂停使用离传输层较近的过滤器实例,而不暂停使用离数据链路层较近的过滤器实例。可以采用连续的方式来加以执行,离传输层较近的过滤器实例在离数据链路层较近的过滤器实例之前被暂停使用。
例如,在图2A中,假设过滤器栈206中的所有过滤器实例当前都正在运作。如果过滤器实例208b将要接收配置参数,则可以暂停使用过滤器实例207a,再暂停使用过滤器208a,然后暂停使用过滤器实例208b。但是,在配置过滤器实例208b的期间,离数据链路层较近的其他过滤器实例(包括过滤器实例209a、过滤器实例210a和过滤器实例211a)可以继续进行操作。
要重新启动被局部暂停使用的过滤器栈,可以首先重新启动离数据链路层最近的、被暂停使用的过滤器实例,然后连续重新启动离传输层较近的每个被暂停使用的过滤器实例。在以上段落的例子中,将重新启动过滤器实例208b,再重新启动过滤器实例208a,然后重新启动过滤器实例207a。
图3中的方法可以包括用于重新配置过滤器栈中所包括的操作的一个步骤(步骤304)。这可以包括执行一些动作:在将过滤器实例***过滤器栈的同时,至少一个协议栈继续能够转移数据(动作302)并开始操作过滤器栈(动作303)。在***过滤器实例的同时,协议栈继续能够转移数据,这有助于沿通信路径有效地转移数据。
将过滤器实例***过滤器栈可以包括:过滤驱动器从抽象接口接收参数。图2B中的箭头1展示了抽象接口203将参数发送到过滤驱动器210。被发送到过滤驱动器210的参数可以包括一个过滤器句柄,可以使用该过滤器句柄来指代所创建的过滤器实例。例如,如果箭头1中所包括的参数曾被用来创建过滤器实例210b,则过滤驱动器210可以使用过滤器句柄,将与过滤器实例210b相对应的数据发送到抽象接口203。参数也可以包括在过滤器栈中应该***过滤器实例的位置。例如,在图2B中,过滤驱动器210可能已接收到一个参数,该参数曾指出:应该在过滤器实例208b与209a之间***过滤器实例210b。
将过滤器实例***过滤器栈可以包括:创建过滤器实例上下文。图2B中的箭头2展示了上下文创建模块230为过滤器实例210b创建过滤器实例上下文。可以将一个过滤器的多个实例***一个过滤器栈。例如,图2B中展示了过滤器实例208a和208b。同一个过滤驱动器可能已将过滤器实例208a和208b***过滤器栈206。但是,过滤器实例208a和208b可能会根据曾被用来创建它们的参数而有所不同。可以使用过滤器实例上下文来区别曾由同一个过滤驱动器创建的过滤器实例(例如,过滤器实例208a和208b)。
将过滤器实例***过滤器栈可以包括:为过滤器实例分配资源。图2B中的箭头3展示了资源分配模块231为过滤器实例210b分配资源。这可以包括:为过滤器实例分配内存,供进行操作;以及为队列数据包分配内存,供过滤器实例进行处理。这些只是在将过滤器实例***过滤器栈时可以被分配的资源的一些例子。精通该技术领域的人在阅读此文之后将显而易见,可以分配各种类型的资源,供过滤器实例使用。
将过滤器实例***过滤器栈可以包括:将过滤器实例上下文发送到抽象接口。图2B中的箭头4展示了过滤驱动器210将关于过滤器实例210b的过滤器实例上下文发送到抽象接口203。抽象接口203可以将过滤器实例上下文用作对过滤器实例210b的指代。例如,当抽象接口203将与过滤器实例210b有关的数据发送到过滤驱动器210时,抽象接口203可以将过滤器实例上下文包括在内。抽象接口203可以使用过滤器实例上下文来让过滤驱动器210认识到:所接收的数据与过滤器实例210b有关。
将过滤器实例***过滤器栈可以包括:从***注册表读取可配置的参数。图2B中的箭头5展示了可配置参数存取模块233从***注册表223读取可配置的参数。可配置参数存取模块233可以使用以前所接收的配置句柄来对***注册表进行存取。配置句柄可以是指针或其他寻址机制,它将可配置参数存取模块233指引到***注册表的一个部分,与过滤器实例210b有关的参数可能位于那里。读取***注册表可以包括:读取代表过滤器实例的识别号码。
在一个实施例中,过滤驱动器登记到抽象接口,当该抽象接口发送参数(例如,由图2B中的箭头1代表的参数)时,它可以将配置句柄发送到过滤驱动器。抽象接口可以管理登记或将登记传送到***注册表。或者,过滤驱动器可以将数据直接登记在***注册表。
将过滤器实例***过滤器栈可以包括:根据所接收的参数来配置过滤器实例。所接收的参数可能已从抽象接口被发送或已从***注册表被读取。图2B中的箭头6展示了过滤器***模块220发送参数来配置过滤器实例210b。过滤器实例可以被配置成执行各种过滤操作:例如,监控数据包,除去、***和/或修改数据包中的数据,检查与数据包有关的地址,压缩数据包,为数据包加密,或其任何组合。
过滤器实例可以被配置成过滤通过“虚拟个人网络”(“VPN”)而被转移的数据包。例如,可以通过使用没有真实的物质实体的虚拟连接来转移在网络205上被转移的数据包。尽管依次将数据包传递到正确的目的地,但是,可以用临时的方式经由各种机器来发送这些数据包。也就是说,连接不采用专门的物理线路。
过滤器实例也可以配置有一个入口点,以便接收电源管理(“PM”)和/或即插即用(“PnP”)数据。当计算机设备由于处于不活动状态而进入待命模式时,可以将有关的电源管理数据发送到过滤器实例。同样,如果可能影响数据包流动的***设备(例如,网卡)被***计算机设备,则可以将有关的数据发送到过滤器实例。
在一个实施例中,可以使用管理接口来配置过滤器实例。管理接口可以包括一个用户接口,其中,用户经由输入设备来输入与过滤器实例有关的参数。这些参数由过滤驱动器接收,并促进过滤器实例的配置。这样的一个例子是:用户可配置的防火墙。
配置过滤器实例也可以包括:将过滤器实例与多个传输层协议“绑定”。当过滤器实例与传输层协议绑定时,它可以过滤与传输层协议有关的数据包。例如,如图2A所示,过滤器实例210b可以被配置成既过滤数据包传输A又过滤数据包传输B。
不言而喻,以前所描述的过滤器实例配置只是一些例子。精通该技术领域的人在阅读此文之后将显而易见,可以用许多不同的方式来配置过滤器实例。
将过滤器实例***过滤器栈可以包括:证实过滤器实例被适当地***过滤器栈。这可以包括:将***状况发送到抽象接口。图2B中的箭头7和8展示了***状况模块232接收对过滤器实例210b的***状况的证实并将***状况发送到抽象接口203。
返回图3,将过滤器实例***过滤器栈可以包括:开始过滤器栈的操作(动作303)。这可以包括:启动当前被暂停使用的各个单独的过滤器实例。可以通过调用有关的启动模块来启动过滤器实例。例如,过滤器启动模块221可以促进启动曾由过滤驱动器210***过滤器栈的过滤器实例(例如,过滤器实例210a和210b)。可以通知协议栈:将要启动过滤器栈。
抽象接口203可以将数据传送到过滤器启动模块221,以便使过滤器实例210a、210b或由过滤驱动器210***过滤器栈206的其他过滤器实例进入操作状态。可以连续启动过滤器实例。例如,可以首先启动离数据链路驱动器204最近的过滤器实例(即过滤器实例211a)。在成功地启动离数据链路驱动器204最近的过滤器实例之后,可以启动下一个最近的过滤器实例。如图2B所示,将会是过滤器实例210a。在这个例子中,将按以下的顺序来启动其余的过滤器实例:209a、210b、208b、208a和207a。一旦过滤器实例207a成功地到达操作状态,也就可以认为过滤器栈206处于操作状态。启动过滤器栈也可以包括:与例行程序处理机交换虚拟例行程序,以便过滤器栈206可以适当地处理数据包。然后,可以通知协议栈:过滤器栈206处于操作状态。
可能会局部重新启动完全被暂停使用的过滤器栈。也就是说,过滤器栈中的一些过滤器实例被重新启动,而其他的过滤器实例仍然被暂停使用。当过滤器栈中的一个特定的过滤器实例将要被重新启动时,可能会发生这种情况。在这些情况中,可能会重新启动离数据链路层较近的过滤器实例,而离传输层较近的过滤器实例仍然被暂停使用。可以用连续的方式来加以执行,其中,离数据链路层较近的过滤器实例在离传输层较近的过滤器实例之前被重新启动。
例如,在图2A中,假设过滤器栈206中的所有过滤器实例当前被暂停使用。如果将要重新启动过滤器实例209a,则可以首先重新启动过滤器实例211a,再重新启动过滤器实例210a,然后重新启动过滤器实例209b。离传输层较近的其他过滤器实例(包括过滤器实例208b、过滤器实例208a和过滤器实例207a)仍然可以被暂停使用。
不言而喻,图2A和2B中所展示的模块和箭头只是一些例子。在不脱离本发明的精神和范围的前提下,可以组合不同的模块和有关的功能性。例如,过滤驱动器210可以包括一个单个的模块,该模块执行与将过滤器实例添加到过滤器栈有关的操作。也可能将过滤驱动器210包括为抽象接口203的一部分。同样,与图2B中所包括的箭头有关的功能性的执行顺序也只是起示范的作用。在不脱离本发明的精神和范围的前提下,可以按各种顺序来执行与图2B中所包括的箭头有关的功能性。精通该技术领域的人在阅读此文之后将显而易见,可以用许多不同的方式来组合模块及其有关的功能。
除了将过滤器实例***过滤器栈以外,本发明的实施例可以从过滤器栈中除去过滤器实例。当从过滤器栈中除去过滤器实例时,可能会使用以前所描述的各种方法来暂停使用和启动过滤器栈。
当从过滤器栈中除去过滤器实例时,过滤驱动器可以释放以前被分配给过滤器实例使用的资源。例如,抽象接口203可以将数据发送到过滤驱动器210,指出:应该从过滤器栈206中除去过滤器实例210b。过滤器栈206可以被暂停使用,过滤驱动器210可以从过滤器栈206中除去过滤器实例210b。然后,过滤驱动器210可以释放曾被分配给过滤器实例210b使用的资源。随后,可以启动过滤器栈206。可以通知有关的协议栈:该过滤器栈不再包括过滤器实例210b的功能性。
图2C表现了一些功能性部件的一个例子,这些功能性部件可以促进回避与过滤器实例有关的过滤操作。可以根据与包和/或配置信息有关的特征来回避过滤操作。回避过滤操作可以包括一个包完全回避过滤器实例和一个所接收的包回避过滤器实例的一项或多项内部过滤操作。图4是流程图,展示了一种用于至少回避与过滤器实例有关的过滤操作的方法的一个例子。将参考图2C中所包括的功能性部件来讨论图4中的方法。
图2C中展示了过滤器实例210b,过滤器实例210b被包括在过滤器栈206中。过滤器实例210b包括控制模块215,以及过滤器操作216a、216b和216c。图2C中展示了一个通信路径,包通过该通信路径从传输层被转移到数据链路层。但是,也可以利用通信路径来实践本发明,包通过通信路径从数据链路层被转移到传输层。通信路径可以包括一个数据路径,数据包藉此数据路径通过协议栈被转移;也可以包括一个控制路径,控制包藉此控制路径通过协议栈被转移。
这类控制路径可以包括请求和状况指示。可以将请求从传输层向下转移到数据链路层。请求可以包括一个指示:网络接口适配器(例如,网络接口适配器153)将接受多点传送包或将被置于混杂模式。请求也可以包括一个询问。例如,请求可以询问网络接口适配器的媒介访问控制地址,也可以询问网络接口适配器当前是否正在接收多点传送包。
可以将状况指示从数据链路层转移到传输层。状况指示可以包括来自数据链路层的一个指示:介质当前被连接或被断开。
图4中的方法可以包括处理输入包的动作(动作401)。这可以包括过滤器实例210b接收包240a。在图2C中,曾从过滤器实例208b发送包240a。在这个所展示的实施例中,包240a将会沿从传输层协议202到数据链路驱动器204的数据路径被转移。但是,这只是起说明性的作用,因为当数据包沿从数据链路驱动器204到传输层协议202的数据路径被转移时,也可以对其进行过滤。也可能对正沿控制路径被转移的包进行过滤。过滤器实例也可能无法按任何特定的顺序对包进行过滤。例如,可以将包从过滤器实例208a传送到过滤器实例210a。输入包也可能是曾由过滤器实例创建的包。
在一个替换的实施例中,可以处理由包240c代表的包。包240c的处理可以确定,包240c正通过数据路径或控制路径被转移,该数据路径或控制路径完全回避过滤器实例210b的过滤操作。如图2C所示,虚线箭头将包240c从过滤器208b直接转移到过滤器实例209a。包240c可以回避过滤器实例210b,因为过滤器实例210b已被配置成按数据路径或控制路径的“回避”模式进行操作。
过滤器实例可以由抽象接口203配置成按回避模式进行操作。当过滤器实例最初被启动或在运行时,可以将其配置为回避模式。也就是说,曾经没有被初始化进入回避模式的过滤器实例以后可以被设置成按回避模式进行操作。在初始化期间,通过指明启动过程中那个数据路径的NULL处理机,过滤驱动器指出:它希望过滤器实例按对一个或多个数据路径或控制路径的回避模式来启动。
在初始化之后和在运行时,过滤驱动器可能希望将过滤器实例设置为对一些数据路径或一些控制路径的回避模式。在那种情况下,过滤驱动器将要求抽象接口重新启动过滤器实例。然后,抽象接口将暂停使用过滤器实例,并按照此文前面所展示的各种方法来重新启动它。当过滤器实例被重新启动时,通过为被回避的路径提供NULL处理机,过滤驱动器可以指出:过滤器实例将按对一些数据路径或控制路径的回避模式进行操作。
过滤器实例可以被配置成:使与一些数据路径或控制路径有关的包回避过滤器实例,使与其他数据路径或控制路径有关的包由过滤器实例来接收。例如,过滤器实例可以被配置成回避状况指示,但接收所有其他类型的包。可以执行这一点,以抑制介质断开消息,应用程序对这些消息不感兴趣。在另一个例子中,沿从数据链路层到传输层的数据路径被转移的数据包可以由过滤器实例来接收,而沿从传输层到数据链路层的数据路径被转移的数据包回避过滤器实例。
同样,当前处于数据路径或控制路径的回避模式的过滤器实例可以在运行时被配置成接收该数据路径或控制路径的包。在这些情况下,过滤驱动器可以要求抽象接口203重新启动过滤器实例。然后,抽象接口203将按照此文前面所展示的各种方法来暂停使用和重新启动过滤器实例。当过滤器实例被重新启动时,通过为被激活的数据路径提供非NULL处理机,过滤驱动器可以指出:过滤器实例将从数据路径或控制路径接收包。
外部事件可能会引起对过滤器实例进行配置,使过滤器实例按回避模式进行操作或接收包。例如,通过与防火墙有关的管理接口,用户可以将过滤器实例配置成按一些数据路径的回避模式进行操作。在过滤器实例过滤操作导致当前正在使用的应用程序中断的情况下,可以如此执行。
图4中的方法可以包括一个步骤:转移一个输出包,该输出包可能已由过滤器栈中所包括的一些(而不是所有)操作进行过滤(步骤404)。这可以包括执行两个动作:回避与过滤器实例有关的一项或多项过滤操作(动作402);以及,如果曾执行过滤操作,则发送一个可能不同于输入包的输出包(动作403)。通过转移回避过滤操作的包,可以提高过滤过程的效率。
回避与过滤器实例有关的一项或多项过滤操作(动作402)可以包括:回避过滤器实例210b中所包括的一项或多项过滤操作。当过滤器实例210b接收数据包240a时,控制模块215可以分析数据包240a的特征。分析可以包括:确定输入包的数据流的方向。数据流的方向可以从数据链路驱动器到传输层协议,也可以从传输层协议到数据链路驱动器。分析也可以包括:确定与输入数据包有关的一个协议,例如,IP、TCP、“网络分组交换”(“IPX”)、其他传输层协议或与“开放式***互联”(“OSI”)模型的各个层有关的其他协议。如果控制模块215确定数据包240a与IPX有关,则可以回避过滤器操作216a和216c。但是,如果控制模块215确定数据包240a与IP有关,则可以回避过滤器操作216b。
或者,过滤器实例210b可能被配置成使沿数据路径或控制路径的包完全回避过滤器实例210b。如图2C所示,可以对过滤器实例210b进行配置,以便沿从传输层到数据链路层的数据路径被转移的包可以回避过滤器实例210b。如果包240c是数据包,它将会如从过滤器实例208b到过滤器实例209a的虚线箭头所示的那样回避过滤器实例210b。
也可能是这种情况:虽然过滤器实例210b接收到一个包,但是,控制模块215直接通过过滤器实例210b来传送包,而不执行任何过滤操作。如果用这种方式来回避所有的过滤操作,则数据包240a和数据包240b可能实质上相类似。
如果曾执行过滤操作,则发送一个可能不同于输入数据包的输出数据包(动作403),这可以包括:发送包括被修改过的数据的一个数据包。如果执行过滤器实例210b中所包括的任何过滤操作,则数据包240b可能不同于数据包240a。如果任何过滤操作曾将数据添加到数据包240a、从数据包240a中除去数据或修改数据包240a中所包括的数据,则可能会发生这种情况。但是,如果没有执行过过滤操作,则数据包240a和数据包240b可能实质上相类似。
可以使用本发明的各种方法来过滤数据包,所采用的方式促进数据包有效地流过通信路径。过滤器实例可以被***过滤器栈或从过滤器栈中被除去,同时,有关的协议栈仍然能够转移数据。这节约了处理器和网络资源,因为当过滤器栈的功能性变化时,协议栈不被重建。由于过滤器实例可以被多个协议使用,因此,减少了将在计算机设备中执行多余逻辑的可能性。此外,根据数据包和/或配置信息的特征来回避过滤操作,这减少了将执行无关的处理器操作的可能性。
在不脱离本发明的精神或必要特征的前提下,可以用其他特殊的形式来具体表现本发明。所描述的实施例在所有方面都将被认为只起说明性的作用,而不作限制。所以,本发明的范围由所附的权利要求(而不是前述内容)指出。不脱离权利要求的等效物的含义和范围的所有变化都将被包含在其范围之内。
权利要求书受到美国专利特许证的保护,内容如下所述。
Claims (68)
1.一种在计算机设备中将过滤器***过滤器栈的方法,该方法不会中断有关的协议栈的操作,以节约处理器和网络资源,该计算机设备能通过通信路径以通讯联络的方式被耦合到网络,它包括与用于管理过滤器栈的抽象接口有关的一个或多个协议栈,过滤器栈包括一个或多个过滤器,可对正在经由通信路径被转移的数据包执行过滤操作,该方法包括:
暂停过滤器栈操作的动作;
在将过滤器***过滤器栈的同时,至少一个有关的协议栈能够继续转移数据的动作;以及,
开始过滤器栈操作的动作。
2.如权利要求1中所述的方法,其特征在于:其中,暂停过滤器栈操作包括以下内容:
暂停使用过滤器栈中所包括的一个或多个过滤器的动作。
3.如权利要求2中所述的方法,其特征在于:其中,暂停使用过滤器栈中所包括的一个或多个过滤器包括以下内容:
一个或多个暂停例行程序接收指出应该暂停使用一个或多个过滤器的数据。
4.如权利要求1中所述的方法,其特征在于:其中,暂停过滤器栈操作包括以下内容:
使被转移的数据包重定向到虚拟例行程序,该虚拟例行程序将数据包返回到通信路径,而不修改数据包中所包括的数据。
5.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
***一个过滤器,该过滤器曾通过使用从抽象接口被接收的参数来加以配置。
6.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
过滤驱动器接收一个过滤器句柄,该过滤器句柄可以被用来促进将数据转移到抽象接口。
7.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
过滤驱动器为过滤器分配资源的动作。
8.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
过滤驱动器为过滤器创建过滤器上下文的动作。
9.如权利要求8中所述的方法,其特征在于:其中,过滤驱动器为过滤器创建过滤器上下文包括以下内容:
过滤驱动器将过滤器上下文发送到抽象接口的动作。
10.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
过滤驱动器在抽象接口登记数据的动作。
11.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
过滤驱动器将数据登记在***注册表中的动作。
12.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
***过滤器,该过滤器曾通过使用从***注册表被接收的参数来加以配置。
13.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
将过滤器插在过滤器栈中的预定位置的动作。
14.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
***一个过滤器,该过滤器能够过滤在虚拟连接上被转移的数据包。
15.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
***一个过滤器,该过滤器包括一个入口点,以接收与计算机设备的能源管理有关的数据。
16.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
***一个过滤器,该过滤器包括一个入口点,以接收与即插即用设备有关的数据。
17.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
***一个过滤器,该过滤器包括可以通过管理接口来加以修改的属性。
18.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
在过滤器栈上***一个过滤器,该过滤器栈与多个传输层协议绑字。
19.如权利要求1中所述的方法,其特征在于:其中,将过滤器***过滤器栈包括以下内容:
过滤驱动器证实过滤器曾被***过滤器栈的动作。
20.如权利要求19中所述的方法,其特征在于:其中,过滤驱动器证实过滤器曾被***过滤器栈包括以下内容:
过滤驱动器将***状况发送到抽象接口的动作。
21.如权利要求1中所述的方法,其特征在于:其中,开始过滤器栈操作包括以下内容:
启动过滤器栈中所包括的一个或多个过滤器的动作。
22.如权利要求21中所述的方法,其特征在于:其中,启动过滤器栈中所包括的一个或多个过滤器包括以下内容:
一个或多个启动例行程序接收指出应该启动一个或多个过滤器的数据。
23.如权利要求1中所述的方法,其特征在于还包括:
通知有关的协议栈:将要暂停过滤器栈的操作。
24.如权利要求1中所述的方法,其特征在于还包括:
通知有关的协议栈:过滤器栈现在包括被***的过滤器。
25.如权利要求1中所述的方法,其特征在于还包括:
通知有关的协议栈:将要开始操作过滤器栈。
26.一种在计算机设备中从过滤器栈中除去过滤器的方法,该方法不会中断有关的协议栈的操作,以节约处理器和网络资源,该计算机设备能通过通信路径以通讯联络的方式被耦合到网络,它包括与用于管理过滤器栈的抽象接口有关的一个或多个协议栈,过滤器栈包括一个或多个过滤器,该方法包括:
暂停过滤器栈操作的动作;
在从过滤器栈中除去过滤器的同时,至少一个有关的协议栈能够继续转移数据的动作;以及,
开始操作过滤器栈的动作。
27.如权利要求26中所述的方法,其特征在于:其中,暂停过滤器栈操作包括以下内容:
暂停使用过滤器栈中所包括的一个或多个过滤器的动作。
28.如权利要求27中所述的方法,其特征在于:其中,暂停使用过滤器栈中所包括的一个或多个过滤器包括以下内容:
一个或多个暂停例行程序接收指出应该暂停使用一个或多个过滤器的数据。
29.如权利要求26中所述的方法,其特征在于:其中,暂停过滤器栈操作包括以下内容:
使被转移的数据包重定向到各个虚拟例行程序,这些虚拟例行程序将数据包返回到通信路径。
30.如权利要求26中所述的方法,其特征在于:其中,从过滤器栈中除去过滤器包括以下内容:
暂停使用过滤器的动作。
31.如权利要求26中所述的方法,其特征在于:其中,从过滤器栈中除去过滤器包括以下内容:
过滤驱动器释放与过滤器有关的资源的动作。
32.如权利要求26中所述的方法,其特征在于:其中,开始过滤器栈操作包括以下内容:
启动过滤器栈中所包括的一个或多个过滤器的动作。
33.权利要求32中所述的方法,其特征在于:其中,启动过滤器栈中所包括的一个或多个过滤器包括以下内容:
一个或多个启动例行程序接收指出应该启动一个或多个过滤器的数据。
34.如权利要求26中所述的方法,其特征在于还包括:
通知有关的协议栈:将要暂停过滤器栈的操作。
35.如权利要求26中所述的方法,其特征在于还包括:
通知有关的协议栈:过滤器已从过滤器栈中被除去。
36.如权利要求26中所述的方法,其特征在于还包括:
通知有关的协议栈:将要开始过滤器栈操作。
37.一种在计算机设备中将过滤器***过滤器栈的方法,该方法不会中断有关的协议栈的操作,以节约处理器和网络资源,该计算机设备可能通过通信路径以通讯联络的方式被耦合到网络,它包括与用于管理过滤器栈的抽象接口有关的一个或多个协议栈,可对正在经由通信路径被转移的数据包的各个部分执行过滤操作,该方法包括:
暂停过滤器栈操作的动作;
一个步骤:重新配置过滤器栈中所包括的过滤操作,所采用的方式促进在重新配置期间有效地沿通信路径转移数据。
38.一种在计算机设备中用于过滤与一个或多个协议有关的包的方法,以节约处理器和网络资源,该计算机设备能通过一个或多个通信路径以通讯联络的方式被耦合到网络,它包括与抽象接口有关的一个或多个协议栈,该抽象接口管理可以对包执行过滤操作的一个或多个过滤器,该方法包括:
处理输入包的动作;
输入包回避与过滤器有关的一项或多项过滤操作的动作;以及
如果曾执行过过滤操作,则发送一个可能不同于输入包的输出包的动作。
39.如权利要求38中所述的方法,其特征在于:其中,处理输入包包括以下内容:
处理与数据链路层有关的输入包的动作。
40.如权利要求38中所述的方法,其特征在于:其中,处理有关的输入包包括以下内容:
处理与数据链路层驱动器有关的输入包的动作。
41.如权利要求38中所述的方法,其特征在于:其中,处理输入包包括以下内容:
处理与传输层协议有关的输入包的动作。
42.如权利要求41中所述的方法,其特征在于:其中,处理与传输层协议有关的输入包包括以下内容:
处理与“传输控制协议”有关的输入数据包的动作。
43.如权利要求41中所述的方法,其特征在于:其中,处理与传输层协议有关的输入包包括以下内容:
处理与“互联网协议”有关的输入数据包的动作。
44.如权利要求41中所述的方法,其特征在于:其中,处理与传输层协议有关的输入包包括以下内容:
处理来自传输层驱动器的输入包的动作。
45.如权利要求38中所述的方法,其特征在于:其中,处理输入包包括以下内容:
处理沿从传输层到数据链路层的数据路径被转移的数据包的动作。
46.如权利要求38中所述的方法,其特征在于:其中,处理输入包包括以下内容:
处理沿从数据链路层到传输层的数据路径被转移的数据包的动作。
47.如权利要求38中所述的方法,其特征在于:其中,处理输入包包括以下内容:
处理控制包,该控制包包括请求信息并正在沿控制路径被转移。
48.如权利要求38中所述的方法,其特征在于:其中,处理输入包包括以下内容:
处理控制包,该控制包包括***指示信息并正在沿控制路径被转移。
49.如权利要求38中所述的方法,其特征在于:其中,输入包回避与过滤器有关的一项或多项过滤操作包括以下内容:
所接收的输入包回避与过滤器栈中所包括的过滤器有关的一项或多项内部过滤操作。
50.如权利要求38中所述的方法,其特征在于:其中,输入包回避与过滤器有关的一项或多项过滤操作包括以下内容:
所接收的输入包根据与该输入包有关的特征来回避与过滤器有关的一项或多项内部过滤操作。
51.如权利要求38中所述的方法,其特征在于:其中,输入包回避与过滤器有关的一项或多项过滤操作包括以下内容:
输入包完全回避过滤器的动作。
52.如权利要求51中所述的方法,其特征在于:其中,输入包完全回避过滤器包括以下内容:
输入包完全回避过滤器,因为曾将过滤器配置成按通信路径的回避模式进行操作,输入包正在沿该通信路径被转移。
53.如权利要求50中所述的方法,其特征在于:其中,输入包根据关于输入包的特征来回避与过滤器有关的一项或多项过滤操作包括以下内容:
当输入包与第一个协议有关时,回避第一套过滤操作;当输入包与第二个协议有关时,回避第二套过滤操作。
54.如权利要求53中所述的方法,其特征在于:其中,第一套过滤操作和第二套过滤操作不同。
55.如权利要求38中所述的方法,其特征在于:其中,如果曾对输入包执行过滤操作,则发送一个不同于输入包的输出包,这包括以下内容:
如果过滤操作修改过输入包,则发送一个不同于输入包的输出包。
56.一种在计算机设备中用于过滤与一个或多个协议有关的包的方法,以节约处理器和网络资源,该计算机设备能通过一个或多个通信路径以通讯联络的方式被耦合到网络,它包括与用于管理过滤器栈的抽象接口有关的一个或多个协议栈,该方法包括:
接收与协议有关的一个输入包的动作;
一个步骤:转移一个输出包,该输出包已由过滤器栈中所包括的一些而不是所有过滤操作进行过滤,以便提高过滤过程的效率。
57.一种在计算机设备中用于过滤与一个或多个协议有关的包的方法,以节约处理器和网络资源,该计算机设备能通过一个或多个通信路径以通讯联络的方式被耦合到网络,该计算机设备包括与一个或多个过滤器有关的一个或多个协议栈,这些过滤器可以对包执行过滤操作,该方法包括:
过滤器接收一个输入包的动作;
当通过从数据链路层到传输层的通信路径来转移输入包时,回避第一套过滤操作;当通过从传输层到数据链路层的通信路径来转移输入包时,回避第二套过滤操作的动作;以及
如果曾执行过过滤操作,则发送一个不同于输入包的输出包的动作。
58.如权利要求57中所述的方法,其特征在于:其中,第一套过滤操作和第二套过滤操作不同。
59.如权利要求57中所述的方法,其特征在于:其中,通信路径是数据路径。
60.如权利要求57中所述的方法,其特征在于:其中,通信路径是控制路径。
61.一种在计算机设备中用于过滤与一个或多个协议有关的包的方法,以节约处理器和网络资源,该计算机设备能通过一个或多个通信路径以通讯联络的方式被耦合到网络,该计算机设备包括与一个或多个过滤器有关的一个或多个协议栈,这些过滤器可以对包执行过滤操作,该方法包括:
处理当前正通过通信路径被转移的一个包的动作;
包完全回避通信路径中的第一个过滤器的动作,因为曾将第一个过滤器配置成按通信路径的回避模式进行操作;以及
包正由通信路径中的第二个过滤器接收的动作,曾将该通信路径配置成接收正通过通信路径被转移的包。
62.如权利要求61中所述的方法,其特征在于:其中,包完全回避通信路径中的第一个过滤器,因为曾将第一个过滤器配置成按通信路径的回避模式进行操作,这包括以下内容:
包完全回避通信路径中的第一个过滤器,因为抽象接口曾将第一个过滤器配置成按通信路径的回避模式进行操作。
63.如权利要求62中所述的方法,其特征在于还包括:
抽象接口对过滤器进行配置,以恢复接收包。
64.如权利要求61中所述的方法,其特征在于,包完全回避通信路径中的第一个过滤器,因为曾将第一个过滤器配置成按通信路径的回避模式进行操作,这包括以下内容:
输入数据包完全回避数据路径中的第一个过滤器,因为曾将第一个过滤器配置成按数据路径的回避模式进行操作。
65.如权利要求61中所述的方法,其特征在于,包完全回避通信路径中的第一个过滤器,因为曾将第一个过滤器配置成按通信路径的回避模式进行操作,这包括以下内容:
输入控制包完全回避控制路径中的第一个过滤器,因为曾将第一个过滤器示例配置成按控制路径的回避模式进行操作。
66.一种计算机***,该计算机***能通过通信路径以通讯联络的方式被耦合到网络,它包括与用于管理过滤器栈的抽象接口有关的一个或多个协议栈,可对正在经由通信路径被转移的数据包的各个部分执行过滤操作,所述计算机***用于将过滤器***过滤器栈而不中断有关的协议栈的操作,以节约处理器和网络资源,该计算机***包括:
计算设备;以及
计算机可执行指令,当这些计算机可执行指令在计算设备处被执行时,它们使计算设备执行以下操作:
暂停过滤器栈操作;
在将过滤器***过滤器栈的同时,至少一个有关的协议栈能够继续转移数据;以及
开始过滤器栈操作。
67.一种计算机***,该计算机***能通过通信路径以通讯联络的方式被耦合到网络,它包括与用于管理过滤器栈的抽象接口有关的一个或多个协议栈,该过滤器栈包括一个或多个过滤器,可对正在经由通信路径被转移的数据包的各个部分执行过滤操作,所述计算机***用于从过滤器栈除去过滤器而不中断有关的协议栈的操作,以节约处理器和网络资源,该计算机***包括:
计算设备;以及
计算机可执行指令,当这些计算机可执行指令在计算设备处被执行时,它们使计算设备执行以下操作:
暂停过滤器栈操作;
在从过滤器栈中除去过滤器的同时,至少一个有关的协议栈能够继续转移数据;以及
开始过滤器栈操作。
68.一种计算机***,该计算机***能通过一个或多个通信路径以通讯联络的方式被耦合到网络,它包括与管理过滤器栈的抽象接口有关的一个或多个协议栈,该过滤器栈包括可以对包的各个部分执行过滤操作的一个或多个过滤器,所述计算机***用于过滤与一个或多个协议有关的包的方法,以节约处理器和网络资源,该计算机***包括:
计算设备;以及
计算机可执行指令,当这些计算机可执行指令在计算设备处被执行时,它们使计算设备执行以下操作:
处理一个输入包;
输入包回避与一个过滤器有关的一项或多项过滤操作;以及
如果曾对输入包执行过滤操作,则发送一个可能不同于输入包的输出包。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/020,286 | 2001-12-11 | ||
US10/020,286 US7209971B1 (en) | 2001-12-11 | 2001-12-11 | Architecture and run-time environment for network filter drivers |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1424663A CN1424663A (zh) | 2003-06-18 |
CN1262941C true CN1262941C (zh) | 2006-07-05 |
Family
ID=21797749
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN02156164.8A Expired - Fee Related CN1262941C (zh) | 2001-12-11 | 2002-12-11 | 网络过滤驱动器的构造和运行环境 |
Country Status (10)
Country | Link |
---|---|
US (2) | US7209971B1 (zh) |
EP (1) | EP1320238A3 (zh) |
JP (1) | JP4071098B2 (zh) |
CN (1) | CN1262941C (zh) |
AR (1) | AR037786A1 (zh) |
BR (1) | BR0205245A (zh) |
CA (1) | CA2413509C (zh) |
MX (1) | MXPA02012243A (zh) |
RU (1) | RU2298880C2 (zh) |
TW (1) | TWI282227B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7209971B1 (en) * | 2001-12-11 | 2007-04-24 | Microsoft Corporation | Architecture and run-time environment for network filter drivers |
JP4579623B2 (ja) * | 2004-08-27 | 2010-11-10 | キヤノン株式会社 | 情報処理装置及び受信パケットのフィルタリング処理方法 |
US7789919B2 (en) * | 2006-10-19 | 2010-09-07 | Sonoco Development, Inc. | Combustible packages for containing a fuel source and a fire starter |
US8040916B2 (en) * | 2007-03-14 | 2011-10-18 | Cisco Technology, Inc. | Admission control for virtualized services in routers |
US8713209B2 (en) * | 2009-01-13 | 2014-04-29 | Qualcomm Incorporated | System, apparatus, and method for fast startup of USB devices |
JP2010211388A (ja) * | 2009-03-09 | 2010-09-24 | Canon Inc | 検索装置及び検索方法 |
JP2013518733A (ja) * | 2010-04-23 | 2013-05-23 | サムスン ヘビー インダストリーズ カンパニー リミテッド | ロボットシステムの制御方法及びその装置 |
US8700896B1 (en) * | 2010-08-25 | 2014-04-15 | Symantec Corporation | Techniques for automatic management of file system encryption drivers |
US8539123B2 (en) | 2011-10-06 | 2013-09-17 | Honeywell International, Inc. | Device management using a dedicated management interface |
US8621123B2 (en) | 2011-10-06 | 2013-12-31 | Honeywell International Inc. | Device management using virtual interfaces |
US9069572B2 (en) | 2012-07-27 | 2015-06-30 | Prolific Technology Inc. | Replacement of inbox driver with third party driver |
JP5977860B1 (ja) * | 2015-06-01 | 2016-08-24 | エヌ・ティ・ティ・コミュニケーションズ株式会社 | 通信制御方法、通信制御装置及びプログラム |
US10063414B2 (en) | 2016-05-13 | 2018-08-28 | Cisco Technology, Inc. | Updating a transport stack in a content centric network |
CN111063230B (zh) * | 2019-12-13 | 2021-09-10 | 中国人民解放军空军工程大学 | 一种模拟训练仿真***动作过滤器 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH10124979A (ja) | 1996-10-11 | 1998-05-15 | Sony Corp | ディスクドライブ装置及びディスク記録/再生装置 |
US6205492B1 (en) * | 1997-04-04 | 2001-03-20 | Microsoft Corporation | Method and computer program product for interconnecting software drivers in kernel mode |
US6243753B1 (en) * | 1998-06-12 | 2001-06-05 | Microsoft Corporation | Method, system, and computer program product for creating a raw data channel form an integrating component to a series of kernel mode filters |
SE516175C2 (sv) * | 1999-02-17 | 2001-11-26 | Axis Ab | Anordning och metod för kommunikation över ett nätverk |
US6678734B1 (en) | 1999-11-13 | 2004-01-13 | Ssh Communications Security Ltd. | Method for intercepting network packets in a computing device |
US6801948B2 (en) | 2000-12-15 | 2004-10-05 | Hewlett-Packard Development Company, L.P. | System and method for a streams based network access control for a computer |
US7209971B1 (en) * | 2001-12-11 | 2007-04-24 | Microsoft Corporation | Architecture and run-time environment for network filter drivers |
US7418006B2 (en) * | 2005-03-08 | 2008-08-26 | Microsoft Corporation | Virtual endpoints |
-
2001
- 2001-12-11 US US10/020,286 patent/US7209971B1/en active Active
-
2002
- 2002-12-04 CA CA2413509A patent/CA2413509C/en not_active Expired - Fee Related
- 2002-12-04 EP EP02026947A patent/EP1320238A3/en not_active Withdrawn
- 2002-12-09 JP JP2002357097A patent/JP4071098B2/ja not_active Expired - Fee Related
- 2002-12-10 RU RU2002133413/09A patent/RU2298880C2/ru not_active IP Right Cessation
- 2002-12-10 AR ARP020104794A patent/AR037786A1/es not_active Application Discontinuation
- 2002-12-10 TW TW091135673A patent/TWI282227B/zh not_active IP Right Cessation
- 2002-12-11 BR BR0205245-8A patent/BR0205245A/pt not_active IP Right Cessation
- 2002-12-11 MX MXPA02012243A patent/MXPA02012243A/es active IP Right Grant
- 2002-12-11 CN CN02156164.8A patent/CN1262941C/zh not_active Expired - Fee Related
-
2006
- 2006-01-23 US US11/337,906 patent/US20060133275A1/en not_active Abandoned
Also Published As
Publication number | Publication date |
---|---|
EP1320238A2 (en) | 2003-06-18 |
AR037786A1 (es) | 2004-12-01 |
RU2298880C2 (ru) | 2007-05-10 |
US20060133275A1 (en) | 2006-06-22 |
MXPA02012243A (es) | 2004-12-13 |
EP1320238A3 (en) | 2005-12-07 |
CA2413509C (en) | 2010-07-27 |
JP2003304269A (ja) | 2003-10-24 |
CN1424663A (zh) | 2003-06-18 |
TWI282227B (en) | 2007-06-01 |
CA2413509A1 (en) | 2003-06-11 |
JP4071098B2 (ja) | 2008-04-02 |
US7209971B1 (en) | 2007-04-24 |
BR0205245A (pt) | 2004-07-20 |
TW200305322A (en) | 2003-10-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1262941C (zh) | 网络过滤驱动器的构造和运行环境 | |
CN1269033C (zh) | 数据处理***中逻辑分区之断电和/或再启动的方法和仪器 | |
CN1650287A (zh) | 用于改变网络拓扑的方法和*** | |
CN1659539A (zh) | 一种具有虚拟服务模块的网络*** | |
US20080155075A1 (en) | Remote management of boot application | |
WO2018076755A1 (zh) | 一种升级包下发方法及装置 | |
CN1500243A (zh) | 使用可移动存储器收集和恢复用户环境数据 | |
CN1700171A (zh) | 提供从虚拟环境对硬件的直接访问 | |
CN1760839A (zh) | 帮助多端口主机适配器的端口测试的装置、***和方法 | |
CN1722092A (zh) | Vex-虚拟扩展框架 | |
CN1606290A (zh) | 为通过网络的数据传输管理存储器的方法、***和程序 | |
CN1739098A (zh) | 智能网络适配器的状态恢复及故障修复 | |
CN1725142A (zh) | 用于安全***的框架 | |
CN1267026A (zh) | 允许服务器远程访问计算机***资产信息的***和方法 | |
CN1367628A (zh) | 便携式终端装置的程序更新方法以及便携式终端装置 | |
CN1570863A (zh) | 远程加载或升级程序的***及其方法 | |
CN1696911A (zh) | 有效地打补丁 | |
CN101056209A (zh) | 一种无线终端映像文件维护方法及设备 | |
CN1482782A (zh) | Modbus/tcp工业以太网和设备网现场总线间的协议转换方法和装置 | |
CN107995326A (zh) | 一种容器网络的管理方法及装置 | |
CN1917478A (zh) | 转发报文的处理方法及处理模块 | |
CN101056195A (zh) | 通信***中主板与备板的数据同步方法 | |
CN1215422C (zh) | 在网络中下载基本软件的方法 | |
CN101039207A (zh) | 具有双中央处理器的智能光网络设备及其实现方法 | |
CN101582880B (zh) | 一种基于被审计对象的报文过滤方法及*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20060705 Termination date: 20121211 |