- 공유 링크 만들기
- X
- 이메일
- 기타 앱
이 글의 목적은 이더넷 속도 저하를 야기하는 MTU 불일치와 노후 드라이버를 체계적으로 진단·최적화하여 가정·사무실·데이터센터 환경에서 즉시 재현 가능한 성능 개선 절차를 제공하는 것이다.
왜 이더넷 속도가 느려지는가
이더넷 속도 저하는 주로 전송단위 크기(MTU) 불일치, 드라이버/펌웨어 노후, 이중 모드(Speed & Duplex) 불일치, 오프로드/버퍼 설정 비최적화, 케이블 품질 저하, 스위치·라우터의 점보프레임/흐름제어 설정 미스매치로 발생한다. 특히 MTU는 경로상 최소 MTU를 초과하면 단편화 또는 드롭이 발생하여 TCP 재전송이 증가하고 체감 속도와 지연이 악화된다.
핵심 개념 요약
| 용어 | 설명 | 권장값/비고 |
|---|---|---|
| MTU (Maximum Transmission Unit) | 하나의 L2 프레임이 운반할 수 있는 최대 페이로드 크기이다. | 일반 이더넷 1500, 점보 9000 |
| MSS (Maximum Segment Size) | TCP 세그먼트 최대 크기(헤더 제외)이다. MTU에서 IP+TCP 헤더를 뺀 값이다. | IPv4: MTU-40, IPv6: MTU-60 |
| Path MTU | 송신↔수신 경로상 최소 MTU이다. | 경로마다 상이 |
| PPPoE/터널 오버헤드 | PPPoE, GRE, VXLAN, IPsec 등 캡슐화로 유효 MTU가 감소한다. | PPPoE 보통 1492 이하 |
| Auto-Negotiation | 속도·이중 모드 자동 협상이다. | 가능하면 사용 |
진단 순서 개요(10분 버전)
- 케이블·포트 확인: 케이블 Cat5e 이상, 길이 100m 이하, 포트 LED가 1G/2.5G/10G로 링크되었는지 확인한다.
- 스위치/라우터 설정 확인: 점보 프레임 사용 시 모든 구간에서 동일하게 활성화한다.
- 경로 MTU 측정: ICMP 단편화 금지 플래그로 최대 무손실 페이로드를 탐색한다.
- OS MTU 설정: 측정값에 맞춰 MTU를 적용한다.
- 네트워크 드라이버 업데이트: NIC 제조사 최신 드라이버와 펌웨어를 설치한다.
- NIC 고급 옵션 튜닝: RSS, 버퍼, 오프로드, EEE 등을 트래픽 특성에 맞춘다.
- 검증: iperf3, 파일 전송, 레이턴시를 재측정한다.
경로 MTU 측정 절차
Windows
ICMP 페이로드 크기(-l) + 헤더(28바이트) = MTU로 계산한다. 드랍이 발생하지 않는 최대값을 찾은 뒤 +28을 더해 MTU로 설정한다.
REM 관리자 PowerShell/명령프롬프트 ping {목적지_IP_또는_도메인} -f -l 1472 :: 성공이면 1472 + 28 = 1500 MTU가 유효 :: 실패 시 값(예: 1464, 1452...)을 낮추며 이진탐색 Linux
# ICMP DF로 경로 MTU 탐색 ping -M do -s 1472 {host} # 성공 시 1500 MTU 가능 # 실패하면 -s 값을 줄이며 최대 성공 payload를 찾는다 macOS
# macOS는 -D가 DF 플래그, -s가 payload ping -D -s 1472 {host} 운영체제별 MTU 설정
Windows 10/11
# 인터페이스 확인 Get-NetIPInterface | Sort-Object InterfaceMetric | Format-Table ifIndex,InterfaceAlias,NlMtu,AddressFamily
MTU 변경(예: 이더넷 어댑터, IPv4 MTU 1500)
Set-NetIPInterface -InterfaceAlias "Ethernet" -NlMtu 1500 -AddressFamily IPv4
IPv6도 필요한 경우
Set-NetIPInterface -InterfaceAlias "Ethernet" -NlMtu 1500 -AddressFamily IPv6
netsh 대안(서브인터페이스명 확인 후)
netsh interface ipv4 show subinterfaces
netsh interface ipv4 set subinterface "Ethernet" mtu=1500 store=persistent
Linux
# 일시 변경 sudo ip link set dev eth0 mtu 1500
영구 적용(NetworkManager)
sudo nmcli connection modify "유선_프로파일" 802-3-ethernet.mtu 1500
sudo nmcli connection up "유선_프로파일"
systemd-networkd 예시(/etc/systemd/network/10-wired.network)
[Match]
Name=eth0
[Link]
MTUBytes=1500
macOS
# 장치명 확인 networksetup -listallhardwareports
MTU 설정(예: en0)
sudo networksetup -setMTU en0 1500
점보 프레임(지원 장치/스위치에서만)
sudo networksetup -setMTU en0 9000
환경별 권장 MTU 기준표
| 환경 | 권장 MTU | 설명 |
|---|---|---|
| 일반 이더넷 인터넷 회선 | 1500 | 대부분 ISP와 코어 장비가 기본 지원한다. |
| PPPoE 회선 | 1492 또는 경로측정값 | PPPoE 오버헤드로 1500이 불안정할 수 있다. |
| IPsec/GRE/VXLAN 등 터널 | 1400~1472 | 캡슐화 오버헤드에 따라 경로측정 후 설정한다. |
| 데이터센터 내부 L2 | 9000(점보) | 대용량 전송/백업에 유리하나 전 구간 일치 필요하다. |
| IPv6 최소 | ≥1280 | 표준상 IPv6는 1280 미만 비권장이다. |
네트워크 드라이버 업데이트 절차
Windows
- 장치 관리자 열기 → 네트워크 어댑터 → 해당 NIC 더블클릭 → 드라이버 탭에서 버전을 기록한다.
- 메인보드/노트북 제조사 또는 NIC 제조사(Intel, Realtek, Broadcom, Qualcomm/Killer, Marvell, Aquantia) 공식 드라이버를 확보한다.
- 유선 연결 유지 상태에서 기존 드라이버 제거 후 재부팅 또는 설치 프로그램으로 상위 버전 적용한다.
- 고급 탭에서 오프로드 기능과 버퍼, RSS 등을 점검한다.
Linux
- 배포판 커널 업데이트로 NIC 드라이버가 동반 최신화되는지 확인한다.
- 서버 NIC(Intel ixgbe/i40e, Mellanox mlx5 등)는 벤더 DKMS/펌웨어 패키지를 고려한다.
macOS
내장 NIC는 시스템 업데이트에 포함된다. 써드파티 USB 2.5G/10G NIC는 제조사 드라이버와 펌웨어 유틸리티를 사용한다.
NIC 고급 설정 튜닝 체크리스트
| 항목 | 권장 | 설명 |
|---|---|---|
| Speed & Duplex | Auto-Negotiation | 양단 자동 협상 권장, 특수 이슈 시 고정값 일치 지정 |
| Interrupt Moderation | 활성(일반), 저지연은 완화 | 지연 vs CPU 사용량 절충 |
| Receive/Transmit Buffers | 서버: 상향, 저지연: 기본 | 대역폭·버스트 대응력에 영향 |
| RSS (Receive Side Scaling) | 활성 | 멀티코어 병렬 수신 |
| Checksum Offload/LSO/LRO | 활성(문제 시 비활성 테스트) | CPU 오프로드로 처리량 향상 |
| Energy Efficient Ethernet(EEE) | 지연 민감 시 비활성 | 절전에 따른 웨이크 지연 방지 |
| Flow Control(Pause) | L2 혼잡시 양단 일치 | 혼잡 완화, 그러나 레이턴시 증가 가능 |
| Jumbo Packet | 전 구간 호환 시 9000 | CPU 부하 감소, 혼합환경 주의 |
운영체제별 드라이버·설정 점검 명령 모음
Windows PowerShell
# NIC 드라이버/고급 속성 조회 Get-NetAdapter | Format-Table Name, InterfaceDescription, Status, LinkSpeed Get-NetAdapterAdvancedProperty -Name "Ethernet" | Format-Table DisplayName, DisplayValue
RSS/오프로드/버퍼 설정 예시
Set-NetAdapterRss -Name "Ethernet" -BaseProcessorNumber 0 -MaxProcessors 4
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Receive Buffers" -DisplayValue "1024"
Set-NetAdapterAdvancedProperty -Name "Ethernet" -DisplayName "Large Send Offload v2 (IPv4)" -DisplayValue "Enabled"
Linux
# 링크/드라이버 확인 ethtool eth0 ethtool -i eth0 # 드라이버/펌웨어 버전 ethtool -k eth0 # offload 기능 ethtool -g eth0 # ring buffer
오프로드 설정 토글 예시
sudo ethtool -K eth0 tso on gso on gro on rx on tx on
2.5G/10G 링크 강제(지원 장치에서)
sudo ethtool -s eth0 speed 2500 duplex full autoneg on
macOS
# 링크 상태 ifconfig en0 netstat -ib | grep en0
USB NIC(벤더 툴 제공 시)에서 링크 속도/점보 설정 확인
라우터·스위치·방화벽 설정 포인트
- 점보 프레임: 코어·액세스·서버 포트 모두 동일 MTU로 일괄 설정한다.
- PPPoE: WAN 인터페이스 MTU를 1492로 내리고, LAN 측 MSS Clamping을 적용한다(예: 1452).
- VPN: IPsec/GRE/VXLAN 오버헤드 기반 MTU 다운 및 MSS Clamping을 설정한다.
- Flow Control: 혼잡 도메인에서 일관되게 적용하되 레이턴시 요구가 높으면 신중히 사용한다.
- QoS: 대역폭 제한 정책이 병목을 만들지 확인한다.
케이블·하드웨어 검증
- 케이블 규격: 최소 Cat5e, 2.5G/10G는 Cat6/6A 권장이다.
- 길이/체결: 클릭감, 휘어짐, 피복 손상 여부를 확인한다.
- 포트 교차검증: 다른 포트·스위치·NIC로 교차 연결해 링크 속도와 에러 카운트를 비교한다.
성능 검증 시나리오
- 경로 MTU 반영 후 동일 구간에 대해 ping 재검증한다.
- 대역폭: iperf3 서버/클라이언트로 양방향 측정한다.
- 파일전송: 동일 파일을 SMB/NFS/SCP로 전송하여 평균 속도를 기록한다.
- 지연/지터: 1KB와 64KB 페이로드로 레이턴시 변화를 비교한다.
# iperf3 예시 iperf3 -s # 서버 iperf3 -c {서버IP} -t 30 -R # 리버스 측정 iperf3 -c {서버IP} -t 30 -P 4 # 4 스트림 병렬 실무 튜닝 레시피
시나리오 A: 일반 가정/사무실, PPPoE 회선
- ping DF로 최대 성공 페이로드 측정(예: 1464 성공) → MTU=1464+28=1492로 설정한다.
- 라우터에서 MSS Clamping 1452 적용한다.
- NIC 오프로드 활성, EEE는 지연 민감 앱이면 비활성한다.
시나리오 B: 파일 서버 백업, 점보 프레임
- L2 전 구간 9000 지원 확인 후 NIC/스위치/가상스위치 동일 MTU 9000 지정한다.
- RSS 활성, 수신/송신 버퍼 확장, Flow Control 일관 적용한다.
- iperf3와 실제 백업 작업으로 처리량을 검증한다.
시나리오 C: 재택 VPN
- 터널 오버헤드 고려해 MTU 1400~1472 범위에서 경로 측정으로 확정한다.
- VPN 게이트웨이에 MSS Clamping을 설정한다.
- 오프로드 일부 기능이 VPN과 충돌 시 해당 기능만 비활성하여 비교한다.
문제 해결 체크리스트
- 링크 속도가 기대치보다 낮게 협상됨(예: 100Mbps 고정): 케이블 교체, 포트 교체, Speed & Duplex 자동으로 복귀한다.
- 인터넷은 빠르나 내부 전송이 느림: 점보/오프로드/버퍼 일관성 점검한다.
- 특정 사이트만 느림: 경로 MTU 재측정, DNS 지연, 트래픽 쉬이핑 확인한다.
- 랜덤 끊김: EEE/절전 해제, 드라이버 상향, 전원관리에서 NIC 절전 해제한다.
자동화 스크립트 예시
Windows PowerShell: MTU 자동 탐색
$hostName = "8.8.8.8" $low = 1200; $high = 1472; $best = 0 while ($low -le $high) { $mid = [int](($low+$high)/2) $r = ping $hostName -f -l $mid -n 1 | Out-String if ($r -match "TTL=") { $best = $mid; $low = $mid + 1 } else { $high = $mid - 1 } } $mtu = $best + 28 "최대 무손실 페이로드: $best, 설정할 MTU: $mtu" Bash: 인터페이스별 MTU 요약
for i in $(ls /sys/class/net); do echo -n "$i: "; cat /sys/class/net/$i/mtu done 로그·모니터링 포인트
- Windows 이벤트 로그: e1cexpress, rt640x64 등 NIC 드라이버 이벤트 확인한다.
- Linux dmesg/syslog: 링크 업/다운, 오류 카운터 확인한다.
- 스위치 인터페이스 카운터: CRC, Giant, Fragment 증가 시 MTU/케이블을 의심한다.
요약
경로 MTU를 측정해 일치시키고, 최신 드라이버 및 일관된 NIC/스위치 설정을 적용하면 대부분의 이더넷 속도 저하는 해소된다. 점보 프레임은 전 구간 일치가 핵심이며, PPPoE/터널 환경은 MTU 하향과 MSS Clamping 조합이 효과적이다. 마지막으로 iperf3와 실제 워크로드로 재검증하여 결과를 수치화해야 한다.
FAQ
MTU 1500과 1492 체감 차이가 큰가?
순수 웹 브라우징에서는 차이가 미미하나, VPN/원격데스크톱/대용량 전송에서는 재전송 감소로 체감 차이가 나타난다. 경로 기준으로 안정적으로 동작하는 값이 항상 우선이다.
점보 프레임을 켰더니 오히려 느리다. 왜 그런가?
경로 중간 장비가 9000을 지원하지 않거나 NIC/스위치 설정이 불일치하면 프레임 드롭이 발생한다. 전 구간 지원 확인 후 동일 MTU를 강제해야 한다.
MSS Clamping은 언제 쓰는가?
PPPoE나 VPN처럼 MTU가 줄어드는 환경에서 TCP 세그먼트가 경로에서 단편화되지 않도록 라우터에서 최대 세그먼트 크기를 강제로 낮추기 위해 사용한다.
드라이버를 업데이트했더니 패킷 손실이 생긴다.
새 드라이버의 오프로드·절전 기본값이 변경되었을 수 있다. EEE를 비활성화하고 Checksum/LSO를 순차적으로 토글하며 재현 테스트로 원인을 좁혀간다.
2.5G/10G 업그레이드 시 주의사항은?
케이블 규격(Cat6/6A)과 스위치 백플레인 처리량, NAS/HDD 쓰기속도 병목을 함께 고려한다. 링크 속도만 높아져도 종단 I/O가 따라오지 않으면 체감 이득이 제한된다.
- 공유 링크 만들기
- X
- 이메일
- 기타 앱