TL;DR

  • TCP 경로 진단은 연결의 다운로드·업로드 경로에서 패킷 손실, 재전송, 지연, 혼잡 및 TCP 설정 상태를 확인하는 기능임
  • 테스트 길이는 짧음(방향별 약 10초), 보통(방향별 약 20초), 긴 길이(방향별 약 30초)로 선택 가능함
  • IPv4와 IPv6 비교는 테스트를 두 번 실행하므로 데이터와 시간이 약 두 배로 듦
  • 서버 측 TCP 카운터와 연결 타임라인을 통해 각 전송의 경로 상태 및 서버 전체 네트워크 이벤트를 함께 확인함
  • 재전송, RTO, 혼잡 윈도우, RTT, 수신 윈도우, ECN, 경로 MTU 및 TCP 옵션을 바탕으로 네트워크 문제와 서버 측 제한을 구분함

테스트 설정

  • 테스트 길이
  • 짧음 — 방향별 약 10초
  • 보통 — 방향별 약 20초
  • 긴 길이 — 방향별 약 30초
  • 진단 실행
  • 중지
  • 고급 설정
  • 샘플링 간격
  • 50ms
  • 100ms
  • 250ms
  • 최대 다운로드
  • 64MiB
  • 256MiB
  • 1GiB
  • 4GiB
  • 최대 업로드
  • 32MiB
  • 128MiB
  • 512MiB
  • 2GiB
  • 업로드 건너뛰기
  • 다운로드 건너뛰기
  • IPv4와 IPv6 비교 — 테스트를 두 번 실행하므로 데이터와 시간이 약 두 배로 듦
  • 준비 완료 상태이며, 진단 실행을 누르기 전까지 아무것도 전송되지 않음

IPv4와 IPv6

  • IPv4와 IPv6 경로를 비교하는 테스트임

연결 상태

  • 현재 연결에 대한 진단 결과를 표시하는 영역임

확인된 내용

  • 테스트에서 확인된 문제와 상태를 표시하는 영역임

서버 운영자용

  • 이 인스턴스 자체의 설정에 관한 참고 사항임
  • 경로상의 장애가 아니라 서버 튜닝 및 트래픽 셰이핑에 관한 내용임
  • 서버를 운영하는 담당자와 공유할 수 있는 정보임

문제 지표

  • 최악의 상태부터 정렬된 문제 지표임
  • 각 전송을 수행한 정확한 연결에 대한 서버 측 TCP 카운터임
  • 다운로드 경로는 서버에서 사용자로 향하는 방향임
  • 업로드 경로는 사용자에서 서버로 향하는 방향임
  • 각 행을 클릭하면 해당 지표의 의미를 확인할 수 있음
  • 지표 | 경로 | 값 | 심각도

타임라인

  • 서버가 확인한 사용자 연결 목록임
  • 서버에서 ss -tin으로 확인하는 것과 같은 필드를 표시함
  • 마지막 요청을 전달한 연결을 표시함
  • 테스트 중 서버 전체에서 발생한 TCP 이벤트임
  • 서버의 /proc/net/netstat에서 수집한 카운터임
  • 사용자 연결만이 아니라 서버의 모든 연결을 대상으로 하므로, 유휴 상태에 가까운 서버에서는 보조 근거로 읽고 부하가 높은 서버에서는 주의해서 해석해야 함
  • 카운터 | 다운로드 중 | 업로드 중 | 의미

네트워크 경로

  • 네트워크 경로의 진단 결과를 표시하는 영역임

텍스트 보고서

  • 포럼 게시물, 인터넷 서비스 제공업체(ISP) 문의 또는 이슈에 붙여 넣을 수 있는 보고서임
  • 현재 세션의 IP 주소와 포트 외에는 개인 데이터를 포함하지 않음
  • 보고서 복사
  • .txt 다운로드
  • 원시 JSON 표시

