본문으로 바로가기

네트워크 지터

균일하게 보낸 패킷이 들쭉날쭉 도착하는 것을 송신·도착·버퍼재생 세 타임라인으로 실행하고, 지터 버퍼의 거래(지연↔요동)를 언더런으로 보여준다.

1 / 8통화 음성을 20ms 간격으로 균일하게 보냅니다. 문제는 도착입니다 — 큐잉·경로 차이로 패킷마다 지연이 다릅니다. 그 '지연의 요동'이 지터입니다.
송신 — 20ms 균일 간격
12345
도착 — 간격이 요동친다 (지터 41.3ms)
12345
지터 버퍼(40ms) 재생 — 다시 균일하게
12345
단계 목록 · 키보드 ←/→ 이동, Space 재생

지연이 '얼마나 늦는가'라면 지터는 '늦는 정도가 얼마나 요동치는가'다 — 실시간 미디어를 죽이는 것은 평균 지연이 아니라 요동이다.

왜 헷갈리는가

"핑은 좋은데 통화가 끊겨요"의 범인이 지터다. 평균 지연 40ms의 회선도 20~85ms를 오가면 음성 재생 줄이 무너진다. 반대로 평균 200ms라도 요동이 없으면 통화는 어색할 뿐 끊기지 않는다.

애니메이션이 보여주는 것

송신 줄은 20ms 간격으로 완벽히 균일하다. 도착 줄은 큐잉·경로 차이로 간격이 요동친다 — 그 편차의 평균이 화면의 지터 실측값이다.

세 번째 줄이 해법이다. 지터 버퍼는 첫 패킷을 40ms 묵혔다가 다시 균일한 간격으로 내보낸다. 단, 4번 패킷처럼 버퍼 한도보다 늦게 온 것은 결국 끊긴다(언더런). 버퍼를 키우면 살릴 수 있지만 대화 지연이 그만큼 늘어난다.

어디서 생기고, 어떻게 줄이는가

지터의 대부분은 경로 중간의 큐에서 생긴다.

  • 원인: 라우터 큐잉(혼잡 시 가변 대기), 경로 변경, 무선 구간 재전송, 큰 패킷 뒤에 낀 작은 패킷(직렬화 지연).
  • 측정: RTP의 RFC 3550 지터 공식이 이 애니메이션과 같은 '도착 간격 편차'를 지수평활로 잰다. ping의 mdev, iperf의 jitter 항목도 같은 감각.
  • 완화: QoS(음성 패킷 우선 큐), 지터 버퍼 크기의 적응형 조정(WebRTC가 실제로 함), 혼잡 구간 우회.
  • 설계 감각: 화상회의 지터 버퍼는 보통 수십 ms — 그 이상 요동치는 회선에서는 버퍼가 아니라 경로를 고쳐야 한다.

지연·지터·손실의 삼각형

실시간 품질 지표는 셋이 한 묶음이다. 지연은 왕복 시간, 지터는 그 요동, 손실은 아예 안 옴. 지터 버퍼는 지터를 지연으로 바꿔 흡수하는 장치고, 언더런은 지터가 손실로 전락하는 순간이다 — 세 지표가 서로 교환된다는 감각이 실시간 시스템 설계의 출발점이다.

기억할 것

  • 지터 = 지연의 요동. 평균이 아니라 편차가 실시간 품질을 정한다.
  • 지터 버퍼는 지연을 내고 요동을 사는 거래다 — 공짜가 아니다.
  • 버퍼보다 늦은 패킷은 언더런 — 지터가 손실로 바뀌는 순간.
  • 핑 평균이 좋아도 통화가 끊기면 mdev(편차)를 봐야 한다.
네트워크 지터 | KIE