text:
Patent US7409707 - Method for managing network filter based policies - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign in<nobr>Advanced Patent Search</nobr>PatentsA method and system are provided for adding, removing, and managing a plurality of network policy filters in a network device. Filters are installed in a framework and designated as active or disabled. Each filter has a priority. When a new filter is to be installed into the framework, it is compared...http://www.google.com/patents/US7409707?utm_source=gb-gplus-sharePatent US7409707 - Method for managing network filter based policiesAdvanced Patent SearchPublication numberUS7409707 B2Publication typeGrantApplication numberUS 10/456,433Publication dateAug 5, 2008Filing dateJun 6, 2003Priority dateJun 6, 2003Fee statusPaidAlso published asCN1574764A, CN1574764B, CN101834865A, CN101834865B, EP1484885A2, EP1484885A3, US8689315, US20040250131, US20090077648Publication number10456433, 456433, US 7409707 B2, US 7409707B2, US-B2-7409707, US7409707 B2, US7409707B2InventorsBrian D. Swander, Avnish Kumar Chhabra, Paul G. MayfieldOriginal AssigneeMicrosoft CorporationExport CitationBiBTeX, EndNote, RefManPatent Citations (21), Non-Patent Citations (1), Referenced by (37), Classifications (12), Legal Events (3) External Links: USPTO, USPTO Assignment, EspacenetMethod for managing network filter based policiesUS 7409707 B2Abstract A method and system are provided for adding, removing, and managing a plurality of network policy filters in a network device. Filters are installed in a framework and designated as active or disabled. Each filter has a priority. When a new filter is to be installed into the framework, it is compared to installed filters to determine if a conflict exists. If no conflict exists, the new filter is added as an active filter. If a conflict exists, a higher priority conflicting filter is added as active and a lower priority filter is added as inactive.
1. A method of adding a new filter defining a portion of a network policy into a set of installed filters in a framework including a set of active filters and a set of disabled filters, the new filter and each filter in the set of installed filters including a set of filter conditions and a priority class comprising:
determining whether at least one installed filter in the set of the installed filters conflicts with the new filter; and
if the at least one installed filter in the set of the installed filters conflicts with the new filter:
identifying whether the priority class of the new filter is lower than the priority class of the at least one installed filter, wherein the priority class is a function of identity of a user or a process responsible for adding the new filter;
if the priority class of the new filter is lower than the priority class of the at least one installed filter, adding the new filter into the set of installed filters as one of the set of disabled filters; and
if the priority class of the new filter is higher than the priority class of the at least one installed filter, adding the new filter into the set of installed filters as one of the set of active filters.
2. The method of claim 1, wherein the set of active filters are identified in an active filter list and the set of disabled filters are identified in a disabled filter list.
3. The method of claim 1, further comprising: identifying the at least one installed filter as one of the set of disabled filter list.
4. The method of claim 1, wherein the new filter and each of filters in the set of installed filters include a weight value, further comprising: calculating the weight value of the new filter by applying a scaling factor to each of the filter conditions resulting in a set of scaled filter conditions and including the scaled filter conditions in the weight value.
5. The method of claim 4, whereby the step of determining that the at least one installed filter in the set of the installed filters conflicts with the new filter comprises: retrieving a set of potential at-odds filters from the set of installed filters with a matching set of filter conditions and a set of contradictory actions; identifying a set of actual at-odds filters based on a comparison of the priority class and the weight value of the potential at-odds filters and the priority class and the weight value of the new filter.
6. The method of claim 5, wherein the priority class of the new filter is higher than the priority class of at least one of the set of actual at-odds filters and the weight of the new filter is lower than the weight of the at least one of the set of actual at odds filters.
7. The method of claim 5, wherein the priority class of the new filter is lower than the priority class of at least one of the set of actual at-odds filters and the weight of the new filter is higher than the weight of the at least one of the set of actual at-odds filters.
8. The method of claim 1, further comprising, if the priority class of the new filter is higher than the priority class of the at least one installed filter, moving the at least one installed filter into the set of disabled filters.
9. A computer storage medium encoded with computer-readable instructions for performing acts of adding a new filter defining a portion of a network policy into a set of installed filters in a framework including an active filter list and a disabled filter list, the new filter and each filter in the set of installed filters including a set of filter conditions and a priority class, the acts comprising:
10. The computer storage medium of claim 9, wherein the acts further comprise: adding the at least one installed filter to the disabled filter list.
11. The computer storage medium of claim 9, wherein the new filter and each of the filters in the set of installed filters include a weight value, further comprising: calculating the weight value by applying a scaling factor to each of the filter conditions resulting in a set of scaled filter conditions and including the scaled filter conditions in the weight value.
12. The computer storage medium of claim 11, wherein the acts further comprise the step of determining that the at least one installed filter in the set of the installed filters conflicts with the new filter comprises: retrieving a set of potential at-odds filters from the set of installed filters with a matching set of filter conditions and a set of contradictory actions; identifying a set of actual at-odds filters based on a comparison of the priority class and the weight value of the potential at odds filters and the priority class and the weight value of the new filter.
13. The computer storage medium of claim 9, wherein the acts further comprise, if the priority class of the new filter is higher than the priority class of the at least one installed filter, moving the at least one installed filter into the set of disabled filters. Description
RELATED APPLICATIONS The present application contains subject matter related to that of patent application �Multi-Layer Based Method for Implementing Network Firewalls,� Ser. No. 10/456,770; �Multi-Layered Firewall Architecture Implemented in a Network Device,� Ser. No. 10/456,770; and �A Method and Framework for Integrating a Plurality of Network Policies,� Ser. No. 10/456,093, filed on the same day as the present application, the disclosures of which are hereby expressly incorporated by reference.
TECHNICAL FIELD This invention generally relates to computer systems and to computer networks. More particularly, this invention relates to managing network filter based policies.
BACKGROUND OF THE INVENTION Computers implement various network policies to control network traffic and to protect a computer or other network device from malicious attacks perpetrated by other network devices, such as theft of data, denial of service (DOS) attacks, and the like.
One type of policy used to protect network devices is implemented through a tool known as a firewall. The firewall protects individual users, network devices, and networks in general, from malicious attacks, while also adding the ability to control the exchange of data. The firewall implements the policy by examining network packets and determining, based on the examination, whether the packets should be permitted, or conversely blocked, from further traversing the network. Firewalls perform other functions such as logging information pertaining to packets for future inspection.
The firewall uses filters to implement the policy. Each filter includes filter parameters and an action. The filter parameters identify network packets that are subject to the policy and include information such as hardware addresses, e.g. Media Access Control (MAC) addresses, network addresses, e.g. Internet Protocol (IP) addresses, protocol type, e.g. Transport Control Protocol (TCP), port numbers, and the like. The action defines how packets with parameters that match the filter parameters should be treated. As a specific example, the filter includes as its parameters a Uniform Resource Locator (URL) address, e.g. �http://www.foo.com.� The filter further associates the action of block, i.e. drop the packet, with that URL address. Whenever the firewall examines a packet and through that examination identifies the URL address �http://www.foo.com� as embedded in the packet, the firewall drops the packet thereby preventing it from traversing the network.
The firewall includes multiple filters to implement the policy and two or more filters may conflict. Two or more filters conflict when they apply to a common subset of network packets and designate different actions. For example, one filter designates that a network packet should be permitted to traverse the network while a different filter designates that the same network packet should be blocked from network traversal. Where conflicting filters exist within a network device, it becomes unpredictable how the overall system will respond to network traffic.
SUMMARY OF THE INVENTION The invention is directed towards a method and system for adding a new filter defining a portion of a network policy into a set of installed filters in a framework. The framework includes an active filters and disabled filters. The active filters identify filters in the set of installed filters used to implement current network policy. The disabled filters identify filters in the set of installed filters that are not used to implement current network policy.
The new filter and the set of installed filters each include a set of filter conditions and a priority class. The filter conditions identify network packets that are subject to the policy defined in the filter. The priority class identifies priority of the filter according to the user or process responsible for the policy defined in the filter.
A firewall engine determines whether the new filter and at least one of the filters in the set of installed filters conflict. If the new filter conflicts with one of the installed filters, the firewall engine determines whether the priority class of the new filter is lower than the priority class of the at least one installed filter. The firewall engine then installs the new filter into the set of installed filters.
In an embodiment of the invention, the firewall engine uses the priority class of the new filter and the at least one of the installed filters to determine whether the new filter is added as a disabled filter or as an active filter. If the priority class of the new filter is lower than the priority class of the at least one installed filter, the new filter is added as disabled. If the priority class of the new filter is higher than the priority class of the at least one of the installed filters, the new filter is added asactive, provided that other higher priority class conflicting filters do not exist, and the at least one of the installed filters is added as disabled.
In another embodiment of the invention, each filter includes a weight value that further identifies priority of the filter and that is used to identify filter conflicts in conjunction with the priority class. The weight value is automatically calculated from the set of the filter conditions. Each of the filter conditions is scaled to fit in a bit allocation within the weight value. Alternatively, the weight value is an assigned value.
The invention is also directed to a method of removing filters from the set of the installed filters. After the filter is removed, the firewall engine determines whether the removed filter was an active filter. If the removed filter was identified as active, the firewall engine identifies overridden disabled filters that were disabled as conflicting with the removed filter. The overridden filters are then added as active, which may in turn cause other filters to be disabled.
FIG. 2 is a block diagram generally illustrating a framework in which the method and system of the present invention may be implemented;
FIG. 3 is a block diagram illustrating an exemplary filter used with the present invention;
FIG. 4 is a block diagram illustrating an exemplary data structure for packet context used with the present invention;
FIG. 5 is a block diagram illustrating an exemplary set of application programming interfaces used with the present invention;
FIG. 6 is a block diagram illustrating an application programming interface used with the present invention;
FIG. 7 is a flow chart illustrating an exemplary method used to add filters according to the present invention;
FIG. 8 is a flow chart illustrating an exemplary method used to remove filters according to the present invention;
FIG. 9 is a flow chart illustrating an exemplary method used to identify filter conflicts according to the present invention; and
FIG. 10 is a flow chart illustrating an exemplary method used to calculate a weight value for a filter.
DETAILED DESCRIPTION OF THE INVENTION A method of maintaining and resolving conflicts among network filter based policies is disclosed. The method is capable of identifying and resolving filter conflicts when new filters are installed in a network device.
The network filter based policies are defined by filters installed in a firewall framework. Although the framework is designed to implement firewall policy, the framework is equally suitable for facilitating other filter based policies such as Internet Protocol Security (IPSec), Quality of Service (QOS) and the like.
The framework includes a kernel mode process comprising one or more kernel layers forming a protocol stack, a kernel firewall engine, and one or more callouts. The protocol stack includes an application layer, a transport layer, a network layer, and link layer. The kernel firewall engine includes a layer Application Programming Interface (API), a set of installed filters, and a callout API.
The user mode process includes a user firewall engine, policy providers, and one or more user layers. The user firewall engine also includes an instance of the kernel firewall engine, referred to as a filter module that replicates the services of the kernel firewall engine in user mode and that also includes a set of installed filters.
The user and kernel layers each form a requesting layer capable of sending a classification request to the kernel or user firewall engine. The classification request includes a packet received by the requesting layer, a packet context, and a set of layer parameters associated with the requesting layer. The kernel or user firewall engine processes the request and returns firewall or other network policy defined by the set of installed filters.
Each of the set of installed filters includes a set of filter conditions, an action, a set of filter properties, and possibly other data defining network policies. The filter conditions identify packets or other data subject to the network policy defined in the filter. The action is used to define the policy in the filter and usually identifies whether packets matching the filter should be permitted to traverse a network or, conversely, should be blocked. The filter properties are used to identify the relative priority of the filter with respect to other filters and to identify actions that may taken by lower priority conflicting filters.
The kernel firewall engine processes the classification request sent from the requesting layer by identifying one or more matching filters. The matching filters have filter conditions that match the layer parameters and packet context. Once the matching filters are identified, they are applied in order of filter priority. Actions to be taken on the packets are returned to the requesting layer.
The policy providers obtain policy from any suitable source such as volatile or non-volatile memory. The policy is a source of information for rendering a new filter, including the set of filter conditions, associated actions, and filter properties. The user firewall engine adds the new filter to the set of installed filters in the kernel firewall engine via a management API.
The user firewall engine adds new filters into the installed filters, removes filters from the installed filters, and identifies and resolves filter conflicts. Filter conflicts are resolved by placing one filter of two conflicting filters in an active state and the other filter of two conflicting filters in a disabled state.
FIG. 2 shows an embodiment of a framework used to implement the method and system of the present invention. It will be understood that the framework is exemplary and is only used by way of illustration and not limitation. The framework allows the method and system of the present invention to centrally manage network policies by allowing filters to be added and removed and for filter conflicts to be identified and resolved. Although the invention is described with specific reference to firewalls and firewall filters, it is also used to facilitate and manage other filters based network policies such as Quality of Service (QOS), Internet Protocol Security (IPSec) suite, as well as other encrypting, authenticating, and key management security protocols.
The firewall architecture includes a user mode process 250 and a kernel mode process 252. The user mode process 250 and kernel mode process 252 execute as part of an operating system in a network device. Those skilled in the art will appreciate that the user mode process 250 and the kernel mode process 252 of the operating system include additional components that for simplicity are not shown. Alternatively, the firewall architecture is executed in whole or in part within a single operating system process or outside of the operating system as one or more program modules or application programs.
The kernel mode process 252 includes kernel layers forming a network stack 254, a kernel firewall engine 256, and optional callouts 258. The network stack 254 comprises a plurality of layers including a data stream layer 268, a transport layer 270, a network layer 272, and a link layer 274. The layers in the network stack 254 process inbound and outbound network packets. Outbound network packets are packets being transmitted from the network device implementing the firewall architecture onto a network. Inbound packets are packets received at the network device implementing the firewall architecture. As indicated by the respective arrows shown in FIG. 3, inbound packets traverse the network stack 254 from bottom to top and outbound packets traverse the network stack 254 from top to bottom.
Network packets traverse, and are processed by, the network layers sequentially. In accordance with known techniques, each layer in the network stack 254 is capable of receiving packets from a previous layer or module, processing the packet according to a specification or protocol, and sending the processed packet to a next layer or module. The framework implemented according to the present invention further enables each layer in the network stack 254 to maintain packet context, pass the packet context to the next layer, issue a classification request to the kernel firewall engine 256, and take action on the packet according to firewall or other network policy.
The packet context is a data structure that follows the packet from layer to layer. Each layer maintains the context by adding into the context data structure a set of parameters that the layer is designed to process, e.g. the information that the layer is designed to parse from inbound packets, add to outbound packets, or otherwise derive from an inbound or outbound packet. An exemplary data structure used for the packet context is described with reference to FIG. 4.
One of the operations carried out by the layers of the network stack 254 is to invoke the kernel firewall engine by issuing the classification request. The classification request is a call by a layer in the network stack 254 requesting that any filters that match the packet be identified and any associated action, e.g. permit or block, be returned to the layer. The layer issuing the classification request is referred to herein as a requesting layer. Each layer also takes the action on the packet that is returned by the kernel firewall engine 256.
The kernel firewall engine 256 includes a layer API 280, a set of installed filters 282, and a callout API 284. The kernel firewall engine 256 performs various functions including (1) storing the set of installed filters 282, (2) receiving classification requests from the layers in the network stack 254, (3) identifying one or more matching filters from the set of installed filters 282 based on the classification request, and (4) instructing the requesting layer of any action to take on the packet based on the matching filters.
Each filter of the set of installed filters 282 includes a set of filter conditions, an action, filter properties, and a filter Id. The filter conditions identify the network packets that are subject to the action and possibly other network policy identified in the filter. The action identifies applicable network policy such as permit or block. The filter properties include a priority class, an override allowance, and a weight. The filter properties are used to determine whether a filter is an active filter or a disabled filter, an order that active filters are applied to matching packets, and whether an active filter is applied to a matching packet. An exemplary form of the filters is described with reference to FIG. 3.
Associated with the set of installed filters 282 is a disabled filter list 286 and an active filter list 288. The active filter list 288 identifies filters that are in an active status and that are used to implement network policy. The disabled filter list 286 identifies filters that are in an inactive or disabled status and that are not presently being used to implement network policy but that may be later placed in an active status. Alternatively, the invention does not maintain the active filter list 288 and the disabled filter list 286 and tracks the status of each filter using a different method, for example within a field maintained within each filter or other equivalent method.
In an embodiment of the invention filters are assigned to a specific user layer 264 or kernel mode layer 254. Each layer includes a separate set of installed filters 282, a separate disabled filter list 286, and a separate active filter list 288. Alternatively, only a single set of installed filter and active and disabled filter lists are maintained.
The layer API 280 provides an interface between the layers in the network stack 254 and the kernel firewall engine 256. Through the layer API 280, the requesting layer issues the classification request to the kernel firewall engine 256. The classification request includes the packet as received by requesting layer, the packet context as received by the requesting layer, and layer parameters. The layer parameters are packet parameters processed by, e.g. added, parsed or otherwise derived from the packet by the requesting layer. As a specific example, source and destination Internet Protocol (IP) addresses are layer parameters sent by the network layer 272 when implementing the IP protocol. Layer parameters may also include information beyond the packet parameters that are added to or parsed from the packet. As a specific example, the layer parameters include a local address type. The local address type is determined by the IP layer and sent as part of the classification request. Local address types include unicast, broadcast, multicast, anycast and the like. A specific implementation of the layer API 280 is described with reference to FIG. 5.
Optionally, the callouts 258 are used to implement added functionality beyond the permit and block filter actions. A callout is executed when the kernel firewall engine 256 identifies a matching filter for the packet that includes, as the associated action, a callout to one of the callout modules. The kernel firewall engine sends the classification request as issued by the requesting layer, i.e. full packet, layer parameters, and packet context, to the callout module, along with an identification of the matching filter, via the callout API 284. In an embodiment of the invention, the firewall architecture includes a base set of callouts 258. Additional callouts, like layers, are added as needed thereby providing an extensible framework. A specific implementation of the callout API 284 is described with reference to FIG. 6.
The user mode process 250 includes the user firewall engine 260 and one or more policy providers 262 identified as �PP1,� �PP2,� and �PP3.� The policy providers 262 are processes that add network policy, i.e. installed filters 282, into the framework described herein. Any process is used to accomplish this task. The user firewall engine 260 converts the policy into a new filter, i.e. defines the policy in terms of the filter conditions, the action, the filter properties and adds the new filter to the set of installed filters and adds the filter to the active filter list or the disabled filter list.
The user firewall engine 260 also performs filter arbitration and conflict resolution functions. When the policy provider 262 provides new policy to the user mode firewall engine 260, the user firewall engine determines whether the new filter resulting from the new policy conflicts with any of the installed filters 282. A conflict occurs when two or more filters (1) specify different actions, (2) overlap, (3) have different priority classes, (4) the filter with the lower priority class has a higher weight value, and (5) the action specified in the filter with the lower priority class is not specified as an override allowance in the higher priority filter. Filters overlap if they include a common set of filter conditions, i.e., filter conditions within an equal value or ranges of values that intersect. The override allowance defines actions in lower priority filters that may override the filter. If a conflict exists, the user firewall engine 260 resolves the conflict.
The filter engine API 266 forms an interface between the user mode firewall engine 260 and the kernel firewall engine 256. The filter engine API 266 provides a mechanism for the user firewall engine 260 to add new filters into the set of installed filters 282, remove filters from the set of installed filters, and to examine installed filters 282 so that filter conflicts can be detected and resolved. The management API 290 exposes similar functionality to the policy providers 262.
A keying module API 288 provides an interface between the user policy engine 260 and keying module 296. The keying module API 288 is used to signal the keying module of the need to establish an SA.
The user firewall engine 260 also includes a filter module 294. The filter module 294 is an instance of the kernel firewall engine 256 in the user mode 250. The instance of the filter module 294 in the user firewall engine 260 permits the user firewall engine 260 to replicate the services of the kernel firewall engine 256 for one or more user layers 264. The user mode layers 264 are added in the same way that kernel mode layers are created. Because the filter module 294 is the user mode instance of the kernel firewall engine 256, it will be understood that any functionality described herein for the kernel mode firewall engine also applies to the filter module 294. For example, additional user mode layers are added or deleted from the system architecture and callouts may be created thereby providing added functionality to the user mode layers. Filters may be added or removed from the filter module 294. The user firewall engine 260 also resolves filter conflicts for filters in the filter module 294.
Referring to FIG. 3, the set of installed filters 282 will now be described. Each filter 300 has a plurality of fields including the filter Id 302, the filter properties 304, the action 306, and the set of filter conditions 308. The filter Id 302 provides a unique identification to the filter. The filter Id 302 is used, for example, as a means for the kernel firewall engine 256 to return matching filter information to the user firewall engine 260 and the callouts 258. The filter Id 302 is used by the kernel firewall engine 256 to track which filter is assigned to which layer. The filter Id 302 is also used as part of the disabled filter list 286 and the active filter list 288 to identify which filters are inactive and active respectively.
The filter properties 304 include a priority class 310, an override allowance 312, and a weight 314. The priority class 310 is a value that specifies the class of the user that added the filter 300 via one of the policy providers 262. Examples of priority classes include user, administrator, firewall client, and guest. The higher the priority class, the higher the priority of the filter.
The override allowance 312 identifies the actions specified in lower priority filters that are permitted to override the filter 300. Examples of override allowances 312 include: allow, block, log, callout, all-actions, or none. The default override allowance is none.
The weight 314 is any unsigned value. The default size of the weight is 64-bits. The weight value, in conjunction with the priority class 310, determines the overall filter priority. The higher the value in the weight field, the higher the filter priority. The weight 314 is automatically calculated by the user firewall engine 260 based on specificity of the filter conditions and possibly other criteria. Alternatively, the weight is a user entered value. A user may also modify the weight field if it is automatically calculated by the user firewall engine 260.
The set of filter conditions 308 determine whether a packet matches the filter 300. Each filter condition 308 includes a type 318, data 320, and a layer Id:field Id 322.
The type 318 defines the length and number of variables included in the corresponding data field 320. The framework provides for predefined known variable types such as Byte, Short, Long, 8 Bytes, String, Internet Protocol version 4 (IPv4) Address, Internet Protocol version 6 (IPv6) Address, IPv4 Address plus Mask, IPv6 Address plus Mask, and Address Range.
The data field 320 includes data matching the type 316. For example, if the type is IPv4 Address, an acceptable value for the data field 320 is a 32-bit number in range of 00.00.00.00 to 255.255.255.255 as expressed in dotted decimal notation. In some instances, the type 318 provides for multiple values in the data field 320. The Address Range, IPv4 Address plus Mask, and IPv6 Address plus mask types allow two IP address values, defining a beginning and ending range of IP addresses. For maximum flexibility, the architecture also permits user-defined types. Alternatively, additional types are manually added to the framework.
The layer Id:field Id field 322 is used to identify an originating layer and a parameter from the originating layer, respectively. The originating layer and the parameter from the originating layer define packet parameters, i.e. layer parameters and packet context that the data 320 is compared against when identifying matching filters. The originating layer identifies a kernel or user layer. The parameter identifies a specific originating layer parameter. A specific example is illustrated by filter condition 316. The type is IPv4 thereby indicating the data 320 is a 32-bit IP address. The layer Id is �IP� representing that the 32-bit number is a network layer parameter. The field Id is �Src IP Addr� which identifies the IP layer parameter as a source IP address. The IP address provided in the data filed is �123.4.0.1� which identifies the specific IP source address. Packets with the source IP address of 123.4.0.1 match the filter conditions described in the example.
The filter 300 can include multiple filter conditions 308 in which case a packet matches the filer 300 when all filter conditions are satisfied.
The action 306 designated in the filter 300 identifies how to treat packets that match the filter conditions 308. Examples of actions include permit and block. Permit and block identify firewall policy that indicates that matching packets should be permitted to further traverse the network or conversely should be blocked. Other actions may be included such as callout to execute optional callouts for added functionally or to execute policy, such as IPSec. Other network policies may also be executed by defining the other network policies in a data structure referred to as a policy context data structure described below.
The policy context 307 is used to store policy other than firewall policy, such as security policy or QOS policy. The policy context is any suitable data structure. For example, the policy context is a 64 bit number that is interpreted by a process that added the policy context. The policy context and/or action may be a null value.
In an embodiment of the invention, actions are designated terminating or non-terminating. If the action is terminating, once that action is identified for a packet, the action is returned to the requesting layer and no additional filters are applied to the packet. If the action is non-terminating, additional filter lookups continue until a terminating action for the packet is identified. As a default, permit and block are designated terminating actions.
FIG. 4 illustrates an example of a data structure 330 used for the packet context that is maintained by, and passed to, the layers in the network stack 254 and the callout modules 258. The packet context may also be used by one or more user layers 264. The packet context 330 follows the inbound or outbound network packet as it traverses the layers and includes one or more entries, labeled 336-340. Each entry includes a layer Id:field Id 332 and a corresponding value 334.
The layer Id:field Id 332 has the same meaning as the layer Id:field Id 324 provided as part of the filter conditions 308 in the filters 300 (FIG. 4). Namely, the layer Id:field Id 322 identifies the originating layer and the layer parameter from the originating layer for the data in the value field 334. The value field 334 includes a specific layer parameter.
As a specific example, entry 336 includes the layer Id:field Id 332 �NDIS: Src. MAC Addr.� �NDIS� represents a NDIS implementation of the link layer 274 (FIG. 1). �Src MAC addr.� represents a source MAC address. Thus, the layer:field Id 332 indicates that the data in the value field 334 is a source MAC address that was processed and added by the NDIS (Link) layer. The value field 334 includes the actual source MAC address which in the example is �00.08.74.4F.22.E5� as expressed in hexadecimal notation.
Having described the underlying firewall architecture of the present invention, attention is drawn to the functional interfaces of the system and exemplary methods that are performed using the underlying framework described herein. The functional interfaces are implemented as a plurality of application programming interfaces (APIs). The APIs include the layer API 280, the callout API 284, the firewall engine API 266, and the keying module API 276 as shown in FIG. 5 and FIG. 6.
The Classify method 350 is used by the requesting layer to send layer parameters, the packet as received by the requesting layer, and the packet context to the kernel firewall engine 256. The kernel firewall engine 256 compares the (1) layer parameters from the requesting layer and (2) packet context entries to the filter conditions 308 in each filter 300 assigned to the requesting layer to identify matching filters. The following is an exemplary implementation of the Classify method. It will be understood that the following methods are described as receiving or returning data values. According to known programming techniques, the methods may use pointers to data values instead of actual data values.
pInFixed Values,
LayerId identifies the network layer issuing the classification request, i.e. the requesting layer. Referring to FIG. 3, the layer Id identifies the layer as the data stream layer 268, the transport layer 270, the network layer 272, the link layer 274 or a user mode layer 264. Other layers are valid if added to the system.
pInFixedValues includes a subset of the layer parameters processed by the requesting layer. The pInFixedValues, along with the packet context entries, are compared to the filter conditions to determine if the packet matches the filter. Exemplary layer parameters included in the pInFixedValues for each layer are identified in Table A below. It will be understood that these parameters are merely by way of example, and not limitation.
pInContext includes the context data structure 330 (FIG. 4) as received by the requesting layer. The packet context is used by the kernel firewall engine 256 in conjunction with the layer parameters to identify matching packets.
pPacket includes the entire packet as received by the requesting layer. The pPacket is not used by the kernel firewall engine 256 to identify matching filters. As previously described, the kernel firewall engine 256 uses the pInFixedValues and pInContext to identify matching filters. The pPacket is included in the Classify method so that the kernel firewall engine 256 can send it to one or more callout modules 258 identified as the action 306 in matching filters.
pActionType includes the action 306 that is returned to the requesting layer. The action 306 returned is permit or block as identified in the matching filter, or callout modules executed by the matching filter. If no matching filter exists, a default action 306 of permit is returned.
pOutContext is a data structure that, in addition to the action, is designed to include data further defining network policies such as QOS, IPSec and the like. The pOutContext is any suitable data structure, for example, is a 64 bit entry that includes a stream of data to be interpreted by a layer or process adding the pOutContext.
The following is an exemplary form of the Delete Layer 354 method.
Wherein the following characterizes the recited paramter.
The callout API 284 facilitates data exchange between the kernel firewall engine 256 and the callouts 258. The callout API 284 includes a Classify method 356, a Register Callout method 360, and a Deregister Callout method 362.
The Classify method 356 of the callout API 284 is similar to the Classify method 350 of the layer API 280 except that it also includes matching filter data. The following is an exemplary form of the Classify method 410 used to execute a callout.
fixedValues includes the layer parameters sent from the requesting layer. The fixed values is the same data provided by the requesting layer in pInFixedValues data sent as part of the Classify method 350 in the layer API 280.
wfpContext includes the context data structure 330 (FIG. 4). This data is the same as sent by the requesting layer in the pInContext sent as part of the Classify method 350 in the layer API 280.
matchedFilter identifies the filter requesting the callout. Typically, the matching filter is identified by the filter Id 302 of the matching filter 300 initiating the Classify method 356 of the callout API 284.
The Notify method 358 is used to notify a callout when a filter 300 is added to the set of installed filters 282 that identifies as one of its actions 306, the callout module 258. The notify provides the callout with an opportunity to take any required action such as allocating or de-allocating buffers that will be used by the callout 258 when it is executed by the kernel firewall engine 256. The following is an exemplary form of the Notify method 358.
filter identifies the filter being added or deleted by unique value. This may be accomplished by providing the filter Id 302 included as part of the filter 300.
The Registration method 360 and the Deregistration method 362 are used to add and remove callout modules, respectively. An exemplary form the Registration method 360 is as follows:
sd provides a security descriptor for the callout. The security descriptor identifies which processes can read and delete the callout.
An exemplary form of the Deregistration method 362 is as follows:
The filter API 266 facilitates data exchange between the user firewall engine 260 and the kernel firewall 256 engine. As shown, the filter engine API 266 includes an Add Filter method 364, a Delete Filter method 366, and an Enum Layer method 368. The methods of the filter engine API 266 are also provided as part of the management API 290.
The Add Filter method 364 and Delete Filter method 366 are used to add a new filter to the set of installed filters 282 and to delete an existing filter from the set of installed filters 282, respectively. The following is an exemplary form of the Add Filter method 418.
NTSTATUS AddFilterToLayer ( ULONG LayerId, WFP_FILTER* pFilter ); LayerId identifies the layer that the filter is assigned to.
Wherein the following characterizes the recited paramters.
The following is an exemplary form of the Delete Filter method 420.
The Enum Layer method 368 provides a mechanism for the user firewall engine 260 to identify all filters matching a set of criteria. This allows the filter engine API 266 to identify conflicting filters for filter arbitration and conflict resolution. The following is an exemplary form of the Enum Layer method 368.
pEnumTemplate includes a data structure defining the filters that should be returned. Fore example, it include parameters that the filter conditions must match for the filter to be returned.
The keying module API 288 provides an interface between user layers 264 and the keying module 296. The keying module API 288 includes an IPSec SA Acquire method 370, an Expire Notify method 372, and an IPSec SA Acquire Complete method 374, a Keying Module Register method 376, a Keying Module Deregister method 378, an IPSec Inbound Get SPI method 380, an Add Inbound SA method 382, an Add Outbound SA method 384, an Inbound SA Expire 386 method, and a Keying Module Initiate method 388. The keying module API 288 may also include the methods previously described for the layer API, such as a Classify method 350, an Add Layer method 352 and a Delete Layer method 354.
The keying module API is used to facilitate use of known security protocols, such as defined by IPSec, used by an initiating computer and a responding computer. IPSec includes protocols such as AH or ESP. The ESP protocol is an authenticating and encrypting protocol that uses cryptographic mechanisms to provide integrity, source authentication, and confidentiality of data. The AH protocol is an authentication protocol that uses a hash signature in the packet header to validate the integrity of the packet data and authenticity of the sender.
The IKE protocol provides a method for an initiating computer and a responding computer to negotiate security settings used with the AH and ESP protocols. The negotiated security settings form a data structure called a security association (SA). The SA defines parameters such as an authentication algorithm, encryption algorithm, keys, and the lifetime of keys, used by ESP or AH to protect the contents of an IP packet. Because ESP and AH require an established SA, an IKE negotiation is executed before the ESP or AH protocols are used by the initiating and responding computer. A given SA is identified by a value known as a Security Parameter Index (SPI).
Each of the initiating and responding computers include an IPSec driver that determines, based on an IPSec policy, whether data sent between the initiating and responding computers requires encryption or authentication. The IPSec policy is a set of filters that defines how the network device uses IPSec and includes filter lists, authentication methods, and other information. In an embodiment of the invention, the IPSec policy is defined by filters included in the set of installed filters in the kernel policy engine or the filter module 294. The policy that applies to a packet is identified by invoking the keying module layer which uses the Classify method to identify matching filters.
The IPSec SA Acquire method 370 is called by the user policy engine 260 (via a client proxy) to pass a driver acquire or an external initiate request to the keying module layer. The keying module layer returns this call and does the negotiation asynchronously. Once the keying module layer has completed the negotiation, the keying module layer calls the IPSec SA Acquire Complete method 374 to notify the user firewall engine 260 that the negotiation is complete. The following is an exemplary form of the IPSec SA Acquire method.
The IPSec SA Acquire Complete 374 method is called by a keying module to close the user policy engine's context after it has finished negotiation and added all the SAs, or after it has come across an error. After this method is executed, the keying module does not reuse the ipsecContext for any other API method. The following is an exemplary form the IPSec SA Acquire Complete method.
status provides status and other details of the SA negotiation. The status is returned by the user policy engine 260 if the acquire was externally initiated via, FwpKeyingModuleInitiateO.
The Keying Module Register method 376 is called by a keying module to register with the user policy engine 260 and pass its function pointers. The following is an exemplary form of the Keying Module Register method.
The Keying Module Deregister method 378 is called by the keying module to deregister the keying module from the user policy engine 260. The following is an exemplary form of the Keying Module Deregister method.
keyingModuleID is the unique ID of the keying module.
The IPSec Inbound Get SPI method 380 is called by the keying module to obtain the SPI for a new inbound SA. The IPSec Inbound Get SPI method 380 is usually used when the keying module executes in a responding network device. The following is am exemplary form the IPSec Inbound Get SPI method.
engincHandle is the handle to the user firewall engine 260.
The Add Outbound SA 384 method is called by a keying module layer to add and outbound SA. The user policy engine uses an inbound SPI parameter to map this call to its internal state, and ioctl the SA down to the IPSec driver. The following is an exemplary form the Add Outbound SA method:
FIG. 7 illustrates a method 400 according to the present invention whereby a new filter is added to the set of installed filters 282. The method 400 permits to the new filter to be added while resolving any conflicts with other filters installed in the framework.
In step 402, the user firewall engine 260 receives new policy from one of the policy providers 262. As previously described, the policy providers 262 are any suitable source such as stored data in volatile or non-volatile memory, or through user entered data via a GUI.
The user firewall engine then renders the new policy as a new filter by defining the new policy in terms of filter properties 304, an action 306, and filter conditions 308 as shown in step 404. A filter Id 302 and policy context may also be provided.
The filter properties 304 include the priority class 310, the override allowance 312, and the weight 314. The priority class 310 is a function of identity of the user or process responsible for the new policy, e.g. user, administrator, firewall client, or guest, each of which has an assigned value. The higher the value of the priority class the higher the priority of the filter.
The override allowance 312 specifies actions in lower priority filters that can override the new filter, i.e. actions that will be taken even though the filter has a lower priority class. The override allowance is specified by the policy provider 262 and has a default of none.
The weight 314 identifies the precedence of the new filter relative to other installed filters. The weight 314 is automatically calculated by the user firewall engine 260, or alternatively is determined by the policy provider 262. A method for automatically calculating the weight is described with reference to FIG. 10.
In step 406, the user firewall engine 260 determines whether the new filter conflicts with any of the installed filters 282 that are included on the active filter list 288. The installed filters 282 are stored in the kernel firewall engine or alternatively, in filter module 294. Filters may be assigned to a particular user or kernel layer in which case conflicts only exist between the new filter and installed filters 282 assigned to the same layer. Alternatively, the user firewall engine 260 determines whether the new filter conflicts with any installed filter 282 regardless of whether filters are assigned to a particular user or kernel layer. A method of identifying whether a conflict exists is described with reference to FIG. 9. If no conflict is identified, the new filter is added to the set of installed filters 282 using, for example, the Add Filter method 364, and is added to the active filter list 288 as shown in step 408.
If the new filter conflicts with at least one installed filter, the user firewall engine 260 determines whether the new filter has a lower priority class 310 than the conflicting installed filter as shown in step 410. If the new filter does have a lower priority class 310, the new filter is added to the set of installed filter 282 and is added to the disabled list 286 as shown in step 412. Installed filters on the disabled list 286 are not identified as matching filters by the user or kernel firewall engine when responding to a classification request issued by a requesting layer.
If the new filter has a higher priority class 310 than the conflicting installed filter, the new filter is added to the set of installed filters 282 and added to the active list 288 as shown in step 414. The conflicting installed filter is then removed from the active list 288 and added to the disabled list as shown in step 416.
In the case where the conflicting installed filter is moved to the disabled filter list 286, the user firewall engine 260 also determines whether any filters identified in the disabled filter list 286 can now be moved to the active filter list 288. This occurs when a filter was disabled because it conflicted with the filter being moved from the active filter list 288 to the disabled filter list 286. If possible, any such filters are removed from the disabled filter list 286 and moved to the active filter list 288. This process may be recursive. Specifically, as each filter is added to the active filter list 288, it is necessary to disable any lower priority conflicting filters. As any filter is added to the disabled filter list, it is desirable to activate any previously overridden disabled filters.
As illustrated by the foregoing method, the new filter is always added to the set of installed filters 282 and is either included in the active filter list 288 or the disabled filter list 286. Conflicting installed filters may be changed from the active list 286 to the disabled filter list as a result of the new filter.
Referring to FIG. 8, a method 420 for removing a filter from the set of installed filters 282 will now be described. In step 422, the user firewall engine 260 is invoked to remove a particular filter.
In step 422, the method 420 removes the filter from the set of installed filters 282. A method for removing a filter was described with reference to the Delete Filter method 366.
In step 426, the method 420 determines whether the removed filter was in the disabled filter list 288. If the filter was in the disabled list 288, the method ends as generally shown. If the filter was not in the disabled filter list 288, i.e. was in the active filter list 286, the method 420 optionally identifies any filters in the disabled filter list 288 that were overridden, i.e. conflicted with, the removed filter. The overridden filters are then removed from the disabled filter list 288 and added to the active filter list 286 as shown in step 428. In this manner, a previously disabled filter is activated when a higher priority conflicting filter is removed from the set of installed filters 282. Alternatively, the method does not execute steps 426 and 428 and overridden filters are maintained in the disabled filter list.
FIG. 9 illustrates a method 450 used by the user firewall engine 260 to identify whether a first filter conflicts with a second filter. This method is used, for example, when the first filter is a new filter to be installed in the set of installed filters 282 and the second filter is an existing filter in the set of installed filters 282.
In step 452, the user firewall engine 260 identifies a set of potential at odds filters. Potential at-odds filters are filters with a common set of, i.e. overlapping, filter conditions, differentactions, e.g. permit and block, and no common override allowance. A common override allowance exists where a lower priority filter designates a different action but that action is identified as an override allowance in the higher priority filter. A method of identifying filters matching a set of criteria, such as filter conditions and actions, was described with reference to the Enum Layer method 368. In an embodiment of the invention, the user firewall engine only identifies potential at odds filters for installed filters 282 assigned to the same layer as the new filter.
In step 454 the user firewall engine 260 determines whether actual at-odds filters exist. Actual at odds filters are potential at odds filters wherein the first filter has a higher weight value 314 but a lower priority class value 310 than the second filter or vice versa. If actual at odds filters do not exist, then the method 250 determines that no conflict exists as shown in step 456 and the process ends as generally shown. If actual add odds filters do exist, the process 450 determines that a conflict does exist as shown in step 458.
Turning to FIG. 10, a method 468 for automatically calculating a weight value 314 for a new filter will now be described. The weight depends on the specificity of the filter. The specificity of the filter is a function of the filter conditions 308. As a general rule, the fewer packets that a filter potentially matches, as determined by the filter conditions 308, the higher the weight value given to the filter.
As shown in step 470, the user firewall engine 260 identifies a per layer weight definition for the new filter. The per layer weight definition includes bit assignments from the weight value field 314 for filter conditions 308 for the layer assigned to the filter. In an embodiment of the invention, the weight value field is a 32-bit number. Accordingly, the per layer weight definition assigns specific bits from the 32 bits to the filter conditions for the layer. Table B illustrates an exemplary per layer weight definition for the transport layer, with bit 32 being the most significant bit and bit 0 being the least significant bit.
Other/Tie Breaker
It will be noted that some filter conditions are more significant than other filter conditions in the per layer weight definition. For example, in the per layer weight definition shown in Table B, the source IP address filter condition 308 occupies the 8 most significant bits and thus is more significant in the overall weight value than any other filter condition 308. The destination IP addresses filter condition 308 occupies the next 8 most significant bits is more significant than any other filter condition except for the source IP address filter condition. Each layer has its own per layer weight definition and the per layer weight definition in Table B is by way of illustration not limitation.
In step 472, a scaling factor is determined for each filter condition in the per layer weight definition so that the filter condition can be scaled to fit in the number of allocated bits. Any method can be used for this purpose. The following is an exemplary method used for determining the scaling factor.
LogN(Max Filter Condition Range Size)=(Max Weight)
N is the scaling factor.
Max Filter Condition Range Size is the maximum range of the filter condition. For example, in the case of IPv4 addresses, the Max Filter Condition Range Size is 32 bits which translates into 232 or approximately 4.3 billion. In the case of source and destination ports, the Max Filter Condition Range Size is 216 or 65,536.
Max Weight is the maximum value that can be placed in the number of bits assigned to the filter condition in the weight value field 314. For example, in the above example, the source and destination IP addresses are each allocated 8 bits, which renders a maximum weight value of 28−1 or 255. The protocol is allocated 2 bits, which renders a maximum weight of value of 22−1 or 3. The source and destination ports are each allocated 4 bits, which renders a maximum weight value of 24−1 or 15.
Using the above scaling method, the user firewall engine 260 solves for the scaling factor N. As a specific example, if the filter condition is the source IP address and is allocated 8 bits in the weight value field 314, solving for N in the equation LogN(223)=(255) yields N≅1.09051.
In step 474, each of the filter conditions is scaled to fit in the number of bits in the weight value field 314 using the scaling factor. The following how the filter condition is scaled using the previoulsy described scaling method.
Scaled Weight Value=(Max Weight)−LogN(Total Num Filter Condition Values)
Wherein the following characterizes the recited values.
Scaled Weight Value is the weight value to be placed in the bits assigned in the weight value.
Max Weight is the Maximum value that can be placed in the number of bits assigned to the filter condition in the weight value field 314.
N is the scaling factor as previously described.
Total Num Filter Condition Values is the number of values specified in the filter condition. For example, if a single IP addresses is specified as the filter condition, the Total Num Filter Conditions Values is 1. If a range of 10 IP addresses is specified, the Total Num Filter Conditions is 10 and so on.
As a specific, assume that the filter condition specifies a source IP range of 1.2.3.0 to 1.2.3.255. The number of source IP addresses in the range of 1.2.3.0 to 1.2.3.255 is 256 addresses. The Scaled Weight Value equals 255−Log1.09051(255)=193.
In step 478, the Scaled Weight value is placed in the weight value field in the bits assigned to the filter condition. In the example, the value of 193 is placed as a binary number into bit fields 25 through 32.
The per weight layer weight definition may allocated a number of bits to a tiebreaker condition, usually the least significant bits. The tiebreaker value is used to ensure that each filter has a unique weight value 314. The tiebreaker value may be determined using an suitable method. For example, it may be a value that is incremented by a value of 1 for each new installed filter. Alternatively, it may be a random number provided that the same random number is not used for more than one filter.
The method 468 is completed for each filter condition that is specified in the per layer weight definition thereby rendering the 32-bit weight value field 314. Alternatively, two or more filter conditions are combined into a single weight space. For example a single weight space includes 2*(scaled source IP address)+(scaled destination IP address).
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS5987611May 6, 1997Nov 16, 1999Zone Labs, Inc.System and methodology for managing internet access on a per application basis for client computers connected to the internetUS6003084Sep 13, 1996Dec 14, 1999Secure Computing CorporationSecure network proxy for connecting entitiesUS6009475Dec 23, 1996Dec 28, 1999International Business Machines CorporationFilter rule validation and administration for firewallsUS20020162026Feb 6, 2002Oct 31, 2002Michael NeumanApparatus and method for providing secure network communicationUS20030084331Oct 26, 2001May 1, 2003Microsoft CorporationMethod for providing user authentication/authorization and distributed firewall utilizing sameUS20030212900 *May 13, 2002Nov 13, 2003Hsin-Yuo LiuPacket classifying network servicesUS20030223408 *Mar 28, 2003Dec 4, 2003Tsu-Wei ChenMethod and apparatus for content-based packet routing using compact filter storage and off-line pre-computationUS20040001498 *Mar 28, 2003Jan 1, 2004Tsu-Wei ChenMethod and apparatus for propagating content filters for a publish-subscribe networkUS20040039840 *Jul 17, 2003Feb 26, 2004International Business Machines CorporationMethod and system for splitting and sharing routing information among several routers acting as a single border routerUS20040049701 *Aug 11, 2003Mar 11, 2004Jean-Francois Le PennecFirewall system for interconnecting two IP networks managed by two different administrative entitiesUS20040057384 *Sep 20, 2002Mar 25, 2004Franck LeMethod for updating a routing entryUS20040064727 *Sep 30, 2002Apr 1, 2004Intel CorporationMethod and apparatus for enforcing network security policiesUS20040243835 *May 28, 2004Dec 2, 2004Andreas TerzisMultilayer access control security systemUS20050005165Jun 25, 2003Jan 6, 2005Microsoft CorporationMethod of assisting an application to traverse a firewallUS20050010765Jun 6, 2003Jan 13, 2005Microsoft CorporationMethod and framework for integrating a plurality of network policiesUS20050018682 *Aug 18, 2004Jan 27, 2005Ferguson Dennis C.Systems and methods for processing packetsUS20050022010Jun 6, 2003Jan 27, 2005Microsoft CorporationMulti-layered firewall architectureUS20050022011Jun 6, 2003Jan 27, 2005Microsoft CorporationMulti-layer based method for implementing network firewallsUS20050076084 *Oct 3, 2003Apr 7, 2005CorvigoDynamic message filteringUS20050102423 *Dec 7, 2004May 12, 2005Pelavin Richard N.Analyzing an access control list for a router to identify a subsumption relation between elements in the listUS20050114704 *Nov 26, 2003May 26, 2005Microsoft CorporationMethod for indexing a plurality of policy filters* Cited by examinerNon-Patent CitationsReference1Abhishek Vagish et al., NT 5.1 IPSecurity Security Policy Database, Microsoft Corporation, 1999.Referenced byCiting PatentFiling datePublication dateApplicantTitleUS7685271 *Mar 30, 2006Mar 23, 2010Symantec CorporationDistributed platform for testing filtering rulesUS7853647Oct 23, 2007Dec 14, 2010Oracle International CorporationNetwork agnostic media server control enablerUS7860490May 16, 2005Dec 28, 2010Oracle International CorporationMethods and systems for exposing access network capabilities using an enabler proxyUS7873716May 28, 2004Jan 18, 2011Oracle International CorporationMethod and apparatus for supporting service enablers via service request compositionUS7913289 *May 23, 2005Mar 22, 2011Broadcom CorporationMethod and apparatus for security policy and enforcing mechanism for a set-top box security processorUS7920478 *May 8, 2008Apr 5, 2011Nortel Networks LimitedNetwork-aware adapter for applicationsUS7941837 *May 22, 2007May 10, 2011Juniper Networks, Inc.Layer two firewall with active-active high availability supportUS8032920Dec 27, 2004Oct 4, 2011Oracle International CorporationPolicies as workflowsUS8073810Oct 29, 2007Dec 6, 2011Oracle International CorporationShared view of customers across business support systems (BSS) and a service delivery platform (SDP)US8090848Aug 20, 2009Jan 3, 2012Oracle International CorporationIn-vehicle multimedia real-time communicationsUS8161055 *Sep 26, 2008Apr 17, 2012International Business Machines CorporationFilter extraction in a service registry environmentUS8161171Nov 20, 2007Apr 17, 2012Oracle International CorporationSession initiation protocol-based internet protocol televisionUS8214503Aug 31, 2007Jul 3, 2012Oracle International CorporationFactoring out dialog control and call controlUS8214877 *May 22, 2007Jul 3, 2012Troux TechnologiesSystem and method for the implementation of policiesUS8223756Jul 27, 2007Jul 17, 2012Fujitsu LimitedNetwork device and computer productUS8230449Dec 4, 2007Jul 24, 2012Oracle International CorporationCall control enabler abstracted from underlying network technologiesUS8234223Apr 28, 2005Jul 31, 2012Troux Technologies, Inc.Method and system for calculating cost of an asset using a data modelUS8321498Mar 1, 2005Nov 27, 2012Oracle International CorporationPolicy interface description frameworkUS8321594Dec 6, 2007Nov 27, 2012Oracle International CorporationAchieving low latencies on network events in a non-real time platformUS8332927 *Nov 10, 2011Dec 11, 2012Juniper Networks, Inc.Merging filter rules to reduce forwarding path lookup cyclesUS8347357Nov 30, 2010Jan 1, 2013Broadcom CorporationMethod and apparatus for constructing an access control matrix for a set-top box security processorUS8370506Mar 9, 2012Feb 5, 2013Oracle International CorporationSession initiation protocol-based internet protocol televisionUS8401022Feb 3, 2009Mar 19, 2013Oracle International CorporationPragmatic approaches to IMSUS8458703Jun 24, 2009Jun 4, 2013Oracle International CorporationApplication requesting management function based on metadata for managing enabler or dependencyUS8505067Aug 20, 2009Aug 6, 2013Oracle International CorporationService level network quality of service policy enforcementUS8533773Nov 17, 2010Sep 10, 2013Oracle International CorporationMethods and systems for implementing service level consolidated user information managementUS8539097Nov 14, 2007Sep 17, 2013Oracle International CorporationIntelligent message processingUS8576718Mar 9, 2011Nov 5, 2013Blackberry LimitedNetwork-aware adapter for applicationsUS8583830Nov 17, 2010Nov 12, 2013Oracle International CorporationInter-working with a walled garden floor-controlled systemUS8589338Jan 24, 2008Nov 19, 2013Oracle International CorporationService-oriented architecture (SOA) management of data repositoryUS8635592Feb 8, 2011Jan 21, 2014Troux Technologies, Inc.Method and system for tailoring software functionalityUS8675852Jan 15, 2008Mar 18, 2014Oracle International CorporationUsing location as a presence attributeUS8689315Jul 31, 2008Apr 1, 2014Microsoft CorporationMethod for managing network filter based policiesUS8744055Jan 4, 2008Jun 3, 2014Oracle International CorporationAbstract application dispatcherUS8789011Mar 9, 2010Jul 22, 2014Troux Technologies, Inc.Method and system for a generic data modelUS20130031621 *Apr 12, 2010Jan 31, 2013Hewlett-Packard Development Company LpMethod for applying a host security service to a networkWO2013126852A2Feb 23, 2013Aug 29, 2013Missing Link Electronics, Inc.Partitioning systems operating in multiple domains* Cited by examinerClassifications U.S. Classification726/13, 726/11, 709/221, 709/240International ClassificationG06F11/00, G06F15/16, H04L12/66, H04L12/56, G06F13/00, H04L29/06Cooperative ClassificationH04L63/0263European ClassificationH04L63/02B6Legal EventsDateCodeEventDescriptionSep 21, 2011FPAYFee paymentYear of fee payment: 4Apr 26, 2011CCCertificate of correctionJun 6, 2003ASAssignmentOwner name: MICROSOFT CORPORATION, WASHINGTONFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:SWANDER, BRIAN D.;CHHABRA, AVNISH KUMAR;MAYFIELD, PAUL G.;REEL/FRAME:014160/0979Effective date: 20030605RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services©2012 Google


