20201216-2层MTU和IP MTU

20201216-2层MTU和IP MTU

{1}二层MTU

[1]2层MTU介绍

指数据链路层提供给其上层(IP/MPLS等)最大传输数据的大小,单位字节,不能修改。
不同的协议要求的MTU大小不同。比如:

  • IEEE802.3/802.2最大MTU 1492,(还有8个字节是UDP头部)
  • 以太网口的MTU,范围是64-1518字节,过大或过小的以太网帧都可能被丢弃。
  • IP协议会根据二层MTU的值来决定是否对数据进行分片,两台PC之间的路由会经过很多跳,其中MTU最小的决定了传输速率。

![图片.png](https://img-blog.csdnimg.cn/img_convert/3c915ccbe5391ef8f5c2a410d2caa0e1.png#align=left&display=inline&height=99&margin=[object Object]&name=图片.png&originHeight=198&originWidth=1793&size=95039&status=done&style=none&width=896.5) 数据链路上经过的MTU到达交换设备,若数据帧长度大于交换机设备2层 MTU,则交换机直接丢掉,本质原因为数据链路层并没有分片分段机制(没有像IP层有片偏移,TCP层有序列号),UDP没有分段机制,所以UDP的数据包只能靠IP层去分片。

[2]2层帧类型

<1>常帧数据链路层帧:

  8+6+6+2+1500+4= 1526字节

<2>小巨型帧

  (Baby giant或baby jumbo frames), 是只比IEEE以太网标准所限定的体积稍大的以太网帧。小巨型帧是为使IP/[MPLS](https://baike.baidu.com/item/MPLS)能通过以太网帧直接传输到以太网服务而准备。大多数实现要求将非巨型的用户帧封装为MPLS帧格式以使其可以被封装成适当的以太网帧格式(以太类型值为0x8847和0x8848)。额外的MPLS和以太网头开销意味着支持1600字节的帧是运营商以太网网络中的一项强制性要求。

<3>超巨型帧

(Super jumbo frames,简称SJF),通常被认为是[有效负载](https://baike.baidu.com/item/%E6%9C%89%E6%95%88%E8%B4%9F%E8%BD%BD)大小超过**9000字节**的帧。<br />  巨型帧优点:<br />     巨型帧把以太网的最大帧长扩展到了9K,几乎把以前的最大帧长扩展了6倍。加大帧长的好处在于,减少了网络中数据包的个数,减轻了网络设备处理包头的额外开销。经过测试,在传统的千兆以太网中,每秒大约有81,000个数据包流经网络,而在使用了巨型帧的网络中,这个数字减少为14,000。在万兆网络中,这个对比更加强烈,标准的网络中帧长为标准1518的帧每秒有812,000个,而采用了巨型帧技术的网络上仅仅只有14,000个。大量减少的帧数目必将带来性能的提高。这样显著的性能提高,引起了各个厂商的兴趣。无论是系统吞吐量还是对CPU的占用率,相比传统以太网的帧来说,巨型帧都占有极大的优势。<br />  巨型帧缺点:<br />    可能会成为[融合网](https://baike.baidu.com/item/%E8%9E%8D%E5%90%88%E7%BD%91/7183347)络的障碍。如果人们在网络上传送语音或其他对延迟敏感的内容,不需要有妨碍这些对延迟敏感数据的超长帧传输。比如,超长帧会造成延迟,一旦一个‘大家伙’在线路上传送,它会较长时间占用线路,阻止其他人使用线路,从而造成延迟。   <br />     Internet连接不支持超长帧:一个长度超过Internet连接所支持长度的帧将在发送前被分段,从而大大降低了Internet连接的性能和可靠性。这导致需要每一个工作站都必须知道哪个数据包传送到本地网络,哪个数据包传送到Internet。为了检测线路上的最大数据包长度,IP执行MTU路由发现算法,但是,这不是标准化的作法,并且,由于拒绝服务攻击,许多防火墙不允许与这种算法有关的ICMP数据包通过。因此,超长帧不能在与Internet连接的网络中使用。支持巨型帧需要新的硬件,这也导致了今天巨型帧主要在一些特殊环境使用,比如在服务器场用于数据的传输。

<4>针对帧过大分组导致CPU负载的改良

使用巨型帧从而加快交换机的二层转发性能,对于常规以太网帧也可以有改良方法,通过帧卸载<br />     大段卸载(LSO)  <br />     大接收卸载(LRO)

[3]2层MTU服务端修改

2层mtu仅作用在数据链路层,且需要经过的每个网络节点阶段都要修改才能保证,mtu全部节点发包性能最优。常规数据帧大小在1500字节左右,要开启超过1500字节大小数据链路层支持,需服务端开启数据帧功能,否则,常规未开启巨型帧,发送3000字节ping信息,在数据包由发送服务器发送到网卡驱动,会在发送前进行分片
----------------------------------------------------------------------------------------------------------------
我在我的机器(192.168.0.90)的CMD窗口中执行“ping 192.168.0.1 -l 3000 -n 1”命令,同时在科来网络分析系统中设定一个过滤器,只捕获从192.168.0.90到192.168.0.1的单方向数据,由于3000远远大于了以太网的MTU值(默认mtu1500),所以它会被分段传输。这时我们来看捕获到的数据包,如图1所示。
一共捕获了3个数据包
数据包编号        IP分段标志        IP偏移量        传输数据
1        更多分段置1        0  0字节        1518-14-20-8-4=1472
2        更多分段置1        185 1480字节        1518-14-20-4=1480
3        更多分段置0        370 2960字节      86-14-20-4=48


ping 192.168.0.1 -l 3000 -n 1 : -l 3000表示有效数据为3000个字节
1个偏移量bit占8个字节
1472+1480+48=3000 字节
1518总字节 = 1500字节[MTU]+14字节(6字节[源mac]+6字节[目的mac]+2字节[2层帧类型])+4字节[以太网CRC]


1472字节 = 1518[总字节]-14字节(6字节[源mac]+6字节[目的mac]+2字节[2层帧类型])-20字节[ip报文头]-8字节[icmp包头]-4字节[以太网CRC]
1480字节 = 1518[总字节]-14字节(6字节[源mac]+6字节[目的mac]+2字节[2层帧类型])-20字节[ip报文头]-4字节[以太网CRC]
48字节= 86[剩余字节]-14字节(6字节[源mac]+6字节[目的mac]+2字节[2层帧类型])-20字节[ip报文头]-4字节[以太网CRC]
-----------------------------------------------------------------------------------------------------------

<1>windows 开启jumbo帧

![图片.png](https://img-blog.csdnimg.cn/img_convert/9ae5add667cb4b5891504c59cc391890.png#align=left&display=inline&height=285&margin=[object Object]&name=图片.png&originHeight=570&originWidth=1075&size=74042&status=done&style=none&width=537.5)
![图片.png](https://img-blog.csdnimg.cn/img_convert/7bfa7f22421de8c1f2f3cdfbe6db92d3.png#align=left&display=inline&height=283&margin=[object Object]&name=图片.png&originHeight=565&originWidth=1079&size=106854&status=done&style=none&width=539.5)
![图片.png](https://img-blog.csdnimg.cn/img_convert/d47b447f615acc674e3c95aa2aa9bcfc.png#align=left&display=inline&height=287&margin=[object Object]&name=图片.png&originHeight=573&originWidth=1075&size=95458&status=done&style=none&width=537.5)
开启巨型帧大小可自行修改,保持整个通信链路中保持一致就OK


<2> linux开启巨型帧

举例: ubuntu18.04 开启 mtu 9000
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-H15cbrYm-1608186843636)(https://cdn.nlark.com/yuque/0/2020/png/2803996/1608180594068-86b7e1ca-a1ba-420c-b2c9-25cd8735f441.png#align=left&display=inline&height=171&margin=%5Bobject%20Object%5D&name=%E5%9B%BE%E7%89%87.png&originHeight=341&originWidth=1163&size=101149&status=done&style=none&width=581.5)]


[4]2层MTU交换机修改

<1>思科2层MTU修改

二层MTU可以通过Qos或者基于端口进行配置。目前只有 Nexus 7000, 7700, 9300, 和 9500 支持端口配置 MTU。
Nexus 3048, 3064, 3100, 3500, 5000, 5500, 及 6000 配置方式此配置会对所有接口生效

policy-map type network-qos jumbo
  class type network-qos class-default
      mtu 9216
system qos
  service-policy type network-qos jumbo

Nexus 7000, 7700, 9300, 及 9500 配置方式
以下为基于接口的配置方式:

Switch(config)#interface ethernet 1/1
Switch(config-if)#mtu 9216

Nexus 2000 配置

注意,Nexus 2000 MTU 配置需要在其父 FEX 交换机上进行配置,如果父交换机支持接口下配置MTU,则在对应接口下配置,如果不支持,则需要使用network-qos

需要注意,使用 FEX 时,Fabric Port Channel (FPC) ,也就是连接 FEX 的端口聚合组也需要配置 MTU

interface port-channel136
  switchport mode fex-fabric
  fex associate 136
  vpc 136
  mtu 9216

注意: 在 6.2 版本以后,Nexus 7000 不支持给 Fabric Port Channel 接口直接配置MTU,必须创建一个 QoS 策略来全局调整 MTU。

policy-map type network-qos jumbo
  class type network-qos class-default
    mtu 9216
system qos
  service-policy type network-qos jumbo

二层 MTU
Nexus 3100, 3500, 5000, 5500, 及 6000

Nexus#show queuing interface ethernet 1/1
Ethernet1/1 queuing information:
  TX Queuing
    qos-group  sched-type  oper-bandwidth
        0       WRR            100
  RX Queuing
    qos-group 0
    q-size: 469760, HW MTU: 9216 (9216 configured)

Nexus 3000, 7000, 7700, 及 9000

Nexus#show interface ethernet 1/12
Ethernet1/12 is up
admin state is up, Dedicated Interface
  Hardware: 1000/10000 Ethernet, address: 7c0e.ceca.f183 (bia 7c0e.ceca.f183)
  MTU 9216 bytes, BW 10000000 Kbit, DLY 10 usec

Nexus 5000, 6000, 及 7000 的 FEX 接口

Nexus#show queuing interface ethernet 136/1/1
if_slot 68, ifidx 0x1f870000
Ethernet136/1/1 queuing information:
  Input buffer allocation:
  Qos-group: 0
  frh: 3
  drop-type: drop
  cos: 0 1 2 3 4 5 6 7
  xon       xoff      buffer-size
  ---------+---------+-----------
  19200     78080     90880
  Queueing:
  queue   qos-group    cos                 priority     bandwidth     mtu 
--------+------------+--------------------+---------+----------------+--------
  3                   0        0 1 2 3 4 5 6      WRR       100       9280

**Nexus 9000 的FEX 接口 **

9396-B#show interface ethernet 104/1/1
Ethernet104/1/1 is up
admin state is up,
  Hardware: 100/1000 Ethernet, address: 5475.d0e0.e5c2 (bia 5475.d0e0.e5c2)
  MTU 9216 bytes, BW 1000000 Kbit, DLY 10 usec

Catalyst 4500系列交换机

已知可用交换机版本:C4506 IOS 12.2

Cisco C4500系列交换机请检查板卡兼容性,一些老设备可能无法支持MTU>1570 https://www.cisco.com/c/en/us/support/docs/switches/catalyst-4000-series-switches/29805-175.html#topic3
二层接口MTU(只能全局配置)
system mtu 1600
检查命令:show system mtu或者

show interface G0/0
 GigabitEthernet1/3 is up, line protocol is up (connected) 
  Hardware is Gigabit Ethernet Port, address is 588d.097e.9982 (bia 588d.097e.9982)
 MTU 1600 bytes, BW 1000000 Kbit, DLY 10 usec, 
  reliability 255/255, txload 6/255, rxload 21/255
  Encapsulation ARPA, loopback not set

<2>华为2层MTU修改

华为
S1700,2700,5700,CE系列
二层接口MTU
命令支持Ethernet接口视图、GE接口视图、XGE接口视图、MultiGE接口视图、40GE接口视图、端口组视图、Eth-Trunk接口视图

<HUAWEI> system-view
[HUAWEI] interface gigabitethernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] jumboframe enable 5000

<3>华三2层MTU修改

华三
S6300、S5800、S7500、S10500、S5120
二层接口MTU

interface G1/1
jumboframe enable 6000
! 聚合组配置 Jumbo Frame
interface Bridge-Aggregation1
jumboframe enable 6000

{2} IP MTU

[1] 3层MTU介绍

IP MTU又叫3层MTU, 字节范围(68-65535字节)
网络层的上层协议(如TCP/IP),网络层IP协议会检查每个从上层协议下来的数据包的大小,并根据本机MTU的大小决定是否作“分片”处理。分片会导致传输性能降低,另外有些高层要求本层数据包不能切片,则会在IP数据包包头里面加上一个标签:DF(Do not Fragment)。这样会造成,当这个数据包传输过程中遇到MTU小于IP数据包的情况,转发设备就会根据要求丢弃这个数据包,然后返回一个错误信息给发送者。

[2]3层MTU修改

<1>思科3层MTU修改

三层 MTU
SVI 接口配置:

Switch(config)#interface vlan 1
Switch(config-if)#mtu 9216

三层物理接口配置:

Switch(config)#interface ethernet 1/1
Switch(config-if)#no switchport
Switch(config-if)#mtu 9216

三层 MTU
所有 Nexus 系列交换机都可以通过show interface eth x/y命令来查看接口 MTU:

Nexus#show interface ethernet 1/19
Ethernet1/19 is up
Dedicated Interface
Hardware: 100/1000/10000 Ethernet, address: 547f.ee5d.413c (bia 547f.ee5d.40fa)
MTU 9216 bytes, BW 1000000 Kbit, DLY 10 usec

使用 show interface vlan X命令查看 SVI 接口MTU:

Leaf3#show interface vlan 1
Vlan1 is down (Non-routable VDC mode), line protocol is down
  Hardware is EtherSVI, address is  547f.eed8.ec7c
  Internet Address is 1.1.1.1/23
  MTU 9216 bytes, BW 1000000 Kbit, DLY 10 usec
interface vlan 200
mtu 9000

三层接口 MTU
全局 :system mtu routing 1600
接口下(接口下优先):

interface vlan 100
 mtu 1600

<2>华为3层MTU修改

三层MTU

[HUAWEI] interface Vlanif 100
[HUAWEI-Vlanif100] mtu 1600
[HUAWEI] interface gigabitethernet 0/0/1
[HUAWEI-GigabitEthernet0/0/1] undo portswitch
[HUAWEI-GigabitEthernet0/0/1] mtu 1600

某些设备需要重启接口生效:[HUAWEI-GigabitEthernet0/0/1] restart

<3>华三3层MTU修改

H3C] interface Vlanif 100
[H3C-Vlanif100] mtu 1600
在某些软件版本下,需要使用 ip mtu 1600 命令来调整

<4>锐捷3层MTU修改

interface interface AggregatePort 10
no switchport
mtu 9216

{3}MSS

Maximum Segment Size 最大传输大小,TCP分段使用,tcp协议中,MSS是可协商项, 不包含TCP头和option,只包含TCP payload, TCP用来限制自己每次发送的最大分段尺寸。MTU大小影响TCP分片的大小。一般需要尽量减少TCP分片,否则发送和接收路由器需要花费更多的资源来处理分片和重组。
-----------------------------------------------------
IP = IP header(20字节) + TCP(1480字节) = 1500字节
TCP = TCP header(20字节) + TCP Payload(1460字节) = 1480字节
MSS = TCP Payload(1460字节)
---------------------------------------------------------
TCP在三次握手的第一个SYN消息有一个选项 option 4, 通告双方的MSS,如果一方MSS=1460,而另一方MSS=9000,会选择较小的一方即1460作为这个TCP连接的MSS;
MSS = 最小值 { 1460, 8960 } = 1460
MSS只是解决路径上第一跳的MTU问题,不能保证由于路径有更小的MTU导致的分片

参考文章:
https://www.halfcoffee.com/2017/09/18/MTU/ #交换机MTU总结
https://baike.baidu.com/item/%E5%B7%A8%E5%9E%8B%E5%B8%A7/8723785?fromtitle=jumbo%20frame&fromid=12630620&fr=aladdin #jumobo巨型帧
https://blog.csdn.net/yusiguyuan/article/details/22782943 #TCP分段和IP分片关系
http://www.xitongcheng.com/jiaocheng/dnrj_article_16788.html #windows调整巨型帧






  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值