Chapter 17

네트워크 칩: 스위치와 NIC

데이터센터 랙 맨 위에 꽂힌 납작한 상자 하나가 1초에 50테라비트, 100테라비트를 주고받는다. 4K 영상(편당 약 15 Mbps) 수백만 편을 동시에 흘려보낼 수 있는 양이다. 그 일을 하는 것은 상자 한가운데 커다란 방열판 아래 숨은 칩 하나다. 이 장에서는 그 스위치 칩과, 서버 쪽 출입구인 NIC의 속을 들여다본다.

네트워크 장비 속 칩 지도

스위치(6장)와 라우터(8장)는 겉으로는 포트가 줄지어 박힌 금속 상자다. 상자를 열면 일이 두 갈래로 나뉘어 있다. 패킷 하나하나를 받아 목적지를 찾아 내보내는 고속 작업, 즉 데이터 평면(data plane)은 전용 칩인 스위치 ASIC(Application-Specific Integrated Circuit)이 맡는다. 이웃 장비와 라우팅 정보를 주고받고(BGP, 8장), 표를 계산해 ASIC에 써 넣고, 관리자의 명령을 받는 느린 두뇌 작업, 즉 제어 평면(control plane)은 옆의 평범한 CPU가 맡는다.

스위치 상자 (1~2U) 광 모듈×32~64 DSP+레이저 리타이머/ PHY(필요 시) 스위치 ASIC SerDes ×512 패킷파이프라인 TCAM·SRAM 표 공유 패킷 버퍼 (SRAM) 트래픽 매니저·큐 데이터 평면 CPUx86/Arm + DRAMSSD, 네트워크 OS제어 평면 BMC·전원·팬 클럭·타이밍 PCIe 서버 CPU·GPU애플리케이션, OS NIC / SmartNIC / DPUMAC·PHY, DMA, 오프로드(DPU: Arm 코어 + 가속기) 광/DAC PCIe 광섬유 또는 구리 케이블 (16장, 19장)
그림 17-1. 네트워크 장비 속 칩 지도(대략). 스위치 상자의 주인공은 데이터 평면을 맡는 스위치 ASIC이고, CPU는 PCIe로 붙어 표를 관리한다. 서버 쪽에서는 NIC(또는 SmartNIC·DPU)가 네트워크와 CPU 사이를 잇는다.
거대 물류 허브

스위치 상자는 택배 물류 허브다. 앞면의 광 모듈 포트는 트럭이 드나드는 하역 도크, 스위치 ASIC은 초고속 컨베이어와 자동 분류기, 칩 안의 버퍼는 잠깐 쌓아 두는 적치장, CPU는 2층 관제실이다. 관제실은 “서울행은 3번 레인”이라는 규칙표를 만들어 분류기에 내려보낼 뿐, 상자 하나하나를 직접 만지지 않는다. 상자를 만지는 건 분류기다. 관제실이 잠깐 멈춰도 분류기는 마지막 규칙표대로 계속 돈다.

스위치 상자 열어 보기

아래는 데이터센터용 1U(높이 약 4.4 cm) 스위치를 단순화한 3D 모형이다. 분해 정도를 올리면 덮개와 방열판이 들려 올라가고 칩이 드러난다. 부품을 눌러 설명을 읽어 보자.

3D

스위치 분해 모형

보기
부품을 눌러 보자. 드래그하면 모형이 돌아간다.
크기와 배치는 이해를 돕기 위한 그림이다. 실제 51.2 Tbps 장비는 800G 포트 64개를 넣느라 보통 2U 높이이며, 포트 수와 리타이머 유무, 전원·팬 배치는 제품마다 다르다.

스위치 칩 용량: 2년마다 두 배

한 칩이 동시에 처리할 수 있는 총 대역폭을 스위칭 용량이라 한다. 데이터센터 스위치 칩의 용량은 2010년 무렵 640 Gbps에서 2025년 102.4 Tbps까지, 대략 2년마다 두 배씩 늘었다. 15년 동안 160배다. 이 성장을 가능하게 한 것은 두 가지다. 공정 미세화로 같은 면적에 더 많은 로직과 SRAM을 넣은 것, 그리고 SerDes 레인 속도를 10G → 25G → 50G → 100G → 200G로 올린 것(16장)이다.

