Network interface controller

Last updated
Network interface controller
Network card.jpg
A 1990s Ethernet network interface card that connects to the motherboard via the now-obsolete ISA bus. This combination card features both a BNC connector (left) for use in (now obsolete) 10BASE2 networks and an 8P8C connector (right) for use in 10BASE-T networks.
Connects to Motherboard  via one of:

Network via one of:

Speeds Full-duplex or half-duplex:
  • 10 Mbit/s
  • 100 Mbit/s
  • 1 Gbit/s

Full-duplex: [1] [2]
  • 2.5 Gbit/s
  • 5 Gbit/s
  • 10 Gbit/s
  • up to 160 Gbit/s
Common manufacturers Intel
Realtek
Broadcom (includes former Avago, Emulex)
Marvell Technology Group
Cavium (formerly QLogic)
Mellanox
Chelsio

A network interface controller (NIC, also known as a network interface card, [3] network adapter, LAN adapter or physical network interface, [4] and by similar terms) is a computer hardware component that connects a computer to a computer network. [5]

Contents

Early network interface controllers were commonly implemented on expansion cards that plugged into a computer bus. The low cost and ubiquity of the Ethernet standard means that most newer computers have a network interface built into the motherboard, or is contained into a USB-connected dongle.

Modern network interface controllers offer advanced features such as interrupt and DMA interfaces to the host processors, support for multiple receive and transmit queues, partitioning into multiple logical interfaces, and on-controller network traffic processing such as the TCP offload engine.

Purpose

The network controller implements the electronic circuitry required to communicate using a specific physical layer and data link layer standard such as Ethernet or Wi-Fi. [lower-alpha 1] This provides a base for a full network protocol stack, allowing communication among computers on the same local area network (LAN) and large-scale network communications through routable protocols, such as Internet Protocol (IP).

The NIC allows computers to communicate over a computer network, either by using cables or wirelessly. The NIC is both a physical layer and data link layer device, as it provides physical access to a networking medium and, for IEEE 802 and similar networks, provides a low-level addressing system through the use of MAC addresses that are uniquely assigned to network interfaces.

Implementation

12 early ISA 8 bit and 16 bit PC network cards. The lower right-most card is an early wireless network card, and the central card with partial beige plastic cover is a PSTN modem. 12 early PC network cards.jpg
12 early ISA 8 bit and 16 bit PC network cards. The lower right-most card is an early wireless network card, and the central card with partial beige plastic cover is a PSTN modem.

Network controllers were originally implemented as expansion cards that plugged into a computer bus. The low cost and ubiquity of the Ethernet standard means that most new computers have a network interface controller built into the motherboard. Newer server motherboards may have multiple network interfaces built-in. The Ethernet capabilities are either integrated into the motherboard chipset or implemented via a low-cost dedicated Ethernet chip. A separate network card is typically no longer required unless additional independent network connections are needed or some non-Ethernet type of network is used. A general trend in computer hardware is towards integrating the various components of systems on a chip, and this is also applied to network interface cards.

An Ethernet network controller typically has an 8P8C socket where the network cable is connected. Older NICs also supplied BNC, or AUI connections. Ethernet network controllers typically support 10  Mbit/s Ethernet, 100 Mbit/s Ethernet, and 1000 Mbit/s Ethernet varieties. Such controllers are designated as 10/100/1000 , meaning that they can support data rates of 10, 100 or 1000 Mbit/s. 10 Gigabit Ethernet NICs are also available, and, as of November 2014, are beginning to be available on computer motherboards. [6] [7]

A Qlogic QLE3442-CU SFP+ dual-port NIC Qle3442-cu 10gbe nic.jpg
A Qlogic QLE3442-CU SFP+ dual-port NIC

Modular designs like SFP and SFP+ are highly popular, especially for fiber-optic communication. These define a standard receptacle for media-dependent transceivers, so users can easily adapt the network interface to their needs.

LEDs adjacent to or integrated into the network connector inform the user of whether the network is connected, and when data activity occurs.

The NIC may include ROM to store its factory-assigned MAC address. [8]

The NIC may use one or more of the following techniques to indicate the availability of packets to transfer:

NICs may use one or more of the following techniques to transfer packet data:

Performance and advanced functionality

