케이블을 탓하기 전에 패킷 손실을 읽는 방법
작은 손실 수치도 긴 애플리케이션 정체를 숨길 수 있습니다. 하드웨어를 교체하기 전에 카운터 차이, 재전송 동작, 실제 작업을 비교하세요.
긴 ping 실행에서 이 퍼센트의 손실은 조치할 수 있는 숫자처럼 느껴지지만 실제로 그런 경우는 드뭅니다. 응답이 어디서 사라졌는지, 함께 사라졌는지, 특정 애플리케이션이 그 구간을 어떻게 겪었는지는 알려주지 않습니다. 일 분에 걸쳐 고르게 퍼진 손실과 한 번의 교환 안에 몰린 손실은 같은 비율이라도 매우 다른 결과를 냅니다.
하나를 믿는 대신 프로브가 본 것, 인터페이스 카운터가 한 일, 그리고 애플리케이션이 실제로 기다린 것이라는 세 가지 측정을 비교하세요.
ping 비율이 실제로 측정하는 것
에코 프로브는 한 프로토콜의 한 방향을 한 패킷 크기로, 선택한 임의의 속도에서 시험합니다. 큰 업로드를 나르는 터널은 전혀 다른 일을 하고 있고, 작은 프로브를 떨어뜨리는 링크가 반드시 전송을 해치는 링크는 아닙니다. 비율은 한 번에 잃은 응답 열 개와 한 시간 간격으로 잃은 응답 열 개가 같지 않기 때문에 가장 중요한 타이밍 정보도 뭉개 버립니다. 터널의 어느 쪽이 무언가를 떨어뜨렸는지도 알려주지 못합니다.
프로브 결과를 경로에 대한 단서로 남겨 두세요. 그다음 그것을 만든 타이밍과 경계를 찾으세요.
평생 합계가 아니라 카운터 차이를 비교하세요
증상이 나타난 시간 창의 전후에, 양쪽 끝과 관리하는 모든 스위치 포트에서 시각이 찍힌 판독값을 얻으세요. 몇 달에 걸쳐 쌓인 영이 아닌 합계는 이 사건이 아니라 이력을 설명하기 때문에, 오류, 폐기, 링크 상태 변화와 함께 트래픽 양을 기록하세요. 정체 중에 셋만큼 움직인 카운터는 삼천을 보여 주고 한 번도 변하지 않은 카운터와는 다른 관찰입니다.
ip -s link show dev eth0
nstat -az TcpRetransSegs TcpExtTCPTimeouts
date -u +%Y-%m-%dT%H:%M:%SZ
수신 오류 때문에 폐기된 패킷과 다른 이유로 폐기된 패킷은 별도의 카운터에 살고, 이 구분이 다음 단계를 바꿉니다. 오류 카운터는 물리 계층이나 드라이버 계층을 가리키고, 큐 압박과 정책 폐기는 그 위 어딘가를 가리킵니다. 업링크의 수신 오류 증가와 터널 패킷 카운터는 서로 바꿔 쓸 수 없으므로 방향과 인터페이스 이름도 보존하세요.
드라이버가 상세한 물리 카운터를 노출한다면 그 어댑터의 문서를 통해 읽으세요. 두 벤더에서 “drop”이라는 이름의 모든 필드에 하나의 의미를 부여하는 것이 평범한 회계상의 특이점을 하드웨어 진단으로 만드는 길입니다.
잃어버린 세그먼트가 긴 대기로 바뀌는 과정
애플리케이션은 세그먼트를 잃은 뒤 왕복 한 번보다 훨씬 오래 기다릴 수 있습니다. TCP는 왕복 시간을 추정하고, 그 추정에서 재전송 타이머를 계산하며, 재전송도 실패하면 물러나므로, 잘못된 순간에 잃은 세그먼트 하나가 요청을 눈에 띄는 간격 동안 멈추게 할 수 있습니다. 이 메커니즘은 RFC 6298에 규정되어 있으며, 사소해 보이는 손실률이 왜 여전히 체감되는지 설명합니다.
그러나 모든 멈춤이 재전송 시간 초과는 아닙니다. 같은 대기는 이름 확인, 느린 서버, 또는 실패 후 자신의 요청을 다시 시도하는 애플리케이션에서 올 수 있습니다. 실패한 작업을 전송 관찰과 터널 자체의 세션 이벤트에 맞춰 그 경우들을 분리하세요. 재연결 없이 데이터 경로에서 끊기는 것은 새 핸드셰이크와 자격 증명 교환과는 다른 사건입니다.
캡처가 허용되는 곳에서는 범위를 좁게 유지하세요. 필요한 것은 예상한 패킷이나 확인 응답이 특정 경계에서 멈추는지 여부이지, 바쁜 추적 어딘가에 재전송이 있다는 사실이 아닙니다.
다른 것을 움직이지 않고 경계 하나를 바꾸세요
증거가 로컬 링크를 가리킨다면 통제된 비교로서 승인된 케이블이나 포트로 바꾸고 나머지는 그대로 두세요. 끝점, 애플리케이션, 작업 부하를 비교 가능하게 유지하고 시도마다 정확히 경계 하나만 바꾸세요. 유선 노트북을 무선 노트북과 비교하면서 출구와 프로토콜까지 바꾸면 원인으로 돌릴 수 있는 것은 아무것도 알 수 없습니다.
깨끗한 로컬 카운터는 나머지 경로를 보증하지 않습니다. 보이는 부분을 한정할 뿐이고, 정직한 보고는 어떤 경계를 관찰했고 어떤 경계를 관찰하지 못했는지 말합니다. 마지막에 원하는 것은 하나의 개입이 있었을 때 하나의 관찰이 달라졌다는 진술이지, 나쁜 케이블을 보편적 규칙으로 승격한 일화가 아닙니다.