13.7.4.3 대역폭 소진 시 극한의 하드 리얼타임(Hard Real-time) 사수를 위한 QoS(Quality of Service) 통제 지침
자율주행이나 미사일 제어망과 같이 극한의 하드 리얼타임(Hard Real-time)을 다루는 분산 통신 인프라에서, 가장 무서운 적은 완전히 단절된 네트워크(Disconnection)가 아니다. 바로 “연결은 되어 있으되 대역폭이 소진되어 엿가락처럼 늘어지는 지연(Congestion & Starvation)“이다.
통신사 5G 라우터의 대역폭 99%를 누군가 점유하여 데이터 패킷들이 10초씩 라우터 버퍼에 갇혀 버렸을 때, 평범한 TCP 통신 프로토콜은 “언젠간 도착하겠지“라는 낭만에 기대며 패킷을 무한정 재전송(Retransmission)하려 든다. Zenoh-Flow 급의 데이터플로우 아키텍처는 이런 구시대적 평등주의를 절대 용납하지 않는다.
본 절에서는 물리적 대역폭이 고갈되고 네트워크 망이 숨통을 조여올 때, 자비 없는 QoS(Quality of Service) 폭력으로 쓰레기 패킷들을 자율 학살하고, 왕의 목숨(Critical Control Token) 하나만을 강제 방어해 내는 스케줄링 및 라우팅 통제 런북을 갈파한다.
1. 재전송(Retransmission)의 오류와 TCP 회피 전술
하드 리얼타임 시스템에 있어 “데이터의 무결점 도착 보장(TCP Reliability)“은 심각한 독재(Tyranny)로 작용한다.
LiDAR 1번 패킷이 공중에서 유실되었을 때, TCP는 그 잃어버린 1번 패킷을 재전송받기 위해 뒤이어 도착한 2, 3, 4번의 신선한 최신 패킷들을 앱 메모리로 올리지 않고 커널 버퍼에 가둬둔다(Head-of-Line Blocking). 결국 엔진 연산 스레드는 2초 뒤에야 뒤늦게 도착한 낡은 1번 패킷을 받고, 그제야 2, 3, 4번 패킷을 구시대 유물처럼 받아먹게 된다.
하드 리얼타임 엣지 아키텍트는 이를 회피하기 위해 Zenoh 라우팅 파이프라인의 핵심 송신망을 QUIC 혹은 UDP 기반의 QoS.Reliability=Unreliable 로 강제 격하시킨다.
// [극한 대역폭에서의 하드 리얼타임 방어 런북]
// 1. 영상 스트림 배관은 잃어버리면 끝이다(Unreliable). 재전송 따위를 시도하여
// 네트워크 대역폭(Bandwidth)을 낭비하는 짓을 커널 레벨에서 금지한다!
pub_opt_video = z::PublisherOptions::default()
.reliability(z::Reliability::Reliable(false)); // 절대 재전송 금지!
로봇이 1초 전의 1번 프레임을 유실했다 한들, 시스템은 쿨하게 그 공백을 잊고 가장 최신의 돌연변이 프레임(4번 프레임)만을 취해 현실을 인식(Real-Time Context)하는 것이 시스템 생존의 핵심이다.
2. 혼잡 제어(Congestion Control)와 큐 강제 도살 (Drop Policy)
망이 막혀서 Zenoh 코어의 출력 버퍼(Tx Buffer)로도 데이터가 나가지 못하고 데몬 메모리에 고이기 시작할 때, 어떻게 대응할 것인가?
구식 프레임워크는 메모리 할당(malloc)을 끝없이 태우며 OOM(Out of Memory)으로 서버를 폭파시킨다.
그러나 하드 리얼타임 개발자는 L7 소켓 바로 위단에 QoS Drop Policy (버절 정책) 의 단두대를 세워둔다.
// 2. 큐가 막혀 발이 묶였을 땐?
// 낡은 패킷을 버리고 방금 온 최신 패킷을 큐의 왕좌에 올린다(Drop-Oldest).
pub_opt_telemetry = z::PublisherOptions::default()
.congestion_control(z::CongestionControl::Drop); // Block(마비) 이 아니라 Drop(살육)을 택한다!
이 코드는 파이프라인이 생성한 텐서 객체가 네트워크 밖으로 나가지 못하고 정체될 경우, 뒤에서 밀려오는 신선한 패킷에게 최우선 자리를 내어주고 과거의 자신을 자발적으로 삭제(Drop)하도록 데몬 엔진에 무자비한 자해 권한을 부여하는 것이다. 결국 대역폭이 1kbps 로 쪼그라들었다 할지라도, 그 1kbps 의 구멍을 뚫고 지나가는 패킷은 “전 지구상에서 방금 만들어진 가장 신선하고도 치명적인 패킷” 한 줌임이 보장된다.
3. 대역폭 캡(Bandwidth Cap)과 트래픽 쉐이핑(Traffic Shaping) 제어
QoS 통제의 마침표는 특정 컴포넌트(Background)가 전체 고속도로 대역폭을 모두 집어삼키는 권력 독점 방지(Traffic Shaping)에 있다.
클라우드로 비디오를 전송하는 파이프라인의 싱크 노드(Video Sink Node) 포트 쪽에 초당 전송량 제한(Rate Limit)을 선언적으로 주입한다. 네트워크 망이 1Gbps 급으로 아무리 광활하다 할지라도, 비디오 스트림은 운영체제 레벨에서 10Mbps 캡(Cap)을 씌워 버리는 것이다.
망 대역폭 전체를 소진할 여지를 원천적으로 말살하여, 항상 파이프의 90%를 빈 공간(Headroom)으로 진공 상태로 만들어두는 결단.
자율주행의 브레이크 긴급 펄스가 발생했을 때 그 패킷이 큐 대기 시간 0, 네트워크 체증 0, 재전송 딜레이 0 의 진공관 속 자유낙하 속도로 통신망을 관통(Bypass)하게 만드는 것. 이것이 자원(Resource)을 낭비해 가면서까지 빈 공간을 유지하여 절대적 찰나(Latency 0)를 사수하는 극한의 QoS(Quality of Service) 통치 철학이다.