반응형

MTU란? (Maximum Transmission Unit)

 MTU란 최대 전송 단위를 말하는데요. 쉬운 말로, 단말 - 단말 간에 전송할 수 있는 패킷의 최대 크기 단위라고 생각하면 됩니다.

 

 우리가 핸드폰에서 LTE 네트워크로부터 (혹은 WiFi) 음악을 다운로드 받을 때, 음악을 패킷 단위로 잘라서 핸드폰으로 데이터를 전송하잖아요? 핸드폰은 그 데이터를 받고요. 이 때, 이 잘려진 패킷도 최대 사이즈가 있을거 같지 않나요? 네. 있습니다.

 

 다시 한번 말하면, 단말 - 단말(혹은 단말 - 네트워크)간에 전송할 수 있는 패킷의 최대 전송 단위를 MTU라고 합니다. 조금 더 구체적으로 가볼까요?

 

 MTU는 사실 2계층을 위한 최대 전송 단위

 사실, MTU는 특정 데이터링크에 하나의 프레임 또는 패킷에 담아 운반 가능한 최대크기를 말합니다. 여기서, 데이터링크는 네트워크 2계층에 속하는데요. (L2 계층) 특정 데이터링크라.. 감이 안오신다구요? 먼저 아래의 테이블을 볼까요?

L2 Layers MTU
DIX Ethernet 1500 bytes
802.3 Ethernet 1492 bytes
802.4 토큰 버스 8166 bytes
PPP 1500 bytes
Token Ring 4464(4Mbps), 17914(16Mbps)
FDDI 4352 byte
IPoA 9180 byte
WLAN (802.11) (WiFi) 7918 byte
Ethernet (이더넷) 1500 bytes

참고하면 좋을 자료: https://calculla.com/mtu

 

 보다보면 익숙한게 보이시나요? 이더넷, WiFi 등.. 그렇습니다. WiFi 네트워크, 이더넷 네트워크들이 L2 계층에 속합니다.

 

 위의 테이블보면, 특정 L2 계층에 대한 MTU값을 볼 수 있습니다. 우리가 익숙하게 들었던 단어 이더넷. 이건 보통 LAN선을 통한 네트워크를 말합니다! 실생활에 아주 많이쓰이는 LAN선! 그 LAN선으로 보낼 수 있는 패킷 최대 단위(MTU)는 무엇이다? 1500 byte입니다.

 

 사실, 주의할게 있습니다. L2 레이어에서 지원하는 최대 전송 크기, 그것이 바로 MTU 인데요. 이 MTU의 정의상 L2 레이어에서 지원하는 최대 전송 크기라는 점입니다. 그렇다면 L3 레이어 이상(IP계층 및 TCP 계층)의 계층들은 이 MTU 사이즈를 고려해야합니다. 즉, L3 이상의 상위 계층은 이 MTU 사이즈를 고려해서, 패킷을 만들어, L2 레이어에게 전달해야합니다.

 

 3계층(IP)에서 고려해야할 점

 먼저, 상위 계층(3계층 이상) 프로토콜은 하위 계층인 데이터링크에서 MTU에 맞춰야합니다. 적어도, MTU 사이즈 이하로 말이죠. 그러므로, 그 사이즈보다 큰 데이터는, IP 단편화등을 시행해야할 수도 있습니다. (IP 단편화가 모르면 우선 넘어가셔도 좋습니다)

 즉, 상위 계층(3계층 이상)에 해당하는 데이터(헤더 포함된 전체 싸이즈)의 수용 가능한 크기가 MTU인 겁니다. 다시 말해, IP계층은 적어도, 이 MTU사이즈 이하로 작거나 같게 패킷을 만들어, 데이터 링크(L2) 계층으로 전달해주기만 하면 됩니다.

 

IPv4와 IPv6에서의 MTU 최소 권고값은 아래와 같습니다.

▶ IPv4에서 MTU 최소 권고값 :  576 byte  (이 값 이상이어야함)
- RFC 791에서 IP 패킷 구조상으로 볼 때는 68 ~ 65,535 바이트 범위로써 가능하나,
- 수신 처리 가능한 MTU 최소값은 576 바이트로 권고함

  IPv6에서 MTU 최소 권고값 : 1280 byte  (이 값 이상이어야함)

