一种基于空间缓存的CPU收发包调度装置及方法与流程

文档序号:34313909发布日期:2023-05-31 23:01阅读:37来源:国知局
一种基于空间缓存的CPU收发包调度装置及方法与流程

本发明涉及网络通信,尤其涉及一种基于空间缓存的cpu收发包调度装置及方法。


背景技术:

1、随着信息技术与网络通信的快速发展,人们对于数据的传输速率和可靠性都有着较高的需求,网络设备通常需要处理大量的数据包,在处理过程中经常会出现丢弃处理的情况,这种情况在高速传输的情况下尤为严重。这是因为在当前的三层以太网交换设备中,报文的二层交换和三层路由主要由交换芯片和网络处理器完成,cpu基本上不参与交换和路由过程,主要完成管理和控制交换芯片的功能。而随着以太网相关技术的发展,交换芯片和网络处理器的处理能力不断被提升;相比之下,数据交换设备中cpu处理性能的提升程度远远不及交换芯片和网络处理器。

2、因此,做好cpu和交换芯片以及网络处理器接口的缓冲管理、队列调度以及流量监管,合理利用cpu资源,是保证数据交换设备安全、稳定运行的前提,也是目前及将来数据交换设备开发的重要课题。


技术实现思路

1、本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于空间缓存的cpu收发包调度装置及方法,通过信用调度方式逐级反压,同时利用cpu的缓存空间,控制调度其中的收发队列,提高了数据的传输质量。

2、为了解决上述技术问题,本发明采用的技术方案为:

3、一种基于空间缓存的cpu收发包调度装置,包括设置于cpu中的发送队列调度模块、接收队列调度模块、指针管理模块、发送服务质量管理模块,还包括cpu的共享缓存,其中:

4、发送队列调度模块用于调度目标虚拟接口的待发送队列,根据读写指针值计算目标虚拟接口的第一缓存空间的信用,若信用不足则停止调度待发送队列,若信用足够则将待发送队列的数据加入第一缓存空间;

5、接收队列调度模块用于调度目标虚拟接口的待接收队列,根据读写指针值计算目标虚拟接口的第二缓存空间的信用,若信用不足则停止调度待接收队列,若信用足够则将待接收队列的数据加入第二缓存空间;

6、指针管理模块用于维护各第一缓存空间和第二缓存空间的读指针和写指针;

7、发送服务质量管理模块用于从各源虚拟接口的第一缓存空间获取数据,并分别发送给对应的目的虚拟接口,若目的虚拟接口的第二缓存空间的信用不足则将获取的数据缓存在对应的第三缓存空间,第三缓存空间的缓存数据量达到给定的信用值时,通知发送队列调度模块停止调度待发送队列;

8、共享缓存用于提供第一缓存空间、第二缓存空间和第三缓存空间,所述第一缓存空间、第二缓存空间和第三缓存空间均与各虚拟接口一一对应。

9、进一步的,所述发送服务质量管理模块还用于存在指向同一目的虚拟接口的多个源虚拟接口时,指定其中一个源虚拟接口,并将指定的源虚拟接口以外的其他源虚拟接口的数据缓存在对应的第三缓存空间中,将指定的源虚拟接口的数据发给目的虚拟接口之后,依次重新指定源虚拟接口,并将指定的源虚拟接口的第三缓存空间中的数据发给目的虚拟接口,直到所有源虚拟接口的数据均发给目的虚拟接口。

10、进一步的,停止调度待接收队列时,接收队列调度模块停止从发送服务质量管理模块获取待接收队列的数据,同时,接收队列调度模块向发送服务质量管理模块发送反压信号,发送服务质量管理模块收到反压信号后将获取的数据缓存在对应的第三缓存空间中,并等待反压信号结束。

11、进一步的,通知发送队列调度模块停止调度待发送队列时,发送服务质量管理模块停止从对应的第一缓存空间获取数据,同时,发送服务质量管理模块向发送队列调度模块发送反压信号,发送队列调度模块收到反压信号后,停止从对应的虚拟接口获取数据,并向对应的虚拟接口发送反压信号,收到反压信号的虚拟接口停止发送数据,并等待反压信号结束。

