IP Library Granted Patent US 12,445,394
Granted Patent B2
US 12,445,394 · App. 18/735,918 · Granted Oct 14, 2025

Distributed storage of packet transformation information in forwarding hardware

Inventors: Jonathan Paul Beecroft (Bristol, GB); Anthony M. Ford (Bristol, GB); Trevor Alan Jones (Bristol, GB); Andrew S. Kopser (Seattle, WA); Joseph Orth (Fort Collins, CO); David Charles Hewson (Bristol, GB); Abdulla M. Bataineh (Vista, CA)
Assignee: Hewlett Packard Enterprise Development LP
H04L49/3027H04L49/252H04L61/2592
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,445,394
App. No.
18/735,918
Granted
Oct 14, 2025
Kind
B2
Abstract

The efficient storage of transformation information in a switch is provided. A respective port of the switch can include a memory device capable of storing transformation information. During operation, the switch can apply a selection mechanism to the transformation information learned at the switch for identifying a target port. The switch can then store the information in the memory device of the target port. Upon receiving a packet, the ingress port can apply the selection mechanism to the header information of the packet for determining a location of a first piece of transformation information associated with the packet. The ingress port can obtain the first piece of transformation information by looking up the header information in the location and storing it in a local memory device. The ingress port can then transform the packet based on the first piece of transformation information for determining an egress port for the packet.

Claims (85)

1. A method comprising:

distributing transformation information, which is learned at a network device, among respective memory devices of a plurality of ports on the network device, the transformation information being associated with packet forwarding;

in response to receiving a packet at an ingress port of the network device, determining, by the ingress port, a first memory device of a first port storing a first piece of transformation information corresponding to the packet;

obtaining, by the ingress port, the first piece of transformation information from the first memory device of the first port;

transforming, at the ingress port, the packet based on the first piece of transformation information to determine an egress port for the packet; and

sending the packet via the egress port.

2. The method of claim 1 , wherein determining the first memory device comprises applying a selection mechanism on header information of the packet.

3. The method of claim 1 , wherein transforming the packet comprises one or more of:

translating a layer-2 address of the packet to a fabric address;

changing source and destination layer-2 addresses of the packet;

transforming a layer-3 address;

encapsulating the packet with a tunnel header;

mirroring the packet to a port;

modifying the packet for a different version of a protocol; and

adding a virtual local area network (VLAN) tag to the packet.

4. The method of claim 1 , wherein the first port is distinct from the ingress port;

wherein the method further comprises:

storing the packet in a flow queue of the ingress port;

fetching the first piece of transformation information from the first memory device via a switching fabric of a switch; and

subsequent to the fetching of the first piece of transformation information, applying the first piece of transformation information to a respective packet of the flow queue.

5. The method of claim 4 , wherein fetching the first piece of transformation information further comprises:

sending a control packet comprising header information of the packet from the ingress port to the first port; and

receiving a response packet comprising the transformation information from the first port to the ingress port.

6. The method of claim 1 , further comprising:

storing the first piece of transformation information in a local memory device of the ingress port; and

transforming a subsequent packet based on the first piece of transformation information stored in the local memory device.

7. The method of claim 6 , further comprising:

determining inactivity associated with the first piece of transformation information at the ingress port for a predetermined period; and

removing the first piece of transformation information from the local memory device of the ingress port.

8. The method of claim 1 , wherein the first port is the ingress port; and

wherein obtaining the first piece of transformation information further comprises looking up header information of the packet in the first memory device of the first port to obtain the first piece of transformation information.

9. The method of claim 1 , further comprising:

learning a new piece of transformation information at the network device;

selecting a target port for the new piece of transformation information based on a selection mechanism; and

storing the new piece of transformation information in a memory device of the target port.

10. A network device, comprising:

an ingress port to receive a packet; and

a non-transitory computer-readable storage medium storing instructions to:

distributing, based on a selection mechanism, transformation information learned at a network device among respective memory devices of a plurality of ports on the network device, the transformation information being associated with packet forwarding;

determine, based on the selection mechanism, a first memory device of a first port storing a first piece of transformation information associated with the packet;

obtain the first piece of transformation information from the first memory device;

transform the packet based on the first piece of transformation information to determine an egress port for the packet; and

send the packet via the egress port.

11. The network device of claim 10 , wherein transforming the packet comprises one or more of:

translating a layer-2 address of the packet to a fabric address;

changing source and destination layer-2 addresses of the packet;

transforming a layer-3 address;

encapsulating the packet with a tunnel header;

mirroring the packet to a port;

modifying the packet for a different version of a protocol; and

adding a virtual local area network (VLAN) tag to the packet.

12. The network device of claim 10 , wherein the first port is distinct from the ingress port;

wherein the instructions are further to:

store the packet in a flow queue of the ingress port;

fetch the first piece of transformation information from the first memory device via a switching fabric of a switch; and

