MTU(maximum transmission unit)
최대 전송 단위로써 전송할 수 있는 최대 프로토콜 단위(byte)의 크기로 망에서 전송되는 한 패킷당 최대 크기라고 생각하면 편하다. 이더넷 프레임 헤더를 보면서 헷갈릴수도 있는데 MTU는 데이터 필드(데이터 패킷, 페이로드)만 포함되는 지표이다. CCNP 공부를 하면서 필요해서 다시 복습하는겸 정리해본다.
MTU 종류
인터페이스 MTU
Ethernet MTU : 2계층의 MTU
프로토콜 MTU
IP MTU : 3계층의 MTU
MPLS MTU
그 외
PATH MTU : 대상 경로에서 가장 작은 값의 MTU를 가진 구간의 MTU
SYSTEM MTU : MTU설정 시에 IP MTU와 INTERFACE MTU를 한번에 설정하게 하기 위한 방법
이더넷 헤더
위의 내용을 더 자세히 얘기해서 이더넷 헤더는 트레일러를 포함하여 최소 64바이트이다.(preamble은 이더넷 헤더 아님) 최소 바이트보다 작으면 위에 나와있다 싶이 패딩을 통해 부족한 값을 0으로 채운다. 또한 프레임의 최대 크기는 1518바이트이며 dot1q 태그가 4바이트이기 때문에 dot1q(vlan)를 사용하면 1522바이트이다.
따라서 기본 MTU는 이더넷 헤더의 페이로드 즉 데이터 부분으로 1500바이트이다.
Ethernet MTU && IP MTU
Ethernet MTU
단편화 헤더가 없어 패킷을 드랍한다.
일반적으로 MTU라고 하면 이더넷 MTU를 지칭하고 인터페이스(layer2,layer3)에서 보내고 받는 프레임의 최대 페이로드 크기를 지정한다.
2계층은 단편화를 제공하지 않기 때문에 MTU보다 더 큰 값이 들어오면 프레임을 드랍한다.
IP MTU
단편화가 필요하기 전에 패킷의 최대 크기를 지정하며 기본값은 이더넷과 동일한 1500바이트이다.
아래에서 지표로 나오겠지만 DF비트가 설정되지 않으면 MTU보다 크더라도 드랍되지 않고 단편화된다.
맞다 Ethrnet MTU와 IP MTU는 사실 같지만 여기서 차이가 존재하는데 IP MTU는 레이어3에서만 적용되기 때문에 스위치로 가게되면 단편화 되지 않고 드랍된다. 따라서 이더넷 MTU보다 클 수 없고 작거나 같다.
IPv6 MTU
IPv6 MTU는 IP MTU와는 별개의 값이다. 따라서 IP MTU를 수정하더라도 IPv6 MTU는 1500바이트로 동일하게 유지된다. IP MTU와 동일하게 작동하며 IPv6에서만 작동한다.
단편화 헤더는 없지만 헤더 확장?을 통해서 단편화할 수 있다.
bigger MTU VS smaller MTU
bigger MTU
- 큰 패킷은 오류 발생률이 높다는 뜻으로 오류가 발생하면 재전송하는 패킷의 크기도 크고 재전송 비용이 많이 듦
- 각 개별 패킷을 보내는데 시간이 많이 걸려 네트워크 지연이 증가할 수 있음
- 적은 헤더 수에 많은 데이터를 보내 효율성이 올라감
smaller MTU
- 작은 패킷은 그만큼 오류 발생률이 적고 오류가 발생해도 재전송하는 패킷의 크기가 작아 재전송 비용이 적게 듦
- 헤더 수는 같지만 보내는 데이터가 적으니 자연스럽게 헤더 수가 늘어나고 효율성이 떨어짐
GRE,MPLS같은 헤더가 추가되는 친구들에서의 MTU
여기서는 GRE에 대해서 중점으로 다루면서 얘기할 것인데 GRE헤더에는 원래 우리가 아는 데이터 패킷에 24바이트의 헤더가 추가된다. 이때 터널링 기술이랑 할지라도 실질적으로는 물리적 인터페이스를 이용하기 때문에 1500바이트의 기본 설정은 문제를 일으킬 수 있다. 1500바이트 그대로면 패킷을 모두 조각화해야하므로 네트워크 성능이 크게 저하된다고 하는데 자세하게 풀어보자면 1476바이트의 데이터를 보내고 외부에 GRE헤더와 외부 IP헤더 24바이트를 추가하여 총 1500바이트의 패킷을 전송한다. 당연히 회선들의 MTU는 1500바이트일 것이고 문제가 없겠지만 1500바이트의 MTU를 가지게 될시 1524 바이트의 패킷을 전송하게 되고 단편화를 불러 일으킬 것이다.
GRE Tunnel MTU, Interface MTU, and Fragmentation
→ 자세한 내용은 여기서
GRE 터널의 MTU는 IP MTU - 24BYTE로 계산되어 설정됨
configuration MTU
#INTERFACE MTU
int [interface]
mtu [num]
#IP MTU
int [interface]
ip mtu [num]
#웬만한 상황에선 변경할 이유 없음
#MPLS 구축할땐 변경해줄 필요가 있는 것 같음
#SYSTEM MTU
conf t
system mtu [num]
단편화
단편화는 위 설명대로다. 단편화는 사이즈가 큰 패킷이 패킷의 사이즈보다 MTU가 작은 구간을 통과하기 위해 패킷을 작은 조각으로 나누는 과정이다.
단편화는 네트워크 장치들의 단편화, 재조립등의 추가 행동을 요구하기 때문에 네트워크 오버헤드를 증가시키고 라우터들의 자원을 소모하여 예상치 못한 부작용이 발생할 수 있다. 따라서 권장하지 않는다. 아래의 PATH MTU DISCOVERY와 MSS는 이런 단편화 현상을 줄이는 방법들이다.
알아가면 좋을 것
BABY GIANT : 1600 BYTE
JUMBO FRAME : 9600 BYTE
SUPER JUMBO FRAME : 20,000 BYTE
RUNT : 64바이트보다 작은 사이즈의 프레임
단편화 용어
단편화 계산
4000byte , MTU 1500, offset 계산은 8바이트 단위로 누적된 페이로드를 8로 나눈 값으로 지정한다. 즉 나눠지는 페이로드도 8바이트 단위로 나눈다.
페이로드 == MTU/8
offset == 페이로드/8
순서 | 페이로드 | 헤더 | MF | offset | ID |
1 | 1480 | 20 | 1 | 0 | 100 |
2 | 1480 | 20 | 1 | 185 | 100 |
3 | 1020 | 20 | 0 | 370 | 100 |
PMTUD(Path MTU discovery)
기기가 대상 경로에서 가장 낮은 MTU값을 동적으로 검색할 수 있으며 대부부느이 최신 기기에서 기본적으로 사용 설정된다.
위에서도 말했다싶이 단편화는 단편화 실행과 재조립에서 추가 처리가 필요하기 때문에 단편화를와 패킷 드랍을 방지하려는 목적에서 설계됐다.
동작 과정
- DF비트를 설정된 발신 패킷을 보낸다.
- DF 설정으로 인해 MTU가 작은 구간에서 패킷이 드랍되고 발신자에게 ICMP 메세지가 날아간다.
- 패킷이 드랍되지 않는 PATH MTU를 찾을때까지 반복한다.
TCP MSS
TCP의 페이로드로 IP헤더,TCP헤더를 제거한 1460바이트가 이에 해당한다. MSS를 조절해서 PATH MTU를 조절할 수 있다. 번외로 TCP 헤더를 보면 WINDOW SIZE라는 친구를 볼 수 있는데 MTU랑 같은 친구라고 생각하면 된다.
larger MSS
단편화로 이어질 수 있다. 단편화는 피해야 하는 상황이다.
smaller MSS
단편화 가능성이 적다.
번외
- CISCO 장치에서는 같은 네트워크의 장치는 MSS를 1460 바이트, 다른 네트워크의 장치는 536바이트로 지정한다.
- 3 WAY-HANDSHAKING에서 MSS를 지정하지 않으면 기본값인 536바이트를 이용한다.
- 상호 장치간의 통신에서 MSS는 같은 값을 이용한다. ex) A가 250으로 설정하고 B와 3-way → B는 250으로 MSS를 맞춰서 사용함
표준 문서에는 서로 다른 MSS를 가지고 통신할 수 있다고 하는데 CISCO 에서는 같은 MSS를 이용한다고 한다.
- 서로 다른 지정된 MSS를 가지고 광고하고 있을 시 더 낮은 MSS값을 선호함
설정
#TCP MSS
conf t
ip tcp mss [num]
'네트워크 > 네트워크 일반' 카테고리의 다른 글
제품 EoL,EoS date 차이 (0) | 2023.02.21 |
---|---|
cisco 유저 비밀번호 생성 보안 설정(password,패스워드 보안) (0) | 2023.02.21 |
CoPP(Control Plane Policing) (0) | 2023.02.16 |
VRF(Virtual routing and forwarding)-lite (0) | 2023.02.16 |
라우팅 보안 설정 (0) | 2023.01.25 |