MTU (Maximum Transmission Unit)
1. 개요
MTU(Maximum Transmission Unit, 최대 전송 단위)란 네트워크 인터페이스를 통해 한 번에 전송할 수 있는 최대 패킷(Packet) 크기를 바이트(Byte) 단위로 정의한 값이다.
네트워크 전송에서 패킷 크기에 제한을 두는 이유는 물리적 매체의 전송 능력 한계와 네트워크 자원의 효율적 분배 때문이다. 너무 큰 패킷은 전송 중 오류 발생 시 재전송 비용을 증가시키고, 특정 단말이 대역폭을 독점하여 다른 패킷의 전송을 지연시키는 현상을 초래할 수 있다. 따라서 MTU는 전송 효율성(Throughput)과 네트워크 안정성(Stability) 사이의 균형을 맞추는 핵심 설정 값이다.
2. 동작 원리 및 메커니즘
데이터가 네트워크 계층(L3)에서 전송될 때, 송신측은 전송하려는 데이터의 크기가 해당 인터페이스의 MTU보다 큰지 확인한다. 만약 데이터가 MTU를 초과하면, 네트워크 계층은 이를 MTU 크기에 맞게 여러 개의 작은 패킷으로 나누어 전송하며, 수신측은 이 조각들을 다시 합쳐 원래의 데이터로 복원하는 재조립(Reassembly) 과정을 거친다.
네트워크의 각 계층에서는 데이터를 부르는 단위인 PDU(Protocol Data Unit)가 다르며, MTU는 주로 L2(데이터 링크 계층)와 L3(네트워크 계층)의 경계에서 결정된다.
[표] 계층별 데이터 단위 (PDU) 비교
| OSI 계층 |
PDU 명칭 |
설명 |
관련 크기 제한 |
| 4계층 (Transport) |
Segment (TCP) / Datagram (UDP) |
포트 번호를 기반으로 데이터를 분할 |
MSS (Maximum Segment Size) |
| 3계층 (Network) |
Packet |
IP 주소를 기반으로 경로 제어 |
MTU (Maximum Transmission Unit) |
| 2계층 (Data Link) |
Frame |
MAC 주소를 기반으로 물리적 전송 |
Frame Size |
패킷 캡슐화 구조 (Encapsulation)
데이터가 하위 계층으로 내려가며 헤더가 추가되는 구조는 다음과 같다.
[ L2 Header [ L3 Header [ L4 Header [ Data (Payload) ] ] ] ]
* MTU 범위: 일반적으로 [ L3 Header + L4 Header + Data ]의 합계 크기를 의미한다.
3. IP 단편화 (Fragmentation)
IP 단편화(Fragmentation)란 전송하려는 IP 패킷의 크기가 경로 상에 존재하는 네트워크 장비(라우터 등)의 MTU보다 클 때, 패킷을 더 작은 단위로 쪼개는 과정을 말한다.
단편화 과정 및 문제점
- 분할: 라우터는 패킷의 IP 헤더에 있는 'Fragment Offset' 필드를 사용하여 데이터를 쪼개고 순서를 기록한다.
- 오버헤드 증가: 패킷이 쪼개질 때마다 각 조각마다 IP 헤더가 추가로 붙기 때문에 전체 전송 데이터 양이 증가한다.
- 패킷 손실 위험: 단편화된 패킷 중 단 하나라도 유실되면, 수신측은 전체 패킷을 재조립할 수 없으므로 전체 데이터를 다시 요청해야 한다. 이는 네트워크 성능 저하의 주요 원인이 된다.
참고: IPv4와 IPv6의 차이
IPv4에서는 중간 경로의 라우터가 단편화를 수행할 수 있으나, IPv6에서는 라우터의 부하를 줄이기 위해 라우터 단편화를 지원하지 않는다. IPv6 환경에서는 송신측이 PMTUD를 통해 경로 상의 최소 MTU를 미리 파악하여 패킷 크기를 조절해야 하며, 필요한 경우 송신측에서만 단편화가 이루어진다.
4. MSS (Maximum Segment Size)와의 관계
MSS(Maximum Segment Size)는 TCP(전송 제어 프로토콜) 계층에서 한 번에 보낼 수 있는 최대 데이터(Payload)의 크기를 의미한다. MTU가 L3(IP) 기준의 전체 패킷 크기라면, MSS는 L4(TCP) 기준의 순수 데이터 크기이다.
실제 데이터 전송 시, MTU에서 IP 헤더와 TCP 헤더의 크기를 제외한 값이 MSS가 된다.
MSS 계산식
MSS = MTU - (IP Header + TCP Header)
*
표준 이더넷 환경 예시:
* MTU: 1,500 bytes
* IP Header: 20 bytes (옵션 없을 때)
* TCP Header: 20 bytes (옵션 없을 때)
*
계산: 1,500 - (20 + 20) = 1,460 bytes
※ 주의: IP 헤더와 TCP 헤더는 옵션 필드 포함 여부에 따라 크기가 증가할 수 있으며, 이 경우 실제 MSS 값은 위 계산 결과보다 작아질 수 있다.
5. PMTUD (Path MTU Discovery)
PMTUD(Path MTU Discovery)는 송신측과 수신측 사이의 전체 경로(Path) 상에서 가장 작은 MTU 값을 자동으로 찾아내어, 단편화가 발생하지 않도록 패킷 크기를 최적화하는 메커니즘이다.
작동 원리
- 송신측은 IP 헤더의 DF(Don't Fragment) 플래그를 1로 설정하여 패킷을 보낸다. (단편화 금지 요청)
- 경로 상의 라우터가 자신의 MTU보다 큰 패킷을 받았는데 DF 플래그가 설정되어 있다면, 해당 패킷을 폐기하고 송신측에 ICMP Type 3, Code 4 (Fragmentation Needed) 메시지를 보낸다.
- 이 메시지에는 해당 라우터의 MTU 값이 포함되어 있으며, 송신측은 이 값을 바탕으로 패킷 크기를 줄여 다시 전송한다.
- 이 과정을 반복하여 경로 상의 최소 MTU(Path MTU)를 확정한다.
6. 주요 환경별 표준 MTU 값
네트워크 환경에 따라 캡슐화(Encapsulation) 과정에서 헤더가 추가되므로, 표준 MTU 값에 변동이 생긴다.
[표] 네트워크 인터페이스별 표준 MTU 값
| 환경 |
표준 MTU |
비고 |
| Ethernet (이더넷) |
1,500 bytes |
가장 일반적인 표준 값 |
| PPPoE |
1,492 bytes |
PPP 헤더(8 bytes) 추가로 인한 감소 |
| GRE Tunnel |
1,476 bytes |
GRE 헤더(24 bytes) 추가 |
| IPsec VPN |
1,400 ~ 1,440 bytes |
암호화 헤더 및 패딩으로 인해 가변적 |
| Jumbo Frame |
9,000 bytes |
고속 내부망(SAN 등)에서 효율 증대 위해 사용 |
7. 점보 프레임 (Jumbo Frame)
점보 프레임이란 표준 이더넷 MTU인 1,500바이트를 초과하는 대용량 프레임(통상 9,000바이트)을 의미한다.
- 장점: 동일한 양의 데이터를 보낼 때 패킷 수가 줄어들어 CPU의 인터럽트 횟수가 감소하고, 헤더 오버헤드가 줄어들어 전송 효율(Throughput)이 향상된다.
- 단점:
- 패킷 손실 위험 증가: 패킷 하나가 커진 만큼, 전송 중 오류 발생 시 재전송해야 하는 데이터 양이 많아져 효율이 급격히 떨어질 수 있다.
- 지연 시간(Latency) 증가: 큰 프레임이 전송되는 동안 작은 패킷들이 대기해야 하므로 실시간 통신(VoIP 등)에서 지연이 발생할 수 있다.
- 설정 주의사항: 경로 상의 모든 장비(NIC, 스위치, 라우터)가 점보 프레임을 지원하고 동일하게 설정되어 있어야 한다. 일부 장비만 설정되어 있거나 설정값이 서로 다를 경우, 패킷 드롭(Packet Drop)이 발생하여 통신이 완전히 단절될 수 있다.
8. MTU 불일치 시 발생하는 문제 사례
MTU 설정이 일치하지 않을 때 발생하는 대표적인 현상은 다음과 같다.
- 특정 웹사이트/서비스 접속 불가: 작은 크기의 패킷(TCP Handshake 등)은 정상 전송되어 연결은 맺어지나, 실제 데이터(큰 패킷)가 전송될 때 패킷이 드롭되어 페이지 로딩이 멈추는 현상이 발생한다.
- VPN 연결 후 통신 장애: VPN 터널링으로 인해 MTU가 감소했음에도 불구하고, 내부 서버가 1,500바이트로 패킷을 보낼 때 단편화가 금지(DF 플래그)되어 있으면 통신이 단절된다.
- 속도 저하 및 재전송 증가: 잦은 단편화로 인해 CPU 부하가 증가하고, 패킷 유실 시 재전송 범위가 넓어져 체감 속도가 급격히 떨어진다.
9. OS별 MTU 확인 및 설정 명령어
Windows
확인
netsh interface ipv4 show subinterfaces
설정
netsh interface ipv4 set subinterface "인터페이스명" mtu=1400 store=persistent
Linux
확인
ip link show
# 또는
ifconfig
설정
sudo ip link set dev eth0 mtu 1400
macOS
확인
설정
sudo networksetup -setMTU en0 1400
# MTU (Maximum Transmission Unit)
## 1. 개요
**MTU(Maximum Transmission Unit, 최대 전송 단위)**란 네트워크 인터페이스를 통해 한 번에 전송할 수 있는 최대 패킷(Packet) 크기를 바이트(Byte) 단위로 정의한 값이다.
네트워크 전송에서 패킷 크기에 제한을 두는 이유는 물리적 매체의 전송 능력 한계와 네트워크 자원의 효율적 분배 때문이다. 너무 큰 패킷은 전송 중 오류 발생 시 재전송 비용을 증가시키고, 특정 단말이 대역폭을 독점하여 다른 패킷의 전송을 지연시키는 현상을 초래할 수 있다. 따라서 MTU는 전송 효율성(Throughput)과 네트워크 안정성(Stability) 사이의 균형을 맞추는 핵심 설정 값이다.
## 2. 동작 원리 및 메커니즘
데이터가 네트워크 계층(L3)에서 전송될 때, 송신측은 전송하려는 데이터의 크기가 해당 인터페이스의 MTU보다 큰지 확인한다. 만약 데이터가 MTU를 초과하면, 네트워크 계층은 이를 MTU 크기에 맞게 여러 개의 작은 패킷으로 나누어 전송하며, 수신측은 이 조각들을 다시 합쳐 원래의 데이터로 복원하는 재조립(Reassembly) 과정을 거친다.
네트워크의 각 계층에서는 데이터를 부르는 단위인 **PDU(Protocol Data Unit)**가 다르며, MTU는 주로 L2(데이터 링크 계층)와 L3(네트워크 계층)의 경계에서 결정된다.
### [표] 계층별 데이터 단위 (PDU) 비교
| OSI 계층 | PDU 명칭 | 설명 | 관련 크기 제한 |
| :--- | :--- | :--- | :--- |
| 4계층 (Transport) | Segment (TCP) / Datagram (UDP) | 포트 번호를 기반으로 데이터를 분할 | MSS (Maximum Segment Size) |
| 3계층 (Network) | Packet | IP 주소를 기반으로 경로 제어 | **MTU (Maximum Transmission Unit)** |
| 2계층 (Data Link) | Frame | MAC 주소를 기반으로 물리적 전송 | Frame Size |
### 패킷 캡슐화 구조 (Encapsulation)
데이터가 하위 계층으로 내려가며 헤더가 추가되는 구조는 다음과 같다.
`[ L2 Header [ L3 Header [ L4 Header [ Data (Payload) ] ] ] ]`
* **MTU 범위**: 일반적으로 `[ L3 Header + L4 Header + Data ]`의 합계 크기를 의미한다.
## 3. IP 단편화 (Fragmentation)
**IP 단편화(Fragmentation)**란 전송하려는 IP 패킷의 크기가 경로 상에 존재하는 네트워크 장비(라우터 등)의 MTU보다 클 때, 패킷을 더 작은 단위로 쪼개는 과정을 말한다.
### 단편화 과정 및 문제점
1. **분할**: 라우터는 패킷의 IP 헤더에 있는 'Fragment Offset' 필드를 사용하여 데이터를 쪼개고 순서를 기록한다.
2. **오버헤드 증가**: 패킷이 쪼개질 때마다 각 조각마다 IP 헤더가 추가로 붙기 때문에 전체 전송 데이터 양이 증가한다.
3. **패킷 손실 위험**: 단편화된 패킷 중 단 하나라도 유실되면, 수신측은 전체 패킷을 재조립할 수 없으므로 전체 데이터를 다시 요청해야 한다. 이는 네트워크 성능 저하의 주요 원인이 된다.
> **참고: IPv4와 IPv6의 차이**
> IPv4에서는 중간 경로의 라우터가 단편화를 수행할 수 있으나, **IPv6에서는 라우터의 부하를 줄이기 위해 라우터 단편화를 지원하지 않는다.** IPv6 환경에서는 송신측이 PMTUD를 통해 경로 상의 최소 MTU를 미리 파악하여 패킷 크기를 조절해야 하며, 필요한 경우 송신측에서만 단편화가 이루어진다.
## 4. MSS (Maximum Segment Size)와의 관계
**MSS(Maximum Segment Size)**는 TCP(전송 제어 프로토콜) 계층에서 한 번에 보낼 수 있는 최대 데이터(Payload)의 크기를 의미한다. MTU가 L3(IP) 기준의 전체 패킷 크기라면, MSS는 L4(TCP) 기준의 순수 데이터 크기이다.
실제 데이터 전송 시, MTU에서 IP 헤더와 TCP 헤더의 크기를 제외한 값이 MSS가 된다.
### MSS 계산식
```text
MSS = MTU - (IP Header + TCP Header)
```
* **표준 이더넷 환경 예시:**
* MTU: 1,500 bytes
* IP Header: 20 bytes (옵션 없을 때)
* TCP Header: 20 bytes (옵션 없을 때)
* **계산: 1,500 - (20 + 20) = 1,460 bytes**
※ **주의**: IP 헤더와 TCP 헤더는 옵션 필드 포함 여부에 따라 크기가 증가할 수 있으며, 이 경우 실제 MSS 값은 위 계산 결과보다 작아질 수 있다.
## 5. PMTUD (Path MTU Discovery)
**PMTUD(Path MTU Discovery)**는 송신측과 수신측 사이의 전체 경로(Path) 상에서 가장 작은 MTU 값을 자동으로 찾아내어, 단편화가 발생하지 않도록 패킷 크기를 최적화하는 메커니즘이다.
### 작동 원리
1. 송신측은 IP 헤더의 **DF(Don't Fragment)** 플래그를 1로 설정하여 패킷을 보낸다. (단편화 금지 요청)
2. 경로 상의 라우터가 자신의 MTU보다 큰 패킷을 받았는데 DF 플래그가 설정되어 있다면, 해당 패킷을 폐기하고 송신측에 **ICMP Type 3, Code 4 (Fragmentation Needed)** 메시지를 보낸다.
3. 이 메시지에는 해당 라우터의 MTU 값이 포함되어 있으며, 송신측은 이 값을 바탕으로 패킷 크기를 줄여 다시 전송한다.
4. 이 과정을 반복하여 경로 상의 최소 MTU(Path MTU)를 확정한다.
## 6. 주요 환경별 표준 MTU 값
네트워크 환경에 따라 캡슐화(Encapsulation) 과정에서 헤더가 추가되므로, 표준 MTU 값에 변동이 생긴다.
### [표] 네트워크 인터페이스별 표준 MTU 값
| 환경 | 표준 MTU | 비고 |
| :--- | :--- | :--- |
| Ethernet (이더넷) | 1,500 bytes | 가장 일반적인 표준 값 |
| PPPoE | 1,492 bytes | PPP 헤더(8 bytes) 추가로 인한 감소 |
| GRE Tunnel | 1,476 bytes | GRE 헤더(24 bytes) 추가 |
| IPsec VPN | 1,400 ~ 1,440 bytes | 암호화 헤더 및 패딩으로 인해 가변적 |
| Jumbo Frame | 9,000 bytes | 고속 내부망(SAN 등)에서 효율 증대 위해 사용 |
## 7. 점보 프레임 (Jumbo Frame)
**점보 프레임**이란 표준 이더넷 MTU인 1,500바이트를 초과하는 대용량 프레임(통상 9,000바이트)을 의미한다.
* **장점**: 동일한 양의 데이터를 보낼 때 패킷 수가 줄어들어 CPU의 인터럽트 횟수가 감소하고, 헤더 오버헤드가 줄어들어 전송 효율(Throughput)이 향상된다.
* **단점**:
* **패킷 손실 위험 증가**: 패킷 하나가 커진 만큼, 전송 중 오류 발생 시 재전송해야 하는 데이터 양이 많아져 효율이 급격히 떨어질 수 있다.
* **지연 시간(Latency) 증가**: 큰 프레임이 전송되는 동안 작은 패킷들이 대기해야 하므로 실시간 통신(VoIP 등)에서 지연이 발생할 수 있다.
* **설정 주의사항**: 경로 상의 **모든 장비(NIC, 스위치, 라우터)**가 점보 프레임을 지원하고 동일하게 설정되어 있어야 한다. 일부 장비만 설정되어 있거나 설정값이 서로 다를 경우, 패킷 드롭(Packet Drop)이 발생하여 통신이 완전히 단절될 수 있다.
## 8. MTU 불일치 시 발생하는 문제 사례
MTU 설정이 일치하지 않을 때 발생하는 대표적인 현상은 다음과 같다.
1. **특정 웹사이트/서비스 접속 불가**: 작은 크기의 패킷(TCP Handshake 등)은 정상 전송되어 연결은 맺어지나, 실제 데이터(큰 패킷)가 전송될 때 패킷이 드롭되어 페이지 로딩이 멈추는 현상이 발생한다.
2. **VPN 연결 후 통신 장애**: VPN 터널링으로 인해 MTU가 감소했음에도 불구하고, 내부 서버가 1,500바이트로 패킷을 보낼 때 단편화가 금지(DF 플래그)되어 있으면 통신이 단절된다.
3. **속도 저하 및 재전송 증가**: 잦은 단편화로 인해 CPU 부하가 증가하고, 패킷 유실 시 재전송 범위가 넓어져 체감 속도가 급격히 떨어진다.
## 9. OS별 MTU 확인 및 설정 명령어
### Windows
**확인**
```powershell
netsh interface ipv4 show subinterfaces
```
**설정**
```powershell
netsh interface ipv4 set subinterface "인터페이스명" mtu=1400 store=persistent
```
### Linux
**확인**
```bash
ip link show
# 또는
ifconfig
```
**설정**
```bash
sudo ip link set dev eth0 mtu 1400
```
### macOS
**확인**
```bash
networksetup -getMTU en0
```
**설정**
```bash
sudo networksetup -setMTU en0 1400
```