Chapter 2. Zenoh 아키텍처와 프로토콜 이해
제1장에서 논의한 바와 같이, 제노(Zenoh)는 통신 프로토콜의 패러다임을 위치(Location) 기반에서 데이터(Data) 기반으로 근본적으로 재설계함으로써 분산 시스템의 확장성 및 유연성 문제를 해결한다. 본 장(Chapter 2)에서는 이러한 철학이 실제 소프트웨어 아키텍처와 네트워크 프로토콜 명세(Protocol Specification)로 어떻게 구현되었는지 각 계층(Layer)의 심층적인 구조를 해부하고 분석한다.
1. 글로벌 데이터 공간과 노드(Node) 아키텍처
Zenoh 아키텍처의 가장 큰 특징은 시스템을 구성하는 참여자(통신 노드)를 단일한 형태가 아닌, 기기의 연산 자원 제약 조건(Condition of Constraint)과 네트워킹 역할(Role)에 따라 계층적으로 분리했다는 점이다. 이러한 노드들은 데이터 중심(Data-centric) 네트워크라는 단일 가상 공간(Global Data Space)하에서 협력하며, 물리적 한계를 투명하게 초월한다.
네트워크를 구성하는 핵심 노드 아키텍처는 크게 세 가지(Peer, Router, Client)로 정의된다.
graph TD
classDef routerClass fill:#f4f1f8,stroke:#333,stroke-width:2px;
classDef peerClass fill:#e6f7ff,stroke:#333,stroke-width:1px;
classDef clientClass fill:#fff2e8,stroke:#333,stroke-width:1px;
subgraph "Zenoh Global Data Space"
Router1((라우터 노드 1<br>백본/클라우드))
Router2((라우터 노드 2<br>에지 영역))
Peer1[피어 노드 A<br>로보틱스 제어기]
Peer2[피어 노드 B<br>로보틱스 제어기]
Client1(클라이언트 노드 X<br>마이크로컨트롤러)
Client2(클라이언트 노드 Y<br>센서 단말)
Router1 <-->|WAN 최적화 링크| Router2
Peer1 <-->|P2P 멀티캐스트 기반 탐색| Peer2
Peer1 <-->|동적 스카우팅 연결| Router2
Client1 -.->|단방향 또는 경량 Pub/Sub| Router2
Client2 -.->|단방향 또는 경량 Pub/Sub| Peer2
end
class Router1,Router2 routerClass;
class Peer1,Peer2 peerClass;
class Client1,Client2 clientClass;
- 피어(Peer): 중앙 브로커 없이 각자 라우팅과 상호 탐색(Discovery)을 수행하는 탈중앙화(Decentralized) P2P 노드이다. 모바일 애드혹 네트워크(MANET) 환경이나 다수 로봇 간의 로컬망 구성에 적합하다.
- 라우터(Router): 다중 포워딩(Forwarding) 경로를 관리하고 데이터 트래픽을 집계(Aggregation)하는 중추 노드이다. 주로 클라우드나 중앙 관제 서버 등에 배치되어 백본(Backbone) 네트워크 역할을 수행한다.
- 클라이언트(Client): 최저 전력 소모와 수 킬로바이트(KB) 수준의 극소 램(RAM) 사양을 가진 마이크로컨트롤러(MCU)와 같은 에지 디바이스용 노드이다. 스스로 라우팅 책임을 가지지 않으며 가장 인접한 라우터나 피어 노드에 의존한다.
2. 리소스 네이밍(Naming)과 유연한 라우팅 메커니즘
Zenoh는 물리적인 IP 주소 기반 라우팅에서 탈피하여 URI 방식의 계층적 리소스 이름(Path-like ID) 기반으로 데이터를 라우팅한다. 이를 이름 기반 라우팅(Name-based Routing)이라 명명하며, 네트워크 토폴로지(Topology)에 독립적으로 데이터를 전달할 수 있는 근본적인 메커니즘이 된다.
사용자 혹은 시스템은 와일드카드 기호(*, **)를 조합한 셀렉터(Selector) 문법을 통해 데이터 집합 단위로 리소스를 명시하고, 동적 범위 탐색(Group Filtering)을 수행한다.
불필요한 브로드캐스트 트래픽을 억제하기 위해 라우팅 루프(Routing Loop) 방지 트리와 링크 상태 알고리즘(Link State Algorithm)을 채택하고 있으며, 분리된 네트워크 간에 파티셔닝(Partitioning) 상황이 발생하더라도 자동으로 연결을 재구성(Dynamic Reconfiguration)하는 강력한 회복성(Resilience)을 지닌다.
3. 다중 통신 패러다임: 구독과 분산 질의의 통합
일반적인 통신 미들웨어가 일방향 푸시(Push) 기반의 출판/구독(Publish/Subscribe) 기능만을 제공하는 반면, Zenoh는 분산 질의응답(Distributed Query and Reply) 패턴인 풀(Pull) 기반의 데이터 획득 모델을 와이어 프로토콜(Wire Protocol) 내부에서 네이티브하게 통합한다.
특정 데이터를 보유한 분산 단말이 Queryable 인터페이스를 제공하면, 데이터 요구자(Querier)는 네임스페이스 공간 전체에 질의(Query)를 발송한다. 라우터 및 피어 노드들은 쿼리에 응답할 수 있는 모든 에지 노드에게 쿼리를 라우팅하고, 비동기적으로 반환된 다중 응답(Multiple Replies)을 병합(Consolidation)하여 단일 스트림 형태로 요구자에게 제공한다. 이는 전통적인 RPC(Remote Procedure Call)의 한계를 넘어, 네트워크 시스템 전체가 거대한 분산 데이터베이스처럼 작동하게 하는 핵심 원리이다.
4. 와이어 프로토콜(Wire Protocol)과 플러그형 전송 계층
“최소의 오버헤드, 극한의 저지연(Minimal Overhead, Ultra-low Latency)“이라는 Zenoh의 개발 철학은 고도로 최적화된 패킷 프레이밍(Framing) 규격에서 그 진가를 발휘한다.
와이어 프로토콜은 바이트 스트림 레벨에서 데이터 단편화(Fragmentation)와 메시지 배치 처리(Batching)를 동적이고 선언적으로 수행하여 통신 물리 계층의 MTU(Maximum Transmission Unit) 효율을 극대화한다.
또한 플러그인 기반 전송 계층(Pluggable Transport Layer) 아키텍처를 도입하여 TCP, UDP 뿐만 아니라 직렬 통신(Serial), 블루투스 저전력(BLE), 웹소켓(WebSocket), QUIC, 그리고 동일 호스트 내 프로세스 간 통신을 위한 공유 메모리(Shared Memory) 통신 방식까지 동일한 프로토콜 평면 위에서 매끄럽게 연동한다. 이와 동시에 우선순위 대기열(Priority Queueing) 구조를 갖춘 능동적 혼잡 제어(Congestion Control) 알고리즘과 배압(Backpressure) 처리 메커니즘을 적용하여 예측하기 어려운 트래픽 증감 속에서도 시스템 전반의 서비스 품질(QoS, Quality of Service)을 보장한다.
여기에 인네트워크 스토리지(In-Network Storage) 백엔드 개념을 결합함으로써, 캐싱(Caching) 레이어를 프로토콜 계층에 내재화시켜 이동하는 데이터(Data in Motion)와 데이터 저장소에 영구히 기록된 데이터(Data at Rest)를 완벽하게 통합한다. 본 장의 이어지는 세부 스펙 분석을 통해 상기 설명한 아키텍처 요소들을 각각 상세히 톺아보고 분산 네트워크 설계의 전문적 기반 역량을 함양하라.