分析以太网帧结构_基于电力数据通信网的MTU值分析研究

2024-02-29 05:50

本文主要是介绍分析以太网帧结构_基于电力数据通信网的MTU值分析研究,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

电力数据通信网是以保障电网安全生产为目的,采用路由器、光端机等设备搭建而成,用于传输电网生产控制信号、电网公司办公内网、视频会议等综合业务的通信网络。

电力数据通信网网络结构与公司运维范围内变电站的地理位置息息相关,基本采用三级组网结构,核心层位于公司总部,由多台高性能路由器组成,汇聚层由距离公司较近的几个高电压等级变电站组成,站内路由器既担当汇聚路由器的功能,同时满足本站内的通信业务接入。接入层主要由低电压等级变电站内路由器构成,由于站内路由器仅需要完成业务接入功能,所以对路由器性能要求不高。由于各个变电站之间距离较远,为保证业务质量,路由器之间的互联一般通过光端机承载。如图1所示。

8e1a74071c78a61f9e5c8fdb12cc1c5b.gif

2 电力数据通信网业务传递模型

根据电力数据通信网业务特性,电网公司多采用BGP MPLS VPN跨域技术进行业务之间的互通,网络中公司总部核心层和各个地市公司接入层分别为BGP的不同自治域(AS)。为保证业务的安全性以及数据包的快速转发,全网采用MPLS VPN技术。

由于电力数据通信网中业务流量一般是总分结构,核心位于公司总部区域,接入位于各个地市区域,故业务访问一般会跨越不同的BGP自治域,且业务数据包在传递过程中会被各种协议的报头进行封装。

以电力数据通信网调度提票业务为例,结构示意图如图2 所示。末端站点提票终端发送提票请求,业务数据包通过VPN隧道发送至BGP AS-2内的数据通信网路由器上,数据通信网业务在光端机的承载下,通过BGP自治域边界ASBR路由器,最终传输至BGP核心区域AS-1的总部路由器上,路由器通过与提票服务器建立的VPN隧道,将信息传递到提票服务器,完成业务的传递。

87e46e93afafa14e5497f41d5e2d328f.gif

3 数据封装与MTU值

3.1 数据封装过程概述

根据TCP/IP四层协议模型,由下至上分为数据链路层、网络层、传输层、应用层。以提票业务为例,由于数据是从应用程序发出,应用层的应用程序数据首先进行TCP封装,封装完毕后,变成可在传输层传递的数据段(segment),传输层的数据段再进行IP封装,增加IP头部信息,称为网络层的IP数据包,最后将数据包增加帧头等信息,变为可以通过数据链路层传输的以太网帧。当信息传输到目的地时,在进行以上封装的解封装工作,将应用程序信息传递至目标应用程序。

3.2 MTU值简介

MTU为最大传输单元(Maximum Transmission Unit)的简称,一般是指以太网帧结构中数据Data字段最大的长度(单位为byte)。

以太网帧(Ethernet II)由帧头、数据部分及校验位构成。其中以太网帧的帧头大小为14 bytes(DMAC目的MAC地址6 bytes,SMAC源MAC地址6 bytes,Type域2 bytes),CRC校验部分4 bytes,剩下承载上层协议(IP数据包)的字段叫做数据载荷,数据载荷部分大小为46-1 500 bytes,数据载荷的最大长度称之为MTU,即MTU值最大为1 500 bytes,以太网帧最大为1 518 bytes。[1]

MTU值为数据链路层中对最大数据载荷的定义,不考虑帧头以及校验位,即为网络层中的IP数据包长度。如果网络层IP数据包长度超过MTU值,就会被分片处理,保证每一片IP包不超过MTU值。但如果业务通信是基于TCP连接的,那么一般情况下IP数据包不允许分片,如果数据包大小超过MTU那么数据包将会被丢弃,本文中的提票业务就是基于TCP连接的业务。

此外,在电力数据通信网中,为保证业务远距离传输的可靠性,一般情况下路由器间的远距离互联需要借助光端机,由光端机来承载数据通信网业务,例如图1 所示。光端机可以设置链路上允许通过的最大帧长度,从而影响网络层MTU值及传输层的数据分片。

3.3 MSS简介

数据链路层有MTU的概念,传输层也有类似MTU的概念,这就是MSS,全称为Maximum Segment Size,可以直译为最大分段长度。MSS就是TCP段每次能够传输的最大数据载荷。即TCP数据段中除去TCP包头后的数据载荷部分最大长度。在建立TCP连接过程中,首先要协商双方的MSS值,这个值TCP协议在实现的时候往往用MTU值减去IP数据包包头的大小(20 bytes)和TCP数据段的包头(20 bytes),由于MTU值一般为1 500,所以往往MSS为1 460,默认情况下,二者的长度相差40 bytes。通信双方会根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。如果双方的MSS值设定不一致,则协商结果以小的为准。在实际业务传输过程中,部分型号的路由器可以调整MSS值,从而影响网络层IP数据包大小及数据链路层MTU。而光端机可以设置链路上允许通过的最大帧长度,从而影响网络层MTU值及传输层的MSS值。[2]

