• MTU 2010.03.18

MTU (Maximum Transmission Unit) ; 최대 전송 단위
MTU[엠티유]는 TCP/IP 네트웍 등과 같이 패킷 또는 프레임 기반의 네트웍에서 전송될 수 있는 최대크기의 패킷 또는 프레임을 가리키며, 대개 옥텟을 단위로 사용한다.
TCP는 어떠한 전송에서라도 각 패킷의 크기를 결정하는데 있어 MTU를 사용한다.
MTU가 너무 크면 커다란 크기의 패킷을 처리할 수 없는 라우터를 만났을 때 전송 해야하는 경우가 생길 수 있다. 이와는 반대로 MTU가 너무 작으면, 대적으로 헤더 및 송수신 확인에 따르는 오버헤드가 커지게 된다.
대부분의 컴퓨터 운영체계에서는 기본적으로 대부분의 사용자에게 두루 적합한 MTU 초기치를 제공한다. 그러나, 일부 사용자들은 이 MTU 값을 변경해야할 필요가 있다.
일반적으로, 인터넷 사용자들은 MTU 기본 값을 바꿀 것인지 또는 바꾼다면 얼마로 꾸어야하는지에 대해 자신의 인터넷 서비스 공급자들의 충고를 따르는 것이 좋다.

윈도우95 사용자들의 기본 MTU 값은 1500 옥텟이며, 이것은 이더넷의 표준 MTU 값과 같다. 인터넷의 사실상의 표준 MTU는 576이지만, ISP들은 종종 1500을 사용할 것을 제시한다. 만약 웹사이트를 액세스하다가 MTU 크기가 576으로 설정되어 있는 라우터를 빈번하게 만나게된다면, 그 크기로 변경하는 것이 나을 수도 있다
(실제로는 어떻든 몇몇 사용자들은 MTU 설정을 576으로 해서 성능이 향상되었다고 주장하는 사람도 있고, 또 일부는 아무런 향상이 없다고 말하기도 한다). MTU의 최소치는 68로 설정할 수 있다.

윈도우98에서는 그들의 접속이 1500을 써야하는지 또는 576을 써야하는지를 감지할 수 있어서, 그 접속에 적합한 MTU를 선정할 수 있게 해준다. 기본 설정 값은 "자동(Automatic)"이지만, 사용자가 패킷 크기를 1500, 1000 또는 576 등과 같이 명시적으로 설정할 수도 있다. TCP 외의 프로토콜들에는 다른 MTU 크기가 적용될 수 있다.


=============== 또 다른 정의 ==============================
MTU (Maximum Transmission Unit)은 네트워크 상에 최대 전송 단위.
주어질 물리적 매체 상에서 전송 가능한 데이터의 최대 단위를 말한다. .
예) 이더넷의 MTU는 1500바이트이다

MTU란 네트워크 상에서 Maximum Transmission Unit이라는 것은 한번의 물리적인 프레임상에 전송될 수 있는 최대크기의 데이타 또는 패킷을 이야기한다. 이 패킷은 네트워크상에서 라우터가 필요로 하는 패킷의 주소와 같은 보를 싣고 있는 헤더와 트레일러(꼬리) 정보를 가지고 있다. 만약 페킷이 패킷프레임보다 더 작은 MTU를 가지고 있는 네트워크로 보내진다면 이 패킷은 불행히 쪼개져야(fragmentation,단편화) 한다. 그리고 이 조각들은 다시 조합되어야 하므로 결국은 성능저하가 생기게 되는 것이다.

MTU는 보통 MSS(Maximum Segment Size)와 RWIM(TCP Receive WINdow)와 충돌을 일으키게 되는데, MSS는 winsock이 접속 중에 받아들이려고 하는 최대 TCP데이타의 크기를 이야기한다. MSS는 MTU보다 적어도 40바이트이상 작아지는데, 이 사이즈는 헤더와 트레일러 정보 때문에 생기는 차이다. RWIN은 데이타를 받는 컴퓨터가 받기를 준비하는 데이타의 크기를 말한다. 만약 RWIN이 너무 크게 맞춰져 있다면, 하나의 패킷이 손상되거나 잃어버리게 되었을 때, 데이타의 손실이 너무 커지게 된다.

그리고 너무 작게 맞춰져 있을 때는(예를 들어, 1 x MSS), 전송이 아주 늦어지게 되는 것이다. 일반적으로 RWIN은 4x, 6x, 8x MSS 로 맞춰진다.