(출처: http://www.ktword.co.kr/test/view/view.php?m_temp1=638&id=484)

 

 

 

 

운영체제별 MTU 확인 명령어

- 윈도우즈 : netsh interface ip show interface

- Linux  : ifconfig

리눅스에서 특정 인터페이스 MTU값 셋팅하기

https://zetawiki.com/wiki/%EB%A6%AC%EB%88%85%EC%8A%A4_%EC%9D%B4%EB%8D%94%EB%84%B7_MTU_%EB%B3%80%EA%B2%BD

 

각 헤더 최대 사이즈

(참고: https://www.oreilly.com/library/view/internet-core-protocols/1565925726/ch07s01s05s04.html)

- TCP : 최소 20bytes (대부분) 최대 60bytes

- IP : 20bytes (대부분), 최대 60 bytes

 

보통 TCP/IP datagram은 40bytes (20 IP H + 20 TCP H),  (H = Header)

최대 TCP/IP datagram는 120bytes (60 IP H + 60bytes TCP H)

 

참고하면 좋을자료 :https://www.ccexpert.us/ont/security-and-tunneling-overhead.html

 


미정리 부분

 

This number is derived as follows: the IP packet must contain your IPsec GRE header (24 bytes), the IP tunnel header (20 bytes), the ESP header (8 bytes), the ESP payload initialization vector (8 bytes), and the ESP trailer (2 bytes).

How big is the IPSec header?

For IPsec tunnel, the header length is variable and can be upto 64 bytes.

 

https://www.roadlesstraveledstore.com/what-is-the-size-of-esp-header/

 


TCP - segment
IP - packet
DataLink - frame
Physical - bit

1. 전반적으로 네트워킹에서의 Packet의 의미는
회선교환이 아닌 모든 데이터 단위가 이 경우 즉 Packet의 범주안에 들어감.

2. 그외의 경우는, TCP/IP layer에서는 위처럼 생각하면됨..

3. datagram은 보통 순수한 사용자의 message를 닫르게 부르는말.
IP packet에서의 packet은 이 사용자의 datagram을 layer-2의 MTU에 맞추춰서 토막낸 상태.
packet은 토막난 상태의 정보 스트림을 말함.

https://www.netmanias.com/ko/post/qna/1560

 

IPv4 프래그먼트화 및 재조합

- IPv4 프래그먼트화란,

 

- IPv4 프로토콜은 다양한 전송 링크에 사용되도록 설계됨.

- IPv4 데이터그램의 최대 길이는 65535 임

- 하지만 더 작은 최대 패킷길이의 제한을 적용함. 이것을 MTU라고함.

- MTU값은 "전송 링크"의 유형에 따라 달라집니다.

 

 

- IPv4 프래그먼트화는 데이터그램을 재조합할 수 있는 여러부분으로 나누는 작업.

 

- IPv4 헤더의 라이아웃.

 

 

 

- IPv4는 필요에따라 라우터에 IPv4데이터그램을 프래그먼트화 하도록 허용하기 때문에, MTU차이를 수용함

- 수신스테이션이 프래그먼트를 원래의 전체 크기 IPv4데이터그램으로 재조합함.

 

 

MSS

- TCP MSS(Maximum Segment Size)는 호스트가 수락할 단일 TCP/IPv4 데이터그램의 최대 데이터 크기를 정의함.

- 이 TCP/IPv4 데이터그램은 IPv4레이어에서 프래그먼트화될 수 있음.

 

- MSS값은 TCP SYN 세그먼트에서만 TCP 헤더 옵션으로 전송됨.

- MSS값은 호스트 간에 협상되지 않음.

 

- MSS값은 MTU값보다 40바이트 작다.

- MSS가 20바이트의 IPv4헤더와 20바이트의 TCP헤더가 포함되지 않은 단순한 TCP 데이터 크기임.

 

PMTU

- PMTU의 핵심은 경로, 그리고 가장 낮은 MTU를 동적으로 확인.

 

- TCP MSS는 TCP 연결의 두 엔드포인트에서 발생하는 프래그먼트화를 처리함.

- 두 엔드포인트 중간에 더 작은 MTU 링크가 있는 경우 처리하지 않음.

 

- PMTUD는 엔드포인트 간의 경로에서, 프래그먼트화가 발생하는 것을 방지하기 위해 개발됨.

- PMTUD는 패킷의 소스에서 대상의 경로에서 가장 낮은 MTU를 동적으로 확인하는데 사용됨.

 

- 참고로, PMTUD는 TCP와 UDP에서만 지원되고, 다른 프로토콜에서는 지원이 안됨.

- PMTUD가 호스트에서 활성화되어 있는 경우(대부분 활성화됨), 호스트의 모든 TCP 패킷과 UDP 패킷에 DF비트가 설정됨. (Don't fragment set 1, 즉 fragmet를 하지 말아라)

(그럼 NO PMTU면 DF가 not set)

 

- 절차.

호스트가,

DF 비트가 설정된 전체 MSS 데이터 패킷호스트를 전송,

수신자가,

PMTUD는 패킷에 프래그먼트화가 필요하다는 정보를 수신.

연결을 위해 전송 MSS값을 줄임.

 

호스트는 라우팅테이블에 host(/32) 항목을 MTU값과 함꼐 생성하므로,

대상에 대한 이 MTU값을 대부분 기억.

 

라우터는 DF비트가 설정된 IPv4데이터그램을 MTU가 패킷 크기보다, 낮은 링크에 전달하려고 하다가,

해당 패킷을 삭제 그런다음,

"fragmentation needed and DF set" (type 3, code 4) 코드가 포함된 ICMP(Internet Control Message Protocol) "Destination Unreachable" 메시지를 이 IPv4 데이터그램의 소스에 반환

 

 

D

1320 + 100?120? = 1440

 

우리

1280 + 100

 

 

 

 

 

 

출처

https://www.cisco.com/c/ko_kr/support/docs/ip/generic-routing-encapsulation-gre/25885-pmtud-ipfrag.html

 

 

반응형