用于自动交易系统的通信接口及报文校验方法转让专利

申请号 : CN200980150033.1

文献号 : CN102246194B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 马修·查普曼马修·约翰·赫德

申请人 : 索莫亚私人有限公司

摘要 :

公开了一种用于自动交易系统的通信接口(1)。所述9通信接口(1)具有专用硬件(1)阵列以处理外部网络(2)与所述自动交易系统中的匹配引擎(3)之间的报文(4)。

权利要求 :

1.一种用于自动交易系统的通信接口,包括:

专用物理层接口,其被设置为用于进出外部网络的报文的通信,所述专用物理层接口包括面向专用硬件的外部网络,所述专用硬件被设置为直接接收来自所述外部网络的报文,接收到的每一报文包括多个信息域;以及,解析和验证引擎,其在专用硬件中实施并被设置为校验用于传输给所述自动交易系统中的匹配引擎处的多个信息域,所述解析和验证引擎被设置为与相应的信息域的接收同步地校验包含在接收到的每一报文中的多个信息域,且还被设置为在接收到所述信息域时,将所述信息域与参考进行比较,从而独立于整个报文的接收来校验所述信息域。

2.根据权利要求1的通信接口,其中,所述解析和验证引擎在专用硬件可编程门阵列中实施。

3.根据权利要求1的通信接口,其中,所述解析和验证引擎被设置为与相对应的信息域的接收同步地将来自进入报文的信息域转换为适合于所述匹配引擎的请求格式。

4.根据权利要求1的通信接口,包括专用硬件通知引擎,其被设置为生成用于通过所述外部网络传输给客户系统的通知报文。

5.根据权利要求4的通信接口,其中,所述专用硬件通知引擎被设置为从自动交易系统中的匹配引擎处接收交易信息并且与网络传输同步地组成用于向外发送到网络的报文。

6.根据权利要求1的通信接口,其中,所述解析和验证引擎被设置为与新报文的序列号域的接收同步地检验报文序列号,且还被设置为独立于所述报文的其他域的接收,将所述报文序列号与相应客户的参考序列号进行比较。

7.根据权利要求3的通信接口,其中,所述解析和验证引擎被设置为与接收同步地由包含在接收到的报文中的数据域的子集生成所述请求格式。

8.根据权利要求7的通信接口,其中,所述解析和验证引擎被设置为由包含在接收到的报文中的客户序列号生成紧凑的客户索引,以嵌入所述请求格式中。

9.根据权利要求7的通信接口,其中,所述解析和验证引擎被设置为由包含在接收到的报文中的票据编码生成暂态票据索引,以嵌入所述请求格式中。

10.根据权利要求7的通信接口,其中,所述解析和验证引擎被设置为由接收到的报文中抽取价格、数量和客户参考,以嵌入所述请求格式中。

11.一种用于自动交易系统的报文校验方法,包括:

在将自动交易系统连接到外部网络的专用硬件物理层接口中,接收来自多个客户系统的报文,每一所述报文包括多个信息域;以及在专用硬件解析和验证引擎中,与相应信息域的接收同步地校验每一所述报文的多个信息域,并且通过在接收到信息域时将所述信息域与参考进行比较,独立于整个报文的接收而校验所述信息域。

12.根据权利要求11的方法,包括:在专用硬件通知引擎中生成用于传输给客户系统的通知报文,所述通知报文由从自动交易系统中的匹配引擎处接收到的交易信息生成。

13.根据权利要求12的方法,包括:从所述匹配引擎接收交易信息以及与网络传输同步地生成用于传输给客户系统的通知报文。

14.根据权利要求11的方法,包括:与新报文的序列号域的接收同步地检验报文序列号,且独立于报文的其他域的接收,将所述新报文的序列号与相应客户的参考序列号进行比较。

15.根据权利要求14的方法,包括:当客户系列号与对应客户的参考序列号不匹配时,挂起从所述匹配引擎接收到的报文。

