IP Library Granted Patent US 12,399,731
Granted Patent B2
US 12,399,731 · App. 17/572,568 · Granted Aug 26, 2025

Methods, systems, and computer readable media for customizing data plane pipeline processing using Berkeley packet filter (BPF) hook entry points

Inventors: Christian Paul Sommers (Bangor, CA); Matthew R. Bergeron (Sunol, CA)
Assignee: KEYSIGHT TECHNOLOGIES, INC.
G06F9/45558G06F8/60G06F8/65G06F9/30079G06F9/44526G06F9/455G06F11/30G06F2009/4557G06F2009/45579
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,399,731
App. No.
17/572,568
Granted
Aug 26, 2025
Kind
B2
Abstract

A method for customizing data plane pipeline processing to generate test packets using Berkeley packet filter (BPF) hook entry points is disclosed. The method includes receiving a program code script for customizing a performance of one or more stages of a multistage processing pipeline platform configured for conducting a network operation process, wherein the multistage processing pipeline platform includes one or more predefined hook entry points and compiling the program code script to generate a customized plug-in component that is deployed in at least one of the one or more predefined hook entry points of the multistage processing pipeline platform. The method further includes initiating execution of the customized plug-in component in response to a triggering of the at least one of the one or more predefined hook entry points of a stage element of the multistage processing pipeline platform, wherein the execution of the customized plug-in component dynamically configures at least one feature of the network operation process at runtime.

Claims (23)

1. A method for customizing data plane pipeline processing to generate test packets using Berkeley packet filter (BPF) hook entry points, the method comprising:

receiving a program code script for customizing a performance of one or more stages of a multistage processing pipeline platform configured for conducting a network operation process, wherein the multistage processing pipeline platform includes one or more predefined hook entry points, wherein the network operation process is a test packet generation process and the multistage processing pipeline platform includes a fixed function block for generating transmission control protocol (TCP) headers for test packets generated by the multistage processing pipeline platform and the one or more predefined hook entry points are located in the fixed function block that generates the TCP headers;

compiling the program code script to generate a customized plug-in component that is invoked by the one or more predefined hook entry points located in the fixed function block that generates the TCP headers, wherein the customized plug-in component adds a flag or numerical indicator in the TCP headers of at least some of the test packets generated by the multistage processing pipeline platform; and

initiating execution of the customized plug-in component in response to a triggering of the customized plug-in component by the one or more predefined hook entry points located in the fixed function block that generates the TCP headers, wherein the execution of the customized plug-in component dynamically configures at least one feature of the network operation process at runtime and dynamically modifies or extends packet header generation of the fixed function block at runtime.

2. The method of claim 1 further comprising transmitting test packets generated during the network operation process towards a system under test (SUT) in accordance with the at least one feature.

3. The method of claim 1 including interpreting, by an orchestration controller, a declarative data model that is representative of the multistage processing pipeline platform and includes the customized plug-in component that is inserted into the multistage processing pipeline platform.

4. The method of claim 1 wherein the customized plug-in component is executed as compiled code running in a BPF virtual machine, as compiled code running in a hardware component, as BPF code precompiled into native machine code running on a central processing unit (CPU), or as just-in-time (JIT)-compiled code running on a CPU.

5. The method of claim 1 wherein the execution of an event structure in the customized plug-in component triggers the execution of a second customized plug-in component.

6. The method of claim 1 wherein an element of the customized plug-in component implements an application programming interface (API) to communicate with a system element that is located external to the multistage processing pipeline platform.

7. A system for customizing data plane pipeline processing to generate test packets using Berkeley packet filter (BPF) hook entry points, the system comprising:

a processor for executing a multistage processing pipeline platform configured for conducting a network operation process, wherein the network operation process is a test packet generation process and the multistage processing pipeline platform includes a fixed function block for generating transmission control protocol (TCP) headers for test packets generated by the multistage processing pipeline platform;

a repository component configured to store customized plug-in components that are designed to modify operation of the multistage processing pipeline platform, wherein the fixed function block that generates the TCP headers includes one or more predefined hook entry points; and

a plurality of processing pipeline stage elements of the multistage processing pipeline, wherein the one or more predefined hook entry points of the fixed function block that generates the TCP headers trigger execution of at least one of the customized plug-in components that dynamically configures at least one feature of the network operation process at runtime, wherein the at least one of the customized plug-in components whose execution is triggered by the one or more hook entry points of the fixed function block adds a flag or numerical indicator in the TCP headers of at least some of the test packets generated by the multistage processing pipeline platform and dynamically modifies or extends packet header generation of the fixed function block at runtime.

