通信设备

阅读:134发布:2024-01-17

专利汇可以提供通信设备专利检索,专利查询,专利分析的服务。并且本 发明 相关于一种网络通信设备150,其包括:用于接收数据单元的装置,所述数据单元包括净荷数据;用于将数据单元转发到下一网络 位置 的装置;用于检查数据单元的净荷数据的装置;以及用于根据数据单元检查的结果,在整个数据单元被转发之前 修改 所述数据单元,使得修改后的数据单元一旦被转发其后续处理即被改变。本发明也扩展到通信系统和相应的监控网络通信的方法。,下面是通信设备专利的具体信息内容。

1.一种网络通信设备,其特征在于,包括:
用于接收数据单元的装置,所述数据单元包括净荷数据;
用于将所述数据单元转发到下一网络位置的装置;
用于检查数据单元的净荷数据的装置;以及
用于根据所述数据单元检查的结果,在整个数据单元被转发之前修改所述数据单元的装置,使得修改后的数据单元一旦被转发其后续处理即被改变。
2.根据权利要求1所述的设备,其特征在于,所述数据单元还包括控制信息,所述修改装置用于修改所述控制信息。
3.根据权利要求2所述的设备,其特征在于,所述控制信息包括源和/或目的地址信息,序列信息,以及错误检测信息中的至少一个或者多个。
4.根据权利要求2或者3所述的设备,其特征在于,所述修改装置用于破坏和/或重写至少一部分控制信息,使得所述数据单元后续被丢掉。
5.根据前述任意权利要求所述的设备,其特征在于,所述控制信息包括头部和/或尾部信息,优选地包括一个或者多个如下网络协议信息:传输控制协议TCP,用户数据报协议UDP,IP,媒体访问控制MAC,以及错误检测信息。
6.根据前述任意权利要求所述的设备,其特征在于,所述修改装置用于在整个尾部部分被转发之前,优选地在所述数据单元的其余部分被转发之后,修改所述数据单元的尾部部分。
7.根据权利要求6所述的设备,其特征在于,所述尾部部分包括控制信息。
8.根据权利要求6或者7所述的设备,其特征在于,所述修改装置用于重写尾部校验码或者循环冗余校验CRC中至少一部分,以及优选地,所述修改装置用于破坏所述数据单元的尾部部分中的控制信息。
9.根据前述任一项权利要求所述的设备,其特征在于,所述修改装置用于在转发所述数据单元时,修改所述数据单元。
10.根据前述任一项权利要求所述的设备,其特征在于,所述修改装置用于破坏和/或修改所述净荷数据。
11.根据前述任一项权利要求所述的设备,其特征在于,还包括用于为后续向前传输来存储数据单元的装置。
12.根据权利要求11所述的设备,其特征在于,所述存储装置用于当数据单元正在被转发时缓存数据单元,所述数据单元已被修改以保证它不会到达它的预期接收方和/或被它的预期接收方丢掉。
13.根据权利要求12所述的设备,其特征在于,所述修改装置用于在被缓存的数据单元后续向前传输之前,修改所述被缓存的数据单元的所述净荷数据,使得避免对修改后数据单元的重传请求
14.根据权利要求13所述的设备,其特征在于,所述修改装置用于修改被缓存数据单元的净荷数据,优选地在应用层,使得所述预期接收方能处理所述后续传输的数据单元。
15.根据前述任一项权利要求所述的设备,其特征在于,还包括:用于延迟所述数据单元转发的装置,使得检查装置的输出与所述数据单元的最后尾部部分的转发同步,以保证在所述数据单元被完全转发之前,能够根据所述检查装置的输出修改所述数据单元的尾部部分。
16.根据前述任一项权利要求所述的设备,其特征在于,所述修改装置用于一旦获得来自所述检查装置的输出,即修改所述数据单元。
17.根据前述任一项权利要求所述的设备,其特征在于,还包括:用于确定数据单元是否非顺序地接收的装置,以及,所述转发装置用于以正确的顺序转发所述数据单元。
18.根据任一前述权利要求17所述的设备,其特征在于,还包括:为了后续所述检查装置的按顺序检查,用于缓存非顺序接收的数据单元的装置。
19.根据权利要求18所述的设备,其特征在于,所述接收装置用于检测丢失数据单元的接收,以及,所述缓存用于响应于此而释放用于检查的非顺序的数据单元。
20.根据前述任一权利要求所述的设备,其特征在于,还包括:用于为了后续恢复和向前传输,存储净荷数据的装置。
21.根据前述任一权利要求所述的设备,其特征在于,所述检查装置用于在所述数据单元被转发时,检查所述净荷数据和/或所述控制信息。
22.根据前述任一权利要求所述的设备,其特征在于,所述用于检查所述数据单元的净荷数据的装置用于执行所述数据单元的深度包检测,优选地在所述数据单元的应用层。
23.根据前述任一权利要求所述的设备,其特征在于,所述数据单元既被传送到所述转发装置也被传送到所述检查装置。
24.根据前述任一权利要求所述的设备,其特征在于,在所述检查装置执行所述数据单元的检查时,所述数据单元也在步进地通过所述设备,优选地采用字节式地。
25.根据权利要求21至24任一项所述的设备,其特征在于,所述检查装置用于在所述数据单元被转发时,解析所述数据单元以提取用于检测的所述净荷数据和/或控制信息。
26.根据权利要求25所述的设备,其特征在于,所述检查装置用于根据对所述控制信息的检查,确定如下中的至少一个或者多个:会话信息,序列信息,接收方标识,发送方标识,状态信息以及端口信息。
27.根据权利要求26所述的设备,其特征在于,所述修改装置用于根据所述控制信息修改所述数据单元。
28.根据前述任一权利要求所述的设备,其特征在于,所述净荷数据采用指令或者请求的形式,以及所述检查装置用于确定所述指令或者请求的有效性和/或可接受性。
29.根据权利要求28所述的设备,其特征在于,所述指令或者请求是金融交易指令。
30.根据权利要求28或者29所述的设备,其特征在于,所述修改装置用于在所述净荷数据中的指令或者请求无效或者不可接受时修改所述数据单元。
31.根据前述任一权利要求所述的设备,其特征在于,所述数据单元是协议数据单元,包括如下中的至少一种:数据报,片段,封包和
32.根据前述任一权利要求所述的设备,其特征在于,所述装置采用可编程逻辑设备的形式,优选地采用现场可编程阵列FPGA者特定用途集成电路ASIC的形式。
33.根据前述任一权利要求所述的设备,其特征在于,所述设备的功能由硬件执行。
34.根据前述任一权利要求所述的设备,其特征在于,还包括:传输控制协议TCP卸载引擎。
35. 根据前述任一权利要求所述的设备,其特征在于,还包括:
用于识别与数据单元相关的会话的装置;以及
所述检查装置用于比较所述数据单元和与所述会话相关的参数信息,从而确定所述数据单元的有效性和/或可接受性。
36.一种网络通信设备,其特征在于,包括:
用于接收数据单元的装置,所述数据单元包括控制信息和净荷数据;
用于转发所述数据单元到下一网络位置的装置;
用于识别与数据单元相关的会话的装置;以及
用于检查所述数据单元,以比较所述数据单元和与所述会话相关的参数信息,从而确定所述数据单元的有效性和/或可接受性的装置。
37.根据权利要求35或者36所述的设备,其特征在于,所述会话是网络会话。
38.根据权利要求35-37任一项所述的设备,其特征在于,所述识别装置用于根据所述数据单元控制信息识别所述会话,优选地根据存储在所述数据单元头部中的控制信息。
39.根据权利要求35-38任一项所述的设备,其特征在于,所述会话是至少一对网络实体之间的通信会话,所述数据单元被所述通信设备拦截。
40.根据权利要求39所述的设备,其特征在于,还包括:用于识别会话的套接字引擎。
41.根据权利要求39或者40所述的设备,其特征在于,所述参数信息包括与所述网络实体之间的特定通信会话相关的第一信息,以及与所述网络实体之间的所有通信相关的第二信息。
42.根据权利要求41所述的设备,其特征在于,所述第二信息与金融交易参数相关,例如仓位,数量或者限制。
43.根据权利要求41或者42所述的设备,其特征在于,所述参数信息随着所述通信实体之间的每次通信交互而更新。
44.根据权利要求43所述的设备,其特征在于,所述参数信息根据所述网络实体之间通信的每个数据单元的净荷数据而被更新。
45.根据权利要求43或者44所述的设备,其特征在于,所述参数信息是已经从所述装置转发的数据单元的累积记录,优选地不包含修改。
46.根据权利要求35-45任一项所述的设备,其特征在于,所述检查装置用于将所述参数信息与所述控制信息和/或所述净荷数据进行比较,优选地一解析出所述控制信息和/或所述净荷数据就进行比较。
47.根据权利要求35-46任一项所述的设备,其特征在于,所述参数信息存储在所述设备上,优选地以至少一个哈希表的形式。
48.根据权利要求35-47任一项所述的设备,其特征在于,还包括:用于在不存在与接收的数据单元相关的网络会话的情况下,输出与新的网络会话关联的新信息的装置。
49.根据权利要求35-48任一项所述的设备,其特征在于,还包括:用于在转发整个数据单元之前,根据所述数据单元检查的结果修改所述数据单元的装置,使得修改后的数据单元一旦被转发其后续处理即被改变。
50.一种通信系统,其特征在于,包括:
第一网络实体,优选地采用服务器的形式;
第二网络实体,优选地采用客户端的形式,其通过通信网络连接所述第一网络实体;以及
中间网络实体,其包括根据权利要求1至49任一项所述的通信设备,用于拦截所述第一网络实体与第二网络实体间的通信。
51.根据权利要求50所述的通信系统,其特征在于,所述第一网络实体和第二网络实体通过通信协议(可选地为TCP/IP)彼此通信,从而在彼此之间传输所述数据单元。
52.根据权利要求50或者51所述的通信系统,其特征在于,所述第一网络实体作为高频交易系统,所述第二网络实体作为交易所,并且所述中间网络实体作为中间商,用于监控在所述交易系统和所述交易所之间的交易活动。
53.一种监控网络通信的方法,其特征在于,包括:
接收数据单元,所述数据单元包括净荷数据;
转发所述数据单元到下一网络位置;
检查所述数据单元的净荷数据;以及
在整个所述数据单元被转发之前,根据所述数据单元检查的结果修改所述数据单元,使得修改后的数据单元一旦被转发其后续处理即被改变。
54.根据权利要求53所述的方法,其特征在于,还包括:识别与所述数据单元相关的网络会话;以及比较所述数据单元和与其相关的会话的参数信息,从而确定所述数据单元的有效性和/或可接受性。
55.一种通信设备,其特征在于,大体上如本文所描述和/或参考附图示出。
56.一种通信系统,其特征在于,大体上如本文所描述和/或参考附图示出。
57.一种监控网络通信的方法,其特征在于,大体上如本文所描述和/或参考附图示出。

说明书全文

通信设备

技术领域

[0001] 本发明涉及一种网络通信设备。该发明也涉及一种监控网络通信的方法和一种通信系统。

背景技术

[0002] 高性能计算系统通常要求低的处理和网络时延,尤其在信号和通信情报,网络安全,数据挖掘,金融建模和交易,医疗影像和研究,科学建模和地震分析等领域。在自动化的证券交易中,每秒产生大量多次的交易订单,对高频率的交易者来说减少作用于金融数据的反应时间是很重要的。在通过信息优势开发市场的低效方面,接收、处理和操作需要的时间是至关重要的。
[0003] 在证券交易中,由中间商通过网络来访问交易所的金融数据。金融数据被进一步分发给该中间商的客户,从而形成网络使得客户能访问来自交易所的数据和发布交易订单。
[0004] 信号时延的一次要的限制因素被光路制约,光路是制约数据走完主机和客户端之间的距离所需要的时间的一个因素。传统上,中间商寻求将他们的时延最小化作为对客户端有竞争的服务的一部分。自然地,中间商将最小化它们相对于交易所服务器的距离和因此数据必须经过的距离。而网络的其他方面总是产生对时延更大的威胁。这些也试图被减少,但通常以很大的代价。除了重新路由到交易所,来自客户端的交易订单的处理也采取了中间商侧险管理和监管的形式。
[0005] 用于客户的直接市场准入(Direct Market Access ,DMA)模式通过最小化中间商侧处理来允许信息的低时延量。尽管如此,中间商必须遵守基本的风险监控操作,因此需要对交易订单进行某种程度的处理。这种处理的特定形式通常采用过滤不符合中间商的限制或者其他约束的客户端订单的形式,这个处理引起了时延。所属领域状态的功能性限制已不局限于金融领域。

