IP Library Granted Patent US 12,301,694
Granted Patent B2
US 12,301,694 · App. 18/135,103 · Granted May 13, 2025

Packet processing

Inventors: Matthew Ian Ronald Williams (London, GB); Richard John Whitehouse (London, GB); Christopher Neil Swindle (Biggieswade, GB); Colin Reynolds (Edinburgh, GB)
Assignee: MetaSwitch Networks Ltd.
H04L69/22H04L2212/00
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,301,694
App. No.
18/135,103
Granted
May 13, 2025
Kind
B2
Abstract

In operation, packets traverse the packet processing data structure, and the network processing represented by each object in the data structure is applied to each packet. From time to time, the packet processing data structure may need to be updated. Embodiments of the present disclosure provide for lock-free updating of a packet processing data structure by means of epoch-based garbage collection. In embodiments, a particular past packet processing epoch is considered to be no longer referenced by any cores when the sequence numbers recorded in each said memory location are different to the sequence number of that particular past packet processing epoch. The deletion thread checks both whether a past epoch is being referenced by any packets and whether it is being reference by any cores. Thus memory is safely freed without having any impact on any packet processing which may be occurring in parallel to the deletion thread.

Claims (46)

1. A method of processing packets by a packet processing system comprising a processor and memory, the method comprising:

receiving a plurality of packets associated with a current packet processing epoch and a current packet processing data structure;

determining that an object of the packet processing data structure is redundant as a result of an update to the current packet processing data structure;

generating a new packet processing epoch corresponding to the updated packet processing data structure;

in response to determining, based on the current packet processing epoch, that there are no more packets to be processed using the current packet processing data structure, deleting the redundant object from the updated packet processing data structure; and

processing a subsequent plurality of packets according to the updated packet processing data structure and the new packet processing epoch.

2. The method of claim 1 , wherein the current packet processing epoch comprises a counter, further comprising:

setting the counter of the current packet processing epoch to a number of packets contained in the plurality of packets; and

in response to processing each packet of the plurality of packets, decrementing the counter to track the number of packets that have been processed.

3. The method of claim 2 , wherein determining that the counter indicates that there are no more packets to be processed comprises determining that the value of the counter is zero.

4. The method of claim 2 , wherein processing the plurality of packets is performed by a plurality of cores, wherein the counter of the current packet processing epoch comprises a plurality of counter elements and wherein each counter element is associated with a respective one of the plurality of cores.

5. The method of claim 4 , wherein determining that the counter indicates that there are no more packets to be processed comprises determining that the sum of the values of all the counter elements is zero.

6. The method of claim 4 , wherein each counter element is stored at a respective memory location local to the associated core of the plurality of cores.

7. The method of claim 4 , wherein the current packet processing epoch stores a reference as a global variable, and wherein the global variable is referenced by the one or more cores for identifying the current packet processing epoch.

8. The method of claim 1 , wherein determining that there are no more packets to be processed is indicative that the current packet processing epoch is no longer referenced by any packets of the plurality of packets.

9. The method of claim 1 , wherein the current packet processing epoch comprises a deletion list, further comprising:

adding the redundant object to the deletion list of the current packet processing epoch;

determining that the redundant object contained in the deletion list has been deleted; and

in response to determining the redundant object has been deleted, deleting the current packet processing epoch.

10. The method of claim 1 , wherein each packet processing epoch comprises a respective sequence number, and wherein the sequence number of the new packet processing epoch is incremented based on the sequence number of the current packet processing epoch.

11. The method of claim 10 , further comprising, for each of the one or more cores processing packets, prior to processing the plurality of packets according to the packet processing data structure, recording the sequence number of the current packet processing epoch at a respective memory location associated with the respective core.

12. The method of claim 11 , further comprising establishing that the current packet processing epoch is no longer in use by determining that the sequence number recorded in each of the memory locations is different from the sequence number of the current packet processing epoch.

13. The method of claim 1 , wherein processing the plurality of packets occurs concurrently with committing the update to the packet processing data structure and deleting the redundant object.

