路由器硬件基础知识--MTU
MTU专题
PMTU(最小MTU)发现的基本原理
- 源端发送长度等于自身出接口MTU的IP包,并设置该IP包不允许被分片;
- 路径上收到该IP包的设备,如果其出口MTU小于该IP包,都会将其丢弃,并返回携带了自己MTU的ICMP报文(称为datagram-too-big消息)给源端;
- 如果源端没收到datagram-too-big消息,则源端的出口MTU即为PMTU;如果源端收到datagram-too-big消息,则按这个消息里携带的MTU继续发送IP包;
- 如果源端没有再收到datagram-too-big消息,则PMTU为最后一次收到的datagram-too-big消息携带的MTU;如果源端还收到datagram-too-big消息,则再次发送IP包,长度为这个datagram-too-big消息的MTU;
- 如此反复,直到收到目的端的回应报文。
IPv4网络难以发现PMTU的原因
- 某些运营商或网站考虑网络安全(如预防DDOS攻击)或其他需要,把ICMP报文过滤掉了;
- PMTU需要主机和互联网上的各种网络设备(交换机、路由器、防火墙等)的配合,但它们的配置无法统一规范;
- 有些网络设备不遵从RFC 1191协议。
MSS
MSS是指每次能够传输的最大数据分段,即TCP报文的最大净荷长度。TCP协议在建立连接的时候通常会协商MSS值。默认情况,双方将各自出接口MTU减40字节作为MSS初始值通告给对方,之后选择其中较小的MSS作为发送TCP数据段的最大长度。
TCP MSS = MTU-40
MTU与协议的关系
OSPF和IS-IS这两种路由协议,LDP和RSVP-TE这两种MPLS信令协议都会进行MTU协商。OSPF和IS-IS网络可能有几百上千台路由器,路由信息量大。因此,携带路由信息的协议报文可能很大,超出邻居接收能力而无法处理。因此,OSPF和IS-IS在建立邻居关系时会协商MTU,将自己的接收能力告诉对方。
MPLS信令协议为什么也要协商MTU?
MPLS并没有分片机制。MPLS首部才4个字节,每个比特位都被占用了,无法再用于携带分片信息。
MPLS信令协商MTU,是为了自动发现MPLS转发的PMTU值。这个PMTU其实是用于IP分片的。MPLS报文的二层帧头和IP头之间被添加了若干MPLS头,每个MPLS头长4字节。
假设标签个数为N,则,
MPLS PMTU = IP MTU+N*4字节,即,
IP PMTU = MPLS PMTU- N*4字节。
IPv6 MTU
IPv6首部没有分片的字段,被放在IPv6扩展首部中。IPv6分片只发生在源端,中间节点不对IPv6报文进行分片。通常,只有源和目的节点需要解析IPv6扩展首部,如果IPv6报文长度超过中间节点的接口IPv6 MTU,中间节点会丢弃报文并反馈ICMPv6 packet-too-big消息。
IP MTU分片流程
涉及MTU分片的流程 | 分片位置 | 说明 |
始发IPv4报文 | 控制平面 |
始发IPv4报文是指本设备控制平面发送的协议报文,这些 IPv4协议报文的源地址是本设备; BGP协议报文,ICMP差错控制报文,BFD探测报文等, 都属于协议报文; 在设备上进行ping操作,设备发送的是源地址为本设备的 ICMP请求报文。 |
始发IPv6报文 | 控制平面 |
始发IPv6报文是指本设备控制平面发送的IPv6协议报文, 这些IPv6协议报文的源地址是本设备; 在设备上进行ping ipv6操作,设备发送的是源地址为本设 备的ICMPv6请求报文。 |
转发IPv4报文 | 转发平面 |
只在报文发送时才检查MTU,从入接口接收报文时不检 查MTU。 在NE40E/80E/CX600/ME60/NE5000E产品上,接口下配置 的MTU(称为接口MTU)是指IP MTU,是一个三层概 念,因此一般情况下,接口MTU只作用于三层流量转 发,对二层流量转发没有影响。二层报文的IP首部+IP负 载总长超过MTU时通常不会被分片。 |
说明 通常只有IPv6源节点和目的节点才会解析IPv6扩展首部,所以只有始发IPv6报文时才会进行IPv6 MTU分片,转发IPv6报文 时不进行IPv6 MTU分片。 |
控制平面分片流程
控制平面先进行IP分片,再封装MPLS、L2TP等隧道头(如果需要的话),最后发送到转发平面。控制平面的分片机制由软件实现,不存在硬件差异。
控制平面发送的协议报文,如果是非MPLS报文,且这些报文的IP首部+IP负载大于出接口的MTU值,
- 如果IP首部的DF=0,对报文分片,每个分片的IP首部+IP负载都不大于出接口MTU。
- 如果IP首部的DF=1,丢弃报文。
- 如果IP首部的DF=1且使能强制分片,则对报文分片,分片后每个片的DF=0。(默认不使能强制分片。接口下配置了clear ip df命令表示使能对协议报文的强制分片)。
转发平面分片流程
- 母版分片
- 集成板分片
母板分片/集成板分片:
- 分片仅针对需要进行IPv4转发的流量生效。需要进行IPv4转发的流量,不仅包括进入设备的RawIPv4流量,还包括解封装后需要进行IPv4转发的流量。
- 对于只进行二层转发,或只进行MPLS转发的流量,不进行分片。
- 对于转发的IPv6报文,不进行分片。
- 子卡分片
子卡分片与母板分片/集成板分片相比,区别在于:
由于子卡无法区分二层还是三层流量,因此对于同时转发二层和三层流量的VLANIF接口,其MTU会影响二层流量。当二层流量的IP首部+IP负载总长超过接口MTU时,二层报文也会被分片。每个分片的IP首部+IP负载总长度小于或等于接口MTU。
MPLS MTU 的定义
包含MPLS标签栈、IP首部、IP净荷的字段的长度。
IP报文入MPLS隧道时的分片方式
分片方式A:若IP包+Label > MPLS MTU,且IP首部的DF=0,则将IP报文分片,打上标签转发;如果IP首部的DF=1,则:
- 未使能强制分片:直接打上标签后转发。
- 使能强制分片:将IP报文分片,打上标签转发。
分片方式B:仅在IP报文入隧道时进行MPLS报文分片。不支持强制分片。若IP包+Label > MPLS MTU,且IP首部的DF=0,则首先将IP报文分片,然后打上标签转发;如果IP首部的DF=1,则丢弃报文,返回Datagram-too-big消息。
分片方式C:分片依据是隧道物理出接口MTU而不是MPLS MTU,且MPLS报文分片在PE节点和P节点都可能发生。由于单板先封装MPLS再进行分片,子卡无法区分MPLS报文在本设备是入隧道还是只进行MPLS转发,所以此类单板作为PE节点的NNI使能L3VPN分片时,如果同时作为P节点的NNI时,所有超过接口MTU的MPLS标签报文都会被分片。
OSPF协议的MTU协商
根据RFC2328的定义,OSPF通过DD报文(Database Description packet)的interface MTU字段来协商MTU值。RFC2328规定,如果设备收到的DD报文interface MTU字段值小于DD报文出接口的MTU,则邻居关系停留在Exchange start状态,无法达到FULL。不同厂商对于DD报文中的MTU协商处理原则不尽相同:
- 有的厂商默认检查DD报文的MTU值。可以通过命令行调整为不检查。
- 有的厂商默认不检查DD报文的MTU值。可以通过命令行调整为检查。
- 还有的厂商设备检查MTU值,且不可调整。
IS-IS 的MTU 协商
根据ISO 10589的定义,用于建立与维持IS-IS邻接关系的Hello报文,不得小于路由器接口能够接收并处理的最大数据长度,如果小于,则进行填充。
NE40E/80E/NE5000E/CX600/ME60产品提供了用于设置接口发送Hello报文是否进行填充的功能。缺省情况下,上述产品发送Hello报文的规则如下:
- P2P接口:P2P邻居建立之前,发送带有填充字段的标准Hello报文。P2P邻居建立之后,发送不带有填充字段的小型Hello报文。
- 广播接口:发送带有填充字段的标准Hello报文。
LDP 的PMTU 协商
RFC3988定义了自动发现LDP LSP路径MTU的机制。LSR针对某个FEC,把所有下游设备通告的MTU和本机该FEC的出接口MTU做比较,计算出最小值通告给上游。LSP上不同节点,MTU取值不同:
- 如果是Egress节点,MTU取值为65535。
- 如果是倒数第2跳且收到一个隐式空标签,则设置LDP MTU为FEC的出接口MTU。
- 其他情况,则比较FEC的出接口MTU和下游节点发给他的TLV中的MTU,取其中的较小值作为LDP MTU。如果收到的TLV没有指定MTU,则默认为65535。
LDP MTU通告方式为,把计算出来的MTU值放在Label Mapping消息的MTU TLV里,然后把Label Mapping消息发送给上游。
RSVP-TE 的PMTU 协商
RSVP-TE也支持MPLS MTU协商,用于自动发现TE LSP的PMTU。协商PMTU的过程如下:
- 从TE隧道的Ingress节点发送Path消息,在Path消息中的Adspec对象携带MTU。该MTU取值为物理出接口下配置的接口MTU和MPLS MTU两者的较小值。
- 隧道沿途各节点收到Path消息,将Adspec对象中的MTU值与本地隧道物理出接口下配置的接口MTU和MPLS MTU三者进行比较。如果本地的值小,则将Adspec对象中的MTU值改为本地的最小值。之后,将Path消息发送给下游。
- 这样,Egress节点收到的Path消息中携带的MTU即为路径MTU最小值。Egress再通过Resv消息将协商好的MTU值带回Ingress节点。
L2VPN 的MTU 协商
L2VPN类型 |
MTU协商值配置 |
MTU协商值的取值规则 |
PWE3 |
方式1:通过mpls switch-l2vc命令行中指定mtu参数; 方式2:PW模板视图下配置mtu mtu-value命令。 |
生效次序: 通过命令行指定的MTU参数值; PW模板的MTU配置值; AC接口配置的接口MTU值; 如果以上3个参数都没配置,则MTU协商值缺省为1500字节。 |
Kompella方式 VLL |
MPLS-L2VPN实例视图下配置mtu mtu-value命令 |
MPLS-L2VPN实例视图下配置的MTU参数值优先生效。 如果MPLS-L2VPN实例视图下没配MTU,则MTU协商值缺省为1500字节。 |
VPLS |
VSI视图下配置mtu mtu-value命令。 |
VSI视图下配置的MTU参数值优先生效。 如果VSI视图下没配MTU,则MTU协商值缺省为1500字节。 |
常用接口的MTU默认值
接口类型 | MTU默认值(字节) | 取值范围(字节) | 说明 |
Ethernet接口 Ethernet子接口 |
1500 | 46~1500 |
Ethernet接口/子接口的MTU值只影响三层流 说明: |
Ethernet-Trunk接口 Ethernet-Trunk子接口 |
1500 | 46~9600 |
Eth-Trunk接口/子接口的MTU值只影响三层流量,不影响二层流量。 修改Eth-Trunk接口/子接口的MTU,请同时修改对端Eth-Trunk接口的MTU,确保两端设备的MTU匹配。否则,可能导致业务中断。 说明: |
GE接口 GE子接口 |
1500 |
Type-C 单板:161~9600。 其他单板:46~9600 |
GE接口/子接口的MTU只影响三层流量,不影响二层流量。 说明 缺省情况下,GE接口/子接口是三层接口,只转发三层流量。如果GE接口/子接口配置portswitch命令,则变为二层接口,只转发二层流量。 |
POS接口 | 4470 | 46~9600 |
对于Type-C单板,建议配置MTU大于160字节。 POS接口MTU对于LPUF-20/21/10、BSUF-20/21/10和MSUF-20/21/100单板不生效,这些单板POS接口不对报文分片。 |
Tunnel接口 | 1500 | 46~9600 | 通常只作用于LDP over TE场景。 |
VLANIF接口 | 1500 | 46~9600 |
对于在子卡分片的单板,VLANIF接口的MTU值可能会影响二层流量。 对于母板和集成板分片的单板,VLANIF接口的MTU只影响三层IP流量。 |
Virtual-Ethernet接口 | 1500 | 960~1518 |
VE接口的MTU只影响三层流量,不影响二层流量。 缺省情况下,VE接口是三层接口,只转发三层流量。如果VE接口配置了portswitch命令,则变为二层接口,只转发二层流量。 |
Virtual-Template接口 | 1500 | 328~9600 | 此接口配置的MTU是在LCP阶段设备发送给PPP用户用来协商双方的MTU值,并非对应PPP用户的实际MTU值。 |
MPLS MTU 的设置
- 请关注NE40E/80E/NE5000E/CX600/ME60产品上对MPLS MTU的分片机制。接口MPLS MTU只可能影响IP入MPLS时的流量转发,而且不同单板类型,处理方式不同。
- 不建议将接口MPLS MTU值设置过小,否则容易导致因IP分片影响性能,严重时甚至出现丢包现象。
- 如果将MPLS MTU配置比接口MTU大,MPLS MTU实际取值为接口MTU。
- NNI端口的MTU值应该大于UNI端口的MTU值,用来保证可以满足UNI端口的所有标签的应用。
- MPLS MTU的值不应该大于接口MTU的值。最好的方法就是通过更改接口MTU的值来增加MPLS MTU生效值,避免IP核心层设备不能支持更多的标签类型问题的出现。
MTU 问题处理通用思路
- 首先分析数据转发路径。
- 检查数据包传递的全路径上各设备的出接口MTU值,站点间传输设备的MTU值也需要检查。
- 逐段ping大包测试。大包长度分别为大于、小于、等于接口MTU值。如果ping长度大于接口MTU时不通,小于等于接口MTU时能通,可初步认为是MTU问题。
- 分析报文头格式,各类报文的格式可查阅相关的“速查表”。
- 根据出问题的报文的最大长度修改MTU。在修改MTU值时,需要注意华为路由器不同单板的MTU分片机制,并注意不同厂商设备MTU值的定义。
- 再次ping大包测试。
路由器硬件基础知识--MTU相关推荐
- 《SAP入门经典(第4版•修订版)》——3.2 SAP硬件基础知识
本节书摘来自异步社区<SAP入门经典(第4版•修订版)>一书中的第3章,第3.2节,作者:[美]George Anderson著,更多章节内容可以访问云栖社区"异步社区" ...
- 路由器设置服务器用什么协议,路由器配置基础知识
路由器配置基础知识 一般来说,可以用5种方式来设置路由器,下面跟YJBYS小编一起来学习一下吧! 一.简单介绍 1.Console口接终端或运行终端仿真软件的微机; 2.AUX口接MODEM,通过电话 ...
- Linux设备驱动开发详解【二】_设备驱动相关硬件基础知识
本文简介 本文讲解底层驱动工程师必备的硬件基础,给出了嵌入式系统硬件原理及分析方法的全景视图. 2.1 节讲解微控制器.微处理器.数字信号处理器以及应用于特定领域的处理器各自的特点. ...
- 计算机硬件基础知识微盘,第1章 电脑硬件基础知识.pdf
第1章 电脑硬件基础知识 企业级的 DIY与个人用户有所不同:它要求专业人员对硬件的了解更多,在 DIY过程中, 应该知晓每一种硬件的技术参数在实际工作中的应用价值:本章重点介绍电脑主机设备的主流 和 ...
- 嵌入式硬件基础知识汇总<附带与硬件密切相关的软件介绍>
嵌入式硬件基础 1,存储器 1.1 概念 1.2,存储器结构模型 1.3,存储器性能指标 1.4,嵌入式存储器类型 1.4.1,只读存储器 1.4.2,随机存储器 1.4.3,双端口RAM 1.4.4 ...
- 全国计算机技术与软件专业技术资格(水平)考试【软件评测师】-考试内容总结(一)计算机系统构成及硬件基础知识...
全国计算机技术与软件专业技术资格(水平)考试 软件评测师--考试内容总结 By林雨辰2014.11.08 1.计算机系统构成及硬件基础知识 1.1计算机系统的构成 1.1.1设计电子数字计 ...
- 硬件基础知识---如何设计一个三极管放大电路
硬件基础知识---如何设计一个三极管放大电路 设计步骤 1) 分析设计要求 电压增益可以用于计算电压放大倍数:最大输出电压可以用于设置电源电压 输出功率可以用于计算发射极电流:在选择晶体管时需要注意频 ...
- 计算机软件硬件基础知识,计算机软硬件基础知识
计算机软硬件基础知识 ▲电脑硬件基础知识 ★1.了解电脑的基本组成 一般我们看到的电脑都是由:主机(主要部分).输出设备(显示器).输入设备(键盘和鼠标)三大件组成.而主机是 电脑的主体,在主机箱中有 ...
- 计算机硬件和软件的基础知识,计算机软件和硬件基础知识
计算机软件使人们能够在日常活动中完成所需的工作.对计算机软件的更复杂定义是:软件是使计算机能够执行特定任务的程序,与系统的物理组件相反.系统的物理组件是我在上一篇文章中讨论的内容,即人们可以物理触摸的 ...
- 单片机——硬件基础知识
单片机--硬件基础知识 宗旨:技术的学习是有限的,分享的精神是无限的. 1.单片机内部资源 STC89C52:8KFLASH.512字节RAM.32个IO口.3个定时器.1个UART.8个中断源 (1 ...
最新文章
- 多数大数据项目都以失败而告终的原因
- 第十一篇: Ajax Control Toolkit 控件包--下载与安装
- java多线程notify_Java多线程 wait notify
- 表单提交对chrome记住密码的影响
- r语言error in match.fun(fun) :_Go语言200行写区块链源代码分析
- 一个API接口的例子,包括单元测试
- proteus仿真micropython_基于micropython的滑动平均滤波器
- stm32单片机例程下载链接
- 【狂神css笔记】美化网页元素
- vue-admin-study1学习总结
- tomcat日志打印乱码
- oracle optimizer_index_cost_adj,OPTIMIZER_INDEX_COST_ADJ与成本计算
- dns服务器怎么优化,SmartDNS 高性能本地DNS服务器,优化网速
- 计算机键盘在线识别,电脑的外接键盘无法识别怎么办?
- 移动互联网时代的创业机会
- Python 将拼音转换成汉字
- “交通·未来”第5期:面向交通数据的多情景空间选址优化及强化学习实践
- 美国招聘巨头完成收购中华英才网
- Tableau Prep使用
- 剑指offer面试题(21-30)——java实现
热门文章
- python-skimage.io,filters,transform
- Kettle【实践 04】Java环境实现KJB和KTR脚本文件执行v9版本9.0.0.0-423相关依赖说明(云资源分享:依赖包+kjb+ktr+测试源码)
- 笔记———计算机网络原理(三)
- 工业机器人视觉实训平台
- 基于32feet.net对Broadcom(Widcomm)
- 1867. 最大数量高于平均水平的订单
- 火龙果(redpitaya)开发板常用接口C语言开发指南(一)——环境配置(持续更新中)
- C语言tolower和toupper的用法
- excel删除无尽空白行_史上最简单的Excel工资条制作方法,实用收藏!
- UE 在场景或UMG中播放视频