16.根据权利要求11的方法,包括:将接收到的报文转化为用于传输给解析和验证引擎中的匹配引擎的请求格式,所述请求格式将接收到的报文中的数据压缩为紧凑格式。

17.根据权利要求16的方法,包括:由包含在接收到的报文中的客户序列号生成紧凑的客户索引,以嵌入所述请求格式中。

18.根据权利要求16的方法,包括:由包含在接收到的报文中的票据编码生成暂态票据索引,以嵌入所述请求格式中。

19.根据权利要求16的方法,包括:由接收到的报文中抽取价格、数量和客户参考,以嵌入所述请求格式中。

20.根据权利要求16的方法,包括:当校验从客户处接收到的报文时,通过所述校验引擎的操纵,增加客户参考序列号。

21.一种用于自动交易系统的通信接口,包括:

专用物理层接口,其被设置为用于通过外部网络传输进出多个客户系统的报文,所述物理层接口被设置为直接接收来自所述外部网络的报文,接收到的每一报文包括多个信息域;

解析和校验引擎,其在专用硬件中实施并被设置为与对应信息域的接收同步地校验包含在每一所述报文中的多个信息域,其还被设置为独立于整个报文的接收而校验所述信息域;以及,专用硬件通知引擎,其被设置为从自动交易系统中的匹配引擎处接收交易信息并生成用于传输给客户系统的通知报文。

22.根据权利要求21的通信接口,其中,所述通知引擎被设置为接收交易信息并且与网络传输同步地组成用于向外发送到网络的报文。

说明书 :

用于自动交易系统的通信接口及报文校验方法

技术领域

[0001] 本发明概括地涉及用于市场交易的自动交易系统中的改进,且具体但非唯一地,涉及用于自动交易系统的通信接口及报文校验方法。

背景技术

[0002] 自动交易系统(ATS)因便于市场上买方和卖方的实时匹配而众所周知,在其中交易一种或更多的上市票据(例如股票、证券等)。
[0003] 目前的ATS利用电子通信网络(ECN)。ECN执行中央限价委托簿(CLOB),其包括卖方和买方之间的标准双向拍卖,其中卖方希望以特定价格出售金融票据,而买方希望以特定价格购买一个或更多的金融票据。
[0004] 在主要交易市场中,例如Nasdaq、ASX和其它市场,需要强大的计算系统以在交易期间实施很多已执行的交易。
[0005] 计算系统的速度非常重要。在交易的执行中有两个重要的因素,分别是价格优先权和时间优先权。价格优先权意味着在交易中给予希望以最好的价格出售的人或希望以最好的价格购买的人优先权。时间优先权意味着当有两个以同样价格的卖方或买方时,则将对订单第一个达到CLOB的第一个买方或卖方首先执行交易。因此,ECN的处理速度是关键。
[0006] ECN客户通过电子提交订单,从而以特定的条件(例如最高/最低价格)购买或出售特定数量的上市票据。这些订单放置在队列中。在最开始通知客户其订单已被确认。
[0007] 当发现能够通过满足其价格条件而匹配在一起的买方和卖方时,交易发生。通知买卖双方其订单已被成功执行。
[0008] 订单价格和交易的匿名概要(“市场数据”)也被传播给其他感兴趣的客户。
[0009] ECN性能的度量包括延迟和处理量。延迟是交易的反应时间。这可在多个不同的环境下测量:从下单到接收初始确认,从下单到接收执行通知,或从下单到其以市场数据的方式传播。处理量是ECN每秒能够支持的最大订单或交易数量。
[0010] 许多ECN的客户期望低的延迟和高的处理量,从而他们可以频繁且安心地交易,对其订单状态具有较少的不确定性并且能够对变化的情况快速地反应。
[0011] 目前ECN在一般具有通用操作系统的通用处理器结构上以软件实施。尽管这简化了安装启用,但这些解决方案表现出最佳数百微秒,且一般为毫秒级的高的延迟。当使用通用操作系统时,这也增加了恶意攻击者可能危害运行该ECN软件的计算机的机会;由于这一原因,通常在客户和ECN系统之间增加额外的防火墙系统,其进一步增加了延迟。

