본문 바로가기

Network/L3

MTU, 진짜 1500 Byte 일까?

 

이번 글에서는 네트워크 패킷의 Maximum TransMission Unit, 줄여서 MTU 에 대해 알아보겠습니다.

 

MTU 란?

컴퓨터 네트워킹에서, 레이어의 커뮤니케이션 프로토콜의 최대 전송 단위(maximum transmission unit, MTU)란 해당 레이어가 전송할 수 있는 최대 프로토콜 데이터 단위의 크기(바이트)이다.

출처 : 위키백과

 

위키백과에서 설명하고 있는 대로, MTU는 해당 레이어가 전송할 수 있는 최대 프로토콜 데이터 단위의 크기 입니다. 

OSI 7 Layer 를 기준으로 3계층에서는 MTU, 4계층에서는 MSS(Maximum Segment Size)라고도 불립니다.

 

만약 보내려는 패킷이 MTU 보다 크다면 패킷을 여러 조각으로 나누어 보냅니다. 

이런 행동을 Fragmentation(단편화) 이라 하며, IP 헤더의 Identification(식별자), Flags(플래그), Fragment Offset(오프셋) 등의 필드에 단편화 된 패킷들의 정보가 담깁니다. 

 

식별자를 통해 단편화 된 패킷들을 재조립 할 수 있고, 플래그를 통해 단편화된 패킷인지 아닌지 판단할 수 있고, 오프셋을 통해 몇번째 단편화된 패킷인지를 알 수 있죠.

 

IP 헤더, 출처 : 위키백과

 

 

 

 

일반적으로 이더넷에서 수용할 수 있는 프레임의 크기는 점보 프레임을 제외하고 대부분 1500 바이트 입니다.

그렇다면 누가,왜 MTU 크기를 1500 바이트로 정했을까요?

 

IEEE

국제 전기전자공학자 협회인 IEEE는 1983년에 이더넷 프레임 표준을 제정했습니다.

 

요즘 우리가 사용하는 인터넷의 평균 속도는 100Mbps 입니다.

하지만 이더넷 프레임 표준이 제정되던 1983년에는 사용하는 회선의 평균 속도가 10Mbps 였습니다.

10Base5 라고 두꺼운 불리는 동축 케이블을 사용했기 때문이죠.

가장 우측의 케이블이 10Base5 케이블. Thicknet 이라고도 불린다.

 

 

 

하지만 여전히 왜 MTU가 1500 바이트인지는 알 수 없습니다.

그 이유를 알려면 이더넷 프레임의 구조를 알아야 합니다.

 

 

 

Ethernet Frame

 

이더넷 프레임, 출처 : 위키백과

 

 

이더넷 프레임은 위 그림과 같은 구조로 이루어져 있습니다.

8바이트의 프리앰블, 6바이트의 목적지 MAC 주소, 6바이트의 출발지 MAC 주소, 2바이트의 이더타입, n바이트의 페이로드, 4바이트의 CRC가 있죠. 그리고 프레임이 섞이지 않도록 각 프레임 사이에 12바이트의 프레임 간격을 둡니다.

 

만약 페이로드가 1500바이트라고 가정하면, 총 바이트는 1500 + 8(프리앰블) + 6(목적지 MAC) + 6(출발지 MAC) + 2(이더타입) + 4(CRC) + 12(IFG) = 1538  입니다.

 

즉 10Mbps 회선을 사용할 때, 프레임의 속도는 12304비트(== 1538 바이트) / 10Mbps 를 계산하면 0.0012304 초가 나옵니다.

1538 바이트의 프레임을 10Mbps 회선의 속도로 전송하려면 0.0012304 초가 걸리는거죠. 1초를 이 소요시간으로 나누면 초당 812.74 개의 프레임을 전송할 수 있습니다.

 

데이터의 전송 속도를 계산하기 위해, 초당 전송되는 프레임 수(812.74) * 프레임 당 페이로드 크기(1500) * 8(비트로 변환) 을 계산해보면 9752925.76 bps가 나옵니다.

여기에 효율성을 계산하기 위해  9752925.76 bps/10Mbps * 100 을 계산하면 약 97.5%의 효율성이 나오죠.

 

페이로드의 크기를 65,536 바이트로 가정해볼까요?

10Mbps 회선을 쓴다고 가정했을 때, 같은 방법으로 계산하면 초당 19.07 개의 프레임을 전송합니다.

 

너무 느리지 않나요?

큰 크기의 데이터를 보낼 수 있는건 좋은데, 그렇다고 회선의 속도가 42배 느려진다고 하면 누구나 반대할 것 같습니다.

 

Jumbo Frame

그래서 IEEE는 MTU 를 1500바이트로 정한 것 같습니다.

프레임 전송 속도와 프레임의 크기를 모두 고려해 회선을 효율적으로 사용하기 위해서요!

그때는 지금처럼 10Gbps, 100Gbps의 회선이 개발될 줄 몰랐겠죠.

그렇다면, 네트워크 환경이 발전한 지금도 1500바이트의 MTU를 사용해야 할까요?

개인 노트북의 ifconfig 명령 수행 결과

 

1500 바이트의 MTU는 말그대로 표준일 뿐, 상황에 따라 MTU 의 크기를 더 크게 혹은 작게 사용할 수 있습니다.

위 사진의 lo0 인터페이스는 MTU 로 16384 바이트를 사용합니다. 

 

이 인터페이스는 inet에서 알 수 있듯이, 루프백 인터페이스 입니다. 네트워크와 상관 없이, 시스템 내부에서의 통신에 사용되므로 외부 네트워크 환경과는 무관하게 MTU 값을 크게 사용할 수 있죠.

반면 USB 이더넷 장치로 사용되는 anpi0 인터페이스는 MTU가 1500바이트로 설정되어 있네요.

 

이처럼 표준 MTU 값인 1500바이트보다 큰 프레임을 점보 프레임 이라 합니다.

고성능 네트워크 환경을 위해 사용되는 장비들은 이 점보 프레임 기능이 탑재되어 있습니다.

 

마치며

ifconfig 명령어를 치다가 MTU 값이 1500 이 아닌 인터페이스들을 보고 의문점이 들어 탐구해봤는데, 덕분에 2,3계층 헤더에 대해 좀 더 알게되었습니다.

보완할 부분이 있거나 잘못된 점은 댓글로 지적 부탁드립니다.읽어주셔서 감사합니다.

'Network > L3' 카테고리의 다른 글

서브넷 마스크 쉽게 이해하기  (0) 2024.08.22
L3 단의 부하분산, ECMP와 UCMP  (0) 2024.08.11