11.11.1.1 터미널 스니퍼(Sniffer) 기반 ROS2 멀티캐스트 네트워크 도청 및 검증
로봇 운영체제(ROS2) 생태계에 Zenoh 브릿지(Bridge)를 연동시킬 때, 퍼블리셔(Publisher) 노드를 기동했음에도 서브스크라이버(Subscriber) 측에서 어떠한 콜백 트리거도 발생하지 않는, 이른바 “가시성 상실(Loss of Visibility)” 현표를 흔히 겪는다. 이때 대부분의 엔지니어는 자신의 파이썬 코드나 C++ 콜백 로직부터 의심한다.
하지만 원인의 99%는 물리적/논리적 네트워크 층위의 단절에 있다. 특히 ROS2가 노드를 탐색하기 위해 발산하는 멀티캐스트(Multicast) 패킷이 라우터, 스위치 혹은 도커(Docker) 브릿지 계층에서 조용히 학살(Drop)당하는 현상이다. 본 절에서는 코드 분석을 전면 중단하고, 가장 기저의 프로토콜 계층으로 낙하하여 터미널 스니퍼(Sniffer)를 통해 패킷의 숨결을 직접 도청(Eavesdropping)하고 검증하는 런북 체계를 선언한다.
1. ROS2 고유 디스커버리(Discovery) 붕괴의 원리
ROS2 DDS(Data Distribution Service)는 초기 구동 시, 네트워크 대역폭 전개를 위해 통상 UDP 포트 7400 번대 대역을 타겟으로 멀티캐스트 비콘(Beacon)을 살포한다. 이 “내가 여기 있다“라는 핑(Ping)이 Zenoh DLT 브릿지의 귀에 들어가야 비로소 브릿지가 ROS2 노드를 글로벌 패브릭(Fabric)으로 승격시킨다.
그러나 클라우드 VM이나 복잡한 사내 엔터프라이즈 와이파이(Wi-Fi) 망에서는 보안과 트래픽 폭주 방지를 명목으로 이 UDP 멀티캐스트 트래픽(예: 239.255.0.1)을 스위치 단에서 Drop 패킷으로 분류해 버린다. 멀티캐스트가 막혀 있으니 ROS2 노드는 평생 메아리 없는 허공에 소리칠 뿐이고, 이 상태에서 Zenoh 브릿지의 설정 파일 파라미터를 튜닝하는 것은 완전한 삽질(Waste of Time)에 불과하다.
2. Tcpdump 및 Wireshark-CLI 기반 멀티캐스트 차단 검증망
응용 계층 디버깅의 환상에서 빠져나와 실질적인 커널-레벨 네트워크 도청 장치, tcpdump를 기동하라. 대상은 루프백 인터페이스(lo)가 아닌 물리 네트워크 장치 인터페이스(예: eth0 또는 wlan0)다.
# 로봇 단말(Edge)의 터미널에서 ROS2 멀티캐스트(UDP) 탐지 명령 발포
sudo tcpdump -i eth0 -n udp portrange 7400-7410
- 이 덫을 놓고 ROS2 퍼블리셔 스크립트(
ros2 run ...)를 백그라운드에서 스타트업(Start-up)시킨다. - 만약 콘솔 창이 정적 속에 잠겨 있고 RTPS 트래픽 로그가 단 한 줄도 흘러나오지 않는다면, 운영체제의 방화벽 인바운드 혹은 아웃바운드 규칙 층위에서부터 숨통이 끊어져 있는 상태다.
- 만약 위 패킷은 잡히지만 “서로 주고받는(Ping-Pong)” 양방향 패킷이 아니라 오직
192.168.1.100 > 239.255.0.1의 일방적인 통보만 잡힌다면? 이는 L2 스위치 장비가 멀티캐스트 IGMP 스누핑(Snooping) 프로토콜을 파괴하고 있음을 뜻한다.
3. Zenoh 커맨드라인 툴(zenoh-cli)을 통한 이종망 교차 도청
ROS2 DDS단이 아닌, Zenoh 브릿지를 통과한 직후의 라우팅 망이 살아있는지를 보려면 zenoh 생태계의 자체 스니퍼(zenoh-cli)를 전술 타격기로 파견해야 한다.
브릿지는 성공적으로 기동되었다고 가정했을 때, 클라우드 관제 서버(또는 다른 PC)에서 다음과 같이 원거리 도청 툴을 개방한다.
# 해당 라우터에 접속하여 특정 ROS Topc("rt/cmd_vel")이 Zenoh 망으로 번역되어 오는지 도청
zenoh_sub -e tcp/192.168.1.10:7447 -k "rt/cmd_vel"
- 로봇(Edge)에서 조이스틱을 꺾었을 때(ROS2 Publish), 위
zenoh_sub터미널에 헥스(Hex) 바이트나 JSON이 우수수 쏟아진다면, ROS2와 Zenoh 브릿지 간의 접합은 100% 정상이다. - 이때만약 파이썬(
zenoh-python) 클라이언트에서 응답이 없었다면, 그것은 이제 네트워크 엔지니어링의 문제가 아니라 순수 파이썬 데몬의 디코딩, 즉 소프트웨어 레이어의 비즈니스 오작동임이 증명된 것이다.
이와 같이 터미널 기반의 듀얼 스니핑(ROS2 층위 도청, Zenoh 층위 도청) 전술에 근거하여 문제의 소재를 하드웨어(방화벽), 미들웨어(브릿지), 응용프로그램 계층 중 어느 도메인의 영역인지 단숨에 절단(Isolation)해버리는 과정이 진단(Diagnostics) 엔지니어의 첫 번째 율법이다.