发明内容

[0012] 根据第一方面,本发明提供了一种用于自动交易系统的通信接口,所述通信接口被设置为用于进出外部网络的报文的通信,所述通信接口包括面向专用硬件的外部网络,该专用硬件被设置为直接接收来自外部网络的报文,并包括在专用硬件中实施并被设置为处理用于传输到所述自动交易系统中的匹配引擎的报文的解析和验证引擎。
[0013] 在一个实施例中,所述专用硬件为用于为金融交易报文的处理进行编程的可编程逻辑器件(PLD)。在一个实施例中,所述专用硬件由可编程门阵列(PGA)实施,在一个实施例中,由现场可编程门阵列(FPGA)实施。
[0014] 在一个实施例中,专用硬件的使用能够以硬件速度便利地处理进入和流出的报文,提高了自动交易系统的总体速度,其在一个实施方式中为电子通信网络(ECN)。
[0015] 在一个实施例中,所述专用硬件的配置实施解析和验证引擎,该解析和验证引擎被配置为将输入报文(例如来自经纪人的订单)转换为请求格式,在一个实施例中,所述请求格式更简单并且适合于匹配引擎。
[0016] 在一个实施例中,所述专用硬件被设置为实施通知引擎,所述通知引擎用于从匹配引擎接收交易信息并组成用于向外发送到网络上的适当报文。
[0017] 在一个实施例中,所述专用硬件被设置为实施安全功能,且其被设置为核实进入报文为真实的。在一个实施例中,通过实施进入报文的加总比对检查(check summing check)来实施安全功能,其采用特定的交换协议。
[0018] 使用专用硬件的处理有利地促进了具有低延迟的很高的数据处理量。而且,诸如PLD的硬件能够相对容易地与网络接口。通过设置PLD作为ECN的面向客户的部分,可实现与客户的高带宽和低延迟的通信。另外,在一个实施例中,由于APLD具有最低限度的且可验证的网络实施,暴露于可能的攻击者的攻击表面最少,因此其将防火墙的功能包括在内。
[0019] 在一个实施例中,通过提供另一个通信接口和另一个匹配引擎来提供冗余,所述另一个通信接口和通信接口是连接的。在一个实施例中,所述另一个通信接口和通信接口通过串行连接而连接。在一个实施例中,还提供了再一个通信接口和匹配引擎,以提供另一个冗余。在一个实施例中,所述另一个通信接口通过串行连接而连接到其它的通信接口。
[0020] 在一个实施例中,匹配引擎也可由专用硬件实施。在一个实施例中,匹配引擎也可由PLD实施,且在一个实施例中,由FPGA实施。
[0021] 根据第二方面,本发明提供了一种处理自动交易系统和外部网络之间的通信的方法,其包括的步骤为:
[0022] 以硬件或接近硬件的速度从外部网络直接接收报文,并处理所述报文,其包括以硬件或接近硬件的速度解析用于传输到自动交易系统中的匹配引擎的报文的步骤。
[0023] 在一个实施例中,由专用硬件配置实施所述处理,所述专用硬件配置可由可编程逻辑器件(PLD)实施。
[0024] 根据第三方面,本发明提供了一种用于自动交易系统的匹配引擎,所述匹配引擎包括专用硬件,所述专用硬件被设置为执行用于票据交易的标准双向拍卖程序。
[0025] 在一个实施例中,所述专用硬件为可编程逻辑器件(PLD)。在一个实施例中,所述专用硬件为现场可编程门阵列(FPGA)。
[0026] 根据第四方面,本发明提供了一种用于自动交易系统的安全配置,所述安全配置包括被设置为将进入报文从外部网络接收到自动交易系统的通信接口,并包括被设置为校验所述进入报文的专用硬件。
[0027] 在一个实施例中,由加总比对检查来执行所述校验。
[0028] 在一个实施例中,所述专用硬件为可编程逻辑器件(PLD)。在一个实施例中,所述可编程逻辑器件为现场可编程门阵列(FPGA)。

