요약

  • Traceroute는 중앙 토폴로지 데이터베이스를 필요로 하지 않았다. IP Time to Live 값을 단계적으로 변화시켜 연속되는 프로브가 한 홉씩 멀어진 지점에서 만료되도록 하고, ICMP 오류 응답을 이용해 포워딩 경로에 대한 로컬 관점을 조립했다.
  • 유용한 메커니즘은 이미 존재하던 동작들로 구성되었지만, 첫 배포판은 여전히 호스트 측 제어에 의존했다. Jacobson은 1988년에 자신의 4BSD 사용자들이 프로그램이 TTL을 설정할 수 있도록 raw-IP 커널 출력을 변경해야 할 수 있다고 경고했다.
  • 하나의 trace는 특정 순간의 한 관점에서 얻은 증거이지 인터넷의 소유권 등록부가 아니다. 침묵, 경로 변경, 비대칭 반환 경로, 터널, 주소 별칭, 로드 밸런싱 모두 출력이 증명하는 바를 제한한다.

라우팅 테이블이 답할 수 없었던 질문

1988년 12월 20일, Van Jacobson은 IETF와 end-to-end-interest 메일링 리스트에 짧은 공지를 보냈다. 패킷이 어디로 가는지 파악하려다 겪었다고 말한 답답한 일주일 끝에, 그는 4BSD 라우팅 진단 도구를 조립해 놓은 상태였다. 이 도구는 Time to Live 값 1로 UDP 패킷을 보내고 ICMP Time Exceeded 응답을 기다렸다. 응답이 도착하면 프로그램은 그 출발지 주소를 출력하고 TTL을 하나 늘려 다시 시도했다.

남아 있는 이 메시지가 중요한 이유는 발명의 규모를 그대로 보존하고 있기 때문이다. Jacobson은 토폴로지 서비스도, 새로운 라우팅 프로토콜도, 유일한 참된 경로를 공표할 권한을 지닌 기관도 발표하지 않았다. 그는 소스 코드를 FTP로 제공했다. 아이디어를 end-to-end 태스크포스 회의에서 Steve Deering에게서 얻었다고 밝혔다. 또한 이 소프트웨어는 커널 수정이 필요할 수 있다고 말했다. raw IP 출력 루틴이 사용자 프로그램이 TTL을 설정할 수 있게 해야 했다.

이 마지막 세부 사항은 현대적 재서술에서 쉽게 사라진다. 라우터에는 이미 필요한 동작 대부분이 들어 있었지만, 발신자 측 자신의 기계에는 여전히 사용 가능한 제어 표면이 필요했다. 프로토콜 기능이 운영자의 도구가 되려면 소프트웨어가 그것에 닿을 수 있어야 한다.

자기 파괴 필드

Time to Live는 경로를 보여주기 위해 만들어지지 않았다. RFC 791은 이를 데이터그램 수명의 상한으로 정의했다. 발신자가 값을 공급하고, IP 헤더를 처리하는 모든 지점은 실제 처리 시간을 알 수 없는 경우에도 최소 하나씩 값을 줄였다. 값이 목적지에 도달하기 전에 0이 되면 데이터그램은 파괴되었다.

원래 목적은 방어적이었다. 라우팅 오류가 패킷을 영원히 순환시키면서, 어느 엔드포인트도 복구할 수 없는 채로 용량을 소모하는 일이 없어야 했다. RFC 1812는 훗날 TTL의 홉 카운트 역할을 무한 루프를 통한 라우팅 문제로 네트워크가 붕괴하는 것을 막는 데 결정적이라고 서술했다.

Traceroute는 이 파괴 규칙을 측정 지점으로 바꾸었다. TTL이 1인 프로브는 첫 포워딩 홉에서 죽었다. TTL이 2인 프로브는 첫 홉을 통과하고 두 번째에서 죽을 수 있었다. 반복은 이 한계를 거리로 변환했다. 지리적 거리도, 링크 길이도 아니고, 그 특정 프로브가 생존한 포워딩 감소 횟수였다.

