본문으로 건너뛰기
AZ Tools

MTU·TCP MSS 계산기

주어진 MTU에서 TCP MSS와 최대 UDP 페이로드를 구하고, PPPoE·GRE·WireGuard·VXLAN 등 터널의 오버헤드를 차감합니다.

TCP MSS

1,460

최대 UDP 페이로드

1,472

MSS 클램프

--set-mss 1460

계산 내역 (바이트)

링크 MTU1,500
캡슐화 — 없음 (일반 이더넷)0
IP가 쓸 수 있는 MTU1,500
IP 헤더− 20
TCP 헤더− 20
TCP MSS1,460

사용법

  1. 경로에서 가장 좁은 링크의 MTU를 넣습니다. 이더넷이면 1500, PPPoE 뒤라면 1492, 터널 인터페이스가 보고하는 값이면 그 값입니다.
  2. IPv4나 IPv6를 고르고, 트래픽이 터널을 타면 캡슐화도 고릅니다. 각 항목은 드는 바이트 수와 그 구성을 함께 보여 줍니다.
  3. MSS와 최대 UDP 페이로드, 바로 쓸 수 있는 클램프 값을 읽고, 숫자가 이상하면 아래 계산 내역을 확인하십시오.

자세한 설명

펼치기

MSS는 헤더들이 제 몫을 가져간 뒤 MTU에 남는 부분입니다. 일반 이더넷이라면 1500에서 IPv4 헤더 20바이트와 TCP 헤더 20바이트를 뺀 익숙한 1460이고, 같은 링크를 IPv6로 쓰면 1440이 됩니다. IPv6 헤더는 옵션 필드 없이 40바이트이기 때문입니다. MTU를 넣으면 이 뺄셈을 양쪽으로 해 주고 모든 단계를 보여 주므로, 결과를 믿는 대신 확인할 수 있습니다.

계산이 틀어지는 지점은 보통 캡슐화입니다. 그래서 오버헤드를 합계가 아니라 구성 요소와 함께 적어 두었습니다. PPPoE는 8바이트입니다. 헤더 6바이트에 PPP 프로토콜 식별자 2바이트이고, DSL 회선이 1492로 도는 이유이자 MSS 1452를 돌려주는 이유입니다. IPv4 위 GRE는 24바이트로, 바깥쪽 IP 헤더 20바이트에 GRE 4바이트입니다. WireGuard는 IPv4 위에서 60바이트, IPv6 위에서 80바이트이며, 바깥 IP 헤더와 UDP 8바이트, WireGuard 메시지 헤더 16바이트, Poly1305 태그 16바이트로 이루어집니다. 권장 MTU 1420이 여기서 나옵니다. VXLAN은 50바이트인데, UDP 안에 내부 이더넷 헤더까지 통째로 실어 나르기 때문입니다.

단순 뺄셈이 알려 주지 않는 것 두 가지를 이 도구는 알려 줍니다. 페이로드에 남는 것이 없어지는 순간을 경고합니다. 터널을 겹쳐 쌓으면 생각보다 빨리 그 지점에 닿습니다. 그리고 경로가 1280바이트 아래로 내려가면 경고합니다. 그것이 IPv6가 요구하는 최소 링크 MTU이기 때문입니다. 그보다 좁은 링크는 패킷을 아무리 작게 해도 IPv6를 실을 수 없습니다. IPv6에서는 라우터가 조각내기를 쓸 수 없기 때문입니다.

TCP 옵션 칸이 있는 이유는, 광고하는 MSS와 실제로 실리는 페이로드가 같은 값이 아니기 때문입니다. MSS는 기본 20바이트 헤더를 기준으로 협상되지만 타임스탬프와 SACK은 패딩까지 합쳐 세그먼트마다 12바이트쯤을 가져가므로, 1460으로 협상한 세션이 실제로 옮기는 것은 1448입니다. 광고하거나 클램프할 값을 구하려면 0으로 두고, 살아 있는 세션이 무엇을 옮기는지 따질 때 올리십시오.

자주 묻는 질문

MSS는 왜 1500이 아니라 1460입니까?

MSS는 TCP 페이로드만을 재기 때문입니다. 1500바이트 MTU 안에 IP 헤더와 TCP 헤더가 들어가야 하고 둘 다 최소 20바이트이므로 데이터에는 1460바이트가 남습니다. IPv6에서는 헤더가 20이 아니라 40바이트라서 같은 MTU가 1440을 내놓습니다.

MSS 클램핑은 무엇이고 언제 필요합니까?

라우터를 지나가는 SYN 패킷의 MSS를 고쳐 써서, 양쪽 끝이 실제 경로에 맞는 크기로 협상하게 만드는 것입니다. 경로 중간에 더 작은 MTU가 있는데 그것을 알려 줄 ICMP 메시지가 버려지고 있을 때 필요합니다. 연결은 잘 열리는데 첫 대용량 전송에서 멈추는 증상이 고전적인 신호입니다.

이더넷 헤더도 빼야 합니까?

아닙니다. MTU는 이미 인터페이스가 실어 줄 페이로드로 정의되어 있어서, 이더넷 헤더 14바이트와 프레임 검사 수열 4바이트는 그 밖에 있습니다. 1500바이트 MTU는 1518바이트 프레임에 실려 갑니다. 이것들을 빼면 18바이트가 모자라게 됩니다.

IPv6에는 왜 1280바이트 하한이 있습니까?

IPv6 라우터는 전송 중에 패킷을 조각낼 수 없고 보내는 호스트만 조각낼 수 있기 때문입니다. 그것이 작동하게 하려고 규격은 모든 링크가 최소 1280바이트를 실어야 한다고 요구합니다. 그보다 적게 남기는 터널은 작은 패킷이 우연히 통과하더라도 쓸 수 있는 IPv6 경로가 아닙니다.

IPsec 오버헤드는 목록에 있습니까?

없습니다. 고정된 값이 아니기 때문입니다. 터널 모드의 ESP는 바깥 IP 헤더와 8바이트 ESP 헤더, 초기화 벡터, 암호 블록 크기까지의 패딩, 무결성 검사값을 더하며, 합계는 암호 스위트와 해당 패킷에 필요한 패딩 양에 따라 달라집니다. 자기 설정에 맞는 값을 구해 MTU에서 빼고 나서 여기에 넣으십시오.

관련 도구