Контроллер сетевого интерфейса ( NIC , также известный как сетевая интерфейсная карта , [3] сетевой адаптер , адаптер локальной сети или физический сетевой интерфейс , [4] и аналогичными терминами) — это аппаратный компонент компьютера , который подключает компьютер к компьютерной сети . [5]
Ранние контроллеры сетевого интерфейса обычно реализовывались на картах расширения , которые подключались к компьютерной шине . Низкая стоимость и повсеместное распространение стандарта Ethernet означает, что большинство новых компьютеров имеют сетевой интерфейс, встроенный в материнскую плату или содержащийся в USB - ключе .
Современные контроллеры сетевых интерфейсов предлагают расширенные функции, такие как интерфейсы прерываний и DMA для хост-процессоров, поддержку нескольких очередей приема и передачи, разделение на несколько логических интерфейсов и обработку сетевого трафика на контроллере, например механизм разгрузки TCP .
Сетевой контроллер реализует электронную схему, необходимую для связи, используя определенный стандарт физического уровня и уровня канала передачи данных, такой как Ethernet или Wi-Fi . [a] Это обеспечивает основу для полного стека сетевых протоколов , обеспечивающего связь между компьютерами в одной локальной сети (LAN) и крупномасштабную сетевую связь через маршрутизируемые протоколы, такие как Интернет-протокол (IP).
Сетевая карта позволяет компьютерам обмениваться данными через компьютерную сеть с помощью кабелей или по беспроводной сети. NIC является одновременно устройством физического уровня и уровня канала передачи данных, поскольку он обеспечивает физический доступ к сетевой среде, а для IEEE 802 и аналогичных сетей обеспечивает систему адресации низкого уровня за счет использования MAC-адресов , которые однозначно назначаются сети. интерфейсы.
Сетевые контроллеры изначально были реализованы как карты расширения, подключаемые к компьютерной шине. Низкая стоимость и повсеместное распространение стандарта Ethernet означает, что большинство новых компьютеров имеют контроллер сетевого интерфейса, встроенный в материнскую плату. Более новые материнские платы для серверов могут иметь несколько встроенных сетевых интерфейсов. Возможности Ethernet либо интегрированы в набор микросхем материнской платы , либо реализованы с помощью недорогого специализированного чипа Ethernet. Отдельная сетевая карта обычно больше не требуется, если не требуются дополнительные независимые сетевые подключения или не используется какой-либо тип сети, отличный от Ethernet. Общая тенденция в компьютерном оборудовании направлена на интеграцию различных компонентов систем на кристалле , и это также относится к сетевым картам.
Сетевой контроллер Ethernet обычно имеет разъем 8P8C , к которому подключается сетевой кабель. Более старые сетевые карты также обеспечивали соединения BNC или AUI . Сетевые контроллеры Ethernet обычно поддерживают варианты Ethernet 10 Мбит/с , Ethernet 100 Мбит/с и Ethernet 1000 Мбит/с . Такие контроллеры обозначаются как 10/100/1000 , что означает, что они могут поддерживать скорость передачи данных 10, 100 или 1000 Мбит/с. Также доступны 10-гигабитные сетевые карты Ethernet, которые с ноября 2014 года [обновлять]начинают появляться на материнских платах компьютеров . [6] [7]
Модульные конструкции, такие как SFP и SFP+ , очень популярны, особенно для оптоволоконной связи . Они определяют стандартный разъем для приемопередатчиков, зависящих от среды передачи, поэтому пользователи могут легко адаптировать сетевой интерфейс к своим потребностям.
Светодиоды, расположенные рядом с сетевым разъемом или встроенные в него, информируют пользователя о том, подключена ли сеть и когда происходит активность передачи данных.
Сетевая плата может включать в себя ПЗУ для хранения назначенного на заводе MAC-адреса . [8]
NIC может использовать один или несколько из следующих методов для указания доступности пакетов для передачи:
Сетевые адаптеры могут использовать один или несколько из следующих методов для передачи пакетных данных:
Сетевые адаптеры с несколькими очередями предоставляют несколько очередей передачи и приема , что позволяет назначать пакеты, полученные сетевым адаптером, в одну из его очередей приема. Сетевая карта может распределять входящий трафик между очередями приема с помощью хэш-функции . Каждая очередь приема назначается отдельному прерыванию ; маршрутизируя каждое из этих прерываний на разные процессоры или ядра процессора , можно распределить обработку запросов на прерывания, вызванных сетевым трафиком, полученным одним сетевым адаптером, что повышает производительность. [10] [11]
Аппаратное распределение прерываний, описанное выше, называется масштабированием на стороне приема (RSS). [12] : 82 Также существуют чисто программные реализации, такие как управление приемом пакетов (RPS), управление потоком приема (RFS), [10] и Intel Flow Director . [12] : 98, 99 [13] [14] [15] Дальнейшего повышения производительности можно достичь путем маршрутизации запросов на прерывания к процессорам или ядрам, выполняющим приложения, которые являются конечными пунктами назначения для сетевых пакетов , генерирующих прерывания. Этот метод улучшает локальность ссылок и приводит к более высокой общей производительности, уменьшению задержек и лучшему использованию оборудования из-за более высокого использования кэшей ЦП и меньшего количества необходимых переключений контекста .
При использовании сетевых адаптеров с несколькими очередями можно добиться дополнительного повышения производительности за счет распределения исходящего трафика между различными очередями передачи. Назначая разные очереди передачи разным ЦП или ядрам ЦП, можно избежать внутренних конфликтов операционной системы. Этот подход обычно называют управлением пакетами передачи (XPS). [10]
Некоторые продукты поддерживают разделение сетевых карт ( NPAR , также известное как разделение портов ), которое использует виртуализацию SR-IOV для разделения одной сетевой карты 10 Gigabit Ethernet на несколько дискретных виртуальных сетевых карт с выделенной полосой пропускания, которые представляются встроенному ПО и операционной системе как отдельное устройство PCI. функции . [3] [16]
Некоторые сетевые адаптеры предоставляют механизм разгрузки TCP для разгрузки обработки всего стека TCP/IP на сетевой контроллер. В основном он используется с высокоскоростными сетевыми интерфейсами, такими как Gigabit Ethernet и 10 Gigabit Ethernet, для которых затраты на обработку сетевого стека становятся значительными. [17]
Некоторые сетевые адаптеры предлагают интегрированные программируемые пользователем вентильные матрицы (FPGA) для программируемой пользователем обработки сетевого трафика до того, как он достигнет главного компьютера, что позволяет значительно сократить задержки в чувствительных ко времени рабочих нагрузках. [18] Более того, некоторые сетевые карты предлагают полные стеки TCP/IP с малой задержкой, работающие на интегрированных FPGA в сочетании с библиотеками пользовательского пространства , которые перехватывают сетевые операции, обычно выполняемые ядром операционной системы ; Примером может служить сетевой стек OpenOnload компании Solarflare с открытым исходным кодом , работающий на Linux . Этот вид функциональности обычно называется сетью на уровне пользователя . [19] [20] [21]