이것은 창의적 재사용이었으며, 프로토콜 설계자들이 몰래 지도를 의도했다는 증거가 아니다. 이 구분이 중요하다. 최소한의 공통 메커니즘이 가치 있어지는 것은 바로 후대 사용자가 원래 사양이 모든 응용을 예측할 때까지 기다리지 않고 그것들을 결합할 수 있기 때문이다.

실패가 반환 주소를 보낼 때

파괴만으로는 침묵만 남는다. 보고는 ICMP가 공급했다. RFC 792는 Internet Control Message Protocol을 게이트웨이나 목적지 호스트가 통신 환경의 문제에 대한 피드백을 보낼 수 있게 하는 수단으로 서술했다. TTL이 0인 것을 발견한 게이트웨이는 데이터그램을 폐기해야 했고, Time Exceeded 메시지로 출발지에 통지할 수 있었다.

고전적 traceroute는 그 응답의 주소를 다음 가시 지점으로 사용했다. 그리고 프로브가 다른 중간 홉이 아니라 목적지에 도달했는지를 알아야 했다. Unix 방식은 유효하지 않은 큰 번호의 포트로 UDP 데이터그램을 보냈다. 중간 라우터는 Time Exceeded로 응답했고, 목적지는 ICMP Port Unreachable로 응답했다. 서로 다른 이 실패가 trace의 완료를 의미했다.

1994년까지 RFC 1739는 이 순서를 평범한 인터넷 도구로 설명할 수 있었다. 각 TTL마다 보통 세 개의 프로브가 한 단계씩 올라가며, 응답 주소 옆에 왕복 응답 시간이 표시되었다. 출력이 경로처럼 느껴진 이유는 프로그램이 여러 실패한 전달을 순서 있는 목록으로 변환했기 때문이다.

그러나 RFC 792는 이미 모든 목록과 함께 다녀야 하는 경고를 공급하고 있었다. ICMP 피드백은 IP를 신뢰 가능하게 만들지 않았다. 제어 메시지가 돌아온다는 보장은 없었다. 따라서 별표는 그 홉에 라우터가 존재하지 않는다는 것을 증명하지 않는다. 필터링, 억제, 레이트 제한, 혼잡, 손실, 또는 프로브를 전달했지만 응답하지 않은 기기를 반영할 수 있다.

라우터 업그레이드가 필요 없다는 것이 결정적 강점이었던 이유

1993년에 발표된 RFC 1393은 드러나는 비교를 제공한다. 이 문서는 익숙한 TTL 증가 방식을 서술하고, 명시적 IP traceroute 옵션과 새로운 ICMP 메시지를 제안했다. 제안된 설계는 더 적은 패킷을 사용하고 반환 경로 정보를 수집할 수 있었지만, 라우터에 traceroute 기능을 추가할 것을 요구했다.

기존 방식의 강점은 단단했다. 라우터들은 이미 TTL 초과 오류를 반환하는 방법을 알고 있었다. 첫 번째 유용한 trace가 실행되기 전에 모든 중계 네트워크에 traceroute 전용 코드를 설치할 필요가 없었다.

이것은 Running-Code Primacy의 가장 의전 없는 형태다. 한 가장자리의 작은 응용이 수많은 독립 기기에 걸쳐 구현된 최소 동작을 사용했다. 그것은 그 기기들에게 새로운 기관을 인식하거나, 데이터베이스에 가입하거나, 업그레이드 날짜를 조율하라고 요구하지 않았다. 가치는 프로브가 발사되고 해석되는 곳에서 나타났다.

이것이 명시적 메커니즘이 항상 열등하다는 증명은 아니다. RFC 1393은 실제 비용을 지적했다. 고전적 traceroute는 가까운 홉들을 통해 프로브를 반복하고, 시퀀스가 실행되는 동안 경로가 바뀔 수 있으며, 아웃바운드 결과는 반환 경로에 대해 직접 아무것도 말해주지 않는다. 역사적 요점은 더 좁다. 배포 부담이 가벼운 조합은 더 목적 지향적인 설계가 필요한 라우터 지원을 확보하기 전에 유용해질 수 있었다.

수리 도구에서 공개 창문까지

