네트워크 인터페이스 컨트롤러
| 연결 대상 | 메인보드 다음 중 하나를 통해:
네트워크 다음 중 하나를 통해: |
|---|---|
| 속도 | 10 Mbit/s 100 Mbit/s 1 Gbit/s 10 Gbit/s 최대 160 Gbit/s |
| 일반 제조업체 | 인텔 리얼텍 브로드컴 (과거 Avago, Emulex 포함) 마벨 테크놀로지 그룹 Cavium (과거 QLogic) Mellanox Chelsio |
네트워크 인터페이스 컨트롤러(network interface controller, NIC), 네트워크 인터페이스 카드(network interface card),[1] 네트워크 어댑터(network adapter), LAN 어댑터(LAN adapter) 또는 물리 네트워크 인터페이스(physical network interface)[2]는 컴퓨터를 컴퓨터 망에 연결하는 컴퓨터 하드웨어 부품이다.[3]
초기 네트워크 인터페이스 컨트롤러는 일반적으로 시스템 버스에 꽂는 확장 카드 형태로 구현되었다. 이더넷 표준의 저렴한 비용과 보편성 덕분에, 비록 별도의 네트워크 카드가 여전히 판매되고는 있지만, 대부분의 최신 컴퓨터는 메인보드에 네트워크 인터페이스 컨트롤러가 내장되어 있거나 USB로 연결된 동글에 포함되어 있다.
현대적인 네트워크 인터페이스 컨트롤러는 호스트 프로세서에 대한 인터럽트 및 DMA 인터페이스, 다중 수신 및 송신 큐 지원, 여러 개의 논리적 인터페이스로의 분할, TCP 오프로드 엔진과 같은 컨트롤러 자체 내의 네트워크 트래픽 처리와 같은 고급 기능을 제공한다.
목적
[편집]네트워크 컨트롤러는 이더넷이나 와이파이와 같은 특정 물리 계층 및 데이터 링크 계층 표준을 사용하여 통신하는 데 필요한 전자 회로를 구현한다.[a] 이는 완전한 네트워크 프로토콜 스택의 기반을 제공하여, 동일한 근거리 통신망(LAN)에 있는 컴퓨터 간의 통신과 인터넷 프로토콜(IP)과 같은 라우팅 가능 프로토콜을 통한 대규모 네트워크 통신을 가능하게 한다.
NIC를 통해 컴퓨터는 케이블을 사용하거나 무선으로 컴퓨터 네트워크 상에서 통신할 수 있다. NIC는 네트워킹 매체에 대한 물리적 접근을 제공하고, IEEE 802 및 유사한 네트워크의 경우 네트워크 인터페이스에 고유하게 할당된 MAC 주소를 사용하는 저수준 주소 지정 시스템을 제공하므로 물리 계층과 데이터 링크 계층 장치에 모두 해당한다.
구현
[편집]

네트워크 컨트롤러는 원래 컴퓨터 버스에 꽂는 확장 카드 형태로 구현되었다. 이더넷 표준의 저렴한 가격과 보편성 덕분에 대부분의 새 컴퓨터는 메인보드에 네트워크 인터페이스 컨트롤러가 내장되어 있으며, 이러한 방식을 LOM(LAN on motherboard)이라고 한다. 최신 서버 메인보드에는 여러 개의 네트워크 인터페이스가 내장되어 있을 수 있다. 이더넷 기능은 메인보드 칩셋에 통합되거나 저가형 전용 이더넷 칩을 통해 구현된다. 추가적인 독립적 네트워크 연결이 필요하거나 이더넷이 아닌 다른 유형의 네트워크를 사용하지 않는 한 일반적으로 별도의 네트워크 카드는 더 이상 필요하지 않다. 컴퓨터 하드웨어의 일반적인 추세는 시스템의 다양한 구성 요소를 단일 칩에 통합하는 방향이며, 이는 네트워크 인터페이스 카드에도 적용되고 있다.
이더넷 네트워크 컨트롤러에는 일반적으로 네트워크 케이블이 연결되는 8P8C 소켓이 있다. 오래된 NIC는 BNC 단자나 AUI 연결도 지원했다. 이더넷 네트워크 컨트롤러는 일반적으로 10 Mbit/s 이더넷, 100 Mbit/s 이더넷, 1000 Mbit/s 이더넷 변형을 지원한다. 이러한 컨트롤러는 10/100/1000으로 표시되며, 이는 10, 100 또는 1000 Mbit/s의 데이터 속도를 지원할 수 있음을 의미한다. 10기가비트 이더넷 NIC도 사용 가능하며, 2014년 11월 기준[update] 기준으로 메인보드에 탑재되기 시작했다.[4][5]