4 业务网络仿真

针对电力数据通信网中的数据包大小进行仿真分析,仿真研究业务数据报文在路由器间传递过程中的大小,由此得出数据在传递过程中的封装过程,了解MTU值对数据传输大小的限制作用,下一步利用研究结果解决电力数据通信网中业务数据大包不通的问题。

4.1 ICMP数据包仿真研究

通过eNSP搭建仿真环境,如图3所示,PC4和PC5分别模拟为两个站点的PC客户端,通过ping命令来研究icmp协议在数据网路由器中的传递过程中的数据包大小变化。

c84f1bc7766981c8109b8e0b02c7ab71.gif

第一步,在PC4上运行ping命令,目的地址是PC5的IP地址,其中-l命令是规定数据包大小为1 472 bytes,如图4所示:

8e9607b55e6b91db5797176d2d0be017.gif

第二步,使用Wireshark抓包工具,在PC4的Ethernet0/0/1端口进行抓包,得到结果如图5所示。

4f4d99681082d5fd4dfb2ee114fcb063.gif

可以看到,数据包原始数据大小为1 472 bytes,通过icmp协议封装后,数据包大小变为1 480 bytes,通过IP协议封装后,数据包大小变为1 500 bytes,通过帧封装后,数据包大小最终变为1 514 bytes(Wireshark工具不计算帧尾的4 btyes的FCS校验位,加上帧尾的校验位,数据总长度为1 518)。由此可以得出本案例数据包在传输过程中不同协议或帧封装所需要增加的报文长度如表1 所示:

我们知道,在以太网帧最大长度为1 518 bytes,由此可以推断,当我们在PC上可以ping的最大数据长度为1 518-18-20-8=1 472 bytes,仿真软件验证的结果如下,与预先的推断一致,如图6所示:

529fa592a26abb6808534f1301d00eb6.gif

4.2 电力数据网中ICMP数据包仿真研究

由于电力数据网的网络结构特点,全网采用BGP MPLS VPN技术进行组网,该组网方式在使用ICMP协议进行ping测试时,需要考虑在网络层与数据链路层之间再封装两层mpls标签(一层为用于查找公网路由的公网标签,一层是用来查找VPN路由的私网标签),每层标签大小为4 bytes。所以仿真结果如图7、图8所示:

dfc22374fc6c11877ebe4076efa801c3.gif 3c815479542187e4dcb80d8aa0548896.gif

此时,使用Wireshark工具抓到的以太网帧长度为1 472+8+20+4+4+14=1 522,加上校验位,实际帧长度为1 526 bytes,其中网络层封装后的数据包大小为1 472+8+20=1 500 bytes,正好为MTU值,故1 472为ping命令可以携带的最大数据载荷长度。由此可以得出本案例数据包在电力数据通信网实际传输过程中不同协议或帧封装所需要增加的报文长度表2所示:

948d0cc5380be92e594f76c689b068ce.gif

上述仿真结果表明,当业务在电力数据通信网传输过程中,数据先后会经过传输层封装、网络层封装以及数据链路层封装,最终通过光端机进行远距离传输。由于本文中的提票业务是基于TCP连接的,在网络层不允许分片,所以网络层封装后的IP数据包长度必须小于等于1500 bytes,才能保证数据包的有效传递,否则数据包将会被丢弃,导致业务无法联通。

5 利用MTU值解决业务大包不通问题

5.1 问题描述

在电力数据通信网实际运行过程中,在某次大型网络结构调整后,出现了提票业务不通问题,如图2所示,末端站点1的工作人员反馈提票客户端可以ping通总部服务器,但是客户端浏览器无法打开提票页面,提票工作无法完成。

5.2 问题分析

通过测试发现,提票终端可以ping通总部服务器,但当限定数据包长度时,大包无法ping通,经测试,最大可以ping通的数据包大小为1 468 bytes,根据本文中的结论,可以得出此时在网络层的IP数据包大小为1 496 bytes,在数据链路层的以太网帧大小为1 496+4+4+18=1 522 bytes。

通过检查路由器的配置,发现路由器MTU值设置为1 500 bytes,1 496小于1 500,所以网络层MTU值满足条件。

此时,我们考虑传输层以及数据链路层的两个参数,一个是传输层MSS,另一个是数据链路层最大帧长度。通过查看路由器配置,发现MSS为默认值1 460 bytes,根据3.3章节,得出业务数据的实际TCP数据载荷大小为1 496-20=1 476 bytes,小于MSS值,故传输层参数满足条件。通过查看光端机配置,我们发现,光端机最大帧长度设置为1 518 bytes,而本案例中实际传输的以太网帧大小为1 522 bytes,所以导致以太网帧被光端机丢弃,造成业务不通。

5.3 问题处理

