IP Library Granted Patent US 11,188,355
Granted Patent B2
US 11,188,355 · App. 16/022,601 · Granted Nov 30, 2021

Data plane program verification

Inventors: Jeongkeun Lee (Mountain View, CA); Cole Nathan Schlesinger (Mountain View, CA); John Nathan Foster (Ithaca, NY); Han Wang (Santa Clara, CA); Robert Soule (San Carlos, CA); William Hallahan (Nashua, NH); Steffen Julif Smolka (Ithaca, NY); Mon Jed Liu (Santa Clara, CA)
Assignee: Barefoot Networks, Inc.
G06F9/44589G06F8/51G06F11/3604G06F11/3608G06F11/3636H04L45/745
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,188,355
App. No.
16/022,601
Granted
Nov 30, 2021
Kind
B2
Abstract

A method for verifying data plane programs is provided in some embodiments. Because the behavior of a data plane program (e.g., a program written in the P4 language) is determined in part by the control plane populating match-action tables with specific forwarding rules, in some embodiments, programmers are provided with a way to document assumptions about the control plane using annotations (e.g., in the form of “assertions” or “assumptions” about the state based on the unknown control plane contribution). In some embodiments, annotations are added automatically to verify common properties, including checking that every header read or written is valid, that every expression has a well-defined value, and that all standard metadata is manipulated correctly. The method in some embodiments translates programs from a first language (e.g., P4) to a second language (e.g., Guarded Command Language (GCL)) for verification by a satisfiability modulo theory (SMT) solver.

Claims (25)

1. A non-transitory machine readable medium comprising instructions stored thereon, that if executed by one or more processors, cause the one or more processors to:

access a data-plane configuration program, wherein:

the data-plane configuration program is to configure one or more programmable stages of a packet processing pipeline and the data-plane configuration program comprises one or more annotations of one or more assumptions concerning data-plane execution by at least one of the one or more programmable stages of a packet processing pipeline;

verify correctness of the data-plane configuration program, including the one or more annotations of one or more assumptions concerning data-plane execution by at least one of the one or more programmable stages of a packet processing pipeline; and

based on a presence of an erroneous assumption associated with an annotation in the data-plane configuration program, provide an indication of error concerning the erroneous assumption in an annotation.

2. The machine readable medium of claim 1 , wherein the data-plane configuration program is consistent with P4 programming language.

3. The machine readable medium of claim 1 , wherein to verify correctness of the data-plane configuration program, including the one or more annotations of one or more assumptions concerning data-plane execution by at least one of the one or more programmable stages of a packet processing pipeline, the one or more processors are to:

translate the data-plane configuration program from a first programming language to a second programming language.

4. The machine readable medium of claim 1 , wherein the first programming language is consistent with P4 programming language and the second programming language is consistent with Guarded Command Language (GCL).

5. The machine readable medium of claim 1 , wherein to verify correctness of the data-plane configuration program, including the one or more annotations of one or more assumptions concerning data-plane execution by at least one of the one or more programmable stages of a packet processing pipeline, the one or more processors are to:

translate the data-plane configuration program from a first programming language to a second programming language, wherein the second programming language includes a non-deterministic choice based on at least one of the one or more annotations of one or more assumptions concerning data-plane execution by at least one of the one or more programmable stages of a packet processing pipeline.

6. The machine readable medium of claim 1 , wherein the at least one of the one or more annotations of one or more assumptions concerning data-plane execution by at least one of the one or more programmable stages of a packet processing pipeline comprises a match-action table configuration.

7. The machine readable medium of claim 1 , wherein the at least one of the one or more annotations of one or more assumptions concerning data-plane execution by at least one of the one or more programmable stages of a packet processing pipeline comprises a forwarding rule configured in a match-action table by a control-plane.

8. A method comprising:

receiving a source code of a program comprising a domain-specific language for programming a data plane circuit, wherein the program includes one or more annotations of one or more assumptions concerning data-plane execution by the data plane circuit and providing feedback of one or more invalid assumptions in a user interface (UI).

9. The method of claim 8 , wherein the domain-specific language for programming a data plane circuit comprises P4 programming language.

10. The method of claim 8 , comprising:

verifying correctness of the domain-specific language.

11. The method of claim 10 , wherein:

verifying correctness of the domain-specific language comprises translating the program from a first programming language to a second programming language.

12. The method of claim 11 , wherein the first programming language is consistent with P4 programming language and the second programming language is consistent with Guarded Command Language (GCL).

13. The method of claim 10 , wherein:

verifying correctness of the domain-specific language comprises translating the program from a first programming language to a second programming language, wherein the second programming language includes a non-deterministic choice based on at least one of the one or more annotations of one or more assumptions concerning data-plane execution by at least one of the one or more programmable stages of a packet processing pipeline.

14. The method of claim 8 , wherein the one or more annotations of one or more assumptions concerning data-plane execution by the data plane circuit comprises an assumption that a match-action operation was performed.

15. The method of claim 8 , wherein the one or more annotations of one or more assumptions concerning data-plane execution comprises a forwarding rule configured in a match-action table by a control-plane.

Assignments (6)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Mar 22, 2021
From: LIU, MON JED
To: BAREFOOT NETWORKS, INC.
Reel/Frame 055664/0618 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Dec 16, 2020
From: FOSTER, JOHN NATHAN; LEE, JEONGKEUN; SOULE, ROBERT; HALLAHAN, WILLIAM; SCHLESINGER, COLE; WANG, HAN; SMOLKA, STEFFEN JULIF
To: BAREFOOT NETWORKS, INC.
Reel/Frame 054667/0364 →
RELEASE OF SECURITY INTEREST Recorded Sep 20, 2019
From: SILICON VALLEY BANK
To: BAREFOOT NETWORKS, INC.
Reel/Frame 050455/0455 →
RELEASE OF SECURITY INTEREST Recorded Sep 20, 2019
From: SILICON VALLEY BANK
To: BAREFOOT NETWORKS, INC.
Reel/Frame 050455/0497 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 25, 2019
From: BAREFOOT NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 049588/0001 →
INTELLECTUAL PROPERTY SECURITY AGREEMENT Recorded Jun 25, 2019
From: BAREFOOT NETWORKS, INC.
To: SILICON VALLEY BANK
Reel/Frame 049588/0112 →
Continuity (3)
Provisional Application 62571121 · Oct 11, 2017
Provisional Application 62663141 · Apr 26, 2018
Related Publication 20190108045A1 · Apr 11, 2019
Cited By (1)
US 12,457,162