An Asynchronous Transfer Mode (ATM) network interface ForeRunnerLE 25 ATM Network Interface (1).jpg
An Asynchronous Transfer Mode (ATM) network interface
Intel 82574L Gigabit Ethernet NIC, a PCI Express x1 card, which provides two hardware receive queues An Intel 82574L Gigabit Ethernet NIC, PCI Express x1 card.jpg
Intel 82574L Gigabit Ethernet NIC, a PCI Express ×1 card, which provides two hardware receive queues

Multiqueue NICs provide multiple transmit and receive queues, allowing packets received by the NIC to be assigned to one of its receive queues. The NIC may distribute incoming traffic between the receive queues using a hash function. Each receive queue is assigned to a separate interrupt; by routing each of those interrupts to different CPUs or CPU cores, processing of the interrupt requests triggered by the network traffic received by a single NIC can be distributed improving performance. [10] [11]

The hardware-based distribution of the interrupts, described above, is referred to as receive-side scaling (RSS). [12] :82 Purely software implementations also exist, such as the receive packet steering (RPS), receive flow steering (RFS), [10] and Intel Flow Director. [12] :98,99 [13] [14] [15] Further performance improvements can be achieved by routing the interrupt requests to the CPUs or cores executing the applications that are the ultimate destinations for network packets that generated the interrupts. This technique improves locality of reference and results in higher overall performance, reduced latency and better hardware utilization because of the higher utilization of CPU caches and fewer required context switches.

With multi-queue NICs, additional performance improvements can be achieved by distributing outgoing traffic among different transmit queues. By assigning different transmit queues to different CPUs or CPU cores, internal operating system contentions can be avoided. This approach is usually referred to as transmit packet steering (XPS). [10]

Some products feature NIC partitioning (NPAR, also known as port partitioning) that uses SR-IOV virtualization to divide a single 10 Gigabit Ethernet NIC into multiple discrete virtual NICs with dedicated bandwidth, which are presented to the firmware and operating system as separate PCI device functions. [3] [16]

Some NICs provide a TCP offload engine to offload processing of the entire TCP/IP stack to the network controller. It is primarily used with high-speed network interfaces, such as Gigabit Ethernet and 10 Gigabit Ethernet, for which the processing overhead of the network stack becomes significant. [17]

Some NICs offer integrated field-programmable gate arrays (FPGAs) for user-programmable processing of network traffic before it reaches the host computer, allowing for significantly reduced latencies in time-sensitive workloads. [18] Moreover, some NICs offer complete low-latency TCP/IP stacks running on integrated FPGAs in combination with userspace libraries that intercept networking operations usually performed by the operating system kernel; Solarflare's open-source OpenOnload network stack that runs on Linux is an example. This kind of functionality is usually referred to as user-level networking. [19] [20] [21]

See also

Notes

  1. Although other network technologies exist, Ethernet (IEEE 802.3) and Wi-Fi (IEEE 802.11) have achieved near-ubiquity as LAN technologies since the mid-1990s.

Related Research Articles

<span class="mw-page-title-main">Ethernet</span> Computer networking technology

Ethernet is a family of wired computer networking technologies commonly used in local area networks (LAN), metropolitan area networks (MAN) and wide area networks (WAN). It was commercially introduced in 1980 and first standardized in 1983 as IEEE 802.3. Ethernet has since been refined to support higher bit rates, a greater number of nodes, and longer link distances, but retains much backward compatibility. Over time, Ethernet has largely replaced competing wired LAN technologies such as Token Ring, FDDI and ARCNET.

<span class="mw-page-title-main">Wake-on-LAN</span> Mechanism to wake up computers via a network

Wake-on-LAN is an Ethernet or Token Ring computer networking standard that allows a computer to be turned on or awakened from sleep mode by a network message.

Direct memory access (DMA) is a feature of computer systems that allows certain hardware subsystems to access main system memory independently of the central processing unit (CPU).

Internet Small Computer Systems Interface or iSCSI is an Internet Protocol-based storage networking standard for linking data storage facilities. iSCSI provides block-level access to storage devices by carrying SCSI commands over a TCP/IP network. iSCSI facilitates data transfers over intranets and to manage storage over long distances. It can be used to transmit data over local area networks (LANs), wide area networks (WANs), or the Internet and can enable location-independent data storage and retrieval.

<span class="mw-page-title-main">InfiniBand</span> Network standard