发明内容

[0006] 本发明的一个目的是至少减轻前面提及的一些问题。
[0007] 根据本发明的一个方面,提供一种网络通信设备,其包括用于接收数据单元的装置(例如接收器,输入端口或者网络接口),该数据单元包括控制信息和净荷数据;用于根据控制信息将数据单元转发到下一网络位置的装置(例如发送器,输出端口或者第一模块);用于检查净荷数据的装置(例如处理器或者标识模块);以及用于根据净荷数据检查的结果,在数据单元被转发之前或者在数据被转发或者输出时,修改数据单元的全部或部分的装置(例如输出控制模块),使得修改后的数据单元一旦被转发其后续处理即被改变。
[0008] 根据本发明的另一个方面,提供一种网络通信设备,其包括:用于接收数据单元的装置(例如接收器,输入端口或者网络接口模块),数据单元包括净荷数据;用于转发数据单元到下一网络位置的装置(例如发送器,输出端口或者第一模块);用于检查数据单元的净荷数据的装置(例如处理器或者标识模块);以及用于在整个数据单元被转发之前,根据数据单元检查的结果,修改数据单元的装置(例如输出控制模块),使得修改后的数据单元一旦被转发其后续处理即被改变。
[0009] 优选地,数据单元还包括控制信息,并且修改装置用于修改控制信息。
[0010] 优选地,控制信息包括源和/或目的地址信息,序列信息,以及错误检测信息中的至少一个或者多个。
[0011] 优选地,修改装置用于破坏和/或重写至少一部分控制信息,使得数据单元后续被丢掉。
[0012] 优选地,控制信息包括头部和/或尾部信息,优选地包括一个或者多个如下网络协议信息:TCP(传输控制协议,Transmission Control Protocol),UDP(用户数据报协议,User Datagram Protocol), IP, MAC(media access control,媒体访问控制),以及错误检测信息。
[0013] 优选地,修改装置用于在整个尾部部分被转发之前,以及优选地在数据单元的其余部分被转发之后,修改数据单元的尾部部分。优选地,尾部部分包括控制信息。
[0014] 优选的,修改装置用于重写尾部校验码或者循环冗余校验(CRC)中至少一部分,以及优选地,修改装置用于破坏数据单元的尾部部分中的控制信息。
[0015] 优选地,修改装置用于在转发数据单元时,修改数据单元。优选地,修改装置用于破坏和/或修改净荷数据。
[0016] 优选地,设备还包括用于为后续向前传输来存储数据单元的装置。
[0017] 优选地,存储装置用于在正在转发数据单元时缓存数据单元,数据单元已被修改以保证它不会到达它的预期接收方和/或被它的预期接收方丢掉。
[0018] 优选地,修改装置用于在被缓存的数据单元后续向前传输之前,修改被缓存的数据单元的净荷数据,使得避免对修改后数据单元的重传请求
[0019] 优选地,修改装置用于修改被缓存数据单元的净荷数据,优选地在应用层,使得预期接收方能处理后续传输的数据单元。
[0020] 优选地,所述设备包括:用于延迟数据单元转发的装置,使得检查装置的输出与数据单元的最后尾部部分的转发同步,以保证在数据单元被完全转发之前,能够根据检查装置的输出修改数据单元的尾部部分。
[0021] 优选地,修改装置用于一旦获得来自检查装置的输出,即修改数据单元。
[0022] 优选地,所述设备还包括:用于确定数据单元是否非顺序地接收的装置,以及,转发装置用于以正确的顺序转发数据单元。
[0023] 优选地,所述设备还包括:为了后续检查装置的按顺序检查,用于缓存非顺序接收的数据单元的装置。
[0024] 优选地,接收装置用于检测丢失数据单元的接收,以及,缓存用于响应于此而释放用于检查的非顺序的数据单元。
[0025] 优选地,所述设备还包括:用于为了后续恢复和向前传输,存储净荷数据的装置。
[0026] 优选地,检查装置用于在数据单元被转发时,检查净荷数据和/或控制信息。
[0027] 优选地,用于检查数据单元的净荷数据的装置用于执行数据单元的深度包检测(deep-packet inspection),优选地在数据单元的应用层。
[0028] 优选地,数据单元既被传送到转发装置也被传送到检查装置。
[0029] 优选地,在检查装置执行数据单元的检查时,数据单元也在持续地被转发。优选的,在检查装置执行数据单元的检查时,数据单元也在步进地通过设备,优选地采用字节式地。
[0030] 优选地,检查装置用于在数据单元被转发时,解析数据单元以提取用于检查的净荷数据和/或控制信息。
[0031] 优选地,检查装置用于根据对控制信息的检查,确定如下中的至少一个或者多个:会话信息,序列信息,接收方标识,发送方标识,状态信息以及端口信息。
[0032] 优选地,修改装置用于根据控制信息修改数据单元。
[0033] 优选地,净荷数据采用指令或者请求的形式,以及检查装置用于确定所述指令或者请求的有效性和/或可接受性。
[0034] 优选地,所述指令或者请求是金融交易指令。
[0035] 优选地,修改装置用于在净荷数据中的指令或者请求无效或者不可接受时修改数据单元。
[0036] 优选地,所述数据单元是协议数据单元,包括如下中的至少一种:数据报,片段,封包和
[0037] 优选地,所述设备采用可编程逻辑设备的形式,优选地采用现场可编程阵列(Field Programmable Gate Array,FPGA)或者特定用途集成电路( Application-Specific Integrated Circuit ,ASIC的形式。
[0038] 优选地,所述设备的功能由硬件执行。
[0039] 优选地,所述设备还包括传输控制协议(Transmission Control Protocol,TCP)卸载引擎。
[0040] 优选地,所述设备还包括:用于识别与数据单元相关的会话的装置;以及检查装置用于比较数据单元和与会话相关的参数信息,从而确定数据单元的有效性和/或可接受性。
[0041] 根据本发明的另一个方面,提供一种网络通信设备,其包括:用于接收数据单元的装置(例如接收器,输入端口或者网络接口模块),数据单元包括控制信息和净荷数据;用于根据控制信息转发数据单元到下一网络位置的装置(例如发送器,输出端口或者第一模块);用于检查数据单元的装置(例如处理器或者标识模块);以及用于在整个数据单元被转发之前,根据数据单元检查的结果,修改数据单元的装置(例如输出控制模块),使得修改后的数据单元一旦被转发其后续处理即被改变。
[0042] 根据本发明的另一个方面,提供一种网络通信设备,其包括:用于接收数据单元的装置(例如接收器,输入端口或者网络接口模块),数据单元包括控制信息和净荷数据;用于根据控制信息转发数据单元到下一网络位置的装置(例如发送器,输出端口或者第一模块);用于识别与数据单元相关的会话的装置;以及用于检查数据单元以比较数据单元和与会话相关的参数信息,从而确定数据单元的有效性和/或可接受性的装置。
[0043] 优选地,所述会话是网络会话。
[0044] 优选地,识别装置用于根据数据单元控制信息识别所述会话,优选地根据存储在数据单元头部中的控制信息。
[0045] 优选地,所述会话是至少一对网络实体之间的通信会话,数据单元被通信设备拦截。
[0046] 优选地,所述设备还包括:用于识别会话的套接字引擎。
[0047] 优选地,参数信息包括与网络实体之间的特定通信会话相关的第一信息,以及与网络实体之间的所有通信相关的第二信息。
[0048] 优选地,第二信息与金融交易参数相关,例如仓位,数量或者限制。
[0049] 优选地,参数信息随着通信实体之间的每次通信交互而更新。
[0050] 优选地,根据网络实体之间通信的每个数据单元的净荷数据更新参数信息。
[0051] 优选地,参数信息是已经从所述设备转发的数据单元的累积记录,优选地不包含修改。
[0052] 优选地,检查装置用于将参数信息与控制信息和/或净荷数据进行比较,优选地一解析出控制信息和/或净荷数据,就进行比较。
[0053] 优选地,参数信息存储在所述设备上,优选地以至少一个哈希表的形式。
[0054] 优选地,所述设备还包括:用于在不存在与接收的数据单元相关的网络会话的情况下,输出与新的网络会话关联的新信息的装置。
[0055] 优选地,所述设备还包括:用于在转发整个数据单元之前,根据数据单元检查的结果修改数据单元的装置,使得修改后的数据单元一旦被转发其后续处理即被改变。
[0056] 根据本发明的另一个方面,提供一种网络通信设备,其包括:用于接收数据单元的装置(例如接收器,输入端口或者网络接口模块),数据单元包括控制信息和净荷数据;用于根据控制信息转发数据单元到下一网络位置的装置(例如发送器,输出端口或者第一模块);用于检查数据单元的装置(例如处理器或者标识模块);用于识别与数据单元相关的网络会话的装置(例如处理器或者哈希表);以及用于比较数据单元和与那个会话相关的状态信息,从而确定数据单元的有效性和/或可接受性的装置(例如处理器或者哈希表)。
[0057] 根据本发明的另一个方面,提供一种网络通信系统,其包括:第一网络实体,优选地采用服务器的形式;第二网络实体,优选地采用客户端的形式,其通过通信网络连接第一网络实体;以及中间网络实体,其包括通信设备(正如本文已描述的),用于拦截第一网络实体与第二网络实体间的通信。
[0058] 优选地,第一网络实体和第二网络实体通过通信协议(可选地为TCP/IP)彼此通信,从而在彼此之间传输数据单元。
[0059] 优选地,第一网络实体作为高频交易系统,第二网络实体作为交易所,并且中间网络实体作为中间商,用于监控在交易系统和交易所之间的交易活动。
[0060] 根据本发明另一方面,提供一种监控网络通信的方法,其包括:接收数据单元,数据单元包括控制信息和净荷数据;根据控制信息转发数据单元到下一网络位置;检查数据单元;以及在整个数据单元被转发之前,根据数据单元检查的结果修改数据单元,使得修改后的数据单元一旦被转发其后续处理即被改变。
[0061] 根据本发明另一方面,提供一种监控网络通信的方法,其包括:接收数据单元,数据单元包括净荷数据;转发数据单元到下一网络位置;检查数据单元中的净荷数据;以及在整个数据单元被转发之前,根据数据单元检查的结果,修改数据单元,使得修改后的数据单元一旦被转发其后续处理即被改变。
[0062] 优选地,所述方法还包括:识别与数据单元相关的网络会话,以及将数据单元和与所述会话相关的参数信息进行比较,从而确定数据单元的有效性和可接受性。
[0063] 优选地,监控网络通信的方法应用于交易金融资产的方法。
[0064] 根据本发明的另一方面,提供一网络通信设备,如本文已描述的,用于形成金融交易系统的一部分。
[0065] 在某些实施例中,本发明提供一种通信设备,其用于拦截网络实体之间(例如客户端与服务器或者主机之间)的数据通信,分析这些通信并且或者引起这些通信后续被网络丢掉,或者允许这些通信继续前往它们最终的目的地。所述设备通过“直通转发(cut-through)”式地过滤以及检测过程来执行上述操作,所接收的数据单元(数据封包或者帧)被直接传递到输出端口以用于转发,同时数据单元或者帧被解析或者解封包以用于检测。深度包检测方法涉及根据头部信息识别通信实体间的特定通信会话(通过哈希表),以及使用这个信息(其包含与数据单元的有效性相关的状态和其它信息)来评价数据单元中的净荷数据,以确定数据单元是否是有效的或者已授权的;也就是说,净荷数据被检查至“应用层”平。如果数据单元确实有效或者已授权,数据单元或者帧不作改变地通过输出端口离开设备,如果相反,数据单元或者帧是无效的,那么仅仅在帧或者数据单元的尾部离开设备之前,破坏或者重写数据单元或者帧最后的尾随校验码或者CRC。由于校验码或者CRC已破坏,帧或者数据单元随后被网络(或者数据单元的目的或者源所使用的应用层逻辑)丢弃。由于在转发数据单元时检测也在发生,而在单元被转发时其通过设备所花费的时间,与分析和解封包数据单元并检查其以确定其事实上是否有效所花费的时间是同步的,所以设备保持最低限度的过滤时延。已破坏的数据单元,从TCP/CP的度上,实际上被接收实体(主机或者服务器)当做已经在途中丢失,根据TCP/IP协议规范,这将会引起数据单元的重传,而被重传的数据单元将依次被破坏和丢掉(因为它包含与引起它在第一次的位置被破坏的净荷相同的违反风险控制的净荷)。相应地,如果封包违反了风险检测并且数据单元被破坏,也并行地将数据单元缓存到存储器。然后修改已缓存的数据单元以使其包含有效的TCP/IP元素,但是具有不同的(与发送方期望发送的相比)应用层净荷数据。执行对净荷的这种修改以保证接收方将在正常操作过程中拒绝数据单元,并且然后及时的使用错误消息(在“应用层”水平)通知发送方。
[0066] 从属权利要求会描述本发明的进一步的特征。
[0067] 本发明可扩展到本文所描述的和/或所示出的任何新颖的方面或者特征。本发明可扩展到大致如本文所描述的和/或参照附图所示出的方法和/或设备。
[0068] 本发明也提供一种计算机程序和一种计算机程序产品,用于执行本文所描述的任何方法和/或用于体现本文所描述的任何设备特征,以及一种计算机可读介质,其具有存储于其上的程序,用于执行本文所描述的任何方法和/或用于体现本文所描述的任何设备特征。
[0069] 本发明也提供一种体现用于执行本文所描述的任何方法和/或体现本文所描述的任何设备特征的计算机程序的信号,发射这种信号的方法和具有操作系统的计算机产品,操作系统支持用于执行本文所描述的任何方法和/或体现本文所描述的任何设备特征的计算机程序。
[0070] 本文所描述的任何设备特征可以作为方法特征,反之亦然。如本文所使用的,功能性限定的装置特征可以和与其相应的结构互相替代表示,例如适宜编程的处理器和相关的存储器。
[0071] 可以以任何恰当的合并方式将本发明一个方面的任何特征用于本发明的其他方面。特别地,方法方面能够用于设备方面,反之亦然。进一步地,可以以任何恰当的合并方式将一个方面上的任何、一些和/或所有特征用于另一个方面上的任何、一些和/或所有特征。
[0072] 应该可以理解的是,在本发明的任何方面所描述以及限定的各种特征的特定合并能够被独立地执行和/或提供和/或使用。
[0073] 在这个说明书中,除非另有声明,词语“或者”可以以排除性的或者包容性的含义来解释。
[0074] 进一步地,由硬件执行的特征通常可以由软件执行,并且反之亦然。本文中涉及到的任何软件以及硬件特征应按此解释。
[0075] 本发明扩展到网络通信设备,通信系统和监控网络通信的方法,正如本文所描述的和/或参照附图所示出的。

附图说明

[0076] 以下将参照附图描述本发明,其仅作为实施例,其中:图1示出通信系统;
图2示出网络通信设备的结构和功能的原理图;
图3示出图2的通信设备的硬件结构;
图4原理性地示出图2的通信设备的逻辑结构;
图5示出使用通信设备标识出不想要的数据单元和修改数据单元的流程;
图6至图10原理性地示出在时间轴上通信设备的操作的各种实例;
图11 a示出通信设备顺序的和非顺序的数据单元处理流程图
图11b示出处理输入的数据单元的算法
图12示出在重传过程中由通信设备执行的保存功能;
图13示出来自存储器的数据的重传;
图14示出数据单元标识模块执行的示例性功能;
图15是示出由通信设备执行的数据单元状态确定的方法流程图;
图16示出客户端和主机之间经由通信设备的三方握手;
图17示出用于网络协议建立以及关闭TCP网络连接的示例性的方法流程图;以及图18示出通信设备所使用的示例性信息,以确定数据单元是否被标识。

具体实施方式

[0077] 图1示出包含至少两个网络实体的通信系统-主机110和客户端120-通过通信网络彼此通信。正如所示出的,中间实体140拦截了客户端120和主机110之间的通信。该中间实体140包括通信设备150。该中间实体140还包括与通信设备150通信的接口160。网络使得信息能够通过通信设备150从客户端120传递到主机110,和/或通过通信设备
150从主机110到客户端120。通信设备150用于使得能够在客户端120与主机110之间进行的低时延的通信。
[0078] 通信设备150拦截联网的客户端120与主机110之间的通信以便执行辅助功能,例如数据处理,路由,挖掘,调整,修改,检测,标识,过滤或者任何其他类似的处理。
[0079] 在图1所示出的系统实例中,主机110用作金融交易所,客户端120用作金融交易机构,例如,高频率交易公司或者公司的单个工作站,以及中间实体140用作中间商,例如投资经纪人。在可替换的另一系统实施例中,客户端可以是任何数量的工作站,主机是远端服务器以及中间实体是网络服务提供商,网络安全实体或者任何其他类似的中间机构。
[0080] 图1示出了单个通信设备150,然而,除了任何数量的客户端和/或主机之外,多个这种设备可进一步扩展该实施例,客户端和/或主机通过多个或者单个通信设备150彼此通信。
[0081] 图2原理性地示出图1所示出的联网的系统中通信设备150所执行的结构和功能的实施例。包括数据单元204的数据流借助于网络从客户端120发出,通过中间实体140传向主机110,数据单元204采用协议数据单元(Protocol Data Units,PDU)的形式,例如,封包,数据报,片段或者帧。数据单元204包括多个字节或者子单元,例如多个比特,其中,在设备的一个或者多个时钟周期中处理该多个比特。当数据单元204的字节元素或者子单元以字节为单元(byte-wise)的方式到达时,中间实体140,也即通信设备150,接收数据单元204。通信设备150及时地将通信单元的字节元素提交给通信设备处理器208来处理。该通信设备处理器用于根据输入的数据单元204的内容以及规则模块212中列出的方案来执行用于确定的步骤。在通信设备150处理器208接收数据单元204的字节时,字节也在被同时转发给标识模块216和输出控制模块220。字节进入设备的速率可以等于字节从通信设备中输出的速率。然而,通信设备被配置为以与通信设备150,客户端和主机间的网络结构无关的方式执行操作。例如,在主机和通信设备150间的网络结构(例如,10 Gigabit 以太网(Ethernet)),可以与主机和通信设备之间的网络结构(例如,1 Gigabit以太网)不同。这改进了通信设备与客户端和主机网络的兼容性。如果通信设备接收网络单元的速率小于或者等于发出数据单元的速率, 由于客户端和主机网络速度不匹配所引起的时延的影响是可以忽略的。总体来说,为了减小时延,需要使用尽可能最快的网络结构和接口。
[0082] 用于确定的步骤发生在提供于处理器208中的标识单元216。正如后续进一步的详细描述,用于确定的步骤包括由标识单元216至少部分地根据对数据单元204中相关信息的检查去查询规则模块212。随后,由标识模块216做出的数据单元有效性的决定提供给输出控制模块220以作为指示。
[0083] 在用于确定的步骤发生时,该数据单元的字节元素或者子单元也在被同时从通信设备的输入端口转发到输出控制处,转发以字节为单元地进行如同被接收时一样。此处在通信设备层面没有缓存和串行延迟。
[0084] 在输入的数据单元的字节或者子单元到来时,操作例如转发,提交,处理,确定等等也在同时发生。根据输入的数据单元的大小,数据单元的任何元素或者数据单元的信息的其他逻辑模块的大小,将字节或者子单元累加到字节或者子单元的累积中,以用于处理,转发,提交,确定等等,并且没有任何延迟,即此处在设备层面没有缓存或者串行延迟。
[0085] 发生在标识模块216的用于确定的步骤与输出控制模块220的操作同时发生,输出控制模块220顺序地处理并且随后转发来自数据设备150的数据单元204的每个字节或者子单元。
[0086] 标识模块确定是否通知输出控制220来修改数据单元204使得标识模块识别出的数据单元随后被网络丢掉,在网络中该数据单元不会被接收,接受,或者被期望中的主机110操作。按照标识模块216的指示,由输出控制模块220执行的数据单元的修改(通过一修改手段),包括标记,识别,区别,调整或者破坏数据单元的任何手段。按照标识模块216的指示,由输出控制220所制定的示例性的修改操作,包括以网络栈(stack)中承认的含义写入额外的字节,例如将数据单元列入黑名单,调整数据单元的控制信息,例如头部228,尾部,净荷数据232,校验码236,循环冗余校验(Cyclic Redundancy Check, CRC),安全校验,或者确保数据单元随后被网络丢掉的任何其他元素。输出控制模块220不考虑来自标识模块216的指令而输出数据单元204的字节。如果已做出修改数据单元的决定,其随后导致数据单元将被网络丢掉,通信设备将以这种方式修改数据单元中还没有输出的部分,使得沿着网络,例如在接近主机交换机或者网卡的位置,整个数据单元被丢掉,包括在修改数据单元之前已经从通信设备发出的数据单元的部分。当可以被修改使得数据单元被网络丢掉的数据单元的该部分正在从通信设备150输出时,如果还没有做出关于数据单元有效性的决定,无论如何都破坏该数据单元,这样阻止潜在的无效数据单元被发出。数据单元可以被延迟后重新处理,该延迟使得作出的决定与输出的数据单元的元素相符合,输出的数据单元的元素可以被修改以及在后续重发。
[0087] 确保数据单元被网络丢掉的示例性方式如图2所示,其中数据单元204包括多个头部228,净荷数据232,和/或采用校验码236或者CRC形式的尾部,标识模块216标识数据单元204为无效,其引起通信设备输出控制220来修改数据单元使得数据单元被发送给预期主机和主机中正确的端口,但是然后主机网络处理器244(例如与网络协议相关的网卡或者CPU)识别出数据单元为无效,正如所确定的一样。从而主机248及时地丢掉数据单元。在该实施例中,标识模块216指示输出控制220来仅仅调整数据单元中没有代表数据单元的网络目的地(包括主机和接口)的那些元素。替代地,调整252有效标识,例如数据单元的校验码或者CRC,使得主机处理器244推测数据单元是无效的或者错误的并且丢掉数据单元248。标识数据单元的处理可扩展到其他指示或者命令输出控制的方法或者总体上用于数据修改的模块,以改变数据单元的后续网络处理。一旦从标识模块216接收到修改指示,输出控制仅仅能够修改数据单元204中还没有从输出控制模块220转发的元素;最后从输出模块转发的这些字节最适合修改,其包括校验码和CRC,因为这给标识模块接收和完成用于确定的步骤提供时间而不需要保留或者延迟通过设备150的数据单元字节或者子单元的持续流动。
[0088] 在一个实施例中,为了在从输出控制模块220输出数据单元的元素之前,将数据单元元素的可能修改与由标识模块完成的用于确定的步骤同步,引入一延迟到正在被输出控制接收的数据单元字节流。该延迟基本上与整个数据单元204的大小或者任何元素的大小或者数据单元元素的任意组合的大小无关。而且,该延迟以离散的时钟周期为单位引入,因此是纳秒级别的。
[0089] 修改数据单元204的不同元素的可替代实施例也在图2中示出,按照标识模块216的指示,依靠输出控制220来修改数据单元的那些通常首先被输出控制模块220接收的元素,或者至少在净荷数据232开始之前被接收的元素,并因此首先被从输出控制转发出去。通常不采用对于数据单元的这些元素的修改,因为这要求用于确定的步骤仅使用已经收到的字节(那些位于净荷数据之前的字节)来完成。对于例如用于网络安全以及拒绝服务操作的数据单元过滤,这样的机制是适用的,在这些应用中包括数据单元的目的或者源信息的数据单元控制信息已具有足够多的信息来完成用于确定的步骤。
[0090] 在一个实施例中,修改确定数据单元元素的目的地使得数据单元的字节虽然被输出256到正确的主机但却在主机不正确的端口上,导致数据单元后续没有被考虑或者实际上被网络丢掉。作为一个实例,这个修改操作涉及端口头部260的调整,其指示数据单元到正确的主机中正确的端口,例如,用于MAC/TCP/IP网络的TCP头部。在这个实施例中,在数据单元的TCP头部被转发之前,输出控制的220修改操作调整数据单元的TCP头部,使得它被无效,被损坏或者被可接受的主机端口区别出来,并且导致数据单元被主机丢掉248。一般而言,调整数据单元的传输或者网络层控制信息会影响这一点。
[0091] 进一步,图2示出了输出控制模块220能够制定对数据单元204的元素的修改操作,其确保数据单元被发送264到一无效的主机目的地。在这种情况264,可以认为数据单元已经从网络系统中被丢掉248。作为例子,这个修改操作可包括对物理层头部的修改248,该物理层头部引导数据单元到正确的主机(通常为开放式系统互联OSI模型的层2,也称为(数据)链路层)。例如,在MAC/TCP/IP网络中,这将对应于MAC头部。另一实施例可以包括对逻辑连接控制(Logical Link Control, LLC)的调整。
[0092] 前述的实施例,其中,按照深度包检测(例如,通过净荷数据的检测,也就是说,在数据单元的“应用层”水平上),如果标识模块的用于确定的步骤需要来自数据单元204的净荷的信息,在净荷数据被调整之前接收的数据单元204的元素是不想要的。
[0093] 标识模块216不对通信设备确定为有效的数据单元204进行标识,照此,输出控制不会应用任何修改和调整操作到正在输出的数据单元的任何元素上。数据单元204与以其接收相同的形式从数据装置输出272。将数据单元发送到原始的预期主机110以及主机端口,主机的网络处理器244及时处理该数据单元以及确定其作为有效的数据单元并且由主机接受276。
[0094] 在图2的特定实施例中,主机110作为金融交易所,中间实体140作为中间商以及客户端作为中间商的客户,例如金融交易体系。通常,该系统被安排将通信设备功能应用到从客户端到主机的数据流。在图1以及图2所示出系统的任何实施例中,该系统也如上述描述的那样操作从主机到客户端的数据流。
[0095] 一般而言,图2所描述的系统需要修改或者调整数据单元以区分无效数据单元和有效数据单元,使得为了有助于低时延网络通信,无效的数据单元随后被网络丢掉。可替换地,物理层信号用于中断数据单元传输使得主机110认为数据单元无效。
[0096] 图3示出通信设备硬件的示例性原理。该通信设备150包括任何数目的物理网络输入/输出308,使用这些接口以便于在网络上与客户端120和/或主机110通信130。例如,在主机,通信设备和客户端之间采用以太网的情况下,小型可插拔收发器(Small Form-factor Pluggable transceivers ,SFPs)和/或增强型SFP (SFP+) 316能通过以太网物理层作为通信设备150的接口。采用有限频带的网络和其他可替代的物理网络也是可能的。而且,通信设备150中可以使用能适用于支持客户端,通信设备以及主机之间的网络结构的任何其他通信接口类型。至少一个通信设备接口可以与客户端或者主机网络结构规范匹配。在金融交易所作为图1所示出的网络系统成员的情况下,连接的类型主要类似于1 Gigabit 或者10 Gigabit以太网,客户端以及中间实体,例如金融交易机构和中间商各自同意他们通信所在的网络结构标准。网络手段也可以有各种变化,该网络手段包括从客户工作站(例如PC)到通信设备150的外围元件互联高速(Peripheral Component Interconnect express,PCIe)总线连接,该总线连接在客户端和通信设备处理器间采用PCIe卡,电压差分信号和/或超高速传输端口的形式。
[0097] 前述的网络系统,因此能支持高速数据传输方式,例如1 GbE(Gigabit Ethernet), 10GbE, 40GbE, 100GbE,光纤信道,PCIe或者其他总线,低电压差分信号LVDS,芯片到芯片的通信,片上通信和/或任何其他相似的系统。通信设备上有多个网络接口,由此允许通过通信设备来自多个网络主机/客户端的访问和分发到多个客户端/主机。在客户端,中间系统和/或主机之间能使用芯片到芯片的通信手段,例如LVDS或者其类似。
通过减少网络实体间的光路以及网络结构数据速率,能减少总体的系统时延,尤其是通信设备的时延。而且,在数据单元进入通信设备150之前,可通过使用网络通信方法来控制与网络协议的流线化,功能以及数据单元有关的时延降低,该网络通信方法部分或者完全地减少对物理层或者任何其他信号预处理的需求,例如 ,解调,错误校正,物理层上的串行化等等,因此降低时延以进一步趋近于零。
[0098] 物理层处理模块324在物理层上处理由通信设备150在网络接口308上所接收的网络信号,该模块被安排处理例如1GbE, 10GbE, 100GbE或者类似手段的信号。
[0099] 通信设备的输入/输出物理网络层处理模块324与通信设备处理器208通信,从而允许所接收的数据单元被处理以便输出。通信设备处理器208包括可编程逻辑器件(Programmable Logic Device,PLD)208。应该理解的是,存在多个不同的PLD,在低/超低时延应用上使用了具有快速逻辑的PLD,例如特定应用集成电路(Application-Specific Integrated Circuit ,ASIC),和现场可编程门阵列(Field-Programmable Gate Arrays ,FPGA)。重新配置PLD所需要的频率确定了PLD的最佳选择。在一个实施例中,FPGA用于结合低时延和重配置的多功能性。当数据单元通过通信设备时,PLD用于执行处理(包括网络处理),调整,数据单元破坏,深度包检测,“直接转发”式交换,过滤和/或数据单元标识。图2所示出的规则模块212以及标识模块216也在PLD内以硬件实现,可选地与外部存储器332相结合。该PLD也包括传输控制协议(Transmission Control Protocol ,TCP)卸载引擎。
[0100] 在通信设备150上的多个外部存储器元件332与PLD208通信。该外部存储器元件包括任何数目的低时延动态外部存储模块;这允许PLD快速访问到被存储的数据-通常低存储量地。低时延存储器元件,例如,双倍速率同步动态随机存储器(Double Data-Rate Synchronous Dynamic Random-Access Memory ,DDR SDRAM)340作为一实例在图4中示出。外部存储器元件也包括任何数目的静态随机访问存储器(Static Random Access Memory,SRAM)模块,例如,正交数据速率(Quadruple Data-Rate ,QDR)SRAM348其也与PLD通信,如所示。一般而言,外部存储器元件332可包括任何数据存储形式(包括闪存),其中数据封包能够被存储和恢复。
[0101] 非网络输入/输出356的范围允许通信设备连接到外围硬件和接口,例如中间实体(用户)接口160。例如,任何数目的计算机或者服务器能通过总线连接,其能包括任何数目的PCI高速总线364,不过任何形式的硬件内部连接均可采用,例如通用串行总线(Universal Serial Bus ,USB)372,并且他们的使用依赖于所连接的硬件对于数据传输的要求。内部连接的外围硬件也包括接口,该接口用于系统管理, PLD208的重新配置,调整规则模块212,标识模块216或者PLD的任何附加元件。此外,通过总线连接另一存储器到通信设备150,能存储大量的网络数据或者不是通信设备立刻需要的数据。在某些长期网络中,通过经总线连接到通信设备的外部存储器提供流量监控。显示器,中央处理器(Central Processing Unit, CPU)以及其他外围硬件也能通过总线或者相似的非网络输入/输出356与通信设备连接。
[0102] 通信设备150被安排在电路板380上并且由外部电源通过电源接口388供电,例如在电路板380采用PCIe 卡的情况下,通过PCIe槽。
[0103] 在一个实施例中,通信设备150也包括用于夹层卡(Mezzanine Card ,MC)的输入/输出接口,例如高速以及FPGA MC,同轴连接器,例如超小型版本A(SubMiniature version A, SMA)连接器以及收发器。
[0104] 通信设备150可以与表现在相同网卡上的客户端和/或主机系统一起作为网卡的一部分,和/或通信设备150与客户端和/或主机系统本地连接,例如通过总线或者芯片到芯片的通信方式。客户端服务器本地化地表现在通信设备上是可能的,包括作为相同网卡的一部分,位于中间实体上并且远离客户端实体,这种方式同样可应用于主机服务器。例如,具有与交易所通信的集成的通信设备150的中间商网卡能为来自客户(例如,交易机构,网卡上的服务器)的订单执行风险管理。客户端不物理访问服务器是有利的,因为它阻止了客户端物理地替换或者修改网卡,尤其是组成通信设备的部分,使得中间商的风险管理被旁路或者被修改。
[0105] 网卡能具有任何数目的PLD的特征;使用多个PLD提供通信设备,客户端和/或主机的功能。例如,具有两个PLD的网卡,例如FPGA 或者 ASIC,能具有第一PLD和第二PLD,该第一PLD执行此处所描述的关于通信设备150的功能,第二PLD与第一PLD通信,客户端使用该第二PLD来执行客户端定义的可编程逻辑以及发布金融交易订单。
[0106] 中间商能连接客户端服务器内部的网卡,例如使用SFP+端口,允许客户端与网卡通信。通过一个界面一第二SFP+端口可用于中间商的监控以及限制条件的配置。按照通信设备的操作评估客户端通过网卡发出的网络数据单元。然而,客户端的数据单元来源于内部的客户端服务器(例如通过PCIe总线)或者来自客户端操作的第二PLD,跨过芯片到芯片的通信手段(例如LVDS线)到达中间商的PLD。
[0107] 图4原理性地示出通信设备PLD208的逻辑结构。为了这个实施例的目的,PLD的操作被描述成两个逻辑部分- Eth0 402以及Eth1 404。Eth0 402是接收并且转发输入网络数据单元的部分,例如,最初来源于客户端并朝向主机的数据单元。Eth1 404是用于转发从主机接收并朝向客户端的数据单元的相应接口,具有最小的延迟。一般而言,PLD包括网络处理逻辑,标识模块,输出控制以及存储控制器
[0108] 参考图4,如下涉及在通信设备的PLD208的Eth0 402部分上的网络数据单元处理。来自网络的数据单元在Eth0 402部分上的第一PLD网络接口模块406(接收装置)接收。例如,PLD网络接口模块406采取逻辑的形式,该逻辑能在头部和/或校验码级别处理到达的数据单元,以确定数据单元是否被有效的接收。基于各种网络协议,例如MAC, IP, TCP 或者 UDP网络协议,数据单元包括控制信息。在这个第一PLD网络接口406上处理来自以太网的数据单元的数据流。
[0109] 正在接收的数据单元具有被引导或者被转发到第一模块408(转发装置)的字节。第一模块是Eth0部分上的输出控制模块408,该输出控制模块408处理数据单元以用于输出并且调整或者修改已标识的数据单元,使得它们随后被网络丢掉。数据单元字节也被引导到第二模块410,该第二模块410采用数据单元解析器的形式。输出控制408接收数据单元字节几乎没有延迟,但是依赖于对输入的数据单元的解析在输出数据单元字节时引入延迟(以时钟周期为单位,相对于解析器410接收到数据单元的时刻),例如如果数据单元被非顺序地接收。延迟使得接收并且处理(例如在输出控制220)数据单元直到待修改数据单元的元素(例如校验码或者CRC)的时间等于接收的数据单元具体为标识模块完成用于确定的步骤所需要的元素的时间,用于标识模块完成用于确定的步骤以及指示输出控制220的时间。延迟提供了数据单元(具体为待修改的数据单元的元素,例如,校验码或者CRC)的输出与来自标识模块的指示(关于是否修改待修改的数据单元的元素)之间的同步。由于数据单元字节式地从输入端口流动到输出控制模块以及从输入端口流动到标识模块,因此输出控制模块和标识模块所需要的处理数据单元的时间不包括接收整个数据单元的时间。所引入的延迟不依赖于数据单元的大小。
[0110] 通过在完全处理或者甚至完全接收数据单元之前,开始数据单元的转发(或者向前传输),正在接收的数据单元转发到输出控制408和解析器410有效的导致数据单元的“直接转发”处理。这允许数据单元在被处理以标识的同时在输出控制408被同时输出。这是为了减少在传统方法上的系统时延,传统方法串行处理并且然后输出数据单元。
[0111] 解析模块410从Eth0 PLD网络接口模块406接收数据单元字节并且解析数据单元。这个解析基本剥掉数据单元任何或者所有的头部,直到传输层,也就是说,MAC/IP/TCP头部。将数据单元净荷数据和头部彼此分离以用于后续处理。解析模块410分别地解析净荷数据字节422以及数据单元头部字节424到套接字数字多路复用(Digital MultipleX ,DMX)模块412。
[0112] 将从套接字数字多路复用模块412输出的净荷数据转发到套接字保存模块414,其中,净荷数据被处理用于存储在PLD中的存储器元件和/或外部存储器元件332。及时地将已处理的用于套接字存储模块414存储的数据单元发布到存储控制器416,该存储控制器416相应地分发并且存储数据单元到存储器。分派数据单元到套接字恢复模块418,该套接字恢复模块418允许存储在存储器元件中的数据被访问,优选地以最小时延访问。存储分配给存储器元件的数据单元,以便将来当发送数据单元时如果非预期的错误发生时用于重发,或者为了检验TCP已重传的数据单元并且为了便于非顺序的数据单元的重新排布。
[0113] 净荷数据字节的另一数据流从DMX模块输出,省略套接字保存模块以及存储控制器,使得数据单元被转发到套接字恢复模块418,在套接字恢复模块418处理数据单元以确定是否立即转发到Eth0标识模块420(或者数据单元的至少一部分,例如TCP/UDP元素)。立即转发已确定为正确序列的一部分的已接收数据单元。采用这种方式,如果系统确定延迟数据单元不是必要的,数据单元字节能直接的流向标识模块。否则,套接字恢复模块418从存储器元件中恢复已错误排序的数据单元并且直到那时才转发数据单元到标识模块420。识别待重发数据单元的有效性处理被执行。套接字引擎发布一命令使得数据单元被检查,以及优选地是数据单元的净荷被检查。套接字恢复模块418随后发布命令433到输出控制
408指示重发前面已发送的数据单元。
[0114] 从解析模块410输出,也被套接字DMX模块412接收的头部随后从套接字DMX模块412输出到Eth0套接字引擎426,DMX模块发送请求到Eth0套接字引擎426。根据中间实体的规则(从规则的哈希表(Rules Hash Table ,RHT)430被访问的规则),套接字引擎426检查数据单元的头部元素以协助确定数据单元有效性(正如关于标识模块420所描述的)和/或已开放的或者可允许的网络连接的关联性。这个头部信息包括任何网络信息例如数据单元的源和目的。更具体地,可应用于网络,客户端,主机端口等,地址以及任何形式的数据连接,传输和网络头部,例如在一些其他头部中的TCP, IP, MAC 和 UDP地址。另一辅助信息,例如数据单元的序列信息,包括最后接收的数据单元以及最后处理的数据单元,将帮助确定数据单元是否作为正确序列的一部分被接收。
[0115] 套接字引擎426发布命令以处理,保存,验证或者存储数据单元,以及优选地是数据单元的净荷数据232。如果根据套接字哈希表(Socket Hash Table ,SHT))428和/或RHT430,确定正在输出的数据单元已经作为非正确序列的一部分被接收,从套接字引擎426发出到输出控制408的命令可指示该需要修改的数据单元。在这种情况下,当数据单元正在输出时修改数据单元,使得数据单元随后被网络丢掉。
[0116] 将已处理的头部或者类似物与规则相比较,以确定数据单元的有效性。将该头部或者类似物从套接字引擎426转发到套接字哈希表(Hash Table ,SHT)428,其通过关联数据单元到客户端以及原始端口以及存储在SHT 428中的附带规则,允许数据单元的网络地址和其他信息被用于识别数据单元的网络会话。
[0117] 因为哈希表提供快速访问以及关联这类信息的方式,并因此具有低的时延,因而被选用,然而,也可以使用相关的数据库,阵列,树,列表以及查找表。
[0118] 已经识别出将应用到数据单元的规则,从套接字引擎426发布可用规则的命令到套接字DMX412,到达标识模块420。
[0119] 无论是否接收自存储控制器416,从套接字恢复418输出的存储单元被转发到标识模块420。来自套接字引擎426的规则命令由标识模块420接收并且将按照中间实体的规则作出该数据单元是否有效的决定。然后根据数据单元的净荷数据的检测(深度包检测),做出该数据单元是否有效的决定。这导致了关于是否标识数据单元的决定,其中,数据单元的标识造成它的修改使得数据单元随后被网络丢掉,有效的导致了预期的接收装置不能接收或者不能处理数据单元(参考图2所描述的)。将数据单元的内容与应用到数据单元的规则比较,如通过套接字引擎426从SHT 428和/或RHT 430所获得的。标识模块420有效的发送命令432到输出控制408指示输出控制修改数据单元,使得数据单元随后被网络丢掉。否则,或者通过发布适当的命令到输出控制或者根本没有命令,未被识别出要修改的数据单元不会被修改,它也因此不会被网络“丢掉”。在一个实例中,一旦数据单元被处理,标识模块420就发布命令到输出控制408,输出控制408破坏并且重发数据单元直到从标识模块420接收命令。在这两种情况下,数据单元从输出控制408输出并且被传递到Eth1 PLD网络接口模块434,其中数据单元从PLD 208和通信设备150输出,通过物理网络输入/输出端口308进入到网络。
[0120] 同时,RHT430,套接字引擎426和/或SHT428接收到数据单元标识模块420的决定,使得能更新、修改依赖于网络中数据单元历史传输(是否被丢掉)的动态规则,或者记录用于确定的步骤的结果。
[0121] Eth1 PLD网络接口模块434正在接收的数据单元以与Eth0所描述的相同方式处理,其中,相似的模块如果不是相同的用途的话,也是相似的用途。正在接收的数据单元是直接转发到输出控制436和解析器438。在套接字DMX 440接收并行头部和净荷数据输出。将数据单元头部输出到套接字引擎442并且转发到Eth0部分402上的SHT 428,其中根据数据单元的头部确定了能应用到数据单元的规则。SHT 428是Eth0逻辑部分402以及Eth1逻辑部分404的共享模块,使得如果需要的话,数据单元规则被集中以及应用到输入和输出的所有数据流量。
[0122] 相似地,也查询RHT 444来确定适用于数据单元的规则。RHT 430和444也可以被集合于SHT428。命令从SHT428发布到套接字引擎442和/或RHT444,套接字恢复446据此确定正在接收的数据单元是否将被从存储器访问,作为存储器的输入从套接字DMX 440发送到套接字保存448以及转发到存储控制器450,或者直接地被转发到数据单元标识模块452。标识模块420以及452分离地出现在上述部分中,然而,这些模块也可以合并。
[0123] 标识模块452的关于是否标识输入数据单元的决定被转发到输出控制436。如果数据单元被标识,输出控制436调整数据单元使得数据单元被网络丢掉,或者如果数据单元没有被标识,则不调整数据单元。转发被调整或者不被调整的数据单元到Eth0 PLD网络接口模块406,其中数据单元从PLD 208和通信设备150输出,通过物理网络输入/输出接口308传输到网络。
[0124] 图5是前面所描述的PLD操作的流程图。图5参考了图4所示出的结构,特别的,接下来的描述参考了Eth0逻辑部分402元件,然而,流程同样适用于Eth1逻辑部分404所提供的功能。
[0125] 通信设备和PLD上“直接转发”或者转发正在接收504的数据单元,以用于在输出控制模块408上同时的发送处理或者传输,并且用于处理以确定适用于数据单元的规则和是否标识或者识别508数据单元以用于修改,该修改通过指示输出控制来修改数据单元。当正在接收数据单元时,数据单元以字节式地模式传递到输出控制,以用于字节的输出处理516。在套接字引擎426处理正在接收的数据单元的控制信息元素,例如头部。随后字节式地发出正在接收的数据单元字节以用于在标识模块420上深度包检测512。在一个实施例中,根据数据单元序列(这个对于UDP流而言可以被忽略),在恢复出TCP流之后初始化深度包检测512。
[0126] 利用数据单元的源和/或目的(例如,客户端,主机和/或端口),一旦已经处理520数据单元头部和识别524头部,在规则模块212中发现并查询528与数据单元的源和/或目的相关的规则,该规则模块212包括SHT 428和RHT 430。
[0127] 在一个实施例中,在处理520头部以及识别524客户端和/或会话之后,但是在定位和参照528(如虚线所示)相关的规则之前,仅转发数据单元净荷以用于深度包检测512。
[0128] 然后识别532适用于数据单元的规则。然后相对于识别出的规则532,在标识模块420做出关于数据单元是否有效536的决定,数据单元的相关内容已经被提取(深度包检测)512。如果数据单元是有效的,不标识数据单元来用于修改540。标识步骤包括识别数据单元是否将要被修改以及转发那个指示到输出控制,该输出控制正持续的输出数据单元。如果数据单元有效,标识装置没有对数据单元做出用于修改的标记并且以未修改的形式输出数据单元。如果数据单元无效,来自标识模块的命令指示输出控制来修改数据单元544。
[0129] 从头部和净荷处理步骤520到不修改540或者修改544数据单元这些阶段,如果数据单元被识别为无效,被同步为与执行从数据单元508的“直接转发”处理到直到待修改数据单元元素输出处理516完成的步骤所用的时间基本一致。一般而言这些同时发生的处理分支被配置在各自于400ns-10ns内完成,不过以小至100ns-5ns来实现这些也是可能的并且完全一致也是可能的。当然,这些流程的完成时间依赖作为一个整体的系统和网络的性质,并且可能需要大约1.5μs-0.4μs。
[0130] 一旦输出整个数据单元,后续的网络处理实体可以丢掉或者不丢掉该数据单元。如果在从通信设备150输出之前在输出处理516中修改数据单元,则做出关于是否已经修改548数据单元的决定,数据单元后续被网络丢掉,因为:它没有到达预期的主机或者端口;相对于数据单元的尾部(例如校验码或者CRC元素),数据单元是无效的;或者净荷数据是损坏的。
[0131] 如果在输出处理中没有修改数据单元,并且将数据单元以原始输入到通信设备150的身份转发到预期的接收方。从而接收方564接受该数据单元。
[0132] 图6示出在传统的数据单元接收和处理的过程中,在时间轴上通信设备的操作原理。定义时延为从数据单元204的前部被接收的时刻起到输出数据单元的最后元素之间处理数据单元所需要的时间,数据单元被修改或不被修改。通信设备被配置为具有少于350ns-50ns的时延,以及最好少于150ns-30ns。
[0133] 特别地根据数据单元尾部元素的调整来描述图6,尾部元素例如为数据单元的校验码和/或CRC。在输入处正在接收的输入数据单元204包括头部和数据体-净荷数据620,该头部包含网络控制信息,例如网络协议604,例如MAC 608, IP 612以及TCP 616 头部。数据单元204也包括用于错误验证的尾部,其采用校验码的形式。通过不管数据单元的控制信息,网络协议元素604或者净荷数据620,而转发正在接收的数据单元以用于在输出控制模块处输出处理,正在由PLD的输入处接收的数据单元输入到通信设备且被转发以用于直接转发处理。一旦PLD解析模块410解析出协议,通常具体为传输层的协议,例如TCP616或者UDP头部,则将正在接收的数据单元字节转发到标识模块420以用于深度包检测和用于确定数据单元是否被标识。同时的,转发数据单元字节以用于对当前接收的字节进行输出处理,但是具有引入的延迟624。该延迟等于或者大于完成数据包的“直接转发”交换以用于输出处理,完成该输出处理直到尾部校验所需的时间减去分析数据单元的控制信息(例如B头部),转发数据单元的净荷620到标识模块以完成深度包检测,确定数据单元是否将被标识并且相应的指导输出所需的时间。通常,这个延迟少于100ns以及更有可能不到50ns。以这种方式,标识模块确定的结果与直到数据单元尾部元素(其包括校验码)开始时所完成的输出处理相一致。可以凭经验根据被检查的应用层协议,例如净荷数据,和/或具体的通信设备处理器(例如,FPGA和ASIC方案,其具有较低的处理速度且对一般的操作比快速处理器采用更多数量的时钟周期)估计转发数据单元到输出和到标识模块624间的延迟。如果这个估计是不正确的,可以执行另外的几个步骤(如参照图9所描述的)。
[0134] 如果标识模块验证了数据单元,标识模块没有指示输出控制来修改数据单元。这个“直接转发”系统的优点是在输出数据单元时,数据单元同时也在穿过标识模块,使得除了能被修改的数据单元元素以外数据单元被完整的输出,所以允许标识模块一输出,数据单元后续就被网络丢掉,例如,由于校验码或者CRC被“标错”或者破坏。
[0135] 如果数据单元是有效的,正如标识模块所确定的,则不修改数据单元,由此,以有效形式628保留数据单元的校验码236。当通信设备接收字节时,无论数据单元的有效性,数据单元的字节从输出控制被输出。假如待修改的数据单元元素还没有输出,仅仅修改该待修改的数据单元的元素。例如,破坏数据单元的最后字节(包括校验码或者CRC),使得主机接收以及识别数据单元是已破坏的或者错误的,并且因此丢掉它。
[0136] 允许在标识单元确定和直到校验码的数据单元输出处理之间的不一致上的偏差。然而,如果待修改的数据单元元素(例如校验码或者CRC)将从输出控制输出并且标识模块还没有完成用于确定的步骤,则剩余的元素需要被修改,否则主机将在没有中间实体140所确定的数据单元的有效性的情况下而接受数据单元。因此该设备充当为故障保护。
[0137] 太长的延迟会导致增加的时延。在标识模块的用于确定的步骤和直到待修改数据单元元素的数据单元输出处理之间完成时间的任何非零差对于系统的时延或者准确性是不利的。
[0138] 因为进入通信设备150中的数据速率等于输出通信设备150的数据速率,所以不能暂停或者延迟来自输出控制的数据单元字节输出。
[0139] 一旦每一个数据单元字节被处理以用于输出,该每一个数据单元字节从通信设备转发到数据单元的预期目的地,并由此被接收方认可。 如果数据单元的元素会被修改,正如标识模块所标识的以及输出控制所操作的,则网络丢掉该数据单元,由于修改后的数据单元以及其中一错误的校验码被发送到预期接收方,主机根据网络协议处理丢掉该数据单元。相反的,还没有被标识或者确信修改的数据单元保持有效形式,以及后续被主机接受。系统因此将数据单元过滤处理分担到后续阶段上的其他网络实体,例如网卡,包括以太网卡和TCP卸载引擎(TCP Offload Engine ,TOE),交换机,服务器和桥接器。
[0140] 根据图2,被标识的数据单元具有数据单元控制信息元素,数据单元的头部或者净荷数据的任意组合,该数据单元被修改,调整,破坏或者修正。
[0141] 图6示出同时执行深度包检测和“直接转发”处理的系统能力。
[0142] FPGA适用于并行运行功能,并且因此能同时以及有效的执行多个处理,这个可作用于前文所述的并行处理方式之上,从而在两方面减少时延。
[0143] 图7示出通信设备150防止已经被破坏的数据单元重传的方式。在通信协议中可靠的传输机制,例如TCP所使用的那些,提供了以一无效形式接收或者被确定为途中丢失的数据单元的发送方所要发布的重传指令。
[0144] 在所示出的实例中,修改636通信设备150所接收的数据单元204(因为已经确定净荷为无效),使得一旦输出该数据单元,数据单元将由网络以导致数据单元后续被网络丢掉的方式处理(例如,通过破坏数据单元的尾部校验码)。
[0145] 可靠的重传协议将引起当丢掉的数据没有被接收方接收时,发送方重传该丢掉的数据。被重传的数据单元由于会包含相同的无效的净荷,其将以与前面的数据单元204相同的方式,再一次穿过通信设备,以及该重传的数据单元再一次被通信设备修改。这实际上导致了无效循环。
[0146] 因此,如果数据单元被破坏,则该数据单元也被缓存到存储器并且由标识模块发出指令640来修改所接收的数据单元缓存备份的净荷数据。为了防止重传,通信设备然后输出已接收的数据单元204的缓存备份,该缓存备份已被修改644使得修改后的缓存备份644被预期接收方有效地接收(即,数据单元没有被损害,以便免于重传),同时也确保修改后的缓存备份644被认为是错误的。
[0147] 修改数据单元修改后的缓存备份644的净荷数据(或者在TCP/IP头部的CRC)以确保数据单元的缓存备份644被预期接收方拒绝并且发布错误通知到数据单元204的发送方。
[0148] 例如,通信设备修改被指向交易所交易资产的新订单的数据单元(因为违背了风险校验),使得网络丢掉数据单元。在应用层(例如,金融信息交换(Financial Information eXchange,FIX)通信协议)修改包括新订单的数据单元的缓存备份,以允许FIX应用拒绝该数据单元,例如,通过指定零数量交易,其将不会被接收方(例如金融交易所)操作。
[0149] 发送错误消息到发送方以通知发送方已指定了不正确数量的数据单元,通过识别出这个错误作为对已发送的数据单元的响应来防止重传,发送方(例如交易者)不受来自重传环路的限制,可以继续发送另外的有效订单。因此,当TCP会话保持打开的同时,接收方拒绝了无效订单。待过滤数据单元的应用层修改将该错误转移到应用层,在应用层,因为特定的数据单元被认为是无效的所以发送方可以识别出该特定的数据单元已被破坏。
[0150] 可替换地,通过通信设备150发送包含TCP复位的数据单元到客户端120和主机110,阻止重传,由此断开网络通信连接。
[0151] 图8到图10原理性示出在时间轴上通信设备150操作的另外多个实施例,包括使用TCP或者其他可保持顺序的传输协议的数据流恢复。照此方式,通过使用TCP数据单元顺序恢复,示出通信设备的非顺序数据单元的管理。
[0152] 图8示出非顺序数据单元的接收,将数据单元存储在存储器以用于进一步的处理(使用系统保存功能,其中转发数据单元的元素以用于在存储器元件中存储)。如果初始延迟估计624被证明是错误的,这会特别有助于纠正序列顺序。
[0153] 在输入处接收数据单元204的字节,随后“直接转发”处理该数据单元204的字节到输出控制,具有引入的延迟624。当正在接收数据单元时,在输入处解析数据单元的控制信息并处理。一旦处理控制信息,例如TCP会话616,通信设备确定具有特定顺序的数据单元是预期的,名义上是具有序列号0的数据单元。这个被套接字引擎处理,套接字引擎询问接收的数据单元的序列号字段并且将数据单元的序列号相关的信息与来自SHT428的会话状态信息进行比较,以便确定数据单元是否按顺序接收。随后接收包括数据净荷的剩余输入数据单元字节,并且当接收它时,一旦确定相对于期望的数据单元(如通过接收具有序列号“100”的数据单元所示出的)该数据单元是非顺序的,转发净荷到存储控制器416。因为接收的数据单元是非顺序的,没有转发数据单元到标识模块处理(该标识模块是操作顺序的数据单元的)。根据来自套接字存储模块414的指令,存储控制器保存输入数据单元204的净荷数据字节到外部存储器元件332或者在PLD内的存储器元件而不修改,而不是直接转发数据单元204到标识模块。依赖发送来自存储器元件332的数据单元的指令,发送非顺序的数据单元。基于先入先出,同时的将数据单元204字节从输出处发出。
[0154] 图9原理性的示出通信设备150通过恢复连续的数据单元处理非顺序数据单元(如果存在丢失的数据单元以及这些数据单元在数量上很少)的方式。正在从网络接收的数据单元具有自己的字节,根据“直接转发”处理,这些字节被接收时立即被转发到输出控制模块。如果数据单元是无效的,例如校验码或者CRC236,将输入的数据单元字节发向输出控制408,具有引入的延迟624,使得完成标识操作和直到待修改数据单元的元素的输出处理一致。
[0155] 同时解析和处理输入数据单元字节直到数据单元净荷数据元素620的开始。 转发数据净荷字节到标识模块以及存储器元件。根据前面描述的深度包检测在标识模块检测该净荷数据620,做出关于是否标识数据单元的决定。如果当具有序列号“100” 820的非顺序的数据单元之前已经被接收,确定该数据单元是丢失的数据单元810(在图9,如数据单元序列号0所示),那么存储该非顺序的数据单元820。套接字引擎426发布命令到套接字存储和/或套接字保存模块418/414以恢复和/或保存来自和/或输出到存储器的数据单元。
[0156] 通过从数据单元所存储的外部存储器元件中恢复出数据单元,要求重传该数据单元的净荷元素,该数据单元形成非顺序数据单元820的一部分。该恢复出的非顺序数据单元820仅被转发到标识模块420。
[0157] 恢复出的非顺序数据单元820以前已经被转发到接收方,但是该非顺序数据单元820没有被接受直到丢失的数据单元810被接收到。当考虑到丢失的序列810或者后续的数据单元是无效的,可以停止丢失的序列810或者后续的数据单元的传输(或者数据单元被破坏),并且复位网络会话;这阻止了预期接收方处理错误排序的数据单元。
[0158] 根据深度包检测来检测非顺序数据单元820,以确定该数据单元820是否能作为正确序列的一部分被输出。如果不能,对输出的数据单元的标识处理和后续修改(使得其被网络丢掉)被重复执行,使得数据单元能被存储和被重复处理直到发现其在正确顺序上。
[0159] 一旦处理恢复出的数据单元净荷元素820,将它插入到接收的净荷数据620的正确序列。一旦确定数据单元是有效的且符合关于中间实体的规则,当输出待输出数据单元时,不标识该数据单元且不修改该待输出数据单元。由此,可以通过网络发送数据单元并且被主机接受。
[0160] 图10与图9相似,示出明显非序列的数据单元的处理方式,其中输出控制408停止输出以便方便数据单元的恢复处理,该恢复处理需要的时间比图9相关的处理需要的时间长。需要更长的时间是因为存在大量的非顺序数据单元,正如接收的非顺序数据单元920和另一个非顺序数据单元930所示出。
[0161] 转发正在输入到通信设备的丢失的数据单元204到标识模块并且对该丢失的数据单元204 “直接转发”处理到输出控制408。数据单元920和930是之前接收的且借助于套接字引擎426和SHT428确定为非顺序的,并且然后被存储到存储器,当接收到丢失的数据单元时,借助于发送到套接字恢复模块418的命令恢复数据单元920和930到正确的顺序。
[0162] 通过尽早修改,输出控制模块408破坏正在接收204的数据单元,通常在正在输出控制信息(例如TCP头部)时,破坏该数据单元,从而影响网络后续丢掉该数据单元。将来自标识模块或者套接字引擎的同步请求发送到外部存储控制器,使得具有正确序列号920和930的净荷元素,在大部分或者大量数据单元的情况下,被从存储器元件重新安置到标识模块420,并且指示在输出控制处恢复输入的数据单元。当正在发送输入数据单元到接收方时,在标识模块处处理具有适当的序列号920以及930的净荷元素,并且如果有效的,则被合并和实施到输入数据单元204的净荷数据元素620。
[0163] 图11a示出PLD执行的非顺序数据单元的处理流程的一个实施例。及时对正在由PLD1004接收的数据单元1004执行“直接转发”处理到输出控制和标识模块1008。正在接收的数据单元具有其已接收的字节,这些字节只要一接收到就被顺序地发送到存储控制器416并且及时的被存储在存储器元件1012。做出关于数据单元是否是非顺序的确定1016。
如果数据单元不是非顺序的,根据前面提及的标识模块的功能做出数据单元有效性1020的决定。如果数据单元是有效的,整个数据单元以未修改的形式输出1024。如果数据单元是无效的,当该数据单元正在输出时控制该数据单元。该数据单元后续被系统1028丢弃。
[0164] 如果确定数据单元是非顺序的,通信设备150使用快速恢复方法(正如参考图9所描述的)估计恢复出数据单元所使用的时间总量,例如,在此处数据单元顺序的错误程度很小,或者使用长恢复方法(正如参考图10所描述的)估计恢复出数据单元所使用的时间总量,例如在此处数据单元顺序中的错误很大。
[0165] 当“直接转发”以用于输出处理和标识1008时,从存储器元件1036中恢复出来正确的数据单元使得数据单元的正确顺序能够被恢复出来并且在正确的位置被置入到所接收的数据单元中。
[0166] 套接字恢复模块418试图从存储器1036恢复出连续的非顺序数据单元并且将恢复出的数据单元转发1056到标识模块,使得确定该恢复出的数据单元是否有效1020。执行恢复1036的操作以及转发恢复出的数据单元到标识模块1056的操作直到数据单元顺序错误被校正。
[0167] 图11b示出通信设备150对输入的数据单元的处理,以及尤其是识别出数据单元顺序错误时对数据单元的恢复。对用于每一TCP会话的输入的数据单元进行记录,其中包括已确收的数据单元的计数,其表明目的地所确收的数据单元的序列号;还包括已处理的数据单元,其表明通信设备接收的并且转发到标识模块的数据单元的序列号;以及包括最后接收的数据单元,其表示通信设备接收的最后数据单元的序列号,其可以被非顺序地接收并且从而不被传递到标识模块(但是被存储在存储器中以用于进一步的处理并且最后被恢复出来)。
[0168] 图12说明了当首次接收到数据单元时,通信设备在重传期间所执行的保存功能。特别的,说明了通信设备150通过存储控制器416保存输入数据单元204或者数据单元的元素到存储器元件的能力。套接字恢复模块418和标识模块420使用存储在存储器元件中的数据单元以用于数据流恢复,即重新建立数据单元的正确顺序(如参考图9以及图10所描述的)以及用于重传校验(如参考图13所描述的。)
根据图12所示,图13示出了来自存储器的数据单元的重传。该系统操作以校验存储在通信设备150的存储器元件中的数据单元204是否能被重传。套接字恢复模块418校验和/或比较所接收的数据单元。因此,允许或者阻止数据单元进行到标识模块420。
[0169] 图14示出套接字引擎426执行的示例性功能,以验证非顺序数据单元。将输入到通信设备的数据单元204存储到通信设备150的存储器元件。在一个实施例中,所示出的功能在套接字引擎426的输入处(以 “入” 示出)和套接字引擎426子系统输出处(以 “出” 示出)之间执行。套接字引擎426子系统输出引起标识模块420的输入。
[0170] 参考图14,如果序列号是一致的,所使用的数据单元的命名习惯使用数据单元的第一序列号和随后的长度 。三个数据单元使用序列号S100 1310,S300 1320以及S4001330存储在存储器中,在存储器中每个数据单元在长度上是100个单位(L100)。具有序列号S200 1340的数据单元被丢失。
[0171] 在第一实施例中,执行存储功能和恢复功能以及具有序列号S200 1340的数据单元正在非顺序的接收(被套接字引擎的输入处)中。将具有序列号S200 1340的数据单元存储到存储器元件和将具有序列号S200 1320的数据单元从存储器中恢复出。立即从套接字引擎输出具有序列号S200 1340, S300 1320以及S400 1330的数据单元,例如到主机FIX协议解析器(在一个实施例中,标识模块被实现为合并的FIX协议解析器和风险估计系统,例如用于处理交易限制)另一实施例示出校验和存储(以及,可选的,恢复)功能。具有序列号S150 1350 和长度 L100的数据单元正处于在标识模块的输入处接收的过程中-类似场景用于重传数据单元。标识模块或者套接字引擎操作校验功能以确定存储在存储器中的数据单元是否与正在接收1350的数据单元有重叠。在该实例中的校验将揭示数据单元S100 1310的单个部分具有与数据单元S150 1350的重叠元素(即S150-S200),执行在数据单元的重叠部分之间的比较以确保数据单元正确的接收。将输出单元S150 1350的超额量(即 S200-S250 1360),那是对内部系统存储器来说不被计入的数据单元的长度,即长度L50,被保存到系统(可选的恢复)中和被传输以用于输出。
[0172] 最后的实施例示出保存功能,其中具有序列号S200和长度L300 1380的数据单元正处于被接收的过程中。在这些情况下,如很多网络协议(包括 FIX协议)所规定的,正处于接收中的数据单元用于重写重叠的数据单元,即S300 1320和S400 1330,正如新数据单元覆盖已存储的数据单元。因此已接收的数据单元1380用于替换数据单元S300 1320和S400 1330,并且输出该已接收的数据单元1380。
[0173] 由于非顺序数据单元,图14以实施例的方式示出用于恢复传输的功能。总体来说,能够理解的是配置套接字引擎426和/或标识模块420使得已接收的数据单元被存储到存储器元件,使得当接收到非顺序数据单元,在接收非数据单元之后所接收的数据单元序列可以被重发。此外,可以相对于存储器校验数据单元,以有效地仅仅恢复出那些以非顺序方式接收的部分。
[0174] 图15示出通信设备用于订单处理的示例性流程。当客户端发送网络数据单元到主机时该流程被初始化,该网络数据单元正在被中间通信设备接收(步骤1504)。在一个实施例中,客户端发送的数据单元包括交易订单。该交易订单数据单元204具有网络控制信息,例如具有地址元素的头部。数据单元的净荷指示主机关于交易的目的(例如买或者卖订单)和指定类型,名字或者安全标识或者将要交易的工具(instrument),例如,债券,货币,产权,衍生品或者任何其他金融证券或者工具。通过深度包检测识别出数据单元的净荷数据指令,使得在交易订单的输出过程中,帮助确定数据单元是否被通信设备150标识或者修改。
[0175] 通信设备150接收来自客户端的数据单元204,其中,数据单元交易订单的状态被确定1508。交易订单的状态告知了通信设备150状态标识,最后接收的数据单元顺序,最后接收的确收,交易订单的源和目的,包括会话,客户端和/或主机信息。通过查阅存储在通信设备的规则模块1512中的信息,确定交易订单的特定会话以及定向传输状态,存储在通信设备的规则模块1512中的信息包括套接字哈希表(Socket Hash Table ,SHT)和规则哈希表(Rules Hash Table ,RHT)元素,其包括参数A的值1516。由于关于数据单元的状态的信息将形成如何处理数据单元的确定基础,参数A的值1516允许通信设备150将输入交易订单与关于数据单元所源自的会话的状态信息相关联。当所需要的确定数据单元状态的信息被放置在数据单元的不同元素中,例如,套接字信息被放置在头部,而订单指示的详情被包含在净荷中,只要设备150在完整的数据单元被接收之前具有足够的数据,通信设备就可以处理该数据单元。当接收剩下的数据单元时,它允许通信设备通过处理数据单元的可用部分来节省时间和减少诱发的时延。术语“会话”此处用于指网络会话和/或商业会话(例如,金融交易)。
[0176] 参数A的值包含既定会话的状态。参数A的值的状态是用于既定会话的客户端和主机之间历史数据交易的函数,并且包括会话信息,握手信息和数据交易序列信息。在MAC/TCP/IP网络协议结构中,关于数据单元源和目的信息的参数A的信息包括用于主机和客户端的MAC和/或TCP地址,状态标识,数据单元确收信息和关于数据单元序列的任何其他信息,该关于数据单元序列的任何其他信息允许通信设备150确定数据单元是否以正确的顺序接收,如果不是,图8-10示出了处理数据单元的机制。当通信设备接收和处理了来自数据单元的足够数量的数据的情况下,可以处理基本上在数据单元TCP头部中发现的会话的源,使得数据单元被关联到既定会话和参数A的值。一处理足量的数据单元净荷数据,就执行数据单元净荷数据的深度包检测1520,以便确定交易订单指令。
[0177] 通信设备150在SHT和/或RHT中查询参数A的值1516,它识别适用于交易订单会话的规则以及按照数据单元的状态确定相对于所关联的参数A的值1524,交易订单是否有效。例如,对于既定的主机定义的会话或者顺序规则,系统确定相对于参数A的值1524数据单元是否是可接受的。如果相对于它们所关联的参数A的值,数据单元的元素是无效的,则由标识模块识别数据单元以用于被输出控制修改,并且网络1532随后修改并且丢掉该数据单元。在这种情况下,没有执行交易并且立即通知1536客户端,例如,通过丢掉到主机的TCP会话的方式。
[0178] 如果相对于数据单元所关联的参数A的值,数据单元是有效的,则不标识该数据单元;相反的,采用进一步的用于确定的步骤1540来确定数据单元的交易订单是否会超过规则模块1512中参数B的值1544。参数B的值1544是用于来自特定客户端或者客户-主机组合的多个(如果不是所有的)会话的规则,并且包括作为历史数据交易的函数的规则,该历史数据交易是在多个客户端会话与一个主机或者多个主机会话之间的交易,如果不是所有的,与建立于客户端和主机之间的会话之间的交易。参数B的值能包括用到跨过客户端的多个或者所有会话的会话上的交易限制。用于既定交易机构的参数B的值能被关联到唯一的客户端或者其中的多个会话。用于确定是否超过1540参数B的值的步骤包括查询位于规则模块1512中的参数B的值1544,以确定交易订单如果执行,是否会违反对于既定客户端或者多个会话所适用的参数B值的规则。如果用于确定的步骤的结果返回违反参数B的值,那么标识和修改1528该数据单元。根据图2所示出的可能情况,输出修改后的数据单元,使得其被网络1532丢掉,因此阻止了执行交易以及超过所适用的参数B的值。及时的指示1536客户端。
[0179] 在一个特定的TCP会话或者邻居的TCP会话,参数A的值是指定会话的并且是客户端和主机间历史交易的函数。而参数B的值与一组会话相关,例如在客户端和主机间的所有会话。在启动时通过例如PCIe总线,通信设备150接口160初始化和控制参数A和参数B的值。为了执行参数A的值,对由通信设备150接收的并且输出的数据单元进行记录,并且由于这些数据单元所导致的仓位(例如金融交易仓位)的改变也被确定。
[0180] 输入的网络数据单元交易订单,符合规则模块1512元素的相关规则值-参数A的值和参数B的值-该输入的网络数据单元交易订单没有被标识模块标识,没有被输出控制1548调整,按照图2输出,由主机网络协议接受并且执行1552交易。及时的通知1536客户端和中间实体。由于参数A和参数B的值是客户端和主机之间的数据交易的函数,更新已执行的交易所关联的参数A和B的值,以代表用于既定会话和客户端的开放仓位的新值,其指导考虑下一个输入交易订单的有效性的用于确定的步骤。随着数据交换,更新参数B和/或参数A值所关联的当前值。
[0181] 多个规则中的每一个与既定会话和指令相关,该多个规则允许通信设备由于深度包检测而且不仅在头部级别的深度包检测,来标识和修改交易订单,使得基于在数据净荷层面的内容数据单元交易订单被丢掉。明显的,由于参数A值和参数B值,通信设备150也能分别的在客户端和会话层面标识数据单元。
[0182] 关键的,图15所示出的流程可以由通信设备在硬件层面上执行,这与中间实体使用在CPU上执行的软件实现的传统方法形成鲜明的对比。因此,这种设备通过使用“直接转发”深度包检测和随之发生的具有后续在远端网络装置的过滤后果的数据标识消除了对CPU网络处理的需求,导致超低时延功能。
[0183] 哈希表以示例性的形式示出,实际上存在任何数目的哈希表来存储帮助确定是否修改数据单元的任何数目参数,使得它改变了数据单元的网络处理。
[0184] 图16示出网络中的示例性的三方握手,包括:两个远端实体-客户端和主机-以及中间实体的通信设备。三方握手的目的是在实体之间建立面向TCP连接的连接;这个连接可以是已经建立的连接或者是一个完全的新连接。
[0185] 通信设备从客户端接收同步封包(SYN),以为客户端初始化与主机的连接。该同步封包1604具有序列号,a,代表任意和随机的号码。真正的随机序列号码不是必需的,但是随机性越高,安全性越高。
[0186] 通信设备150然后搜索1608套接字哈希表以确定是否存在用于封包所关联会话的以前连接的记录。如果封包在SHT中有关联的哈希值,那么该封包就被丢掉。如果封包在SHT中不具有哈希值,来自这个特定会话的连接一定是新的以及SYN封包正在尝试新的连接。可代替的,咨询1612规则哈希表使得通信设备150能使用参数B的值来确定后续的交易有效性。中间实体,例如中间商,可以通过通信设备150的接口160修改规则哈希表。RHT包含关于如何处理会话和来自会话的数据是否被标识和修改的信息。概括的说,RHT指定了应被绑定到会话的信息以使得帮助确定数据单元的有效性,例如,参数B的值。一旦在RHT中发现或者生成了哈希值,将所关联的会话信息添加到SHT1616并且将SYN封包从通信设备发向主机1620。
[0187] 主机接收SYN封包以及确认(ACK)接收到SYN封包,并且发布自己的SYN封包。一旦有效接收到客户端的同步请求,主机将客户端同步请求的接收ACK发布给客户端。客户同步请求接收的确收具有等于a+1的序列号,同时地,伴随确收1624派发由序列号b指示的主机同步请求。前述消息的派发经由通信设备发生,使得通过在SHT1608执行一搜索来发现相关的规则和识别会话。更新1628规则(即主机与客户端之间历史数据交易的函数)。
[0188] 客户端通过通信设备150从主机接收同步请求以及来自主机的确收。客户端通过响应序列号b+1 1636发布主机同步(ACK-SYN)请求的确收。通信设备接收该封包,在SHT中执行1608搜索,在SHT128中发现相关的项目并更新该项目。
[0189] 主机接收主机SYN1648 的客户端确收,从而完成了三方握手并且建立了新的连接或者重新建立一旧的连接。在客户端和主机间的交易经由中间实体上的通信设备150即可随之进行。
[0190] 图17示出示例性的网络协议处理流程,用于通过中间实体以及通信设备建立和关闭终端和主机之间的TCP网络连接。主机等待输入连接1410。主机从客户端1420接收同步(SYN)封包。主机通过发送客户端的SYN封包的确收来响应,这被通信设备接收以及通过中间通信设备建立1430客户端和主机之间的连接。
[0191] 数据交易发生,并且通过通信设备150主机接收客户端发出的数据交易已完成的通知,该通知采用ACK封包的方式,并且关闭1450连接。
[0192] 相反的,如果主机和/或通信设备150从客户端接收无效的SYN封包,通信设备立即关闭连接1450。在检验有效性时,通信设备和/或主机检验SYN状态标识,窗口缩放选项和/或SYN封包的大小。
[0193] 图18示出针对参数A值和参数B值的示例性表格的数据单元检测的示例性原理。数据单元1708由头部元素1716,数据净荷1740和采用校验码或者CRC1748的尾部组成,其中头部元素1716包括:低级别的OSI层头部,例如MAC头部1724,以及较高的OSI层级别头部,例如TCP头部1732。数据单元的其他数据元素也被呈现出来与通常的以太网帧一致,例如IP头部。而且,可替换的数据单元结构也是可能的,其包括UDP数据报。
[0194] 当通信设备正在接收数据单元时,通信设备150处理数据单元1708以使得数据单元被按字节处理。最低级别头部首先被接收和处理,即,MAC头部1724, 被下一个头部元素(例如TCP头部1732)追随。处理MAC头部1724和/或TCP头部1732的元素以确定在客户端层面的数据单元的源和目的,IP头部也能被应用于相似的上下文和/或源和目的会话,端口,或者从TCP头部1732获得的相似的信息。如果客户端的源和目的是固定的,会话的目的或者源的使用能用于简化处理。当接收并且处理足够数量的MAC头部1724和/或TCP头部1732字节,通过哈希键的方式,通过将MAC头部1724中的信息和/或TCP头部1732关联到哈希值以确定数据单元的源,以及因此响应于计算出的哈希值,在规则模块212发现适用于数据单元的规则。图18的实施例示出所计算出的用于数据单元1708的哈希值– H3 –识别数据单元源自客户端1以及会话3,照此,在规则模块212中执行搜索,尤其是在套接字哈希表428中执行搜索,以识别客户端1是否具有以前建立的连接。如果客户端具有以前与通信设备建立的连接,那么套接字表428将拥有与从数据单元1708计算出的哈希值相关的信息和规则,以及信息和规则适用于数据单元所源自的客户端和/或会话。与既定客户端相关的规则由参数B值提供,并且示出与“客户端1”相关的哈希值具有参数B值“3,000,000”。如果数据单元不具有以前建立的连接,后续使用RHT和相关的参数B的过程如图17所示。采用与参数A值相同的方式查询参数B值,但是没有特定的会话以及仅具有特定的客户端和/或主机。
[0195] 与既定客户端的私人会话相关的规则由参数A值提供。通过计算哈希值确定特定客户端会话所关联的哈希值,计算哈希值不仅根据具有客户端信息的头部,当计算哈希值以用于为数据单元1708获取参数A以及参数B时,也根据属于特定会话的那些特征,例如,TCP头部1732, 其包括会话源和/或目的。在这个实例中,由哈希值H3确定数据单元是“会话3”。通信设备由此能够关联客户端,通信设备和主机间的数据交换的历史信息。例如,交易的数量,数据单元状态标识,会话地址以及数据单元的会话所关联的数据单元序列信息规则能与参数A值相关联。因此,关于是否标识数据单元的深度包检测的结果依赖于以前已经通过通信设备传输的数据单元。
[0196] 当正在接收数据单元元素时,采用深度包检测的方式检查数据单元的净荷元素1740。在金融交易的情况下,数据单元净荷数据1740包含交易订单,例如,表示将被处理的特定工具(instrument),在该实例中为“工具X”。将交易订单与适用于来自“客户端1”的数据单元的参数B值,“客户端1”与主机之间的历史数据交易以及包含在输入单元中的指令或者信息比较。在示出的实施例中,参数B值是与输入数据单元的哈希值H3相关的限制值。与哈希值的客户端-客户端1-相关联的参数B值是用于交易订单的限制值,该限制值超过中间商为客户端定义的交易订单的限制值,“3,000,000”。一旦进一步检测数据单元的净荷数据1740,能够确定关于交易订单的进一步信息以便充分利用规则。“买”1764订单指示将要买“60,000”单位1772。用于输入的数据单元的客户端源的参数B所关联的开放仓位的当前参数B值-依赖于历史交易执行的动态值-与可适用的参数B值相比,以及进一步对照数据单元1764和1772的交易订单。能够看出假定当前参数B值是“2,963,121”单位,“买”“60,000”单位的订单将超过参数B的限制值- “3,000,000”单位。
[0197] 使用这个信息,标识模块确定因为数据单元违反了中间实体140的规则,所以要修改数据单元。在数据单元的尾部从输出控制输出之前,输出控制破坏1780数据单元的尾部,例如,校验码,CRC或者类似。通信设备150输出已破坏的尾部以及后续数据单元一到达它预期的主机目的地就被网络丢弃,其中,数据单元的处理返回错误的尾部,例如校验码,并且从而使数据单元无效。所以,没有执行交易订单。如果将要执行交易,通信设备150也可以更新它的参数B的当前值。
[0198] 同样地,如果与数据单元相关的会话信息(具体是TCP头部1732)与参数A的规则不一致,标识和修改交易订单。例如,如果发现已经接收的数据单元作为不正确序列或者黑名单的会话的一部分。
[0199] 图18所示出的哈希表是示例性的;可以使用任何数目的参数来确定相对于中间实体的规则数据单元是否有效。而且,每一参数可以对应唯一的哈希值,其是使用包含在数据单元的任何信息或者其信息的组合确定的。例如,唯一的哈希值可以对应参数B值-例如使用MAC头部1724确定的-以及参数A值-例如使用来自TCP头部1732的会话信息获得的。参数A和B也仅仅是示例性参数,可以使用任何数量的参数以及该任何数量的参数与多个规则,数据单元的元素,会话,客户端,主机或者组合以及其延伸相关联。另外的参数能基于特定的交易工具,开放仓位的数量,交易量,客户-主机组合和/或会话-主机组合,其中每一个可以被排除或者具有相关的限制值。
[0200] 替代以及修改可以使用多个网络协议堆层代替前面提及的实施例。可替换的网络协议堆层包括超文本传输协议(HyperText Transfer Protocol, HTTP),文件传输协议(File Transfer Protocol, FTP),实时传输协议(Real-time Transport Protocol,RTP) ,数据报拥塞控制协议(Datagram Congestion Control Protocol, DCCP)以及任何衍生和包括“简化(lite)”网络协议栈层的修改形式。总体来说,PLD能处理任何客户网络协议。
[0201] 系统的应用层协议需要与客户端和主机的网络系统相符合。在电子金融工具交易中,正如被交易广泛使用的,兼容对外信息交易(Foreign Information eXchange,FIX)是重要的。也考虑这些系统的衍生,例如FIX算法交易定义语言(FIX algorithmic trading definition language ,FIXatdl)协议,FIXML,以及适流FIX(FIX Adapted for Streaming,FAST)。总体来说,然而,任何应用层协议都是可以接受的。一些金融交易所具有它们自己的类FIX或者二进制协议,例如,伦敦股票交易所,芝加哥商业交易所,纽约泛欧证交所(NYSE Euronext), Chi-X/BATS。通信设备150可以具有能够支持这些协议的能力。
[0202] FIX协议或者相似物,还包含有它自己的校验码形式和基于签名的安全校验,这些被包含在它的数据单元中,通信设备150也可以将两者都修改来影响数据单元的有效性。
[0203] 替换的网络设计也可以应用到此处描述的系统。在客户端,通信设备和主机之间的本地连接也是可能的,例如,通过如PCIe, LVDS,直接的芯片到芯片连接等等的总线。
[0204] 通过通信设备系统也适用于位于双方例如客户端和主机之间的柜台(Over The Counter ,OTC)交易,其中主机和通信设备是同一机构的一部分,例如投资行,市场创造者或者中间商。
[0205] 通信设备150可以使用在多个领域,例如用于网络安全的低时延过滤和网络处理应用(使得过滤掉潜在的危险或者不期望的传输),或者用于需要具有高吞吐量和低时延的高性能服务之处,例如,用于搜索(包括高能粒子对撞机,天文学,遗传等等),数据挖掘和媒体处理。
[0206] 可以理解的是,本发明前面纯粹以实施例的方式描述,在本发明的范围内可以做出细节的修改。
[0207] 说明书中描述的每一特征和(其中适当的)权利要求和附图可以以独立的或者任意组合的方式提供。
[0208] 在权利要求中的参考标号仅仅采用示意的方式,并且不作为权利要求范围上的限制。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