一种支持海量TCP连接的流水线仲裁方法及装置与流程

文档序号:37239012发布日期:2024-03-06 17:03阅读:12来源:国知局
一种支持海量TCP连接的流水线仲裁方法及装置与流程

本发明属于通信,具体涉及一种支持海量tcp连接的流水线仲裁方法及装置。


背景技术:

1、在当前的计算机通信协议中,tcp作为internet最基本的协议,提供了面向连接的可靠的端到端的通讯。但是在用tcp协议来处理网络通讯的过程当中,普遍的做法是使用操作系统协议栈来处理。但是这种处理会占用大量的服务器资源。为了减轻服务器的压力,tcp减负引擎技术被提出。tcp减负引擎通常集成在网络适配器中,在发送某个tcp连接的数据包的时候,需要查看该tcp连接的状态描述表,通过状态描述表中存储的发送缓存大小,发送窗口大小,拥塞窗口大小等信息,来决定当前tcp连接的数据包能否发送。

2、tcp减负引擎在维持海量的tcp连接过程中,很难保证所有的tcp连接的状态信息都存储在减负引擎内部,一般都存储在外部存储器,比如说系统内存或者减负引擎的片外存储器中。通常的做法是,在软件通知tcp减负引擎进行数据包传输后,tcp减负引擎先读取需要发送数据包的tcp连接的数据包指示符和tcp状态描述表,来决定哪个tcp连接被允许发送数据包,再对所有的被允许发送数据包的tcp连接进行仲裁,最终确定能够发送数据包的tcp连接。

3、这种实现方式的问题在于,如果当前tcp连接数目非常多,那么在每一次仲裁前,都需要读取所有需要发送数据包的tcp状态描述表,这会导致tcp减负引擎需要缓存非常多的数据包指示符和tcp状态描述表,导致消耗非常宝贵的存储器带宽资源。而且在两次仲裁间隙,引入了非常大的延迟。


技术实现思路

1、针对上述背景技术介绍中存在的问题,本发明的目的在于提供了一种大幅度的减少片外存储器的访问、提高仲裁效率的支持海量tcp连接的流水线仲裁方法及装置。

2、本发明采用的技术方案是:

3、一种支持海量tcp连接的流水线仲裁方法,其具体步骤如下:

4、s1,通过写门铃寄存器,使某个tcp连接取得仲裁资格;

5、s2,对所有需要发送数据包的tcp连接进行仲裁;

6、s3,根据仲裁结果,读取对应tcp状态描述表以及数据包指示符;

7、s4,对步骤s3中读取的数据包指示符进行有效性确认,如果数据包指示符有效,则进入步骤s5;

8、s5,对步骤s3中读取的tcp状态描述表,来确定该tcp连接数据包能否发送,如果允许发送,则进入步骤s6;

9、s6,根据数据包指示符读取该tcp连接数据包,并进行数据包发送;

10、s7,该tcp连接数据包发送结束后,更新tcp状态描述表,并删除对应的数据包指示符。本发明在仲裁之前不做tcp状态描述表的查询,而是在仲裁之后进行tcp状态描述表的读取以及查询,然后再读取以及进行数据包指示符的有效性验证,来确定仲裁模块的输出结果是有效的。tcp传输模块仅仅对经过了有效性验证的仲裁结果进行数据包发送,这种方式避免了在不知道仲裁结果的情况下,去读取tcp状态描述表,浪费宝贵的系统带宽,从而提高了仲裁效率。

11、进一步,步骤s2中仲裁的具体步骤包括:

12、s21,选择任意一种仲裁方式从多个tcp连接中选择一个作为当前可以发送数据的tcp连接并进行仲裁;

13、s22,重复步骤s21,对所有需要发送数据包的tcp连接都进行仲裁。

14、进一步,步骤s22中在所有的tcp连接都被取消仲裁资格之前,并且后续功能模块能够接收仲裁结果,可持续进行tcp连接的仲裁。

15、进一步,步骤s4中还包括:如果数据包指示符无效,则丢弃掉该仲裁结果,并且取消该tcp连接的仲裁资格。

16、进一步,步骤s4中被取消仲裁资格的tcp连接能通过写门铃寄存器为该tcp连接重新取得仲裁资格。

17、进一步,步骤s5中允许发送的发送条件包括发送缓存剩余容量、发送窗口大小、拥塞窗口大小。

18、进一步,步骤s5中还包括:如果不允许发送,则丢弃当前仲裁结果。

19、一种支持海量tcp连接的流水线仲裁装置,包括:

20、门铃寄存器,用于对其进行写操作,通知有tcp连接需要发送数据包;

21、tcp发送请求向量表,用于记录所有tcp连接是否需要发送数据包;

22、仲裁模块,用于对所有需要发送数据包的tcp连接进行仲裁并输出仲裁结果;

