Network card



    Network interface controller
network interface controller (NIC, also known as a network interface card, network adapter, LAN adapter or physical network interface,[1] and by similar terms) is a computer hardware component that connects a computer to a computer network.[2]
Network interface controller
Network card.jpg
A 1990s Ethernet network interface controller 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 8P8Cconnector (right) for use in 10BASE-T networks.
Connects to
Motherboard via one of:
Network via one of:
Speeds10 Mbit/s
100 Mbit/s
1 Gbit/s
10 Gbit/s
up to 160 Gbit/s
Common manufacturersIntel
Realtek
Broadcom (includes former Avago, Emulex)
Marvell Technology Group
Cavium (formerly QLogic)
Mellanox
Chelsio
Early network interface controllers were commonly implemented on expansion cardsthat 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.
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.

Performance and advanced functionalityEdit

An ATM network interface.
Intel 82574L Gigabit Ethernet NIC, a PCI Express ×1 card, which provides two hardware receive queues[5]
Multiqueue NICs provide multiple transmit and receive queues, allowing packets received by the NIC to be assigned to one of its receive queues. Each receive queue is assigned to a separate interrupt; by routing each of those interrupts to different CPUs/cores, processing of the interrupt requests triggered by the network traffic received by a single NIC can be distributed among multiple cores, bringing additional performance improvements in interrupt handling. Usually, a NIC distributes incoming traffic between the receive queues using a hash function, while separate interrupts can be routed to different CPUs/cores either automatically by the operating system, or manually by configuring the IRQ affinity.[6][7]
The hardware-based distribution of the interrupts, described above, is referred to as receive-side scaling (RSS).[8]:82 Purely software implementations also exist, such as the receive packet steering (RPS) and receive flow steering (RFS).[6] Further performance improvements can be achieved by routing the interrupt requests to the CPUs/cores executing the applications which are actually the ultimate destinations for network packetsthat generated the interrupts. That way, taking the application locality into account results in higher overall performance, reduced latency and better hardware utilization, resulting from the higher utilization of CPU caches and fewer required context switches. Examples of such implementations are the RFS[6] and Intel Flow Director.[8]:98,99[9][10][11]
With multiqueue NICs, additional performance improvements can be achieved by distributing outgoing traffic among different transmit queues. By assigning different transmit queues to different CPUs/cores, various operating system's internal contentions can be avoided; this approach is usually referred to as transmit packet steering (XPS).[6]
Some NICs[12] support transmit and receive queues without kernel support allowing the NIC to execute even when the functionality of the operating system of a critical system has been severely compromised. Those NICs support:
  1. Accessing local and remote memory without involving the remote CPU.
  2. Accessing local and remote I/O devices without involving local/remote CPU. This capability is supported by device-to-device communication over the I/O bus, present in switched-based I/O interconnects.
  3. Controlling access to local resources such as control registers and memory.
Some products feature NIC partitioning (NPAR, also known as port partitioning) that uses SR-IOV 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.[13][14] TCP offload engine is a technology used in some NICs 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.[15]
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.[16] Moreover, some NICs offer complete low-latency TCP/IP stacksrunning 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.[17][18][19]

Comments

Popular posts from this blog