一种基于软硬件协同的报文定时发送方法及装置与流程

文档序号:31536270发布日期:2022-09-16 22:36阅读:154来源:国知局
一种基于软硬件协同的报文定时发送方法及装置与流程

1.本文涉及通信技术领域,尤其涉及一种基于软硬件协同的报文定时发送方法及装置。


背景技术:

2.时间敏感网络(time-sensitive networking,tsn)是由ieee802 tsn工作组提出的一组支持基于以太网的高度确定性的通信标准,它可以将周期性数据和非周期性数据部署到一个网络里传输。时间敏感网络(tsn)不仅能满足传统实时以太网的功能需求,而且在以太网基础上提供了确定性传输能力,保证数据传输具有低延迟、低抖动等特点。时间敏感网络利用精简的ieee 1588实现网络的时钟同步,被标准化为ieee 802.1as。通过时间触发的调度(ieee 802.1qbv),精确地指定多周期实时业务流在每个设备中的发送时刻点以满足工业应用指定的端到端的时延需求。
3.在一个确定性的时间敏感网络中,终端的应用层首先生成待发送的报文,然后将报文给终端的网卡,由网卡将报文通过终端的网口发出。但由于终端的网卡处理报文时间存在一定的延迟,导致报文从网口处发出的时间存在不确定性。此外,由于交换机的时间感知整形器的调度技术的特性,导致从终端的网口处发送的报文经过交换机的转发后,到达对端设备时的延迟和抖动较高。
4.现在亟需一种报文发送方法,从而解决现有技术中在一个确定新的时间敏感网络中,报文的延迟和抖动较高的问题。


技术实现要素:

