조용한 기간이 지나면 터널이 다시 연결되고, 어떤 로그도 범인을 지목하지 않으며, 뻔한 선택은 가장 인상적인 타임아웃 문서를 가진 장치를 고르는 것이다. 그것은 진단의 옷을 입은 추측일 뿐이다. 상태는 가정용 라우터, 통신사 변환기, 클라우드 경계에서 한동안 살아남을 수 있고, 그중 어느 것이든 조용해진 흐름을 떨어뜨릴 수 있다. 대신 할 수 있는 일은 경로를 그려 보고, 실제로 관찰할 수 있는 장치를 표시하고, 반복할 수 있는 유휴 시험 하나를 실행하는 것이다.

반복 가능한 시험은 일화를 측정으로 바꾼다. 아래의 모든 내용은 클라이언트 하나, 서버 하나, 프로토콜 하나를 전제로 하며, 두 변수를 동시에 바꾸지 않는다는 것을 전제로 한다. 목표는 다음 발생을 이번보다 싸게 만드는 것이다.

매번 같은 유휴 시험을 실행하라

흐름이 마지막으로 정상이었던 시각, 그 뒤 얼마나 유휴 상태로 있었는지, 새 패킷 하나가 그것을 되살렸는지를 적어라. 그 세 가지 사실이 측정이며, 그것이 없으면 떨어진 노트북에 관한 이야기만 남는다. 매 반복에서 같은 클라이언트, 같은 서버, 같은 프로토콜을 사용하고, 침묵 뒤 첫 패킷을 보낸 순간을 기록하라.

그다음 자신이 가진 각 경계가 실제로 무엇을 보았는지 비교하라. 조사를 결정하는 구분은 서버가 멈춤 뒤 아무것도 보지 못했는지, 아니면 요청을 보고 더 이상 응답을 나르지 않는 경로로 답했는지다.

What you observeWhat it suggestsWhat it does not prove
server records no packet after the pausestate was lost upstream of the serverwhich hop dropped it
server answers, client never receivesreturn-path state or filteringthat the timer belongs to the client
client sends nothing at allclient-side timer or application behaviourthat the network path is healthy

다섯 가지를 바꾸지 않고 경로 비교하기

승인된 두 번째 접속망은 NAT 사슬이 다르기 때문에 정당한 비교다. 제공자, 전파 조건, 어쩌면 주소 체계도 달라서 결과는 귀속이 아니라 경계다. 보고할 때 한계를 조용히 빼지 말고 결과와 함께 기록하라. 경로도 적어 두라. 장치, 역할, 그리고 그 상태를 읽을 수 있는지 여부다.

경로 비교가 사 주는 것은 제한된 질문이다. 비슷한 침묵 뒤에 한쪽에서는 살아남고 다른 쪽에서는 죽는다면, 변수는 서로 다른 부분 어딘가에 있다. 장치를 하나도 지목하지 못해도 이것은 실제 결과이며, 다음 엔지니어에게 오후를 어디에 써야 하고 어디에 쓰지 말아야 하는지 알려 준다.

통신사에 대해 추측하기 전에 로컬 상태를 읽을 가치가 있다. Linux 게이트웨이에서 conntrack -L 는 추적 중인 흐름을 남은 수명과 함께 나열하며, 이는 타이머에 대한 추측을 만료되는 것을 지켜볼 수 있는 숫자로 바꾼다. 유휴 기간 전과 후에 읽어라. 후에만 읽지 말고.

킵얼라이브가 유지하는 것과 유지하지 못하는 것

지원되는 킵얼라이브는 매핑을 열린 상태로 유지하지만, 매핑이 열려 있다는 것이 그 뒤의 서비스에 대해 증명하는 것은 없다. 터널은 매핑된 채로 남을 수 있지만 그것이 나르는 애플리케이션은 이미 응답을 멈췄을 수 있고, 상태등으로 보면 두 상황은 같아 보인다. 킵얼라이브는 유휴 만료에 대한 보험으로 다뤄야 하며, 상태 점검으로 다루면 안 된다.

간격은 실제로 측정한 가장 짧은 타임아웃에 맞춰 정하라. 포럼에서 복사한 숫자에 맞추지 말고. 가능한 모든 타이머보다 짧게 조정한 킵얼라이브는 아무도 필요로 하지 않은 트래픽이며, 어느 경계가 먼저 만료되는지 알려 주었을 증상도 없앤다. 측정한 숫자에서 간격을 고르고 나머지는 그대로 두라.

변경 하나, 그다음 다시 측정하라

실시간 시험 중에 모든 타임아웃을 올리고 모든 게이트웨이를 비우고 싶은 충동을 참아라. 그것은 와서 얻으려던 증거를 지우고 다른 사람들의 흐름을 방해하며, 시험하지 않은 가설을 위해 나쁜 거래다. 한 장치에서 지원되는 설정 하나를 바꾸고, 그다음 유휴 기간과 애플리케이션 복구를 반복하라.

어느 경계 관찰이 움직였는지 기록하고, 아무것도 나아지지 않았을 때도 기록하라. 아무것도 고치지 못한 설정은 정보이며, 한 번 알아차리는 것이 전체 자산에 굴리는 것보다 싸다.

변호할 수 있는 발견을 쓰기

상류 변환기를 점검할 수 없을 때는 증거가 뒷받침하는 것만 말하라. 교환은 이 경로 구간 어딘가에서 그만큼의 침묵 뒤에 죽고, 책임 있는 홉은 귀속되지 않은 채 남는다. 제한된 진술은 검토를 견디고 다음 사람을 올바른 구간으로 인도한다. 숨은 라우터를 원인으로 지목하는 것은 둘 다 하지 못한다. 제한된 발견을 관찰할 수 없는 구간의 소유자에게 간격과 함께 넘겨라.

RFC 4787 은 UDP 매핑 타이머를 한쪽 끝에서 추론하기 어려운 이유를 설명하며, 그 어려움이 바로 제한된 발견이 정직한 이유다. 타이머는 실재하며, 그 주변의 불확실성도 실재한다.

관련 글