IP Library Granted Patent US 11,595,289
Granted Patent B2
US 11,595,289 · App. 16/833,227 · Granted Feb 28, 2023

Network testing using a programmable packet engine

Inventors: Jeongkeun Lee (Mountain View, CA); Georgios Nikolaidis (Mountain View, CA); Andre Lam (San Jose, CA); Remy Chang (Milpitas, CA); Joon-Myung Kang (Dublin, CA); Ashkan Nikravesh (San Jose, CA); Ramkumar Krishnamoorthy (Cupertino, CA); Alain Loge (South Lake Tahoe, CA)
Assignee: Barefoot Networks, Inc.
H04L43/50H04L43/106H04L69/22
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 11,595,289
App. No.
16/833,227
Granted
Feb 28, 2023
Kind
B2
Abstract

Embodiments described herein describe a network tester that is configured to perform packet modification at an egress pipeline of a programmable packet engine. A packet stream is received at an egress pipeline of an output port of the programmable packet engine, wherein the output port includes a packet modifier. Packets of the packet stream are modified at the packet modifier. The packet stream including modified packets is transmitted through an egress pipeline of the output port.

Claims (54)

1. A method comprising:

configuring a programmable data plane packet engine of a network element to emulate a network tester and to generate one or more test streams of packets and transmit the one or more test streams of packets to at least one device under test:

wherein:

the programmable data plane packet engine comprises at least one control plane-programmable match action unit for use in generating the one or more test streams based upon match-action operations to be performed by the at least one control plane-programmable match action unit:

the match-action operations comprise packet header field modification and packet classification:

the packet header field modification is to be based upon the packet classification: and

the packet header field modification is programmable so as to permit the programmable data plane packet engine to emulate a plurality of types of network testers.

2. The method of claim 1 , comprising:

configuring the programmable data plane packet engine of the network element to modify a test stream of packets and transmit multiple test streams of packets to at least one device under test so that the programmable data plane packet engine of the network element emulates multiple host devices.

3. The method of claim 1 , wherein:

configuring a programmable data plane packet engine of a network element to generate one or more test streams of packets comprises:

during runtime of a network, generating a stream of at least one type of test packet by copying the at least one type of test packet while re-circulating test packets of the stream.

4. The method of claim 1 , wherein:

configuring a programmable data plane packet engine of a network element to generate one or more test streams of packets comprises:

copying a template packet received from a control plane while re-circulating the template packet through the programmable data plane packet engine to increase a number of template packets.

5. The method of claim 1 , wherein the programmable data plane packet engine of a network element comprises programmable ingress and egress pipelines.

6. The method of claim 1 , wherein:

configuring a programmable data plane packet engine of a network element to generate one or more test streams of packets comprises:

modifying one or more header fields of one or more test streams of packets based on a configuration setting, wherein the modifying one or more header fields comprises one or more of: increasing a header field value of packets up to a maximum value, applying a same value to a header field of a number of packets before changing the value applied to the field, or applying hierarchical execution of header field modifiers.

7. The method of claim 6 , wherein the modifying one or more header fields comprises the programmable data plane packet engine of the network element emulating multiple host devices.

8. The method of claim 1 , comprising:

injecting state information into packets of one or more test streams of packets prior to transmission, wherein the state information comprises one or more of: a time stamp at egress, a stream identifier, and a stream and output port identifier.

9. The method of claim 1 , comprising:

configuring the programmable data plane packet engine of a network element to classify packets received from the at least one device under test, wherein classifying comprises one or more of:

for packets received from the at least one device under test, counting occurrences of packet header values within a range or

for packets received from the at least one device under test, counting occurrences of one or more of: packets with errors at a media access controller (MAC), number of packets received, or bytes per packet received.

10. The method of claim 9 , wherein classifying comprises performing multi-table lookup for classification of multiple header fields of received packets.

11. The method of claim 1 , comprising:

receiving a timestamp value from a remote controller;

storing the timestamp value in a register of the network element; and updating a timestamp counter based on the stored timestamp value.

12. The method of claim 11 , comprising:

based on receipt of a packet with state information comprising a timestamp counter at time of egress, determining a timestamp counter value at time of receipt of the packet and determining round-trip latency based on the timestamp counter value at time of receipt of the packet and the timestamp counter at time of egress.

13. An apparatus comprising:

a programmable data plane packet engine of a network element, the programmable data plane packet engine configured to emulate a network tester and to generate one or more test streams of packets and transmit the one or more test streams of packets to at least one device under test;

wherein:

the programmable data plane packet engine comprises at least one control plane-programmable match action unit for use in generating the one or more test streams based upon match-action operations to be performed by the at least one control plane-programmable match action unit:

the match-action operations comprise packet header field modification and packet classification:

the packet header field modification is to be based upon the packet classification: and

the packet header field modification is programmable so as to permit the programmable data plane packet engine to emulate a plurality of types of network testers.

14. The apparatus of claim 13 , wherein the programmable data plane packet engine is configured to modify a test stream of packets and transmit multiple test streams of packets to at least one device under test so that the programmable data plane packet engine of the network element emulates multiple host devices.

15. The apparatus of claim 13 , wherein the programmable data plane packet engine is configured to generate a stream of at least one type of test packet by re-circulation of test packets and duplication of at least one type of test packet during re-circulation.

16. The apparatus of claim 13 , wherein the programmable data plane packet engine comprises programmable ingress and egress pipelines.

17. The apparatus of claim 13 , wherein the programmable data plane packet engine is to modify one or more header fields of one or more test streams of packets by one or more of: increasing a header field value of packets up to a maximum value, applying a same value to a header field of a number of packets before changing the value applied to the field, or applying hierarchical execution of header field modifiers.

18. The apparatus of claim 13 , wherein the programmable data plane packet engine is configured to inject state information into one or more test streams of packets prior to transmission and wherein the state information comprises one or more of: a time stamp at egress, a stream identifier, and a stream and output port identifier.

19. The apparatus of claim 13 , wherein the programmable data plane packet engine is configured to classify packets received from the at least one device under test and wherein to classify packets received from the at least one device under test, the programmable data plane packet engine is to count occurrences of packet header values within a range.

20. The apparatus of claim 19 , wherein to classify packets received from the at least one device under test, the programmable data plane packet engine is to count occurrences of one or more of: packets with errors at a media access controller (MAC), number of packets received, or bytes per packet received.

21. The apparatus of claim 19 , wherein to classify packets received from the at least one device under test, the programmable data plane packet engine is to perform multi-table lookup for classification of multiple header fields of received packets.

22. The apparatus of claim 13 , wherein the programmable data plane packet engine is configured to:

receive a timestamp value from a remote controller;

store the timestamp value in a register of the network element; and

update a timestamp counter based on the stored timestamp value.

23. The apparatus of claim 13 , wherein the programmable data plane packet engine is configured to:

inject a timestamp counter into packets one or more test streams of packets prior to transmission and

determine a round-trip time based on the injected timestamp counter.

Assignments (2)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 1, 2026
From: BAREFOOT NETWORKS, INC.
To: INTEL CORPORATION
Reel/Frame 075834/0019 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 23, 2020
From: LEE, JEONGKEUN; NIKOLAIDIS, GEORGIOS; LAM, ANDRE; CHANG, REMY; KANG, JOON-MYUNG; NIKRAVESH, ASHKAN; KRISHNAMOORTHY, RAMKUMAR; LOGE, ALAIN
To: BAREFOOT NETWORKS, INC.
Reel/Frame 052490/0891 →
Continuity (8)
Provisional Application 62828361 · Apr 2, 2019
Provisional Application 62826873 · Mar 29, 2019
Provisional Application 62826893 · Mar 29, 2019
Provisional Application 62826900 · Mar 29, 2019
Provisional Application 62826908 · Mar 29, 2019
Provisional Application 62826914 · Mar 29, 2019
Provisional Application 63000362 · Mar 26, 2020
Related Publication 20200313999A1 · Oct 1, 2020
Cited By (1)
US 12,580,840