8. The system of claim 7 further comprising a transmit port for transmitting test packets generated during the network operation process towards a system under test (SUT) in accordance with the at least one feature.

9. The system of claim 8 further comprising an orchestration controller that is configured to interpret a declarative data model that is representative of the multistage processing pipeline platform and includes the at least one of the customized plug-in components that is inserted into the multistage processing pipeline platform.

10. The system of claim 7 wherein the customized plug-in component is executed as compiled code running in a BPF virtual machine, as compiled code running in a hardware component, as BPF code precompiled into native machine code running on a central processing unit (CPU), or as just-in-time (JIT)-compiled code running on a CPU.

11. The system of claim 7 wherein the execution of an event structure in the at least one of the customized plug-in triggers the execution of a second customized plug-in component.

12. The system of claim 7 wherein the processor includes a central processing unit (CPU), a field-programmable gate array (FPGA), or an application specific integrated circuit (ASIC).

13. The system of claim 7 wherein an element of the at least one of the customized plug-in implements an application programming interface (API) to communicate with a system element that is located external to the multistage processing pipeline platform.

14. A non-transitory computer readable medium having stored thereon executable instructions that when executed by at least one processor of a computer cause the computer to perform steps comprising:

receiving a program code script for customizing a performance of one or more stages of a multistage processing pipeline platform configured for conducting a network operation process, wherein the multistage processing pipeline platform includes one or more predefined hook entry points, the network operation process is a test packet generation process, the multistage processing pipeline platform includes a fixed function block for generating transmission control protocol (TCP) headers for test packets generated by the multistage processing pipeline platform, and the one or more predefined hook entry points are located in the fixed function block that generates the TCP headers;

compiling the program code script to generate a customized plug-in component that is invoked by the one or more predefined hook entry points located in the fixed function block that generates the TCP headers; and

initiating execution of the customized plug-in component in response to a triggering of the customized plug-in component by the one or more predefined hook entry points located in the fixed function block that generates the TCP headers, wherein the execution of the customized plug-in component dynamically configures at least one feature of the network operation process at runtime, wherein the customized plug-in component adds a flag or numerical indicator in the TCP headers of at least some of the test packets generated by the multistage processing pipeline platform and dynamically modifies or extends packet header generation of the fixed function block at runtime.