通过前面章节的分析,问题可以从两个方面解决,一方面可以调整MSS值(默认为1 460),通过在路由器上配置ip tcp adjust-mss 1 456,可以使数据的MSS值调整为1 456,这样数据封装成以太网帧后的大小为1 518,满足最大帧长度要求,可以通过光端机进行传输。另一方面可以通过修改光端机最大帧长度,如图9所示,以马可尼光端机为例,将最大帧长度上调为1 600,同样可以使数据通过光端机进行传输。实际测试显示,通过两种方法均能解决提票业务大包不通问题。

726fde95bcf1866a07ce5a34c2df77d9.gif

本文通过分析数据包的帧结构以及封装过程,了解了MSS值、MTU值及最大帧长度在数据传输过程中的功能及作用,学会了通过调整MSS值及最大帧长度参数解决业务大包不通问题,为今后电力数据通信网业务大包不通故障的分析处理提供了新的思路,积累了宝贵经验。

参考文献

[1]FALL K R,STEVENS W R,TCP/IP 详解 卷1:协议[M].北京:机械工业出版社,2016.

[2]Jeff Doyle,Jennifer Carroll,TCP/IP 路由技术(第一卷)(第二版)[M].北京:人民邮电出版社,2007.

作者信息:

段寒硕1,叶 青1,金 燊1,杨广涛2

(1.国网冀北电力有限公司信息通信分公司,北京100053;

2.国网冀北电力有限公司承德供电公司信息通信分公司,河北 承德067000)

这篇关于分析以太网帧结构_基于电力数据通信网的MTU值分析研究的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/757763

相关文章

Springboot中分析SQL性能的两种方式详解

《Springboot中分析SQL性能的两种方式详解》文章介绍了SQL性能分析的两种方式:MyBatis-Plus性能分析插件和p6spy框架,MyBatis-Plus插件配置简单,适用于开发和测试环... 目录SQL性能分析的两种方式:功能介绍实现方式:实现步骤:SQL性能分析的两种方式:功能介绍记录

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

Python中顺序结构和循环结构示例代码

《Python中顺序结构和循环结构示例代码》:本文主要介绍Python中的条件语句和循环语句,条件语句用于根据条件执行不同的代码块,循环语句用于重复执行一段代码,文章还详细说明了range函数的使... 目录一、条件语句(1)条件语句的定义(2)条件语句的语法(a)单分支 if(b)双分支 if-else(

最长公共子序列问题的深度分析与Java实现方式

《最长公共子序列问题的深度分析与Java实现方式》本文详细介绍了最长公共子序列(LCS)问题,包括其概念、暴力解法、动态规划解法,并提供了Java代码实现,暴力解法虽然简单,但在大数据处理中效率较低,... 目录最长公共子序列问题概述问题理解与示例分析暴力解法思路与示例代码动态规划解法DP 表的构建与意义动

使用Navicat工具比对两个数据库所有表结构的差异案例详解

《使用Navicat工具比对两个数据库所有表结构的差异案例详解》:本文主要介绍如何使用Navicat工具对比两个数据库test_old和test_new,并生成相应的DDLSQL语句,以便将te... 目录概要案例一、如图两个数据库test_old和test_new进行比较:二、开始比较总结概要公司存在多

Redis的数据过期策略和数据淘汰策略

《Redis的数据过期策略和数据淘汰策略》本文主要介绍了Redis的数据过期策略和数据淘汰策略,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一... 目录一、数据过期策略1、惰性删除2、定期删除二、数据淘汰策略1、数据淘汰策略概念2、8种数据淘汰策略

轻松上手MYSQL之JSON函数实现高效数据查询与操作

《轻松上手MYSQL之JSON函数实现高效数据查询与操作》:本文主要介绍轻松上手MYSQL之JSON函数实现高效数据查询与操作的相关资料,MySQL提供了多个JSON函数,用于处理和查询JSON数... 目录一、jsON_EXTRACT 提取指定数据二、JSON_UNQUOTE 取消双引号三、JSON_KE

Python给Excel写入数据的四种方法小结

《Python给Excel写入数据的四种方法小结》本文主要介绍了Python给Excel写入数据的四种方法小结,包含openpyxl库、xlsxwriter库、pandas库和win32com库,具有... 目录1. 使用 openpyxl 库2. 使用 xlsxwriter 库3. 使用 pandas 库

SpringBoot定制JSON响应数据的实现

《SpringBoot定制JSON响应数据的实现》本文主要介绍了SpringBoot定制JSON响应数据的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录前言一、如何使用@jsonView这个注解?二、应用场景三、实战案例注解方式编程方式总结 前言

使用Python在Excel中创建和取消数据分组

《使用Python在Excel中创建和取消数据分组》Excel中的分组是一种通过添加层级结构将相邻行或列组织在一起的功能,当分组完成后,用户可以通过折叠或展开数据组来简化数据视图,这篇博客将介绍如何使... 目录引言使用工具python在Excel中创建行和列分组Python在Excel中创建嵌套分组Pyt