Introduction
This high-performance device driver framework has VLAN support and 802.3ad Link Aggregation support for off-the-shelf device drivers. The following drivers are currently based on Nemo (a.k.a. GLDv3) framework: bge, e1000g, xge, nge, rge, ixgb. Using Nemo drivers on Solaris provides the following benefits:
- Greatly improved performance due to:
- Direct function calls and packet chaining between IP and device driver
- IP controlling the NIC and dynamically blanking interrupts
- Lower CPU utilization
- Use of advanced NIC features such as stateless offloading
- VLAN support
- 802.3ad Link Aggregation support, including LACP
Documents
The Code
Nemo has been part of OpenSolaris since day 1. The source for its main components can be found at the following locations in the OpenSolaris ON source tree:
- usr/src/uts/common/io/mac: MAC layer
- usr/src/uts/common/io/dls: Data-Link Services
- usr/src/uts/common/io/dld: Data-Link Driver (DLPI)
- usr/src/uts/common/io/aggr: Link aggregation
- usr/src/uts/common/io/bge: Driver for NICs based on Broadcom
- usr/src/cmd/dladm: CLI admin tool
- usr/src/lib/libdladm: Data-Link management library
- usr/src/lib/liblaadm: Link aggregations management library
- usr/src/lib/libdlpi: DLPI library
Current and Futures
Here are some of the projects we are actively working on, or planning to tackle in the future.
- Large frames for link aggregations: allows large ethernet frames on link aggregations.
- Nemo Unification: allows legacy DLPI drivers to take advantage of Nemo features
- Nemo MAC-Type plugin architecture: allows Nemo to support different MAC types
- Improved binary compatibility
- Continue to support new offload capabilities
- Hardware classification needed for Crossbow
- Extending dladm(1M) to support WiFi
on 2009/10/26 12:15