# US 12,008,084 B2 · System and method for autonomous software licensing during bootup process

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 12,008,084 B2
- Document ID: US12008084B2
- Status: Granted
- Kind: B2
- Application number: 17/707,482
- Filed: 2022-03-29
- Published: 2023-08-03
- Granted: 2024-06-11
- Earliest claimed: 2022-02-02
- Assignees: Barracuda Networks, Inc.
- Applicants: Barracuda Networks, Inc.
- Inventors: Hari Potaraju; Dipen Modi; Giovanni Rodriguez
- Web page: https://patentgrep.com/patent/US12008084B2

## CPC

- G06F 21/105: {Arrangements for software license management or administration, e.g. for managing licenses at corporate level}
- G06F 9/4401: Bootstrapping (security arrangements therefor G06F21/57)
- G06F 21/121: {Restricting unauthorised execution of programs}
- G06F 21/1077: {Recurrent authorisation}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A new approach is proposed to support software validation and licensing management. An instance of a software component deployed to a physical computing device is configured to request a copy of license of the software component from a license server out-of-band before the software component can be installed and/or booted up on the physical computing device. Upon receiving a request for the copy of license from the instance of the software component, the license server is configured to grant or deny the request based on the current number of copies of license of the software component available. If the request is granted, the instance of the software component is booted up on the physical computing device. During its operation, the instance of the software component continues to communicate with the license server periodically to indicate whether the copy of license assigned by the server is still in use.

## Claims

### Claim 1

A system, comprising:
a physical computing device;
an instance of a software component deployed to the physical computing device and configured to
transmit a request for a copy of license of the software component to a license server via a license client running in a pre-bootup environment of the instance of the software component at beginning of a bootup process before the instance of the software component is booted up and run on the physical computing device; and
continue to boot up and run on the physical computing device if the copy of license is assigned by the license server;
said license server configured to
populate and manage a plurality of copies of licenses for the software component, wherein the plurality of copies of licenses are maintained in a license database (DB);
check the license DB to determine if there is a copy of license of the virtual appliance available when the request for the copy of license of the virtual appliance is received;
assign the copy of license of the virtual appliance to the instance of the virtual appliance requesting the copy of license if there is a copy of license of the virtual appliance available in the license DB; and
deny the request for a copy of license by the instance of the virtual appliance if it is determined that every copy of license of the virtual appliance is in use.

### Claim 2 (depends on 1)

The system of claim 1, wherein:
the software component is one of a virtual appliance, an operating system (OS), a container, or a type of software that requires the copy of license to be installed and run on the physical computing device.

### Claim 3 (depends on 1)

The system of claim 1, wherein:
the license server is hosted in a public cloud that is publicly accessible over Internet.

### Claim 4 (depends on 1)

The system of claim 1, wherein:
the license server is hosted at a private datacenter where no external network access is provided.

### Claim 5 (depends on 1)

The system of claim 1, further comprising:
said license DB configured to maintain the plurality of copies of licenses of the software component together with their current statuses indicating whether each of the plurality of copies of licenses is available or in-use.

### Claim 6 (depends on 1)

The system of claim 1, wherein:
the instance of the software component is configured to continue to communicate with the license server periodically about current status of the instance of the virtual appliance after the instance of the virtual appliance has booted up on the physical computing device.

### Claim 7 (depends on 6)

The system of claim 6, wherein:
the instance of the software component is configured to inform the license server accordingly when the instance of the virtual appliance is shut down so that the copy of license of the instance of the virtual appliance is taken back by the license server to be put back into the license DB for use by other instances of the virtual appliance.

### Claim 8 (depends on 6)

The system of claim 6, wherein:
the license server is configured to reserve the copy of license assigned to the instance of the virtual appliance as long as one or more heartbeat messages are periodically received by the license server.

### Claim 9 (depends on 6)

The system of claim 6, wherein:
the license server is configured to release the copy of license assigned to the instance of the virtual appliance back to the license DB to be used by another instance of the virtual appliance if no heartbeat message has been received from the instance of the virtual appliance over a pre-specified timeout period.

### Claim 10 (depends on 1)

The system of claim 1, wherein:
the license server is configured to
store the plurality of copies of licenses in a digitally-signed license file;
verify that the license file is authentic before populating the license DB with the plurality of copies of licenses in the digitally-signed license file.

### Claim 11 (depends on 1)

The system of claim 1, wherein:
the instance of the virtual appliance is configured to terminate the bootup process if there is no copy of license of the virtual instance available.

### Claim 12 (depends on 1)

The system of claim 1, wherein:
the instance of the virtual appliance is configured to boot up and run with limited functionalities if there is no copy of license of the virtual instance available.

### Claim 13 (depends on 1)

The system of claim 1, wherein:
the instance of the virtual appliance is configured to perform an out-of-band lookup to determine which path to boot up, wherein the out-of-band lookup identifies one or more alternative bootup processes either pre-defined by a user and automatically determined by the instance of the virtual appliance if there is no copy of license of the virtual instance available.

### Claim 14

A computer-implemented method, comprising:
populating and managing a plurality of copies of licenses for a software component by a license server, wherein the plurality of copies of licenses are maintained in a license database (DB);
transmitting by an instance of the software component deployed to a physical computing device a request for a copy of license of the software component to a license server via a license client running in a pre-bootup environment of the instance of the software component at beginning of a boot up process before the instance of the software component is booted up and run on the physical computing device;
checking the license DB to determine if there is a copy of license of the virtual appliance available when the request for the copy of license of the virtual appliance is received;
assigning the copy of license of the virtual appliance to the instance of the virtual appliance requesting the copy of license if there is a copy of license of the virtual appliance available in the license DB;
denying the request for a copy of license by the instance of the virtual appliance if it is determined that every copy of license of the virtual appliance is in use;
continuing to boot up and run the instance of the software component on the physical computing device if the copy of license is assigned by the license server.

### Claim 15 (depends on 14)

The method of claim 14, further comprising:
hosting the license server in a public cloud that is publicly accessible over Internet.

### Claim 16 (depends on 14)

The method of claim 14, further comprising:
hosting the license server at a private datacenter where no external network access is provided.

### Claim 17 (depends on 14)

The method of claim 14, further comprising:
maintaining the plurality of copies of licenses of the software component in said license DB together with their current statuses indicating whether each of the plurality of copies of licenses is available or in-use.

### Claim 18 (depends on 14)

The method of claim 14, further comprising:
continuing to communicate with the license server periodically about current status of the instance of the virtual appliance after the instance of the virtual appliance has booted up on the physical computing device.

### Claim 19 (depends on 18)

The method of claim 18, further comprising:
informing the license server accordingly when the instance of the virtual appliance is shut down so that the copy of license of the instance of the virtual appliance is taken back by the license server to be put back into the license DB for use by other instances of the virtual appliance.

### Claim 20 (depends on 18)

The method of claim 18, further comprising:
reserving the copy of license assigned to the instance of the virtual appliance as long as one or more heartbeat messages are periodically received by the license server.

### Claim 21 (depends on 18)

The method of claim 18, further comprising:
releasing the copy of license assigned to the instance of the virtual appliance back to the license DB to be used by another instance of the virtual appliance if no heartbeat message has been received from the instance of the virtual appliance over a pre-specified timeout period.

### Claim 22 (depends on 14)

The method of claim 14, further comprising:
storing the plurality of copies of licenses in a digitally-signed license file;
verifying that the license file is authentic before populating the license DB with the plurality of copies of licenses in the digitally-signed license file.

### Claim 23 (depends on 14)

The method of claim 14, further comprising:
terminating the bootup process if there is no copy of license of the virtual instance available.

### Claim 24 (depends on 14)

The method of claim 14, further comprising:
booting up and running the instance of the virtual appliance with limited functionalities if there is no copy of license of the virtual instance available.

### Claim 25 (depends on 14)

The method of claim 14, further comprising:
performing an out-of-band lookup to determine which path to boot up, wherein the out-of-band lookup identifies one or more alternative bootup processes either pre-defined by a user and automatically determined by the instance of the virtual appliance if there is no copy of license of the virtual instance available.