칩 용량 = SerDes 레인 수 × 레인 속도
예: 512 × 100G = 51.2 Tbps (= 800G 포트 64개) · 512 × 200G = 102.4 Tbps (= 1.6T 포트 64개 또는 800G 포트 128개)
CALCULATOR

스위치 칩 용량 계산기

SerDes 레인 수
레인 속도
포트 속도
칩 용량—
포트 구성—
포트당 레인—
SerDes 전력(추정)—
하루에 지나는 데이터—
왼쪽: 세대별 대표 용량(로그 눈금, 연도는 대략)과 지금 계산한 값(빨간 점). 오른쪽: 다이 가장자리에 늘어선 SerDes(한 변에 레인 수의 1/4). SerDes 전력은 송수신 합쳐 비트당 에너지 × 용량으로 계산한 대략값이다. 해볼 것: 레인 수를 고정하고 레인 속도만 올려 보자. 칩 세대가 바뀔 때 주로 무엇이 두 배가 되었는가?

레인 수를 마냥 늘릴 수는 없다. 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)을 쓰고, 그런 라인을 여러 개 병렬로 둔다.

입력포트·MAC 파서헤더 분해 인그레스 매치-액션 단계들 L2MAC 표(정확 일치) L3경로 표(LPM) ACL보안 규칙(TCAM) 트래픽 매니저공유 버퍼큐·스케줄러(복제·혼잡 표시) 이그레스매치-액션 +디파서 출력포트·MAC 파서가 뽑은 헤더 필드(목적지 MAC·IP, 포트 번호…)와 메타데이터만 파이프라인을 따라 흐르고, 패킷 본문은 버퍼에 들어가 기다린다. 마지막에 디파서가 (바뀐) 헤더를 본문에 다시 붙인다.
그림 17-2. 스위치 칩의 패킷 처리 파이프라인(대략). 각 단계는 “표에서 키로 찾아(match) 정해진 동작을 한다(action)”는 같은 구조를 반복한다. 동작은 출력 포트 정하기, 헤더 고치기, 버리기, 카운터 올리기 등이다.

파서(parser)는 패킷 앞부분의 바이트열을 읽어 이더넷·VLAN·IP·TCP 헤더를 차례로 알아보고 필드를 뽑는다(3장의 캡슐화를 거꾸로 벗기는 일). 이어지는 매치-액션 테이블(match-action table) 단계마다 표 검색이 한 번씩 일어난다. L2 표는 목적지 MAC을 정확히 일치로 찾고(해시 + SRAM), L3 표는 목적지 IP의 최장 접두사 일치(8장)를 찾고, ACL은 여러 필드에 와일드카드가 섞인 규칙을 찾는다(뒤의 TCAM). 그다음 트래픽 매니저(traffic manager)가 패킷을 출력 포트의 큐에 넣고, 스케줄러가 우선순위와 공정성에 따라 꺼낸다.

SIMULATOR

초당 패킷 수와 파이프라인

대역폭
초당 패킷 수—
패킷 1개당 시간—
한 사이클에 처리할 패킷—
필요한 파이프라인 수 (사이클당 1개 처리 시)—
패킷마다 프리앰블 8바이트와 프레임 간 간격 12바이트(합 20바이트)를 더해 계산했다. 그림은 파이프라인이 매 사이클 한 칸씩 전진하는 모습으로, 한 패킷이 모든 단계를 지나는 데는 수십~수백 사이클이 걸려도 매 사이클 새 패킷이 하나씩 들어간다. 실제 칩은 파이프라인 여러 개를 두고 한 파이프라인이 사이클당 여러 패킷을 다루기도 하며, 아주 작은 패킷에서는 최대 속도를 보장하지 않는 설계도 있다. 해볼 것: 패킷 크기를 1,500바이트로 올리면 필요한 처리 속도가 얼마나 줄어드는가?

프로그래머블 스위치와 P4