14. The method of claim 1 , wherein the object comprises one or more of: a parameter check, a matching operation, and an action to be performed on one of the plurality of packets.

15. A system for processing packets comprising:

one or more processers; and

a memory having encoded thereon computer-readable instructions that when executed by the one or more processors, cause the system to perform operations comprising:

receiving a plurality of packets associated with a current packet processing epoch and a current packet processing data structure;

determining that an object of the packet processing data structure is redundant as a result of an update to the current packet processing data structure;

generating a new packet processing epoch corresponding to the updated packet processing data structure;

in response to determining, based on the current packet processing epoch, that there are no more packets to be processed using the current packet processing data structure, deleting the redundant object from the updated packet processing data structure; and

processing a subsequent plurality of packets according to the updated packet processing data structure and the new packet processing epoch.

16. The system of claim 15 , wherein the current packet processing epoch comprises a counter, further comprising computer-readable instructions that when executed by the one or more processors, cause the system to perform operations comprising:

setting the counter of the current packet processing epoch to a number of packets contained in the plurality of packets; and

in response to processing each packet of the plurality of packets, decrementing the counter to track the number of packets that have been processed.

17. The system of claim 15 , further comprising computer-readable instructions that when executed by the one or more processors, further cause the system to perform operations comprising:

determine that the redundant object has been deleted; and

in response to determining the redundant object has been deleted, delete the current packet processing epoch.

18. The system of claim 15 , wherein each packet processing epoch further comprises a respective sequence number, and wherein defining the new packet processing epoch comprises defining the new packet processing epoch with a sequence number which is incremented from the sequence number of the current packet processing epoch.

19. The system of claim 15 , wherein the one or more objects comprise one or more of: a parameter check, a matching operation, and an action taken on the packet.

20. A non-transitory computer-readable memory having encoded thereon computer-readable instructions that when executed cause computing devices to perform operations comprising:

receiving a plurality of packets associated with a current packet processing epoch and a current packet processing data structure;

determining that an object of the packet processing data structure is redundant as a result of an update to the current packet processing data structure;

generating a new packet processing epoch corresponding to the updated packet processing data structure;

in response to determining, based on the current packet processing epoch, that there are no more packets to be processed using the current packet processing data structure, deleting the redundant object from the updated packet processing data structure; and

processing a subsequent plurality of packets according to the updated packet processing data structure and the new packet processing epoch.

Assignments (8)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2026
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: ALIANZA, INC.
Reel/Frame 075645/0892 →
CHANGE OF NAME Recorded May 13, 2026
From: ALIANZA, INC.
To: ALIANZA, LLC
Reel/Frame 075646/0037 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 13, 2026
From: METASWITCH NETWORKS LTD.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 075578/0155 →
CORRECTIVE ASSIGNMENT TO CORRECT THE CONVEYING PARTY NAME PREVIOUSLY RECORDED AT REEL: 71296 FRAME: 1. ASSIGNOR(S) HEREBY CONFIRMS THE ASSIGNMENT. Recorded Jun 10, 2025
From: METASWITCH NETWORKS LTD.
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 071587/0856 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2025
From: METASWITCH LIMITED
To: MICROSOFT TECHNOLOGY LICENSING, LLC
Reel/Frame 071296/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded May 19, 2025
From: MICROSOFT TECHNOLOGY LICENSING, LLC
To: ALIANZA, INC.
Reel/Frame 071296/0079 →
SECURITY INTEREST Recorded May 6, 2025
From: ALIANZA, INC.; METASWITCH NETWORKS LTD
To: WELLS FARGO BANK, NATIONAL ASSOCIATION
Reel/Frame 071191/0228 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 18, 2023
From: WILLIAMS, MATTHEW IAN RONALD; WHITEHOUSE, RICHARD JOHN; SWINDLE, CHRISTOPHER NEIL; REYNOLDS, COLIN
To: METASWITCH NETWORKS LTD.
Reel/Frame 063367/0872 →