本发明属于通信,具体涉及一种支持海量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连接的仲裁资格。