NVMeoF Kernel-User Space Command Pass-Through

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

Current NVMeoF Front-End connectivity solutions lack efficiency and modularity, with existing solutions requiring significant development for command pass-through to userspace block devices, limited performance optimization, and inadequate reliability and maintainability.

Innovation Solution

A software-stack based solution that directs incoming NVMe commands to a kernel driver, which enqueues them until fetched by a user space, allowing efficient pass-through to a user space block device, with a modular backend and optimized performance across various transports, including RDMA and TCP.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Productivity

If a traditional NVMeoF Front-End connectivity solution is implemented, then basic connectivity is achieved, but efficiency and performance are insufficient

Engineering Contradiction:
Improvecommand processing efficiencyVSAvoidsystem reliability
Core Design Contradiction:
ProductivityVSReliability

Solution Approach 1:

The system is segmented into distinct kernel-space and user-space components. The kernel driver handles command reception and enqueueing, while the user-space datapath process handles command processing and block device operations. This segmentation allows each component to be optimized independently, improving overall efficiency while maintaining system stability through isolation.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

A shared memory queue mechanism acts as an intermediary between the kernel driver and user-space datapath process. Commands are passed through this intermediate structure, enabling efficient communication and data transfer between kernel and user space without requiring complex inter-process communication protocols, thus improving efficiency while maintaining reliability.

Inventive Principle:
Principle #24Intermediary (Mediator)

2Productivity

If command pass-through to user-space block devices is implemented, then efficiency is improved, but development complexity increases

Engineering Contradiction:
Improvecommand pass-through efficiencyVSAvoiddevelopment complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The complex block device operations and command processing logic are extracted from the kernel space and placed in user space. This extraction simplifies the kernel driver to primarily handle command reception and enqueueing, while the user-space process handles the complex processing logic, making development and maintenance easier despite the efficiency gains from pass-through.

Inventive Principle:
Principle #2Taking out (Extraction)

Solution Approach 2:

The user-space datapath process is designed to handle multiple functions including command processing, block device operations, and completion handling within a single modular framework. This universal design reduces overall system complexity by consolidating multiple functions into one component rather than requiring separate kernel modules for each function.

Inventive Principle:
Principle #6Universality (Multi-functionality)

3Productivity

If performance optimization is implemented across various transports, then productivity improves, but system complexity increases

Engineering Contradiction:
Improvetransport performanceVSAvoidsystem complexity
Core Design Contradiction:
ProductivityVSDevice complexity

Solution Approach 1:

The system dynamically adapts to different transport types (RDMA, TCP, etc.) by using a unified user-space datapath process that can handle multiple transport protocols. The transport-specific optimizations are implemented as configurable options within the same process, allowing performance optimization for each transport without requiring separate complex kernel drivers for each protocol.

Inventive Principle:
Principle #15Dynamics

4Ease of repair

If a modular backend is implemented, then maintainability improves, but device complexity increases

Engineering Contradiction:
ImprovemaintainabilityVSAvoidsystem complexity
Core Design Contradiction:
Ease of repairVSDevice complexity

Solution Approach 1:

The backend is segmented into modular components within the user-space datapath process, including separate handling for different block devices, namespaces, and operations. This modular architecture improves maintainability by allowing individual components to be developed, tested, and updated independently, while the overall system complexity is managed through a unified process boundary.

Inventive Principle:
Principle #1Segmentation

Data Source

PatentUS11748181B2System and method for efficient scalable software-defined NVMEoF front-end connectivity
Publication Date: 2023.09.05 EMC IP HLDG CO LLC
  • US11748181B2 patent drawing
  • US11748181B2 patent drawing
  • US11748181B2 patent drawing

AI summary

A method, computer program product, and computer system for directing, by a computing device, an incoming Non-Volatile Memory express (NVMe) command to a kernel driver. The kernel driver may enqueue the incoming NVMe command until fetched by a user space. The NVMe command may be fetched from the kernel driver for processing. The NVMe command may be pushed to a user space block device of the user space.