네트워크에서 **홉(hop)**은 IP 패킷이 목적지까지 가는 동안 한 Layer 3 전달 지점에서 다음 전달 지점으로 이동하는 한 단계를 뜻한다. 운영 화면에서는 보통 경로 중간의 라우터 수를 세는 값으로 이해한다.
기존 메모는 라우터와 스위치를 모두 홉으로 세고, 홉이 많으면 전송 속도가 느려진다고 단정했다. 실제로는 일반적인 Layer 2 스위치는 IP TTL을 줄이지 않아 traceroute의 홉으로 보이지 않는다. 홉 수도 지연 시간의 한 요인일 수 있지만, 홉이 적다고 반드시 빠른 것은 아니다.
홉은 어느 장비에서 증가하는가
다음 경로를 생각해 보자.
노트북 → L2 스위치 → 라우터 A → 라우터 B → 서버
일반적인 IP 전달 관점에서 traceroute가 찾아내려는 중간 홉은 라우터 A와 라우터 B다. L2 스위치는 Ethernet 프레임을 전달하지만 IP 헤더의 TTL 또는 Hop Limit을 줄이지 않으므로 보통 별도 홉으로 드러나지 않는다.
예외와 숨겨진 구간도 있다.
- Layer 3 스위치가 라우팅하면 홉으로 나타날 수 있다.
- MPLS나 터널 내부의 여러 장비가 하나의 홉처럼 보일 수 있다.
- 방화벽이나 라우터가 ICMP 응답을 보내지 않으면
*로 표시될 수 있다. - 서로 다른 탐사 패킷이 ECMP 경로를 타면 홉 주소가 달라질 수 있다.
따라서 traceroute 결과는 “경로의 모든 물리 장비 목록”이 아니다.
IPv4 TTL과 IPv6 Hop Limit이 홉을 제한한다
IPv4 헤더에는 TTL(Time To Live), IPv6 헤더에는 Hop Limit 필드가 있다. 전달하는 라우터는 이 값을 줄인다.
- IPv4 라우터는 패킷을 전달할 때 TTL을 최소 1 줄인다.
- IPv6 노드는 패킷을 전달할 때 Hop Limit을 1 줄인다.
- 값이 0이 되면 패킷을 버리고 보통 ICMP Time Exceeded 메시지를 원본 송신자에게 보낸다.
이 장치는 라우팅 루프가 생겨도 패킷이 네트워크를 영원히 돌지 않게 한다. IPv4 필드 이름에는 Time이 남아 있지만 오늘날 경로 분석에서는 사실상 홉 제한으로 보는 편이 이해하기 쉽다.
traceroute는 TTL을 하나씩 늘려 경로를 추정한다
traceroute는 작은 TTL 또는 Hop Limit을 가진 탐사 패킷부터 보낸다.
- TTL 1인 패킷은 첫 번째 라우터에서 0이 돼 폐기된다.
- 첫 번째 라우터가 ICMP Time Exceeded를 보내면 도구가 첫 홉과 왕복 시간을 기록한다.
- TTL을 2, 3으로 늘리며 다음 전달 지점을 찾는다.
- 목적지에 도달하거나 최대 홉 수에 이르면 종료한다.
macOS와 Linux에서는 보통 다음 명령을 사용한다.
traceroute example.com
Windows에서는 다음과 같다.
tracert example.com
도구와 옵션에 따라 UDP, ICMP Echo, TCP 탐사 패킷을 사용할 수 있다. 네트워크 정책이 한 종류만 차단할 수도 있으므로 결과가 없다는 사실만으로 그 라우터가 고장 났다고 판단하지 않는다.
홉 수와 지연 시간은 같은 지표가 아니다
패킷 지연은 여러 요소의 합이다.
| 요소 | 의미 |
|---|---|
| 전파 지연 | 물리적 거리를 신호가 이동하는 시간 |
| 전송 지연 | 패킷 크기를 링크에 밀어 넣는 시간 |
| 처리 지연 | 라우터가 헤더를 검사하고 다음 홉을 정하는 시간 |
| 큐잉 지연 | 혼잡한 인터페이스에서 기다리는 시간 |
홉이 두 개뿐이어도 대륙 간 회선이면 왕복 시간이 클 수 있다. 반대로 데이터센터 내부에서 홉이 조금 더 많아도 고속 링크와 여유 있는 큐를 사용하면 지연이 작을 수 있다.
또한 traceroute에 표시되는 각 숫자는 보통 그 홉까지의 왕복 시간이다. 앞 홉 30ms, 다음 홉 10ms처럼 숫자가 줄어도 모순이 아니다. 각 라우터가 ICMP 응답을 처리하는 우선순위와 돌아오는 경로가 다를 수 있기 때문이다.
결과를 읽을 때 확인할 것
- 한 번의 결과보다 여러 번의 추세를 본다.
- 특정 홉의 지연 증가가 이후 모든 홉과 목적지에서도 계속되는지 본다.
- 중간 홉만 느리고 목적지는 정상이라면 ICMP 응답 우선순위 차이일 수 있다.
*가 나와도 다음 홉과 목적지가 응답하면 단순한 필터링일 수 있다.- 목적지까지의 왕복 시간은
ping, 실제 서비스 연결은curl이나 애플리케이션 지표로 별도 확인한다. - 왕복 경로가 비대칭일 수 있으므로 한 방향 경로를 확정한 것처럼 해석하지 않는다.
라우터가 경로를 고르는 원리는 라우팅과 포워딩 차이, ping·traceroute를 포함한 진단 명령은 네트워크 트러블슈팅 명령어에서 이어서 볼 수 있다.
홉 수는 경로를 이해하는 단서이지 성능을 단독으로 판정하는 점수가 아니다. 실제 문제를 좁힐 때는 목적지 지연, 패킷 손실, 경로 변화와 애플리케이션 응답을 함께 본다.
참고 자료
'배움과 성장 > 네트워크·보안' 카테고리의 다른 글
| HTTP 요청·응답 읽는 법: 메서드·상태 코드·연결 재사용 (0) | 2023.03.28 |
|---|---|
| 응용 계층을 설계할 때: 프로세스·소켓·전송 프로토콜 선택 (0) | 2023.03.28 |
| Packet Delay·Loss·Throughput 학습노트: Queue와 Bottleneck 연결 (0) | 2023.03.25 |
| 네트워크 전파 지연이란: propagation과 transmission delay 구분하기 (0) | 2023.03.25 |
| 네트워크 엣지와 코어: 패킷 스위칭·전송 지연·큐잉 (0) | 2023.03.25 |
댓글