關於最大傳輸單元(MTU)的整理

2021-06-04 07:42:54 字數 3257 閱讀 9834

mtu設定不當,可能會導致許多網路問題,如某些網路應用無法使用,某些**無法訪問等。下面是在網上搜尋整理的關於mtu設定的東西,某些可能未作驗證,僅供參考。

1. 如何確定網路mtu

某些isp接入的mtu可能會比常規使用的mtu小,這時如果設定了過大的mtu,就可能會導致很多服務無法使用的問題。可以通過ping程式確定mtu的值。

windows可以開啟命令提示符,使用 ping -l -f 的方式確定mtu

如果能ping通,說明詞mtu是可以的,可適當加大mtu值,直到最大;否則就要適當調小mtu值。設定最大的mtu值可以有效的提高網路吞吐量。

2. 常見mtu值

根據寬頻連線方式的不同,mtu可能不盡相同,如下所示:

1)pppoe/adsl: 1360-1492

2) pptp vpn: 1400-1460

3) l2tp vpn: 1400-1460

4) fixed ip: 1400-1500

5) dhcp: 1400-1492

3. windows 修改mtu

windows直接連線的,可在登錄檔中修改mtu,具體方法為:

1)【開始】-【執行】-【regedit】開啟登錄檔

2) 選擇【hkey_local_machine】-【system】-【currentcontrolset】-【services】-【tcpip】-【parameters】-【inte***ce】

3) 在 inte***ce 底下可能有很多的選項,乙個乙個的去看,會有乙個選項ipaddress與當前網絡卡的 ip 相同,然後在該選項上選擇【編輯】-【新建】-【dword值】,建立乙個名為【mtu】的dword,然後雙擊修改,選擇十進位制,填入合適 mtu 值

4. 路由器中設定mtu

如果是通過路由器共享上網,可以檢視路由器是否支援mtu設定,如果支援,那麼恭喜你,直接修改mtu為合適的數值即可。

1)tp-link 路由器設定

2)jcg路由器設定

4. tcp mss 與大包通訊的關係

使用者在使用路由器訪問internet時,經常會反饋不能訪問網頁(或部分網頁)以及使用outlook收發郵件(這些應用是基於tcp或udp的),但進行ping包時沒有問題,這時候檢查配置時也沒有錯誤。出現這種情況的時候,多半是因為在裝置上進行了nat應用,同時裝置對報文進行了分片操作。

ip報文裡是有五元組的,但報文要進行分片時,只有第一片報文帶有ip的五元組資訊(源目的ip位址,源目的埠號,協議號),後續的分片不會保留tcp/udp報文所有的標識資訊,如埠號資訊等,這種情況下,如果裝置又實現了nat轉換操作(nat轉換過程中,會隨機地做埠轉換),並且應用又是基於tcp/udp的,這就導致報文不能正確組包,會出現上述的問題現象。

tcp/ip連線時建立的過程中會協商很多引數的,其中tcp mss引數就是用於協商tcp報文大小的,如果協商出來的tcp mss的引數值小於裝置的mtu的值時,tcp報文在裝置上就不會被分片,否則就會出現報文分片並導致上述現象的發生,因此,為了避免上述情況的發生,一定要保證協商的tcp mss引數小於裝置的mtu的值。為此,quidway路由器上有乙個設定tcp mss值的命令,如果配置了這條命令,路由器裝置在建立tcp/ip連線的過程中就按照這個配置的值來修改協商報文中關於tcp mss的值,在同對端協商的過程中也就能夠協商出這個值來,如果不配置這條命令,路由器裝置就不會修改報文中的這個值(有時對端裝置傳送過來的協商報文中的這個值會很大,如8000)。一般來說,預設或配置的mtu的值一般在1500左右,將tcp mss的值裝置為小於1500就可以,如1400或1024等。

如果tcp mss值設定的過小,報文數量明顯增多又導致效率下降,特別是沒有配置nat應用的情況下,限制tcp報文大小更沒有必要,由於應用情況比較複雜,設定預設的tcp mss的值也不是特別合適(裝置會在建立連線時均要修改tcp mss的值),因此,還是在應用中加以注意比較好,思科裝置也是有這個配置命令的

mtu: maxitum transmission unit 最大傳輸單元

mss: maxitum segment size 最大分段大小

mss最大傳輸大小的縮寫,是tcp協議裡面的乙個概念。

mss就是tcp資料報每次能夠傳輸的最大資料分段。為了達到最佳的傳輸效能tcp協議在建立連線的時候通常要協商雙方的mss值,這個值tcp協議在實現的時候往往用mtu值代替(需要減去ip資料報包頭的大小20bytes和tcp資料段的包頭20bytes), 通訊雙方會根據雙方提供的mss值得最小值確定為這次連線的最大mss值。

而一般乙太網mtu都為1500, 所以在乙太網中, 往往tcp mss為1460。

協商tcp mss大小具體過程如下:

tcp client發出syn報文,其中option選項填充的mss欄位一般為(mtu-ip頭大小-tcp頭大小),同樣tcp server收到syn報文後,會傳送syn+ack報文應答,option選項填充的mss欄位也為(mtu-ip頭大小-tcp頭大小);協商雙方會比較syn和syn+ack報文中mss欄位大小,選擇較小的mss作為傳送tcp分片的大小。

對於涉及pppoe+nat、ipsec、l2tp、gre等組網,通常由於報文太大需要分片,這樣會降低傳輸速率; 所以選擇乙個合適的mss對傳輸資料來說比較重要. linux中一般可以通過netfilter iptables設定tcp mss來解決。

iptables -a forward -p tcp- -tcp-flags syn,rst syn -j tcpmss --clamp-mss-to-pmtu

這條規則的目的就是改變tcp mss以適應pmtu(path mtu)

iptables -a forward -p tcp --tcp-flags syn,rst syn- j tcpmss --set-mss 128

設定mss為128

5. 設定網路介面mtu

1)linux主機介面mtu可通過如下命令設定

ifconfig mtu

2)pppoe mtu設定,可以通過在配置檔案中新增

mtu

mru

3)nat自動設定mss值

iptables -a forward -p tcp --tcp-flags syn,rst syn -j tcpmss --clamp-mss-to-pmtu

參考

MTU 最大傳輸單元

maximum transmission unit mtu 最大傳輸單元 pppoe的最大接收單元為1492,乙太網最大載荷為1500 octets,pppoe頭為6 octets,ppp協議id為2 octets,所以ppp的mtu最大不能超過1492 ppoe協議要求所有客戶機上的mtu值不超過...

最大傳輸單元MTU

維基百科,自由的百科全書 本條目沒有列出任何參考或 2015年2月25日 維基百科所有的內容都應該可供查證。請協助新增來自可靠 的引用以改善這篇條目。無法查證的內容可能被提出異議而移除。最大傳輸單元 英語 maximum transmission unit 縮寫mtu 是指一種通訊協議的某一層上面所...

Linux C語言 取得MTU 最大傳輸單元

參照這篇部落格 檢視主機當前網絡卡,哪塊在使用.ifconfig lo0 flags 8049mtu 16384 options 3inet6 1 prefixlen 128 inet 127.0.0.1 netmask 0xff000000 inet6 fe80 1 lo0 prefixlen 6...