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最小的決定了傳輸速率。
 數據鏈路上經過的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幀



開啟巨型幀大小可自行修改,保持整個通信鏈路中保持一致就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 配置方式此配置會對所有接口生效
Nexus 7000, 7700, 9300, 及 9500 配置方式
以下為基于接口的配置方式:
Nexus 2000 配置
注意,Nexus 2000 MTU 配置需要在其父 FEX 交換機上進行配置,如果父交換機支持接口下配置MTU,則在對應接口下配置,如果不支持,則需要使用network-qos。
需要注意,使用 FEX 時,Fabric Port Channel (FPC) ,也就是連接 FEX 的端口聚合組也需要配置 MTU
interface port-channel136switchport mode fex-fabricfex associate 136vpc 136mtu 9216注意: 在 6.2 版本以后,Nexus 7000 不支持給 Fabric Port Channel 接口直接配置MTU,必須創建一個 QoS 策略來全局調整 MTU。
policy-map type network-qos jumboclass type network-qos class-defaultmtu 9216 system qosservice-policy type network-qos jumbo二層 MTU
Nexus 3100, 3500, 5000, 5500, 及 6000
Nexus 3000, 7000, 7700, 及 9000
Nexus#show interface ethernet 1/12 Ethernet1/12 is up admin state is up, Dedicated InterfaceHardware: 1000/10000 Ethernet, address: 7c0e.ceca.f183 (bia 7c0e.ceca.f183)MTU 9216 bytes, BW 10000000 Kbit, DLY 10 usecNexus 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: 0frh: 3drop-type: dropcos: 0 1 2 3 4 5 6 7xon xoff buffer-size---------+---------+-----------19200 78080 90880Queueing: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 usecCatalyst 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或者
<2>華為2層MTU修改
華為
S1700,2700,5700,CE系列
二層接口MTU
命令支持Ethernet接口視圖、GE接口視圖、XGE接口視圖、MultiGE接口視圖、40GE接口視圖、端口組視圖、Eth-Trunk接口視圖
<3>華三2層MTU修改
華三
S6300、S5800、S7500、S10500、S5120
二層接口MTU
{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 ethernet 1/1 Switch(config-if)#no switchport Switch(config-if)#mtu 9216三層 MTU
所有 Nexus 系列交換機都可以通過show interface eth x/y命令來查看接口 MTU:
使用 show interface vlan X命令查看 SVI 接口MTU:
Leaf3#show interface vlan 1 Vlan1 is down (Non-routable VDC mode), line protocol is downHardware is EtherSVI, address is 547f.eed8.ec7cInternet Address is 1.1.1.1/23MTU 9216 bytes, BW 1000000 Kbit, DLY 10 usec interface vlan 200 mtu 9000三層接口 MTU
全局 :system mtu routing 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調整巨型幀
總結
以上是生活随笔為你收集整理的20201216-2层MTU和IP MTU的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: docker安装gitlab中文版(gi
- 下一篇: 【分布式核心技术】RabbitMQ技术入