subsequent to the fetching of the first piece of transformation information, apply the first piece of transformation information to a respective packet of the flow queue.

13. The network device of claim 12 , wherein, to fetch the first piece of transformation information, the instructions are further to:

send a control packet comprising header information of the packet from the ingress port to the first port; and

receive a response packet comprising the transformation information from the first port to the ingress port.

14. The network device of claim 10 , wherein the instructions are further to:

store the first piece of transformation information in a local memory device of the ingress port; and

transform a subsequent packet based on the first piece of transformation information stored in the local memory device.

15. The network device of claim 14 , wherein the instructions are further to:

determine inactivity associated with the first piece of transformation information at the ingress port for a predetermined period; and

remove the first piece of transformation information from the local memory device of the ingress port.

16. The network device of claim 10 , wherein the first port is the ingress port; and

wherein, to obtain the first piece of transformation information, the instructions are further to look up header information of the packet in the first memory device of the first port to obtain the first piece of transformation information.

17. The network device of claim 10 , wherein the instructions are further to:

learn a new piece of transformation information at the network device;

select a target port for the new piece of transformation information based on a selection mechanism; and

store the new piece of transformation information in a memory device of the target port.

18. A non-transitory computer-readable storage medium storing instructions that when executed by a processor of a network device cause the processor to perform a method, the method comprising:

distributing transformation information, which is learned at a network device, among respective memory devices of a plurality of ports on the network device, the transformation information being associated with packet forwarding;

in response to receiving a packet at an ingress port of the network device, determining a first port associated with header information of the packet;

looking up the header information in a first memory device of the first port to obtain a first piece of transformation information associated with the packet;

transforming the packet based on the first piece of transformation information to determine an egress port for the packet; and

sending the packet via the egress port.

19. The non-transitory computer-readable storage medium of claim 18 , wherein the method further comprises:

storing the first piece of transformation information in a local memory device of the ingress port; and

transforming a subsequent packet based on the first piece of transformation information stored in the local memory device.

20. The non-transitory computer-readable storage medium of claim 18 , wherein the first port is distinct from the ingress port; and

wherein the method further comprises:

storing the packet in a flow queue of the ingress port;

fetching the first piece of transformation information from the first memory device via a switching fabric of a switch; and

subsequent to the fetching of the first piece of transformation information, applying the first piece of transformation information to a respective packet of the flow queue.

Assignments (3)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 10, 2024
From: HEWLETT-PACKARD LIMITED
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 067679/0001 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2024
From: BEECROFT, JONATHAN PAUL; JONES, TREVOR ALAN; HEWSON, DAVID CHARLES; FORD, ANTHONY M.
To: HEWLETT-PACKARD LIMITED
Reel/Frame 067645/0614 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 6, 2024
From: KOPSER, ANDREW S.; BATAINEH, ABDULLA M.
To: HEWLETT PACKARD ENTERPRISE DEVELOPMENT LP
Reel/Frame 067645/0671 →
Continuity (2)
Continuation 18103943 · Jan 31, 2023
Related Publication 20240323147A1 · Sep 26, 2024
References Cited (22)
US 5367701A · Von et al. · 1994 [cited by applicant]
US 7079544B2 · Wakayama et al. · 2006 [cited by applicant]
US 7177311B1 · Hussain et al. · 2007 [cited by applicant]
US 7522604B2 · Hussain et al. · 2009 [cited by applicant]
US 7633954B2 · Wakayama et al. · 2009 [cited by applicant]
US 8111690B2 · Hussain et al. · 2012 [cited by applicant]
US 9083613B2 · Jain et al. · 2015 [cited by applicant]
US 9426070B2 · Nishihashi et al. · 2016 [cited by applicant]
US 9571337B1 · Xu et al. · 2017 [cited by applicant]
US 10489310B2 · Keeton et al. · 2019 [cited by applicant]
US 10541918B2 · Singh et al. · 2020 [cited by applicant]
US 11394813B1 · Petersen et al. · 2022 [cited by applicant]
US 11641326B2 · Papadantonakis et al. · 2023 [cited by applicant]
US 11711318B1 · Patronas et al. · 2023 [cited by applicant]
US 11757794B2 · Wu et al. · 2023 [cited by applicant]
US 12034650B1 · Beecroft · 2024 [cited by examiner]
US 20040213272A1 · Nishi et al. · 2004 [cited by applicant]
US 20070268903A1 · Nakagawa · 2007 [cited by applicant]
US 20200412666A1 · Papadantonakis · 2020 [cited by examiner]
US 20240323147A1 · Beecroft · 2024 [cited by examiner]
Bosshart et al., “P4: Programming Protocol-Independent Packet Processors”, ACM SIGCOMM Computer Communication Review, vol. 44, No. 3, Jul. 2014, 8 pages. [cited by applicant]
Github, “In-band Network Telemetry (INT) Dataplane Specification”, Version 2.1, 2020, 56 pages. [cited by applicant]