Computing networks can include multiple network devices such as routers, switches, hubs, servers, desktop PCs, laptops, and workstations, and peripheral devices, e.g., printers, facsimile devices, and scanners, networked together across a local area network (LAN) and/or wide area network (WAN). Network configuration can be dynamic, with clients connecting to and disconnecting from the network, e.g., a laptop user logging into, and out of, the network periodically, or by changing device characteristics, e.g., adding new printer drivers, or printer types, or software upgrades, etc. Managing compatibility between the devices constituting the network is therefore dynamic as well, for example, by ensuring minimum operating system versions and/or patch levels are being used, clients having minimum versions of device drivers, etc.
There is also a need to protect a network from attacks against vulnerable services, data driven attacks on applications, and host-based attacks such as privilege escalation, denial of service attacks, port scans, unauthorized logins and access to sensitive files, viruses, Trojan horses, and worms, among others. Security measures are dynamic in nature, periodically being modified in response to changes in real and perceived threats, risks, and vulnerabilities. Thus, managing network security is dynamic as well, since virus definitions and checking protocols need to be kept up to date, and client access to the network has to be commensurate with changing client rights and network configuration.
Traditionally, computer networks have been relatively open, with access to data only being restricted by standard account access using passwords, etc. More recently, a paradigm shift has developed whereby a client is now required to authenticate itself to the network before being allowed any network access at all. This adds an extra degree of protection to both network devices, e.g., switches, routers, etc., as well as other network clients and servers, etc. To functionally access a network, a client establishes a physical connection, and proceeds through a pass/fail login process to establish their network compatibility and authority. In previous approaches, if a client lacks network authorization or is significantly incompatible, network access is either denied or severely restricted, thus isolating the client from much of the network. Less severe compatibility issues may be addressed manually, e.g., by a network administrator, or trigger notices of deficiencies and availability of compatibility and/or security upgrades, e.g., new software version(s) and/or updated virus definitions available for voluntary downloading and installation at the user's convenience.
Remote client remediation has thus far been implemented by using a remediation Virtual Local Area Network (VLAN) to isolate clients that are in the remediation process. This prevents such clients from otherwise interfering with normal operation of the network or other clients, e.g., through virus spreading, Denial of Service (DoS) attacks, etc. Typically the remediation VLAN has been distributed throughout the networking devices, e.g., switches, routers, etc., to allow any client to easily be placed on the remediation VLAN. However, this requires network changes when a remediation solution, e.g., software patch, is deployed, making it less attractive.
Embodiments of the present invention may include network devices, systems, and methods, including executable instructions and/or logic, for remote client remediation. In one embodiment of the present invention, a method for remote client remediation includes identifying a client, associated with an original VLAN, needing remediation. Packets originating from the client during remediation are tunnel-encapsulated. The tunnel-encapsulated packets are forwarded to a remote remediation functionality different from an original destination address of the packets and having membership in a remediation VLAN different from the original VLAN.
The example network of
The network embodiment of
The designators “N” and “M” are used to indicate that a number of fat or thin clients can be attached to the network 100. The number that N represents can be the same or different from the number represented by M. The embodiment of
Additionally as the reader will appreciate, a number of mobile devices, e.g., wireless device 121, can connect to the network 100 using a wireless air interface, e.g., 802.11, which can provide a signal link between the mobile device 121 and an access point (AP) 119. The AP 119 serves a similar role to a base station in a wireless network, as the same will be known and understood by one of ordinary skill in the art. As shown in
As one of ordinary skill in the art will appreciate, each network device in the network 100 can be physically associated with a port of a switch to which it is connected. Information in the form of network packets, e.g., data packets, can be passed through the network 100. Users physically connect to the network through ports or APCs 123 on the network 100. Data frames, or packets, can be transferred between network devices by means of a network device's, e.g., switch's, logic link control (LLC)/media access control (MAC) circuitry, or “engines,” as associated with ports on a network device. A network switch forwards network packets received from a transmitting network device to a destination network device based on the header information in received network packets. A network device can also forward packets from a given network to other networks through ports on one or more other network devices. As the reader will appreciate an Ethernet network is described herein. However, embodiments are not limited to use in an Ethernet network, and may be equally well suited to other network types, e.g., asynchronous transfer mode (ATM) networks, etc.
According to embodiments described herein, remediation resources, e.g., the remediation server 110-10 which serves to remediate clients with respect to network compatibility and/or security, can be located in a “centralized” location in network 100. As used herein, the term “centralized” means a particular location in the network 100 accessible from a number of network devices, e.g., 118-1, . . . , 118-5, whether or not the topographical location is in-line with a given packet's intended network path or topographically central to the network 100. To further explain, in network 100 of
However, the term “central” in central network devices is not to be confused with the use of the term “centralized.” In some embodiments of the present invention, a “centralized” remediation resource, as defined above, may be integral to or associated with an “edge” network device. That is, the topographical location in a given network of the remediation resource can be in association with switch 118-1, connected to “fat” and “thin” clients, 114-1, . . . , 114-N, and 115-1, . . . , 115-M, in
As used herein, the term “remediation server” is used to mean an embodiment of a remediation functionality for a network, as contrasted with a server performing another specific function or a “network device”, e.g., router, switch, and/or hub, etc., which are sometimes considered more as “backbone” component devices to a network. As the reader will appreciate, a remediation server 110-10 includes processor and memory resources capable of storing and executing instructions to perform a particular remediation role or function. A remediation server can also include one or more network chips, e.g., ASICs, having logic and a number of ports, as the same will be known and understood by one of ordinary skill in the art.
In the example network implementation of
According to an embodiment of the present invention, a network, e.g., network 100, is implemented having a centralized remediation functionality, which may be remote with respect to “edge” network devices to which clients can connect. As the reader will appreciate, network clients are required to meet an established set of criteria in order to functionally interact with the network, i.e., meet established minimum network compatibility, operability, security, and any other network connectivity requirements in place at the time.
Embodiments of the present invention include remote client remediation which has the potential advantage to increase the scope and timeliness of network compatibility and protection. In addition, sharing remediation resource(s) among many network devices has the potential advantage of reducing expense and user-level complexity, by eliminating the need for dedicated remediation resources dispersed throughout the network. However, implementing centralized remediation function(s) requires providing clients access to network remediation resources while isolating certain clients from other portions of the network during the remediation process, and involves sending network traffic to the remediation resource in lieu of locating the remediation resources at every network edge device to which clients may connect, e.g., having a remediation resource available at all edge network devices to which clients are initially associated.
As shown in
Since network 200 includes a centralized remediation functionality, e.g., remediation server 250, remote to a number of network devices, e.g., “edge” switches S1218-1 and SN 218-N having clients connected thereto, data packets are tunneled through a portion of the network 202 to a remote switch, e.g., switch S3218-3, where they are decapsulated and forwarded as normal to the remediation server 250 for processing. Return packets sent from the remediation server 250 are securely tunneled from the remote switch, e.g., switch S3218-3, to the “edge” switch, e.g., switch S1218-1, where they are decapsulated and forwarded as normal to the client, e.g., network client C1214-1.
The remediation server 250 could also be implemented as an integral part of switch 218-3, or implemented together with other server functions, e.g., remote access server, proxy server (firewall), etc. The remediation server 250 can include processor 251 and memory resources 252 capable of storing and executing instructions to perform a particular remediation role or function. The remediation server 250 can also include one or more chips, e.g., ASICs, having logic and a number of ports, e.g., port 254-1, . . . , 254-2. Network devices, e.g., switch 218-3, which are connected to a remediation functionality, e.g., remediation server 250, or have a remediation functionality implemented therein, may also include one or more lookup tables, e.g., lookup table 280-3, having information on network topology learned from packets arriving from other network devices. In some embodiments of the present invention, computer executable instructions and/or logic can extract information from the fields of packet headers, e.g., MAC header, IP header, etc. In this manner, membership within logical groups, or within logical regions, or in accordance with other network protocols, can “learn” from incoming packets.
A network client, e.g., network client C1214-1, establishes a physical connection to a network device, e.g., switch S1218-1. The physical connection may be through a wired or wireless coupling. After establishing a physical connection, the client goes through a login process, e.g., using IEEE 802.1x port based network access control, or some other prescribed method. According to the credentials of the client, during the login process the client is assigned commensurate network parameters and privileges, for example, default virtual local area network (VLAN) membership, e.g., VLAN V1, quality of service level, and network access privileges. These initially-assigned parameters and privileges are implemented and enforced on the edge switch to which the client is attached, e.g., switch S1218-1. The edge switch, e.g., switch S1218-1, is tasked with a set of policies that are associated with a particular client, e.g., network client C1214-1.
As part of the above-mentioned login process, or according to a separate application executing on the client, a determination is made as to whether or not the network client, e.g., network client C1214-1, is sufficiently compliant with the specified connectivity criteria, or needs to be remediated. Connectivity criteria include, but is not limited to, network compatibility, software version and patch implementation, virus protection levels, etc. If the client is compliant, i.e., up-to-date, the client is allowed its normal network function and access, without need for remediation, according to the parameters and privileges granted at login. If the client is determined to be non-compliant, according to security, network compatibility, or other criteria, then normal access to the network is constrained, subject to the client completing a remediation process. The client is identified as needing to complete a remediation process to reach compliance. The remediation process is intended to bring an authorized client into compliance with the network connectivity requirements, e.g., compatibility, operability and security, and restrict or deny meaningful network access to unauthorized clients. The remediation process typically involves contacting a remediation resource, e.g., remediation server 110-10, to retrieve and apply the relevant updates and patches.
According to one embodiment of the present invention, while the client is being remediated, it is isolated from the rest of the network to protect the network infrastructure, e.g., switches, routers, servers, etc., as well as to protect other network clients, from itinerant behavior by the client, e.g., incompatible operations, spreading viruses, denial of service attacks, etc. The client can be effectively isolated from the rest of the network by forcing client-originated traffic onto a remediation VLAN, e.g., VLAN VR 296, regardless of the VLAN to which the client was originally assigned during the login process. Remediation resources, e.g., remediation server(s) 110-10, are placed on a remediation VLAN, e.g., have membership in remediation VLAN VR 296. Packets received from a client are forced onto the remediation VLAN, despite the client being originally initially assigned to another VLAN during the login process. Where the devices of the remediation VLAN are remote in the network with respect to the client to be remediated, bridged tunneling is used to transparently link the client with remediation resources, e.g., devices of the remediation VLAN. Once the client has completed the remediation process, the client is permitted its normal network access according to the privileges assigned to it at login.
In some embodiments, secure tunnels are used to connect edge switches (to which clients attach) to remote switches (to which a remediation server, or servers, may be attached), thus minimizing network changes. Thus, remote client remediation is achieved by securely tunneling packets originating from, and destined to, the client during remediation, thereby effectively isolating the client to a remote remediation VLAN (associated with one end of the tunnel), and preventing the client from infecting other clients or network devices. A remediation functionality, e.g., a remediation server, is associated with the remote remediation VLAN, and the remediation functionality manages remediation of the client. Forcing client communications to the remediation VLAN administratively confines the client to the remote remediation VLAN. Communications are managed by network devices to make the effective confinement of the client to the remediation VLAN appear transparent to the client and the remediation functionality. In other words, the client and remediation functionality each operate as if both are members of the same VLAN, rather than members of separate VLANS, remotely linked by bridging tunnels, e.g., secure bridging tunnels.
Tunnels, e.g., secure tunnels, are used to transparently transport data packets between clients being remediated, e.g., network client 214-1, and the remediation functionality, e.g., remediation server R1250, as illustrated in
According one embodiment of the present invention, the communication “handshaking” process between dispersed remediation resources and dispersed clients being remediated is arranged to be transparent to both the remediation resources and the client. Transparency entails each entity conducting communications as if the other entity resides on the same VLAN. The client 214-1, for example, was assigned to be on VLAN V1292 at login (similarly, client 214-M is shown as being assigned to VLAN VM), while the remediation functionality, e.g., remediation server R1250, is associated with VLAN VR 296. However, as described below in more detail, through use of bridged tunnels linking the client 214-1 to the remediation server 250, lookup tables, and data packet modification, the two network entities in communication appear to the other as if they are on the same VLAN, and communications can be conducted accordingly.
The following description is for a packet exchange as a part of a remediation process between the network client, e.g., network client C1214-1, and a remediation functionality, e.g., remediation server R1250. According to embodiments of the present invention, the network device, e.g., switch S1218-1, has a client remediation lookup table 290-1.
The client remediation lookup table 300 is programmed with information associated with the network client upon client connection, login, or upon determination that the network client needs remediation. The MAC address of the network client, e.g., MAC_C1310 for network client C1 is used as the lookup key. The remediation flag 312 is set, for example, to “1” indicating remediation is required, or “0” indicating remediation is not required. Tunnel encapsulation information is included in the table entry including the IP destination address, e.g., IP_S3314, of the remote device, e.g., switch S3218-3 shown in
In one operational flow embodiment, the client remediation lookup table 290-1 is used in the communication process between the network client, e.g., network client C1214-1, and the remediation functionality, e.g., remediation server 250. Attempting to communicate with a remediation resource, e.g., remediation server 250, the network client Cl sends a data packet having a P1 configuration 270 to the remediation functionality, e.g., remediation server 250. Data packet 270 is initially received at the network device 218-1 through a port 220-1.
The optional VLAN tag(s) 403 are preferably removed from the packet because the information represented thereby cannot be trusted since network client C1 is not yet deemed compliant during remediation. For example, network client could be maliciously sending packets, e.g., packet 270, containing a virus, with deceptive optional VLAN tags 403 in an attempt to fool the forwarding process of switch S1218-1. In addition, the optional VLAN tag(s) 403 in data packets, e.g., packet 270, are generally irrelevant to the remediation process; therefore, it is not necessary to occupy network communication bandwidth by carrying any such VLAN tags 403 through the tunnel 221-1 to the remediation server R1250. Alternatively, optional VLAN tag(s) 403 can be left in the packet, and ignored in subsequent processing.
The stripped packet having configuration P1-1 is thereafter tunnel encapsulated with the addition of an encapsulation header 415 to form a packet 272 having configuration P2.
Packet 272 having configuration P2 is communicated across a portion of the network 202, arriving at switch S3218-3. Switch S3218-3 recognizes from the encapsulation header, e.g., 415, that this packet, e.g., network packet 272, is being tunneled for remediation. The encapsulation header 415 is removed, thus generating packet 274 having configuration P3 as shown in
The normal forwarding logic implemented by switch S3218-3 for packet 274 includes performing a MAC source lookup using the source VLAN and the source client, e.g., {VR, MAC_C1} used to allow switch S3218-3 to “learn” the location of clients in the network. For the first packet received by switch S3218-3 from client C1214-1, the “learn” process generates an exception due to failure of the forwarding lookup, and switch S3218-3 “learns,” i.e., records in a lookup table, that packets, e.g., packet 272, originating from client C1214-1, came from a tunnel 221-1 originating from switch S1218-1. As one skilled in the art will appreciate, this information is determined by examining the encapsulation header 415 of packet 272 having configuration P2, specifically, the IP_SA field of the encaps IP header 413. This “learn” process, occurring on receipt of the first packet sent from client C1214-1, is used later by switch S3218-3 to determine the return tunnel, e.g., 221-2 for sending packets addressed to network client 214-1.
The results of a “learn” process occurring during remediation are somewhat different from the results of a “learn” process occurring outside of a client remediation process. During remediation, switch S3 “learns” the network configuration that includes network client C1214-1 being located at the other end of a tunnel, e.g., tunnel 221-2, to IP_S1, i.e., to switch S1218-1, established for remediation. Absent a remediation process, i.e., when data packets do not arrive at a switch from a remediation tunnel, the switch would “learn” that a client is located on a physical port, e.g., switch S1218-1 would “learn” that network client C1214-1 is attached to port 220-1. The above-described “learn” process is a standard part of the operation of network switches, e.g., 218-1, 218-3, . . . , 218-N, and occurs as a packet is being sent to its destination using regular hardware forwarding logic. For example, the “learn” process occurs in parallel with forwarding the packet by copying the packet to the switch's CPU to program an entry in hardware forwarding tables.
After the packet, e.g., packet 274, reaches the remediation functionality, e.g., remediation server R1250, the remediation functionality acts on the packet as appropriate, depending on the packet payload. The specific remediation process is a design choice for the network administrator according to the network owner/operator policies to be enforced, as will be appreciated by those having ordinary skill in the art.
To continue the remediation process, it may be necessary for the remediation functionality, e.g., remediation server 250, to periodically communicate data packets to the client, e.g., network client 214-1, as illustrated in
Packet 276 having a P4 configuration is received from the remediation functionality 250 at switch S3218-3. Packet 276 is assigned to the remediation VLAN, e.g., VLAN VR 296, because it arrived on port 222-1, and switch S3 is programmed with information that the remediation server R1250, operating on VLAN VR 296, is attached to port 222-1. Switch S3218-3 performs forwarding lookups on this packet based on the remediation VLAN VR 296 and the remediation server 250, e.g., {VR, MAC_R1}, as the MAC source lookup to determine any prior “learns,” and based on the remediation VLAN VR 296 and the network client 214-1, e.g., {VR, MAC_C1}, as the MAC destination lookup to determine where to forward the received packet 276. The lookup based on the remediation VLAN VR 296 and the network client 214-1, e.g., {VR, MAC_C1}, returns forwarding information “learned” when packet 272 first arrived from client 214-1 to switch S3218-3. This information consists of a tunnel flag, along with the IP address of the tunnel destination, e.g., IP_S1, indicating packet 276 is to be tunneled to switch S1218-1. As a result, switch S3218-3 adds an encapsulation header to packet 276, thus forming packet 278 having a P5 configuration.
Packet 278 having a P5 configuration is communicated across a portion of the network 202, arriving at its destination, e.g., switch S1218-1. Switch S1 determines that the packet is received from a tunnel associated with a remediation process by examination of the encapsulation header fields, e.g., ENCAPS IP header 443 and ENCAPS GRE header 444. Packet P5 is decapsulated, resulting in packet 280 having a P6 configuration.
Switch S1218-1 performs a search of the client remediation table 290-1 using the destination MAC address of packet 280 (having a P6 configuration), e.g., MAC_C1, as a key. The matching entry indicates the network client 214-1 has its remediation flag 312 set, and that the VLAN of the client is the original VLAN V1316, as determined from the remediation lookup table 390-1, and which is assigned to the packet 280, i.e., the packet is associated with the original client VLAN. Although not shown in
Switch S1218-1 also performs forwarding lookups on the decapsulated packet 280 based on the packet being associated with the original VLAN V1292 and the packet being sent from the remediation server 250, e.g., using {V1, MAC_R1} as the MAC source lookup, to determine any “learns,” and lookups based on the packet being associated with the original VLAN V1292 and the packet being addressed to network client 214-1, e.g., using {V1, MAC_C1} as the MAC destination lookup, to determine where to forward the packet 280. The MAC destination lookup indicates that packet 280 is to be sent out of port 220-1 to reach network client 214-1 connected thereto. The portion of the packet forwarding process involving ordinary MAC source and MAC destination lookups, i.e., after packet configuration manipulations described herein, are conventionally accomplished as will be understood by those having ordinary skill in the art.
Although only one remediation resource, e.g., remediation server R1250, is shown in
The process described above is for a well-behaved client following the established protocol for accomplishing remediation. Alternative measures are needed to process clients which are not well-behaved, or not cooperative, or malicious, e.g., the client is infected with a virus. If a client, e.g., network client C1214-1, attempts to send a packet, e.g., packet 270 having a P1 configuration, to a random destination MAC address, i.e., MAC_DA 401, that is not the MAC destination address of the remediation functionality, i.e., MAC_DA 401 is not set to MAC_R1, similar initial packet forwarding measures are followed to identify the client as needing remediation and isolate the packets originated by the client from the network by tunneling its packets to the remediation VLAN, e.g., to switch S3218-3. For example, an entry is created for the client into the remediation lookup table 290-1, the packet is still stripped of optional VLAN tags, encapsulated, and tunneled to switch S3, where it is decapsulated and any “learns” are processed as previous described for a well-behaved client. The processing for a packet to reach the switch associated with the remediation VLAN is based upon the MAC source address of the client, e.g., MAC_SA 402. And traffic from a client needing remediation is prepared and tunneled to the remediation VLAN as described above.
However, since the packet is not specifically addressed to a remediation functionality, e.g., remediation server 250, on the remediation VLAN, e.g., VLAN VR 296, switch S3218-3 will not know where to send the packet. According to one embodiment of the present invention, switch S3218-3 floods the packet, e.g., now packet 274 having a P3 configuration, to all ports on switch S3 that are a member of the remediation VLAN VR 296. By this method, the remediation server R1250 will still receive the packet 274. However, because the packet 274 received by the remediation server R1250 is not addressed to R1, i.e., the MAC destination address is not MAC_R1, the received packet 274 is ignored and the remediation functionality, e.g., remediation server R1250 takes no further action in response to packet 274. Remediation servers are “hardened” devices, as is understood by those having ordinary skill in the art, since by receiving all manner of packets, are subjected to all kinds of possible attacks.
According to another embodiment of the present invention, the packet flooding action of switch S3218-3 in response to receiving a packet having an address unknown to switch S3218-3 is not desired, for example, to prevent overwhelming the remediation functionality, e.g., remediation server R1250, switch S3, or the devices associated with the remediation VLAN attached thereto with junk packets. Accordingly, switch S3218-3 is programmed and/or configured to simply drop all packets emerging from remediation tunnels that would otherwise be flooded, i.e., packets not specifically addressed to a known remediation functionality.
According to another embodiment of the present invention, once the client has information identifying a remediation functionality, e.g., an IP address and MAC address of the remediation server 250, switch S1218-1 can be programmed and/or configured to drop all packets that would otherwise be flooded at the remote switch, i.e., packets not specifically addressed to a remediation functionality. Other methods for efficiently ignoring or dropping maliciously-generated packets are also contemplated by the present invention, as will be understood by those having skill in the art.
Recall the well-behaved client appropriately addresses packets to a remediation functionality in an effort to become remediated. Therefore, the client needs to be informed of the MAC address of the remediation server R1. According to one embodiment of the present invention, remediation information is communicated to the client as a part of the login process, for example, the client login process can include passing information from the client about the state of the client, e.g., software versions, virus definition versions, etc., and receiving information to the client to point the client to a remediation server. In one example implementation of the present invention, information to point the client to a remediation server is the name of a remediation server, e.g., rs1.remediation.hp.com, which the client resolves via DNS (Domain Name System) to an IP address, which may in-turn be resolved to a MAC address, e.g., MAC_R1, using the well known Address Resolution Protocol (ARP), or any other appropriate method. According to another example implementation of the present invention, software executes on the client as part of the remediation process, to effectively do the same as described above, and including the step of contacting a well-known remediation master system domain, e.g., master.remediation.hp.com, to obtain the name of a remediation server to use.
According to another embodiment of the present invention, if the client is not executing client remediation software, i.e., the client can only participate in a basic login process, e.g., the client is a basic laptop, immediately after a web-based login process, an instructional web page is sent to the client directing the user to a specific web site, e.g., rs1.remediation.hp.com/remediate_instructions.htm, describing the process for completing a remediation process. If the user fails to follow these instructions, e.g., the user immediately tries to access a different web page such as http://www.hp.com, packets originated by the client are still confined to the remediation VLAN by tunneling as previously described, and the user has no real network access except for remediation purposes. The unauthorized request may arrive at the remediation server, e.g., by the broadcast method previously described, which is programmed to respond by sending the same initial web page giving instructions as to how to get remediated.
Additional security measures may be implemented on the switch serving the remediation VLAN, e.g., switch S3218-3, to prevent loopholes in security, as necessary. For example, if an un-remediated client, e.g., network client C1214-1, attempts to send a packet to another network client, e.g., network client CM 214-M, switch S3 is programmed to prevent immediate re-tunneling of packets through the network from un-remediated clients, even to other un-remediated clients. According to one embodiment of the present invention, virtual source port filters are utilized to prevent any traffic emerging from a remediation tunnel, e.g., packet 274, from being forwarded to any ports to which a remediation functionality, e.g., remediation server R1250, is not connected, e.g., other than port 222-1 in this example.
If client remediation is needed, as shown at 514, a remediation lookup table entry is created by the local network device to which the client is connected, e.g., switch S1218-1 in
If a match is found for the client MAC address, at 520, and the remediation flag for the entry corresponding to the client is set at 522, indicating remediation is needed, the network device strips out VLAN tags from the packet at 526, the packet is encapsulated using the IP address determined from the lookup using the MAC address of the client as key at 528, and the packet is tunnel forwarded to a remote network device associated with a remediation VLAN, at 530, for further remediation processing.
It is to be understood that the above description has been made in an illustrative fashion, and not a restrictive one. Although specific embodiments have been illustrated and described herein, those of ordinary skill in the art will appreciate that other component arrangements and device logic can be substituted for the specific embodiments shown. The claims are intended to cover such adaptations or variations of embodiments of the present invention, except to the extent limited by the prior art.
In the foregoing Detailed Description, various features are grouped together in a single embodiment for the purpose of streamlining the disclosure. This method of disclosure is not to be interpreted as reflecting an intention that any claim requires more features than are expressly recited in the claim. Rather, as the following claims reflect, inventive subject matter lies in less than all features of a single disclosed embodiment. Thus, the following claims are hereby incorporated into the Detailed Description, with each claim standing on its own as a separate embodiment of the invention.