23、读取模块,用于根据仲裁结果进行对应的数据包指示符和tcp状态描述表的读取;

24、有效性检查模块,用于对根据仲裁结果读取的数据包指示符的有效性检查和tcp状态描述表的发送条件检查;

25、传输模块,用于对通过有效性检查的tcp连接,根据数据包指示符读取数据,结合tcp状态描述表,创建tcp数据包并予以发送;

26、后处理模块,用于在所述数据包发送之后,更新tcp状态描述表并且删除相应的数据包指示符。

27、进一步,还包括:仲裁结果缓存模块,用于缓存所有的仲裁结果;当仲裁结果缓存模块不能接收新的仲裁结果时,仲裁模块暂停仲裁,直到仲裁结果缓存模块能够重新接收新的仲裁结果,仲裁模块恢复仲裁。

28、进一步,所述有效性检查模块对于不能通过数据包指示符有效性检查的tcp连接,取消该tcp连接的仲裁资格,对于不能通过tcp状态描述表发送条件检查的仲裁结果,丢弃本次仲裁结果,但是并不取消该tcp连接的仲裁资格。

29、本发明与现有技术相比,其显著优点包括:在仲裁之前不做tcp状态描述表的查询,而是在仲裁之后进行tcp状态描述表的读取以及查询,然后再读取以及进行数据包指示符的有效性验证,来确定仲裁模块的输出结果是有效的。tcp传输模块仅仅对经过了有效性验证的仲裁结果进行数据包发送,这种方式避免了在不知道仲裁结果的情况下,去读取tcp状态描述表,浪费宝贵的系统带宽,从而提高了仲裁效率。



技术特征:

1.一种支持海量tcp连接的流水线仲裁方法,其具体步骤如下:

2.根据权利要求1所述的一种支持海量tcp连接的流水线仲裁方法,其特征在于:步骤s2中仲裁的具体步骤包括:

3.根据权利要求2所述的一种支持海量tcp连接的流水线仲裁方法,其特征在于:步骤s22中在所有的tcp连接都被取消仲裁资格之前,并且后续功能模块能够接收仲裁结果,可持续进行tcp连接的仲裁。

4.根据权利要求1所述的一种支持海量tcp连接的流水线仲裁方法,其特征在于:步骤s4中还包括:如果数据包指示符无效,则丢弃掉该仲裁结果,并且取消该tcp连接的仲裁资格。

5.根据权利要求4所述的一种支持海量tcp连接的流水线仲裁方法,其特征在于:步骤s4中被取消仲裁资格的tcp连接能通过写门铃寄存器为该tcp连接重新取得仲裁资格。

6.根据权利要求1所述的一种支持海量tcp连接的流水线仲裁方法,其特征在于:步骤s5中允许发送的发送条件包括发送缓存剩余容量、发送窗口大小、拥塞窗口大小。

7.根据权利要求6所述的一种支持海量tcp连接的流水线仲裁方法,其特征在于:步骤s5中还包括:如果不允许发送,则丢弃当前仲裁结果。

8.一种支持海量tcp连接的流水线仲裁装置,其特征在于:包括:

9.根据权利要求8所述的一种支持海量tcp连接的流水线仲裁装置,其特征在于:还包括:仲裁结果缓存模块,用于缓存所有的仲裁结果;当仲裁结果缓存模块不能接收新的仲裁结果时,仲裁模块暂停仲裁,直到仲裁结果缓存模块能够重新接收新的仲裁结果,仲裁模块恢复仲裁。

10.根据权利要求8所述的一种支持海量tcp连接的流水线仲裁装置,其特征在于:所述有效性检查模块对于不能通过数据包指示符有效性检查的tcp连接,取消该tcp连接的仲裁资格,对于不能通过tcp状态描述表发送条件检查的仲裁结果,丢弃本次仲裁结果,但是并不取消该tcp连接的仲裁资格。


技术总结
本发明提供了一种支持海量TCP连接的流水线仲裁方法及装置,其中一种支持海量TCP连接的流水线仲裁方法,其具体步骤如下:S1,通过写门铃寄存器,使某个TCP连接取得仲裁资格;S2,对所有需要发送数据包的TCP连接进行仲裁;S3,根据仲裁结果,读取对应TCP状态描述表以及数据包指示符;S4,对步骤S3中读取的数据包指示符进行有效性确认,如果数据包指示符有效,则进入步骤S5;S5,对步骤S3中读取的TCP状态描述表,来确定该TCP连接数据包能否发送,如果允许发送,则进入步骤S6;S6,根据数据包指示符读取该TCP连接数据包,并进行数据包发送;S7,该TCP连接数据包发送结束后,更新TCP状态描述表,并删除对应的数据包指示符。

技术研发人员:钱利国,张宇弘
受保护的技术使用者:北京网迅科技有限公司
技术研发日:
技术公布日:2024/3/5
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1