Jacobson은 하나의 라우팅 문제에서 태어난 프로그램을 서술했다. RFC 1739는 훗날 traceroute를 네트워크 및 시스템 관리자의 흔한 도구라고 부르며, 최종 사용자도 인터넷 구조에 관해 무언가를 배울 수 있다고 언급했다. RFC 1470은 상호 연결된 TCP/IP 네트워크를 모니터링하고 디버깅하기 위한 도구 목록에 그것을 수록했다.

이 이동은 경로에 대해 주장할 수 있는 사람을 바꾸어 놓았다. 운영자는 더 이상 패킷이 원격 호스트에 도달하기 전에 Berkeley, 지역 네트워크, NSFNET을 거쳐 나타난다는 것을 보기 위해 모든 중간 라우팅 테이블에 대한 특권 접근이 필요하지 않았다. 사용자는 명령, 시간, 응답을 보존하고, 관찰된 경로가 왜 바뀌었는지 공급자에게 물을 수 있었다.

따라서 이 도구는 권한보다 관찰 가능성을 분배했다. 중계 네트워크는 계속 경로를 선택했다. 라우터는 계속 응답에 어떤 인터페이스 주소를 넣을지, 아예 응답할지를 결정했다. Traceroute는 엔드포인트에 그 결정들에 대한 지렛대가 아니라 시험을 주었다.

이 구분은 책임성 문제에서 중요하다. 중앙 지도는 낡거나, 선별적이거나, 기관적 이해가 담겨 있을 수 있다. 로컬 프로브는 실행 중인 증거로 그것에 맞설 수 있다. 그러나 프로브 역시 부분적이다. 바람직한 제도적 균형은 의심할 수 없는 하나의 지도를 의심할 수 없는 하나의 명령 출력으로 대체하는 것이 아니다. 방법, 관점, 불확실성을 보존함으로써 주장들을 경합 가능하게 만드는 것이다.

그려지는 동안 변하는 경로

고전적 trace는 하나의 패킷이 노트북을 들고 모든 라우터를 통과하는 것이 아니다. 서로 다른 패킷들의 수열이다. RFC 1393은 그 결과를 언급했다. 프로세스 동안 경로가 바뀔 수 있다는 것이다. 또한 그 방식이 반환 경로를 trace하지 않으며, 반환 경로는 아웃바운드 경로와 다를 수 있다고 명확히 밝혔다.

로드 밸런싱은 더 미묘한 오류를 더한다. 고전적 구현은 프로브와 목적지 포트를 옮겨 가며 헤더 필드를 바꾼다. 플로우 해시로 트래픽을 나누는 라우터는 그 프로브들을 서로 다른 등비용 경로로 보낼 수 있다. 결과 출력은 어떤 단일 패킷도 그 순서로 방문하지 않은 인터페이스들을 조립할 수 있다.

2006년 Paris traceroute 연구가 이를 가시화했다. 저자들은 평범한 trace가 프로브 헤더가 로드 밸런싱 결정과 상호작용하기 때문에 겉보기 루프, 순환, 다이아몬드를 만들어낼 수 있음을 보여주었다. 플로우를 식별하는 데 쓰이는 필드를 통제함으로써 Paris traceroute는 그런 인공물 대부분을 제거하고 하나의 경로 클래스에 대한 더 충실한 관점을 만들어냈다.

그 교정은 토폴로지를 최종적인 것으로 만들지 않았다. 터널은 내부 홉을 숨길 수 있다. 여러 인터페이스 주소가 하나의 라우터에 속할 수 있다. DNS 이름은 낡았거나 오도적일 수 있다. ICMP 응답은 전방 프로브와 다른 경로로 되돌아간다. Reverse-traceroute 연구는 훗날 단순한 대칭 가정이 얼마나 빈약한지를 정량화하고 반대 방향을 추론하기 위한 추가 메커니즘을 만들었다.

모든 개선은 원래의 교훈을 보존했다. 관찰은 실험이다. 실험에 대한 더 나은 통제는 증거를 개선할 뿐, 결과를 소유권으로 바꾸지 않는다.

주소가 권한 부여하지 않는 것

traceroute 줄에 인쇄된 주소는 ICMP 응답을 위해 선택된 출발지 주소다. 그것은 인터페이스, 루프백, 또는 명명과 조직 데이터가 다른 곳에서 관리된 주소일 수 있다. 그것만으로는 어떤 회사가 섀시를 소유하는지, 어떤 사업자가 하부 회선을 공급하는지, 어떤 자율 시스템이 모든 관련 정책을 설정하는지, 어느 관할권이 수리를 명령할 수 있는지 증명하지 않는다.

그 주소 옆의 왕복 수치도 앞선 링크의 편도 지연을 측정하지 않는다. 그것은 프로브의 바깥 여정, 라우터의 패킷 처리, 그리고 응답 경로의 귀환을 모두 포함한다. 큐잉은 이동할 수 있다. 응답은 전달된 데이터와 다른 우선순위를 받을 수 있다. 세 개의 숫자는 세 개의 실험에 대한 증거이며, 지연을 하나의 기관에 배정하는 청구서가 아니다.

이것이 진단 장부와 권한 세탁 사이의 선이다. 실행 중인 네트워크는 주장에 반박할 수 있다. trace는 트래픽이 예상 밖의 인터페이스에 도달했거나 광고된 목적지 전에 멈췄음을 보여줄 수 있다. 그러나 관찰자가 원인과 책임을 배정하기 전에 라우팅 데이터, 운영자 진술, 구성 증거, 반복 측정을 더해야 한다.

Traceroute의 위대한 공헌은 인터넷을 투명하게 만든 것이 아니었다. 그것은 한 종류의 불투명성을 가장자리에서 시험 가능하게 만든 것이다.

오래 지속되는 사후생명을 지닌 얇은 메커니즘

이 도구의 역사는 흔히 혼동되는 세 계층을 잇는다. 프로토콜 계층은 패킷 수명을 한정하고 오류 피드백을 서술했다. 호스트 소프트웨어 계층은 그 필드들을 노출하고 응답을 해석했다. 운영자 계층은 관찰이 무엇을 의미하고 어떤 행동을 취할지를 결정했다.

어느 계층도 다른 계층의 권리를 획득하지 않았다. RFC 791은 인터넷 지도를 만들지 않았다. Jacobson의 코드는 라우터에 명령하지 않았다. ICMP 응답은 소유자를 인증하지 않았다. 이 배열의 강점은 공통 동작을 구현 가능할 만큼 작게 유지하면서 미래의 결정을 로컬에 남겨둔 데서 왔다.

그래서 만료된 패킷으로 만든 지도는 여전히 유용하다. 그것은 반박하기 싸고, 반복하기 쉽고, 관찰이 시작된 곳을 명시한다. 빈칸은 가시적이다. 오류는 연구될 수 있다. 경쟁 구현들은 하나의 글로벌 게이트키퍼에게 네트워크를 다시 그려달라고 요청하지 않고도 프로브를 개선할 수 있다.

인터넷이 책임 가능해진 것은 모든 경로가 공표되었기 때문이 아니다. 엔드포인트가 포워딩 시스템에 일련의 한정된 질문을 던질 수 있었고, 정직한 답이 언제나 지도가 아니라 trace였기 때문에 더 검사 가능해진 것이다.

출처와 증거의 한계

TTL 메커니즘과 그 원래 수명 목적은RFC 791에서 나온다. ICMP의 역할과 전달 보장의 부재는RFC 792에서 나온다. Jacobson의 구현 서술, Steve Deering에 대한 공로 인정, 커널 경고는1988년 12월 20일 공지에 보존되어 있다.

당대 도구 기록은RFC 1470과RFC 1739이다. 명시적 라우터 지원 설계와의 비교, 그리고 경로 변화와 비대칭 경로에 대한 초기 서술은RFC 1393에서 나온다. 후대 라우터 요구사항은RFC 1812에 있다.

로드 밸런싱 인공물은Paris traceroute 논문에 문서화되어 있고, 역방향 경로 한계는Reverse traceroute에서 발전되었다. 이 후대 연구들은 이 방법이 왜 신중하게 해석되어야 하는지를 보여준다. 그들은 원래 도구의 운영적 가치를 지우지 않는다.