Network interface controller explained

Network interface controller
Conn1:Motherboard
Via1 1:integrated in chipset or SoC
Via1 2:discrete onboard
Via1 3:PCI Connector
Via1 4:ISA Connector
Via1 5:PCIe (including Mini PCIe and M.2)
Via1 6:FireWire
Via1 7:USB
Via1 8:Thunderbolt
Conn2:Network
Via2 1:Ethernet
Via2 2:Wi-Fi
Via2 3:Fibre Channel
Via2 4:ATM
Via2 5:FDDI
Via2 6:Token Ring
Via2 7:ARCNET
Class-Name:Speeds
Class1:Full-duplex or half-duplex:
Class3:Full-duplex

[1] [2]

Manuf1:Intel
Manuf2:Realtek
Manuf3:Broadcom (includes former Avago, Emulex)
Manuf4:Marvell Technology Group
Manuf5:Cavium (formerly QLogic)
Manuf6:Mellanox
Manuf7:Chelsio

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

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. 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

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,, are beginning to be available on computer motherboards.[5] [6]

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.[7]

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

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.[8] [9]

The hardware-based distribution of the interrupts, described above, is referred to as receive-side scaling (RSS).[10] Purely software implementations also exist, such as the receive packet steering (RPS), receive flow steering (RFS), and Intel Flow Director.[11] [12] [13] 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).

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.[14] [15]

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.[16]

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.[17] 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.[18] [19] [20]

See also

External links

Notes and References

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