병렬 처리는 이러한 도구의 속도가 변하는 주요 원인입니다. 또 다른 기여 요인은 홉이 응답하지 않는 것으로 간주되기 전에 응답을 기다리는 시간입니다. 역방향 DNS가 수행되는 경우 해당 DNS도 기다려야합니다. 역방향 DNS를 비활성화하면 일반 traceroute 명령이 훨씬 빨라집니다.
내가 언급하지 않은 또 다른 중요한 차이점은 두 도구가 출력을 렌더링하는 방법입니다. Traceroute는 위에서 아래로 출력을 생성합니다. Mtr은 다른 방식으로 출력을 렌더링합니다. 여기서 mtr은 이전 행의 출력으로 돌아가서 출력을 업데이트 할 수 있습니다.
이것은 mtr이 사용 가능한 즉시 출력을 표시 할 수 있음을 의미합니다. 나중에 응답으로 인해 출력이 정확하지 않으면 mtr이 되돌아 가서 갱신 할 수 있기 때문입니다. traceroute는 되돌아 가서 출력을 업데이트 할 수 없으므로 결국 표시 할 내용을 결정할 때까지 기다려야합니다.
예를 들어 홉 번호 2가 응답하지 않는 경우 (여러 ISP에서 볼 수있는 증상) traceroute는 홉 번호 1을 표시 한 다음 잠시 기다렸다가 홉 번호 2와 3을 표시합니다. traceroute가 여전히 홉 번호 2의 응답을 기다리고 있기 때문에 3이 표시되지 않습니다. Mtr에는 해당 제한이 없으며 홉 번호 3의 응답을 표시 할 수 있으며 여전히 홉 번호 2의 응답을 표시하도록 돌아갈 수 있습니다. 나중에 도착합니다.
병렬 처리가 너무 많으면 출력이 부정확해질 수 있습니다. 일부 시나리오에서는 응답을받을 수있는 패킷 수에 제한이 있습니다. 이 경우 더 많은 패킷을 보내면 프로세스 속도가 빨라지지 않지만 더 많은 패킷이 전송되면 같은 수의 회신을 받으므로 더 많은 패킷이 손실됩니다.
이에 대한 한 가지 예는 경로의 홉이 ARP 요청에 응답하지 않는 경우입니다. 일반적으로 첫 번째 패킷은 ARP 요청을 트리거하며 ARP 요청 시간이 초과되기 전에 더 많은 패킷이 도착하면 마지막 패킷 만 버퍼링되고 응답을받습니다.
또 다른 차이점은 공구가 더 많은 홉 표시를 중지하기 전에 응답이없는 홉 수가 표시되는 것입니다. traceroute 명령이 요청한만큼 많은 홉 (기본적으로 30 개) 동안 계속되는 반면, mtr 명령은 응답없이 5 개의 홉을 통과하자마자 중지됩니다.