Linux下查看與修改mtu值


MTU:通信術語
最大傳輸單元(Maximum Transmission Unit)是指一種通信協議的某一層上面所能通過的最大數據包大小(以字節為單位)。
我們在使用互聯網時進行的各種網絡操作,都是通過一個又一個“數據包”傳輸來實現的。而MTU指定了網絡中可傳輸數據包的最大尺寸,在我們常用的以太網中,MTU是1500字節。超過此大小的數據包就會將多余的部分拆分再單獨傳輸 。
MTU的設置不是一個值天下通用,所以需要我們合理設置特殊場景的MTU 。


首先確認什么是不合理的 :
1.本地MTU值大於網絡MTU值時,本地傳輸的數據包過大導致網絡會拆包后傳輸,不但產生額外的數據包,而且消耗了“拆包、組包”的時間 。
2.本地MTU值小於網絡MTU值時,本地傳輸的數據包可以直接傳輸,但是未能完全利用網絡給予的數據包傳輸尺寸的上限值,傳輸能力未完全發揮 。
這樣我們就知道:
所謂合理的設置MTU值,就是讓本地的MTU值與網絡的MTU值一致,既能完整發揮傳輸性能,又不讓數據包拆分

 

檢測需要設置的合理的值:

大部分網絡設備都是1500。如果本機的MTU比網關的MTU大,大的數據包就會被拆開來傳送,這樣會產生很多數據包碎片,增加丟包率,降低網絡速度。把本機的MTU設成比網關的MTU小或相同,就可以減少丟包 

Linux OS:
# ping -s 1472 -M do 172.21.0.118
含義:
發送大小包大小是1472(+28)字節,禁止路由器拆分數據包。 【 1472 + 8(ICMP回顯示請求和回顯應答報文格式長度) + 20(IP首部) = 1500 】
回復結果:
1.如果正常回復,說明網絡允許最大MTU就是1500字節,與系統默認相同,只需將自己的路由的MTU也設置為1500即可。
2.如果沒正常回復,說明數據包大小超過了網絡限定的MTU大小。需要減小探測包大小再次嘗試。

MTU設置與查看:

1、設置本機的mtu,即時生效,重啟后失效
# ifconfig eth0 mtu 1472

2、永久生效的修改方法,缺點是需要重啟網卡

# vim  /etc/sysconfig/network-scripts/ifcfg-eth0   增加如下內容

  • MTU="9000"

# service network restart


查看設置后的結果
# netstat -i   或使用ifconfig也可以查看得到

--------------------------------------------------------------------

MSS: Maxitum Segment Size 最大分段大小

MSS最大傳輸大小的縮寫,是TCP協議里面的一個概念。
MSS就是TCP數據包每次能夠傳輸的最大數據分段。為了達到最佳的傳輸效能TCP協議在建立連接的時候通常要協商雙方的MSS值,這個值TCP協議在實現的時候往往用MTU值代替(需要減去IP數據包包頭的大小20Bytes和TCP數據段的包頭20Bytes), 通訊雙方會根據雙方提供的MSS值得最小值確定為這次連接的最大MSS值。

 

而一般以太網MTU都為1500, 所以在以太網中, 往往TCP MSS為1460。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM