IP Library Granted Patent US 12,487,842
Granted Patent B2
US 12,487,842 · App. 17/513,784 · Granted Dec 2, 2025

Secure control of packet filter programs by user space processes in virtual machines

Inventors: Michael Tsirkin (Haifa, IL); Jesper Brouer (Frederikssund, DK)
Assignee: Red Hat, Inc.
G06F9/45558G06F9/468G06F9/5077G06F2009/45579G06F2009/45583G06F2009/45595G06F2209/501
View Patent ↗
Loading inventors, assignments & file history…
Monitor This Case
Get email alerts when status or documents change.
Order Certified Copies
Most orders are placed with the USPTO same day — all within 24 business hours.
Order via The Patent Place →
Pre-filled with this patent's details
Quick Facts
Patent No.
US 12,487,842
App. No.
17/513,784
Granted
Dec 2, 2025
Kind
B2
Abstract

An example method may include: receiving, by a hypervisor, a data packet, identifying a memory location associated with a guest virtual machine and accessible to the guest virtual machine and the hypervisor, wherein a program mapping table comprising one or more mapping table entries is stored at the memory location, each mapping table entry specifying a program selection criterion and a packet processing program. The example method may further include identifying, among the one or more mapping table entries in the program mapping table stored at the memory location, a mapping table entry comprising a particular program selection criterion that is satisfied by the data packet, wherein the identified mapping table entry specifies a first packet processing program, and executing the first packet processing program, wherein the data packet is provided to the first packet processing program as input.

Claims (46)

1 . A system comprising:

a memory device comprising a group of memory units; and

a first processing device, operatively coupled to the memory device, to perform operations comprising:

receiving, by a hypervisor, a data packet;

identifying a memory location associated with a guest virtual machine and accessible to the guest virtual machine and the hypervisor, wherein a program mapping table comprising one or more mapping table entries is stored at the memory location, each mapping table entry specifying a program selection criterion and a packet processing program;

identifying, among the one or more mapping table entries in the program mapping table stored at the memory location, a mapping table entry comprising a particular program selection criterion that is satisfied by the data packet at least in part by determining if a value included in the data packet is between first and second threshold values of the particular program selection criterion, wherein the identified mapping table entry specifies a first packet processing program; and

in response to identifying the mapping table entry comprising the particular program selection criterion that is satisfied by the data packet, executing the first packet processing program, wherein the data packet is provided to the first packet processing program as input.

2 . The system of claim 1 , wherein the value included in the data packet comprises one or more of a network address or a connection identifier.

3 . The system of claim 1 , wherein the particular program selection criterion comprises a packet filter condition, and the particular program selection criterion is satisfied if the data packet satisfies the packet filter condition.

4 . The system of claim 1 , wherein identifying the mapping table entry comprises:

searching the mapping table for the mapping table entry comprising the particular program selection criterion that is satisfied by the data packet.

5 . The system of claim 1 , wherein identifying the memory location associated with the guest virtual machine comprises:

allocating the memory location; and

sending a notification comprising an address of the memory location to the guest virtual machine.

6 . The system of claim 1 , wherein identifying the memory location associated with the guest virtual machine comprises:

receiving an address of the memory location from the guest virtual machine.

7 . The system of claim 1 , wherein identifying the mapping table entry occurs subsequent to detecting that the guest virtual machine has invoked a hypercall indicating that the guest virtual machine has stored the one or more mapping table entries at the memory location.

8 . The system of claim 1 , wherein the system further comprises one or more second processing devices, operatively coupled to the memory device, and the operations further comprise:

determining that the identified mapping table entry specifies a processor identifier;

identifying, among the one or more second processing devices, a second processing device that corresponds to the specified processor identifier;

executing a second packet processing program that provides the data packet and the first packet processing program to the second processing device.

9 . The system of claim 8 , wherein the system further comprises one or more second processing devices, operatively coupled to the memory device, and the operations further comprise:

executing a second packet processing program, wherein the second packet processing program identifies the second processing device among the one or more second processing devices and provides the data packet and the first packet processing program to the second processing device.

10 . The system of claim 8 , wherein the second processing device executes the first packet processing program.

11 . The system of claim 8 , wherein the second processing device is specified by the mapping table entry.

12 . The system of claim 8 , wherein the second processing device is specified by a second mapping table entry in a processor mapping table, wherein the second mapping table entry further specifies the particular program selection criterion that is satisfied by the data packet.

13 . The system of claim 8 , wherein the operations further comprise:

identifying a second memory location associated with the guest virtual machine and accessible to the guest virtual machine and the hypervisor,

wherein the second packet processing program identifies the second processing device using one or more processor selection data values stored at the second memory location.

14 . The system of claim 8 , the wherein second packet processing program identifies the second processing device using one or more processor selection data values specified by the mapping table entry.

15 . The system of claim 1 , wherein the first packet processing program performs one or more packet processing operations comprising:

generating a second packet that encapsulates the data packet; and

sending the second packet to a destination address.

16 . The system of claim 1 , wherein the first packet processing program performs one or more packet processing operations comprising:

generating a second packet that includes a de-encapsulated payload of the data packet; and

sending the second packet to a destination address specified by the second packet.

17 . A method comprising:

receiving, by a hypervisor executing on a first processing device, a data packet;

identifying a memory location associated with a guest virtual machine and accessible to the guest virtual machine and the hypervisor, wherein a program mapping table comprising one or more mapping table entries is stored at the memory location, each mapping table entry specifying a program selection criterion and a packet processing program;

identifying, among the one or more mapping table entries in the program mapping table stored at the memory location, a mapping table entry comprising a particular program selection criterion that is satisfied by the data packet at least in part by determining if a value included in the data packet is between first and second threshold values of the particular program selection criterion, wherein the identified mapping table entry specifies a first packet processing program; and

in response to identifying the mapping table entry comprising the particular program selection criterion that is satisfied by the data packet, executing the first packet processing program, wherein the data packet is provided to the first packet processing program as input.

18 . A non-transitory machine-readable storage medium storing instructions which, when executed by a processing device, cause the processing device to:

receive, by a hypervisor executing on a first processing device, a data packet;

identify a memory location associated with a guest virtual machine and accessible to the guest virtual machine and the hypervisor, wherein a program mapping table comprising one or more mapping table entries is stored at the memory location, each mapping table entry specifying a program selection criterion and a packet processing program;

identify, among the one or more mapping table entries in the program mapping table stored at the memory location, a mapping table entry comprising a particular program selection criterion that is satisfied by the data packet at least in part by determining if a value included in the data packet is between first and second threshold values of the particular program selection criterion, wherein the identified mapping table entry specifies a first packet processing program; and

in response to identifying the mapping table entry comprising the particular program selection criterion that is satisfied by the data packet, execute the first packet processing program, wherein the data packet is provided to the first packet processing program as input.

Assignments (2)
CHANGE OF NAME Recorded Mar 3, 2026
From: RED HAT, INC.
To: RED HAT, LLC
Reel/Frame 074913/0759 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Nov 1, 2021
From: TSIRKIN, MICHAEL; BROUER, JESPER
To: RED HAT, INC.
Reel/Frame 057980/0750 →