InfiniBand (IB) is a computer networking communications standard used in high-performance computing that features very high throughput and very low latency. It is used for data interconnect both among and within computers. InfiniBand is also used as either a direct or switched interconnect between servers and storage systems, as well as an interconnect between storage systems. It is designed to be scalable and uses a switched fabric network topology. Between 2014 and June 2016, it was the most commonly used interconnect in the TOP500 list of supercomputers.

In computer networking, promiscuous mode is a mode for a wired network interface controller (NIC) or wireless network interface controller (WNIC) that causes the controller to pass all traffic it receives to the central processing unit (CPU) rather than passing only the frames that the controller is specifically programmed to receive. This mode is normally used for packet sniffing that takes place on a router or on a computer connected to a wired network or one being part of a wireless LAN. Interfaces are placed into promiscuous mode by software bridges often used with hardware virtualization.

TCP offload engine (TOE) is a technology used in some network interface cards (NIC) to offload processing of the entire TCP/IP stack to the network controller. It is primarily used with high-speed network interfaces, such as gigabit Ethernet and 10 Gigabit Ethernet, where processing overhead of the network stack becomes significant. TOEs are often used as a way to reduce the overhead associated with Internet Protocol (IP) storage protocols such as iSCSI and Network File System (NFS).

<span class="mw-page-title-main">Network processor</span>

A network processor is an integrated circuit which has a feature set specifically targeted at the networking application domain.

<span class="mw-page-title-main">QEMU</span> Free virtualization and emulation software

QEMU is a free and open-source emulator. It emulates a computer's processor through dynamic binary translation and provides a set of different hardware and device models for the machine, enabling it to run a variety of guest operating systems. It can interoperate with Kernel-based Virtual Machine (KVM) to run virtual machines at near-native speed. QEMU can also do emulation for user-level processes, allowing applications compiled for one architecture to run on another.

<span class="mw-page-title-main">Wireless network interface controller</span> Hardware component that connects a computer to a wireless computer network

A wireless network interface controller (WNIC) is a network interface controller which connects to a wireless network, such as Wi-Fi, Bluetooth, or LTE (4G) or 5G rather than a wired network, such as an Ethernet network. A WNIC, just like other NICs, works on the layers 1 and 2 of the OSI model and uses an antenna to communicate via radio waves.

<span class="mw-page-title-main">Link aggregation</span> Using multiple network connections in parallel to increase capacity and reliability

In computer networking, link aggregation is the combining of multiple network connections in parallel by any of several methods. Link aggregation increases total throughput beyond what a single connection could sustain, and provides redundancy where all but one of the physical links may fail without losing connectivity. A link aggregation group (LAG) is the combined collection of physical ports.

In computer networking, jumbo frames are Ethernet frames with more than 1500 bytes of payload, the limit set by the IEEE 802.3 standard. The payload limit for jumbo frames is variable: while 9000 bytes is the most commonly used limit, smaller and larger limits exist. Many Gigabit Ethernet switches and Gigabit Ethernet network interface controllers and some Fast Ethernet switches and Fast Ethernet network interface cards can support jumbo frames.

iWARP is a computer networking protocol that implements remote direct memory access (RDMA) for efficient data transfer over Internet Protocol networks. Contrary to some accounts, iWARP is not an acronym.

In computing, Microsoft's Windows Vista and Windows Server 2008 introduced in 2007/2008 a new networking stack named Next Generation TCP/IP stack, to improve on the previous stack in several ways. The stack includes native implementation of IPv6, as well as a complete overhaul of IPv4. The new TCP/IP stack uses a new method to store configuration settings that enables more dynamic control and does not require a computer restart after a change in settings. The new stack, implemented as a dual-stack model, depends on a strong host-model and features an infrastructure to enable more modular components that one can dynamically insert and remove.

The Killer NIC, from Killer Gaming, is designed to circumvent the Microsoft Windows TCP/IP stack, and handle processing on the card via a dedicated network processor. Most standard network cards are host based, and make use of the primary CPU. The manufacturer claims that the Killer NIC is capable of reducing network latency and lag. The card was first introduced in 2006.

ethtool is the primary means in Linux kernel-based operating systems for displaying and modifying the parameters of network interface controllers (NICs) and their associated device driver software from application programs running in userspace.

<span class="mw-page-title-main">Dell M1000e</span> Server computer

