How To/공개

효과적인 MTU 값 구하기 ( M$ Windows )

닉네임은왜공개되는가! 2006. 7. 12. 20:43

이 팁은 IPV4, 프로토콜 최적의 MTU 값을 참고해, 효율적인 MSS(Maximin Segment Size) 값과 RWIN(Receive WINdows) 값을 찾아 활용하는 데 목적이 있습니다.



//MTU 란? http://qaos.com/article.php?sid=149

PING –f –l <MTU Size(Packet size + 28)> <interface default gateway address>
( 여기서 28은 'IP Header (20 bytes) + ICMP-Header (8 bytes)' )

Ex) ping <IP Address> -f -l <576~1500>로 값을 넣어 1472 로 값이 나왔다면 1472 + 28 = 1500 , 즉 MaxMTU 값은 '1500' 이 됩니다.


//MSS란(Maximum Segment Size)? 데이터 프레임 중 순수한 TCP 데이터 부분의 최대 값으로 분할하지 않고 한번에 보내는 것을 뜻합니다.

"윈도우 사이즈(크기) : TCP 환경에서 송신 호스트와 수신 호스트는 데이터를 수신한 다음, 다음 데이터를 보내 줄 것을 요청(Ack)하고, 요청을 받은 호스트는 다음 데이터를 보냅니다. 이런 과정에서 송신호스트는 Ack을 수신하기 전에 일정량의 데이터를 보낼 수 있는데 이를 윈도우 사이즈라고 합니다.

MSS(Maximum Segment Size) : 현재의 연결에서 TCP가 보낼 수 있는 최대의 데이터 크기를 말합니다. MTU라고 알려진 최대 전송 크기에서 헤더 부분을 뺀 부분이 MSS가 됩니다. Ethernet의 경우 MTU가 1500byte로 결정되어 있으며, 따라서 Ethenet에서 MSS는 1460byte가 됩니다.



" - 인용 ( 초보 서버 관리자를 위한 네트워크 및 보안 기초 포켓북 )
  
MSS = MaxMTU - 40 ( 40 = 'IP Header(20 bytes) + TCP Header (20 bytes + ? bytes)' )
Ex) 1500 - 40 = 1460 ( ? = 12byte , timestamp 옵션 적용시 추가됨 )

'Tcp1323Opts(Timestamp - RFC 1323)' 옵션에 'timestamp'이 활성화될 경우,
'Client ACK: TCP header'는 12byte를 추가한다. 즉, MSS 값은 1448 이 된다.



이더넷(Ethernet) 환경이 다를 경우 아래 참고.

//http://smallvoid.com/article/tcpip-mtu-size.html

Note that the usual minimum Internet standard packet size used is 576 and the usual maximum is 1500.

When testing with the PING tool one have to subtract 28 from the packet size being tested. This is because the PING tool itself adds an IP Header (20 Bytes) and an ICMP-Header (8 Bytes), which together has the size of 28 bytes.

Network Type        MTU (bytes) Details
Ethernet : 1500
IEEE 802.3/802.2 : 1492
PPPoE : 1492 ( Optimal MTU for PPPoE over ATM is 1454 )
X.25 : 576 ( Dialup Connection )
Ethernet (Jumbo) : >=9000 ( Gigabit networking )
점보 기능이 지원되는 랜카드(NIC)가 있다면 '장치 관리자'에서 별로도 설정을 해 주는 것이 좋다.

1 GigaBit: TcpAckFrequency = 13 (RWIN = 64 KByte)
100 MegaBit: TcpAckFrequency = 5 (RWIN = 17 KByte)
10 MegaBit: TcpAckFrequency = 2 (RWIN = 8 KByte)

위 과정이 귀찮다면 아래 1), 2) 와 샘플을 이용하면 손쉽게 RWIN 값을 구할 수 있다.

1) http://www.speedguide.net:8080 접속후 "SpeedGuide.net TCP/IP Analyzer" 통해 자신의 정보를 얻는다.
2) 관련 프로그램 - 링크
DSLReport's DrTCP - http://www.dslreports.com/drtcp
SpeedGuide's TCP Optimizer - http://www.speedguide.net/files/TCPOptimizer.exe

