네트워크 칩: 스위치와 NIC
데이터센터 랙 맨 위에 꽂힌 납작한 상자 하나가 1초에 50테라비트, 100테라비트를 주고받는다. 4K 영상(편당 약 15 Mbps) 수백만 편을 동시에 흘려보낼 수 있는 양이다. 그 일을 하는 것은 상자 한가운데 커다란 방열판 아래 숨은 칩 하나다. 이 장에서는 그 스위치 칩과, 서버 쪽 출입구인 NIC의 속을 들여다본다.
- 스위치·라우터 상자 안의 칩 구성(스위치 ASIC, CPU, 광 모듈, 리타이머, NIC/DPU)을 그린다.
- 스위치 칩 용량이 약 2년마다 두 배가 된 역사와 “용량 = SerDes 수 × 레인 속도” 관계를 계산한다.
- 51.2 Tbps 칩이 초당 수백억 개의 패킷을 처리해야 하는 이유와 파이프라인 구조를 안다.
- TCAM이 모든 엔트리를 한 사이클에 동시에 비교하는 원리와 그 대가(전력·면적)를 설명한다.
- 마이크로버스트와 공유 버퍼, 딥 버퍼 라우터 칩의 필요성을 시뮬레이터로 확인한다.
- NIC의 DMA·오프로드·RSS·SR-IOV와 SmartNIC·DPU가 서버 CPU의 일을 덜어 주는 방식을 이해한다.
네트워크 장비 속 칩 지도
스위치(6장)와 라우터(8장)는 겉으로는 포트가 줄지어 박힌 금속 상자다. 상자를 열면 일이 두 갈래로 나뉘어 있다. 패킷 하나하나를 받아 목적지를 찾아 내보내는 고속 작업, 즉 데이터 평면(data plane)은 전용 칩인 스위치 ASIC(Application-Specific Integrated Circuit)이 맡는다. 이웃 장비와 라우팅 정보를 주고받고(BGP, 8장), 표를 계산해 ASIC에 써 넣고, 관리자의 명령을 받는 느린 두뇌 작업, 즉 제어 평면(control plane)은 옆의 평범한 CPU가 맡는다.
스위치 상자는 택배 물류 허브다. 앞면의 광 모듈 포트는 트럭이 드나드는 하역 도크, 스위치 ASIC은 초고속 컨베이어와 자동 분류기, 칩 안의 버퍼는 잠깐 쌓아 두는 적치장, CPU는 2층 관제실이다. 관제실은 “서울행은 3번 레인”이라는 규칙표를 만들어 분류기에 내려보낼 뿐, 상자 하나하나를 직접 만지지 않는다. 상자를 만지는 건 분류기다. 관제실이 잠깐 멈춰도 분류기는 마지막 규칙표대로 계속 돈다.
스위치 상자 열어 보기
아래는 데이터센터용 1U(높이 약 4.4 cm) 스위치를 단순화한 3D 모형이다. 분해 정도를 올리면 덮개와 방열판이 들려 올라가고 칩이 드러난다. 부품을 눌러 설명을 읽어 보자.
스위치 분해 모형
스위치 칩 용량: 2년마다 두 배
한 칩이 동시에 처리할 수 있는 총 대역폭을 스위칭 용량이라 한다. 데이터센터 스위치 칩의 용량은 2010년 무렵 640 Gbps에서 2025년 102.4 Tbps까지, 대략 2년마다 두 배씩 늘었다. 15년 동안 160배다. 이 성장을 가능하게 한 것은 두 가지다. 공정 미세화로 같은 면적에 더 많은 로직과 SRAM을 넣은 것, 그리고 SerDes 레인 속도를 10G → 25G → 50G → 100G → 200G로 올린 것(16장)이다.
스위치 칩 용량 계산기
레인 수를 마냥 늘릴 수는 없다. SerDes는 다이의 가장자리에 놓여야 패키지 바깥으로 신호를 뺄 수 있는데, 다이의 둘레는 면적만큼 빨리 늘지 않는다. 이를 “해안선(beachfront) 문제”라 부른다. 그래서 칩 회사들은 레인 수보다 레인 속도를 올리는 쪽을 택해 왔고, 레인 속도를 올리기 어려워지자 SerDes를 별도 칩렛으로 떼어 내 패키지 둘레를 넓히는 방법(뒤에서 다룬다)과, 광 엔진을 패키지에 붙이는 공동 패키징 광학(19장)으로 나아가고 있다.
패킷 처리 파이프라인
51.2 Tbps 칩에 가장 작은 이더넷 프레임(64바이트)이 꽉 차게 들어오면 1초에 몇 개일까? 프레임마다 앞뒤로 프리앰블과 프레임 간 간격 20바이트가 붙으므로, 51.2 × 10¹² ÷ ((64 + 20) × 8) ≈ 760억 개다. 패킷 하나에 주어진 시간은 약 13 ps. 1 GHz 클럭 한 사이클(1 ns) 동안 76개의 패킷을 처리해야 한다는 뜻이다. CPU 소프트웨어로는 어림도 없다. 그래서 스위치 칩은 패킷 처리 과정을 잘게 쪼개 조립 라인처럼 늘어놓은 패킷 처리 파이프라인(packet processing pipeline)을 쓰고, 그런 라인을 여러 개 병렬로 둔다.
파서(parser)는 패킷 앞부분의 바이트열을 읽어 이더넷·VLAN·IP·TCP 헤더를 차례로 알아보고 필드를 뽑는다(3장의 캡슐화를 거꾸로 벗기는 일). 이어지는 매치-액션 테이블(match-action table) 단계마다 표 검색이 한 번씩 일어난다. L2 표는 목적지 MAC을 정확히 일치로 찾고(해시 + SRAM), L3 표는 목적지 IP의 최장 접두사 일치(8장)를 찾고, ACL은 여러 필드에 와일드카드가 섞인 규칙을 찾는다(뒤의 TCAM). 그다음 트래픽 매니저(traffic manager)가 패킷을 출력 포트의 큐에 넣고, 스케줄러가 우선순위와 공정성에 따라 꺼낸다.
초당 패킷 수와 파이프라인
프로그래머블 스위치와 P4
예전 스위치 칩은 어떤 헤더를 어떻게 처리할지가 회로에 고정되어 있었다. 새 프로토콜(예: 새 터널 헤더)이 나오면 새 칩이 나올 때까지 2~3년을 기다려야 했다. 2010년대 중반부터는 파서와 매치-액션 단계를 소프트웨어로 정의할 수 있는 프로그래머블 파이프라인 칩이 나왔고, 이를 기술하는 언어가 P4(Programming Protocol-independent Packet Processors)다. 아래처럼 “어떤 키로 어떤 표를 찾아 어떤 동작을 할지”를 선언하면, 컴파일러가 칩의 단계와 메모리에 배치한다.
프로그래머블 칩은 네트워크 측정(패킷마다 지연·큐 길이를 헤더에 기록하는 인밴드 텔레메트리), 부하 분산, 새 혼잡 제어 실험 같은 곳에 쓰인다. 다만 같은 공정에서 고정 기능 칩보다 면적과 전력이 더 들기 때문에, 업계는 “필요한 곳만 프로그래머블하게”라는 절충을 택하는 경우가 많다.
TCAM: 모든 줄을 한꺼번에 비교하는 메모리
보통의 메모리(SRAM, DRAM)는 주소를 주면 그 칸의 내용을 돌려준다. 그런데 라우팅 표 검색은 반대다. 내용(목적지 IP)을 주고 “이것과 맞는 줄이 어디냐”를 물어야 한다. 이런 질문에 답하는 메모리가 내용 주소 메모리(CAM, Content-Addressable Memory)이고, 각 비트에 0과 1 말고 “상관없음”(X)까지 저장할 수 있는 것이 TCAM(Ternary CAM, 3진 내용 주소 메모리)이다.
IP 접두사 10.1.0.0/16은 앞 16비트는 정해져 있고 뒤 16비트는 무엇이든 되므로, TCAM 한 줄에 “앞 16비트 = 00001010 00000001, 뒤 16비트 = X”로 저장된다. 검색 키를 넣으면 모든 줄이 동시에, 비트마다 비교한다. 한 비트라도 어긋난 줄은 탈락하고, 살아남은 줄 중 가장 위의 줄을 우선순위 인코더(priority encoder)가 골라 그 줄 번호를 내놓는다. 줄을 접두사 길이 순(긴 것이 위)으로 넣어 두면, 맨 위 일치 = 최장 접두사 일치가 된다. 표에 수만 줄이 있어도 검색은 한 사이클이다.
TCAM 최장 접두사 검색
TCAM에 기본 경로 0.0.0.0/0을 맨 위 줄에 넣어 버렸다. 10.1.2.77을 검색하면?
TCAM 시뮬레이터에서 ‘정렬하지 않고’를 켜고 확인하자.
TCAM은 강력하지만 비싸다. 셀 하나에 트랜지스터가 SRAM의 2~3배(약 16개) 들고, 검색할 때마다 수만 줄의 일치선을 모두 충전했다 방전하므로 전력을 많이 먹는다. 그래서 스위치 칩은 TCAM을 와일드카드가 꼭 필요한 ACL 같은 곳에 아껴 쓰고, 수십만~수백만 개의 경로 표는 해시 표와 압축된 트리(trie)를 SRAM에 담아 파이프라인 여러 단계에 걸쳐 찾는 알고리즘 방식으로 처리하는 경우가 많다.
버퍼: 마이크로버스트를 견디는 창고
포트 하나의 평균 사용률이 30%여도 순간적으로는 넘칠 수 있다. 분산 학습이나 검색 서비스처럼 서버 수십 대가 동시에 한 서버에게 답을 보내면(인캐스트, 20장) 출력 포트 하나에 입력 여러 개가 수십 µs 동안 몰린다. 이렇게 1 ms도 안 되는 아주 짧은 폭주를 마이크로버스트(microburst)라 한다. 평균 사용률 그래프(보통 1초~1분 평균)에는 보이지도 않지만, 버퍼가 모자라면 패킷이 버려지고 TCP가 속도를 확 줄인다(9장).
그래서 스위치 칩 안에는 패킷을 잠깐 쌓아 둘 SRAM이 들어 있다. 포트마다 따로 나누지 않고 칩 전체가 함께 쓰는 공유 버퍼(shared buffer) 구조로, 지금 붐비는 포트가 남는 공간을 더 가져다 쓰게 한다. 51.2 Tbps급 칩에는 대략 수십~백수십 MB가 들어간다. 커 보이지만 51.2 Tbps로 들어오면 100 MB는 16 µs 만에 찬다. 칩 용량이 2년마다 두 배가 되는 동안 SRAM은 그만큼 늘지 못해서, Tbps당 버퍼 크기는 세대마다 줄어 왔다.
인캐스트 마이크로버스트와 버퍼
통신사 백본이나 데이터센터 경계의 라우터처럼 거리가 멀고(지연이 길고) 트래픽이 들쭉날쭉한 곳에서는 수 GB의 버퍼가 필요하다. 이런 딥 버퍼 라우터 칩은 칩 옆 같은 패키지에 GPU처럼 HBM(고대역폭 메모리)을 붙여 패킷을 쌓는다. 대신 HBM 대역폭과 전력, 비용 때문에 같은 세대의 데이터센터 스위치 칩보다 총 용량이 작다. 버퍼가 크다고 늘 좋은 것도 아니다. 시뮬레이터에서 보듯 큐가 길면 패킷이 오래 기다리고(버퍼블로트), 지연에 민감한 AI 학습 트래픽은 버퍼를 키우기보다 혼잡을 일찍 알려 보내는 속도를 줄이게 하는(ECN, 20장) 쪽을 택한다.
NIC: 서버의 네트워크 출입구
서버 쪽 출입구는 NIC(Network Interface Card, 네트워크 인터페이스 카드)다. 노트북에서는 메인보드의 작은 칩이지만, 데이터센터 서버에서는 100~800 Gbps 포트가 달린 PCIe 카드다. NIC의 기본 일은 세 가지다. 선로의 신호를 비트로 바꾸는 PHY(SerDes, 16장), 이더넷 프레임을 만들고 검사하는 MAC(6장), 그리고 프레임을 CPU를 거치지 않고 서버 메모리에 직접 써 넣는 DMA(Direct Memory Access)다.
100 Gbps를 1,500바이트 패킷으로 받으면 초당 800만 개가 넘는다. 패킷마다 CPU가 체크섬을 계산하고, TCP 처리를 하고, 메모리를 복사하면 코어 몇 개가 통째로 묶인다. 그래서 NIC는 CPU의 일을 하드웨어로 떼어 가는 오프로드를 한다.
- 체크섬 오프로드: IP·TCP 체크섬(3장)을 NIC가 계산하고 검사한다.
- TSO(TCP Segmentation Offload): 운영체제는 64 KB짜리 큰 덩어리 하나만 넘기고, NIC가 MTU 크기로 잘라 헤더를 붙인다. 받는 쪽의 LRO/GRO는 반대로 같은 흐름의 패킷들을 큰 덩어리로 합쳐 올린다. 패킷 수가 수십 분의 1로 줄어 패킷당 비용이 사라진다.
- RSS(Receive Side Scaling): 패킷 헤더(주소·포트 다섯 개 묶음)를 해시해서 흐름마다 서로 다른 수신 큐와 CPU 코어로 나눠 준다. 같은 흐름은 늘 같은 코어로 가서 순서가 지켜진다.
- SR-IOV(Single Root I/O Virtualization): NIC 하나를 PCIe 장치 수백 개(가상 기능, VF)처럼 보이게 해서, 가상 머신마다 자기 전용 NIC를 직접 쓰게 한다(21장).
오프로드와 RSS: 코어가 얼마나 바쁜가
100G NIC에 RSS 큐 16개를 켰다. 그런데 큰 파일 하나를 TCP 연결 1개로 받는다면 처리량은?
오프로드·RSS 시뮬레이터에서 흐름 수를 1, 큐를 16으로 맞춰 보자.
SmartNIC, DPU, IPU: NIC 위의 작은 컴퓨터
클라우드 서버의 CPU는 손님(가상 머신)에게 빌려줄 상품이다. 그런데 가상 스위치, 방화벽, 암호화, 원격 스토리지 처리 같은 “인프라 일”이 코어의 상당 부분을 잡아먹는다. 이 일을 아예 NIC로 옮기자는 것이 SmartNIC이고, 더 나아가 NIC 위에 Arm CPU 코어 여러 개와 전용 가속기, 메모리를 얹어 독립된 컴퓨터처럼 만든 것이 DPU(Data Processing Unit)다. 회사에 따라 IPU(Infrastructure Processing Unit)라고도 부른다.
| 종류 | 속에 든 것 | 대표적인 일 | 누가 프로그래밍하나 |
|---|---|---|---|
| 기본 NIC | MAC·PHY, DMA, 고정 오프로드 | 체크섬, TSO/LRO, RSS, SR-IOV | 드라이버만 |
| SmartNIC | + 프로그래머블 파이프라인 또는 FPGA | 가상 스위치 규칙, 터널(VXLAN) 처리, 흐름 통계 | 클라우드 사업자가 규칙·펌웨어로 |
| DPU / IPU | + Arm 코어 8~16개 이상, DRAM, 암호·압축·스토리지 가속기 | 가상화 네트워크·보안·NVMe 스토리지 전체를 호스트 밖에서 실행 | DPU 위에서 도는 별도 OS와 소프트웨어 |
DPU의 또 다른 장점은 격리다. 인프라 소프트웨어가 손님의 CPU가 아니라 별도 칩에서 돌므로, 손님 가상 머신이 탈취돼도 네트워크 규칙이나 암호 키를 건드리기 어렵다. 대형 클라우드 사업자들은 이런 칩을 직접 설계해 모든 서버에 넣고 있으며(21장), AI 클러스터에서는 GPU마다 고속 NIC를 하나씩 붙여 GPU 메모리끼리 직접 데이터를 주고받게 한다(20장).
업계 지형과 칩 만드는 법
스위치 칩은 크게 두 갈래로 공급된다. 누구에게나 파는 머천트 실리콘(merchant silicon)과, 장비 회사나 클라우드 회사가 자기 장비에만 쓰려고 만드는 자체 칩이다. 2010년대 이후 데이터센터에서는 머천트 칩 위에 여러 회사의 스위치 상자와 오픈소스 네트워크 OS를 조합하는 방식이 퍼졌다. 반면 통신사 백본용 대형 라우터나 일부 하이퍼스케일러는 딥 버퍼, 특수 기능, 공급망 통제를 위해 자체 칩을 고집한다. 같은 회사가 데이터센터용 고용량 칩, 딥 버퍼 라우터 칩, 프로그래머블 칩을 따로 내놓기도 한다.
| 항목 | 최신 세대 스위치 칩의 대략적 수준 (2025년 무렵) |
|---|---|
| 용량 | 51.2 Tbps 주력, 102.4 Tbps 출시 |
| SerDes | 512개 × 100G PAM4 또는 512개 × 200G PAM4 |
| 공정 | 5 nm → 3 nm급 |
| 다이 크기 | 레티클 한계(약 26 × 33 mm, 858 mm²) 근처, 또는 칩렛 여러 개 |
| 온칩 버퍼 | 수십~백수십 MB SRAM (딥 버퍼 칩은 HBM 수 GB) |
| 전력 | 칩 하나 수백 W, 장비 전체 kW 수준(광 모듈 포함) |
반도체 관점에서 스위치 칩은 극단적인 칩이다. 노광 장비가 한 번에 찍을 수 있는 최대 크기인 레티클 한계(reticle limit)에 거의 닿을 만큼 크다. 다이가 크면 결함이 하나라도 걸릴 확률이 높아져 수율이 떨어진다. 그래서 최근 세대는 패킷 처리 코어를 첨단 공정의 다이 하나로 만들고, SerDes는 별도의 작은 다이로 떼어 함께 한 패키지에 올리는 칩렛(chiplet) 구조를 쓰기 시작했다. 아날로그 회로인 SerDes는 공정을 따라 작아지는 정도가 디지털보다 덜해서, 굳이 가장 비싼 공정에 함께 넣을 이유가 줄어든 것도 한 이유다. 칩렛끼리는 16장의 UCIe 같은 넓은 병렬 인터페이스로 잇는다. 그리고 다음 단계는 SerDes가 뽑아낸 전기 신호를 패키지 바로 옆에서 빛으로 바꾸는 실리콘 포토닉스다(19장).
핵심 정리
- 네트워크 장비는 패킷을 나르는 데이터 평면(스위치 ASIC)과 표를 관리하는 제어 평면(CPU)으로 나뉜다. 앞면에는 광 모듈, 그 사이에는 필요하면 리타이머가 있다.
- 스위치 칩 용량은 약 2년마다 두 배(640G → 102.4T)로 늘었다. 용량 = SerDes 레인 수 × 레인 속도(예: 512 × 100G = 51.2T).
- 51.2T 칩은 최소 크기 패킷으로 초당 약 760억 개를 처리해야 한다. 그래서 파서 → 매치-액션 → 트래픽 매니저 → 디파서의 파이프라인을 여러 개 병렬로 둔다. P4는 이 파이프라인을 프로그래밍하는 언어다.
- TCAM은 0/1/X로 저장된 모든 줄을 한 사이클에 동시에 비교하고, 우선순위 인코더가 첫 일치를 고른다. 대가는 큰 셀(약 16 트랜지스터)과 높은 전력이다.
- 칩 안의 공유 버퍼(수십~백수십 MB)가 마이크로버스트를 흡수한다. 원거리 라우터는 HBM으로 수 GB의 딥 버퍼를 쓰지만, 큰 큐는 지연을 늘린다.
- NIC는 DMA로 메모리에 직접 쓰고, 체크섬·TSO/LRO·RSS·SR-IOV로 CPU 일을 덜어 준다. SmartNIC·DPU는 가상화·보안·스토리지까지 떼어 가는 NIC 위의 컴퓨터다.
- 최신 스위치 칩은 5·3 nm 공정, 레티클 한계 근처 크기이며, SerDes를 떼어 낸 칩렛 구조와 광 공동 패키징으로 진화하고 있다.
확인 퀴즈
스위치 상자에서 BGP로 이웃과 경로를 주고받고 라우팅 표를 계산하는 것은?
SerDes 레인 512개, 레인당 200G인 스위치 칩의 용량과 가능한 포트 구성은?
51.2 Tbps 칩이 64바이트 패킷을 최대 속도로 처리할 때 초당 패킷 수에 가장 가까운 것은? (프레임마다 20바이트 추가)
TCAM이 라우팅·ACL 검색에 쓰이는 이유와 그 대가로 옳은 짝은?
평균 사용률이 낮은 포트에서도 패킷 손실이 생기는 대표적인 원인은?
NIC의 RSS(Receive Side Scaling)가 하는 일은?