发布信息

无线网络中基于机器学习的无线丢包和拥塞丢包区分方法

作者:admin      2022-08-31 10:12:42     701



电子通信装置的制造及其应用技术1.本发明涉及网络传输与拥塞控制技术领域,提出一种基于学习的传输控制协议中的区分无线丢包和拥塞丢包的方法。传统的拥塞控制算法不区分丢包类型,会做出错误的拥塞控制判断,导致网络的利用率较低。新的拥塞控制算法虽然网络利用率较高,但只在理想的实验室或数据中心环境下表现出色,难以适应复杂的真实网络环境。本发明提出的方法不脱离真实的互联网场景,并且能与互联网中最流行的拥塞控制算法结合使用。该方法通过区分不同的丢包类型,采取合适的拥塞控制措施,进而提高了网络的利用率。背景技术:2.传输控制协议tcp是一种面向连接的、可靠的、基于字节流的传输层通信协议,包括数据分片、到达确认、超时重发、滑动窗口、失序处理、重复处理、数据校验功能。tcp协议能够保证接收端毫无差错地接收到发送端发出的字节流,为应用程序提供可靠的通信服务。对可靠性要求高的通信系统往往使用tcp传输数据。3.拥塞现象是指到达通信子网中某一部分的分组数量过多,使得该部分网络来不及处理,以致引起这部分乃至整个网络性能下降的现象,严重时甚至会导致网络通信业务陷入停顿,即出现死锁现象,最终导致网络有效吞吐量接近为零。因此需要可靠有效的方法,能充分利用网络资源,并且使得网络状况维持在合适的负载水平。tcp协议默认的拥塞控制算法为aimd算法,包括慢启动、拥塞避免、快速重传、快速恢复四个阶段。4.流行的tcp拥塞控制算法有reno、newreno、cubic、compound tcp、bbr。本说明书以目前最流行的cubic算法为例描述我们的丢包区分方法,但也适用于其他基于丢包的拥塞控制算法。这些流行的拥塞控制算法得到了广泛的认可,在各自应用领域具有不可替代的特点。以这些算法为基础,为其增加区分无线丢包和拥塞丢包的模块,能够最大程度地继承他们的优点,保证新拥塞控制算法的有效性和可靠性。cubic拥塞控制算法是bic-tcp拥塞控制算法的下一代版本。它通过用三次函数来决定拥塞窗口的增长尺度,在保留bic-tcp稳定性和可扩展性的优点的同时,简化了窗口控制,增强了其tcp友好性。cubic的关键特征是其窗口增长仅取决于两个连续拥塞事件之间的时间,窗口增长与往返时延rtt无关。这个特性允许cubic流在同一个瓶颈中竞争时,不依赖于它们的rtt,从而获得良好的rtt公平性。基于这些特性,cubic成为了目前最广泛使用的拥塞控制算法之一。5.ns-3模拟器是一个离散事件网络模拟器,主要应用于研究和教学任务。它是一个开源的项目,能满足现代网络研究模拟的需要。模拟的工作流程主要包括:拓扑定义、模型实用、节点和连接配置、执行、性能分析、图形可视化。技术实现要素:6.本发明面向网络传输和拥塞控制技术,提出了一种能有效区分无线网络中的无线丢包和拥塞丢包方法,提供了详细的设计、实现和测试过程。实验结果表明,本发明达到了较高的区分准确率,能有效提高无线网络中用户的吞吐量,有效提高了网络带宽的利用率。7.本发明包括以下内容:8.基于机器学习区分无线网络中的无线丢包和拥塞丢包。9.在ns-3模拟器中获得机器学习中神经网络模型训练所需数据。10.在python环境中训练并保存神经网络模型。11.在基于linux系统的手机、计算机、服务器中部署神经网络模型。12.在ns-3模拟器中测试并验证模型。13.其中,使用机器学习区分无线网络中的无线丢包和拥塞丢包包括如下步骤:14.步骤101,tcp中的拥塞控制模块监测到丢包事件。15.步骤102,拥塞控制模块根据传统的tcp设计,得到该流的基本信息,包括拥塞窗口cwnd、往返时延rtt、已发送但未确认的包数量infight。16.步骤103,拥塞控制模块根据神经网络设计,对该流的原始特征信息进行二次提取,得到适合神经网络的输入特征,包括rttrate、rttmax_rate、rttmin_rate、cwndrate,计算公式如下:[0017][0018][0019][0020][0021]步骤104,将步骤102和步骤103中的特征进行标准化,特征x的规范化值xnormalized计算公式如下,其中xmean是特征x的平均值,xstd是特征x的标准差:[0022][0023]步骤105,整理步骤104中的数据。[0024]步骤106,将整理好的数据交由神经网络模型计算。[0025]步骤107,神经网络模型根据训练好的权重参数,通过矩阵运算,得到预测的输出值。[0026]步骤108,将输出值映射为分类结果。如果神经网络输出值小于0.5,则认为是无线丢包,否则认为是拥塞丢包。[0027]神经网络模型需要依赖大量的样本数据进行训练,本发明通过ns-3模拟器生成用于区分无线网络中的无线丢包和拥塞丢包所需的训练数据,包括如下步骤:[0028]步骤201,实现有线网络拓扑,设置每条链路的物理带宽、传播时延、队列长度、ip地址。[0029]步骤202,实现无线网络拓扑,设置无线网络协议、传播模型、传播延迟模型、传播损失模型、物理层错误比特率模型、数据模式、控制模式、无线访问接入点ap和手机客户端sta的移动模型和距离、ip地址。[0030]步骤203,实现一个自定义的客户端socket类,这个socket类需要实现设置ip地址、包大小、数量和发包速率功能。[0031]步骤204,把203中的socket部署到手机客户端,在服务器端部署服务器,使用端口号在二者之间建立tcpsocket链接。[0032]步骤205,在每条链路设置回调函数,用于记录进入该条链路发送队列的每一个数据包queuefile,以及因队列已满而丢弃的数据包信息dropfile。[0033]步骤206,在手机客户端的socket实现记录拥塞窗口cwnd、往返时延rtt、已发送但未确认的包数量infight到文件中。[0034]步骤207,在服务器端监测并记录每条链接的吞吐量到文件中。[0035]步骤208,设置模拟需要的参数,包括随机数种子、模拟时间、文件存储位置、拥塞控制算法。[0036]步骤209,实现一个批量训练脚本,能多次调用ns-3模拟脚本,通过使用不同的随机数种子,产生大量的训练数据。[0037]得到训练数据之后,本发明使用python语言与tensorflow神经网络框架,训练出能区分无线丢包与拥塞丢包的神经网络模型,包括如下步骤:[0038]步骤301,设计神经网络结构。我们设计了一种相对简单但性能较优的神经网络。我们提出丢包区分方法适用于不同神经网络结构。神经网络分为三层,神经元个数分别为64、32和1、激活函数分别为relu、relu和sigmoid。损失函数选择binary_crossentropy、优化器选择rmsprop。[0039]步骤302,实现脚本,使用步骤205中的数据,分别找到无线丢包与拥塞丢包。其中拥塞丢包直接从瓶颈链路的dropfile文件中得到,无线丢包从中ap的发送队列对应的queuefile文件中得到。[0040]步骤303,实现脚本,使用步骤302与206的生成数据,对每一个丢包,分别记录该数据包的发送时间、往返延迟rtt、最小往返延迟rttmin最大往返延迟rttmax、拥塞窗口cwnd、最大拥塞窗口cwndmax、inflight以及丢包类型,得到数据集trace。[0041]步骤304,根据303中的数据特征,计算下列数据特征:rttrate、rttmax_rate、rttmin_rate、cwndrate,计算公式与步骤103中公式一致。[0042]步骤305,对303和304中的数据特征做规范化,计算公式与步骤104中公式一致。[0043]步骤306,按照4:1的比例将数据划分为训练集和验证集。[0044]步骤307,实现步骤301中的神经网络。[0045]步骤308,训练神经网络,得到训练好的神经网络模型及训练日志,由cpu和gpu执行。[0046]步骤309,保存神经网络参数。[0047]步骤310,根据训练日志进行评估,把无线丢包作为正样本,拥塞丢包作为负样本,统计准确率accuracy,精确率precision,召回率recall和f1 score。把被模型预测为正类的正样本记作tp,被模型预测为负类的负样本记作tn,被模型预测为正类的负样本记作fp,被模型预测为负类的正样本记作fn,计算公式如下:[0048][0049][0050][0051][0052]得到可用于区分无线网络中的无线丢包和拥塞丢包模型后,把该模型嵌入到基于linux系统的手机、计算机、服务器中最常用的cubic拥塞控制算法中,但本方法也适用于其他基于丢包的拥塞控制算法。包括如下步骤:[0053]步骤401,根据步骤306的设计,在c++语言中实现神经网络结构以及正向传播预测算法。[0054]步骤402,使401中的神经网络能加载步骤309的参数。[0055]步骤403,在linux的cubic算法中,统计并计算步骤303和304的特征值,由处理器执行。[0056]步骤404,在linux的cubic算法中,在计算ssthresh时调用步骤402的神经网络,做正向传播预测,由处理器执行。[0057]步骤405,根据预测结果进行分类,如果神经网络输出值小于0.5,则认为是无线丢包,否则认为是拥塞丢包,由处理器执行。[0058]步骤406,对于随机丢包,只做重传处理,由处理器执行。[0059]步骤407,对于拥塞丢包,按照cubic算法对于丢包的策略进行处理,由处理器执行。[0060]步骤408,重新编译linux系统,使我们的lld-cubic拥塞控制算法生效。[0061]最后,本发明在ns-3模拟器中进行了充分测试,包括如下步骤:[0062]步骤501,按照步骤201-209,在ns-3模拟器中搭建网络拓扑。[0063]步骤502,按照步骤401-408,在ns-3模拟器中部署lld-cubic拥塞控制算法。[0064]步骤503,设置测试参数,包括手机端的拥塞控制算法、测试时长、瓶颈链路带宽。[0065]步骤504,运行测试脚本,记录各链接的吞吐量信息。[0066]步骤505,基于python的matplotlib库,实现吞吐量的折线图。[0067]步骤506,重复步骤503-505。附图说明[0068]图1:网络拓扑设计[0069]图2:系统架构图[0070]图3:基于机器学习的丢包分类算法lld[0071]图4:lld拥塞控制算法具体实施方式[0072]本发明提出了无线网络中区分无线丢包和拥塞丢包的方法,给出了完整的技术架构图,下面我们给出一种基于cubic算法的丢分区分实现方法和测试方案。[0073]一、网络拓扑设计[0074]本发明设计了一个类哑铃型网络拓扑,来对提出的区分丢包类型的技术进行验证和测试,该测试包括5台手机客户端、2台服务器、5台无线访问接入点、2台路由器,具体网络拓扑图如图1所示。[0075]实验的操作系统为ubuntu,版本号是20.04;模拟器使用ns-3模拟器,版本号是3.35。[0076]二、网络参数设置[0077](1)无线网络[0078]本发明中,无线wifi网络标准使用802.11n协议、5ghz。无线传播延迟模型设置为constantspeedpropagationdelaymodel,传播损失模型设置为jakesmodel,物理层错误比特率模型设置为yanserrorratemodel,数据模式设置为htmcs7,控制模式设置为htmcs0。无线节点的移动模型设置为constantpositionmobilitymodel,无线访问接入点和手机客户端之间的距离为50个标准单位。其他参数采用ns3-3.35的默认设置。[0079](2)有线网络[0080]有线部分使用pointtopoint模型,瓶颈链路的带宽为20mbps或40mbps,非瓶颈链路的带宽为100mbps,每条链路的单向时延为5ms,有线部分的总往返时延为30ms。[0081](3)网络特征监测[0082]为统计网络数据,便于分析验证,本发明在网络拓扑的多处位置采集多种数据,分别记录保存至文件中。[0083]其中,在手机客户端,为分析拥塞控制算法的性能,分别记录拥塞窗口大小、往返时延、已发出但未收到确认的包的数量。[0084]在服务器端,记录每个客户端链接产生的总吞吐量以及平均吞吐量。[0085]在各条链路的发送队列,记录进入该队列的每个包的信息,以及因队列已满而丢弃的每个包的信息,包括id、时间、包头信息。[0086]三、拥塞控制[0087](1)神经网络训练[0088]神经网络的数据集包括约12000条数据,训练的batch大小是128,经过200轮迭代完成训练。[0089](2)拥塞控制流程[0090]当收到丢包事件后,拥塞控制算法会统计出目标流的特征信息,通过特征提取的方式得到神经网络分类模型需要的特征值,交由神经网络分类器预测,把预测结果作为该包类型的依据。流程图如图3所示。[0091]三、发明整体框架[0092]本发明的整体框架主要包括二个部分:ns-3的网络模拟器部分和python环境中的神经网络部分,编程语言为python和c++,系统架构如图2所示。[0093]ns-3模拟器用于创建网络拓扑,该网络既用于提供神经网络所需的训练数据,也用于本发明的测试。ns-3模拟器产生的训练数据交由python环境下的tensorflow库创建神经网络模型,用于训练能区分无线丢包和拥塞丢包的分类器。训练完毕后,通过把该分类器嵌入到传统的拥塞控制算法中,则给传统的拥塞控制算法增加了区分无线丢包和拥塞丢包的功能。最后,在ns-3模拟器中,对本发明进行测试评价。[0094]四、发明测试效果[0095]测试本发明lld模型的分类效果,结果如下表所示,通过与spike、zigzag、zbs三种传统的分类方法进行比较,其结果表明本发明的效果最好。本发明基于以下硬件测试amd ryzen 7 5800h with radeon graphics,samsung mzvlb512hbjq-000l2,nvidia geforce rtx 3060laptop gpu。[0096] 精确率召回率f1 score准确率lld87.6%96.18%91.69%91.82%spike36%55.38%43.64%53.5%zigzag32%74.42%44.76%60.5%zbs75%84.27%79.37%80.5%[0097]本发明嵌入到传统cubic拥塞控制方法后,命名为lld-cubic方法。分别在带宽为20mbps和40mbps的瓶颈链路网络拓扑中进行测试。测试部分分别测试了5个cubic发送端以及1个lld-cubic发送端与4个cubic发送端同时存在的情况,吞吐量及网络利用率如下表所示。结果表明本发明的lld-cubic方法能够有效提高cubic方法在无线网络中的性能。[0098]瓶颈带宽拥塞控制方法吞吐量网络利用率20mbps5cubic17.61mbps88.05%20mbps1lld-cubic+4cubic18.25mbps91.25%40mbps5cubic25.73mbps64.33%40mbps1lld-cubic+4cubic34.67mps86.68%[0099]至此,本发明的基本设计说明完成。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部