Rust로 분산 메시 네트워크 구축 — 글로벌 사우스의 교훈
Source: Dev.to

2.6 십억 명이 신뢰할 수 있는 인터넷 접근이 부족합니다. 재난이 발생하거나 인프라가 무너지거나 커뮤니티가 외딴 지역에 있을 때—전통적인 통신은 가장 중요한 협력이 필요할 때 정확히 무너지게 됩니다.
저는 케냐 나이로비에 사는 사이버보안 학생입니다. 커뮤니티가 연결성을 잃었을 때 어떤 일이 일어나는지 직접 보았습니다: 홍수 후에 가족들이 서로 확인할 수 없고, 구조팀은 조율에 어려움을 겪으며, 활동가들은 안전하게 조직할 수 없습니다.
그래서 저는 GhostWire를 만들었습니다 — 중앙 서버 없이도 작동하는 탈중앙화·검열 저항 메시 커뮤니케이션 플랫폼.
GhostWire란?
GhostWire는 Rust로 작성된 피어‑투‑피어 암호화 통신 플랫폼입니다. 서버에 연결하는 대신, 장치들이 서로 직접 연결됩니다. 메시지는 사용 가능한 경로를 따라 노드에서 노드로 전송됩니다.
- 노드가 오프라인이 되면, 메시는 그 노드를 우회하도록 라우팅됩니다.
- 인터넷이 끊기면, GhostWire는 Wi‑Fi Direct, Bluetooth, 혹은 LoRa 라디오까지 전환합니다.
Live site:
GitHub:
아키텍처
네트워킹: libp2p
우리는 libp2p — IPFS와 Ethereum이 사용하는 동일한 P2P 네트워킹 스택을 사용합니다. 이는 피어 탐색, 연결 설정, 멀티플렉싱을 처리합니다. 그 위에 라우팅을 위한 S/Kademlia‑강화 DHT와 메시지 전파를 위한 Gossipsub을 실행합니다.
// Simplified peer discovery
let swarm = SwarmBuilder::with_new_identity()
.with_tokio()
.with_tcp(
tcp::Config::default(),
noise::Config::new,
yamux::Config::default,
)?
.with_behaviour(|_| Behaviour::new())?
.build();
암호화: 방어 심화
모든 메시지는 디바이스를 떠나기 전에 종단 간 암호화됩니다:
| 레이어 | 알고리즘 | 목적 |
|---|---|---|
| 대칭 | AES‑256‑GCM | 메시지 암호화 + 무결성 |
| 키 교환 | X25519 | 완전 전방 비밀성 |
| 서명 | Ed25519 | 신원 검증 |
| 포스트‑양자 | ML‑KEM‑768 | 미래 대비 (계획 중) |
서버도, 릴레이도, 중간 노드도 평문을 볼 수 없습니다.
AI‑기반 라우팅
여기서 GhostWire가 흥미로워집니다. 고정 라우팅 규칙 대신, 우리는 바르셀로나의 GuifiSants — 세계에서 가장 큰 커뮤니티 메시 네트워크 중 하나 — 로부터 실제 메쉬 네트워크 데이터를 사용해 AI 모델을 학습했습니다.
- L1 — LightGBM 이상 탐지기: AUC 1.0, 76.7 µs 추론, ONNX로 내보내어 Rust에서 ONNX Runtime을 통해 연결.
- L3 — 그래프 신경망: 31일 동안 63개의 노드에서 7,931개의 샘플로 학습. 실제 환경에서 어떤 경로가 가장 좋은지 학습합니다.
# Training pipeline (simplified)
model = lgb.LGBMRegressor(
n_estimators=500,
learning_rate=0.05,
max_depth=7,
num_leaves=31,
)
model.fit(X_train, y_train)
onnx_model = convert_lightgbm(model, initial_types=initial_type)
onnx.save(onnx_model, "ghostwire_routing.onnx")
이 모델은 76.7 µs에 실행됩니다 — 라즈베리 Pi에서도 실시간 라우팅 결정을 내리기에 충분히 빠릅니다.
7개의 전송 레이어
| 전송 | 범위 | 사용 사례 |
|---|---|---|
| Wi‑Fi Direct | ~100 m | 도시 메시, 디바이스‑투‑디바이스 |
| Bluetooth LE | ~50 m | 실내, 저전력 |
| LoRa | ~15 km | 농촌, 장거리 |
| WebRTC | Internet | 네트워크 간 브리지 |
| TCP/IP | Internet | 표준 연결 |
| Reticulum | Multi‑hop | 아마추어 라디오 메시 |
| Briar | Bluetooth/Wi‑Fi | 활동가 통신 |
GhostWire는 사용 가능한 최적의 경로를 자동으로 선택합니다. 인터넷이 없나요? RF 메시로 전환합니다. Wi‑Fi가 없나요? 블루투스로 전환합니다. 메시는 스스로 적응합니다.
왜 Rust인가?
- GC 없는 메모리 안전 – GhostWire는 리소스가 제한된 디바이스(라즈베리 Pi, 구형 노트북)에서 실행됩니다. 비상 통신 중에 가비지 컬렉터 일시 정지를 감당할 수 없습니다.
- 두려움 없는 동시성 – 네트워킹 스택은 수백 개의 동시 피어 연결을 처리합니다. Rust의 소유권 모델은 데이터 레이스에 대한 걱정을 없애줍니다.
- 성능 – LightGBM 추론이 76.7 µs에 실행됩니다. 암호화는 하드웨어 가속됩니다. Rust를 사용하면 하드웨어에서 매 마이크로초를 짜낼 수 있습니다.
인간적인 측면
GhostWire는 단순한 기술 프로젝트가 아닙니다. 그것은 하나의 철학에 기반합니다:
힌두교와 불교 우주론에서 인드라의 그물은 무한한 웹입니다. 각 교차점에는 보석이 걸려 있고, 그 보석은 모든 다른 보석에 비춰집니다. 어느 보석도 더 중요하지 않습니다. 그물은 중심도, 가장자리도 없습니다.
원래 인터넷 설계자들은 수천 년 동안 아프리카 철학이 인코딩해 온 것을 독립적으로 재발견했습니다: 중앙 권위보다 상호 관계에 기반한 시스템이 더 회복력 있고, 더 공평하며, 존재 자체와 더 잘 맞는다는 점을.
우리는 GCD4F 2026 대회(글로벌 기후 데이터 포 미래) “AI for Society” 트랙의 일환으로, 케냐 오픈 대학교를 대표하여 이 프로젝트를 구축하고 있습니다.
우리는 기여자를 필요로 합니다
GhostWire는 AGPL‑3.0 라이선스를 가지고 있으며 활발히 기여자를 찾고 있습니다:
- Rust developers – libp2p 네트워킹, 전송 레이어, 암호화
- AI/ML engineers – GNN 모델 학습, 라우팅 최적화
- Security researchers – 독립 감사, 위협 모델링
관심이 있으시면 GitHub 저장소에서 이슈를 열거나 풀 리퀘스트를 제출해 주세요. 함께라면 세계가 오프라인이 되더라도 메쉬를 살아있게 유지할 수 있습니다.
# Eat Modeling
역할
- 프론트엔드 개발자 – React/TypeScript 대시보드
- 문서 작성자 – 가이드, 튜토리얼, 번역
시작하기
- Good first issues는 GitHub에 라벨이 붙어 있습니다.
- 우리의
CONTRIBUTING.md에는 자세한 설정 안내가 포함되어 있습니다.
Links
- Website:
- GitHub:
- Docs:
- Security:
Built in Nairobi, for the world. 🇰🇪
