Extensible Virtual Switch Datapath Using eBPF Fast Path
Find Innovative SolutionsGenerate Solutions
Solution Overview
Problem
In virtualized computing systems, implementing new features in the fast path of a virtual switch requires complex platform-specific coding due to differences across operating systems, limiting flexibility and extensibility.
Innovation Solution
The use of extended Berkeley Packet Filter (eBPF) programs and maps, which are loaded into the kernel space, allows for a generic packet filtering subsystem that can execute actions on data packets by mapping a key to a fixed-length array indicating action types, enabling platform-independent configuration of the virtual switch.
Engineering Contradictions & Design Principles
Engineering Contradiction Analysis
1Adaptability or versatility
If new features are added to the fast path of a virtual switch, then the functionality and capabilities of the virtual switch are improved, but the complexity of platform-specific coding increases and development becomes more difficult
Solution Approach 1:
The patent introduces an intermediary layer (the extensible fast path architecture with action programs and flow entries) that mediates between the core virtual switch functionality and platform-specific implementations. This intermediary allows features to be added through standardized flow entries and action programs rather than requiring direct platform-specific coding, thus improving functionality while managing complexity.
Solution Approach 2:
The patent segments the fast path functionality into modular components: flow entries, action programs, and action types. This segmentation allows each component to be developed and maintained independently, reducing the overall coding complexity while enabling flexible addition of new features through combination of these modular elements.
2Adaptability or versatility
If new features are added to the fast path of a virtual switch, then the capabilities of the virtual switch are improved, but the development cycle becomes more complex and requires detailed platform-specific knowledge
Solution Approach 1:
The patent creates a universal action program interface that can be used across different operating systems and platforms. The standardized action types and flow entry structures allow the same feature implementation to work universally across different platforms, eliminating the need for detailed platform-specific knowledge and simplifying the development process.
Solution Approach 2:
The patent uses template-based flow entries and action programs that can be copied and reused across different platforms and features. Instead of writing platform-specific code from scratch, developers can copy existing flow entry templates and action programs, adapting them minimally to new requirements, thus reducing development complexity.
3Adaptability or versatility
If a generic packet filtering subsystem is implemented using eBPF, then platform independence is improved, but the system requires loading programs and maps into kernel space which adds operational complexity
Solution Approach 1:
The patent performs preliminary actions by pre-compiling and validating eBPF programs and maps before loading them into the kernel space. The control plane prepares the fast path configuration in advance, ensuring that all programs are syntactically correct and semantically valid before deployment, thus simplifying runtime operations and reducing operational complexity.
Solution Approach 2:
The patent implements self-service mechanisms where the eBPF programs automatically manage their own execution context and resources within the kernel space. The programs are self-contained and self-validating, reducing the need for external management and simplifying operational procedures despite the added capability of kernel space loading.
Data Source
AI summary
Certain embodiments described herein are generally directed to configuring an extended Berkeley Packet Filter (eBPF) fast path. In some embodiments, a fixed-length array of actions is generated and loaded into the eBPF fast path, where each element of the array indicates a type of action for execution on a packet received by the eBPF fast path. In some embodiments, the eBPF fast path is loaded with a number of eBPF programs, each configured to execute a different type of action.