TCP/IP의 최대 속도는 SLIP(Serial Line Protocol)이나 PPP(Point to Point Protocol)접속을 통해 전송될 때, 무엇보다도 모뎀의 속도에 의해 결정된다. 이상적으로 생각한다면, 28.8Kbps(kilobits/s)의 속도 에서 3.2KBytes/sec의 속도를 가질 수 있어야 하고, 24Kbps접속에서는 2.7KBytes/sec의 속도를 가져할 것이다. 하지만 전송되는 TCP데이터율은 한 Byte/sec당 9bps의 모뎀 연결율(modem connect rate)를 필요로 한다.

윈도우즈의 Programs/Accessories/System 에 있는 Windows System Monitor (sysmon.exe)를 이용하면, 당신의 접속 속도를 쉽게 체크해 볼 수 있다. 데이타 전송률을 볼 수 있는 더 좋은 방법은 'Net.Medic'이라는 현재 사용하는 인터넷 브라우저와 함께 사용되는 프로그램이 있다. 이 프로그램은 인터넷을 사용하는 도중에 일어나는 문제들을 고쳐주거나, 해결방안을 마련해주도 상황들을 모니터할 수 있는 프로그램이다.

위에서 말한 데이타 전송률이라는 것은 통신상에서 획득할 수 있는 이상적인 속도를 얘기한다. 그러나 종종 네트워크 상에 보내기 전에 인터넷의 중간 IP 라우터들에서 TCP/IP요구를 조정하거나 MTU의 크기를 더 작게 다시 나누거나 하는 과정에서 이 속도는 많이 느려지는 것이다.

여러 웹 사이트들을 방문할 때, 아마도 576바이트의 IP 디폴트 MTU의 패스로 다운로드하는 라우터를 적어도 하나 이상은 만날 것이다.
그러면,이때, 당신과 또 TCP서버가 TCP 세그먼트(MSS)를 536바이트보다 크게 사용하고 있다면, 패킷을 나누기 위해 다시 느려지는
결과를 낳게 될것이다. 파일 다운로드 스피드에 상당한 영향을 미쳐 웹이나 e-mail 프로그램에서 텍스트 데이타를 받을 때나 fragmentation을 줄이는 것이 통신 환경을 개선하는 가장 중요한 부분이 될 것이다.


MTU =1500 과 576 의 차이
답> 아이넷에서는 MTU=576로 세팅하니 엄청 느려지고 인터피아에서는 꽤 빨라졌습니다.
그런데 역시나 http://www.krnic.net/net/image/connect9710.gif 을 보았더니 인터피아는 데이콤과 코넷에 E1, 미국과 T1 두개로 연결되어 있더군요. 즉, 위의 그림을 보시고 자기 ISP에서의 MTU를 최대로 쓸지 최소로 쓸지 결정하시기 바랍니다.

