US11843630B2 - NANON support for antivirus jobs in clustered storage - Google Patents
NANON support for antivirus jobs in clustered storage Download PDFInfo
- Publication number
- US11843630B2 US11843630B2 US17/225,686 US202117225686A US11843630B2 US 11843630 B2 US11843630 B2 US 11843630B2 US 202117225686 A US202117225686 A US 202117225686A US 11843630 B2 US11843630 B2 US 11843630B2
- Authority
- US
- United States
- Prior art keywords
- antivirus
- computing
- node
- job
- nodes
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active, expires
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/108—Network architectures or network communication protocols for network security for controlling access to devices or network resources when the policy decisions are valid for a limited amount of time
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1441—Countermeasures against malicious traffic
- H04L63/145—Countermeasures against malicious traffic the attack involving the propagation of malware through the network, e.g. viruses, trojans or worms
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/08—Network architectures or network communication protocols for network security for authentication of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/10—Network architectures or network communication protocols for network security for controlling access to devices or network resources
- H04L63/104—Grouping of entities
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/14—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic
- H04L63/1408—Network architectures or network communication protocols for network security for detecting or protecting against malicious traffic by monitoring network traffic
- H04L63/1416—Event detection, e.g. attack signature detection
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/566—Grouping or aggregating service requests, e.g. for unified processing
Definitions
- a computing cluster can comprise a plurality of computers (which can be referred to as nodes).
- the nodes of a computing cluster can be configured to provide a unified set of computing resources to a user of a cluster. For example, where the computing cluster provides computing storage resources, data stored within one name space or object space can be distributed across multiple nodes of the cluster.
- An example system can operate as follows.
- a first computing node of computing nodes of a computing cluster can determine a status of an antivirus server.
- the first computing node can send a first indication of the status of the antivirus server to a group management protocol service of the computing cluster.
- the group management protocol service can send a second indication of whether the first computing node is available for antivirus scanning to a job engine of the computing cluster.
- the job engine can distribute an antivirus job among the computing nodes based on whether the first computing node is available for the antivirus scanning.
- An example method can comprise determining, by a first node of nodes of a computing cluster, a status of an antivirus server.
- the method can further comprise sending, by the first node, an indication of the status of the antivirus server to a group management protocol service of the computing cluster.
- the method can further comprise sending, by the group management protocol service, an indication of whether the first node is available for antivirus scanning to a job engine service of the computing cluster.
- the method can further comprise distributing, by the job engine service, an antivirus job among the nodes based on whether the first node is available for the antivirus scanning.
- FIG. 2 illustrates an example system architecture of how computing nodes can be connected to networks that can facilitate NANON support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure
- FIG. 5 illustrates an example process flow for a job engine that can facilitate that can facilitate NANON support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure
- FIG. 8 illustrates an example process flow for an antivirus component that can facilitate that can facilitate NANON support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure
- FIG. 9 illustrates an example process flow for NANON support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure.
- FIG. 11 illustrates another example process flow for NANON support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure
- FIG. 12 illustrates an example block diagram of a computer operable to execute certain embodiments of this disclosure.
- the following approaches can be utilized based on a new job engine function and a new antivirus service utilizing a group messaging protocol.
- a group messaging protocol service can be uniquely identified among services of the computing cluster.
- an enumeration can be performed, and in other examples, a particular group messaging protocol service can be associated with a unique string.
- the group messaging protocol service enumeration for antivirus servers feature can be allocated.
- GMP_SERVICE_ANTIVIRUS can be defined for an antivirus server, which can contain the following information:
- a timer task can run periodically.
- a function, AvscanServersTimerEvent( ) can be executed, which can check whether antivirus servers are online. In some examples, if at least one antivirus server is online, the antivirus component can regard the antivirus server's status as available. Then, the antivirus component can report this status to the GMP using an application programming interface (API) call gmp_service_open(GMP_SERVICE_ANTIVIRUS) in an active situation or an API call close(fd) in an inactive situation.
- API application programming interface
- a heartbeat can be maintained to determine that the antivirus component is operating properly.
- a heartbeat monitor component can implement a heartbeat monitor API that can be invoked to make heartbeat communications with the antivirus component.
- the heartbeat can be included with a group management protocol service API.
- the group management protocol service can additionally provide an API call gmp_service_heartbeat(GMP_SERVICE_ANTIVIRUS) to maintain a heartbeat between an antivirus component and the group management protocol service, and this API call can be called in AvscanServersTimerEvent( ) too.
- a period of this timer task in the antivirus component can be 5 seconds, so in some examples a value of efs.gmp.service.name timeout_msecs should be set 10 seconds so that a heartbeat with a group management protocol service will not timeout.
- a job engine can determine a status of antivirus servers for the respective nodes before the job engine starts an antivirus scanning job. That is, in a computing cluster comprising multiple nodes, each node of the computing cluster can report its availability to perform antivirus tasks to a group messaging protocol service, and this information can be passed to a job engine.
- An example implementation for a job engine determining a status of antivirus servers for the respective nodes can be as follows.
- the job engine can then distribute antivirus scanning job tasks to nodes defined in “permitted_devids.”
- FIG. 1 illustrates an example system architecture 100 that can facilitate not all nodes on network (NANON) support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure.
- NANON nodes on network
- system architecture 100 comprises client computer 102 , communications network 104 a , communications network 104 b , computing cluster 106 , and antivirus server 108 .
- NANON can indicate that some nodes of a computer cluster have not successfully connected to a common antivirus agent server.
- computing cluster 106 comprises job engine with NANON support component 110 , group management protocol component 112 , and computing nodes 114 a - 114 n .
- group management protocol component 112 There can be examples with varying numbers of instances of computing nodes 114 a - 114 n , and in the example of system architecture 100 , n instances are depicted.
- Each of client computer 102 , computing cluster 106 , antivirus server 108 , and computing nodes 114 a - 114 n can be implemented with one or more instances of computer 1202 of FIG. 12 .
- job engine with NANON support component 110 and group management protocol component 112 can be implemented with machine-executable instructions and/or part(s) of computer 1202 of FIG. 12 .
- Communications network 104 a and communications network 104 b each can comprise a computer communications network, such as the Internet, or an isolated private computer communications network.
- Client computer 102 and computing cluster 106 can communicate via communications network 104 a .
- computing cluster 106 can provide computer storage resources that are accessible by client computer 102 , such as to read, write, or modify a file on computing cluster 106 .
- Computing cluster 106 can communicate with antivirus server 108 via communications network 104 b in the course of performing antivirus operations on files stored on computing cluster 106 .
- antivirus server 108 can perform scanning of the files of computing cluster 106 .
- a node e.g., computing node 114 a , and in some examples, an antivirus component that operates on the node
- HTTP hypertext transfer protocol
- Antivirus server 108 can scan the file identified by the file path via a SMB protocol, and can return a result of the scan back to the node (e.g., to the antivirus component on the node).
- the node can also determine a version of an antivirus definition file used by antivirus server 108 .
- the node can relay this version as part of a heartbeat mechanism, so that job engine 110 can use this information in determining whether a file needs to be scanned (e.g., because the file has not been scanned with a current version of the antivirus definition file, which can include new virus signatures compared to an older version).
- a node can download an antivirus definition file from antivirus server 108 , and the node itself can perform antivirus scanning of files.
- computing nodes 114 a - 114 n can be configured to connect to antivirus server 108 .
- a particular computing node is not physically connected to communications network 104 b , is not configured to use communications network 104 b , or is not configured to communicate with antivirus server 108 because the computing node is configured to use communications network 104 b via a first subnet and antivirus server 108 is configured to use communications network 104 b via a second subnet.
- a computing node of computing cluster 106 that is not configured to access antivirus server 108 can be classified as having a NANON status.
- Group management protocol component 112 can communicate with computing nodes 114 a - 114 n to determine which of these computing nodes are configured to access antivirus server 108 .
- a group management protocol generally can comprise a computer protocol that can propagate a change in a state of a node of a computer cluster to other nodes of the computer cluster.
- Group management protocol component 112 can communicate this information regarding which of computing nodes are configured to access antivirus server 108 to job engine with NANON support component 110 .
- Job engine with NANON support component 110 can then distribute an antivirus scanning job among those computing nodes that are configured to access antivirus server 108
- a job can comprise a sequence of phases that produces a well-defined change in the state of a computer cluster.
- a job can be divided into multiple tasks.
- a task can comprise a chunk of work that makes sense to move between nodes. That is, in some examples, a task can define at least a few seconds of work.
- tasks can be split and exchanged between nodes.
- An example of a task can be a range of possible logical Modes (LINs) for a system call that returns a set of actual LINs.
- LINs logical Modes
- An antivirus job can comprise scanning some or all files stored on computing cluster 106 .
- Distributing an antivirus job can comprise instruction a computing node which specific files (or directories that contain files) that computing node is to perform antivirus scanning on.
- computing cluster 106 can implement part(s) of process flow 500 of FIG. 5 , process flow 600 of FIG. 6 , process flow 700 of FIG. 7 , process flow 800 of FIG. 8 , process flow 900 of FIG. 9 , process flow 1000 of FIG. 10 , and/or process flow 1100 of FIG. 11 .
- system architecture 100 involves antivirus scanning
- present techniques can be more generally applied to tasks that are distributing among multiple computers, where some of these multiple computers are not configured to perform the task at a time when it is being determined how to distribute the task among the multiple computers.
- FIG. 2 illustrates an example system architecture 200 of how computing nodes can be connected to networks that can facilitate not all nodes on network (NANON) support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure.
- system architecture 200 comprises client computer 202 , network 204 a , network 204 b , network 204 c , antivirus server 208 a , antivirus server 208 b , node 214 a , node 214 b , node 214 c , node 214 d , and subnet 216 .
- Client computer 202 can be similar to client computer 102 of FIG. 1 .
- Network 204 a , network 204 b , and network 204 c can each comprise a communications network that is similar to communications network 104 a or communications network 104 b of FIG. 1 .
- Network 204 a can comprise a front-end communications network that connects client computer 202 to node 214 a , node 214 b , node 214 c , and node 214 d .
- Network 204 b can comprise an intranet (such as within a computing cluster) communications network that connects node 214 a , node 214 b , node 214 c , and node 214 d with each other.
- Network 204 c can comprise a back-end communications network that connects antivirus server 208 a and antivirus server 208 b with some of node 214 a , node 214 b , node 214 c , and node 214 d . As depicted, node 214 a and node 214 b are connected to network 204 c and configured to communicate with antivirus server 208 a and antivirus server 208 b.
- Node 214 c is connected to network 204 c using subnet 216 , but is not configured to communicate with antivirus server 208 a and antivirus server 208 b because the antivirus servers are configured to use a different subnet.
- a subnet can generally comprise a logical subdivision of a computer network, such as via Internet Protocol (IP) addresses.
- IP Internet Protocol
- two computers can be connected to the same communications network, but be unable to communicate with each other because they are configured to use different subnets on the communications network.
- antivirus component 302 determines that it has experienced a status change (e.g., antivirus component 302 has changed from being unable to perform antivirus activities to being able to perform antivirus activities, or vice versa)
- antivirus component 302 can send a message to group management protocol component 312 that indicates this status change.
- Group management protocol component 312 can initiate and exchange heartbeat messages with antivirus component 302 . These heartbeat messages can be used by group management protocol component 312 to determine that antivirus component 302 is still operating. In some examples, antivirus component 302 exchanges messages with antivirus server 308 to determine that antivirus server 308 remains accessible according to a first cadence (e.g., every 5 seconds). In such examples, group management protocol component 312 can exchange heartbeat messages with antivirus component 302 according to a slower cadence (e.g., every 10 seconds).
- a first cadence e.g., every 5 seconds
- group management protocol component 312 can exchange heartbeat messages with antivirus component 302 according to a slower cadence (e.g., every 10 seconds).
- Group management protocol component 312 can maintain information on which nodes of a computing cluster are available to perform antivirus scanning tasks.
- Job engine 310 can query group management protocol component 312 for this information about which nodes are available to perform antivirus scanning tasks, and group management protocol component 312 can respond by sending job engine 310 an identification of those nodes that are available to perform antivirus scanning tasks.
- the identity of these nodes can change over time, e.g., as different nodes are or are not able to communicate with an antivirus server, such as antivirus server 308 .
- job engine 310 can determine how to divide an antivirus scanning job among the nodes available to perform antivirus scanning tasks. This dividing of an antivirus scanning job can comprise assigning particular nodes to scan particular files. Once determined, job engine 310 can send an indication of which files to scan to one or more antivirus components (such as antivirus component 302 ) for each respective node.
- This dividing of an antivirus scanning job can comprise assigning particular nodes to scan particular files.
- job engine 310 can send an indication of which files to scan to one or more antivirus components (such as antivirus component 302 ) for each respective node.
- job engine 410 can be similar to job engine 110 of FIG. 1
- antivirus component 424 can be similar to antivirus component 302 of FIG. 3
- AV server 408 can be similar to antivirus server 108 of FIG. 1
- AV vendor server 420 can be implemented with one or more instances of computer 1202 of FIG. 12 .
- Job worker threads 402 a - 402 n , coordinator 404 , AV scan configuration 406 , scheduler 412 , AV server interface 414 , AV component 416 , and AV vendor component each can be implemented with machine-executable instructions and/or part(s) of computer 1202 of FIG. 12 .
- Job worker threads 402 a - 402 n can each comprise an instance of a process associated with a separate antivirus scanning task.
- Coordinator 404 can receive information from scheduler 412 about updated antivirus signature files, and use an updated file as a basis to start a new antivirus scanning task.
- Scheduler 412 can receive this information about updated antivirus signature files from AV server interface 414 .
- Scheduler 412 can also operate according to configuration parameters defined in AV scan configuration 406 (such as a regular schedule on which to perform antivirus scanning where there is no updated antivirus signature file).
- AV server interface 414 can communicate with AV component 416 of AV server 408 regarding updated antivirus signature files, and can download updated antivirus signature files.
- AV component 416 can interface with AV vendor component 418 regarding antivirus signature files, and AV vendor component 418 can download updated antivirus signature files from AV vendor server 420 .
- FIG. 5 illustrates an example process flow 500 for a job engine that can facilitate that can facilitate NANON support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure.
- process flow 500 can be implemented by job engine 110 of FIG. 1 , or computing environment 1200 of FIG. 12 .
- Process flow 500 begins with 502 , and moves to operation 504 .
- Operation 504 depicts requesting available nodes. This can comprise job engine 110 of FIG. 1 sending a request to group management protocol component 112 to identify which of computing nodes 114 a - 114 n are available to perform antivirus processing tasks. After operation 504 , process flow 500 moves to operation 506 .
- Operation 506 depicts receiving an identification of available nodes. This can comprise a communication received from group management protocol component 112 received by job engine 110 in response to the request of operation 504 . After operation 506 , process flow 500 moves to operation 508 .
- FIG. 6 illustrates an example process flow 600 for a group management protocol component that can facilitate that can facilitate NANON support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure.
- process flow 600 can be implemented by group management protocol component 112 of FIG. 1 , group management protocol component 312 of FIG. 3 , or computing environment 1200 of FIG. 12 .
- process flow 600 is example operating procedures, and that there can be embodiments that implement more or fewer operating procedures than are depicted, or that implement the depicted operating procedures in a different order than as depicted.
- process flow 600 can be implemented in conjunction with one or more embodiments of one or more of process flow 500 of FIG. 5 , process flow 700 of FIG. 7 , process flow 800 of FIG. 8 , process flow 900 of FIG. 9 , process flow 1000 of FIG. 10 , and/or process flow 1100 of FIG. 11 .
- antivirus component 302 of FIG. 3 can determine that a status of its ability (and the ability of a node upon which it executes) has changed—such as from unavailable to available.
- a reason that a status can change can be that antivirus component 302 is now available to communicate with antivirus server 308 after previously being unable to do so (indicating a status change from unavailable to available).
- antivirus component 302 can send an indication of this status change to group management protocol component 312 .
- Group management protocol component 312 can maintain an association between respective nodes that have registered with group management protocol component 312 , and respective statuses of these nodes. Group management protocol component 312 can store this association in a computer memory. Upon receiving this communication, group management protocol component 312 can update the status for the corresponding status.
- process flow 600 moves to 614 , where process flow 600 ends.
- iterations of process flow 600 can be implemented to process communications as they are received.
- group management protocol component 312 can remove an indication of the node from a list of nodes for which group management protocol component 312 maintains statuses of the respective nodes to perform jobs.
- Operation 612 is reached from operation 604 where the received communication in operation 604 indicates open. Operation 612 depicts registering a node. Similar to operation 610 (involving a close, and un-registering a node), in operation 612 , when a node sends a communication to be registered by group management protocol component 312 , group management protocol component 312 can store an association of the node and the node's status to perform jobs in a computer memory.
- process flow 600 is example operating procedures, and that there can be embodiments that implement more or fewer operating procedures than are depicted, or that implement the depicted operating procedures in a different order than as depicted.
- process flow 600 can be implemented in conjunction with one or more embodiments of one or more of process flow 500 of FIG. 5 , process flow 600 of FIG. 6 , process flow 800 of FIG. 8 , process flow 900 of FIG. 9 , process flow 1000 of FIG. 10 , and/or process flow 1100 of FIG. 11 .
- Operation 706 depicts determining whether a heartbeat was received.
- this can comprise antivirus component 302 of FIG. 3 determining whether antivirus server 308 has responded to the heartbeat of operation 704 within a predetermined amount of time. Where antivirus server 308 responds within a predetermined amount of time, it can be determined that a heartbeat was received in operation 706 . Instead, where antivirus server 308 does not within a predetermined amount of time, it can be determined that a heartbeat was not received in operation 706 .
- operation 706 moves to operation 704 .
- process flow 700 moves to operation 708 .
- Operation 708 is reached from operation 706 where it is determined in operation 706 that a heartbeat was not received. Operation 708 depicts changing a node's status to unavailable. This can be in a case where group management protocol component 312 had a status for the node as available. Where group management protocol component 312 had a status for the node as unavailable, the status of the node can remain unchanged.
- the node can be a node of a computer cluster (e.g., computing cluster 106 of FIG. 1 ) on which antivirus component 302 executes.
- Group management protocol component 312 can maintain a list of nodes that have registered with group management protocol component 312 , as well as an indication of whether each node is available for performing antivirus scanning tasks.
- antivirus component 302 can send a corresponding indication to group management protocol component 312 , which can use this information as an indication that the corresponding node is unavailable for performing antivirus scanning tasks (or that the node is unregistered, similar to operation 610 of FIG. 6 ). If antivirus server 308 later resumes responding to heartbeat messages, antivirus component 302 can send a corresponding indication to group management protocol component 312 , which can change the status of the corresponding node to available (or register, similar to operation 612 of FIG. 6 ).
- antivirus component 302 can utilize a group management protocol provided by group management protocol component 312 to inform a job engine (e.g., job engine 310 of FIG. 3 ) whether the node upon which antivirus component 302 can communicate with an antivirus server (e.g., antivirus server 308 ).
- group management protocol component 312 to inform a job engine (e.g., job engine 310 of FIG. 3 ) whether the node upon which antivirus component 302 can communicate with an antivirus server (e.g., antivirus server 308 ).
- Iterations of operations 704 - 708 can be performed to periodically exchange heartbeat messages between group management protocol component 312 and antivirus component 302 to determine whether antivirus component 302 is operating properly.
- FIG. 8 illustrates an example process flow 800 for an antivirus component that can facilitate that can facilitate NANON support for antivirus jobs in clustered storage, in accordance with certain embodiments of this disclosure.
- one or more embodiments of process flow 700 can be implemented by antivirus component 302 of FIG. 3 , computing cluster 106 of FIG. 1 , or computing environment 1200 of FIG. 12 .
- process flow 600 is example operating procedures, and that there can be embodiments that implement more or fewer operating procedures than are depicted, or that implement the depicted operating procedures in a different order than as depicted.
- process flow 600 can be implemented in conjunction with one or more embodiments of one or more of process flow 500 of FIG. 5 , process flow 600 of FIG. 6 , process flow 700 of FIG. 7 , process flow 900 of FIG. 9 , process flow 1000 of FIG. 10 , and/or process flow 1100 of FIG. 11 .
- Process flow 800 begins with 802 , and moves to operation 804 .
- Operation 804 depicts determining a status.
- This status can be part of a communication received by antivirus component 302 of FIG. 3 , and from job engine 310 , group management protocol component 312 , or antivirus server 308 .
- Antivirus component 302 can process this communication.
- this status can be a status determined by antivirus component 302 (such as determining that antivirus server 308 is not reachable because antivirus component 302 has not received a communication from antivirus server 308 within a predetermined amount of time). Based on this status, process flow 800 can move to one of operations 806 - 812 .
- Operation 806 is reached from operation 804 where the status is determined to be AV server status change. Operation 806 depicts updating a group management protocol component.
- the AV server status can comprise an ability of antivirus component 302 indicate to antivirus server 308 a respective path to one or more files for antivirus server 308 to scan for viruses.
- Antivirus component 302 can periodically (e.g., every 5 seconds) send a heartbeat message to antivirus server 308 .
- antivirus component 302 can update group management protocol component 312 with an indication that antivirus component 302 is now available to perform antivirus job tasks.
- antivirus component 302 can otherwise determine that a status of antivirus component 302 to perform antivirus job tasks has changed, and can send an indication of this to group management protocol component 312 (which can receive and process this indication similar to operation 608 of FIG. 6 ).
- Operation 808 is reached from operation 804 where the status is determined to job received.
- Operation 806 depicts performing a job. This can be an antivirus scanning job to be performed, and the message received can be similar to a message sent according to operation 510 of FIG. 5 , where a job engine can distribute a job among available nodes.
- process flow 800 moves to 814 , where process flow 800 ends.
- iterations of process flow 800 can be implemented to process statuses as they occur.
- process flow 800 moves to 814 , where process flow 800 ends.
- iterations of process flow 800 can be implemented to process statuses as they occur.
- Process flow 900 begins with 902 , and moves to operation 904 .
- Operation 904 depicts determining, by a first computing node of computing nodes of a computing cluster, a status of an antivirus server. In some examples, this can comprise antivirus component 302 of FIG. 3 determining a status of antivirus server 308 .
- operation 904 comprises continuing to determine, by the first computing node, the status of the antivirus server upon expiration of a timer. That is, this determination can be made periodically, such as every 5 seconds. After operation 904 , process flow 900 moves to operation 906 .
- Operation 908 depicts sending, by the group management protocol service, a second indication of whether the first computing node is available for antivirus scanning to a job engine of the computing cluster.
- This can comprise group management protocol component 312 of FIG. 3 sending this second indication to job engine 310 .
- operation 908 is performed in response to the job engine querying the group management protocol service for the second indication of whether the first computing node is available for the antivirus scanning.
- process flow 1000 moves to operation 1006 .
- Operation 1006 depicts sending, by the first node, an indication of the status of the antivirus server to a group management protocol service of the computing cluster.
- operation 1006 can be implemented in a similar manner as operation 906 of FIG. 9 .
- Operation 1008 depicts sending, by the group management protocol service, an indication of whether the first node is available for antivirus scanning to a job engine service of the computing cluster.
- operation 1008 can be implemented in a similar manner as operation 908 of FIG. 9 .
- the computing nodes of the computing cluster are interconnected via a first communications network, and wherein the computing cluster is interconnected with the device that is external to the computing cluster via a second communications network. That is, the nodes of the cluster can be connected via a front-end network, and an antivirus server can be accessed via a separate back-end network (that some nodes might not be connected to).
- operation 1104 comprises determining that the first computing node cannot connect to the device that is external to the computing cluster when the first computing node is not connected to the second communications network. That is, an example of why a node cannot connect to an antivirus server can be that the node is not connected to the back-end network.
- process flow 1100 moves to operation 1108 .
- the device that is external to the computing cluster comprises an antivirus server, and the processing task comprises scanning a specified group of files.
- the device that is external to the computing cluster comprises an authentication server. That is, types of jobs to be performed can include antivirus scanning, and authentication jobs that utilize an authentication server.
- process flow 1100 moves to 1112 , where process flow 1100 ends.
- the illustrated embodiments of the embodiments herein can be also practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network.
- program modules can be located in both local and remote memory storage devices.
- the example environment 1200 for implementing various embodiments described herein includes a computer 1202 , the computer 1202 including a processing unit 1204 , a system memory 1206 and a system bus 1208 .
- the system bus 1208 couples system components including, but not limited to, the system memory 1206 to the processing unit 1204 .
- the processing unit 1204 can be any of various commercially available processors. Dual microprocessors and other multi-processor architectures can also be employed as the processing unit 1204 .
- a monitor 1246 or other type of display device can be also connected to the system bus 1208 via an interface, such as a video adapter 1248 .
- a computer typically includes other peripheral output devices (not shown), such as speakers, printers, etc.
- the computer 1202 can be connected to the local network 1254 through a wired and/or wireless communication network interface or adapter 1258 .
- the adapter 1258 can facilitate wired or wireless communication to the LAN 1254 , which can also include a wireless access point (AP) disposed thereon for communicating with the adapter 1258 in a wireless mode.
- AP wireless access point
- the computer 1202 can include a modem 1260 or can be connected to a communications server on the WAN 1256 via other means for establishing communications over the WAN 1256 , such as by way of the Internet.
- the modem 1260 which can be internal or external and a wired or wireless device, can be connected to the system bus 1208 via the input device interface 1244 .
- program modules depicted relative to the computer 1202 or portions thereof can be stored in the remote memory/storage device 1252 . It will be appreciated that the network connections shown are examples and other means of establishing a communications link between the computers can be used.
- the computer 1202 can access cloud storage systems or other network-based storage systems in addition to, or in place of, external storage devices 1216 as described above.
- a connection between the computer 1202 and a cloud storage system can be established over a LAN 1254 or WAN 1256 e.g., by the adapter 1258 or modem 1260 , respectively.
- the external storage interface 1226 can, with the aid of the adapter 1258 and/or modem 1260 , manage storage provided by the cloud storage system as it would other types of external storage.
- the external storage interface 1226 can be configured to provide access to cloud storage sources as if those sources were physically connected to the computer 1202 .
- processor can refer to substantially any computing processing unit or device comprising, but not limited to comprising, single-core processors; single-processors with software multithread execution capability; multi-core processors; multi-core processors with software multithread execution capability; multi-core processors with hardware multithread technology; parallel platforms; and parallel platforms with distributed shared memory in a single machine or multiple machines.
- a processor can refer to an integrated circuit, a state machine, an application specific integrated circuit (ASIC), a digital signal processor (DSP), a programmable gate array (PGA) including a field programmable gate array (FPGA), a programmable logic controller (PLC), a complex programmable logic device (CPLD), a discrete gate or transistor logic, discrete hardware components, or any combination thereof designed to perform the functions described herein.
- a processor may also be implemented as a combination of computing processing units.
- One or more processors can be utilized in supporting a virtualized computing environment.
- the virtualized computing environment may support one or more virtual machines representing computers, servers, or other computing devices.
- components such as processors and storage devices may be virtualized or logically represented. For instance, when a processor executes instructions to perform “operations”, this could include the processor performing the operations directly and/or facilitating, directing, or cooperating with another device or component to perform the operations.
- nonvolatile memory can include ROM, programmable ROM (PROM), EPROM, EEPROM, or flash memory.
- Volatile memory can include RAM, which acts as external cache memory.
- RAM can be available in many forms such as synchronous RAM (SRAM), dynamic RAM (DRAM), synchronous DRAM (SDRAM), double data rate SDRAM (DDR SDRAM), enhanced SDRAM (ESDRAM), Synchlink DRAM (SLDRAM), and direct Rambus RAM (DRRAM).
- SRAM synchronous RAM
- DRAM dynamic RAM
- SDRAM synchronous DRAM
- DDR SDRAM double data rate SDRAM
- ESDRAM enhanced SDRAM
- SLDRAM Synchlink DRAM
- DRRAM direct Rambus RAM
- the disclosed memory components of systems or methods herein are intended to comprise, without being limited to comprising, these and any other suitable types of memory.
- the illustrated embodiments of the disclosure can be practiced in distributed computing environments where certain tasks are performed by remote processing devices that are linked through a communications network.
- program modules can be located in both local and remote memory storage devices.
- One or more components may reside within a process and/or thread of execution and a component may be localized on one computer and/or distributed between two or more computers.
- an interface can include input/output (I/O) components as well as associated processor, application, and/or API components.
- the various embodiments can be implemented as a method, apparatus, or article of manufacture using standard programming and/or engineering techniques to produce software, firmware, hardware, or any combination thereof to control a computer to implement one or more embodiments of the disclosed subject matter.
- An article of manufacture can encompass a computer program accessible from any computer-readable device or computer-readable storage/communications media.
- computer readable storage media can include but are not limited to magnetic storage devices (e.g., hard disk, floppy disk, magnetic strips . . . ), optical discs (e.g., CD, DVD . . . ), smart cards, and flash memory devices (e.g., card, stick, key drive . . . ).
- magnetic storage devices e.g., hard disk, floppy disk, magnetic strips . . .
- optical discs e.g., CD, DVD . . .
- smart cards e.g., card, stick, key drive . . .
- flash memory devices e.g., card
- the word “example” or “exemplary” is used herein to mean serving as an example, instance, or illustration. Any embodiment or design described herein as “exemplary” is not necessarily to be construed as preferred or advantageous over other embodiments or designs. Rather, use of the word exemplary is intended to present concepts in a concrete fashion.
- the term “or” is intended to mean an inclusive “or” rather than an exclusive “or.” That is, unless specified otherwise, or clear from context, “X employs A or B” is intended to mean any of the natural inclusive permutations. That is, if X employs A; X employs B; or X employs both A and B, then “X employs A or B” is satisfied under any of the foregoing instances.
- the articles “a” and “an” as used in this application and the appended claims should generally be construed to mean “one or more” unless specified otherwise or clear from context to be directed to a singular form.
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Health & Medical Sciences (AREA)
- General Health & Medical Sciences (AREA)
- Virology (AREA)
- Computer And Data Communications (AREA)
Abstract
Description
| enum gmp_service_id { | ||
| GMP_SERVICE_TEST = 0, | ||
| GMP_SERVICE_SMB = 1, | ||
| GMP_SERVICE_NFS = 2, | ||
| GMP_SERVICE_WITNESS = 3, | ||
| GMP_SERVICE_HDFS = 4, | ||
| GMP_SERVICE_SWIFT = 5, | ||
| GMP_SERVICE_ALL_PROTOCOLS = 6, | ||
| GMP_SERVICE_ISI_CBIND_D = 7, | ||
| GMP_SERVICE_LSASS = 8, | ||
| GMP_SERVICE_DRAIN = 9, | ||
| GMP_SERVICE_ANTIVIRUS = 13, | ||
| GMP_SERVICE_MAX = 14, | ||
| GMP_SERVICE_NONE = −1 | ||
| }; | ||
| /** open a service file descriptor */ | ||
| int gmp_service_open(enum gmp_service_id service); | ||
| /** | ||
| * Send a heartbeat to indicate the service is still alive. The first | ||
| * heartbeat initiates monitoring. If the process fails to send periodic | ||
| * heartbeats from then on, it will be killed. The heartbeat interval is | ||
| * determined by a sysctl efs.gmp.service.name.timeout_msecs. | ||
| */ | ||
| int gmp_service_heartbeat(enum gmp_service_id service); | ||
| /** |
| * Select which nodes (by device id) the job engine should use |
| * in processing this job. |
| * @param[in] candidate_devids Possible nodes the job can run on |
| * @param[out] permitted_devids Nodes selected from candidates to run |
| job on |
| * @param[out] ie_out error information |
| */ |
| void (*nodes_can_run_job)(const struct devid_set *candidate_devids, |
| struct devid_set *permitted_devids, struct isi_error **ie_out) |
| /** |
| * Load gi with group info. Does not use global storage. |
| * @param gi Will be filled in with parsed output from efs.gmp.group. |
| * @param error_out Will be set on any errors |
| */ |
| void gmp_load_group_info(struct gmp_group_info *gi, struct isi_error |
| **error_out); |
-
- 1. A user can create one or more antivirus jobs, using an ‘aysigupdate’ tag instead of a schedule string.
- 2. Antivirus component 424 can read in and process a configuration for the jobs. Multiple AVScan jobs can be configured, and in some examples, each job can have its own settings.
- 3.
AV server interface 414 can download and install a new antivirus signature file. - 4. Antivirus component 424 can determine that a new antivirus signature file has been downloaded, and in response, antivirus component 424 can update an internal timestamp.
- 5.
AV server interface 414 can periodically send out heartbeat requests. A heartbeat response can have a timestamp of the antivirus signature file. - 6.
AV server interface 414 can check the timestamp sent in the heartbeat response against the value stored by antivirus component 424. If the heartbeat response timestamp is greater than value stored by antivirus component 424,AV server interface 414 can store the timestamp with antivirus component 424 and signal to start one or more antivirus scan jobs. - 7. When it is determined that a new antivirus signature file has been installed, antivirus component 424 can iterate through a list of jobs, and select those jobs that have an ‘aysigupdate’ tag.
- 8. In some examples, if an aysigupdate job is not already running (such as where the aysigupdate agent was started by another node), then an aysigupdate job can be started by contacting
job engine 410.
Claims (20)
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/225,686 US11843630B2 (en) | 2021-04-08 | 2021-04-08 | NANON support for antivirus jobs in clustered storage |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US17/225,686 US11843630B2 (en) | 2021-04-08 | 2021-04-08 | NANON support for antivirus jobs in clustered storage |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| US20220329607A1 US20220329607A1 (en) | 2022-10-13 |
| US11843630B2 true US11843630B2 (en) | 2023-12-12 |
Family
ID=83511075
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| US17/225,686 Active 2041-10-01 US11843630B2 (en) | 2021-04-08 | 2021-04-08 | NANON support for antivirus jobs in clustered storage |
Country Status (1)
| Country | Link |
|---|---|
| US (1) | US11843630B2 (en) |
Families Citing this family (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20230015697A1 (en) * | 2021-07-13 | 2023-01-19 | Citrix Systems, Inc. | Application programming interface (api) authorization |
| CN115952500B (en) * | 2022-12-27 | 2025-09-05 | 北京安天网络安全技术有限公司 | Computer virus detection method, device, electronic device and storage medium |
Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050273853A1 (en) * | 2004-05-24 | 2005-12-08 | Toshiba America Research, Inc. | Quarantine networking |
| US20070168547A1 (en) * | 2006-01-13 | 2007-07-19 | Fortinet, Inc. | Computerized system and method for handling network traffic |
| US20080259917A1 (en) * | 2007-04-23 | 2008-10-23 | Hua Binh K | System and Method for Improved Ethernet Load Balancing |
| US8370943B1 (en) * | 2009-10-28 | 2013-02-05 | Netapp, Inc. | Load balancing of scan requests to all antivirus servers in a cluster |
| US20130179972A1 (en) * | 2012-01-10 | 2013-07-11 | International Business Machines Corporation | Storage device with internalized anti-virus protection |
| US20170339180A1 (en) * | 2016-05-19 | 2017-11-23 | Infinite Group, Inc. | Network assessment systems and methods thereof |
| US20180158019A1 (en) * | 2016-12-07 | 2018-06-07 | Blackberry Limited | Sending reports of asset transport status |
-
2021
- 2021-04-08 US US17/225,686 patent/US11843630B2/en active Active
Patent Citations (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20050273853A1 (en) * | 2004-05-24 | 2005-12-08 | Toshiba America Research, Inc. | Quarantine networking |
| US20070168547A1 (en) * | 2006-01-13 | 2007-07-19 | Fortinet, Inc. | Computerized system and method for handling network traffic |
| US20080259917A1 (en) * | 2007-04-23 | 2008-10-23 | Hua Binh K | System and Method for Improved Ethernet Load Balancing |
| US8370943B1 (en) * | 2009-10-28 | 2013-02-05 | Netapp, Inc. | Load balancing of scan requests to all antivirus servers in a cluster |
| US20130179972A1 (en) * | 2012-01-10 | 2013-07-11 | International Business Machines Corporation | Storage device with internalized anti-virus protection |
| US20170339180A1 (en) * | 2016-05-19 | 2017-11-23 | Infinite Group, Inc. | Network assessment systems and methods thereof |
| US20180158019A1 (en) * | 2016-12-07 | 2018-06-07 | Blackberry Limited | Sending reports of asset transport status |
Also Published As
| Publication number | Publication date |
|---|---|
| US20220329607A1 (en) | 2022-10-13 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| US11748090B2 (en) | Cloud services release orchestration | |
| US12267253B2 (en) | Data plane techniques for substrate managed containers | |
| US12073258B2 (en) | Configuration map based sharding for containers in a machine learning serving infrastructure | |
| US9740472B1 (en) | Mechanism for performing rolling upgrades in a networked virtualization environment | |
| US20200241863A1 (en) | Release orchestration for cloud services | |
| US11349937B2 (en) | Passive management of network connections | |
| US12468797B2 (en) | Trusted cloud device lifecycle management | |
| US11909816B2 (en) | Distributed network address discovery in non-uniform networks | |
| US11843630B2 (en) | NANON support for antivirus jobs in clustered storage | |
| US11283861B2 (en) | Connection management during non-disruptive upgrade of nodes | |
| US12541386B2 (en) | Distributed data center | |
| US11349930B2 (en) | Identifying and deleting idle remote sessions in a distributed file system | |
| US12111932B2 (en) | Secure boot attestation in a cloud platform | |
| US12236265B2 (en) | Error avoidance load balancing across distributed clustered containerized environments | |
| US11347494B2 (en) | Installing patches during upgrades | |
| US20250021382A1 (en) | Converting Functions to Microservices | |
| US11765127B1 (en) | Pluggable network address management stack | |
| US11308028B2 (en) | Predicting and deleting idle remote sessions in a distributed file system | |
| US11847611B2 (en) | Orchestrating and automating product deployment flow and lifecycle management | |
| US11714551B2 (en) | Credential manager with account selection and resource load-balancing | |
| US11972245B2 (en) | Proactive prevention of data unavailability and data loss | |
| US12425296B2 (en) | Pro-active telecommunications infrastructure deployment failure detection | |
| US12563038B2 (en) | Transparent, on-demand route determination and delegated authorization in a large-scale, decentralized service mesh | |
| US12386957B2 (en) | Prioritized virus scanning of files based on file size | |
| US12561078B1 (en) | Flexible volume provisioning |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| AS | Assignment |
Owner name: EMC IP HOLDING COMPANY LLC, MASSACHUSETTS Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:STOKES, TERRY;HONG, TENG;RICHARDS, ANTONY;SIGNING DATES FROM 20210402 TO 20210407;REEL/FRAME:055868/0118 |
|
| FEPP | Fee payment procedure |
Free format text: ENTITY STATUS SET TO UNDISCOUNTED (ORIGINAL EVENT CODE: BIG.); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY |
|
| AS | Assignment |
Owner name: CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH, NORTH CAROLINA Free format text: CORRECTIVE ASSIGNMENT TO CORRECT THE MISSING PATENTS THAT WERE ON THE ORIGINAL SCHEDULED SUBMITTED BUT NOT ENTERED PREVIOUSLY RECORDED AT REEL: 056250 FRAME: 0541. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT;ASSIGNORS:DELL PRODUCTS L.P.;EMC IP HOLDING COMPANY LLC;REEL/FRAME:056311/0781 Effective date: 20210514 |
|
| AS | Assignment |
Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT, TEXAS Free format text: SECURITY INTEREST;ASSIGNORS:DELL PRODUCTS L.P.;EMC IP HOLDING COMPANY LLC;REEL/FRAME:056295/0124 Effective date: 20210513 Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT, TEXAS Free format text: SECURITY INTEREST;ASSIGNORS:DELL PRODUCTS L.P.;EMC IP HOLDING COMPANY LLC;REEL/FRAME:056295/0001 Effective date: 20210513 Owner name: THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT, TEXAS Free format text: SECURITY INTEREST;ASSIGNORS:DELL PRODUCTS L.P.;EMC IP HOLDING COMPANY LLC;REEL/FRAME:056295/0280 Effective date: 20210513 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: DOCKETED NEW CASE - READY FOR EXAMINATION |
|
| AS | Assignment |
Owner name: EMC IP HOLDING COMPANY LLC, TEXAS Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058297/0332 Effective date: 20211101 Owner name: DELL PRODUCTS L.P., TEXAS Free format text: RELEASE BY SECURED PARTY;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058297/0332 Effective date: 20211101 Owner name: DELL PRODUCTS L.P., TEXAS Free format text: RELEASE OF SECURITY INTEREST;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058297/0332 Effective date: 20211101 Owner name: EMC IP HOLDING COMPANY LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST;ASSIGNOR:CREDIT SUISSE AG, CAYMAN ISLANDS BRANCH;REEL/FRAME:058297/0332 Effective date: 20211101 |
|
| AS | Assignment |
Owner name: EMC IP HOLDING COMPANY LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:062021/0844 Effective date: 20220329 Owner name: DELL PRODUCTS L.P., TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0001);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:062021/0844 Effective date: 20220329 Owner name: EMC IP HOLDING COMPANY LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0124);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:062022/0012 Effective date: 20220329 Owner name: DELL PRODUCTS L.P., TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0124);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:062022/0012 Effective date: 20220329 Owner name: EMC IP HOLDING COMPANY LLC, TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0280);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:062022/0255 Effective date: 20220329 Owner name: DELL PRODUCTS L.P., TEXAS Free format text: RELEASE OF SECURITY INTEREST IN PATENTS PREVIOUSLY RECORDED AT REEL/FRAME (056295/0280);ASSIGNOR:THE BANK OF NEW YORK MELLON TRUST COMPANY, N.A., AS NOTES COLLATERAL AGENT;REEL/FRAME:062022/0255 Effective date: 20220329 |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NON FINAL ACTION MAILED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: RESPONSE TO NON-FINAL OFFICE ACTION ENTERED AND FORWARDED TO EXAMINER |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: NOTICE OF ALLOWANCE MAILED -- APPLICATION RECEIVED IN OFFICE OF PUBLICATIONS |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT RECEIVED |
|
| STPP | Information on status: patent application and granting procedure in general |
Free format text: PUBLICATIONS -- ISSUE FEE PAYMENT VERIFIED |
|
| STCF | Information on status: patent grant |
Free format text: PATENTED CASE |