TCP MSS/MTU 불일치로 발생하는 Fragmentation 문제 분석
TCP 통신에서 성능 저하나 간헐적 연결 문제의 원인으로 자주 간과되는 요소가 MSS(Maximum Segment Size)와 MTU(Maximum Transmission Unit)의 불일치다.
이 불일치는 IP Fragmentation을 유발하거나, 경우에 따라 패킷 드롭과 재전송을 반복시키며 체감 성능을 크게 떨어뜨린다.
이 글에서는 MSS와 MTU의 관계, 불일치가 발생하는 구조적 원인, 그리고 실제 네트워크에서 나타나는 문제를 기술적으로 분석한다.
1. MTU와 MSS의 기본 개념
MTU(Maximum Transmission Unit)
MTU는 네트워크 계층에서 한 번에 전송할 수 있는 최대 IP 패킷 크기를 의미한다.
이더넷 환경에서 기본 MTU는 1500바이트다.
MSS(Maximum Segment Size)
MSS는 TCP 계층에서 한 세그먼트에 실을 수 있는 최대 데이터 크기를 의미한다.
일반적으로 MSS는 다음과 같이 계산된다.
MTU 1500
IP 헤더 20바이트
TCP 헤더 20바이트
→ MSS 1460바이트
즉, MSS는 MTU에서 IP와 TCP 헤더 크기를 제외한 값이다.
2. TCP 통신에서 MSS 협상 과정
TCP 연결은 3-way handshake 과정에서 MSS 값을 서로 교환한다.
- SYN 패킷에 MSS 옵션 포함
- 양측이 제시한 MSS 중 더 작은 값을 기준으로 통신
- 이후 모든 TCP 세그먼트는 해당 MSS 이하로 전송
이 과정이 정상적으로 이루어지면 Fragmentation 없이 효율적인 전송이 가능하다.
3. MTU 불일치가 발생하는 대표적인 환경
MTU 불일치는 주로 다음과 같은 환경에서 발생한다.
- VPN(IPsec, GRE, WireGuard) 사용
- PPPoE 환경
- 터널링(Overlay Network)
- 클라우드 VPC 간 통신
- 방화벽 또는 로드밸런서 경유
이러한 환경에서는 논리적 MTU가 실제 물리 MTU보다 작아진다.
예시
이더넷 MTU 1500
IPsec 오버헤드 56바이트
실제 사용 가능한 MTU 약 1444바이트
하지만 MSS가 여전히 1460으로 유지되면 문제가 발생한다.
4. MSS/MTU 불일치로 인한 Fragmentation 발생 과정
불일치 상황에서의 전송 흐름은 다음과 같다.
- TCP는 MSS 1460 기준으로 세그먼트 생성
- IP 계층에서 패킷 크기가 실제 MTU 초과
- Fragmentation 발생 또는 패킷 드롭
- 수신 측에서 재조립 필요
- 지연 증가 또는 재전송 발생
이 과정은 네트워크 효율을 크게 떨어뜨린다.
5. IP Fragmentation의 문제점
성능 저하
Fragmentation은 패킷을 여러 조각으로 나누기 때문에
- 전송 횟수 증가
- 처리 오버헤드 증가
- 재조립 비용 발생
패킷 손실에 취약
조각 중 하나라도 손실되면 전체 패킷이 무효화된다.
이는 TCP 재전송을 유발해 지연과 대역폭 낭비로 이어진다.
방화벽 및 NAT 문제
일부 방화벽이나 NAT 장비는 Fragmented 패킷을 정상 처리하지 못해
- 특정 사이트 접속 불가
- 대용량 데이터 전송 실패
같은 증상이 나타날 수 있다.
6. Path MTU Discovery(PMTUD)와 실패 시나리오
PMTUD는 경로상의 최소 MTU를 자동으로 탐지하는 메커니즘이다.
동작 원리
- DF(Don’t Fragment) 비트 설정
- MTU 초과 시 ICMP Fragmentation Needed 메시지 수신
- MTU 재조정
문제는 다음 상황에서 발생한다.
- ICMP 메시지가 방화벽에 의해 차단됨
- 클라우드 보안 정책으로 ICMP 미허용
이 경우 송신 측은 MTU를 줄이지 못하고, 패킷이 반복적으로 드롭된다.
7. 실제 증상과 장애 패턴
MSS/MTU 불일치로 인해 나타나는 대표적인 증상은 다음과 같다.
- 웹 페이지 일부 리소스만 로딩 실패
- SSH 접속은 되지만 대용량 전송 시 멈춤
- VPN 연결 후 특정 서비스만 접속 불가
- TCP 세션은 유지되지만 속도가 극도로 느림
- retransmission 증가, RTT 급증
이러한 문제는 애플리케이션 오류로 오인되기 쉽다.
8. MSS Clamping의 역할과 중요성
MSS Clamping은 방화벽이나 라우터에서
TCP SYN 패킷의 MSS 값을 강제로 낮추는 기법이다.
효과
- 실제 경로 MTU에 맞는 MSS 사용
- Fragmentation 사전 차단
- PMTUD 실패 환경에서도 안정성 확보
특히 VPN, 터널링 환경에서는 MSS Clamping이 사실상 필수다.
9. 운영 환경에서의 대응 전략
실무에서 권장되는 대응 방식은 다음과 같다.
- 터널 환경에서는 MTU를 명시적으로 축소
- 방화벽에서 TCP MSS Clamping 적용
- ICMP Fragmentation Needed 메시지 허용
- 패킷 캡처로 실제 MTU 확인
- 클라우드 간 통신 시 MTU 정책 사전 확인
단순히 MTU를 키우는 것이 아니라, 경로 전체의 최소 MTU를 기준으로 설계해야 한다.
10. 정리 및 결론
TCP MSS와 MTU의 불일치는
단순한 설정 문제가 아니라 네트워크 성능과 안정성을 직접적으로 저해하는 구조적 문제다.
핵심 요약
- MSS는 MTU에 직접적으로 종속
- 터널링 환경에서 MTU 감소는 매우 흔함
- 불일치 시 Fragmentation, 재전송, 패킷 드롭 발생
- PMTUD 실패 환경에서는 문제 지속
- MSS Clamping은 가장 효과적인 예방책
TCP 성능 문제를 분석할 때
애플리케이션이나 서버 리소스만 보지 말고,
MSS와 MTU의 일관성을 함께 점검하는 것이 안정적인 네트워크 운영의 핵심이다.