Linux下修改MTU(最大傳輸單元)


MTU(最大傳輸單元)說明:

1 概述

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

2 MTU值的合理性原則

  1. 本地MTU值大於網絡MTU值時,本地傳輸的數據包過大導致網絡會拆包后傳輸,不但產生額外的數據包,而且消耗了“拆包、組包”的時間 。
  2. 本地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首部”。

對於測試的結果,其含義如下。

  1. 如果正常回復,說明數據包大小不超過網絡允許最大MTU;
  2. 如果沒正常回復,說明數據包大小超過了網絡限定的MTU大小,需要減小探測包大小再次嘗試。

3 修改MTU

3.1 臨時修改

可以通過類似如下命令,臨時修改本地特定網卡的MTU,但修改后重啟將失效。

# 將ib0網卡的MTU參數修改為65520
ifconfig ib0 mtu 65520

3.2 永久修改

可以通過類似如下命令,永久修改本地特定網卡的MTU,但是修改后需要重啟網卡生效。

  1. 通過vim /etc/sysconfig/network-scripts/ifcfg-ib0命令,打開網卡參數文件,並添加MTU=65520條目;
  2. 通過service network restart命令,重啟網卡服務使參數生效。

參考資料:

  1. 《Linux 查看與修改mtu值》
    https://blog.csdn.net/jctian000/article/details/87858470


免責聲明!

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



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