MTU(最大傳輸單元)說明:
1 概述
最大傳輸單元(Maximum Transmission Unit)是指一種通信協議的某一層上面所能通過的最大數據包大小(以字節為單位)。
我們在使用互聯網時進行的各種網絡操作,都是通過一個又一個“數據包”傳輸來實現的。而MTU指定了網絡中可傳輸數據包的最大尺寸,在我們常用的以太網中,MTU是1500字節,超過此大小的數據包就會將多余的部分拆分再單獨傳輸 。
MTU的設置不是一個值天下通用,所以需要我們合理設置特殊場景的MTU 。
2 MTU值的合理性原則
- 本地MTU值大於網絡MTU值時,本地傳輸的數據包過大導致網絡會拆包后傳輸,不但產生額外的數據包,而且消耗了“拆包、組包”的時間 。
- 本地MTU值小於網絡MTU值時,本地傳輸的數據包可以直接傳輸,但是未能完全利用網絡給予的數據包傳輸尺寸的上限值,傳輸能力未完全發揮 。
因此所謂合理的設置MTU值,就是讓本地的MTU值與網絡的MTU值一致,既能完整發揮傳輸性能,又不讓數據包拆分。
Linux下修改MTU(最大傳輸單元):
1 查看本地網卡的MTU參數
使用ifconfig
命令即可查看本地特定網卡的MTU參數,如下圖所示,MTU參數值為65520。
2 測試本地網卡MTU是否大於網絡MTU
使用類似如下命令,可測試本地網卡MTU是否大於網絡MTU。
ping -s 65492 -M do 192.168.10.22
通過上述命令,發送大小包大小是
65492(+28)=65520
字節,禁止路由器拆分數據包。 至於(+28)
字節,是因為8字節的“ICMP回顯示請求和回顯應答報文格式長度”,以及20字節的“IP首部”。
對於測試的結果,其含義如下。
- 如果正常回復,說明數據包大小不超過網絡允許最大MTU;
- 如果沒正常回復,說明數據包大小超過了網絡限定的MTU大小,需要減小探測包大小再次嘗試。
3 修改MTU
3.1 臨時修改
可以通過類似如下命令,臨時修改本地特定網卡的MTU,但修改后重啟將失效。
# 將ib0網卡的MTU參數修改為65520
ifconfig ib0 mtu 65520
3.2 永久修改
可以通過類似如下命令,永久修改本地特定網卡的MTU,但是修改后需要重啟網卡生效。
- 通過
vim /etc/sysconfig/network-scripts/ifcfg-ib0
命令,打開網卡參數文件,並添加MTU=65520條目; - 通過
service network restart
命令,重啟網卡服務使參數生效。
參考資料:
- 《Linux 查看與修改mtu值》
https://blog.csdn.net/jctian000/article/details/87858470