예전 스위치 칩은 어떤 헤더를 어떻게 처리할지가 회로에 고정되어 있었다. 새 프로토콜(예: 새 터널 헤더)이 나오면 새 칩이 나올 때까지 2~3년을 기다려야 했다. 2010년대 중반부터는 파서와 매치-액션 단계를 소프트웨어로 정의할 수 있는 프로그래머블 파이프라인 칩이 나왔고, 이를 기술하는 언어가 P4(Programming Protocol-independent Packet Processors)다. 아래처럼 “어떤 키로 어떤 표를 찾아 어떤 동작을 할지”를 선언하면, 컴파일러가 칩의 단계와 메모리에 배치한다.

table ipv4_lpm { key = { hdr.ipv4.dstAddr : lpm; } // 목적지 IP로 최장 접두사 일치 actions = { set_nexthop; drop; } size = 131072; } apply { if (hdr.ipv4.isValid()) { ipv4_lpm.apply(); } // 이 단계에서 표 검색 한 번 }

프로그래머블 칩은 네트워크 측정(패킷마다 지연·큐 길이를 헤더에 기록하는 인밴드 텔레메트리), 부하 분산, 새 혼잡 제어 실험 같은 곳에 쓰인다. 다만 같은 공정에서 고정 기능 칩보다 면적과 전력이 더 들기 때문에, 업계는 “필요한 곳만 프로그래머블하게”라는 절충을 택하는 경우가 많다.

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)가 골라 그 줄 번호를 내놓는다. 줄을 접두사 길이 순(긴 것이 위)으로 넣어 두면, 맨 위 일치 = 최장 접두사 일치가 된다. 표에 수만 줄이 있어도 검색은 한 사이클이다.

검색 키 → 1011 검색선 (모든 줄에 동시에) 줄 0110X 줄 1101X 줄 21XXX 일치선: 방전(불일치)일치일치 우선순위인코더 줄 1 선택→ 동작 SRAM 각 줄의 일치선은 검색 전에 충전해 두고, 어느 한 셀이라도 어긋나면 방전된다. 일치한 줄(1, 2) 중 가장 위(가장 긴 접두사)가 이긴다. TCAM 셀 하나 = 저장용 SRAM 셀 2개(값·마스크) + 비교 트랜지스터 → 약 16개. SRAM 셀은 6개.
그림 17-3. TCAM 배열의 원리(4비트, 3줄로 단순화). 검색 키가 모든 줄에 동시에 뿌려지고, 줄마다 일치선이 살아남았는지로 결과가 나온다. X 셀은 무엇과도 일치한다.
SIMULATOR

TCAM 최장 접두사 검색

예시
일치한 줄—
우선순위 인코더 선택—
내보낼 곳—
한 사이클에 비교한 비트—
각 줄은 32비트 IPv4 접두사다(X = 상관없음). 빨간 비트는 검색 키와 어긋난 자리, 초록 테두리는 일치한 줄, 파란 줄은 우선순위 인코더가 고른 첫 번째 일치다. 실제 칩은 이 비교를 수만~수십만 줄에 대해 동시에 한다. 해볼 것: 8.8.8.8을 넣으면 어느 줄이 이기는가? ‘정렬하지 않고’를 켜면 결과가 어떻게 틀어지는가?
예측해 보기

TCAM에 기본 경로 0.0.0.0/0을 맨 위 줄에 넣어 버렸다. 10.1.2.77을 검색하면?

TCAM 시뮬레이터에서 ‘정렬하지 않고’를 켜고 확인하자.

TCAM 자체는 “길이”를 모른다. 위에 있는 줄이 이긴다. 그래서 라우터 소프트웨어는 새 경로를 넣을 때마다 접두사 길이 순서가 유지되도록 엔트리를 옮겨 가며 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당 버퍼 크기는 세대마다 줄어 왔다.

SIMULATOR

인캐스트 마이크로버스트와 버퍼

