丢包率的计算方法、服务器及计算机可读存储介质
技术领域
本发明实施例涉及通信技术领域,特别涉及一种丢包率的计算方法、服务器及计算机可读存储介质。
背景技术
目前,在使用虚拟专用网络(Virtual Private Network,VPN)技术构建安全的专用网络过程中,由于移动网络或wifi网络有一定丢包与抖动,导致终端通过VPN接入安全网络传输时,常常卡顿,特别是针对具有高速数据传输需求的终端,例如云端智能机器人,现有的专用网络体验效果非常差。FEC(Forward Error Correction,前向纠错)技术是利用数据进行传输冗余信息的方法,当传输中出现错误,将允许接收方再建数据,从而增加数据通讯的可信度。为了解决丢包对VPN上层业务的影响,同时保证延迟的稳定性,在VPN代理中使用FEC是一个不错的选择。
然而,发明人发现现有技术中至少存在如下问题:为计算VPN代理两端的冗余比,需要知道VPN代理两端的丢包率,而目前的丢包率的计算方法较为复杂,需要占用较多的带宽。
需要说明的是,在上述背景技术部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
发明内容
本发明实施方式的目的在于提供一种丢包率的计算方法,无需发送探测报文即可计算丢包率,简化了丢包率的计算过程,避免探测报文占用带宽,减少了流量消耗。
为解决上述技术问题,本发明的实施方式提供了一种丢包率的计算方法,包括以下步骤:应用于基于前向纠错FEC协议的第一代理端,包括:确定采样周期中接收的FDP格式的报文中的最大序号、最小序号,以及接收的报文数量;FDP格式的报文由第二代理端发送,包括序号字段,序号字段中包括报文的序号信息;根据最大序号、最小序号和报文数量,以及预设的最大序号、最小序号、报文数量和丢包率的约束关系,计算第一丢包率;第一丢包率为第二代理端的丢包率。
本发明的实施方式还提供了一种服务器,包括:至少一个处理器;以及,与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上述实施方式提及的丢包率的计算方法。
本发明的实施方式还提供了一种计算机可读存储介质,存储有计算机程序,计算机程序被处理器执行时实现上述实施方式提及的丢包率的计算方法。
本发明实施方式相对于现有技术而言,第一代理端无需发送探测报文,基于FDP报文中的序号信息即可计算丢包率,减少了第一代理端和第二代理端之间的数据的传输量,避免探测报文占用带宽,减少了流量消耗,使得第一代理端可以更充分利用带宽。
另外,确定采样周期接收的报文数量,具体包括:在采样周期中,若接收到序号大于最小序号的报文,更新报文数量,更新后的报文数量等于更新前的报文数量加1;在采样周期后的预设时长内,若接收到序号小于最大序号的报文,更新报文数量,更新后的报文数量等于更新前的报文数量加1。在计算丢包率时进行超时等待,提高了高抖动高乱序环境的环境下计算的丢包率的准确性。
另外,确定采样周期中接收的报文的最小序号,具体包括:确定上一采样周期的最大序号;将上一采样周期的最大序号加1,作为采样周期的最小序号。该实现中,减少了第一代理端的数据处理量,提高了丢包率的计算速度。
另外,最大序号、最小序号、报文数量和丢包率的约束关系为: 其中,LossRate表示当前采样周期的丢包率,LossRate′表示上一采样周期计算的丢包率,r表示占用比例系数,EndID表示最大序号,BeginID表示最小序号,RecvNum表示报文数量。
另外,在根据最大序号、最小序号和报文数量,以及预设的最大序号、最小序号、报文数量和丢包率的约束关系之后,第一丢包率的计算方法还包括:发送第一丢包率给第二代理端;其中,第二代理端的工作模式为同步模式或自动模式;若第二代理端处于同步模式下,根据预设值确定冗余比值;若第二代理端处于自动模式下,根据第一丢包率,动态调整冗余比值。
另外,第一代理端为代理服务器,第二代理端为代理客户端;在确定采样周期中接收的FDP格式的报文中的最大序号、最小序号,以及接收的报文数量之前,第一丢包率的计算方法还包括:在首次接收到代理客户端发送的报文后,构造与代理客户端的会话,根据上一会话的会话编号,或,当前随机生成的随机数,确定与代理客户端会话的会话编号;根据与代理客户端会话的会话编号,以及VPN服务器传输的数据,生成发送给代理客户端的报文。
另外,会话编号的数据长度小于8字节。减少会话编号的数据长度,节省了网络带宽,节省了流量。
另外,报文包括报头和报体;报头中包括序号信息和FDP协议版本信息;报体中包括会话编号的信息。FDP格式的报文中增加了版本信息,提高了FDP协议的兼容性和扩展性。
附图说明
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
图1是本发明的第一实施方式的VPN代理系统的系统架构示意图;
图2是本发明的第一实施方式的一种丢包率的计算方法的流程图;
图3是本发明的第一实施方式的FDP格式的报文的报头的示意图;
图4是本发明的第一实施方式的报体的示意图;
图5是本发明的第二实施方式的一种丢包率的计算方法的流程图;
图6是本发明的第三实施方式的丢包率的计算装置的结构示意图;
图7是本发明的第四实施方式的服务器的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合附图对本发明的各实施方式进行详细的阐述。然而,本领域的普通技术人员可以理解,在本发明各实施方式中,为了使读者更好地理解本申请而提出了许多技术细节。但是,即使没有这些技术细节和基于以下各实施方式的种种变化和修改,也可以实现本申请所要求保护的技术方案。
本发明的实施方式以基于FEC的VPN代理系统为例,对丢包率的计算方法进行举例说明。VPN代理系统如图1所示,包括VPN客户端101,与VPN客户端连接的FEC代理客户端102,VPN服务器103,以及与VPN连接的FEC代理服务器104,FEC代理客户端102和FEC代理服务器104之间采用FEC机制传输报文,即基于FEP协议传输报文。
其中,VPN客户端101和VPN服务器103可以是基于用户数据报协议(User DatagramProtocol,UDP)的客户端和服务器软件。VPN客户端101和FEC代理客户端102之间,以及VPN服务器103和FEC代理服务器104之间可以基于UDP传输报文。
本发明的第一实施方式涉及一种丢包率的计算方法,应用于基于前向纠错(Forward Error Correction,FEC)协议的第一代理端,本实施方式中,可以是第一代理端为图1中的FEC代理客户端102,第二代理端为图1中的FEC代理服务器104,也可以是第一代理端为图1中大FEC代理服务器104,第二代理端为图1中的FEC代理客户端102。如图2所示,丢包率的计算方法包括以下步骤:
步骤101:确定采样周期中接收的FDP格式的报文中的最大序号、最小序号,以及接收的报文数量。
具体地说,FDP格式的报文由第二代理端发送,包括序号字段,序号字段中包括报文的序号信息。
发明人发现,现有技术中常常通过发送控制报文协议(Internet ControlMessage Protocol,ICMP)探测报文的方式,计算丢包率。而ICMP探测报文的发送占用带宽,会造成不必要的流量损失,进而提高通信成本。而第一代理端和第二代理端之间传输的FDP格式的报文为业务报文,如果可以通过第一代理端和第二代理端之间发送的FDP格式的报文,计算丢包率,将避免探测报文占用带宽,减少了计算丢包率所造成的流量花费。为能够通过FDP格式的报文计算丢包率,发明人优化了FDP协议,在FDP格式中增加了指示报文的序号信息的序号字段,使得第一代理端可以基于FDP格式的报文计算丢包率,无需额外发送ICMP探测报文,简化了丢包率的计算过程,减少了计算丢包率所需的带宽和使用的流量。
在一个实施例中,第一代理端确定采样周期接收的报文数量的过程如下:代理端在采样周期中,若接收到序号大于最小序号的报文,更新报文数量,更新后的报文数量等于更新前的报文数量加1;在采样周期后的预设时长内,若接收到序号小于最大序号的报文,更新报文数量,更新后的报文数量等于更新前的报文数量加1。
值得一提的是,在计算丢包率时进行超时等待,提高了高抖动高乱序环境的环境下计算的丢包率的准确性。
在一个实施例,第一代理端确定采样周期中接收的报文的最小序号的过程如下:确定上一采样周期的最大序号;将上一采样周期的最大序号加1,作为采样周期的最小序号。
值得一提的是,基于上一采样周期的最大序号,确定当前的采样周期的最小序号,无需将当前采样周期接收到的报文的序号进行一一对比,减少了第一代理端的数据处理量,提高了丢包率的计算速度。
在一个实施例中,通过比较该采样周期接收的报文的序号信息,确定最大序号。
在一个实施例中,采样周期一般为2s到4s,预设时长一般为1s,或者2倍的往返时延(RTT)。
在一个实施例中,由于FDP协议发生改变,为提高FDP协议的扩展性和兼容性,在FDP协议中增加了版本号字段,用于指示该FDP报文的版本。由于当前的FDP格式的报文均为一个大数据包,有报头和报体(仅业务数据),但为一大的报文头,包含FEC信息,没有版本号字段。基于该模式的FDP协议进行优化,工作量较大,且后期兼容性较差,不便于扩展。为减少后期优化FDP协议的工作量,对FDP协议进行优化,以使基于优化后的FDP协议封装得到的FDP格式的报文包括报头和报体,报头中包括序号信息和FDP协议版本信息;报体中包括会话编号的信息,方便扩展。
值得一提的是,FDP格式的报文中增加了版本信息,提高了FDP协议的兼容性和扩展性。
在一个实施例中,由于报头中包括FDP协议版本信息,当第一代理端接收到FDP格式的报文后,判断自身的FDP协议的版本是否高于该FDP格式的报文的版本,若确定是,可以对该报文的报体进行解析,并将解析后得到数据传输给VPN,若确定不是,可以请求对FDP协议进行升级。
在一个实施例中,第一代理端的工作模式可以设置为同步(sync)模式或自动(auto)模式中的任意一种。报文的类型可以是FEC消息报文、sync模式消息报文、auto模式消息报文等。FDP格式的报文中,报头格式如图3所示,报体格式如图4所示。FDP格式的报文的报头包括报文的序号字段(FDP ID)、消息类型字段(MsgType)、版本信息字段(Version)和数据长度字段(DataLength)。其中,序号字段指示报文的序号信息,消息类型字段用于区分不同类型的消息,比如同步(sync)消息,自动(auto)消息,确认(ack)消息,丢包率(lossrate)消息,业务数据消息(包含FEC信息与上层应用数据,如VPN data)等,版本信息字段指示版本的兼容性,数据长度字段指示报文的数据长度。在一个例子中,报文为业务数据类报文,即FEC消息,则报体可以包括标记字段(Seq)、数据字段(DataNum)、冗余字段(ReduNum)、标记索引字段(PktIndex)、编码字段(Dlen)、会话编号字段(Session ID)和用户数据(Data)。其中,Seq占4个字节,DataNum占1个字节,ReduNum占1个字节,PktIndex占一个字节,Dlen占2个字节,Session ID占3个字节,Data的大小为变量。
需要说明的是,本领域技术人员可以理解,实际应用中,也可以采用其他格式,本实施方式列举的FDP格式仅为举例说明,不限制FDP格式的具体格式。
在一个实施例中,第一代理端为代理服务器,第二代理端为代理客户端。代理服务器在首次接收到代理客户端发送的报文后,构造与代理客户端的会话,根据上一会话的会话编号,或,当前随机生成的随机数,确定与代理客户端会话的会话编号;根据与代理客户端的会话编号,以及服务器接收到的VPN传输的数据,生成发送给代理客户端的报文。具体地说,若该报文是代理服务器初始化后接收到的第一个报文,则在确定会话编号时,生成一个随机数,对该随机数进行编码,得到与代理客户端会话的会话编号。例如,将该随机数编码为二进制码,写入报体的会话编号字段。若该报文不是初始化后接收到的第一个报文,则递增会话编号。若在上一会话编号基础上加1未溢出,作为本次会话的会话编号。若上一会话编号加1溢出,则确定当前编号为1。根据与代理客户端会话的会话编号,以及VPN服务器传输的数据,生成发送给代理客户端的报文,该报文中包括会话编号。代理客户端在接收到该报文后,记录报文中的会话编号。
在一个实施例中,由于会话编号由代理服务器分配,而不是根据哈希值生成,会话编号的数据长度小于8字节,也可以保证会话编号的唯一性。在一个例子中,会话编号的数据长度为3字节。
值得一提的是,减少会话编号的数据长度,节省了网络带宽,节省了流量。
步骤102:根据最大序号、最小序号和报文数量,以及预设的最大序号、最小序号、报文数量和丢包率的约束关系,计算第一丢包率。
具体地说,第一丢包率为第二代理端的丢包率。
在一个实施例中,最大序号、最小序号、报文数量和丢包率的约束关系为:
其中,LossRate表示当前采样周期的丢包率,LossRate′表示上一采样周期计算的丢包率,r表示占用比例系数,EndID表示最大序号,BeginID表示最小序号,RecvNum表示报文数量。
在一个实施例中,占用比例系数为上一采样周期的丢包率和当前采样周期的丢包率占用比例系数,可以设置为0.8。通过调节占用比例系数,可以平滑丢包率,减少抖动。
需要说明的是,本领域技术人员可以理解,实际应用中,最大序号、最小序号、报文数量和丢包率的约束关系也可以是其他的约束关系,本实施方式仅为举例说明。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的丢包率的计算方法,第一代理端无需发送探测报文,基于FDP报文中的序号信息即可计算丢包率,减少了第一代理端和第二代理端之间的数据的传输量,避免探测报文占用带宽,减少了流量消耗,使得第一代理端可以更充分利用带宽。
本发明的第二实施方式涉及一种丢包率的计算方法。本实施方式在第一实施方式的基础上做了进一步改进,具体改进之处为:在计算丢包率后,根据丢包率,动态调整冗余比值。
具体的说,如图5所示,在本实施方式中,包含步骤201至步骤203,其中,步骤201和步骤202分别与第一实施方式中的步骤101和步骤102大致相同,此处不再赘述。下面主要介绍不同之处:
执行步骤201和步骤202。
步骤203:发送第一丢包率给第二代理端。
具体地说,第二代理端工作模式可以是同步模式或自动模式。在一些应用场景,如门禁等,对实时性的要求较低,则可以预先设置冗余比。一些应用场景对实时性要求较高,则可以根据丢包率动态调整丢包率。若第二代理端处于同步模式下,根据预设值确定冗余比值;若第二代理端处于自动模式下,根据第一丢包率,动态调整冗余比值。
在一个实施例中,开发人员在FEC代理服务器104为各个客户设置工作模式,若该客户为同步模式,则指定冗余比(预设值)。在该客户的FEC代理客户端102与FEC代理服务器104通信过程中,FEC代理服务器104将该客户的工作模式的信息发送给FEC代理客户端102,FEC代理客户端102将工作模式切换为该信息指示的工作模式。若该工作模式为同步模式,则该信息中包含指定的冗余比,FEC代理客户端102将指定的冗余比作为自身的冗余比。若该工作模式为自动模式,FEC代理客户端102根据FEC代理服务器104发送的丢包率计算自身冗余比。
在一个实施例中,第二代理端基于丢包率计算冗余比O1=M:N;其中,M为第二代理端接收到的属于同一会话的同一组数据报文的数量值,N为大于的最小整数值,LossRate为第一丢包率。
以下以图1所示的系统为例,结合FEC代理客户端和FEC代理服务器之间的交互过程,举例说明丢包率和冗余比值的计算过程。
FEC代理客户端(简称FEC-C)接收来自上层业务(如VPN客户端)的第一报文后,封装成FDP格式,发送给FEC代理服务端(简称FEC-S)。其中,第二报文中包括序号字段(FDPID)和会话编号字段(Session-ID),且第二报文中的FDP ID为从1开始递增整数,SessionID为初始值0。
FEC-S首次接收到来FEC-C的FDP格式的第二报文后,构造会话,生成Session ID,更新接收到的第一报文数量。FEC-S对FDP格式的第二报文进行解包之后,转发给FEC-S上层应用(如VPN服务器),同时将FEC-S设置的工作模式(同步(SYNC)模式或自动(AUTO)模式)发送FEC-C。SYNC模式下,由FEC-S指定冗余比值,AUTO模式下,根据计算得到的丢包率动态计算冗余比值。
FEC-S将来自上层应用(如VPN服务器)的第三报文封装成FDP格式的第四报文,转发给FEC-C。其中,第四报文中包括序号字段(FDP ID)和会话编号字段(Session-ID),且第四报文中的FDP ID为从1开始递增整数,Session ID为FEC-S分配的唯一整数值。
FEC-C接收FEC-S的第四报文,解报包之后记录Session ID,并更新FEC-C的接收的第二报文数量。
FEC-C与FEC-S分别将通过FEC编码之后冗余报文封装成FDP报文格式,发送给对端。
FEC-C与FEC-S接收到FEC编码的冗余报文之后,解析FDP,记录报文数,进行FEC解码,将丢失的报文恢复并转发给到上层应用。
FEC-C和FEC-S通过上述步骤实现数据交互。在到达采样周期后,针对FEC-C和FEC-S,分别进行以下操作:进行超时等待,等待时间为1s或2RTT,在等待时间内接收到FDP ID小于EndID的报文,作为本次计算的采样,即更新当前采样周期的报文数量。FDP ID大于EndID的报文做下一次计算的采样,即更新下一个采样周期的报文数量。经过等待时间后,根据记录的最小序号、最大序号,以及报文数量,计算丢包率:
该丢包率的计算以同一条UDP连接为基础。其中,LossRate表示当前采样周期的丢包率,LossRate′表示上一采样周期计算的丢包率,r表示占用比例系数,EndID表示最大序号,BeginID表示最小序号,RecvNum表示报文数量。
FEC-C与FEC-S将自身计算的丢包率通过FDP协议发送给对端。
FEC-C与FEC-S接收到丢包率之后,计算冗余比值O1=M:N。
需要说明的是,以上仅为举例说明,并不对本发明的技术方案构成限定。
与现有技术相比,本实施方式中提供的丢包率的计算方法,在计算丢包率后,将丢包率发送给对端,以便对端根据丢包率调整冗余比值,避免由于冗余比值不准确导致冗余带宽过大,造成资源浪费。
上面各种方法的步骤划分,只是为了描述清楚,实现时可以合并为一个步骤或者对某些步骤进行拆分,分解为多个步骤,只要包括相同的逻辑关系,都在本专利的保护范围内;对算法中或者流程中添加无关紧要的修改或者引入无关紧要的设计,但不改变其算法和流程的核心设计都在该专利的保护范围内。
本发明第三实施方式涉及一种丢包率的计算装置,如图6所示,包括:确定模块601和计算模块602。确定模块601用于确定采样周期中接收的FDP格式的报文中的最大序号、最小序号,以及接收的报文数量;FDP格式的报文由第二代理端发送,包括序号字段,序号字段中包括报文的序号信息。计算模块602用于根据最大序号、最小序号和报文数量,以及预设的最大序号、最小序号、报文数量和丢包率的约束关系,计算第一丢包率;第一丢包率为第二代理端的丢包率。
不难发现,本实施方式为与第一实施方式相对应的系统实施例,本实施方式可与第一实施方式互相配合实施。第一实施方式中提到的相关技术细节在本实施方式中依然有效,为了减少重复,这里不再赘述。相应地,本实施方式中提到的相关技术细节也可应用在第一实施方式中。
值得一提的是,本实施方式中所涉及到的各模块均为逻辑模块,在实际应用中,一个逻辑单元可以是一个物理单元,也可以是一个物理单元的一部分,还可以以多个物理单元的组合实现。此外,为了突出本发明的创新部分,本实施方式中并没有将与解决本发明所提出的技术问题关系不太密切的单元引入,但这并不表明本实施方式中不存在其它的单元。
本发明第四实施方式涉及一种服务器,如图7所示,包括:至少一个处理器701;以及,与至少一个处理器701通信连接的存储器702;其中,存储器702存储有可被至少一个处理器701执行的指令,指令被至少一个处理器701执行,以使至少一个处理器701能够执行如上述实施方式提及的丢包率的计算方法。
该服务器包括:一个或多个处理器701以及存储器702,图7中以一个处理器701为例。处理器701、存储器702可以通过总线或者其他方式连接,图7中以通过总线连接为例。存储器702作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施方式中约束关系就存储于存储器702中。处理器701通过运行存储在存储器702中的非易失性软件程序、指令以及模块,从而执行设备的各种功能应用以及数据处理,即实现上述丢包率的计算方法。
存储器702可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储选项列表等。此外,存储器702可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施方式中,存储器702可选包括相对于处理器701远程设置的存储器,这些远程存储器可以通过网络连接至外接设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
一个或者多个模块存储在存储器702中,当被一个或者多个处理器701执行时,执行上述任意方法实施方式中的丢包率的计算方法。
上述产品可执行本申请实施方式所提供的方法,具备执行方法相应的功能模块和有益效果,未在本实施方式中详尽描述的技术细节,可参见本申请实施方式所提供的方法。
本发明第五实施方式涉及一种计算机可读存储介质,存储有计算机程序。计算机程序被处理器执行时实现上述方法实施例。
即,本领域技术人员可以理解,实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,该程序存储在一个存储介质中,包括若干指令用以使得一个设备(可以是单片机,芯片等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本领域的普通技术人员可以理解,上述各实施方式是实现本发明的具体实施例,而在实际应用中,可以在形式上和细节上对其作各种改变,而不偏离本发明的精神和范围。