Tracepath는 항상 첫 번째 홉을 두 번 표시하는데, Traceroute는 그렇지 않은 이유는 무엇입니까?

Tracepath는 항상 첫 번째 홉을 두 번 표시하는데, Traceroute는 그렇지 않은 이유는 무엇입니까?

tracepath첫 번째 홉이 항상 두 번 표시되는 이유는 무엇입니까 ?

$ tracepath -n X.Y.Z.T
 1?: [LOCALHOST]                      pmtu 1500
 1:  172.16.5.2                                            0.586ms
 1:  172.16.5.2                                            0.420ms
 2:  no reply
 3:  X.Y.Z.T                                           6.199ms reached
     Resume: pmtu 1500 hops 3 back 3

그리고 traceroute다음은 아닙니다:

$ traceroute -n X.Y.Z.T
traceroute to X.Y.Z.T (X.Y.Z.T), 30 hops max, 60 byte packets
 1  172.16.5.2  0.672 ms  0.705 ms  0.723 ms
 2  * * *
 3  X.Y.Z.T  1.192 ms  1.220 ms  1.218 ms

그런데 172.16.5.2게이트웨이 그룹에 있는 두 개의 물리적 라우터 중 하나인 논리적 게이트웨이 라우터는 다음과 같습니다 172.16.5.1.

$ ip route get X.Y.Z.T
X.Y.Z.T via 172.16.5.1 dev ens160 src 172.16.5.X uid 1000
    cache

EDIT0: MTU=1500 사용:

$ tracepath -n X.Y.Z.T -l 1500
 1:  172.16.5.2                                            0.598ms
 2:  no reply
 3:  X.Y.Z.T                                           6.368ms reached
     Resume: pmtu 1500 hops 3 back 3

MTU=1501 사용:

$ tracepath -n X.Y.Z.T -l 1501
 1?: [LOCALHOST]                      pmtu 1500
 1:  172.16.5.2                                            0.600ms
 1:  172.16.5.2                                            0.394ms
 2:  no reply
 3:  X.Y.Z.T                                           6.139ms reached
     Resume: pmtu 1500 hops 3 back 3

MTU=3*1500+1 사용:

$ tracepath -n X.Y.Z.T -l $((3*1500+1))
 1?: [LOCALHOST]                      pmtu 1500
 1:  172.16.5.2                                            0.653ms
 1:  172.16.5.2                                            1.239ms
 2:  no reply
 3:  X.Y.Z.T                                           6.098ms reached
     Resume: pmtu 1500 hops 3 back 3

답변1

이는 초기 패킷 길이가 너무 크기 때문입니다. 옵션을 사용해 -l패킷 크기를 최대값으로 설정해 보세요. 당신의 MTU. mtu가 1500이면 -l 1500괜찮지만 -l 1501두 자리 숫자가 됩니다.

편집: 추적 경로가 pmtu 감지와 일치하지 않습니다. 여기는 1460일 때도 있고 1500일 때도 있습니다. 어떤 경우에도 더 낮은 값이 작동하며 실제로는 100만큼 작아야 합니다.

답변2

man tracepath출력 부분 에 따르면

첫 번째 열에는 프로브의 TTL이 표시되고 그 뒤에 콜론이 표시됩니다. 일반적으로 TTL의 값은 네트워크의 응답에서 얻어지지만 때로는 응답에 필요한 정보가 포함되어 있지 않아 이를 추측해야 합니다. 이 경우 숫자 뒤에는 ?가 붙습니다.

관련 정보