Ordering of multiple plugin applications using extensible layered service provider with network traffic filtering
First Claim
1. An extensible service provider for filtering, sorting, and executing plugin network-service providers, the extensible service provider comprising:
- an upper interface to a higher-level network-socket library, the higher-level network-socket library for providing high-level network functions to high-level user applications by generating a socket for connecting to a remote machine on the network;
a lower interface to a network-transport layer, the network-transport layer for formatting data for transmission over a network;
a plurality of traffic filters each defining a predetermined socket state for comparing to a current state of the socket;
a plugin manager for controlling the plugin network-service providers;
a filter manager, coupled to a plurality of traffic filters, for controlling the traffic filters;
binding objects, generated at run-time, for binding a plugin network-service provider to a traffic filter;
sorting means, coupled to the binding objects, for sorting the binding objects into an execution order based on functions performed by each plugin network-service provider; and
execution means, coupled to the sorting means, for executing the plugin network-service providers in the execution order, the plugin network-service providers operating on the data for transmission over the network,whereby the extensible service provider controls and sorts the plugin network-service providers into the execution order based on functions performed.
2 Assignments
0 Petitions
Accused Products
Abstract
Low-level network services are provided by network-service-provider plugins. These plugins are controlled by an extensible service provider that is layered above the TCP layer but below the Winsock-2 library and API. The extensible service provider orders the plugins based on the function performed by each plugin and on ordering hints. Plugins that redirect the protocol or socket are executed first. Plugins that examine packets or block entire packets are executed before plugins that modify packets. Plugins that compress or encrypt data are executed last for outgoing packets. Ordering hints cause a plugin to be executed before or after others in its functional class. Ordering allows examining plugins that simply read data get to the packets before an encrypting or compressing plugin renders the data unreadable. The extensible service provider has a plugin manager that orders and controls execution of the plugins. A filter manager evaluates one or more packet-filters. Filters are bound to plugins by binding objects; each socket has its own binding list of filters and plugins. Execution of some plugins can be skipped when filters bound to them do not match packets sent or received. Well-ordered plugins transparently provide a variety of network services such as content-filtering and blocking, encryption and compression, and statistics-gathering.
484 Citations
22 Claims
-
1. An extensible service provider for filtering, sorting, and executing plugin network-service providers, the extensible service provider comprising:
-
an upper interface to a higher-level network-socket library, the higher-level network-socket library for providing high-level network functions to high-level user applications by generating a socket for connecting to a remote machine on the network; a lower interface to a network-transport layer, the network-transport layer for formatting data for transmission over a network; a plurality of traffic filters each defining a predetermined socket state for comparing to a current state of the socket; a plugin manager for controlling the plugin network-service providers; a filter manager, coupled to a plurality of traffic filters, for controlling the traffic filters; binding objects, generated at run-time, for binding a plugin network-service provider to a traffic filter; sorting means, coupled to the binding objects, for sorting the binding objects into an execution order based on functions performed by each plugin network-service provider; and execution means, coupled to the sorting means, for executing the plugin network-service providers in the execution order, the plugin network-service providers operating on the data for transmission over the network, whereby the extensible service provider controls and sorts the plugin network-service providers into the execution order based on functions performed. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9)
-
-
10. A computer-implemented method for executing, in an execution order, a subset of a plurality of plugins, the plugins for performing network services, the method comprising:
-
calling a socket function for opening or transmitting data through a socket-connection for connecting a high-level application to a remote machine on a network, the socket function being a function in an applications-programming interface (API) used by high-level applications to access the network; activating an extensible service provider before the data is sent from the socket function to a lower network-transport layer, wherein the data is intercepted by the extensible service provider, the extensible service provider for evaluating filters to determine which plugins need to be executed and for sorting the plugins into the execution order; the extensible service provider, for each plugin in the plurality of plugins; selecting a current plugin from a list of the plurality of plugins; reading a binding list of current filters bound to the current plugin; determining when a current filter is a matching filter by evaluating each of the current filters using a current state of the socket-connection, each filter in the current filters for comparing predetermined criteria to header information for transmission with the data; adding the current plugin to an execution list when a matching filter is found for the current filter and the current state of the socket-connection; sorting the execution list of plugins into the execution order by examining a functional-class for each plugin; and executing each of the plugins on the execution list in the execution order before the data is sent to the network-transport layer; whereby the plugins having a matching filter are executed in the execution order based on the functional-class of each plugin. - View Dependent Claims (11, 12, 13, 14, 15, 16, 17)
-
-
18. A computer-program product comprising:
-
a computer-usable medium having computer-readable program code means embodied therein for ordering execution of low-level network-service provider plugins, the computer-readable program code means in the computer-program product comprising; socket means for receiving data for transmission over a network, the data from a high-level application that uses a high-level library of socket-functions for sending the data to the socket means; transport means for sending the data to a lower-level network-transport layer, the lower-level network-transport layer for formatting the data for transmission over the network; filtering means for comparing transmission information for the data from the socket means to predetermined transmission criteria, for indicating when a socket matches the predetermined transmission criteria;
matching plugin means, coupled to the filtering means, for generating an unsorted list of plugins attached to the predetermined transmission criteria;sorting means, coupled to the matching plugin means, for reading a function performed on the data by each plugin, and for re-arranging the plugins in the unsorted list into an execution order based on the function performed on the data by each plugin; and execution means, coupled to the sorting means, for activating each plugin in the execution order, each plugin operating on the data before a next plugin in the execution order operates on the data, whereby execution of the low-level network-service provider plugins is ordered by functions performed. - View Dependent Claims (19, 20, 21, 22)
-
Specification