용어 요약

VPP 문서 전반에서 쓰이는 핵심 기술 용어를 카테고리별로 정의한 용어 요약입니다. 벡터 패킷 처리, 그래프 노드, 데이터 경로, 호스트 스택, TLS/QUIC, 보안, 성능, 운영 용어를 다룹니다.

벡터 · 그래프 · 노드

Vector Packet Processing (VPP)
패킷을 하나씩이 아닌 벡터(배열) 단위로 묶어 동일한 처리 단계를 통과시키는 모델. I-캐시 지역성과 분기 예측 효율을 극대화합니다.
Graph Node
VPP의 패킷 처리 파이프라인을 구성하는 단위. 각 노드가 하나의 처리 단계(파싱·분류·포워딩 등)를 담당하며, 벡터가 노드 간을 이동합니다. INPUT · INTERNAL · PROCESS · PRE_INPUT 네 가지 유형이 있습니다.
vlib
VPP의 핵심 인프라 라이브러리. 노드 스케줄링, 메인 루프, 타이머, 이벤트 로거 같은 기반 기능을 제공합니다.
vlib_buffer_t
VPP의 패킷 버퍼 구조체. 패킷 데이터와 메타데이터(오프셋·다음 노드 인덱스·에러 상태)를 묶은 형태로, 리눅스 커널의 sk_buff에 해당하는 역할을 합니다.
Main Loop
워커 스레드가 돌리는 이벤트 루프. 입력 노드에서 패킷을 받아 그래프를 따라 처리한 뒤 출력 노드로 내보냅니다.
Feature Arc
한 노드에 여러 기능(ACL·NAT 등)이 덧붙어야 할 때, 기능을 동적으로 끼워 넣는 훅 메커니즘입니다.
clib · vppinfra
VPP 전용 C 인프라 라이브러리. 벡터·풀·해시·메모리 할당자·시간 같은 저수준 기본 자료구조를 제공합니다.
vnet
VPP의 네트워킹 계층 라이브러리. L2/L3/L4 노드, 인터페이스 추상화, FIB 등을 정의합니다.

데이터 경로

DPDK (Data Plane Development Kit)
커널을 우회해 유저스페이스에서 NIC를 직접 다루는 라이브러리. VPP의 주요 입출력 드라이버 중 하나입니다.
memif
VPP 인스턴스 간 또는 VPP↔외부 프로세스 간 제로카피 공유 메모리 인터페이스. 서비스 체이닝에 주로 쓰입니다.
AF_XDP
리눅스 커널의 XDP와 연동하는 소켓 타입. NIC에서 가능한 한 빨리 패킷을 유저스페이스로 넘깁니다.
vhost-user
QEMU/KVM 가상머신과 공유 메모리로 패킷을 주고받는 virtio 백엔드. VPP를 vSwitch로 쓸 때 핵심.
FIB (Forwarding Information Base)
L3 라우팅 포워딩 테이블. VPP는 LPM(Longest Prefix Match) 기반의 자체 FIB를 구현합니다.
Classify Table
헤더 바이트 오프셋과 마스크를 기반으로 한 N-tuple 매칭 엔진. ACL·방화벽·분류 규칙에 사용됩니다.
ACL (Access Control List)
VPP의 패킷 필터링 규칙 집합. plugin으로 제공되며 stateful/stateless 모드를 지원합니다.

호스트 스택 · 세션

Host Stack
VPP가 유저스페이스에서 구현한 TCP/UDP/TLS/QUIC 프로토콜 스택. 커널 스택을 대체합니다.
VCL (VPP Comms Library)
애플리케이션이 VPP 호스트 스택을 POSIX 소켓과 비슷한 API로 사용할 수 있게 해 주는 라이브러리.
VLS (VCL Locking Sublayer)
VCL 위에 얹은 얇은 잠금 계층. 멀티스레드 애플리케이션이 세션을 안전하게 공유하도록 합니다.
LD_PRELOAD 가속
기존 애플리케이션을 수정하지 않고 libvcl_ldpreload.so를 주입해 POSIX 소켓 호출을 VCL로 우회시키는 방법입니다.
Session Layer
VPP 내부에서 TCP·TLS·QUIC 연결을 추상화하는 중앙 계층. 세션 FIFO와 이벤트 큐를 관리합니다.
Session FIFO
세션 레이어가 애플리케이션과 데이터 경로 사이에 두는 큐. rx/tx FIFO 쌍으로 백프레셔를 구현합니다.