MTU 조절기는 http://www.iworld.net/tucows/adnload/dlmtuspeed.html 에서 다운로드 가능합니다.
먼 저, Internet의 연결된 Network Device들은 보통 MTU =1500의 Option을 사용합니다. 물론 RFC1063에 따르면 ETHERNET=1500 , POINT-TO-POINT=1500 , X.25=576 , SLIP=1006 , 등 여러 가지로 나뉘어지지만, 기본적으로 Router 및 WAN Switch로 구성된 INTERNET에서는 MTU를 1500을 사용합니다.(cisco systems 및 BayNetwork Router에서는 Default로 구성 시에 MTU=1500으로 되고, 또한 Frame-Relay 및 ATM OC-3에서도 이 Rule이 적용됩니다) 현재 WIN95 및 WINNT , HP-UX , Solaris 등 TCPIP Kernel에서는 Path-MTU -Discovery라는 Option을 사용하고 있어서 IP Header에서의 DF Bit(Don't Fragment Bit)를 1로 Marking 하여 보내고 있습니다. 이것의 의미는 자신이 보낸 IP Packet에 대해 Fragment를 허락하지 않는다는 내용입니다. ( HPUX의 경우 nettune명령으로 Option조절가능 ) 하지만 IBM MVS/TCPIP 및 Linux Old-version같은 경우는 사용을 않합니다. 만약 이러한 Frame이 Internet상의 MTU =576으로 설정되어 있는 임의의 Router로 routing 되었을 때,이 해당 Router는 Fragment를 하려하나 DF Bit이 1로 되어 있어 실패하고 해당 IP Source에게 "ICMP Type=3 Code=4 Fragment Need , but DF Bit=1"의 Message를 보내게 됩니다(Header에 Next-Hop MTU를 포함하여).이것을 Client에서 받았을 때에는 PMTU의 크기를 해당 Next-Hop MTU에 맞추어 줄여서 보내게 되고, 또한 RoutingPath 변경으로 인한 PMTU 증가는 Timer로 주기적(2분 또는 10분)으로 PMTU Size를 증가하여 ICMP Message를 받을 때 까지 MTU Size를 증가 시킨 후 DF=1로 Marking하게 됩니다. 이러한 Internet상에서의 Routing Path변경이 흔하지 않으므로 이 같은 MTU Size증가는 드물게 일어납니다 (만약 Firewall에서 이러한 ICMP Type을 Deny했다면 MTU Size가 틀리고 DF=1로 인해 Router가 Client에게 알려주려는 ICMP Message가 유실되어 Client측에서는 아무런 조치도 못하고 멍청하게 Hold되어 버립니다

외국 News Group에 이런 내용으로 하소연하는 Network Administrator을 많이 보았습니다,이런 경우에는 Sniffer또는 Network Monitor로 Packet을 Dump하여 초기 TCP Handshake때에 MSS(아래부분에 설명)를 확인하여 틀릴 경우에 1.MTU를 작은 쪽으로 맞추어 주거나 2.Firewall에서 ICMP Deny를 삭제하여준다)
-ICMP Type=3 Code=4 Message
0 1 2 3
0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Type =3 | Code =4 | Checksum |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| unused =0 | Next-Hop MTU |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| Internet Header + 64 bits of Original Datagram Data |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
* 이전에는 Next-Hop MTU가 없었으나 RFC1191에서 Propose된 후에 추가 되었슴. 또한 TCP Header의 초기 3-Way Handshake시에 Option Field의 MSS가 있는데 이것도 MTU 와 관계가 깊습니다. MSS란 Maximum Segment Size로 TCP Stack이 Sliding Window Buffer에서한번에 전송할 수 있는 Data Size수가 됩니다.보통 MTU -20Byte(IP Header) -20Byte(TCP Header)로 계산 되어 설정됩니다.
보통 MTU 를 1500사용 하므로 MSS=1460 증 한번의 TCP Packet전송으로 보낼 수 있는 Data Size는 1460 Byte가 되는 거죠.
초 창기 Internet에서는 TCP가 단순하게 IP Destination이 Non-Local일 경우에 536(576- 20-20)으로 설정하고 Local인 경우에는 1460(1500-20-20)로 설정하였다-아직도 IBM MVS/TCPIP는 이 Rule을 사용하고 있다 (IBM/MVS Tcpip Parameter에 Default로 놓을 경우 이렇게 되고 MTU를 1500으로 바꾸려면 해당 Network에 직접 1500을 기술하여야 한다, 이렇게 바꾸더라도 역시 PMTU 는 사용하지 못한다- DF Bit=0.역시 IBM은 Internetwrking 보다는 SNA로만 장사해야 될 것 같다 ) 물론 MSS Size는 초기 MSS Negotiation시에 작은 수로 맞추어 집니다.

octet ; 옥텟
컴퓨터에서의 옥텟은 8 비트의 배열을 말한다. 그러므로, 옥텟 한 개는 일반적으로 8 비트로 구성된 한 바이트와 같다.
그러나, 모든 컴퓨터 시스템이 8 비트를 1 바이트로 사용하지는 않기 때문에, 8 비트 한 셋을 일컫는 분명한 의미 제공을 위해 옥텟이라는 용어가 사용된다.

이 용어를 8진수의 의미를 갖는 octal과 혼동해서는 안된다.


octal ; 8진법

Octal은 8진법을 가리키는 용어이다. 8진법에서는 숫자들이 0, 1, 2, 3, 4, 5, 6, 및 7 등 8가지의 문자를 이용하여 구성된다.
7 다음의 숫자는 10이며, 17 다음의 숫자는 20 등으로 변해나간다. 컴퓨터 프로그래밍에서, 8진수는 2진수에 비해 짧게 표기할 수 있다는 장점 때문에 2진수 대신 사용되는 경우가 있다.

'Programming > 이것저것' 카테고리의 다른 글

CISC, RISC, CRISC(EPIC)  (0) 2010.03.18
펜티엄부터 린필드 i5까지, 인텔 어떻게 걸어왔나  (0) 2010.03.18
ICMP  (0) 2010.03.18
TCP/IP PPT 에서 뜯어왔음ㅋ  (0) 2010.03.18
OSI 7Layer  (0) 2010.03.18

+ Recent posts