<!--
{
  "availability" : [
    "DriverKit: 19.0.0 -"
  ],
  "documentType" : "symbol",
  "framework" : "NetworkingDriverKit",
  "identifier" : "/documentation/NetworkingDriverKit",
  "metadataVersion" : "0.1.0",
  "role" : "Framework",
  "symbol" : {
    "kind" : "Framework",
    "modules" : [
      "NetworkingDriverKit"
    ],
    "preciseIdentifier" : "NetworkingDriverKit"
  },
  "title" : "NetworkingDriverKit"
}
-->

# NetworkingDriverKit

Develop drivers for Ethernet networking devices.

## Overview

Use NetworkingDriverKit to develop drivers for USB Ethernet adapters. This framework extends the API of <doc://com.apple.documentation/documentation/DriverKit>, providing you with a service class for managing your networking driver. It also provides support for managing the memory you use to store packets, transferring those packets between the device and networking stack, and inspecting the Ethernet link status.

Note that Ethernet is the only networking interface currently supported by NetworkingDriverKit.

Develop your driver with DriverKit and NetworkingDriverKit. Use USBDriverKit to manage the connection to your hardware device. Include your driver inside your macOS app and use the <doc://com.apple.documentation/documentation/SystemExtensions> framework to install and upgrade the driver on the user’s Mac.

> Note:
> NetworkingDriverKit is available on macOS.

## Topics

### Essentials

  <doc://com.apple.documentation/documentation/BundleResources/Entitlements/com.apple.developer.driverkit.family.networking>

### Samples

  <doc://com.apple.documentation/documentation/PCIDriverKit/connecting-a-network-driver>

  <doc://com.apple.documentation/documentation/DriverKit/driverkit-sample-code>

### Network Service

[`IOUserNetworkEthernet`](/documentation/NetworkingDriverKit/IOUserNetworkEthernet)

The object you use to manage the setup, configuration, and teardown of your networking driver.

### Packet Management

[`IOUserNetworkPacketBufferPool`](/documentation/NetworkingDriverKit/IOUserNetworkPacketBufferPool)

An object that manages the storage space for packets coming into and out of your driver.

[`IOUserNetworkPacket`](/documentation/NetworkingDriverKit/IOUserNetworkPacket)

A network packet containing the data for your driver to process.

[`IOUserNetworkPacketDirection`](/documentation/NetworkingDriverKit/IOUserNetworkPacketDirection)

The direction in which the packet moves, relative to the device.

### Packet Queues

[`IOUserNetworkRxSubmissionQueue`](/documentation/NetworkingDriverKit/IOUserNetworkRxSubmissionQueue)

The queue that receives packets from the device.

[`IOUserNetworkRxCompletionQueue`](/documentation/NetworkingDriverKit/IOUserNetworkRxCompletionQueue)

The queue you use to store packets that you successfully transferred to the networking stack.

[`IOUserNetworkTxSubmissionQueue`](/documentation/NetworkingDriverKit/IOUserNetworkTxSubmissionQueue)

The queue that receives packets from the networking stack.

[`IOUserNetworkTxCompletionQueue`](/documentation/NetworkingDriverKit/IOUserNetworkTxCompletionQueue)

The queue you use to store packets that you successfully transferred to the device.

[`IOUserNetworkPacketQueue`](/documentation/NetworkingDriverKit/IOUserNetworkPacketQueue)

The base class for the queues that manage the packets moving to and from your device.

### Reference

[NetworkingDriverKit Structures](/documentation/NetworkingDriverKit/networkingdriverkit-structures)

[NetworkingDriverKit Data Types](/documentation/NetworkingDriverKit/networkingdriverkit-data-types)

[NetworkingDriverKit Constants](/documentation/NetworkingDriverKit/networkingdriverkit-constants)



---

Copyright &copy; 2026 Apple Inc. All rights reserved. | [Terms of Use](https://www.apple.com/legal/internet-services/terms/site.html) | [Privacy Policy](https://www.apple.com/privacy/privacy-policy)