IP Library Granted Patent US 9,891,898
Granted Patent B1
US 9,891,898 · App. 15/173,653 · Granted Feb 13, 2018

Low-level programming language plugin to augment high-level programming language setup of an SDN switch

Inventor: Johann H. Tonsing (Zwartkop, ZA)
Assignee: Netronome Systems, Inc.
G06F8/41G06F8/31H04L41/20H04L49/35
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 9,891,898
App. No.
15/173,653
Granted
Feb 13, 2018
Kind
B1
Abstract

A method involves compiling a first amount of high-level programming language code (for example, P 4 ) and a second amount of a low-level programming language code (for example, C) thereby obtaining a first section of native code and a second section of native code. The high-level programming language code at least in part defines how an SDN switch performs matching in a first condition. The low-level programming language code at least in part defines how the SDN switch performs matching in a second condition. The low-level code can be a type of plugin or patch for handling special packets. The sections of native code are loaded into the SDN switch such that a first processor (for example, x86 of the host) executes the first section of native code and such that a second processor (for example, ME of an NFP on the NIC) executes the second section of native code.

Claims (28)

1. A method comprising:

(a) compiling, by a processor, a first amount of high-level programming language code thereby obtaining a first section of native code and compiling a second amount of a low-level programming language code thereby obtaining a second section of native code, wherein the first amount of high-level programming language code at least in part defines how a Software Defined Network (SDN) switch performs a matching in a first condition, and wherein the second amount of low-level programming language code at least in part defines how the SDN switch performs matching in a second condition, wherein the matching specified by the second amount of low-level programming language code cannot be specified using the high-level programming language;

(b) loading the first section of native code into the SDN switch such that a first processor of the SDN switch can execute at least part of the first section of native code; and

(c) loading the second section of native code into the SDN switch such that a second processor of the SDN switch can execute at least part of the second section of native code.

2. The method of claim 1 , wherein the high-level programming language code is P4 programming language code, and wherein the low-level programming language code is C programming language code.

3. The method of claim 1 , wherein the compiling of (a) occurs in the SDN switch.

4. The method of claim 1 , wherein the compiling of (a) does not occur in the SDN switch.

5. The method of claim 1 , wherein the first processor is an x86 host processor that executes a first instruction set, and wherein the second processor is a processor of a Network Flow Processor (NFP), wherein the processor of the NFP executes a second instruction set.

6. The method of claim 1 , wherein a third section of native code is obtained by the compiling of the first amount of high-level programming language code, and wherein the third section of native code is used during the compiling of the second amount of low-level programming language code.

7. The method of claim 1 , further comprising:

(d) combining the first section of native code with the second section of native code into a single file.

8. The method of claim 1 , wherein the matching specified by the high-level programming language code when carried out generates a result, and wherein the matching specified by the low-level programming language code when carried out uses the result.

9. A method comprising:

(a) compiling, by a processor, a first amount of high-level programming language code thereby obtaining a first section of native code and compiling a second amount of a low-level programming language code thereby obtaining a second section of native code, wherein the first amount of high-level programming language code at least in part defines how an SDN switch performs a first action, and wherein the second amount of low-level programming language code at least in part defines how the SDN switch performs a second action, wherein the second action specified by the second amount of low-level programming language code cannot be specified using the high-level programming language;

(b) loading the first section of native code into the SDN switch such that a first processor of the SDN switch can execute at least part of the first section of native code; and

(c) loading the second section of native code into the SDN switch such that a second processor of the SDN switch can execute at least part of the second section of native code.

10. The method of claim 9 , wherein the high-level programming language code is P4 programming language code, and wherein the low-level programming language code is C programming language code.

11. The method of claim 9 , wherein the compiling of (a) occurs in the SDN switch.

12. The method of claim 9 , wherein the compiling of (a) does not occur in the SDN switch.

13. The method of claim 9 , wherein the first processor is an x86 host processor that executes a first instruction set, and wherein the second processor is a processor of a Network Flow Processor (NFP), wherein the processor of the NFP executes a second instruction set.

14. The method of claim 9 , wherein a third section of native code is obtained by the compiling of the first amount of high-level programming language code, and wherein the third section of native code is used during the compiling of the second amount of low-level programming language code.

15. The method of claim 9 , further comprising:

(d) combining the first section of native code with the second section of native code into a single file.

16. The method of claim 9 , wherein the action specified by the high-level programming language code when carried out generates a result, and wherein the actin specified by the low-level programming language code when carried out uses the result.

17. A method comprising:

(a) compiling, by a processor, a first amount of high-level programming language code and a second amount of a low-level programming language code thereby obtaining a first section of native code and a second section of native code, wherein the first amount of high-level programming language code at least in part defines how a Software Defined Network (SDN) switch performs matching in a first condition, and wherein the second amount of low-level programming language code at least in part defines how the SDN switch performs matching in a second condition, wherein the matching specified by the second amount of low-level programming language code cannot be specified using the high-level programming language;

(b) loading the first section of native code into the SDN switch such that a first processor of the SDN switch can execute at least part of the first section of native code; and

(c) loading the second section of native code into the SDN switch such that a second processor of the SDN switch can execute at least part of the second section of native code.

Assignments (3)
RELEASE OF SECURITY INTEREST Recorded Dec 31, 2020
From: KREOS CAPITAL V (UK) LIMITED
To: NETRONOME SYSTEMS, INC.
Reel/Frame 054883/0293 →
SECURITY INTEREST Recorded Jun 7, 2018
From: NETRONOME SYSTEMS, INC.
To: KREOS CAPITAL V (UK) LIMITED
Reel/Frame 046319/0743 →
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Jun 4, 2016
From: TÖNSING, JOHANN H.
To: NETRONOME SYSTEMS, INC.
Reel/Frame 038809/0100 →
Continuity (1)
Provisional Application 62171230 · Jun 4, 2015