面向5G网络拥塞控制的用户态传输协议开发框架及方法

文档序号:25868315发布日期:2021-07-13 16:29阅读:152来源:国知局
面向5G网络拥塞控制的用户态传输协议开发框架及方法
本发明属于通信
技术领域
,尤其涉及一种面向5g网络拥塞控制的用户态传输协议开发框架及方法。
背景技术
:5g网络时代巨大的计算能力和传输带宽,促使了大量分布式应用的诞生,比如大规模数据传输、高吞吐量交互系统、分布式机器学习等,这些应用有的需要更高的吞吐,有的需要低时延,有的需要更加平滑的数据传输;复杂多样的应用场景对数据传输业务产生了不同的需求。目前tcp仍是网络中主流的传输协议,不过近年来一方面传统tcp由于及机制本身的天然缺陷,已经无法充分利用网络的高带宽;另一方面面对5g时代网络场景下,巨连接、大流量、低延时、高可靠快速演进的应用传输需求,使用tcp这种设计之初主要为了可靠性的传输协议必然无法给应用带来高效定制化的传输服务。拥塞控制是影响数据传输性能表现最为关键的一环,对于吞吐、时延、公平性等众多传输特征有明显的影响。近年来,不断有网络研究者提出新的拥塞控制算法用于优化和提升5g网络场景下传统和特定的数据传输服务。如何方便快速实现并部署这些算法并进行测试是研究人员工程实现时的一大痛点,有很多新的协议算法都只是止步于理论仿真,真正的实现部署到真实的网络环境中去屈指可数。一方面,对于内核网络协议栈的修改需要数年时间才能标准化、实现并广泛部署到真实的网络,并且真实环境中的服务器终端系统绝大部分都是基于tcp/ip的内核协议栈;另一方面,尽管更容易部署的用户态协议栈被提出作为一种实现方案,但从头实现一个协议栈通常是一项艰苦而耗时的工作,往往都需要研究人员重复的进行构建数据包,定义协议行为、系统事件等工作;这不仅对新拥塞控制算法的开发工作带来了困难和不便,还会导致拥塞控制算法之间的性能对比测试还会受到各个协议和关键机制无关的实现优劣的影响。现有技术中基于英特尔dpdk(dataplanedevelopmentkit)、netmap技术为代表的内核旁路技术,具有代表性的如腾讯开发的f-stack;要思路是内核旁路技术可以直接从网卡将接收到的数据包用过“零拷贝”思想,内存映射到用户态对其进行收发处理,这种方式完全绕开了现有的tcp/ip协议栈,在用户态层面对收到的以太帧进行处理,这样研究开发人员可以对二层包直接进行处理,按照需求在用户态构建新的协议栈来对数据传输的行为特性进行处理控制。虽然上述方案能够实现传输协议自定义,且拥有很高的自由度,但是由于在用户态拿到的是二层数据报文,所以要实现一个完整的协议栈不仅要实现传输层的功能,还要考虑ip层的设计实现。这对于我们面向拥塞控制,数据传输发的研究来说,很明显增加了研究人员很多没要必要的重复开发工作;并且dpdk等技术和网卡,linux内核等底层开发技术关联较大,对于理论研究人员的开发能力有着较高的要求。现有技术中针对传输协议用户态的实现方案,近些年来研究人员开始基于udp在传输层和应用层之间进行拥塞控制算法的开发实现,以quic(quickudpinternetconnection),udt(udp-baseddatatransferprotocol)为代表的传输协议底层使用udp进行通信,将拥塞控制相关模块解耦,可以一定程度上自定义拥塞控制算法。从头到尾开发一个传输协议的巨大工作量对新提出的拥塞控制算法的开发工作带来了不便;并且这些基于udp的传输协议大多都是面向特定场景和应用开发的:quic功能上相当于传统的tcp+tls+http2,多出了tls、http功能,只是google的chromium源码的一部分,不够独立且通用性不高;udt基于udp实现了类似tcp的面向连接,可靠传输,拥塞控制的功能,但由于该研究是十多年前提出的,只对传统的拥塞控制机制比较适用,自身的拥塞控制模块适用性不高,尤其面对5g时代提出的一些更为复杂的协议算法存在一定局限性。技术实现要素:针对现有技术中的上述不足,本发明提供的一种面向拥塞控制的用户态传输协议开发框架及方法,能够将与拥塞控制无关的行为解耦合,仅对拥塞控制算法及相关协议行为进行自定义,并抽象了典型的基于丢包、基于时延、基于学习等开发模板;使得各种典型的拥塞控制算法都可以基于该协议框架很方便的进行实现、部署和测试。为了达到以上目的,本发明采用的技术方案为:本方案提供一种面向5g网络拥塞控制的用户态传输协议开发框架,包括应用程序接口、发送机模块、接收机模块、监听器模块、拥塞控制模块、udp通道、发送缓存模块、接收缓存模块、发送机丢包列表以及接收机丢包列表;所述应用程序接口,用于通过api函数接口与上层应用程序进行交互;所述发送机模块,用于受拥塞控制模块的控制发送数据包;所述接收机模块,用于接收和处理发送机模块发送的数据包,并发送控制包;所述监听器模块,用于分别在发送机模块、接收机模块、拥塞控制模块、udp通道、发送缓存模块、接收缓存模块、发送机丢包列表以及接收机丢包列表中加入统计变量,并记录传输协议的网络数据,以及提供获取网络数据的api;所述udp通道,用于承担用户态传输协议开发框架的数据包发送和接收任务;所述拥塞控制模块,用于提供传输协议的拥塞控制功能,并与发送机模块、接收机模块、监听器模块、udp通道、发送缓存模块、接收缓存模块、发送机丢包列表以及接收机丢包列表进行交互,以及根据网络信息调控数据包的传输;所述发送缓存模块,用于作为数据包发送流程中的数据缓存;所述接收缓存模块,用于作为数据包接收流程中的数据缓存;所述发送机丢包列表,用于保存和记录数据包发达以及丢失时的状态和信息;所述接收机丢包列表,用于保存和记录数据包在接收以及丢失时的状态和信息。进一步地,所述api函数接口包括:接收连接函数接口accept、分配一个套接字至本地端口函数接口bind、关闭并中断连接函数接口close、连接至服务器或对端函数接口connect、进入监听状态准备接收连接请求函数接口listen、监听协议参数及协议的性能函数接口perform、发送数据函数接口send、接收数据函数接口receive以及配置套接选项函数接口setsockopt。再进一步地,所述受拥塞控制模块的控制发送数据包具体为:针对发送机模块发送数据时,受拥塞控制模块控制周期性的检查发送机丢包列表中是否有数据发送,若是,则重传发送机丢失列表中的数据包,若则,检查发送缓存模块中是否有数据发送,并发送正常的数据包。再进一步地,所述接收机模块接收和处理发送机模块发送的数据,具体为:针对接收机模块在接收到发送机模块发送的数据包时,检查数据包是否丢失,若是,则更新接收机丢包列表,并发送nak信号至发送机模块以更新发送机丢包列表,否则,正常接收,并将数据存入接收缓存模块;所述发送控制包其具体为:针对接收机模块在接收到控制包时,计算得到控制包的信息,并触发对应的控制事件执行拥塞控制算法,并更新数据发送周期或拥塞窗口大小。再进一步地,所述数据包包括:首位为0的包头、31位的数据包序号、32位的消息字段、数据发送包的时间戳以及用于udp的多路复用的目标socketid;其中,所述数据包序号最大至231-1;所述32位消息字段包括消息边界ff、是否按照顺序传递数据包o以及独立于数据包序号的29位消息序号;所述消息边界ff中10表示第一个数据包、01表示最后一个数据包、11表示单数据包以及00表示在消息中间的任意一个数据包;所述控制包包括:首位为1的包头、位于标志位后15位的控制包类型、位于标志位16-31位的保留位、位于标志位32-63位的额外信息、时间戳以及用于udp的多路复用的目标socketid。再进一步地,所述拥塞控制模块包括控制事件回调函数、协议行为配置、数据包扩展以及网络信息监控四种自定义机制。再进一步地,所述控制事件回调函数包括:在通信连接建立和销毁时被调用的init()函数和close()函数、接收机模块接收到数据包确认ack时调用的onack()函数、检测到丢包事件时调用的onloss()函数、超时时间触发函数ontimeout()、数据包发送时调用的onpktsent()函数、数据包接收时调用的onpktreceived()函数、拥塞控制算法控制事件函数oncongestionevent()以及处理自定义数据包及其对应控制包的processcustommsg()函数;所述协议行为配置包括:控制acp包发送频率的setacktimer()函数和setackinterval()函数、发送和处理自定义控制包的sendcustommsg()函数和processcustommsg()函数、自定义计算与修改往返时延函数rtt以及自定义计算与修改超时重传函数rto;所述数据包扩展包括:处理自定义控制包类型的process-custommsg()控制函数;所述网络信息监控包括:为拥塞控制算法提供拥塞信息的性能监控器,以及承担缓存功能的packettraker类。基于上述系统,本发明提供了一种所述的面向5g网络拥塞控制的用户态传输协议的开发方法,包括以下步骤:s1、利用拥塞算法的类型确定方案;s2、基于确定的方案,根据控制事件回调函数以及监控器获取的信息,实现拥塞控制开发工作;s3、基于ccudf架构的应用程序接口socketapi编写生成流量的测试应用;s4、将步骤s3的测试应用和协议基于linux系统进行编译调试,生成测试应用;s5、根据步骤s4生成的测试应用,将应用部署至真实的实验网络中进行对比测试;s6、根据对比测试结果调优拥塞控制算法,完成面向5g网络拥塞控制的用户态传输协议开发方法。本发明的有益效果:方便快捷的基于框架实现拥塞控制算法的开发部署:要解决尽可能将协议中的拥塞控制算法,以及与其相关的控制事件、协议行为解耦出来,研究人员只需面向拥塞控制进行开发研究,大大降低了开发门槛和工作量;对数据包、协议行为,api接口良好定义:开发框架作为一套工具,必须要有着统一定义的数据结构、数据包报头、协议行为和api,且定义要规范易读,具有扩展性,为研究人员提供了很好的可读性;适用性广:能够适用主流类型的拥塞控制算法的开发部署:作为框架必须要有不错的适用性,满足主流的丢包、时延、窗口或速率控制、混合类型等各类拥塞控制算法,能够很将一些5g网络场景下的新型协议算法实现落地;并且研究人员可以基于该框架实现各类算法进行对比测试,避免了因实现不同产生的性能差异导致对比测试的误差。附图说明图1为本发明的开发架构图。图2为本实施例中ccudf的整体架构图。图3为本实施例中ccudf数据包传输模型示意图。图4为本实施例中ccudf包头结构示意图。图5为本实施例中ccudf开发测试部署环境示意图。图6为本发明的开发架构流程图。具体实施方式下面对本发明的具体实施方式进行描述,以便于本
技术领域
的技术人员理解本发明,但应该清楚,本发明不限于具体实施方式的范围,对本
技术领域
的普通技术人员来讲,只要各种变化在所附的权利要求限定和确定的本发明的精神和范围内,这些变化是显而易见的,一切利用本发明构思的发明创造均在保护之列。在对本发明进行说明前,通过表1对参数进行说明:表1实施例1本发明总体上延续了基于udp传输数据,上层定义协议行为和拥塞控制的这种开发思路。整体框架基于udt的协议框架作为原型二次扩展开发,增加了新的拥塞控制事件,记录了更完整丰富的数据包网络信息,进而适应了近年来需要更多网络信息的新型拥塞控制算法,设计出了一个定义良好可读性强、扩展开发且适用范围广的一个拥塞控制自定义开发框架ccudf(congestioncontroluser-defineddevelopmentframework),整体架构图如图1所示,包括应用程序接口、发送机模块、接收机模块、监听器模块、拥塞控制模块、udp通道、发送缓存模块、接收缓存模块、发送机丢包列表以及接收机丢包列表;应用程序接口,用于通过api函数接口与上层应用程序进行交互;发送机模块,用于受拥塞控制模块的控制发送数据包;接收机模块,用于接收和处理发送机模块发送的数据包,并发送控制包;监听器模块,用于分别在发送机模块、接收机模块、拥塞控制模块、udp通道、发送缓存模块、接收缓存模块、发送机丢包列表以及接收机丢包列表中加入统计变量,并记录传输协议的网络数据,以及提供获取网络数据的api;udp通道,用于承担用户态传输协议开发框架的数据包发送和接收任务;拥塞控制模块,用于提供传输协议的拥塞控制功能,并与发送机模块、接收机模块、监听器模块、udp通道、发送缓存模块、接收缓存模块、发送机丢包列表以及接收机丢包列表进行交互,以及根据网络信息调控数据包的传输;发送缓存模块,用于作为数据包发送流程中的数据缓存;接收缓存模块,用于作为数据包接收流程中的数据缓存;发送机丢包列表,用于保存和记录数据包发达以及丢失时的状态和信息;接收机丢包列表,用于保存和记录数据包在接收以及丢失时的状态和信息。本实施例中,api函数接口包括:接收连接函数接口accept、分配一个套接字至本地端口函数接口bind、关闭并中断连接函数接口close、连接至服务器或对端函数接口connect、进入监听状态准备接收连接请求函数接口listen、监听协议参数及协议的性能函数接口perform、发送数据函数接口send、接收数据函数接口receive以及配置套接选项函数接口setsockopt。本实施例中,受拥塞控制模块的控制发送数据包具体为:针对发送机模块发送数据时,受拥塞控制模块控制周期性的检查发送机丢包列表中是否有数据发送,若是,则重传发送机丢失列表中的数据包,若则,检查发送缓存模块中是否有数据发送,并发送正常的数据包本实施例中,接收机模块接收和处理发送机模块发送的数据,具体为:针对接收机模块在接收到发送机模块发送的数据包时,检查数据包是否丢失,若是,则更新接收机丢包列表,并发送nak信号至发送机模块以更新发送机丢包列表,否则,正常接收,并将数据存入接收缓存模块;发送控制包其具体为:针对接收机模块在接收到控制包时,计算得到控制包的信息,并触发对应的控制事件执行拥塞控制算法,并更新数据发送周期或拥塞窗口大小。本实施例中,数据包包括:首位为0的包头、31位的数据包序号、32位的消息字段、数据发送包的时间戳以及用于udp的多路复用的目标socketid;其中,所述数据包序号最大至231-1;所述32位消息字段包括消息边界ff、是否按照顺序传递数据包o以及独立于数据包序号的29位消息序号;所述消息边界ff中10表示第一个数据包、01表示最后一个数据包、11表示单数据包以及00表示在消息中间的任意一个数据包;控制包包括:首位为1的包头、位于标志位后15位的控制包类型、位于标志位16-31位的保留位、位于标志位32-63位的额外信息、时间戳以及用于udp的多路复用的目标socketid。本实施例中,拥塞控制模块包括控制事件回调函数、协议行为配置、数据包扩展以及网络信息监控四种自定义机制。控制事件回调函数包括:在通信连接建立和销毁时被调用的init()函数和close()函数、接收机模块接收到数据包确认ack时调用的onack()函数、检测到丢包事件时调用的onloss()函数、超时时间触发函数ontimeout()、数据包发送时调用的onpktsent()函数、数据包接收时调用的onpktreceived()函数、拥塞控制算法控制事件函数oncongestionevent()以及处理自定义数据包及其对应控制包的processcustommsg()函数;协议行为配置包括:控制acp包发送频率的setacktimer()函数和setackinterval()函数、发送和处理自定义控制包的sendcustommsg()函数和processcustommsg()函数、自定义计算与修改往返时延函数rtt以及自定义计算与修改超时重传函数rto;数据包扩展包括:处理自定义控制包类型的process-custommsg()控制函数;网络信息监控包括为拥塞控制算法提供拥塞信息的性能监控器,以及承担缓存功能的packettraker类。本实施例中,ccudf实现框架一共包含五个功能模块:应用程序接口、发送机模块、接收机模块、监听器模块和udp通道;还有四个数据模块:发送缓存、接收缓存、发送丢包列表,接收丢包列表,图1中的实线表示数据流,虚线表示控制流。其中拥塞控制模块是整个框架的核心,其与发送机模块和接收机模块交互完成对数据传输行为的控制。四个数据模块主要作为数据包发送和接收流程中的数据缓存,保存和记录数据包发送、接收、丢换时的状态和信息。本实施例中,应用程序接口:负责与上层应用程序的交互。如表2所示,该模块为上层应用程序提供了一系列用c++编写的类似于操作系统套接字api,应用程序可通过调用这些api来使用ccudf协议提供的功能函数来建立连接、产生流量、监控性能,或者配置特定的拥塞控制算法。表2函数功能accept接收连接bind分配一个套接字至本地端口close关闭并中断连接connect连接至服务器或对端listen进入监听状态,准备接收连接请求perform监听协议参数及协议的性能send发送数据receive接收数据setsockopt配置套接字选项本实施例中,发送机模块:受拥塞控制模块的控制来发送数据包。发送机模块在想要发送数据时,首先会检查发送机丢包列表中是否有数据需要被发送,若发送机丢包列表中有数据需要被发送,则开始重传丢包列表中的数据包;若发送机丢包列表中没有数据需要被发送,则检查发送缓存中是否有数据需要被发送,则发送正常的数据包。发送机的发送速率受到数据包发送周期和拥塞窗口大小两个因素影响,这两个因素由拥塞控制算法进行更新调整。本实施例中,接收机模块:主要负责接收和处理数据包,并在需要时发送控制包;除此之外还要负责在处理到控制事件时和各模块交互。接收机模块在接收到数据包时,会检查数据是否丢失,若发生丢包,则更新自己的接收机丢包列表,并发送无应答(nak)信号至发送机以更新发送机丢包列表;若正常接收,则将数据存入接收缓存。在接收到控制包(如ack)时,接收机模块会计算出吞吐、rtt、丢包等信息,然后触发相应的控制事件来执行拥塞控制算法,并更新数据包发送周期或者拥塞窗口大小,从而完成对数据传输的控制。本实施例中,监听器模块:该模块在ccudf框架的各个模块中加入了统计变量,它记录了协议的发包个数、收包个数、发送速率、接收速率、丢包率等自连接建立以来的重要网络数据信息,并提供了相应的api供研究人员对数据进行获取来完成进一步的分析、控制等操作处理。本实施例中,udp通道:该模块利用操作系统内核提供的udpsocketapi,承担着整个框架的实际的数据包发送和接收任务。数据在发送时,首先由发送机将发送缓存(或丢失列表)中的数据发送到udp通道;在另一端数据接收时,首先接收机从udp通道中读取数据放入接收缓存,然后进行排序、检查丢包等操作,最终应用从接收缓存中读取数据。本实施例中,拥塞控制模块:提供了传输协议的拥塞控制功能和多个模块交互,根据网络信息来调控数据包的传输。接收机模块接收到相应的控制包后,触发对应的控制事件,调用拥塞控制算法进行处理,然后通过更新数据传输的速率或者窗口大小来控制发送模块数据包的发送速率。该模块直接影响数据传输的性能表现,是整个框架的核心,也是ccudf协议框架的开发重点。本框架在udt协议基础上,进行二次开发扩展了协议的适用性和自由度,使得一些需要更多网络信息的新型拥塞控制算法可以基于该协议框架实现。ccudf的拥塞控制模块和协议本身解耦,从四个方面为拥塞控制提供了可自定义的机制:1)控制事件回调函数;2)协议行为配置;3)数据包扩展;4)网络信息监控。(1)控制事件回调函数ccudf一共定义了八个控制事件回调函数,它们会在特定控制事件发生时被触发。init()和close()两个函数来在通信连接建立和销毁时被调用,init()可以用来初始化协议中定义的一些数据结构;onack()在接收机收到数据包确认ack时调用,可通过该方法的参数获取ack序号等信息,传统tcp的累计丢包确认和基于时延的拥塞控制算法可以重写该控制事件实现;onloss()在检测到丢包事件时调用,nak显示丢包信息作为参数提供给用户,基于丢包的拥塞控制算法可基于该函数实现,但对于传统tcp中用重复ack来检测丢包的算法,该控制事件就是多余的;ontimeout()超时时间触发该方法,超时值可以由用户来指定,否则使用默认的rto,重写该事件可以定义协议发生超时事件时的控制行为;onpktsent()、onpktreceived()这两个函数分别在数据包发送和接收的时候调用,这两个控制函数时功能最强大的接口,因为可以通过指针检查每一个包来获取数据包的详细信息,进而跟踪协议的微观行为。oncongestionevent()是针对新型拥塞控制算法的控制事件,他在数据包确认和丢包时都会调用,模板入参有rtt、丢包,ack等信息(可根据需求自行定义所需参数),服务于根据多种信息综合感知拥塞的控制算法;processcustommsg()可以去处理用户自定义的数据包,对应用户自定义类型的控制包。(2)协议行为配置ccudf提供了必要的api来让用户对协议的行为进行自定义,来适配不同类型的拥塞控制算法。在发送ack方面,提供了setacktimer()和setackinterval()函数来让研究人员从时间和到达数据包的数量上控制ack包发送的频率;还提供了sendcustommsg()和processcustommsg()这两个函数来支持研究人员发送和处理用户自定义控制包;同时还支持对往返时延(round-triptime,rtt)和超时重传(retransmissiontimeout,rto)值的自定义计算和修改。(3)数据包扩展ccudf支持研究人员自定义控制包。如上节所述控制包包头预留了可扩展的保留字段以供研究人员自定义控制包。在receiver端重写process-custommsg()控制函数来处理自定义类型的控制包。(4)网络信息监控ccudf协议框架提供了一个基础性能监控器:该性能监控器可为拥塞控制算法提供拥塞信息,具体可提供的信息有:仿真进行时间、rtt、发送速率、接收速率、拥塞窗口、ack数目、nak数目等,当需要更多网络信息时需要对性能监控拓展开发;除此之外ccudf新定义了一个packettraker类承担了部分数据模块中缓存的功能,通过定义了多个新的数据结构来详细的存储、记录数据包的状态和各项信息,为拥塞控制算法提供了更为完整的数据包网络信息。本实施例中,如图2所示,ccudf建立在udp之上,基于udt协议原型二次开发新增了控制事件、数据包记录管理等功能建立了一套更为完善传输协议,该协议支持面向连接、可靠重传、拥塞流量控制等协议行为;同时该框架向上层应用提供了socketapi接口,并将拥塞控制模块解耦出来,拥塞控制模块提供了拥塞控制的开发接口和几种典型类型的算法开发模板。研究人员只需根据自己的算法类型,选择ccudf提供的对应开发模板根据算法需求简单开发即可完成拥塞控制算法的实现和部署;并且该框架提供了和linuxossocket语义接近的socketapi,用户可以使用该api像编写传统的socket程序一样生成流量对不同的算法进行测试。本实施例中,数据包是传输协议拥塞控制的对象主体,反过来数据包中定义的内容也是拥塞控制算法所需要的信息,所以对以一个传输协议来说数据包的数据结构定义时十分关键重要的,ccudf定义了两种数据包:数据包和控制包。如图3所示,每个ccudf实体都有发送和接收两个模块,数据包由发送机模块传输到接收机模块,而控制包在两个接收模块之间传输,如图4所示,数据包和控制包通过包头的第一位标志位来进行区分。数据包:包头首位为0,标志位的后31位是数据包序号,支持协议有序的发送数据包,包序号最大到231-1;接下来32位是消息字段,ff表示消息边界:“10”第一个包,“01”是最后一个,“11”是单包,“00”就表示在消息中间的任意一个包;“o”表示是否按照顺序传递(1顺序,0乱序):按顺序传输表示之前的数据包要么被发送,要么被丢弃;其余29位是消息序号,独立于包序号;接下来32位是数据包发送的时间戳,是自连接建立以来的相对值;目标socketid用于udp的多路复用。控制包:包头首位为1,标志位后15是控制包的类型,主要有握手报文handshake、保活报文keepalive、确认报文ack、否定确认报文nak、关闭报文shutdown、确认的确认报文ack2以及消息丢失反馈报文messagedroprequest这7类,后面的字段都取决于控制包类型。16-31位是保留位,提供了一定的自定义控制包的空间;32-63位是额外信息,根据类型不同,对ack来说就是ack序号。接下来的时间戳和socketid和数据包一样,控制信息字段可能为空,取决于控制包类型。2.1.3ccudf功能模块详细描述本发明旨在为研究人员开发一个,方便快速开发和部署拥塞控制算法的协议框架,面向传输协议的拥塞控制提供较高的自由度,并适用于大部分典型类型拥塞控制算法。本发明的部署环境如图5所示。本发明部署方便,将ccudf在linux操作系统上编译完成后,生成基于所开发的协议、算法发送数据的应用,使用该应用便可进行性能测试。实施例2基于上述对ccudf框架及其模块功能的具体描述,现详细介绍如何使用本发明进行拥塞控制算法的开发和部署。整体流程如下所述:(1)准备工作通过读取拓扑文件或手动搭建等方式搭建基于ovs+docker或者ovs+mininet的测试拓扑,并准备好相关编译环境。(2)主要流程本框架有较好的可读性和接口设计,基于ccudf开发拥塞控制算法流程简单方便,如图6所示,其实现方法如下:s1、利用拥塞算法的类型确定方案;s2、基于确定的方案,根据控制事件回调函数以及监控器获取的信息,实现拥塞控制开发工作;s3、基于ccudf架构的应用程序接口socketapi编写生成流量的测试应用;s4、将步骤s3的测试应用和协议基于linux系统进行编译调试,生成测试应用;s5、根据步骤s4生成的测试应用,将应用部署至真实的实验网络中进行对比测试;s6、根据对比测试结果调优拥塞控制算法,完成面向5g网络拥塞控制的用户态传输协议开发方法。本实施例中,首先开发人员根据自己的拥塞控制算法的类型进行方案选择:a)对于传统类型的拥塞控制机制,即控制事件独立,只需要单一的基于丢包或者时延来进行拥塞控制,只需要继承标准的ccc类;b)若是新型的需要时延丢包序号等综合信息进行拥塞控制的算法,这类算法个性化高,可以基于我们的模板在ccudf软件框架中新创建一个新的cc类,将其加入到协议的核心core.cpp模块,其控制事件将采用oncongestionevent(),该事件会在数据包确认和丢失时都进行触发,使用这种方式可以根据需求获取所需网络信息和状态,来触发拥塞控制进一步调整传输策略,开发人员重写该控制事件来完成拥塞控制算法的实现。第一种方案形式框架较为固定,开发难度低,但可定制化的空间相对较小;第二种通过创建新cc类,重写on-congestionevent()的方案虽然增加了一点开发工作量,但增加了一定的开发自由度,并且可定制化空间更大,可以适用许多新的拥塞控制算法;确定方案后,根据类型各个控制事件回调函数,以及根据监听器获取所需信息,完后拥塞控制的开发工作;开发完成后,基于ccudf的socketapi编写生成流量的测试应用;将完整的应用和协议基于linux系统进行编译调试,生成测试应用;将应用部署到真实的实验网络中进行对比测试;根据测试结果进一步调优拥塞控制算法,最终完成整个开发部署测试的闭环工作。当前第1页12
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1