text: $7.00 - $24.00 Better Homes and Gardens Shag Area Rug 4.0 stars (31) ratings Try unlimited 2-day shipping FREE for 30 days See details | Sign up Free shipping on orders over $50 Free store pickup 1 2 3 4 5 6 25 Next Showing 40 of 1,553 results Departments Lighting & Light Fixtures Curtains & Window Treatments Candles & Candle Holders Decorative Pillows Art & Wall Decor Rugs Frames Artificial Plants & Flowers Clocks Coat Racks & Umbrella Stands Decorative Accents Room Dividers Slipcovers Vases Wax Warmers See all Departments Shipping & Pickup Show all Ship to Home FREE Pickup FREE Pickup Today Category Decorative Pillows Alarm Clocks Room Dividers Curtains Area Rugs Mirrors Curtain Sets Table Lamps Decorative Shelving Desk Lamps Curtain Rods & Poles Floor Lamps Picture Frames Metal Wall Art Picture, Mirror & Frame Variety Packs Candle Holders & Accessories Runners Accent Rugs Decorative Memoboards & Whiteboards Garden Planters See more categories Color Gray Blue Black Pink White Red Brown Gold Orange Multi Green Beige Silver Purple Yellow Clear Other Off-White Bronze Assorted See more colors Brand Better Homes and Gardens Mainstays Your Zone Chesapeake Merchandising Inc. Terra Garland Rugs EAZL Mohawk Home Wilco Eclipse The Poster Corp BuyEnlarge Safavieh Diva At Home Trademark Art THE POSTER CORP Americanflat Global Gallery ArtWall iCanvas Art See more brands Size 4" x 6" 5" x 7" 8" x 10" Standard 52" x 63" 52" x 84" 52" x 95" 11" x 14" 5 x 7 50 x 84 30 x 24 30 x 36 52 x 84 52 x 63 4 x 6 52 x 95 14" x 60" 28-48 30" x 24" 30"x36' See more sizes Type Wall Table Lamps Sheers Tabletops Specialty Rugs Tabletop Collage Horizontal Blinds Pillows Standard Single Curtain Rod Jar Pillar Throw Pillows Analog Candle Sets Frame Sets Traditional Chair Cushions Double Curtain Rod See more types Lifestage Adult Child Teen Price $ to $ Go $0 - $10 $10 - $15 $15 - $20 $20 - $25 $25 - $50 $50 - $75 $75 - $150 $150+ Special Offers Only at Walmart Clearance Reduced Price Rollback New As Advertised See more special offers Material Wood Metal Cotton Polyester Plastic Fabric Nylon Glass Ceramic Polypropylene Olefin Polyester Blend Cotton Blend Paper Wood Composite Iron Other Specialty Vinyl Rubber See more materials Style Contemporary/Modern Cottage/Country Traditional Geometric Rustic Vintage Novelty Abstract Shag & Flokati Stripes Damask Solid Animals Asian Inspired Cabin Retro See more styles Length 120.0 18.0 4.0 0.0 0.1 0.48 0.59 0.669 0.71 0.75 0.79 0.88 0.9 0.91 0.92 0.95 0.98 0.99 1.0 64.0 See more lengths Occasion Wedding Birthday Graduation Anniversary Christmas Baby Shower Father's Day Mother's Day Housewarming See more occasions Pattern Geometric Floral/Botanical Abstract Solid Floral Stripes Damask Graphic Print Graphic Prints Pattern Plaid Contemporary Animal Medallion Oriental Paisley Fruit See more patterns Retailer Walmart.com Wayfair Deal Genius My Quick Buy The Primrose Lane LLC See more retailers Theme Nature & Floral New Baby Customer Rating 4.0 stars & Up 3.0 stars & Up 2.0 stars & Up 1.0 stars & Up Store for Good Sustainability Women-Owned Businesses Gifts By Recipient For Him Gender Unisex Women Men Boys Girls Finish Bronze Black Nickel White Mahogany Silver Pewter Brass Espresso Gold Natural Chrome Copper Stainless Steel Walnut Bronze Finish Brown Cherry Oak Red See more finishes Number of Pieces 1 Shape Rectangle Round Square Triangle Novelty Oval Semicircle Width 0.0 0.39 0.41 0.5 0.562 0.59 0.6 0.63 0.7 0.71 0.75 0.78 0.8 0.81 0.87 0.88 0.9 0.98 1.0 1.05 See more widths Subject Religion & Spiritual Panel Style Rod Pocket Grommet Back Tab Features Adjustable Popular in Better Homes and Gardens Decor Picture Frames Collage Family Map Of the United States Bathroom Lighting Fixtures Silk Plants 12 X 9 Area Rugs Zebra Rugs Blue Rugs Pink Rugs Compute- app-5482454-12-66890930, DC- prod-dal2, ENV- prod-a, Ver- 44.0.0, SHA- 4ccde6630b54173e13bf9646401e57ff2c4cccd4, Log- 62502d8a-93-156161a5cd3000 Site Information Be the first to save! Email Address Sign up Privacy policy Stay connected Mobile apps Help Feedback MoneyCenter Privacy & security CA privacy rights Terms of use Financial services Walmart MoneyCenter Walmart Credit Card Apply now Manage card account Product Care Plans Walmart Pay Get to know us About Walmart.com Corporate Suppliers Marketplace Careers @Walmartlabs Walmart.com Terms of use About our ads Affiliate program CA privacy rights Privacy & security Customer service Returns policy Product recalls Int’l customers Tax exempt program Contact us Feedback Store pickup In the spotlight Expand Baby Cribs Strollers Diapers Baby feeding Car seats Expand Electronics Cut the Cable Computers TVs iPads & tablets Expand Fitness Exercise machines Vitamins Ellipticals Treadmills Fitbit Expand Keep cool Air conditioners Fans Swimming pools Pool toys Expand International sites Argentina Brazil Canada Chile China Japan Mexico United Kingdom © Walmart Stores, Inc. To ensure we’re able to help you as best we can, please include your reference number: Ref:

type: global

value: This website is an American multinational retail corporation that operates a chain of hypermarkets , discount department stores, and grocery stores from the United States, headquartered in Bentonville, Arkansas.


text:
Fed Seen Paring QE to $75 Billion Pace This Month, Survey Shows - Bloomberg
Fed Seen Paring QE to $75 Billion Pace This Month, Survey Shows
By Jeff Kearns, Caroline Salas Gage and Catarina Saraiva - Sep 6, 2013
A government report today showing job growth was weaker than forecast hasn’t derailed economists’ expectations that the Federal Reserve this month will taper its monthly bond buying by $10 billion, to $75 billion.
Chairman Ben S. Bernanke and his colleagues will reduce Treasury purchases to $35 billion from $45 billion while maintaining mortgage-bond buying at $40 billion, according to the median of 34 responses today in a Bloomberg News survey of economists. That pace was unchanged from an Aug. 9-13 poll, as was a projection that the program will end in June.
Today’s Labor Department report showed employers added 169,000 workers to payrolls in August, less than the 180,000 forecast by economists in a Bloomberg survey, and July’s growth was revised down to an 13-month low of 104,000. That won’t stop the Fed from making the first reduction in purchases at the Sept. 17-18 meeting, said Dana Saporta, an economist at Credit Suisse Group AG in New York.
“The disappointing employment report makes it a tougher call,” said Saporta, who estimates a cut to $65 billion. “It passes the taper test, albeit not with flying colors, and it’s good enough to keep the taper as the most likely scenario.”
Today’s jobs report, the last one Fed officials will see before they meet, also showed the jobless rate unexpectedly declined as more people left the labor force. Unemployment dropped to 7.3 percent, the lowest since December 2008, from 7.4 percent. The participation rate declined to 63.2 percent, the lowest since August 1978.
Falling Joblessness
While the unemployment rate “fell for the wrong reasons,” payroll growth wasn’t bleak enough to delay a tapering of bond buying, according to Stephen Stanley, chief economist at Pierpont Securities LLC in Stamford, Connecticut.
“It would have taken a much more radically weak number to change their view,” said Stanley, who expects the Fed to pare monthly purchases of mortgage bonds and Treasuries by $10 billion each. “They still feel like they want to be very accommodative.”
Fed policy makers were “broadly comfortable” with Bernanke’s plan to start reducing purchases if the economy improves, minutes of their July meeting showed. A Bloomberg survey of economists conducted Aug. 9-13 showed 65 percent of respondents predicted a taper will be announced in September.
Revisions to prior reports subtracted a total of 74,000 jobs from payrolls in June and July. The new figures lowered the 12-month average pace of monthly payroll growth to 183,830, below the 185,330 average as of August 2012.
“Tapering is likely to begin this month, and the report is not weak enough to alter that,” said Tanweer Akram, a senior economist at ING Investment Management in Atlanta. “The U.S. economy continues to add jobs, and that’s the central takeaway from the report. The trend is continuing with gradual improvement like we’ve seen in the past.”
Kansas City Fed President Esther George, who has consistently dissented against additional stimulus, today called for a tapering of $15 billion at this month’s meeting.
“An appropriate next step toward normalizing monetary policy could be to reduce the pace of purchases from $85 billion to something around $70 billion per month,” George said today in prepared remarks for a speech in Omaha, Nebraska. Such a move would be “appropriate” at the next meeting, and future purchases could be split evenly between Treasuries and mortgage-backed securities.
Chicago Fed President Charles Evans, who has consistently supported record stimulus, said today in a speech in Greenville, South Carolina, that the central bank shouldn’t taper until inflation and economic growth pick up. Evans, who votes on FOMC policy this year, told reporters he has an “open mind” on whether to taper buying this month.
Dallas Fed President Richard Fisher and Narayana Kocherlakota of Minneapolis had differing views yesterday, with Fisher saying policy makers must ensure their bond buying doesn’t disrupt financial markets and Kocherlakota calling for more accommodation. Fisher spoke in Dallas and Kocherlakota gave a speech at the University of Wisconsin in La Crosse.
John Williams of San Francisco said in Portland, Oregon, this week that “clearly we are getting closer to meeting our test of substantial improvement in the labor market.”
The yield on the benchmark 10-year Treasury note has climbed about a percentage point since Bernanke said on May 22 that the central bank could “take a step down in our pace of purchases” in the “next few meetings.” Bernanke said June 19 policy makers may reduce the $85 billion pace this year and halt it altogether by mid-2014.
Yields fell today after breaching 3 percent for the first time in two years after the employment report. The 10-year yield declined 0.09 percentage point to 2.90 percent at 1:28 p.m. in New York. That’s up from 1.93 percent on May 21.
Former Fed Vice Chairman Don Kohn, whom President Barack Obama mentioned as a potential successor to Bernanke, said the central bank is still likely to begin tapering its bond purchases in September, though the odds have changed as a result of today’s disappointing labor report.
Kohn assigned 60 percent odds of a reduction in the pace of bond buying this month, down from 80 percent a few days ago, according to a report from the Potomac Research Group in Washington, where Kohn is a senior economic strategist. Kohn is also a senior fellow at the Brookings Institution in Washington and an external member of the Financial Policy Committee at the Bank of England.
Bill Gross, manager of the world’s biggest bond mutual fund, said the jobs report won’t step the Fed from tapering.
“Bernanke and company are committed to a taper,” Gross, co-founder Pacific Investment Management Co., said in a Bloomberg Radio interview with Tom Keene. “It will be taper lite as opposed to a strong tapering.”
To contact the reporters on this story: Jeff Kearns in Washington at jkearns3@bloomberg.net; Caroline Salas Gage in New York at csalas1@bloomberg.net; Catarina Saraiva in Washington at asaraiva5@bloomberg.net

value: This website is an international news agency headquartered in New York City and a division of Bloomberg L.P. Content produced by Bloomberg News is disseminated through Bloomberg Terminals, Bloomberg Television, Bloomberg Radio, Bloomberg Businessweek, Bloomberg Markets, Bloomberg.com, and Bloomberg's mobile platforms. Since 2015, John Micklethwait has served as editor-in-chief.