TLS · QUIC

CKPAIR (Certificate-Key Pair)
VPP가 관리하는 인증서·개인 키 쌍 오브젝트. TLS 리스너에 바인딩됩니다.
SNI (Server Name Indication)
TLS ClientHello에 포함되는 호스트명 확장. 멀티 도메인 인증서 선택이나 바이패스 정책의 기준이 됩니다.
ALPN (Application-Layer Protocol Negotiation)
TLS 핸드셰이크 중에 상위 프로토콜(h2, h3 등)을 협상하는 확장입니다.
0-RTT (Early Data)
TLS 1.3·QUIC의 기능으로, 이전 세션 티켓을 이용해 첫 패킷과 함께 응용 데이터를 전송합니다. 재전송 공격에 취약하므로 멱등 요청에만 사용해야 합니다.
picotls
경량 TLS 라이브러리. VPP TLS 플러그인의 한 엔진으로 쓰입니다.
quicly
H2O 프로젝트의 QUIC 라이브러리. VPP QUIC 플러그인이 기본으로 통합하는 엔진입니다.
kTLS
리눅스 커널이 직접 TLS 레코드 암복호화를 처리하는 기능. VPP TLS와 대비되는 커널 측 구현입니다.
Connection Migration
QUIC의 기능으로 클라이언트 5튜플이 바뀌어도 Connection ID로 같은 연결을 유지합니다. 모바일 핸드오버·NAT 재바인딩에 유리합니다.
ECH (Encrypted Client Hello)
TLS 1.3 확장으로, SNI를 포함한 ClientHello 내용을 암호화합니다. SSL Inspection 과제 중 하나입니다.

보안 · 터널링

IPsec
IP 계층 암호화·인증 프로토콜군. VPP는 ESP·AH, IKEv2, Policy/Route 기반 배치를 모두 지원합니다.
IKEv2 (Internet Key Exchange v2)
IPsec의 동적 키 교환 프로토콜. VPP는 전용 플러그인으로 구현합니다.
ESP (Encapsulating Security Payload)
IPsec의 암호화·무결성 보호 페이로드 포맷.
Anti-Replay Window
IPsec 수신 측이 재전송 공격을 막기 위해 유지하는 시퀀스 번호 창.
TPROXY (Transparent Proxy)
원본 목적지 IP·포트를 유지한 채 유저스페이스 프록시로 패킷을 우회시키는 기법. 리눅스 커널에 원 구현이 있고 VPP도 이를 구현합니다.
NAT44 / NAT64
IPv4-IPv4 / IPv6-IPv4 주소·포트 변환 기능. VPP는 stateful·endpoint-independent mapping 등을 지원합니다.
SSL Inspection
TLS 트래픽을 중간자로 종단·복호화해 검사한 뒤 재암호화해 전달하는 기법. 동적 leaf 인증서와 내부 CA가 필요합니다.
SRv6 (Segment Routing over IPv6)
IPv6 헤더에 세그먼트 리스트를 실어 경로를 지시하는 라우팅 기술. 모바일 백홀·SFC에 쓰입니다.
VXLAN · GENEVE
L2-over-L3 오버레이 터널링 프로토콜. 데이터센터·SDN 네트워크에서 널리 쓰입니다.

성능 · 오프로드

RSS (Receive Side Scaling)
NIC가 5튜플 해시로 수신 패킷을 여러 큐에 분산해 멀티 코어 처리량을 올리는 기능.
TSO · LRO · GRO
TSO는 송신 시 큰 버퍼를 NIC가 세그먼트 분할, LRO/GRO는 수신 시 여러 세그먼트를 합쳐 상위 계층에 올립니다.
Inline IPsec / Crypto Offload
NIC나 가속기 카드가 암호화·복호화를 수행해 CPU 부담을 덜어 주는 오프로드 기능.
QAT (QuickAssist Technology)
인텔의 암호화·압축 가속기. DPDK cryptodev를 통해 VPP TLS·IPsec에서 활용합니다.
cryptodev
DPDK의 암호화 디바이스 추상화 API. QAT·Nitrox 같은 하드웨어와 소프트웨어 엔진을 같은 인터페이스로 제공합니다.
NUMA (Non-Uniform Memory Access)
CPU 소켓별로 로컬 메모리 접근이 빠른 아키텍처. VPP는 NIC·버퍼·워커를 같은 NUMA 노드에 배치하는 것이 중요합니다.
Hugepage
2MB·1GB 단위의 큰 메모리 페이지. TLB miss를 줄여 패킷 처리 성능을 올립니다. VPP·DPDK 운영 전제 조건입니다.
CPU Pinning
워커 스레드를 특정 CPU 코어에 고정해 캐시 지역성과 스케줄링 지터를 줄이는 기법.