포트 속도
버스트 총량—
최대 큐 길이—
버려진 데이터—
최대 큐 대기 시간—
N개 입력 포트가 같은 순간 각자 버스트를 최대 속도로 보내고, 출력 포트는 같은 속도로 내보낸다고 단순화했다. 큐는 (N − 1) × 포트 속도로 차오르고 버스트가 끝나면 비워진다. 버퍼 한도를 넘는 양은 버려진다(꼬리 버림). 해볼 것: 버퍼를 1 GB 이상(HBM을 쓰는 딥 버퍼 칩 수준)으로 올리면 버려짐은 사라지지만 대기 시간은 어떻게 되는가?

통신사 백본이나 데이터센터 경계의 라우터처럼 거리가 멀고(지연이 길고) 트래픽이 들쭉날쭉한 곳에서는 수 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)다.

서버 (호스트) CPU 코어 0 CPU 코어 1…N 메모리: 큐마다 디스크립터 링 큐 0 → 코어 0큐 1 → 코어 1 VM마다 가상 기능(VF) 큐 드라이버가 빈 버퍼 주소를 링에 올려 둔다 NIC PCIe + DMA메모리에 직접 쓰기 SR-IOVPF + VF 수백 개 오프로드 엔진체크섬 계산·검사TSO: 큰 덩어리 쪼개기LRO/GRO: 합치기VLAN·터널 헤더암호화(일부) RSS해시 → 큐 MAC프레임·FCS PHYSerDes 수신: PHY → MAC → RSS 큐 선택 → 오프로드 → DMA → 코어에 알림
그림 17-4. NIC의 구성(수신 방향 중심, 대략). 서버 메모리에는 큐마다 “여기에 써 줘” 하는 빈 버퍼 목록(디스크립터 링)이 있고, NIC는 도착한 패킷을 DMA로 그 자리에 바로 써 넣는다.

100 Gbps를 1,500바이트 패킷으로 받으면 초당 800만 개가 넘는다. 패킷마다 CPU가 체크섬을 계산하고, TCP 처리를 하고, 메모리를 복사하면 코어 몇 개가 통째로 묶인다. 그래서 NIC는 CPU의 일을 하드웨어로 떼어 가는 오프로드를 한다.

SIMULATOR

오프로드와 RSS: 코어가 얼마나 바쁜가

링크 속도
실제 처리량—
일하는 코어—
코어 1개의 최대 처리량—
CPU가 다루는 패킷/초—
흐름마다 링크를 똑같이 나눠 쓰려 하고, RSS 해시가 흐름을 큐에 흩뿌린다고 가정했다(같은 큐에 여러 흐름이 몰릴 수 있다). 코어 비용은 패킷당 약 1.2 µs, 바이트당 복사 0.1 ns, 소프트웨어 체크섬 0.15 ns로 잡은 대략값이며, TSO/GRO를 켜면 평균 32 KB 덩어리로 묶인다고 보았다. 해볼 것: 흐름을 1개로 줄이면 큐를 아무리 늘려도 처리량이 오르지 않는 이유는?
예측해 보기

100G NIC에 RSS 큐 16개를 켰다. 그런데 큰 파일 하나를 TCP 연결 1개로 받는다면 처리량은?

오프로드·RSS 시뮬레이터에서 흐름 수를 1, 큐를 16으로 맞춰 보자.

RSS는 흐름 단위로 나눈다. 흐름 하나는 순서를 지키려고 늘 같은 큐, 같은 코어로 가므로 그 코어의 처리 능력이 상한이 된다. 그래서 대용량 전송 도구는 연결을 여러 개 열거나, 아예 CPU를 거치지 않는 RDMA(20장)를 쓴다.

SmartNIC, DPU, IPU: NIC 위의 작은 컴퓨터

클라우드 서버의 CPU는 손님(가상 머신)에게 빌려줄 상품이다. 그런데 가상 스위치, 방화벽, 암호화, 원격 스토리지 처리 같은 “인프라 일”이 코어의 상당 부분을 잡아먹는다. 이 일을 아예 NIC로 옮기자는 것이 SmartNIC이고, 더 나아가 NIC 위에 Arm CPU 코어 여러 개와 전용 가속기, 메모리를 얹어 독립된 컴퓨터처럼 만든 것이 DPU(Data Processing Unit)다. 회사에 따라 IPU(Infrastructure Processing Unit)라고도 부른다.