The Dell blade server products are built around their M1000e enclosure that can hold their server blades, an embedded EqualLogic iSCSI storage area network and I/O modules including Ethernet, Fibre Channel and InfiniBand switches.

<span class="mw-page-title-main">Converged network adapter</span> Computer input/output device

A converged network adapter (CNA), also called a converged network interface controller (C-NIC), is a computer input/output device that combines the functionality of a host bus adapter (HBA) with a network interface controller (NIC). In other words, it "converges" access to, respectively, a storage area network and a general-purpose computer network.

The Data Plane Development Kit (DPDK) is an open source software project managed by the Linux Foundation. It provides a set of data plane libraries and network interface controller polling-mode drivers for offloading TCP packet processing from the operating system kernel to processes running in user space. This offloading achieves higher computing efficiency and higher packet throughput than is possible using the interrupt-driven processing provided in the kernel.

XDP is an eBPF-based high-performance data path used to send and receive network packets at high rates by bypassing most of the operating system networking stack. It is merged in the Linux kernel since version 4.8. This implementation is licensed under GPL. Large technology firms including Amazon, Google and Intel support its development. Microsoft released their free and open source implementation XDP for Windows in May 2022. It is licensed under MIT License.

References

  1. "Port speed and duplex mode configuration". docs.ruckuswireless.com. Retrieved 2020-09-25.
  2. Admin, Arista (2020-04-23). "Section 11.2: Ethernet Standards - Arista". Arista Networks. Retrieved 2020-09-28.
  3. 1 2 "Enhancing Scalability Through Network Interface Card Partitioning" (PDF). Dell. April 2011. Retrieved May 12, 2014.
  4. "Physical Network Interface". Microsoft. January 7, 2009.
  5. Posey, Brien M. (2006). "Networking Basics: Part 1 - Networking Hardware". Windowsnetworking.com. TechGenix Ltd. Retrieved 2012-06-09.
  6. Jim O'Reilly (2014-01-22). "Will 2014 Be The Year Of 10 Gigabit Ethernet?". Network Computing. Retrieved 2015-04-29.
  7. "Breaking Speed Limits with ASRock X99 WS-E/10G and Intel 10G BASE-T LANs". asrock.com. 24 November 2014. Retrieved 19 May 2015.
  8. John Savill (Nov 12, 2000). "How can I change a network adapter card's MAC address?" . Retrieved 2023-11-06.
  9. "Intel 82574 Gigabit Ethernet Controller Family Datasheet" (PDF). Intel. June 2014. p. 1. Retrieved November 16, 2014.
  10. 1 2 3 Tom Herbert; Willem de Bruijn (May 9, 2014). "Linux kernel documentation: Documentation/networking/scaling.txt". kernel.org . Retrieved November 16, 2014.
  11. "Intel Ethernet Controller i210 Family Product Brief" (PDF). Intel. 2012. Retrieved November 16, 2014.
  12. 1 2 "Intel Look Inside: Intel Ethernet" (PDF). Xeon E5 v3 (Grantley) Launch. Intel. November 27, 2014. Archived from the original (PDF) on March 26, 2015. Retrieved March 26, 2015.
  13. "Linux kernel documentation: Documentation/networking/ixgbe.txt". kernel.org. December 15, 2014. Retrieved March 26, 2015.
  14. "Intel Ethernet Flow Director". Intel. February 16, 2015. Retrieved March 26, 2015.
  15. "Introduction to Intel Ethernet Flow Director and Memcached Performance" (PDF). Intel. October 14, 2014. Retrieved October 11, 2015.
  16. Patrick Kutch; Brian Johnson; Greg Rose (September 2011). "An Introduction to Intel Flexible Port Partitioning Using SR-IOV Technology" (PDF). Intel . Retrieved September 24, 2015.
  17. Jonathan Corbet (August 1, 2007). "Large receive offload". LWN.net . Retrieved May 2, 2015.
  18. "High Performance Solutions for Cyber Security". New Wave Design & Verification. New Wave DV.
  19. Timothy Prickett Morgan (2012-02-08). "Solarflare turns network adapters into servers: When a CPU just isn't fast enough". The Register . Retrieved 2014-05-08.
  20. "OpenOnload". openonload.org. 2013-12-03. Retrieved 2014-05-08.
  21. Steve Pope; David Riddoch (2008-03-21). "OpenOnload: A user-level network stack" (PDF). openonload.org. Retrieved 2014-05-08.