5.为解决现有技术中在一个确定的时间敏感网络中,报文的延迟和抖动较高的问题,本文实施例提供了一种基于软硬件协同的报文定时发送方法及装置,能够解决现有技术中报文的延迟和抖动较高的问题。
6.本文实施例提供了一种基于软硬件协同的报文定时发送方法,所述方法包括,
7.应用层根据时间敏感网络的网络拓扑结构计算待发送报文的发送时刻,将所述待发送报文以及所述发送时刻传输至linux系统内核网络层;
8.所述linux系统内核网络层将所述待发送报文进行缓存,并根据系统实时性估算所述待发送报文的偏移值,并根据所述发送时刻以及所述偏移值将所述缓存中的所述待发送报文发送给linux系统网络驱动层;
9.所述linux系统网络驱动层在自身的存储区中缓存所述待发送报文,并向网卡发送报文读取通知;
10.所述网卡接收到所述报文读取通知后,从所述linux系统网络驱动层的存储区中读取所述待发送报文,并根据所述发送时刻将所述待发送报文发出。
11.进一步地,应用层根据时间敏感网络的网络拓扑结构计算待发送报文的发送时刻进一步包括,
12.获取所述网络拓扑结构中的交换机的门控时间表;
13.根据所述门控时间表计算所述发送时刻。
14.进一步地,根据所述门控时间表计算所述发送时刻的公式为,
[0015][0016]
其中,t
send
表示所述发送时刻,t
current
表示系统当前时间,t
base
表示时间基,即各网络节点的时间轴原点,t
cycle
表示所述门控时间表的循环周期,为向上取整符号,t
offset
表示指定预留的时间槽在所述门控时间表中的位置,t
one-way
表示所述网络拓扑结构中第一个交换机的端口的单向传输延时。
[0017]
进一步地,所述linux系统内核网络层将所述待发送报文进行缓存进一步包括,
[0018]
所述linux系统内核网络层将所述发送时刻作为关键值,根据所述关键值在红黑树数据结构中搜索所述待发送报文的插入位置,将所述待发送报文缓存在所述插入位置中。
[0019]
进一步地,所述linux系统内核网络层根据系统实时性估算所述待发送报文的偏移值,进一步包括,
[0020]
获取性能测试软件对系统的性能测试结果,所述系统至少由所述应用层、linux系统内核网络层、linux系统网络驱动层和网卡组成;
[0021]
根据所述性能测试结果,估算所述偏移值,所述偏移值大于所述待发送报文从所述linux系统网络层到达linux系统网络驱动层的时间。
[0022]
进一步地,根据所述性能测试结果,估算所述偏移值进一步包括,
[0023]
根据所述性能测试结果中每个cpu核的最大延时确定系统实时性等级;
[0024]
根据所述系统实时性等级以及偏移值列表估算所述偏移值,所述偏移值列表中存储了多个所述偏移值与多个所述系统实时性等级的对应关系。
[0025]
进一步地,所述报文读取通知包括所述待发送报文的描述符,所述描述符包括所述发送时刻以及所述待发送报文在所述存储区中的位置;
[0026]
向所述网卡发送所述报文读取通知之前,所述方法还包括,
[0027]
将所述描述符存储在所述linux系统网络驱动层的环形缓冲区中;
[0028]
所述网卡接收到所述报文读取通知后,从所述linux系统内核网络层的存储区中读取所述待发送报文,并根据所述发送时刻将所述待发送报文发出进一步包括,
[0029]
所述网卡将所述描述符存储在自身的队列中;
[0030]
确定所述队列中的描述符的发送时刻与所述网卡的系统时间相同时的目标描述符,根据所述目标描述符中的所述待发送报文在所述存储区中的位置,从所述linux系统网络驱动层的存储区中读取所述待发送报文,并发出。
[0031]
本文实施例还提供了一种基于软硬件协同的报文定时发送装置,包括,应用层、linux系统内核网络层、linux系统网络驱动层以及网卡;
[0032]
当所述应用层、linux系统内核网络层、linux系统网络驱动层以及网卡发送待发送报文时,执行上述所述的方法。
[0033]
本文实施例还提供了一种计算机设备,包括存储器、处理器、以及存储在所述存储器上的计算机程序,所所述计算机程序被所述处理器运行时,执行上述所述的应用层、
linux系统内核网络层、linux网络驱动层或网卡执行的所述方法的指令。
[0034]
本文实施例还提供了一种计算机存储介质,其上存储有计算机程序,所述计算机程序被计算机设备的处理器运行时,执行上述所述的应用层、linux系统内核网络层、linux网络驱动层或网卡执行的所述方法的指令。
[0035]
利用本文实施例,应用层根据时间敏感网络的网络拓扑结构计算待发送报文的发送时刻,网卡根据发送时刻将待发送报文发出,按照计算的发送时刻将待发送报文发送到敏感时间网络的网络拓扑中后,与敏感时间网络的网络拓扑中的交换设备的门控时间表的调度机制相配合,当该报文达到交换设备时,交换设备可以立即转发该报文,从而降低了报文在敏感时间网络的网络拓扑中传输的延迟,并且避免了交换设备对报文的缓存,从而降低了交换设备的存储空间利用率,提高了交换设备的报文转发效率。此外,linux系统内核网络层根据系统实时性估算所述待发送报文的偏移值,该偏移值考虑了待发送报文从linux系统内核网络层到达linux系统网络驱动层的传输延迟,根据所述发送时刻以及所述偏移值将所述缓存中的所述待发送报文发送给linux系统网络驱动层,使得待发送报文达到网卡时,网卡的时钟尚未到达该待发送报文的发送时刻,从而使得网卡能够精准地按照待发送报文的发送时刻将待发送报文发出,进一步地降低了报文的延迟和抖动。
附图说明
[0036]
为了更清楚地说明本文实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本文的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0037]
图1所示为本文实施例一种基于软硬件协同的报文定时发送方法的实时系统示意图;
[0038]
图2所示为本文实施例一种基于软硬件协同的报文定时发送方法的流程图;
[0039]
图3所示为本文实施例应用层根据时间敏感网络的网络拓扑结构计算待发送报文的发送时刻的过程;
[0040]
图4所示为本文实施例linux系统内核网络层根据系统实时性计算待发送报文的偏移值的过程;
[0041]
图5所示为本文实施例网卡读取待发送报文并发出的过程;
[0042]
图6所示为本文实施例一种基于软硬件协同的报文定时发送装置的结构示意图;
[0043]
图7所示为本文实施例计算机设备的结构示意图;
[0044]
图8所示为本文的一个实施例中多播发送数据包流程图。
[0045]
【附图标记说明】:
[0046]
101、报文发送装置;
[0047]
102、时间敏感网络;
[0048]
103、服务器;
[0049]
601、应用层;
[0050]
602、linux系统内核网络层;
[0051]
603、linux系统网络驱动层;
[0052]
604、网卡;
[0053]
702、计算机设备;
[0054]
704、处理设备;
[0055]
706、存储资源;
[0056]
708、驱动机构;
[0057]
710、通信总线;
[0058]
712、网络接口。
具体实施方式
[0059]
下面将结合本文实施例中的附图,对本文实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本文一部分实施例,而不是全部的实施例。基于本文中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本文保护的范围。
[0060]
需要说明的是,本文的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本文的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、装置、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
[0061]
如图1所示为本文实施例一种基于软硬件协同的报文定时发送方法的实时系统示意图,包括:报文发送装置101、时间敏感网络102、服务器103。在本文实施例中,报文发送装置101根据运行的业务生成待发送报文,然后将待发送报文发送至时间敏感网络102中,时间敏感网络102中可以包括一个或多个交换设备(例如交换机),将待发送报文转发至服务器103。
[0062]
现有技术中因为数据帧进入时间敏感网络102中交换设备后形成队列,交换设备按照队列的顺序转发数据帧,导致交换设备在转发报文过程中存在“红绿灯”状况,当数据帧到达交换设备时,若交换设备处于“红灯”状态,则数据帧需要延迟一段时间后才能被转发,导致时间敏感网络中的数据帧延迟和抖动较大。
[0063]
本文实施例所述的一种基于软硬件协同的报文定时发送方法可以应用于报文发送装置101中,解决现有技术中在一个确定的时间敏感网络中,报文的延迟和抖动较高的问题。
[0064]
具体地,本文实施例提供了一种基于软硬件协同的报文定时发送方法,能够降低报文的延迟和抖动。图2所示为本文实施例一种基于软硬件协同的报文定时发送方法的流程图。在本图中描述了报文定时发送的过程,但基于常规或者无创造性的劳动可以包括更多或者更少的操作步骤。实施例中列举的步骤顺序仅仅为众多步骤执行顺序中的一种方式,不代表唯一的执行顺序。在实际中的系统或装置产品执行时,可以按照实施例或者附图所示的方法顺序执行或者并行执行。具体的如图2所示,所述方法可以包括:
[0065]
步骤201:应用层根据时间敏感网络的网络拓扑结构计算待发送报文的发送时刻,
将所述待发送报文以及所述发送时刻传输至linux系统内核网络层;
[0066]
步骤202:所述linux系统内核网络层将所述待发送报文进行缓存,并根据系统实时性估算所述待发送报文的偏移值,并根据所述发送时刻以及所述偏移值将所述缓存中的所述待发送报文发送给linux系统网络驱动层;
[0067]
步骤203:所述linux系统网络驱动层在自身的存储区中缓存所述待发送报文,并向网卡发送报文读取通知;
[0068]
步骤204:所述网卡接收到所述报文读取通知后,从所述linux系统网络驱动层的存储区中读取所述待发送报文,并根据所述发送时刻将所述待发送报文发出。
[0069]
通过本文实施例的方法,应用层根据时间敏感网络的网络拓扑结构计算待发送报文的发送时刻,网卡根据发送时刻将待发送报文发出,按照计算的发送时刻将待发送报文发送到敏感时间网络的网络拓扑中后,与敏感时间网络的网络拓扑中的交换设备的门控时间表的调度机制相配合,当该报文达到交换设备时,交换设备可以立即转发该报文,从而降低了报文在敏感时间网络的网络拓扑中传输的延迟,并且避免了交换设备对报文的缓存,从而降低了交换设备的存储空间利用率,提高了交换设备的报文转发效率。此外,linux系统内核网络层根据系统实时性估算所述待发送报文的偏移值,该偏移值考虑了待发送报文从linux系统内核网络层到达linux系统网络驱动层的传输延迟,根据所述发送时刻以及所述偏移值将所述缓存中的所述待发送报文发送给linux系统网络驱动层,使得待发送报文达到网卡时,网卡的时钟尚未到达该待发送报文的发送时刻,从而使得网卡能够精准地按照待发送报文的发送时刻将待发送报文发出,进一步地降低了报文的延迟和抖动。
[0070]
在本文实施例中,应用层根据实际的业务情况生成待发送报文,然后根据时间敏感网络的网络拓扑结构计算待发送报文的发送时刻,该发送时刻的格式与linux系统的系统时间的格式相同,即当系统时间到达该发送时刻时,将该待发送报文发出。然后应用层将待发送报文和该待发送报文的发送时刻传输至linux系统内核网络层,具体地,应用层通过so_txtime socket选项和cmsg编程接口将其待发送报文和该待发送报文的发送时刻发送至linux系统内核网络层。
[0071]
然后linux系统内核网络层将待发送报文进行缓存,并根据系统实时性计算待发送报文的偏移值,并根据该待发送报文的发送时刻以及偏移值将缓存中的待发送报文发送给linux系统网络驱动层。可以理解为,当所述linux系统内核网络层的系统时间到达所述发送时刻txtime之前的所述偏移值delta所在的时刻时,将所述待发送报文发送给所述linux系统网络驱动层。需要说明的是,针对时间敏感网络,linux内核从4.19版本起增加了优先传输最早时间(earliest transmit time,etf)出口排队规则(queuing disciplines,qdisc)。etf提供了基于每个队列的传输时间调度。linux内核网络层按照etf的这个最早的发送时间优先出队规则在发送时刻txtime之前的偏移值delta把待发送报文从linux内核网络层的队列发送到linux网络驱动层中,因此待发送报文离开linux内核网络层的时间是txtime-delta。这相当于在linux内核层实现了一个软件定义的时间敏感网络(time-sensitive networking,tsn)。其中,可以通过现有技术中队列的方式对待发送报文进行缓存,本说明书实施例不做限制。
[0072]
因为本文实施例所述的软件定义的tsn只确保了待发送报文离开linux系统内核网络层的时间的确定性。所以需要硬件(网卡)去支持,做最后一道确定性防线。linux系统
网络驱动层接收到linux系统内核网络层发送的待发送报文之后,将待发送报文缓存在自身的存储区中,可选地,linux系统内核网络层将待发送报文缓存在一片ram中,并向网卡发送报文读取通知,当网卡接收到报文读取通知后,启动dma搬运,从linux系统网络驱动层的存储区中读取待发送报文,并根据待发送报文的发送时刻将待发送报文发出。可以理解为,当网卡的时钟到达待发送报文的发送时刻时,将待发送报文从网卡发出。
[0073]
通过在linux内核层实现的软件定义tsn和硬件(网卡)相结合的报文发送方法,实现了基于软硬件协同的报文定时发送,降低了报文的在网络传输过程中的延迟和抖动。
[0074]
需要说明的是,在linux内核的时钟与网卡时钟不同步的系统架构中,网卡在启动dma搬运前,需要通过精确时间协议(precise time protocol,ptp)使linux内核的时钟与网卡时钟同步,从而确保网卡发出待发送报文的实际时间与待发送报文的发送时刻相同。
[0075]
根据本文的一个实施例,如图3所示,应用层根据时间敏感网络的网络拓扑结构计算待发送报文的发送时刻进一步包括。
[0076]
步骤301:获取所述网络拓扑结构中的交换机的门控时间表;
[0077]
步骤302:根据所述门控时间表计算所述发送时刻。
[0078]
在本文实施例中,可以采用现有技术中的可满足性求解器(satisfiability modulo theories,smt)对时间敏感网络中每条周期性实时流的线性约束进行求解,得到交换机的门控时间表。然后根据门控时间表计算待发送报文的发送时刻。
[0079]
优选地,根据本文的一个实施例,根据所述门控时间表计算所述发送时刻的公式为(1),
[0080][0081]
其中,t
send
表示所述发送时刻,t
current
表示系统当前时间,t
base
表示时间基,即各网络节点的时间轴原点,t
cycle
表示所述门控时间表的循环周期,为向上取整符号,t
offset
表示指定预留的时间槽在所述门控时间表中的位置,t
one-way
表示所述网络拓扑结构中第一个交换机的端口的单向传输延时。
[0082]
在本文实施例中,如图8所示的多播发送数据包流程图,发布端通过该网卡给两个订阅端发送多播数据包,多播流经过两台tsn交换机组成的tsn网络,其中发送给订阅端a的数据流经过一跳交换机—交换机a,发送给订阅端b的数据流经过两跳交换机—交换机a和交换机b。假设数据流的发送周期是500us,包长为500字节,vlan pcp优先级为5,且这两条多播流的延迟需求是一样的,即500us,也就是要求这两条多播流分别同时到达订阅端a和订阅端b。所以可将两台tsn交换机的门控列表(gcl)配置如下(循环周期均为500us):
[0083]
交换机a端口2出口:0-400us:优先级0、1、2、3、4、6、7的门打开,优先级5的门关闭;400-450us:优先级5的门打开,优先级0、1、2、3、4、6、7的门关闭;450-500us:优先级0、1、2、3、4、6、7的门打开,优先级5的门关闭。
[0084]
交换机a端口3出口:0-300us:优先级0、1、2、3、4、6、7的门打开,优先级5的门关闭;300-350us:优先级5的门打开,优先级0、1、2、3、4、6、7的门关闭;350-500us:优先级0、1、2、3、4、6、7的门打开,优先级5的门关闭。
[0085]
交换机b端口4出口:0-400us:优先级0、1、2、3、4、6、7的门打开,优先级5的门关闭;400-450us:优先级5的门打开,优先级0、1、2、3、4、6、7的门关闭;450-500us:优先级0、1、2、
3、4、6、7的门打开,优先级5的门关闭。
[0086]
综上可得,多播流a会在端口2多缓存一段时间,直到周期内t1=400us时发送给订阅端a,多播流b会在t0=300us时由端口3发送给交换机b,然后在t1=400us时由交换机b的端口4发送给订阅端b。因此发送端从tsn网卡处发送多播流的时刻必须小于t0。
[0087]
计算每个数据包的发送时刻t
send
需要知道时间基t
base
,gcl循环周期t
cycle
(即500us)和它自己的偏移时间t
offset
,t
base
对于所有网络节点都是一样的,就是时间轴上的原点,t
offset
表示指定预留的时间槽在整个时间表中的位置,也就是上面配置的t0。此外,为了精确,还需要知道发布端到网络中第一个交换机即tsn交换机a的端口的单向传输延迟t
one-way
,知道这个值就可以提前发送报文,因此可以准时到达交换机,该值可以通过时钟同步ptp来获取到,实际上直接通过linuxptp应用输出得到,应用层获取当前的系统时间t
current
,通过本说明书公式(1)计算数据包的发送时刻t
send

