深入淺出 路由 MTU MRU MSS 設定

jacksonkingdom發表於2010-10-20

MTU
通訊術語 最大傳輸單元(Maximum Transmission Unit,MTU)是指一種通訊協議的某一層上面所能透過的最大資料包大小(以位元組為單位)

MTU 不行太大也不能太小 要剛剛合適
比如:一個資料總長是 2999位元組
MTU 為1500時 這個資料被 拆成 1500 為標準的一段 分 1500+1499 2段 傳送完畢
MTU 為1400 時 這個資料被 拆成 1400 為標準的一段 分 1400+1400+199 3段 傳送完畢
所以太小了 傳送就不效率了...

比如:一個資料總長是 9999位元組
MTU 為15000時 這個資料被 拆成 15000 為標準的一段 分 15000 1段 傳送完畢
但是包太大 傳送過程中 被干擾 或者 丟包了 就需要重新傳送了
所以太大了 傳送就也不效率了...

百兆網路 預設的MTU世界標準為最大1500 (PS:千兆也有巨幀 比如4k 6k 9k 甚至16k 不過要純千兆環境才可以)

MRU Maximum-Receive-Unit (MRU) 和MTU一樣 可以簡單理解為 一個接受 一個傳送 值而已
所以一般 路由設定 MTU MRU 相同值即可

如果測試 MTU 適合呢?
同最簡單的方法就行了...
ping命令 用到2個引數 -l 就是包的大小 -f 不允許分段傳送

例子我這裡要測試 ADSL 的 最佳MTU值
-l 引數一般 從 1472 逐步減少 (MTU最大值是1500 減去28包頭就是1472了)


  1. C:>ping -l 1465 -f qq.com
  2. Pinging qq.com [119.147.15.55] with 1465 bytes of data:
  3. Packet needs to be fragmented but DF set.
  4. Packet needs to be fragmented but DF set.
  5. Packet needs to be fragmented but DF set.
  6. Packet needs to be fragmented but DF set.
  7. Ping statistics for 119.147.15.55:
  8. Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
  9. C:>ping -l 1464 -f qq.com
  10. Pinging qq.com [119.147.15.55] with 1464 bytes of data:
  11. Reply from 119.147.15.55: bytes=1464 time=34ms TTL=56
  12. Reply from 119.147.15.55: bytes=1464 time=36ms TTL=56
  13. Reply from 119.147.15.55: bytes=1464 time=36ms TTL=56
  14. Reply from 119.147.15.55: bytes=1464 time=34ms TTL=56
  15. Ping statistics for 119.147.15.55:
  16. Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
  17. Approximate round trip times in milli-seconds:
  18. Minimum = 34ms, Maximum = 36ms, Average = 35ms
複製程式碼


這裡可以看出 1465 的包太大了 要分段傳送 1464 就剛剛好

  1. 1464 + 28 = 1492
  2. 1492 就是我這裡 ADSL的最佳 MTU MRU了...
複製程式碼


MSS是報文傳輸
MSS + 20 位元組 IP包頭 + 20位元組TCP頭 就是 MTU了...

那麼我的最佳MSS就是 MTU 減去40 1492-40 = 1452
1452就是我最佳的MSS了...

小結:
ping -l 的值 + 28 就是最佳 MTU值
MTU 減去 40 就是 最佳MSS值
[@more@]

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/23590362/viewspace-1040050/,如需轉載,請註明出處,否則將追究法律責任。