附图说明

[0029] 从下面参考所附附图仅举例说明的其实施例的描述中,本发明的特征和优势将变得明显,其中:
[0030] 图1为包括根据本发明的一个实施例的装置的自动交易系统的高阶框图;
[0031] 图2为图1中的系统的更详细的框图;
[0032] 图3为根据本发明的另一个实施例的装置的框图。

具体实施方式

[0033] 参考图1,例示了由参考标号1标识的用于自动交易系统的通信接口。在本实例中,通信接口1在专用硬件中以现场可编程门阵列1(FPGA)的形式实施,其被编程以提供外部网络2和匹配引擎3之间的接口;其在该实例中由通用处理器上的软件(例如通用服务器和计算机程序实施,以实施用于市场交易的标准双向拍卖)。
[0034] 由FPGA实施的通信和报文接口1和由通用处理系统和软件实施的匹配引擎一起构成用于实施自动交易系统(ATS)的电子通信网络(ECN)。
[0035] 通信和报文接口1的功能为从网络2接收报文、处理它们并将它们传递到匹配引擎3上。其还具有从匹配引擎3接收报文、处理它们并将它们传递回网络2的功能。
[0036] ECN的客户(例如经纪人、交易人等)提交订单以购买或出售特定数量的上市票据,例如股票或证券。这些订单作为订单报文4提交。所述订单报文通常将根据特定的买卖交易而为已知的格式。稍后将更详细地描述用于订单报文4的一般格式。
[0037] 响应于接收订单4,ECN通常将提供应答ACK5,确认ECN已接收订单4。而且,作为标准双向拍卖交易过程的一部分,当订单已被处理并传递到匹配引擎时,ECN将提供确认报文6。
[0038] 当交易发生后,即:当匹配引擎将购买和出售相匹配且因此执行交易时,将执行报文7传回外部网络2,从而使客户得知所述交易。当交易发生后,执行报文7通知买卖双方其订单已被成功执行。
[0039] ECN的反应时间为性能的重要度量。这包括用于提供ACK5的反应时间,还包括用于提供确认报文6的反应时间。该度量也可以为从下单到接收执行报文7的时间。
[0040] 如先前所讨论,目前使用一般软件在通用处理器上运行ECN。目前这些解决方案展示出最佳为数百微秒并一般为毫秒级的高的延迟。在时间很关键的领域(字面意思为“时间是金钱”),这样的延迟需要改进。
[0041] 在本实施例中,FPGA1直接或通过一个或更多的物理层收发器连接到网络2(例如以太网)。在本实施例中,使用高端PLD(例如来自Xilinx的Virtex5FPGA)以提供具有低的延迟的很高的数据处理量。申请人已发现通过将PLD设置为ECN的面向客户的部分,可实现与客户的高带宽且低延迟的通信。
[0042] 除了通信和匹配,图1的实施例还执行ECN的其它功能,例如存储被处理的信息和制作来自被处理交易的市场数据。
[0043] 图2更详细地示出了图1中的ECN。
[0044] FPGA1包括通过物理层接口12连接到网络的解析和验证引擎10以及通知引擎11。客户(例如经纪人等)通过网络2发送报文到ECN系统。存在不同类型的用于操作(例如提交新订单和修改先前的订单)的报文。
[0045] 解析和验证引擎10将这些报文转换成较简单的请求格式。在该过程中,通过例如进行加总比对检查,其也验证来自于授权客户并包含合理的数据的报文。然后订单被发送到用于被请求的票据的匹配引擎12。在该实施例中,匹配引擎位于通用处理器上并由一般软件实施。
[0046] 匹配引擎根据请求更新其报价单队列。
[0047] 匹配引擎13将一组产生的交易传达到通知引擎11(由FPGA实施),而且还传达到储存引擎14(其也在使用一般软件的通用处理器上实施)。
[0048] 通知引擎11发送通知报文(例如执行报文7)到请求中的客户和任何其他可能与订单相匹配的客户。其还传播市场数据到其他客户。
[0049] 储存引擎14确保所有交易被安全储存在磁盘上或其它稳定的储存介质上。
[0050] 使用FPGA来实施解析和验证引擎10以及通知引擎11,产生了低得多的用于ECN的延迟,并可在很低的时间周期(在几微秒或更少的订单中)中产生确认报文6和ACK5,而且还改进了执行,因为相较于使用传统系统,订单更快地到达了匹配引擎。执行7报文也更快地返回。
[0051] 在该实施例中,解析和验证引擎10以及通知引擎11由FPGA实施。即通信和报文接口1由FPGA实施。
[0052] 在另一个实施例中,匹配引擎13也可以在FPGA(或其它可编程或逻辑装置或专用硬件)中实施,其进一步提高了速度。在另一个实施例中,储存引擎也可以在(例如PLD、FPGA等的)专用硬件中实施。总的来讲,ECN的功能性可以在PLD和通用处理器之间进行各种划分,这取决于性能和实施便利性之间所期望的权衡。
[0053] 下面的描述为由FPGA1利用实例报文的处理的更详细的说明。
[0054] 解析/验证电子邮件
[0055] 设计FPGA1中的解析/验证引擎10,以便与网络接收同步运行。对于千兆比特以太网,125Mhz的FPGA时钟频率是期望的,其允许每个时钟周期接收和处理8比特(1字节)的数据。
[0056] 在该实施例中有两类通过FPGA1处理的ECN报文:新订单报文和修改/取消订单报文。ECN报文被封装在标准因特网协议(UDP/IP)数据包中。一个实例的新订单报文如下:
[0057]
[0058] 首先,跳过以太网、IP和UDP协议报头;这是很直接的,尽管IP报头可以为可变长度。
[0059] 然后接收ECN协议域。
[0060] 第一域-会话ID-为不透明记号,其表示客户和交易所之间的会话。使用该第一域,可在储存于FPGA中的客户信息序列中查询与客户相关的数据。当序列号域被接收时,FPGA接着验证该序列号与客户期望的序列号相匹配。如果该检查未通过,则忽略其余报文并且立刻将通知报文返回给客户。否则,期望的序列号增加1,以为下一条报文做准备,并且继续进行处理。会话ID被转换成用于识别客户的更简洁的“客户索引”,否则丢弃这两个域。
[0061] 下面的四个字节表示报文所涉及的票据编码。这可能是例如“MSFT”的股票代码,或一些其它的标识符。使用有效的查阅表(LUT),FPGA确定票据编码是否有效。如果是的话,它将其转换为被称为票据索引的更加简洁的形式。这样的形式使后续处理更加有效,但是该数字仅为短暂有效的,而客户期望使用标准的票据编码。
[0062] 报文中的其它域传达交易类型(买或卖)、价格、数量和客户参考(提供给客户的域,该域在关于订单的任何通信中被发送给客户)。当接收每个剩余的域后,根据以下的模式创立内部表示方式。可逐字地传递很多输入域。然而,在域上执行一些验证以确保其具有合理的值;例如,确保交易类型可以是买或卖中的任一。这使稍后需要在匹配引擎中实施的验证最少化。一些域,例如保留域,仅为了将来的扩展而存在于协议中,并且可从内部形式中省略。
[0063] 一旦所有域都被接收,添加内部序列号。所得到的16字节的内部记录被写到记忆区域的循环缓冲器上,该记忆区域与匹配引擎共享。
[0064]
[0065]
[0066] 该报文包括与新订单报文类似的域并被类似地处理。使用订单参考替代交易类型和价格,以指代已下的订单。这被逐字地设置在16字节的内部记录中,在这种情况下其如下面所示:
[0067]
[0068]
[0069] 匹配引擎访问由解析/验证引擎生成的16字节的记录。对于每个其读取的记录,其在其内部队列上执行被请求的更新,并在输出循环缓冲器(通知队列)内生成16字节的记录。下面进一步描述通知的格式。
[0070] 如果报文类型为修改/取消订单,匹配引擎使用订单参考来定位现有订单,并使用新数量域更新其数量。如果该订单未被定位,属于不同客户,或者新数量大于先前的数量,则将修改-拒绝通知加入队列,否则,将修改-接受通知加入队列。
[0071] 如果报文类型为新订单,匹配引擎检查新订单是否与对侧上的排队订单匹配(例如,对于购买订单,其检查票据卖方的队列)。如果是的话,订单-执行通知排在两方的队列中。如果价格与目前市场价格相差太远,则产生订单-拒绝。
[0072] 否则,将订单加到队列中并产生订单-接受通知。
[0073] 这些通知遵照简单记录格式,其类似于对匹配引擎的输入格式。
[0074]
[0075]
[0076] FPGA中的通知引擎从通知队列中读取记录并发送报文到客户。使用客户索引以指向客户信息阵列,该客户信息阵列包括以太网地址、IP地址和UDP端口号(以用于联系客户)以及下一个流出序列号。内部票据索引映射回由客户使用的4字节的票据编码中。其它域被逐字地传递。
[0077] 由FPGA逻辑产生流出报文,该FPGA逻辑与网络传输同步执行,产生所需要的每个输出字节而不需要在存储器中预构建报文。来自通知记录的域被替换到合适的时隙内的流出报文中。流出报文的一个实例如下:
[0078]
[0079] 可以理解包含在上面的说明中的报文只是实例,而其它格式的报文或其它报文可以由根据本发明的其它实施例的配置处理。
[0080] 在一个实施例中,诸如上面所描述的实施例的系统可以被多次复制,以产生冗余。可以理解,诸如这样的系统中的冗余可能是重要的,以确保(在部分系统或整个系统发生故障的情况下)市场交易能够继续进行并确保交易记录被保存。
[0081] 图3示出了根据本发明的另一个实施例的系统的示意性框图。在该实例中,系统包括三个系统单元30、31和32。每个系统单元包括通信和报文接口1、匹配引擎和用于实施其它ECN功能的配置3。换句话说,系统单元30、31和32为图1中系统的三个复制品。
[0082] 在该实施例中,每个系统单元30、31和32的FPGA的1通过接口33和34串行连接。这确保了存在用于所有进入和流出系统的报文的备份系统。例如,如果系统30故障,系统31和32将获得所有可得到的报文,以继续处理市场交易数据。
[0083] 诸如上面所描述的实施例可用于进行任何票据的交易,包括但不限于股票、证券、货币、期权、期货、债券、其它衍生物、CFD、货物、半导体芯片和其它。
[0084] 在上面的实施例中,通信接口由FPGA实施。其可由任何可编程逻辑器件实施,并且实际上可由任何专用硬件实施。例如,可以使用定制芯片来实施通信接口的功能性。类似地,当使用专用硬件(例如匹配引擎和/或存储引擎)来实施ECN的其它部分时,这些部分也可使用任何类型的专用硬件来实施,例如定制电路、任何PLD的专用硬件以及FPGA的专用硬件。
[0085] 在本发明的下面的权利要求和前面的说明中,除了因表述语言或必需的暗示的上下文要求之外,单词“包括”或其变型(例如“包含”或“含有”)以广义意义使用,即用于在本发明的各种实施例中具体说明所陈述的特征的存在而不排除其他特征的存在或增加。
[0086] 本领域技术人员可以理解,在不背离如被宽泛描述的本发明的主旨和范围的情况下,可以对如特定实施例中所示的本发明进行多种变型和/或修改。因此当前实施例在所有方面被视为例示而不是限制。