通信术语 最大传输单元(Maximum Transmission Unit,MTU)是指一种通信协定的某一层上面所能通过的最大数据包大小(以位元组为单位)。最大传输单元这个参数通常与通信接口有关(网路接口卡、串口等)。
基本介绍
- 中文名最大传输单元
- 外文名Maximum Transmission Unit
- 简称mtu
- 定义通信协定的层面能通过最大数据包
通信术语
原理说明
因为协定数据单元的包头和包尾的长度是固定的,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-Point4470位元组
如果在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
密西根理工大学