通信術語
原理說明
因為協定數據單元的包頭和包尾的長度是固定的,MTU越大,則一個協定數據單元的承載的有效數據就越長,通信效率也越高。MTU越大,傳送相同的用戶數據所需的數據包個數也越低。
MTU也不是越大越好,因為MTU越大, 傳送一個數據包的延遲也越大;並且MTU越大,數據包中 bit位發生錯誤的機率也越大。
MTU越大,通信效率越高而傳輸延遲增大,所以要權衡通信效率和傳輸延遲選擇合適的MTU。
以乙太網傳送IPv4報文為例。MTU表示的長度包含IP包頭的長度,如果IP層以上的協定層傳送的數據報文的長度超過了MTU,則在傳送者的IP層將對數據報文進行分片,在接收者的IP層對接收到的分片進行重組。
這裡舉一個具體的例子說明IP包分片的原理。乙太網的MTU值是1500 bytes,假設傳送者的協定高層向IP層傳送了長度為3008 bytes的數據報文,則該報文在添加20 bytes的IP包頭後IP包的總長度是 3028 bytes,因為3028 > 1500,所以該數據報文將被分片,
注意:分片時僅僅對上層的數據進行分片,不需要對原來的IP首部分片,所以要分片的數據長度只有3008,而不是3028. 這特別容易出錯。
分片過程如下:
1. 首先計算最大的IP包中IP淨荷的長度 =MTU-IP包頭長度=1500-20= 1480 bytes。
2. 然後把3008 bytes按照1480 bytes的長度分片,將要分為3片,3008= 1480+1480+48。
3. 最後傳送者將為3個分片分別添加IP包頭,組成3個IP包後再傳送,3個IP包的長度分別為1500 bytes、1500 bytes和 68 bytes。
從以上分片例子可以看出第一、二個分片包組成的IP包的長度都等於MTU即1500 bytes。
在網路通訊中,需要儘量避免發生分片和重組,因為分片重組對網路性能影響較大。數據包傳送時選擇合適的MTU大小對提高通訊性能很有必要。MTU大小的選擇有協定協商方式,通過全路徑的MTU發現機制,找到整條路徑的最小MTU(也就是路徑MTU),然後報文傳送式小於等於路徑MTU,這就避免了數據傳輸過程中產生分片,從而提高數據轉發性能。MTU的協定發現機制由於安全等方面的原因,並不能總是生效,這時候就需要根據網路的特性選擇合理的MTU。如果在報文傳送過程中分片是不可避免的,那么要想辦法讓重組儘量在終端進行,避免在轉發路徑中進行。
路徑最大傳輸單元
在網際網路協定中,一條網際網路傳輸路徑的“路徑最大傳輸單元”被定義為從源地址到目的地址所經過“路徑”上的所有IP跳的最大傳輸單元的最小值。或者從另外一個角度來看,就是無需進一步分片就能穿過這條“路徑”的傳輸單元的最大值。
RFC 1191描述了“路徑最大傳輸單元發現方法”,這是一種確定兩個IP主機之間路徑最大傳輸單元的技術,其目的是為了避免IP分片。在這項技術中,源地址將數據報的DF(Don't Fragment,不要分片)位置位,再逐漸增大傳送的數據報的大小——路徑上任何需要將分組進行分片的設備都會將這種數據報丟棄並返回一個“數據報過大”的ICMP回響到源地址——這樣,源主機就“學習”到了不用進行分片就能通過這條路徑的最大的最大傳輸單元了。
不幸的是,越來越多的網路封殺了ICMP的傳輸(譬如說為了防範DDOS攻擊)——這使得路徑最大傳輸單元發現方法不能正常工作,其常見表現就是一個連線在低數據流量的情況下可以正常工作,但一旦有大量數據同時傳送,就會立即掛起(例如在使用IRC的時候,客戶會發現在傳送了一個禁止IP欺騙的ping之後就得不到任何回響了,這是因為該連線被大量的歡迎訊息堵塞了)。而且,在一個使用網際網路協定的網路中,從源地址到目的地址的“路徑”常常會為了回響各種各樣的事件(負載均衡、擁塞、斷電等等)而被動態地修改——這可能導致路徑最大傳輸單元在傳輸過程中發生改變——有時甚至是反覆的改變。其結果是,在主機尋找新的可以安全工作的最大傳輸單元的同時,更多的分組被丟失掉了。
對於時下大多數使用乙太網的區域網路來說,最大傳輸單元的值是1500位元組。但是像PPPoE這樣的系統會減小這個數值,這就使得在使用最大傳輸單元發現方法時可能會產生這樣的結果:一些處於配置不當的防火牆之後的站點變得不可達了。對於這種情況,還是可能找到變通的方法的,但這取決於你控制的是網路的哪一部分。這些方法包括改變用來在防火牆一端建立TCP連線的第一個分組的MSS(Maximum Segment Size,最大分段大小)。
對於一些支持老版本乙太網協定的IBM系統(例如XSeries),可能只有在把最大傳輸單元設為1492之後才能在當下常見的區域網路上進行運作。
如何檢測網關的MTU
在本機打開dos視窗,執行: ping -f -l 1472 192.168.0.1 其中192.168.0.1是網關IP位址,1472是數據包的長度。請注意,上面的參數是“-l”(小寫的L),而不是“-1”。 如果能ping通,表示數據包不需要拆包,可以通過網關傳送出去。 如果出現: Packet needs to be fragmented but DF set. 表示數據包需要拆開來傳送。此時,減少數據包長度,再執行上面的ping命令。從1400到1472之間多試幾次,就能找到合適的數據包長度了。把數據包長度加上數據包頭28位元組,就得到MTU的值。 如果檢測到網關的MTU值是1500,不需要修改。 如果網關有防火牆ping不通,可以試試直接把MTU設為1400。
如何修改本機的MTU
修改方法如下:
Windows平台下
1、運行regedit
2、打開:HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\Interfaces
3、Interfaces下有多個子項,每個子項對應一個網卡。請按如下方法選擇網卡:
A、確定本機用來連線Internet的網卡或撥號連線的IP,如192.168.0.19;
B、用滑鼠點擊Interfaces上的子項,查看鍵值列表中的IPAddress項;
C、如果IPAddress的鍵值與A中的IP相同,即192.168.0.19,則該子項就是要找的網卡。
4、進入該子項,在右邊的視窗里按滑鼠右鍵,選擇“新建”->“DWORD 值”,輸入名稱“MTU”,按回車。再用滑鼠雙擊“MTU”,彈出修改視窗,填入MTU的值(一般為十進制的1480)。
填寫前請先把基數設為十進制。 設定好後,需要重啟機器才能生效。
Windows 7(XP、Vista未實測)
1、使用管理員許可權運行cmd
2、使用netsh interface ipv4 show subinterfaces命令看看MTU以及本地連線名稱。
3、使用netsh interface ipv4 set subinterface "本地連線" mtu=1000 store=persistent
(註:這裡的連線名是你使用上面命令看到的MTU值對應的這個連線名,他在右邊顯示。)
附:1、此方法不用重啟;2、如是ipv6就將上面的ipv4改成ipv6
Linux下可使用如下命令修改 需要root許可權
ifconfig網卡MTU值
如 ifconfig eth0 mtu 1460
MaxMTU是最大的TCP/IP傳輸單元,在TCP/IP協定中,將要傳輸的數據分成較小的組進行傳輸,每個組的大小為576位元組。Windows默認的位元組為1500,這是乙太網的分組標準。ADSL使用的 PPPoE略小於這個數值,一般為1492。而某些網站採用的MaxMTU大於1492,所以,可能導致某些網頁不能訪問。修改Windows默認的MaxMTU可以解決這個問題。不論是 PC機上安裝的PPPoE軟體或者是內置在Modem的 PPPoE軟體,在使用中都有可能遇到這個問題。 如果使用路由器出現此種情況, 請在防火牆配置 => 基本設定 里, 將MTU改為手工, 設定為 1492 即可. 那如何確定路由器從ISP獲得的 MTU 為 1500, 請見附屬檔案圈出的位置.
網路中一些常見鏈路層協定MTU的預設數值如下:
FDDI協定: 4352位元組
乙太網(Ethernet)協定: 1500位元組
PPPoE(ADSL)協定: 1492位元組
X.25協定(Dial Up/Modem): 576位元組
Point-to-Point: 4470位元組
如果在IP層要傳輸一個數據報比鏈路層的MTU還大,那么IP層就會對這個數據報進行分片。一個數據報會被分為若干片,每個分片的大小都小於或者等於鏈路層的MTU值。當同一網路上的主機互相進行通信時,該網路的MTU對通信雙方非常重要。但當主機間要通過很多網路才能通信時,對通信雙方最重要的是通信路徑中最小的MTU,因為在通信路徑上不同網路的鏈路層MTU不同。通信路徑中最小的MTU被稱為路徑MTU。
mtu公司
簡介
發動機及渦輪機聯盟弗里的希哈芬股份有限公司(簡稱MTU)
MTU為戴姆勒-賓士集團屬下公司,是世界領先的柴油發動機製造商,其柴油發動機功率從35kw-9000kw,廣泛用於艦船、重型汽車和工程機械、鐵路機車。MTU不僅僅製造柴油發動機,還製造面向最終用戶的完整成套產品。
歷史
自1899年起,MTU的前身Friedrichshafen engine manufacturer,開始重型發動機製造,以其技術的開創性,為世界發動機行業樹立了諸多里程碑。 1919年的凡爾賽條約,禁止德國公司的產品用於飛行器。因此Friedrichshafen engine manufacturer發動機更多地用於鐵路機車和坦克、軍艦動力,曾在1936年創造了鐵路史上160公里時速的記錄。在1934年,Friedrichshafen engine manufacturer製造了世界上首台渦輪增壓的柴油發動機。此後不斷的創新,使Friedrichshafen engine manufacturer成為世界上最大、最先進的發動機製造商之一。
1960年梅賽德斯-賓士(Mercedes-Benz)收購了Friedrichshafen engine manufacturer。 MTU公司前身,德國Friedrichshafen(弗里的希哈芬)製造過Zeppelin(齊柏林硬式飛艇)發動機,Maybach、Zeppelin(邁巴赫、齊柏林)超級豪華轎車及Maybach引擎等最昂貴的德國工業產品,Friedrichshafen的創辦者、天才設計師威廉·邁巴赫在1907年創辦Friedrichshafen以前作為Daimler-Motoren-Gesellschaft(DMG)的技術總監,是第一輛梅賽德斯-賓士汽車(1901年)的設計者,這是汽車歷史上公認的第一輛現代轎車,而憑藉於此,威廉·邁巴赫在汽車界也被尊稱為“設計之父”。
Friedrichshafen在1960年併入Daimler集團,一個新品牌誕生了:Motoren-und Turbinen-Union Friedrichshafen GmbH(發動機及渦輪機聯盟弗里的希哈芬股份有限公司,簡稱MTU)。自此,MTU Friedrichshafen工廠,成為了鐵路機車引擎,艦船引擎、柴油發電機組引擎的主要製造商。
產品及聲譽
MTU作為陸用、水用和鐵路推動系統以及發電設備引擎的供應商,MTU以其領先的技術、高可靠性的產品以及一流的售後服務,在世界範圍內享有盛譽。MTU一向以輸出功率大、效率高、體積小並且經久耐用而聞名於世,但以往,偏高的價格也限制了MTU的產品絕大部分只套用在軍艦、坦克、核電、運輸船、鐵路機車等要害領域。
90年代以後
20世紀90年代MTU憑藉其四衝程柴油機全球領先的技術與著名的美國軍用柴油機最大的供應商—底特律柴油機公司(detroit diesel company,簡稱DDC)進行合作,現在MTU已經全資擁有DDC,而detroit diesel 正是以其獨特的兩衝程機享譽市場達一百多年並長期穩定占有美國軍用柴油機75%的份額,兩強的技術融合最終導致了新型柴油機的誕生——MTU/DDC2000系列及4000系列柴油發動機。2000年,MTU與DDC正式合併,至此,MTU公司成為世界上發動機技術最先進,功率範圍最大的發動機供應商。
目前世界上絕大部分主戰坦克使用的都是MTU系列柴油機,諸如“挑戰者”2E,豹2系列。
大學
Michigan Technological University
密西根理工大學