11.6.4.3 트래픽 파열(Burst) 현상 억제를 위한 History_length 최소화 튜닝 기법
분산형 DDS 코어 엔진과 Zenoh 브릿지 파이프라인의 맞닿은 곳에서는 트래픽의 극심한 맥동 파열음, 즉 트래픽 버스트(Traffic Burst) 현상이 유발된다.
로컬 센서는 30Hz라는 일정한 템포로 데이터를 뿜어내지만, 무선 네트워크(LTE/Wi-Fi)를 타는 외부망(WAN)은 전파 간섭으로 인해 잠시 멈췄다가 일거에 통로가 뚫리기도 한다. 이때 송신 데몬의 메모리 큐(Queue)에 고여 있던 수십 장의 카메라 이미지 더미가 한 덩어리가 되어 수십 MB의 데이터 폭탄으로 변모하여 네트워크 소켓으로 수 밀리초 내에 때려 부어지는 것이다.
이 악의적인 트래픽 한파(Burst)는 라우터를 마비시키고 TCP 체제의 재전송 타임아웃 지옥을 불러들인다. 본 절에서는 네트워크 파괴의 요인인 큐 덩어리를 잘게 부수고 억압하기 위해, ROS2 QoS 설계의 심연인 History Depth(Length) 파라미터를 최소치로 도려내는 보수적인 수술 런북을 거행한다.
1. History_length의 거대 버퍼링과 인위적 지터(Jitter) 생성
만약 로봇 카메라 스트림 노드의 퍼블리셔 QoS가 History=KEEP_LAST에 Depth=10으로 설정되었다고 가정하자.
ROS2 기본 튜토리얼에서 의심 없이 베껴온 이 숫자 10 은 대용량 데이터 전송망에서는 지뢰와도 같다.
통신망의 대역폭 핑이 순간적으로 나빠졌을 때(지하 주차장 등), 통신 코어는 “일단 10장(약 40MB 분량)까지는 버리지 말고 들고 있어라” 라며 송신 스레드 버퍼를 맹렬히 부풀린다.
수 초 후, 차량이 5G 기지국 커버리지로 나와 통로가 뚫리는 순간, 통신 스레드는 이 해묵은 과거의 쓰레기 같은 이미지 10장을 시공간을 초월해 일시에 5G 모뎀으로 후려갈긴다.
결과적으로 관제 대시보드 화면에서는 멈춰 있던 화면이 10배속 빨리 감기처럼 “드르륵” 재생된 직후 다시 정상화되는 불쾌하고 기괴한 지터(Jitter) 영상 스트림을 보게 된다. 그리고 그 40MB에 달하는 무더기 발사로 인해 주변의 선량한 제어 패킷들마저 핑 초과로 압살당하게 된다.
2. History Depth = 1의 극한 통제론
이 치명적인 트래픽 버스트의 뿌리를 뽑으려면 버퍼 저장고의 몸집을 강제 철거해야만 한다. 대용량 미디어, 포인트 클라우드, 혹은 초당 100회씩 상태를 갱신하는 짐벌(Gimbal) 제어 파이프라인의 퍼블리셔 및 서브스크라이버 QoS의 큐 길이는 예외 없이 Depth = 1 로 파괴 및 단일화되어야 한다.
// [Go 기준 Zenoh Pub/Sub 모델의 버퍼 통제 룰셋]
// 버퍼 허용치(queue_size) 1 강제
var options zenoh.SubscribeOptions
options.Reliability = zenoh.ReliabilityBestEffort // 재전송 파괴
// 어플리케이션 측 캐싱 및 파열 버스트 강제 예방
session.DeclareSubscriber("camera/front_left/image_raw/compressed", myCallback, zenoh.QueueSize(1))
ROS2 C++ 환경 역시 마찬가지다. rclcpp::QoS(1) 옵션을 때려 박아야 한다.
이렇게 하면 망이 막히는 순간, 0.03초 전의 이전 영상 프레임 따위는 Queue에 머무는 것을 허가받지 못하고 영원히 파기(Drop) 당한다. 네트워크 지하실에서 걸어 나온 로봇이 가장 처음 클라우드에 쏘는 데이터는 10장짜리 파열 탄창이 아니라, 지금 막 눈을 뜬 단 1장의 깔끔한 최신 정보다.
3. 네트워크 파이프 평활화(Smoothing)의 위상
큐 뎁스의 최소화 투입은 결과론적으로 막대하게 출렁거리던 트래픽 그래프 레이트를 일직선의 우아한 흐름(Smoothing)으로 탈바꿈시킨다.
버스트(Burst)는 인프라스트럭처의 적이다. 대용량 패킷이 뭉쳐서 튀어나오면 L2 스위칭 패브릭과 공유 무선 대역폭 자원(Resource Block)이 찢어지며 망 전체에 동반 장애(Cascading Failure)를 유발한다.
엔지니어는 “큐(Queue)는 데이터 손상을 막아주는 보험“이라는 아마추어적 관념을 찢어 발겨야 한다.
분산 실시간 인프라망에서 버퍼 큐는 그 자체로 지연(Latency)의 온상이요, 트래픽 폭압의 저장고다. 최소한의 틈새(Depth=1)만을 남기고 과거의 망령을 무자비하게 폐기하는 용기 있는 파라미터 세팅만이 초저지연 스웜(Swarm) 관제를 구축하는 척추 코덱(Spinal Codec)임을 각인하라.