용어집

  • 재전송(retransmission, bytes_retrans, total_retrans)
  • 서버가 데이터를 전송했지만 확인 응답을 받지 못해 다시 전송한 경우임
  • 인터넷에서는 일정 수준의 재전송이 정상이며, 0.1% 미만이 일반적인 기준임
  • 1% 초과는 다운로드 경로에서 혼잡한 링크, 불량 케이블 또는 와이파이(Wi-Fi), 결함이 있는 회선 카드, 트래픽을 의도적으로 제한하는 라우터 등이 패킷을 누락시키고 있음을 의미함
  • RTO·타임아웃(RTO / timeout, total_rto, total_rto_time)
  • 손실 복구 중 가장 심각한 유형임
  • 누락된 데이터가 많아 TCP가 대기를 포기하고, 보통 200ms 이상인 재전송 타임아웃 기간 동안 멈춘 뒤, 패킷 하나 크기의 윈도우에서 다시 시작해 점진적으로 증가시키는 상황임
  • 전송이 “1초 동안 멈추는” 것처럼 보이는 현상임
  • 짧은 테스트에서 RTO가 한 번만 발생해도 주의할 가치가 있음
  • 혼잡 윈도우(cwnd)와 ssthresh
  • 서버가 확인 응답을 기다리기 전에 전송 중 상태로 둘 수 있는 데이터의 양임
  • 정상적으로 진행되면 증가하고, 손실이 발생할 때마다 절반 또는 1까지 감소함
  • 톱니 모양의 변화는 정상이나, 소수의 패킷으로 반복해서 붕괴하면 송신자가 계속 손실을 만나 처리량이 저하됨
  • 순서가 뒤바뀐 패킷(out-of-order packets, rcv_ooopack) — 업로드 경로
  • 사용자에게서 서버로 도착한 패킷의 순서가 전송 순서와 다른 경우임
  • 손실 이후 나중에 전송된 패킷이 재전송 패킷보다 먼저 도착하면 소량이 발생할 수 있음
  • 손실 없이 지속적으로 순서가 뒤바뀌면 패킷별 부하 분산 또는 비대칭·다중 경로 라우팅의 전형적인 신호임
  • 사용자 패킷이 서로 다른 경로를 거쳐 경주하듯 도착하면 TCP가 패킷 손실로 오인해 불필요하게 속도를 낮춤
  • 확인된 재정렬(reordering seen, reord_seen, reordering) — 다운로드 경로
  • 서버가 보낸 데이터가 사용자에게 순서가 뒤바뀐 상태로 도착했음을 사용자의 확인 응답을 통해 서버가 감지한 경우임
  • reordering은 손실을 선언하기 전에 커널이 허용하는 순서 이탈 패킷 수임
  • 기본값은 3이며, 값이 높을수록 재정렬이 발생하는 경로에 적응했음을 의미함
  • DSACK 중복(DSACK duplicates, dsack_dups)
  • 서버가 이미 보유한 데이터를 재전송했다고 사용자가 알린 경우임
  • 원본이 손실된 것이 아니라 재정렬이나 갑작스러운 지연으로 늦게 도착한 불필요한 재전송임
  • 실제 손실은 적은데 DSACK 중복이 많으면 경로가 패킷을 누락시키기보다 재정렬시키는 상황임
  • RTT, 최소 RTT 및 큐잉(queueing, 버퍼블로트(bufferbloat))
  • 왕복 시간(RTT)임
  • 최소 RTT는 물리적 경로의 지연을 나타내며, 데이터가 흐르는 동안 RTT가 최소값의 몇 배로 증가하면 대개 가장 느린 링크의 버퍼 등 어딘가의 큐에 패킷이 쌓인 상태임
  • 패킷 손실이 없어도 지연으로 인해 전체 동작이 느려지는 현상임
  • 수신 윈도우 제한(rwnd_limited)·송신 윈도우(snd_wnd)
  • 서버에 더 보낼 데이터가 있었지만 사용자의 수신 버퍼가 가득 찼다고 알린 경우임
  • 네트워크가 아니라 작은 소켓 버퍼, 느린 데이터 리더, VPN 클라이언트 또는 오래된 운영체제 등 사용자 장치의 제한임
  • ECN CE 마크(ECN CE marks, delivered_ce)
  • 경로상의 라우터가 패킷을 버리는 대신 혼잡을 명시적으로 알린 경우임
  • 병목 구간이 ECN을 지원하며 포화 상태였음을 보여주는 유용한 신호임
  • 경로 MTU와 MSS(Path MTU, pmtu, and MSS)
  • 경로가 전달할 수 있는 가장 큰 패킷 크기임
  • 1500은 일반 이더넷, 1492는 PPPoE, 약 1400 이하는 대개 터널 또는 VPN이 경로 어딘가에 있음을 의미함
  • 매우 작은 값이나 MTU보다 크게 낮은 MSS는 중간 장비가 패킷을 재작성하고 있음을 가리킴
  • SACK, 윈도우 스케일링 및 타임스탬프
  • 연결 시작 시 협상되는 TCP 옵션임
  • 세 옵션은 모두 활성화되어 있어야 함
  • SACK이 없으면 손실 복구 성능이 크게 저하되고, 윈도우 스케일링이 없으면 장거리 경로에서 처리량이 제한됨
  • 대개 고장 난 방화벽이나 NAT 장비가 해당 옵션을 제거하는 상황임