Linux Packet Loss(패킷 손실)의 원인과 해결 방법

Linux 서버를 운영하다 보면 웹 서비스 속도가 느려지거나 SSH 접속이 끊기고, API 호출이 실패하거나 데이터베이스 연결이 불안정한 현상을 경험할 수 있습니다. 이러한 문제의 원인 중 하나가 바로 Packet Loss(패킷 손실) 입니다.

패킷 손실은 전송된 데이터가 목적지까지 도달하지 못하는 현상을 의미하며, 일정 수준 이상 발생하면 응답 속도 저하, TCP 재전송 증가, 서비스 장애 등 다양한 문제를 일으킬 수 있습니다.

이번 글에서는 Linux에서 Packet Loss가 발생하는 원인과 확인 방법, 해결 방법을 실무 중심으로 자세히 알아보겠습니다.

Packet Loss란?

네트워크 통신은 데이터를 작은 단위인 패킷(Packet)으로 나누어 전송합니다.

정상적인 통신 과정은 다음과 같습니다.

Client

↓

Packet 전송

↓

Network

↓

Server

↓

ACK 응답

하지만 중간 장비나 서버에서 패킷이 유실되면 다음과 같은 상황이 발생합니다.

Packet 전송

↓

중간 네트워크에서 손실

↓

ACK 없음

↓

TCP Retransmission

패킷 손실이 계속 발생하면 응답 속도가 느려지고 연결이 불안정해집니다.

Packet Loss가 발생하는 주요 원인

대표적인 원인은 다음과 같습니다.

  • 네트워크 혼잡(Congestion)
  • NIC(Network Interface Card) 장애
  • 불량 LAN 케이블
  • 스위치 또는 라우터 장애
  • MTU 설정 오류
  • Duplex 불일치
  • CPU 과부하
  • 방화벽 또는 QoS 정책
  • Docker Overlay Network 문제
  • Kubernetes CNI 문제

실무에서는 네트워크 장비 문제와 MTU 설정 오류가 자주 발생합니다.

1. Ping으로 Packet Loss 확인하기

가장 기본적인 확인 방법입니다.

ping 8.8.8.8

예시

10 packets transmitted, 9 received, 10% packet loss

Packet Loss가 0%가 아니라면 원인을 분석해야 합니다.

2. mtr 명령 사용하기

mtr은 Ping과 Traceroute를 함께 수행합니다.

mtr google.com

예시

Loss%   Snt
0.0%
15.0%
35.0%

어느 구간에서 손실이 발생하는지 쉽게 확인할 수 있습니다.

3. Traceroute 확인하기

패킷이 어느 구간에서 지연되는지 확인합니다.

traceroute google.com

또는

tracepath google.com

특정 라우터에서 문제가 발생하는지 확인할 수 있습니다.

4. 인터페이스 통계 확인하기

NIC 오류를 확인합니다.

ip -s link

또는

ifconfig

다음 항목을 확인합니다.

  • RX errors
  • TX errors
  • Dropped packets
  • Overruns

오류 수치가 증가한다면 NIC 또는 케이블 문제일 가능성이 있습니다.

5. ethtool 확인하기

NIC 상태를 확인합니다.

ethtool eth0

Duplex와 Speed를 확인합니다.

예시

Speed: 1000Mb/s

Duplex: Full

Half Duplex로 설정되어 있다면 성능 저하가 발생할 수 있습니다.

6. MTU 확인하기

현재 MTU를 확인합니다.

ip link show

MTU를 테스트합니다.

ping -M do -s 1472 8.8.8.8

MTU가 맞지 않으면 Fragmentation과 Packet Loss가 발생할 수 있습니다.

7. tcpdump로 패킷 분석하기

패킷 흐름을 확인합니다.

tcpdump -i eth0

재전송이 발생하는지 확인합니다.

Retransmission

Duplicate ACK

TCP 재전송이 많다면 Packet Loss를 의심할 수 있습니다.

8. 시스템 부하 확인하기

CPU와 Load Average를 확인합니다.

top

또는

uptime

CPU 사용률이 매우 높으면 네트워크 처리가 지연될 수 있습니다.

9. Docker 및 Kubernetes 확인하기

Docker

docker network ls

Kubernetes

kubectl get nodes

Overlay Network나 CNI 문제가 있는지 확인합니다.

10. 로그 확인하기

커널 로그를 확인합니다.

journalctl -k

또는

dmesg | grep -i eth

NIC Reset이나 Driver Error가 반복되는지 확인합니다.

Packet Loss 점검 순서

실무에서는 다음 순서대로 확인하는 것이 좋습니다.

  1. Ping 확인
  2. mtr 실행
  3. Traceroute 실행
  4. NIC 통계 확인
  5. ethtool 확인
  6. MTU 확인
  7. tcpdump 분석
  8. CPU 사용률 확인
  9. Docker/Kubernetes 확인
  10. 로그 분석

Packet Loss 사용 시 주의사항

다음 사항을 고려해야 합니다.

  • Ping 결과만으로 판단하지 않는다.
  • mtr로 손실 구간을 확인한다.
  • MTU와 Duplex 설정을 확인한다.
  • NIC 드라이버 문제도 함께 점검한다.
  • Docker Overlay Network도 원인이 될 수 있다.
  • CPU 과부하도 네트워크 성능에 영향을 줄 수 있다.

Packet Loss는 단순한 인터넷 속도 문제가 아니라 서비스 장애로 이어질 수 있는 중요한 네트워크 문제입니다.

Packet Loss와 Latency의 차이

항목Packet LossLatency
의미패킷이 유실됨패킷이 늦게 도착함
주요 원인네트워크 장애, MTU, NIC회선 지연, 거리
TCP 영향재전송 발생응답 속도 저하
서비스 영향연결 실패 가능속도 저하

Packet Loss는 데이터 자체가 사라지는 문제이며, Latency는 데이터가 늦게 도착하는 문제입니다.

자주 묻는 질문

Packet Loss가 1~2% 정도 발생해도 문제가 되나요?

일반적인 인터넷 환경에서는 큰 문제가 없을 수도 있지만, 금융 서비스나 실시간 스트리밍, VoIP 서비스에서는 1% 이하의 손실도 품질에 영향을 줄 수 있습니다.

Ping은 정상인데 Packet Loss가 발생할 수 있나요?

네. ICMP는 정상적으로 통과하지만 특정 TCP 또는 UDP 트래픽만 손실되는 경우도 있습니다. 따라서 tcpdumpmtr을 함께 사용하는 것이 좋습니다.

MTU가 Packet Loss에 영향을 주나요?

네. MTU가 네트워크 환경과 맞지 않으면 패킷 단편화(Fragmentation)가 발생하고, 일부 장비에서는 패킷이 폐기되어 손실이 발생할 수 있습니다.

마무리

Packet Loss는 Linux 서버에서 네트워크 성능 저하와 서비스 장애를 일으키는 대표적인 원인입니다. ping, mtr, traceroute, ethtool, tcpdump 등을 활용하면 손실 구간과 원인을 빠르게 분석할 수 있으며, 네트워크 장비 상태와 MTU, NIC 설정까지 함께 점검하면 대부분의 문제를 해결할 수 있습니다.

댓글 남기기