12、进一步的,停止调度待发送队列时,发送队列调度模块停止从对应的虚拟接口获取数据,并向对应的虚拟接口发送反压信号,收到反压信号的虚拟接口停止发送数据,并等待反压信号结束。

13、本发明还提出一种基于空间缓存的cpu收发包调度方法,应用于任一所述的基于空间缓存的cpu收发包调度装置,所述方法包括cpu发送数据的步骤,具体包括:

14、s1)指针管理模块读取目标源虚拟接口的第一缓存空间的读指针和写指针,获取待传输数据报文的长度,发送队列调度模块根据读指针和写指针的值计算所述第一缓存空间的信用,若第一缓存空间的信用足够,则将待传输数据报文作为待发送队列的数据写入第一缓存空间;

15、s2)发送服务质量管理模块从第一缓存空间获取待发送队列的数据,并保存在目标源虚拟接口对应的第三缓存空间中,若对应的目的虚拟接口可接收数据,将第三缓存空间的数据发送给对应的目的虚拟接口。

16、进一步的,步骤s1)中包括判断第一缓存空间的信用是否足够的步骤,具体包括:

17、s11)计算读指针和写指针的值之差,然后用第一缓冲区的长度减去读指针和写指针的值之差,得到第一缓存空间的信用;

18、s12)若第一缓存空间的信用大于待传输数据报文的长度,则第一缓存空间的信用足够,若第一缓存空间的信用小于待传输数据报文的长度,则第一缓存空间的信用不足,发送队列调度模块停止调度待发送队列。

19、进一步的,步骤s2)中第三缓存空间采用fifo,步骤s2)具体包括:

20、s21)将第一缓存空间的地址转换成物理地址,将待传输数据报文拆分成小块,以固定字节为单位对齐;

21、s22)根据小块个数启动对应次数的读事务,将第一缓存空间中的数据读入fifo中;

22、s23)若在指定时间内未收到接收队列调度模块的反压信号,或收到的反压信号与目的虚拟接口无关,将fifo中的数据发送给目的虚拟接口。

23、进一步的,所述方法还包括cpu接收数据的步骤,具体包括:

24、r1)发送服务质量管理模块从源虚拟接口的第三缓存空间中接收到数据报文的数据,并保存到目的虚拟接口对应第三缓存空间中;

25、r2)发送服务质量管理模块获取接收的数据个数,指针管理模块读取目的虚拟接口的第二缓存空间的读指针和写指针,若第二缓存空间的信用足够,则将目的虚拟接口对应第三缓存空间中的数据报文作为待接收队列的数据写入对应的第二缓存空间中。

26、进一步的,步骤r2)中第三缓存空间采用fifo,步骤r2)包括以下步骤:

27、r21)将目的虚拟接口对应fifo中的数据报文拆分为小块,并按固定字节边界对齐;

28、r22)根据小块的个数启动对应次数的写事务,将目的虚拟接口对应fifo中的数据写进第二缓存空间。

29、和现有技术相比,本发明具有下述优点:

30、1、本发明通过使用共享缓存空间,采用分别为虚拟接口分配空间的形式,并以队列形式将所有虚拟接口的队列数据存储于同一空间中,节省了大量资源,这种方式减少了使用复杂度,满足单个缓存空间实现多接口、多队列处理的需求;

31、2、本发明使用信用机制管理每个队列的缓存,通过对比读写指针的方式确定数据数量,明确每个队列的传输请求,根据信用值判断是否调度各个队列,此方式实现简单,每个队列都可以得到有效的管理;

32、3、本发明对于网络数据传输质量有显著提高,在队列信用满之后,停止调度对应队列,从而实现逐级反压,保证了在发送过程中不会出现数据包丢失的情况,确保了数据的可靠性,对数据的传输速率也不会产生较大影响,在停止调度某个队列后cpu能够空闲出算力去处理其他信用足够的队列,在保证数据传输效率的情况下,一定程度上提高了数据的传输质量。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1