本发明涉及数据报文传送领域,尤其涉及一种报文发送、接收方法和装置以及报文处理方法和系统。
背景技术:
以太网技术的快速发展,使得数据业务成为网络的主要业务流量,数据网络开始代替sdh(synchronousdigitalhierarchy,同步数字体系)网络成为通讯网的发展方向,目前各个运行商大力发展ptn(分组传送网,packettransportnetwork)、ipran(ipradioaccessnetwork,无线接入网ip化)等数据网络,逐步替代以前的sdh网络。数据网络具备综合成本低、业务调度能力灵活,很好地满足了当前数据业务的传送需求。但数据网络在业务传送中延迟时间、延迟时间抖动方面都存在不确定性,而在某些领域,对于数据报文的传送时长并不敏感,但对报文传递时间的变化非常敏感,例如,在电力系统通讯专网中,控制中心需要向上下游的两个电站下发电闸开关命令,要求命令传递时间是确定,保证上下游电闸开关按照指令顺序关系操作电闸开关,上下游电闸的开关顺序是有严格要求的,错误的电闸顺序会导致电网电力动作出现紊乱,酿成灾难。由于数据网络的报文传递时间不确定,因此无法满足电力专网的需求。
技术实现要素:
本发明提供了一种报文发送、接收方法和装置以及报文处理方法和系统,旨在解决现有技术中数据报文传递时间不稳定,进而导致了安全隐患等问题。
为了解决上述技术问题,本发明提供了一种报文发送方法,包括:
生成报文;
记录所述报文进入数据网络时,入口时钟的时间戳;其中,所述入口时钟 与出口时钟同步;
将所述时间戳与所述报文一起通过所述数据网络发送。
可选的,所述将时间戳与报文一起通过所述数据网络发送包括:将所述时间戳插入到报文中;对所述报文重新进行封装,并通过所述数据网络发送。
进一步的,本发明还提供了一种报文接收方法,包括:
通过数据网络接收报文以及所述报文进入所述数据网络时入口时钟的时间戳;
根据所述时间戳以及预设最大时延,确定所述报文的输出时刻;
当出口时钟的时间点小于所述输出时刻时,则对所述报文进行缓存,所述出口时钟与入口时钟同步。
可选的,所述根据所述时间戳以及预设最大时延,确定所述报文的输出时刻包括:所述输出时刻大于等于所述时间戳与所述预设最大时延之和。
可选的,当所述出口时钟的时间点大于等于所述输出时刻时,则输出所述报文。
可选的,当所述时间戳被封装入所述报文时,所述输出所述报文包括:将所述时间戳从所述报文中移除;对所述报文重新进行封装并输出。
进一步的,本发明还提供了一种报文处理方法,包括:
采用上述的报文发送方法发送所述报文和时间戳;
接收所述报文和时间戳,并采用上述的报文接收方法进行处理。
进一步的,本发明还提供了一种报文发送装置,包括:
报文生成模块,用于生成报文;
时间记录模块,用于记录所述报文进入数据网络时,入口时钟的时间戳;其中,所述入口时钟与出口时钟同步;
报文发送模块,用于将所述时间戳与所述报文一起通过所述数据网络发送。
可选的,所述报文发送模块包括第一封装模块,用于将所述时间戳插入到报文中,并对所述报文重新进行封装。
进一步的,本发明还提供了一种报文接收装置,包括:
报文接收模块,用于通过数据网络接收报文以及与所述报文进入所述数据网络时入口时钟的时间戳;
时间确定模块,用于根据所述时间戳以及预设最大时延,确定所述报文的输出时刻;
报文缓存模块,用于当出口时钟的时间点小于所述输出时刻时,则对所述报文进行缓存,所述出口时钟与入口时钟同步。
可选的,所述根据所述时间戳以及预设最大时延,确定所述报文的输出时刻包括:所述输出时刻大于等于所述时间戳与所述预设最大时延之和。
可选的,还包括报文输出模块,用于当所述出口时钟的时间点大于等于所述输出时刻时,则输出所述报文。
可选的,当所述时间戳被封装入所述报文时,所述报文输出模块包括第二封装模块,用于将所述时间戳从所述报文中移除,并对所述报文重新进行封装并输出。
进一步的,本发明还提供了一种报文处理系统,包括上述的报文发送装置以及上述的报文接收装置。
有益效果
本发明提供了一种报文发送、接收方法和装置以及报文处理方法和系统,生成报文,记录报文进入数据网络的时间戳,然后将报文通过数据网络发送,在接收到该报文和时间戳后,根据时间戳以及预设最大时延,确定报文的输出时刻,当出口时钟的时间点小于输出时刻,则对报文进行缓存。克服了由于报文在数据网络中传输的时间不确定而导致的报文输出不确定的问题,使报文可以按照固定的时间进行传输,为后续的处理提供便利,扩大了数据网络的应用范围,提升了用户体验。
附图说明
图1是本发明实施例提供的一种报文发送方法流程图;
图2是本发明实施例提供的一种报文接收方法流程图;
图3是本发明实施例提供的一种报文处理方法流程图;
图4是本发明实施例提供的一种报文发送装置模块示意图;
图5是本发明实施例提供的一种报文接收装置模块示意图;
图6是本发明实施例提供的一种报文处理方法流程图。
具体实施方式
本发明的构思点在于:通过记录报文通过数据网络传输时,进入数据网络的时间戳,以及设定预设最大时延,使报文在传输到报文接收装置时,在满足输出时刻的情况下才能输出,从而避免了报文在未加限制的情况下进行传输导致的传输时间不确定的问题,报文必须延迟预设最大时延这一时长,方便后续的操作以及扩大了数据网络的应用范围。
下面结合附图对本发明各个实施例作进一步说明。
本实施例提供了一种报文发送方法,请参考图1,包括:
s101、生成报文;
s102、记录报文进入数据网络时,入口时钟的时间戳;其中,入口时钟与出口时钟同步;
s103、将时间戳与报文一起通过数据网络发送给报文接收装置。
s101中,报文发送装置生成的报文,并不一定是报文发送装置本身生成的,也可以是其他装置生成后发送给报文发送装置的;报文发送装置是报文通过数据网络发送的起点,报文在报文发送装置这一点进入数据网络。
s102中,由于报文发送装置要将报文通过数据网络发送,而报文发送装置又是数据网络的起点,在发送时,记录下报文进入数据网络时,入口时钟的时间戳,而该时间戳与该报文对应。即在报文进入数据网络的地方设置一个入口时钟,该入口时钟用于实时记录报文进入数据网络的时间。
入口时钟的记录精度可以很高,即精确到报文进入数据网络的瞬间,即记录下当时的时间;精度越高,传递时间的波动就越小。本实施中对于时钟的形式,或者说原理没有限定,不管是机械钟,还是电子钟,石英钟,原子钟等等,都是可行的。
由于需要记录报文发送装置发送报文的时间,以及报文接收装置接收报文的时间,那么,入口时钟和出口时钟的时间应该同步;同步的含义是,或者入口时钟和出口时钟的时间是一致的,或者入口时钟的时间和出口时钟的时间之间的换算关系是确定的。例如,北京所在的时区是东八区,东京所在的时区是东九区,那么,北京的时间与东京的时间之间就有一个小时的时差;因此,若报文发送装置处于北京,而报文接收装置处于东京,那么记录的时间戳就应该加上一个小时,或者出口时钟的时间要减去一个小时,这样就能使两者同步。
入口时钟和出口时钟的同步方式,可以有多种;一般来说,时钟的同步方式分为两大类,其一,是出口时钟和入口时钟之间进行同步,即以出口时钟/入口时钟为基准,使入口时钟/出口时钟与之一致;这样同步的结果是两个时钟的绝对时间并不一定准确,但对本实施例的实现没有影响;其二,是出口时钟和入口时钟均与基准时钟进行同步,即以一个第三方的标准的时钟为基准,使出口时钟和入口时钟均与该基准时钟同步,相应的,出口时钟和入口时钟之间也就同步了。具体的,同步的方式可以包括:gps(globalpositioningsystem,全球定位系统)、ntp(networktimeprotocol,网络时间协议)、中国北斗卫星导航系统、原子钟、ieee1588(网络测量和控制系统的精密时钟同步协议标准)等等任何同步的方式均可。
s103中,此时报文发送装置已经获取了与报文对应的时间戳;为了这个时间戳能够被报文接收装置得知,因此,需要将该时间戳和报文一起通过数据网络发送。之所以要一起发送,是为了避免,报文和时间戳不是同时到达报文接收装置,从而给比对带来麻烦。不过,在一般的情况下,即使与报文对应的时间戳与报文不是在同时到达报文接收装置,对于本实施例的实现也不会有太大的影响。
可选的,在记录了报文进入数据网络的时间戳后,就将该时间戳插入到报文中,这样就可以保证报文和与其对应的时间戳会同时到达报文接收装置。具体的,该时间戳可以插入报文中的多个位置,如报文头部、报文头部和有效内容之间,或者是报文的尾部均可。
报文在原始的内容中增加了时间戳这一数据,因此,通常需要对报文重新封装;这里的重新封装,包括但不限于:重新计算报文长度内容、重新计算报文的crc(cyclicredundancycode,循环冗余码校验)校验字节等。再对报文 进行重新封装之后,就可以顺利的将封装后的报文发送给通过数据网络发送给报文接收装置,然后由报文接收装置对报文进行处理。
本实施例提供了一种报文接收方法,请参考图2,包括:
s201、通过数据网络接收报文以及报文进入数据网络时入口时钟的时间戳;
s202、根据时间戳以及预设最大时延,确定报文的输出时刻;
s203、若出口时钟的时间点小于输出时刻,则对报文进行缓存,出口时钟和入口时钟同步。
s201中,接收报文是通过数据网络自然传送过来的报文;报文传送过来的时间并不是确定的,所花的时间和到达的时间都不是确定的,这是由于数据网络自身并没有一个确定的传输时间。而时间戳就是报文进入数据网络时,入口时钟的时间。
可选的,时间戳是和报文一起通过数据网络发送的,即时间戳和报文同时到达报文输出装置;之所以要一起发送,是为了避免,报文和时间戳不是同时到达报文接收装置,从而给比对带来麻烦。不过,在一般的情况下,即使与报文对应的时间戳与报文不是在同时到达报文接收装置,对于本实施例的实现也不会有太大的影响。
s202中,除去接收的报文对应的时间戳,还有预设最大时延以及出口时钟的时间点。出口时钟的时间点很好理解,就是出口时钟所提示的时间。出口时钟与入口时钟类似,它的精度可以很高,精度越高,报文传递的时间就越精确,越能使报文以预期的时延输出;本实施例中对时钟的形式,或者说原理并没有限定,不管是机械钟,还是电子钟,石英钟,原子钟等等,都是可行的。
根据与报文对应的时间戳以及预设最大时延,确定报文的输出时刻;而报文的输出时刻包括:输出时刻大于等于时间戳与预设最大时延之和。输出时刻所指的是一个时间点,报文被允许在大于等于时间戳与预设最大时间之和的这一时间点被输出,也被允许在大于时间戳与预设最大时间之和的时间点被输出;输出时刻虽然是一个时间点,但并不意味着报文一定会在这一时刻输出,事实上,输出时刻是报文允许被输出的最早时间点,以及最优时间点,可以保证报文从发送到输出能够经过一段固定的时间且这个固定的时间还尽可能的短,保 证了效率。
上面还提到了预设最大时延。由于报文在数据网络中传输的时间并不固定,因此,本实施例中对其设定了一个固定的预设最大时延,通过这个预设最大时延使得报文从发送到输出这之间的时间是固定的,就是预设最大时延。预设最大时延就是一种预设的、使报文延迟固定时长的时间。通常来说,虽然数据网络中传输的报文其传输时间并不固定,但一般会有一个传输时间的最大值,即最大延迟时间;而在正常的传输过程中,报文不会超过这个最大延迟时间,传输的时间都是小于这个最大延迟时间的。该最大延迟时间一般是实验数据,即通过多次采样确定,从报文发送装置到报文接收装置,在正常情况下,报文的延迟时间最大不超过的那个值。本实施例中的预设最大时延,一般就是指这个最大延迟时间,这可以保证,报文在数据网络中传输的时间不会超过该预设最大时延,因此,就能将报文从发送到输出这段时间固定下来,减少甚至不产生波动,使报文的传输更加稳定。当然,预设最大时延也可以根据需求调大调小,只要其在合理的范围内即可。
s203中,当出口时钟的时间点小于输出时刻时,对报文进行缓存。需要说明的是,出口时钟的时间点,并不只是报文到达报文接收装置那一瞬间的时间,它指的就是出口时钟上所提示的时间;由于出口时钟的所提示的时间是一直在流逝中的,因此,出口时钟的时间点小于输出时刻时,应该继续持续的进行比对。若出口时钟的时间点小于输出时刻,那么在出口时钟的时间点达到输出时刻时,就可以输出报文;若出口时钟的时间点大于输出时刻,就可以直接输出报文。换言之,在出口时钟的时间点小于输出时刻时,输出时刻就是报文的真实向外输出的时间;在出口时钟的时间点大于输出时刻时,就可以直接输出报文。
在报文刚刚到达报文接收装置时,显然,此时出口时钟的时间点,或者说出口时钟提示的时间与时间戳之差,就是报文在数据网络中传输的时间。前面我们知道,这一时间并不是固定的,它是经常会浮动的,因此,本实施例有了预设最大时延的概念;若出口时钟的时间点一直小于输出时刻的话,就一直对该报文进行缓存。而在缓存期间,出口时钟的时间点会越来越接近输出时刻,而在出口时钟的时间点等于输出时刻时,就可以输出该报文。
此外,由于时间戳是入口时钟的时间,因此,出口时钟应该和入口时钟同 步;同步的含义是,或者入口时钟和出口时钟的时间是一致的,或者入口时钟的时间和出口时钟的时间之间的换算关系是确定的。
出口时钟和入口时钟之间的同步方式,可以有多种;一般来说,时钟的同步方式分为两大类,其一,是出口时钟和入口时钟之间进行同步,即以出口时钟/入口时钟为基准,使入口时钟/出口时钟与之一致;这样同步的结果是两个时钟的绝对时间并不一定准确,但对本实施例的实现没有影响,只要这两者之间的时间同步即可;其二,是出口时钟和入口时钟均与基准时钟进行同步,即以一个第三方的标准的时钟为基准,使出口时钟和入口时钟均与该基准时钟同步,相应的,出口时钟和入口时钟之间也就相应的同步了。具体的,同步的方式可以包括:gps、ntp、中国北斗卫星导航系统、原子钟、ieee1588等等任何同步的方式均可。
在输出报文时,若时间戳是封装在报文中的,则需要将报文中的时间戳移除,然后对报文进行重新封装再输出。重新封装包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。
输出的报文可以输出到所需的地方,从而实现所需的功能;在本实施例中,可以使报文从发送到输出所经过的时间是一致的,换句话说,只要在发送报文时,对有时序的报文设置先后顺序,那就可以保证报文在输出时,其也是按照预设的时序进行输出的。对于同一个报文接收装置而言,在发送时,设置两个报文之间的时序,在经过数据网络的传送后,先发送的报文即使后接收,也会因为后发送的报文先到却没有满足输出时刻的要求而被缓存,就使得先发送的报文仍然能保证被先输出;而报文发送装置将有时序的报文发送给不同的报文接收装置也是一样,同样能够保证报文发送时的时序与接收时的时序一致,从而使用户操作更加简便且可靠。
本实施例提供了一种报文处理方法,请参考图3,包括:
s301、生成报文;
s302、记录报文进入数据网络时,入口时钟的时间戳;其中,入口时钟与出口时钟同步;
s303、报文发送装置将时间戳与报文一起通过数据网络发送给报文接收装 置;
s304、通过数据网络接收报文以及时间戳;
s305、根据时间戳以及预设最大时延确定报文的输出时刻;
s306、若出口时钟的时间点小于输出时刻,则对报文进行缓存,出口时钟和入口时钟同步。
s301中,报文发送装置生成的报文,并不一定是报文发送装置本身生成的,也可以是其他装置生成后发送给报文发送装置的;报文发送装置是报文通过数据网络发送的起点,报文在报文发送装置这一点进入数据网络。
s302中,由于报文发送装置要将报文通过数据网络发送,而报文发送装置又是数据网络的起点,在发送时,记录下报文进入数据网络时,入口时钟的时间戳,而该时间戳与该报文对应。即在报文进入数据网络的地方设置一个入口时钟,该入口时钟用于实时记录报文进入数据网络的时间。
入口时钟的记录精度可以很高,即精确到报文进入数据网络的瞬间,即记录下当时的时间;精度越高,传递时间的波动就越小。本实施中对于时钟的形式,或者说原理没有限定,不管是机械钟,还是电子钟,石英钟,原子钟等等,都是可行的。
由于需要记录报文发送装置发送报文的时间,以及报文接收装置接收报文的时间,那么,入口时钟和出口时钟的时间应该同步;同步的含义是,或者入口时钟和出口时钟的时间是一致的,或者入口时钟的时间和出口时钟的时间之间的换算关系是确定的。例如,北京所在的时区是东八区,东京所在的时区是东九区,那么,北京的时间与东京的时间之间就有一个小时的时差;因此,若报文发送装置处于北京,而报文接收装置处于东京,那么记录的时间戳就应该加上一个小时,或者出口时钟的时间要减去一个小时,这样就能使两者同步。
入口时钟和出口时钟的同步方式,可以有多种;一般来说,时钟的同步方式分为两大类,其一,是出口时钟和入口时钟之间进行同步,即以出口时钟/入口时钟为基准,使入口时钟/出口时钟与之一致;这样同步的结果是两个时钟的绝对时间并不一定准确,但对本实施例的实现没有影响;其二,是出口时钟和入口时钟均与基准时钟进行同步,即以一个第三方的标准的时钟为基准,使出口时钟和入口时钟均与该基准时钟同步,相应的,出口时钟和入口时钟之间也 就同步了。具体的,同步的方式可以包括:gps、ntp、中国北斗卫星导航系统、原子钟、ieee1588等等任何同步的方式均可。
s303中,此时报文发送装置已经获取了与报文对应的时间戳;为了这个时间戳能够被报文接收装置得知,因此,需要将该时间戳和报文一起通过数据网络发送。之所以要一起发送,是为了避免,报文和时间戳不是同时到达报文接收装置,从而给比对带来麻烦。不过,在一般的情况下,即使与报文对应的时间戳与报文不是在同时到达报文接收装置,对于本实施例的实现也不会有太大的影响。
可选的,在记录了报文进入数据网络的时间戳后,就将该时间戳插入到报文中,这样就可以保证报文和与其对应的时间戳会同时到达报文接收装置。具体的,该时间戳可以插入报文中的多个位置,如报文头部、报文头部和有效内容之间,或者是报文的尾部均可。
报文在原始的内容中增加了时间戳这一数据,因此,通常需要对报文重新封装;这里的重新封装,包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。再对报文进行重新封装之后,就可以顺利的将封装后的报文发送给通过数据网络发送给报文接收装置,然后由报文接收装置对报文进行处理。
s304中,接收报文是通过数据网络自然传送过来的报文;报文传送过来的时间并不是确定的,所花的时间和到达的时间都不是确定的,这是由于数据网络自身并没有一个确定的传输时间。而时间戳就是报文进入数据网络时,入口时钟的时间。
可选的,时间戳是和报文一起通过数据网络发送的,即时间戳和报文同时到达报文输出装置;之所以要一起发送,是为了避免,报文和时间戳不是同时到达报文接收装置,从而给比对带来麻烦。不过,在一般的情况下,即使与报文对应的时间戳与报文不是在同时到达报文接收装置,对于本实施例的实现也不会有太大的影响。
s305中,除去接收的报文对应的时间戳,还有预设最大时延以及出口时钟的时间点。出口时钟的时间点很好理解,就是出口时钟所提示的时间。出口时钟与入口时钟类似,它的精度可以很高,精度越高,报文传递的时间就越精确,越能使报文以预期的时延输出;本实施例中对时钟的形式,或者说原理并没有 限定,不管是机械钟,还是电子钟,石英钟,原子钟等等,都是可行的。
根据与报文对应的时间戳以及预设最大时延,确定报文的输出时刻;而报文的输出时刻包括:输出时刻大于等于时间戳与预设最大时延之和。输出时刻所指的是一个时间点,报文被允许在大于等于时间戳与预设最大时间之和的这一时间点被输出,也被允许在大于时间戳与预设最大时间之和的时间点被输出;输出时刻虽然是一个时间点,但并不意味着报文一定会在这一时刻输出,事实上,输出时刻是报文允许被输出的最早时间点,以及最优时间点,可以保证报文从发送到输出能够经过一段固定的时间且这个固定的时间还尽可能的短,保证了效率。
上面还提到了预设最大时延。由于报文在数据网络中传输的时间并不固定,因此,本实施例中对其设定了一个固定的预设最大时延,通过这个预设最大时延使得报文从发送到输出这之间的时间是固定的,就是预设最大时延。预设最大时延就是一种预设的、使报文延迟固定时长的时间。通常来说,虽然数据网络中传输的报文其传输时间并不固定,但一般会有一个传输时间的最大值,即最大延迟时间;而在正常的传输过程中,报文不会超过这个最大延迟时间,传输的时间都是小于这个最大延迟时间的。该最大延迟时间一般是实验数据,即通过多次采样确定,从报文发送装置到报文接收装置,在正常情况下,报文的延迟时间最大不超过的那个值。本实施例中的预设最大时延,一般就是指这个最大延迟时间,这可以保证,报文在数据网络中传输的时间不会超过该预设最大时延,因此,就能将报文从发送到输出这段时间固定下来,减少甚至不产生波动,使报文的传输更加稳定。当然,预设最大时延也可以根据需求调大调小,只要其在合理的范围内即可。
s306中,当出口时钟的时间点小于输出时刻时,对报文进行缓存。需要说明的是,出口时钟的时间点,并不只是报文到达报文接收装置那一瞬间的时间,它指的就是出口时钟上所提示的时间;由于出口时钟的所提示的时间是一直在流逝中的,因此,出口时钟的时间点小于输出时刻时,应该继续持续的进行比对。若出口时钟的时间点小于输出时刻,那么在出口时钟的时间点达到输出时刻时,就可以输出报文;若出口时钟的时间点大于输出时刻,就可以直接输出报文。换言之,在出口时钟的时间点小于输出时刻时,输出时刻就是报文的真实向外输出的时间;在出口时钟的时间点大于输出时刻时,就可以直接输出报 文。
在报文刚刚到达报文接收装置时,显然,此时出口时钟的时间点,或者说出口时钟提示的时间与时间戳之差,就是报文在数据网络中传输的时间。前面我们知道,这一时间并不是固定的,它是经常会浮动的,因此,本实施例有了预设最大时延的概念;若出口时钟的时间点一直小于输出时刻的话,就一直对该报文进行缓存。而在缓存期间,出口时钟的时间点会越来越接近输出时刻,而在出口时钟的时间点等于输出时刻时,就可以输出该报文。
此外,由于时间戳是入口时钟的时间,因此,出口时钟应该和入口时钟同步;同步的含义是,或者入口时钟和出口时钟的时间是一致的,或者入口时钟的时间和出口时钟的时间之间的换算关系是确定的。
出口时钟和入口时钟之间的同步方式,可以有多种;一般来说,时钟的同步方式分为两大类,其一,是出口时钟和入口时钟之间进行同步,即以出口时钟/入口时钟为基准,使入口时钟/出口时钟与之一致;这样同步的结果是两个时钟的绝对时间并不一定准确,但对本实施例的实现没有影响,只要这两者之间的时间同步即可;其二,是出口时钟和入口时钟均与基准时钟进行同步,即以一个第三方的标准的时钟为基准,使出口时钟和入口时钟均与该基准时钟同步,相应的,出口时钟和入口时钟之间也就相应的同步了。具体的,同步的方式可以包括:gps、ntp、中国北斗卫星导航系统、原子钟、ieee1588等等任何同步的方式均可。
在输出报文时,若在发送报文时,将时间戳插入到所述报文中,并对报文进行重新封装,则需要将报文中的时间戳移除,然后对报文进行重新封装再输出。重新封装包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。
输出的报文可以输出到所需的地方,从而实现所需的功能;在本实施例中,可以使报文从发送到输出所经过的时间是一致的,换句话说,只要在发送报文时,对有时序的报文设置先后顺序,那就可以保证报文在输出时,其也是按照预设的时序进行输出的。对于同一个报文接收装置而言,在发送时,设置两个报文之间的时序,在经过数据网络的传送后,先发送的报文即使后接收,也会因为后发送的报文先到却没有满足输出时刻的要求而被缓存,就使得先发送的报文仍然能保证被先输出;而报文发送装置将有时序的报文发送给不同的报文 接收装置也是一样,同样能够保证报文发送时的时序与接收时的时序一致,从而使用户操作更加简便且可靠。
本实施例提供了一种报文发送装置,请参考图4,包括:
报文生成模块101,用于生成报文;
时间记录模块102,记录报文进入数据网络时,入口时钟的时间戳;其中,入口时钟与出口时钟同步;
报文发送模块103,将时间戳与报文一起通过数据网络发送给报文接收装置。
报文生成模块101生成的报文,并不一定是报文发送装置本身生成的,也可以是其他装置生成后发送给报文发送装置的;报文发送模块103是报文通过数据网络发送的起点,报文在报文发送装置这一点进入数据网络。
由于报文发送模块103要将报文通过数据网络发送,而报文发送模块103又是数据网络的起点,在发送时,时间记录模块102需要记录下报文进入数据网络时,入口时钟的时间戳,而该时间戳与该报文对应。即在报文进入数据网络的地方设置一个入口时钟,该入口时钟用于实时记录报文进入数据网络的时间。
入口时钟的记录精度可以很高,即精确到报文进入数据网络的瞬间,即记录下当时的时间;精度越高,传递时间的波动就越小。本实施中对于时钟的形式,或者说原理没有限定,不管是机械钟,还是电子钟,石英钟,原子钟等等,都是可行的。
由于需要记录报文发送模块103发送报文的时间,以及报文接收装置接收报文的时间,那么,入口时钟和出口时钟的时间应该同步;同步的含义是,或者入口时钟和出口时钟的时间是一致的,或者入口时钟的时间和出口时钟的时间之间的换算关系是确定的。例如,北京所在的时区是东八区,东京所在的时区是东九区,那么,北京的时间与东京的时间之间就有一个小时的时差;因此,若报文发送装置处于北京,而报文接收装置处于东京,那么记录的时间戳就应该加上一个小时,或者出口时钟的时间要减去一个小时,这样就能使两者同步。
入口时钟和出口时钟的同步方式,可以有多种;一般来说,时钟的同步方式分为两大类,其一,是出口时钟和入口时钟之间进行同步,即以出口时钟/入 口时钟为基准,使入口时钟/出口时钟与之一致;这样同步的结果是两个时钟的绝对时间并不一定准确,但对本实施例的实现没有影响;其二,是出口时钟和入口时钟均与基准时钟进行同步,即以一个第三方的标准的时钟为基准,使出口时钟和入口时钟均与该基准时钟同步,相应的,出口时钟和入口时钟之间也就同步了。具体的,同步的方式可以包括:gps、ntp、中国北斗卫星导航系统、原子钟、ieee1588等等任何同步的方式均可。
此时时间记录模块102已经获取了与报文对应的时间戳;为了这个时间戳能够被报文接收装置得知,因此,需要将该时间戳和报文一起通过数据网络发送。之所以要一起发送,是为了避免,报文和时间戳不是同时到达报文接收装置,从而给比对带来麻烦。不过,在一般的情况下,即使与报文对应的时间戳与报文不是在同时到达报文接收装置,对于本实施例的实现也不会有太大的影响。
可选的,还包括第一封装模块1031,用于在记录了报文进入数据网络的时间戳后,就将该时间戳插入到报文中,这样就可以保证报文和与其对应的时间戳会同时到达报文接收装置。具体的,该时间戳可以插入报文中的多个位置,如报文头部、报文头部和有效内容之间,或者是报文的尾部均可。
报文在原始的内容中增加了时间戳这一数据,因此,通常需要对报文重新封装;这里的重新封装,包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。再对报文进行重新封装之后,就可以顺利的将封装后的报文发送给通过数据网络发送给报文接收装置,然后由报文接收装置对报文进行处理。
本实施例提供了一种报文接收装置,请参考图5,包括:
报文接收模块201,用于通过数据网络接收报文以及报文进入数据网络时入口时钟的时间戳;
时间确定模块202,用于根据时间戳以及预设最大时延,确定报文的输出时刻;
报文缓存模块203,用于若出口时钟的时间点小于输出时刻,则对报文进行缓存,出口时钟和入口时钟同步。
报文接收模块201接收通过数据网络自然传送过来的报文;报文传送过来的时间并不是确定的,所花的时间和到达的时间都不是确定的,这是由于数据网络自身并没有一个确定的传输时间。而时间戳就是报文进入数据网络时,入口时钟的时间。
可选的,时间戳是和报文一起通过数据网络发送的,即时间戳和报文同时到达报文接收模块201;之所以要一起发送,是为了避免,报文和时间戳不是同时到达报文接收模块201,从而给比对带来麻烦。不过,在一般的情况下,即使与报文对应的时间戳与报文不是在同时到达报文接收模块201,对于本实施例的实现也不会有太大的影响。
除去接收的报文对应的时间戳,还有预设最大时延以及出口时钟的时间点。出口时钟的时间点很好理解,就是出口时钟所提示的时间。出口时钟与入口时钟类似,它的精度可以很高,精度越高,报文传递的时间就越精确,越能使报文以预期的时延输出;本实施例中对时钟的形式,或者说原理并没有限定,不管是机械钟,还是电子钟,石英钟,原子钟等等,都是可行的。
根据与报文对应的时间戳以及预设最大时延,确定报文的输出时刻;而报文的输出时刻包括:输出时刻大于等于时间戳与预设最大时延之和。输出时刻所指的是一个时间点,报文被允许在大于等于时间戳与预设最大时间之和的这一时间点被输出,也被允许在大于时间戳与预设最大时间之和的时间点被输出;输出时刻虽然是一个时间点,但并不意味着报文一定会在这一时刻输出,事实上,输出时刻是报文允许被输出的最早时间点,以及最优时间点,可以保证报文从发送到输出能够经过一段固定的时间且这个固定的时间还尽可能的短,保证了效率。
上面还提到了预设最大时延。由于报文在数据网络中传输的时间并不固定,因此,本实施例中对其设定了一个固定的预设最大时延,通过这个预设最大时延使得报文从发送到输出这之间的时间是固定的,就是预设最大时延。预设最大时延就是一种预设的、使报文延迟固定时长的时间。通常来说,虽然数据网络中传输的报文其传输时间并不固定,但一般会有一个传输时间的最大值,即最大延迟时间;而在正常的传输过程中,报文不会超过这个最大延迟时间,传输的时间都是小于这个最大延迟时间的。该最大延迟时间一般是实验数据,即通过多次采样确定,从报文发送装置到报文接收装置,在正常情况下,报文的 延迟时间最大不超过的那个值。本实施例中的预设最大时延,一般就是指这个最大延迟时间,这可以保证,报文在数据网络中传输的时间不会超过该预设最大时延,因此,就能将报文从发送到输出这段时间固定下来,减少甚至不产生波动,使报文的传输更加稳定。当然,预设最大时延也可以根据需求调大调小,只要其在合理的范围内即可。
由于时间戳是入口时钟的时间,因此,出口时钟应该和入口时钟同步;同步的含义是,或者入口时钟和出口时钟的时间是一致的,或者入口时钟的时间和出口时钟的时间之间的换算关系是确定的。
出口时钟和入口时钟之间的同步方式,可以有多种;一般来说,时钟的同步方式分为两大类,其一,是出口时钟和入口时钟之间进行同步,即以出口时钟/入口时钟为基准,使入口时钟/出口时钟与之一致;这样同步的结果是两个时钟的绝对时间并不一定准确,但对本实施例的实现没有影响,只要这两者之间的时间同步即可;其二,是出口时钟和入口时钟均与基准时钟进行同步,即以一个第三方的标准的时钟为基准,使出口时钟和入口时钟均与该基准时钟同步,相应的,出口时钟和入口时钟之间也就相应的同步了。具体的,同步的方式可以包括:gps、ntp、中国北斗卫星导航系统、原子钟、ieee1588等等任何同步的方式均可。
当出口时钟的时间点小于输出时刻时,报文缓存模块203就对报文进行缓存。需要说明的是,出口时钟的时间点,并不只是报文到达报文接收模块201那一瞬间的时间,它指的就是出口时钟上所提示的时间;由于出口时钟的所提示的时间是一直在流逝中的,因此,出口时钟的时间点小于输出时刻时,应该继续持续的进行比对。可选的,还包括报文输出模块204,用于当出口时钟的时间点小于输出时刻,那么在出口时钟的时间点达到输出时刻时,就可以输出报文;当出口时钟的时间点大于输出时刻,就可以直接输出报文。换言之,在出口时钟的时间点小于输出时刻时,输出时刻就是报文的真实向外输出的时间;在出口时钟的时间点大于输出时刻时,就可以直接输出报文。
在报文刚刚到达报文接收模块201时,显然,此时出口时钟的时间点,或者说出口时钟提示的时间与时间戳之差,就是报文在数据网络中传输的时间。前面我们知道,这一时间并不是固定的,它是经常会浮动的,因此,本实施例有了预设最大时延的概念;若出口时钟的时间点一直小于输出时刻的话,就由 报文缓存模块203一直对该报文进行缓存。而在缓存期间,出口时钟的时间点会越来越接近输出时刻,而在出口时钟的时间点等于输出时刻时,就可以由报文输出模块204输出该报文。
可选的,报文输出模块204还包括第二封装模块2041,用于若时间戳是封装在报文中的,则需要将报文中的时间戳移除,然后对报文进行重新封装再输出。重新封装包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。
输出的报文可以输出到所需的地方,从而实现所需的功能;在本实施例中,可以使报文从发送到输出所经过的时间是一致的,换句话说,只要在发送报文时,对有时序的报文设置先后顺序,那就可以保证报文在输出时,其也是按照预设的时序进行输出的。对于同一个报文接收装置而言,在发送时,设置两个报文之间的时序,在经过数据网络的传送后,先发送的报文即使后接收,也会因为后发送的报文先到却没有满足输出时刻的要求而被缓存,就使得先发送的报文仍然能保证被先输出;而报文发送装置将有时序的报文发送给不同的报文接收装置也是一样,同样能够保证报文发送时的时序与接收时的时序一致,从而使用户操作更加简便且可靠。
本实施例提供了一种报文处理系统,包括上述的报文发送装置和报文接收装置,具体包括:
报文生成模块101,用于生成报文;
时间记录模块102,记录报文进入数据网络时,入口时钟的时间戳;其中,入口时钟与出口时钟同步;
报文发送模块103,将时间戳与报文一起通过数据网络发送给报文接收装置;
报文接收模块201,用于通过数据网络接收报文以及时间戳;
时间确定模块202,用于根据时间戳以及预设最大时延,确定报文的输出时刻;
报文缓存模块203,用于若出口时钟的时间点小于输出时刻,则对报文进行缓存。
报文生成模块101生成的报文,并不一定是报文发送装置本身生成的,也 可以是其他装置生成后发送给报文发送装置的;报文发送模块103是报文通过数据网络发送的起点,报文在报文发送装置这一点进入数据网络。
由于报文发送模块103要将报文通过数据网络发送,而报文发送模块103又是数据网络的起点,在发送时,时间记录模块102需要记录下报文进入数据网络时,入口时钟的时间戳,而该时间戳与该报文对应。即在报文进入数据网络的地方设置一个入口时钟,该入口时钟用于实时记录报文进入数据网络的时间。
入口时钟的记录精度可以很高,即精确到报文进入数据网络的瞬间,即记录下当时的时间;精度越高,传递时间的波动就越小。本实施中对于时钟的形式,或者说原理没有限定,不管是机械钟,还是电子钟,石英钟,原子钟等等,都是可行的。
由于需要记录报文发送模块103发送报文的时间,以及报文接收装置接收报文的时间,那么,入口时钟和出口时钟的时间应该同步;同步的含义是,或者入口时钟和出口时钟的时间是一致的,或者入口时钟的时间和出口时钟的时间之间的换算关系是确定的。例如,北京所在的时区是东八区,东京所在的时区是东九区,那么,北京的时间与东京的时间之间就有一个小时的时差;因此,若报文发送装置处于北京,而报文接收装置处于东京,那么记录的时间戳就应该加上一个小时,或者出口时钟的时间要减去一个小时,这样就能使两者同步。
入口时钟和出口时钟的同步方式,可以有多种;一般来说,时钟的同步方式分为两大类,其一,是出口时钟和入口时钟之间进行同步,即以出口时钟/入口时钟为基准,使入口时钟/出口时钟与之一致;这样同步的结果是两个时钟的绝对时间并不一定准确,但对本实施例的实现没有影响;其二,是出口时钟和入口时钟均与基准时钟进行同步,即以一个第三方的标准的时钟为基准,使出口时钟和入口时钟均与该基准时钟同步,相应的,出口时钟和入口时钟之间也就同步了。具体的,同步的方式可以包括:gps、ntp、中国北斗卫星导航系统、原子钟、ieee1588等等任何同步的方式均可。
此时时间记录模块102已经获取了与报文对应的时间戳;为了这个时间戳能够被报文接收装置得知,因此,需要将该时间戳和报文一起通过数据网络发送。之所以要一起发送,是为了避免,报文和时间戳不是同时到达报文接收装置,从而给比对带来麻烦。不过,在一般的情况下,即使与报文对应的时间戳 与报文不是在同时到达报文接收装置,对于本实施例的实现也不会有太大的影响。
可选的,还包括第一封装模块1031,用于在记录了报文进入数据网络的时间戳后,就将该时间戳插入到报文中,这样就可以保证报文和与其对应的时间戳会同时到达报文接收装置。具体的,该时间戳可以插入报文中的多个位置,如报文头部、报文头部和有效内容之间,或者是报文的尾部均可。
报文在原始的内容中增加了时间戳这一数据,因此,通常需要对报文重新封装;这里的重新封装,包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。再对报文进行重新封装之后,就可以顺利的将封装后的报文发送给通过数据网络发送给报文接收装置,然后由报文接收装置对报文进行处理。
报文接收模块201接收通过数据网络自然传送过来的报文;报文传送过来的时间并不是确定的,所花的时间和到达的时间都不是确定的,这是由于数据网络自身并没有一个确定的传输时间。而时间戳就是报文进入数据网络时,入口时钟的时间。
可选的,时间戳是和报文一起通过数据网络发送的,即时间戳和报文同时到达报文接收模块201;之所以要一起发送,是为了避免,报文和时间戳不是同时到达报文接收模块201,从而给比对带来麻烦。不过,在一般的情况下,即使与报文对应的时间戳与报文不是在同时到达报文接收模块201,对于本实施例的实现也不会有太大的影响。
除去接收的报文对应的时间戳,还有预设最大时延以及出口时钟的时间点。出口时钟的时间点很好理解,就是出口时钟所提示的时间。出口时钟与入口时钟类似,它的精度可以很高,精度越高,报文传递的时间就越精确,越能使报文以预期的时延输出;本实施例中对时钟的形式,或者说原理并没有限定,不管是机械钟,还是电子钟,石英钟,原子钟等等,都是可行的。
根据与报文对应的时间戳以及预设最大时延,确定报文的输出时刻;而报文的输出时刻包括:输出时刻大于等于时间戳与预设最大时延之和。输出时刻所指的是一个时间点,报文被允许在大于等于时间戳与预设最大时间之和的这一时间点被输出,也被允许在大于时间戳与预设最大时间之和的时间点被输出;输出时刻虽然是一个时间点,但并不意味着报文一定会在这一时刻输出,事实 上,输出时刻是报文允许被输出的最早时间点,以及最优时间点,可以保证报文从发送到输出能够经过一段固定的时间且这个固定的时间还尽可能的短,保证了效率。
上面还提到了预设最大时延。由于报文在数据网络中传输的时间并不固定,因此,本实施例中对其设定了一个固定的预设最大时延,通过这个预设最大时延使得报文从发送到输出这之间的时间是固定的,就是预设最大时延。预设最大时延就是一种预设的、使报文延迟固定时长的时间。通常来说,虽然数据网络中传输的报文其传输时间并不固定,但一般会有一个传输时间的最大值,即最大延迟时间;而在正常的传输过程中,报文不会超过这个最大延迟时间,传输的时间都是小于这个最大延迟时间的。该最大延迟时间一般是实验数据,即通过多次采样确定,从报文发送装置到报文接收模块201,在正常情况下,报文的延迟时间最大不超过的那个值。本实施例中的预设最大时延,一般就是指这个最大延迟时间,这可以保证,报文在数据网络中传输的时间不会超过该预设最大时延,因此,就能将报文从发送到输出这段时间固定下来,减少甚至不产生波动,使报文的传输更加稳定。当然,预设最大时延也可以根据需求调大调小,只要其在合理的范围内即可。
当出口时钟的时间点小于输出时刻时,报文缓存模块203就对报文进行缓存。需要说明的是,出口时钟的时间点,并不只是报文到达报文接收模块201那一瞬间的时间,它指的就是出口时钟上所提示的时间;由于出口时钟的所提示的时间是一直在流逝中的,因此,出口时钟的时间点小于输出时刻时,应该继续持续的进行比对。可选的,还包括报文输出模块204,用于当出口时钟的时间点小于输出时刻,那么在出口时钟的时间点达到输出时刻时,就可以输出报文;当出口时钟的时间点大于输出时刻,就可以直接输出报文。换言之,在出口时钟的时间点小于输出时刻时,输出时刻就是报文的真实向外输出的时间;在出口时钟的时间点大于输出时刻时,就可以直接输出报文。
在报文刚刚到达报文接收模块201时,显然,此时出口时钟的时间点,或者说出口时钟提示的时间与时间戳之差,就是报文在数据网络中传输的时间。前面我们知道,这一时间并不是固定的,它是经常会浮动的,因此,本实施例有了预设最大时延的概念;若出口时钟的时间点一直小于输出时刻的话,就由报文缓存模块203一直对该报文进行缓存。而在缓存期间,出口时钟的时间点 会越来越接近输出时刻,而在出口时钟的时间点等于输出时刻时,就可以由报文输出模块204输出该报文。
可选的,报文输出模块204包括第二封装模块2041,用于若时间戳是封装在报文中的,则需要将报文中的时间戳移除,然后对报文进行重新封装再输出。重新封装包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。
输出的报文可以输出到所需的地方,从而实现所需的功能;在本实施例中,可以使报文从发送到输出所经过的时间是一致的,换句话说,只要在发送报文时,对有时序的报文设置先后顺序,那就可以保证报文在输出时,其也是按照预设的时序进行输出的。对于同一个报文接收装置而言,在发送时,设置两个报文之间的时序,在经过数据网络的传送后,先发送的报文即使后接收,也会因为后发送的报文先到却没有满足输出时刻的要求而被缓存,就使得先发送的报文仍然能保证被先输出;而报文发送装置将有时序的报文发送给不同的报文接收装置也是一样,同样能够保证报文发送时的时序与接收时的时序一致,从而使用户操作更加简便且可靠。
本实施例提供了一种报文处理方法,请参考图6,包括:
s401、生成报文;
报文生成模块生成的报文,并不一定是报文发送装置本身生成的,也可以是其他装置生成后发送给报文发送装置的;报文发送模块是报文通过数据网络发送的起点,报文在报文发送装置这一点进入数据网络。
s402、记录报文进入数据网络时,入口时钟的时间戳,并将时间戳插入报文中;其中,入口时钟与出口时钟同步;
入口时钟和出口时钟的同步方式,可以有多种;一般来说,时钟的同步方式分为两大类,其一,是出口时钟和入口时钟之间进行同步,即以出口时钟/入口时钟为基准,使入口时钟/出口时钟与之一致;这样同步的结果是两个时钟的绝对时间并不一定准确,但对本实施例的实现没有影响;其二,是出口时钟和入口时钟均与基准时钟进行同步,即以一个第三方的标准的时钟为基准,使出口时钟和入口时钟均与该基准时钟同步,相应的,出口时钟和入口时钟之间也 就同步了。具体的,同步的方式可以包括:gps、ntp、中国北斗卫星导航系统、原子钟、ieee1588等等任何同步的方式均可。
在记录了报文进入数据网络的时间戳后,就将该时间戳插入到报文中,这样就可以保证报文和与其对应的时间戳会同时到达报文接收装置。
s403、对插入时间戳的报文进行封装处理;
报文在原始的内容中增加了时间戳这一数据,因此,通常需要对报文重新封装;这里的重新封装,包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。再对报文进行重新封装之后,就可以顺利的将封装后的报文发送给通过数据网络发送给报文接收装置,然后由报文接收装置对报文进行处理。
s404、报文经过数据网络进行传送;
s405、获取通过数据网络传送过来的携带时间戳的报文,并根据出口时钟的时间点以及预设最大时延确定输出时刻;
接收报文是通过数据网络自然传送过来的报文;报文传送过来的时间并不是确定的,所花的时间和到达的时间都不是确定的,这是由于数据网络自身并没有一个确定的传输时间。
s406、对报文进行缓存;
s407、判断出口时钟的时间点是否满足输出时刻;如满足,则转到s408;如不满足,则转到s406;
出口时钟的时间点小于输出时刻,或者说,出口时钟的时间点与时间戳之差,小于预设最大时延,那么,就认为出口时钟的时间点不满足输出时刻;不满足的话,就对报文进行缓存。
s408,去除报文中的时间戳,并对报文重新进行封装;
在输出报文时,若时间戳是封装在报文中的,则需要将报文中的时间戳移除,然后对报文进行重新封装。重新封装包括但不限于:重新计算报文长度内容、重新计算报文的crc校验字节等。
s409,将报文向外界输出。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。