[0088]
根据本文的一个实施例,为了在;linux系统内核网络层加快缓存和读取待发送报文的速度,步骤202中所述linux系统内核网络层将所述待发送报文进行缓存进一步包括,
[0089]
所述linux系统内核网络层将所述发送时刻作为关键值,根据所述关键值在红黑树数据结构中搜索所述待发送报文的插入位置,将所述待发送报文缓存在所述插入位置中。
[0090]
在本文实施例中,该红黑树数据结构的非叶节点作为内部节点,其中每一个内部节点与每个待发送报文一一对应,内部节点的待发送报文存储在linux系统内核网络层的存储区内,存储节点关键值(即待发送报文的发送时刻txtime)、指向该节点相应的父节点的指针、指向左子树的指针、指向右子树的指针以及本节点的颜色;在各个内部节点之间,节点按照关键值排序,以根节点为基准,节点关键值比根节点大的内部节点代表发送时刻比较晚的待发送报文,位于根节点的左子树中,反之则位于根节点的右子树中,按照红黑树树体调整算法,随着内部节点的插入和删除,各节点的位置也会自适应地变动,从而完成待发送报文的缓存。
[0091]
在读取待发送报文时,根据查询的待发送报文的发送时刻txtime在红黑树数据结构中进行查找,首先比较查询的待发送报文的发送时刻txtime和红黑树数据结构的根节点的大小,若大于,则在根节点的左子树中进行查找,若大于,则在根节点的右子树中查找。利用红黑树数据结构缓存待发送报文,相比于采用队列进行缓存的方法,读取待发送报文时,每次仅需要遍历一半数据结构,从而提高了读取待发送报文的效率。
[0092]
根据本文的一个实施例,如图4所示,所述linux系统内核网络层根据系统实时性估算所述待发送报文的偏移值,进一步包括,
[0093]
步骤401:获取性能测试软件对系统的性能测试结果,所述系统至少由所述应用层、linux系统内核网络层、linux系统网络驱动层和网卡组成;
[0094]
步骤402:根据所述性能测试结果,估算所述偏移值,所述偏移值大于所述待发送报文从所述linux系统网络层到达linux系统网络驱动层的时间。
[0095]
在本文实施例中,首先通过性能测试软件对系统性能进行测试,具体地,可以通过性能测试软件使得系统的应用层产生批量的待发送报文,然后应用层将待发送报文发送至linux系统内核网络层进行缓存,然后linux系统内核网络层将缓存的待发送报文发送至linux系统网络驱动层,性能测试软件记录批量的待发送报文从内核网络层发送至linux系
统网络驱动层的时间,将记录的时间作为系统的性能测试结果,然后再根据性能测试结果计算偏移值,该偏移值应当大于系统的性能测试结果中记录的最大的时间,从而保证在发送时刻与偏移值之前,待发送报文可以到达linux系统网络驱动层。
[0096]
优选地,根据本文的一个实施例,根据所述性能测试结果,估算所述偏移值进一步包括,
[0097]
根据所述性能测试结果中每个cpu核的最大延时确定系统实时性等级;
[0098]
根据所述系统实时性等级以及偏移值列表估算所述偏移值,所述偏移值列表中存储了多个所述偏移值与多个所述系统实时性等级的对应关系。
[0099]
在本文实施例中,linux系统为实时操作系统,若在具体实施时的linux系统并非实施操作系统,可以通过rt-preempt patch实时补丁使linux内核具有实时性。通过运行cyclictest测试程序来验证linux的实时性。
[0100]
例如,cyclictest测试程序的测试结果中的每个cpu核的最大延时(max)均小于预定值(例如50或100),则可以确定该预定值对应的系统实时性等级;然后再根据系统实时性等级以及偏移值列表估算所述偏移值,其中,偏移值列表中存储了多个偏移值与多个系统实时性等级的对应关系。
[0101]
示例性地,结合应用层程序,本实施例的周期为500us,算出来的发送时间的偏移值在200us左右,而上层应用程序发送报文的时间基本上是在上个周期的中间部分(这个不确定,由线程定时苏醒有关,也与实时性有关),也就是说从上层应用发送报文的时间到底层网卡发送报文的时间大概有400us,所以这个delta值配置成200000,即200us最为妥当。既给了内核到网卡这一段数据路径足够的时间,也保证了报文从上层应用到内核队列时不会逾期超时。
[0102]
根据本文的一个实施例,步骤203中所述的报文读取通知包括所述待发送报文的描述符,所述描述符包括所述发送时刻以及所述待发送报文在所述存储区中的位置;
[0103]
向所述网卡发送所述报文读取通知之前,所述方法还包括,
[0104]
将所述描述符存储在所述linux系统网络驱动层的环形缓冲区中;
[0105]
如图5所示,所述网卡接收到所述报文读取通知后,从所述linux系统内核网络层的存储区中读取所述待发送报文,并根据所述发送时刻将所述待发送报文发出进一步包括,
[0106]
步骤501:所述网卡将所述描述符存储在自身的队列中;
[0107]
步骤502:确定所述队列中的描述符的发送时刻与所述网卡的系统时间相同时的目标描述符,根据所述目标描述符中的所述待发送报文在所述存储区中的位置,从所述linux系统网络驱动层的存储区中读取所述待发送报文,并发出。
[0108]
在本文实施例中,描述符包括待发送报文在linux系统网络驱动层中的位置以及该待发送报文的发送时刻,该位置可以是linux系统网络驱动层的在存储区中存储该待发送报文的指针,然后将描述符存储在linux系统网络驱动层的环形缓冲区中,当linux系统网络驱动层的环形缓冲区中增加新的描述符时,通过axi lite向网卡发送报文的读取通知,告知网卡从环形缓冲区中读取增加的新的描述符,网卡读取到新的描述符之后,将读取到的描述符存储在自身的队列中,然后确定队列中的描述符的发送时刻与网卡的系统时间相同时的目标描述符,根据确定的目标描述符中待发送报文在linux系统网络驱动层的存
储区中的位置,然后启动dma搬运,根据待发送报文在linux系统网络驱动层的存储区中的位置从linux系统网络驱动层的存储区中读取该待发送报文,将待发送报文从linux系统网络驱动层的存储区中搬运到网卡的临时存储区中,并经过硬件校验发送到时间敏感网络中,当该报文到达时间敏感网络的网络拓扑中的交换机时,交换设备可以立即转发该报文,从而降低了报文在敏感时间网络的网络拓扑中传输的延迟,并且避免了交换设备对报文的缓存,从而降低了交换设备的存储空间利用率,提高了交换设备的报文转发效率。
[0109]
基于同一发明构思,本说明书实施例还提供了一种基于软硬件协同的报文定时发送装置,如图6所示,包括应用层601、linux系统内核网络层602、linux系统网络驱动层603以及网卡604:
[0110]
当所述应用层601、linux系统内核网络层602、linux系统网络驱动层603以及网卡604发送待发送报文时,执行上述所述的方法。
[0111]
由于上述装置解决问题的原理与上述方法相似,因此上述装置的实施可以参见上述方法的实施,重复之处不再赘述。
[0112]
如图7所示为本文实施例计算机设备的结构示意图,本文中的应用层、linux系统内核网络层、linux网络驱动层或网卡可以为本实施例中的计算机设备,执行上述本文的方法。计算机设备702可以包括一个或多个处理设备704,诸如一个或多个中央处理单元(cpu),每个处理单元可以实现一个或多个硬件线程。计算机设备702还可以包括任何存储资源706,其用于存储诸如代码、设置、数据等之类的任何种类的信息。非限制性的,比如,存储资源706可以包括以下任一项或多种组合:任何类型的ram,任何类型的rom,闪存设备,硬盘,光盘等。更一般地,任何存储资源都可以使用任何技术来存储信息。进一步地,任何存储资源可以提供信息的易失性或非易失性保留。进一步地,任何存储资源可以表示计算机设备702的固定或可移除部件。在一种情况下,当处理设备704执行被存储在任何存储资源或存储资源的组合中的相关联的指令时,计算机设备702可以执行相关联指令的任一操作。计算机设备702还包括用于与任何存储资源交互的一个或多个驱动机构708,诸如晶振等,为处理设备提供工作的时钟信号。
[0113]
计算机设备702还可以包括一个或多个网络接口712,例如can接收模块,其用于接收控制器发送的数据。一个或多个通信总线710将上文所描述的部件耦合在一起。
[0114]
对应于图2-图5中的方法,本文实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行时执行所述决策引擎的优化方法的步骤。
[0115]
本文实施例还提供一种计算机可读指令,其中当处理器执行所述指令时,其中的程序使得处理器执行如图2-图5所示的方法。
[0116]
应理解,在本文的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本文实施例的实施过程构成任何限定。
[0117]
还应理解,在本文实施例中,术语“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,a和/或b,可以表示:单独存在a,同时存在a和b,单独存在b这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
[0118]
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单
元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本文的范围。
[0119]
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
[0120]
在本文所提供的几个实施例中,应该理解到,所揭露的系统、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
[0121]
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本文实施例方案的目的。
[0122]
另外,在本文各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
[0123]
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本文的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本文各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、磁碟或者光盘等各种可以存储程序代码的介质。
[0124]
本文中应用了具体实施例对本文的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本文的方法及其核心思想;同时,对于本领域的一般技术人员,依据本文的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本文的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1