종류속에 든 것대표적인 일누가 프로그래밍하나
기본 NICMAC·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 출시
SerDes512개 × 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장).

핵심 정리

  1. 네트워크 장비는 패킷을 나르는 데이터 평면(스위치 ASIC)과 표를 관리하는 제어 평면(CPU)으로 나뉜다. 앞면에는 광 모듈, 그 사이에는 필요하면 리타이머가 있다.
  2. 스위치 칩 용량은 약 2년마다 두 배(640G → 102.4T)로 늘었다. 용량 = SerDes 레인 수 × 레인 속도(예: 512 × 100G = 51.2T).
  3. 51.2T 칩은 최소 크기 패킷으로 초당 약 760억 개를 처리해야 한다. 그래서 파서 → 매치-액션 → 트래픽 매니저 → 디파서의 파이프라인을 여러 개 병렬로 둔다. P4는 이 파이프라인을 프로그래밍하는 언어다.
  4. TCAM은 0/1/X로 저장된 모든 줄을 한 사이클에 동시에 비교하고, 우선순위 인코더가 첫 일치를 고른다. 대가는 큰 셀(약 16 트랜지스터)과 높은 전력이다.
  5. 칩 안의 공유 버퍼(수십~백수십 MB)가 마이크로버스트를 흡수한다. 원거리 라우터는 HBM으로 수 GB의 딥 버퍼를 쓰지만, 큰 큐는 지연을 늘린다.
  6. NIC는 DMA로 메모리에 직접 쓰고, 체크섬·TSO/LRO·RSS·SR-IOV로 CPU 일을 덜어 준다. SmartNIC·DPU는 가상화·보안·스토리지까지 떼어 가는 NIC 위의 컴퓨터다.
  7. 최신 스위치 칩은 5·3 nm 공정, 레티클 한계 근처 크기이며, SerDes를 떼어 낸 칩렛 구조와 광 공동 패키징으로 진화하고 있다.

확인 퀴즈

스위치 상자에서 BGP로 이웃과 경로를 주고받고 라우팅 표를 계산하는 것은?

경로 계산 같은 느린 두뇌 작업은 CPU(제어 평면)가 하고, 결과 표를 PCIe로 ASIC에 써 넣는다. ASIC은 그 표대로 패킷 하나하나를 처리한다(데이터 평면).

SerDes 레인 512개, 레인당 200G인 스위치 칩의 용량과 가능한 포트 구성은?

512 × 200 Gbps = 102.4 Tbps. 포트당 레인 8개를 묶으면 1.6T 포트 64개, 4개씩 묶으면 800G 포트 128개다.

51.2 Tbps 칩이 64바이트 패킷을 최대 속도로 처리할 때 초당 패킷 수에 가장 가까운 것은? (프레임마다 20바이트 추가)

51.2 × 10¹² ÷ (84 × 8) ≈ 7.6 × 10¹⁰, 즉 약 760억 개다. 1 GHz 한 사이클에 76개를 처리해야 하는 셈이다.

TCAM이 라우팅·ACL 검색에 쓰이는 이유와 그 대가로 옳은 짝은?

TCAM은 내용으로 찾는 메모리로, 모든 줄을 병렬로 비교한다. 줄마다 일치선을 충전·방전하므로 전력이 크고, 셀당 트랜지스터가 SRAM(6개)보다 훨씬 많다(약 16개). 최장 접두사 일치는 줄을 길이순으로 넣어야 성립한다.

평균 사용률이 낮은 포트에서도 패킷 손실이 생기는 대표적인 원인은?

수십 µs짜리 폭주는 1초 평균 그래프에는 보이지 않지만, 그 순간 큐가 버퍼 한도를 넘으면 패킷이 버려진다.

NIC의 RSS(Receive Side Scaling)가 하는 일은?

RSS는 흐름 단위로 큐를 나눠 여러 코어가 함께 받게 한다. 같은 흐름은 같은 큐로 가므로 순서가 지켜진다. 자르기는 TSO, 가상 NIC는 SR-IOV, 체크섬은 체크섬 오프로드다.