운영 · DPU

CSIT (Continuous System Integration and Testing)
FD.io 프로젝트의 릴리스 성능 테스트 프레임워크. 매 릴리스마다 회귀 벤치마크를 자동 수행합니다.
Stats Segment
VPP가 공유 메모리에 노출하는 카운터 트리. Prometheus exporter·vppctl show가 이 세그먼트를 읽습니다.
DPU (Data Processing Unit)
네트워크·스토리지·보안 워크로드를 오프로드할 목적으로 설계된 지능형 NIC. BlueField 계열이 대표적입니다.
SmartNIC
일반 NIC에 프로그래머블 처리 능력을 추가한 제품군. DPU는 SmartNIC의 한 형태로 볼 수 있습니다.
BlueField
NVIDIA(옛 Mellanox)의 DPU 제품군. ConnectX NIC + Arm 코어를 통합합니다.
Prometheus · Grafana
시계열 모니터링 수집기(Prometheus)와 대시보드(Grafana). VPP Stats Segment를 외부에 노출하는 표준 조합입니다.
TRex
Cisco가 만든 고성능 트래픽 생성기. VPP 벤치마크에서 외부 부하원으로 자주 사용됩니다.
Calico/VPP
Calico CNI의 데이터플레인으로 VPP를 쓰는 구성. Kubernetes 환경에서 Pod 네트워킹을 가속합니다.

VPP 26.02 신규 보강 용어