Assignments (1)
ASSIGNMENT OF ASSIGNOR'S INTEREST Recorded Apr 13, 2022
From: SOMMERS, CHRISTIAN PAUL; BERGERON, MATTHEW R.
To: KEYSIGHT TECHNOLOGIES, INC.
Reel/Frame 059583/0151 →
Continuity (1)
Related Publication 20230221975A1 · Jul 13, 2023
References Cited (46)
US 8726394B2 · Maor · 2014 [cited by applicant]
US 11474823B2 · Sommers · 2022 [cited by applicant]
US 12019505B2 · Singh et al. · 2024 [cited by applicant]
US 12170605B1 · Chifor et al. · 2024 [cited by applicant]
US 20040210665A1 · Fujinami · 2004 [cited by examiner]
US 20080137543A1 · Mitra · 2008 [cited by examiner]
US 20130219222A1 · Xue · 2013 [cited by applicant]
US 20150100831A1 · Nanjundappa · 2015 [cited by applicant]
US 20150331779A1 · Subramaniam · 2015 [cited by applicant]
US 20160309434A1 · Regev · 2016 [cited by applicant]
US 20190253335A1 · Yadav · 2019 [cited by examiner]
US 20190306282A1 · Masputra · 2019 [cited by applicant]
US 20190327315A1 · Grooters · 2019 [cited by applicant]
US 20200213212A1 · Dillon · 2020 [cited by examiner]
US 20200403905A1 · Allen et al. · 2020 [cited by applicant]
US 20210314247A1 · Wright · 2021 [cited by applicant]
US 20220147542A1 · Asgar et al. · 2022 [cited by applicant]
US 20230017350A1 · Chanemougame et al. · 2023 [cited by applicant]
US 20230071504A1 · Wright · 2023 [cited by applicant]
US 20230119536A1 · Cosentino et al. · 2023 [cited by applicant]
US 20230155916A1 · Shen · 2023 [cited by applicant]
US 20240028443A1 · Singh · 2024 [cited by applicant]
WO 2023017350A1 · 2023 [cited by applicant]
Miano et al., “A Framework for eBPF-Based Network Functions in an Era of Microservices”, IEEE Transactions on Network and Service Management, vol. 18, No. 1, Mar. 2021, pp. 133-151 (Year: 2021). [cited by examiner]
EBPF Documentation, www. (list URL) (2023). [cited by applicant]
Pluginized_QUIC_2021_UCLouvain (https://pquic.org). [cited by applicant]
Piraux, M. et al., “QUIC_Plugins” pp. 1-14, Mar. 9, 2020. [cited by applicant]
De Coninck, et al., “The Case for Protocol Plugins,” UCLouvain, Belgium 2023. [cited by applicant]
De Coninck, et al., “Pluginizing QUIC,” In SIGCOMM '19: 2019 Conference of the ACM Special Interest Group on Data Communication, Aug. 19-23, 2019, Beijing, China. pp. 59-74. [cited by applicant]
Hawkeye—Active Network Monitoring Platform, pp. 1-9, Apr. 28, 2023. 7019-0137EN. [cited by applicant]
Hawkeye on the Cisco Catalyst 9300: CLI Instructions for Running a Docker Instance, Sep. 30, 2019, 7119-1134EN. [cited by applicant]
“EBPF Library Ecosystem Overview: Go, Rust, Python, C and Other Languages,” The Libraries, https://github.com/kcq/ebpf-libraries/blob/master/ebpfSummit_2021_-_eBPF_Library_Ecosystem_Overview.md, pp. 1-9 (2021). [cited by applicant]
Mayer et al., “Performance Monitoring with H^2: Hybrid Kernel/eBPF data plane for SRv6 based Hybrid SDN,” Computer Networks, vol. 185, pp. 1-10 (2021). [cited by applicant]
“What is eBPF?,” eBPF, https://ebpf.io, pp. 1-5 (2021). [cited by applicant]
Suo et al., “Demo/Poster Abstract: Efficient and Flexible Packet Tracing for Virtualized Networks using eBPF,” 2018 IEEE Conference on Computer Communications Poster and Demo (INFOCOM'18 Poster/Demo), pp. 1-2 (2018). [cited by applicant]
“BPF, eBPF, XDP and Bpfilter . . . What are These Things and What do They Mean for the Enterprise?,” Netronome, https://www.netronome.com/blog/bpf-ebpf-xdp-and-bpfilter-what-are-these-things-and-what-do-they-mean-enterp… [cited by applicant]
“BPF and XDP Reference Guide,” Cilium, pp. 1-115 (2017). [cited by applicant]
“A thorough introduction to eBPF,” LWN.net, pp. 1-9 (Dec. 2, 2017). [cited by applicant]
“Linux Extended BPF (eBPF) Tracing Tools,” https://www.brendangregg.com/ebpf.html, pp. 1-32 (Dec. 28, 2016). [cited by applicant]
Ahmed et al., “InKeV: In-Kernel Distributed Network Virtualization for DCN,” ACM SIGCOMM Computer Communication Review, vol. 46, Issue 3, pp. 1-6 (Jul. 2016). [cited by applicant]
Commonly-Assigned, co-pending U.S. Appl. No. 18/234,855 for “Methods, Systems, and Computer Readable Media for Injecting Test Plugins Into User-Space Network Protocol Stack Executing on Device Under Test (DUT) and Execu… [cited by applicant]
Hemminger, “NETDEV 2.2 The Technical Conference on Linux Networking”, Nov. 8, 2017 URL: https://www.youtube.com/watch?v=RY6mzwHUKCA. [cited by applicant]
Bigelow, “An introduction to eBPF and where it shines”, Tech Target, pp. 1-4 (2021). https://www.techtarget.com/searchitoperations/tip/Anintroduction- to-eBPF-and-where-it-shines. [cited by applicant]
Search Report for GB Patent Application Serial No. 2300174.6 (Jun. 29, 2023). [cited by applicant]
Non-Final Office Action for U.S. Appl. No. 18/234,855 (Apr. 10, 2024). [cited by applicant]
Notice of Allowance for U.S. Appl. No. 18/234,855 (Aug. 12, 2024). [cited by applicant]