Ex) 자신의 설정 확인 ( http://www.speedguide.net:8080/ )

TCP options string = 020405b40103030201010402

MTU = 1500
MTU is fully optimized for broadband.

MSS = 1460
Maximum useful data in each packet = 1460, which equals MSS.

Default TCP Receive Window (RWIN) = 256960
RWIN Scaling (RFC1323) = 2 bits (scale factor of 4)
Unscaled TCP Receive Window = 64240

RWIN is a multiple of MSS - 링크
Other RWIN values that might work well with your current MTU/MSS:
513920 (MSS x 44 * scale factor of 8)
256960 (MSS x 44 * scale factor of 4) <-- current value
128480 (MSS x 44 * scale factor of 2)
64240 (MSS x 44)

//Vista 는 수신(RWIN) '창 자동 조정 기능(Receive Windows Auto-Tuning)'을 사용하는데 디볼트 값이 8 이라고 함(링크), 웹 서핑시 방문한 사이트가 'RFC 1323(windows scale factor of 8)' 지원 못해 느려질 경우 참고.

( 관리자 권한으로 실행, start > run > cmd >
  ( runas /user: local_computer_name\administrator cmd )

  netsh interface tcp set global autotuninglevel=highlyrestricted

   - 홈 네트워크를 유.무선이나 일반적인 네트워크 형태로 구성 후 대용량 자료 전송시 과도한 딜레이가 발생할 경우와 모든 접속환경에서 비정상적인 속도저하나 전송실패가 발생할 경우 아래 참고.

  netsh interface tcp show global ( 현재 설정값 보기 )

  netsh interface tcp set global autotuninglevel=disabled
  netsh interface tcp set global autotuninglevel=normal ( Undo - 링크 , 1 , 2 )

- disabled : Receive 창 크기를 자동 조정 수신 기능을 사용하지 않도록 설정 ( 65536 bytes 으로 고정 )
- normal : Receive(수신) 창 크기를 자동 조정 옵션이 제공하는 향상된 네트워크 처리량 성능을 이용할 수 있도록 Auto-Tuning 활성화 ( autotuninglevel 기본값으로 Receive 값을 자동설정 )
- highlyrestricted : Auto-Tuning 이 설정화 된 상태에서 Receive 창 크기를 기본값보다 크게 설정 ( OS별로 스케일 배율 다름(?) )
- restricted : Receive 창 크기가 특정 환경에서 제한적으로 설정
- experimental : 보통 테스트 목적으로 사용됨

_ 참고
Fix Problems With Copying Large Files in Windows Vista
Vista TCP Window Scaling Auto Tuning May Slow Down Network Performance
Netsh commands for Interface Transmission Control Protocol
Auto-Tuning Disable Tools by M$


 덧, MMCSS(Multimedia Class Scheduler Service) 인한 속도 저하시 : 링크(1)


 덧, 과거 인터넷 회선 대여 업체가 영세해, 하나의 회선을 빌려 구분해 판매했다. 그 때, 이와 비슷한 문제가 발생했던 것으로 기억한다.

//Windows 7 Auto-Tuning Disable ( Se7en - 링크 )
UAC off ( 설정 수준 확인 )

%windir%\SYSTEM32 폴더의 cmd 파일을 관리자 권한으로 실행

   netsh interface tcp show global ( 현재 설정값 보기 )

   netsh interface tcp set global autotuninglevel=disabled
   netsh interface tcp set global autotuninglevel=normal ( Undo )

   스크립트 : 링크

bandwidth * delay product (Note this is not a speed test):

Your TCP Window limits you to: 10278.4 kbps (1284.8 KBytes/s) @ 200ms
Your TCP Window limits you to: 4111.36 kbps (513.92 KBytes/s) @ 500ms

MTU Discovery (RFC1191) = ON

Time to live left = 50 hops
TTL value is ok.

Timestamps (RFC1323) = OFF
Selective Acknowledgements (RFC2018) = ON
IP type of service field (RFC1349) = 00000000 (0)

참고 : 2000 / XP : http://www.speedguide.net/read_articles.php?id=157
Vista / 2008 : http://www.speedguide.net/read_articles.php?id=2574


//참고, 수동으로 RWIN 값 구하기 - 링크
"RWIN(RWIN: TCP Receive Window) 란? 데이터를 효율적으로 받을 수 있도록 자신의 컴퓨터의 버퍼를 설정해 놓는데 값이 너무 크면 패킷이 손상되거나 패킷을 잃었을 때 데이터의 손실 크며 너무 작으면 전송 속도가 늦어진다. 'Tcp1323Opts' 와 밀접한 관계가 있다." - 인용



//추가, Quick Figuring Optimal TCP Window Size


//계산기 by bcpark.net ( 2008.05.20, 네이버 마이홈 폐쇄됨. - 대체 링크 )
http://myhome.naver.com/id_xxx/Tip.calculator.internet.speed.htm
http://myhome.naver.com/id_xxx/Tip.calculator.kbsec.to.kbps.htm
http://myhome.naver.com/id_xxx/Tip.calculator.subnet.mask.htm

File Transfer Time/Speed Calculator : 링크


//참고 ( 이론적인 )
네트워크 환경의 튜닝과 확인(1)
Microsoft Windows 2000 TCP/IP 구현 정보
정보통신기술용어해설


//관련 글
2006/07/12 - [Tip/공개] - XP 네트웍 설정 ( TCP Optimizer / 백업용 ) - RWIN



덧, XP/Vista 비교를 많이 하는데 구조적으로 향상된 네트워킹을 원한다면 Vista가 낫다. 다만, 전체적인 체감 스피드에서 XP와 비교해 부족할 수 있기에 Tweak은 필수.

"레이턴시가 낮고 대역폭이 높은 환경에 있는 사용자들에게는 윈도우 비스타가 빈약한 파일 전송 성능을 개선시켜 줄 수 있습니다." - 인용

- Windows 7 ( Se7en ) - 2009.08.11
"우선 Windows 7은 Windows Server® 2008 및 Windows Vista®와동일한기반에서구축되었기때문에그핵심아키텍처는그대로입니다." - 인용

응용 프로그램 응답 속도가 느려서 사용자의 생산성이 저해될 수 있는 지점의 경우 네트워크 대역폭 사용을 최적화하고 응용 프로그램 응답성을 향상시키는 것이 중요한 과제입니다. - BranchCache

- 참고
Windows Core Networking : http://blogs.msdn.com/wndp/archive/2007/07/05/receive-window-auto-tuning-on-vista.aspx
The Cable Guy: TCP 수신 창 자동 조정 : http://technet.microsoft.com/ko-kr/magazine/2007.01.cableguy.aspx

초보 서버 관리자를 위한 네트워크 및 보안 기초 포켓북 : http://download.microsoft.com/download/5/9/3/59354f90-9bb1-4374-b6c8-f68d73fd3f3b/network_stepbystep_pocketbook.PDF

그 외 포켓북 시리즈 : http://blogs.technet.com/b/koalra/archive/2007/02/26/it-pro.aspx



..... 작성 중


반응형