ABF (ACL Based Forwarding)
ACL 매칭 결과로 다음 홉을 결정하는 정책 기반 라우팅. 5튜플이나 VLAN 같은 조건으로 FIB와 다른 경로를 선택합니다.
DET44 (Deterministic NAT)
캐리어급 NAT44의 특수 모드. 내부 IP가 외부 IP의 특정 포트 범위에 결정론적으로 매핑되어 로그 없이도 사후 추적이 가능합니다.
DS-Lite · MAP · 464XLAT · NPTv6
IPv4/IPv6 전환 메커니즘군. DS-Lite는 IPv6 코어에서 IPv4를 터널링(stateful), MAP은 stateless, 464XLAT은 모바일 IPv6 단말의 IPv4 호환, NPTv6는 stateless IPv6 프리픽스 변환입니다.
BFD (Bidirectional Forwarding Detection)
RFC 5880. 밀리초 단위로 인접 장비 장애를 감지하는 경량 프로토콜. BGP·OSPF 같은 라우팅 프로토콜의 느린 감지를 보완합니다.
LACP (Link Aggregation Control Protocol)
IEEE 802.3ad. 링크 집선 멤버의 상태를 동적으로 협상해 fail-over와 대역폭 합산을 제공합니다.
LLDP (Link Layer Discovery Protocol)
IEEE 802.1AB. 인접 장비의 시스템명·포트 ID·관리 주소를 주기적으로 광고하는 이웃 탐지 프로토콜.
HSI (Host Stack Intercept)
VPP 데이터 평면을 지나가는 플로우를 특정 조건으로 호스트 스택에 가로채는 메커니즘. 투명 L7 검사에 사용됩니다.
DPO (Data-Plane Object)
VPP FIB에서 "이 지점에서 다음에 무엇을 할지"를 캡슐화한 객체. Adjacency, Load Balance, MPLS Label, Replicate 등 유형이 있습니다.
Adjacency
L3 다음 홉의 L2 주소 해석 상태를 나타내는 객체. Complete/Incomplete/Midchain 세 종류.
BIER (Bit Indexed Explicit Replication)
RFC 8279. 패킷 헤더의 비트 마스크로 수신 라우터를 지정해 멀티캐스트를 전달. 트리 상태 유지 없이 확장 가능합니다.
LISP (Locator/ID Separation Protocol)
RFC 6830. IP 주소를 EID(식별자)와 RLOC(위치자)로 분리해 모바일성·멀티호밍을 지원하는 오버레이.
MPLS · SR-MPLS
레이블 스위칭. MPLS는 고정 레이블 경로, SR-MPLS는 binding SID로 segment routing을 MPLS 위에서 구현합니다.
sFlow
RFC 3176. 패킷 N개당 1개를 랜덤 샘플링해 외부 수집기로 보내는 경량 모니터링. 라인레이트에서도 오버헤드가 일정합니다.
IPFIX
RFC 7011~7015. NetFlow v9의 표준화 후속. 모든 플로우를 5튜플·바이트 카운터·시작/종료 타임스탬프로 기록해 수집기에 전송합니다.
perfmon
VPP의 CPU 성능 카운터 측정 플러그인. Intel Top-Down 분석·cache miss·branch miss를 그래프 노드별로 수집합니다.
Packet Generator (PG)
VPP 내장 트래픽 생성기. 외부 TRex 없이 스크립트로 특정 패킷 패턴을 노드에 주입해 재현 테스트를 수행합니다.
nsim (Network Delay Simulator)
VPP 플러그인. 송신 경로에 지연·대역폭·손실을 주입해 WAN 조건을 재현합니다. 리눅스 netem의 VPP 버전.
QPACK
RFC 9204. HTTP/3에서 HPACK(HTTP/2)을 대체하는 헤더 압축 코덱. QUIC의 비순차 스트림 전송을 염두에 두고 설계되어 동적 테이블 갱신이 순서에 의존하지 않습니다. VPP 26.02는 QPACK 인코딩·디코딩을 static table 전용으로 도입했으며 dynamic table은 아직 제공하지 않습니다.
H3 framing layer
HTTP/3 프레임 타입(HEADERS, DATA, SETTINGS, GOAWAY 등)을 파싱·직렬화하는 계층. VPP 26.02에서 http 플러그인에 코어 스켈레톤과 함께 추가되어, 기존 quicly 직결 구조에서 벗어나 VPP 호스트 스택이 h3 프레이밍을 1급으로 처리합니다.
NPol (Network Policies Plugin)
VPP 26.02에서 추가된 네트워크 정책 플러그인 API. Kubernetes NetworkPolicy 스타일의 L3/L4 정책을 VPP 데이터 평면에 매핑하기 위한 기반으로 제안되었습니다. 구체 동작은 릴리스 노트와 src/plugins/npol을 참고하시기 바랍니다.
SFDP (Stateful Data Plane Services)
VPP 26.02에서 도입된 서비스 API. 세션 인지 기반의 상태형 서비스(예: 연결 추적을 활용한 SFC)를 표현하기 위한 메시지군입니다. 기존 ACL/flowprobe 조합과 달리 서비스 체인 관점의 stateful 결정을 공식 API로 올린 점이 핵심입니다.
HTTP CONNECT proxy client
클라이언트가 업스트림 HTTP proxy에 CONNECT host:port를 보내 터널을 여는 패턴. VPP 26.02에서 호스트 스택 측에 client 구현이 추가되어, VPP가 직접 기업 프록시·사이드카를 거쳐 TCP/TLS 세션을 여는 경로를 지원합니다.
Unified ESP crypto+HMAC
VPP 26.02에서 IPsec ESP 경로를 암호화와 HMAC을 단일 cryptodev 오퍼레이션으로 통합한 변경. 이전에는 디스크립터를 두 번 소모하던 AES-CBC + HMAC-SHA 계열도 한 번의 하드웨어 호출로 처리할 수 있어, 작은 패킷이 많은 VPN 게이트웨이에서 CPU/디바이스 디스크립터 소모가 줄어듭니다.
IGE (Intel Gigabit Ethernet) 네이티브 드라이버
VPP 26.02에서 추가된 i211/i225/i226용 1G NIC 전용 PMD. 기존에는 DPDK igb PMD를 경유해야 했으나, 네이티브 경로가 생기면서 DPDK 없이도 소규모 장비(가정용/랩/DPU 저전력 포트)에서 VPP를 돌릴 여지가 커졌습니다.