SFP 및 SFP+와 같은 모듈형 설계는 특히 광섬유 통신에서 매우 인기가 높다. 이는 매체 종속 트랜시버를 위한 표준 소켓을 정의하므로, 사용자가 자신의 필요에 맞게 네트워크 인터페이스를 쉽게 조정할 수 있다.
네트워크 커넥터 옆이나 내부에 통합된 LED는 네트워크 연결 여부와 데이터 활동 발생 시점을 사용자에게 알려준다.
NIC에는 공장에서 할당된 MAC 주소를 저장하기 위한 ROM이 포함될 수 있다.[6]
NIC는 전송할 패킷의 가용성을 나타내기 위해 다음 기술 중 하나 이상을 사용할 수 있다.
NIC는 패킷 데이터를 전송하기 위해 다음 기술 중 하나 이상을 사용할 수 있다.
성능 및 고급 기능
[편집]

멀티큐 NIC는 다중 송신 및 수신 큐를 제공하여 NIC가 수신한 패킷을 수신 큐 중 하나에 할당할 수 있도록 한다. NIC는 해시 함수를 사용하여 수신 큐 간에 들어오는 트래픽을 분산시킬 수 있다. 각 수신 큐는 별도의 인터럽트에 할당되며, 이러한 인터럽트 각각을 서로 다른 CPU 또는 CPU 코어로 라우팅함으로써 단일 NIC에서 수신한 네트워크 트래픽으로 인해 발생하는 인터럽트 요청 처리를 분산시켜 성능을 향상시킬 수 있다.[8][9]
위에서 설명한 하드웨어 기반의 인터럽트 분산은 수신 측 스케일링(receive-side scaling, RSS)이라고 한다.[10]: 82 수신 패킷 스티어링(receive packet steering, RPS), 수신 플로우 스티어링(receive flow steering, RFS)[8] 및 인텔 플로우 디렉터(Flow Director)와 같은 순수 소프트웨어 구현도 존재한다.[10]: 98, 99 [11][12][13] 인터럽트를 발생시킨 네트워크 패킷의 최종 목적지인 애플리케이션을 실행하는 CPU 또는 코어로 인터럽트 요청을 라우팅함으로써 더 높은 성능 향상을 얻을 수 있다. 이 기술은 참조 국부성을 개선하고 CPU 캐시 활용도를 높이며 필요한 문맥 교환 횟수를 줄여 전반적인 성능 향상, 레이턴시 감소 및 하드웨어 활용도 개선을 가져온다.
멀티큐 NIC를 사용하면 나가는 트래픽을 서로 다른 송신 큐에 분산시킴으로써 추가적인 성능 향상을 얻을 수 있다. 서로 다른 송신 큐를 서로 다른 CPU 또는 CPU 코어에 할당함으로써 운영 체제 내부의 경합을 피할 수 있다. 이 접근 방식은 보통 송신 패킷 스티어링(transmit packet steering, XPS)이라고 한다.[8]
일부 제품은 SR-IOV 가상화를 사용하여 단일 10기가비트 이더넷 NIC를 전용 대역폭을 가진 여러 개의 개별 가상 NIC로 나누는 NIC 파티셔닝(NPAR, 포트 파티셔닝이라고도 함) 기능을 제공하며, 이는 펌웨어와 운영 체제에 별도의 PCI 장치 기능으로 표시된다.[1][14]
일부 NIC는 전체 TCP/IP 스택 처리를 네트워크 컨트롤러로 오프로드하기 위해 TCP 오프로드 엔진을 제공한다. 이는 주로 네트워크 스택의 처리 오버헤드가 상당해지는 기가비트 이더넷 및 10기가비트 이더넷과 같은 고속 네트워크 인터페이스에서 사용된다.[15]
일부 NIC는 호스트 컴퓨터에 도달하기 전에 사용자가 프로그래밍 가능한 네트워크 트래픽 처리를 위해 통합 FPGA(field-programmable gate arrays)를 제공하여 시간에 민감한 작업 부하에서 레이턴시를 크게 줄일 수 있도록 한다.[16] 또한, 일부 NIC는 통합 FPGA에서 실행되는 완전한 저지연 TCP/IP 스택과 보통 운영 체제 커널이 수행하는 네트워킹 작업을 가로채는 사용자 공간 라이브러리를 결합하여 제공한다. 리눅스에서 실행되는 솔라플레어(Solarflare)의 오픈 소스 OpenOnload 네트워크 스택이 그 예이다. 이러한 종류의 기능은 보통 사용자 수준 네트워킹(user-level networking)이라고 한다.[17][18][19]
각주
[편집]- 1 2 “Enhancing Scalability Through Network Interface Card Partitioning” (PDF). Dell. April 2011. 2014년 5월 12일에 확인함.
- ↑ “Physical Network Interface”. Microsoft. 2009년 1월 7일.
- ↑ Posey, Brien M. (2006). “Networking Basics: Part 1 - Networking Hardware”. 《Windowsnetworking.com》. TechGenix Ltd. 2012년 6월 9일에 확인함.
- ↑ Jim O'Reilly (2014년 1월 22일). “Will 2014 Be The Year Of 10 Gigabit Ethernet?”. Network Computing. 2015년 5월 10일에 원본 문서에서 보존된 문서. 2015년 4월 29일에 확인함.
- ↑ “Breaking Speed Limits with ASRock X99 WS-E/10G and Intel 10G BASE-T LANs”. 《asrock.com》. 2014년 11월 24일. 2015년 5월 19일에 확인함.
- ↑ John Savill (2000년 11월 12일). “How can I change a network adapter card's MAC address?”. 2023년 11월 6일에 확인함.
- ↑ “Intel 82574 Gigabit Ethernet Controller Family Datasheet” (PDF). Intel. June 2014. 1쪽. 2014년 11월 16일에 확인함.
- 1 2 3 Tom Herbert; Willem de Bruijn (2014년 5월 9일). “Linux kernel documentation: Documentation/networking/scaling.txt”. kernel.org. 2014년 11월 16일에 확인함.
- ↑ “Intel Ethernet Controller i210 Family Product Brief” (PDF). Intel. 2012. 2014년 11월 16일에 확인함.
- 1 2 “Intel Look Inside: Intel Ethernet” (PDF). 《Xeon E5 v3 (Grantley) Launch》. Intel. 2014년 11월 27일. 2015년 3월 26일에 원본 문서 (PDF)에서 보존된 문서. 2015년 3월 26일에 확인함.
- ↑ “Linux kernel documentation: Documentation/networking/ixgbe.txt”. kernel.org. 2014년 12월 15일. 2015년 3월 26일에 확인함.
- ↑ “Intel Ethernet Flow Director”. Intel. 2015년 2월 16일. 2015년 3월 26일에 확인함.
- ↑ “Introduction to Intel Ethernet Flow Director and Memcached Performance” (PDF). Intel. 2014년 10월 14일. 2015년 10월 11일에 확인함.
- ↑ Patrick Kutch; Brian Johnson; Greg Rose (September 2011). “An Introduction to Intel Flexible Port Partitioning Using SR-IOV Technology” (PDF). Intel. 2015년 9월 24일에 확인함.
- ↑ Jonathan Corbet (2007년 8월 1일). “Large receive offload”. LWN.net. 2015년 5월 2일에 확인함.
- ↑ “High Performance Solutions for Cyber Security”. 《New Wave Design & Verification》. New Wave DV.
- ↑ Timothy Prickett Morgan (2012년 2월 8일). “Solarflare turns network adapters into servers: When a CPU just isn't fast enough”. 《더 레지스터》. 2014년 5월 8일에 확인함.
- ↑ “OpenOnload”. 《openonload.org》. 2013년 12월 3일. 2014년 5월 8일에 확인함.
- ↑ Steve Pope; David Riddoch (2008년 3월 21일). “OpenOnload: A user-level network stack” (PDF). 《openonload.org》. 2014년 7월 24일에 원본 문서 (PDF)에서 보존된 문서. 2014년 5월 8일에 확인함.
- 내용주
- ↑ 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.