通信设备的制造方法_4

文档序号:9423216阅读:来源:国知局
而言这些同时发生的处理分支被配置在各自于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到标识模块以完成深度包检测,确定数据单元是否将被标识并且相应的指导输出所需的时间。通常,这个延迟少于10ns以及更有可能不到50ns。以这种方式,标识模块确定的结果与直到数据单元尾部元素(其包括校验码)开始时所完成的输出处理相一致。可以凭经验根据被检查的应用层协议,例如净荷数据,和/或具体的通信设备处理器(例如,FPGA和ASIC方案,其具有较低的处理速度且对一般的操作比快速处理器采用更多数量的时钟周期)估计转发数据单元到输出和到标识模块624间的延迟。如果这个估计是不正确的,可以执行另外的几个步骤(如参照图9所描述的)。
[0134]如果标识模块验证了数据单元,标识模块没有指示输出控制来修改数据单元。这个“直接转发”系统的优点是在输出数据单元时,数据单元同时也在穿过标识模块,使得除了能被修改的数据单元元素以外数据单元被完整的输出,所以允许标识模块一输出,数据单元后续就被网络丢掉,例如,由于校验码或者CRC被“标错”或者破坏。
[0135]如果数据单元是有效的,正如标识模块所确定的,则不修改数据单元,由此,以有效形式628保留数据单元的校验码236。当通信设备接收字节时,无论数据单元的有效性,数据单元的字节从输出控制被输出。假如待修改的数据单元元素还没有输出,仅仅修改该待修改的数据单元的元素。例如,破坏数据单元的最后字节(包括校验码或者CRC),使得主机接收以及识别数据单元是已破坏的或者错误的,并且因此丢掉它。
[0136]允许在标识单元确定和直到校验码的数据单元输出处理之间的不一致上的偏差。然而,如果待修改的数据单元元素(例如校验码或者CRC)将从输出控制输出并且标识模块还没有完成用于确定的步骤,则剩余的元素需要被修改,否则主机将在没有中间实体140所确定的数据单元的有效性的情况下而接受数据单元。因此该设备充当为故障保护。
[0137]太长的延迟会导致增加的时延。在标识模块的用于确定的步骤和直到待修改数据单元元素的数据单元输出处理之间完成时间的任何非零差对于系统的时延或者准确性是不利的。
[0138]因为进入通信设备150中的数据速率等于输出通信设备150的数据速率,所以不能暂停或者延迟来自输出控制的数据单元字节输出。
[0139]一旦每一个数据单元字节被处理以用于输出,该每一个数据单元字节从通信设备转发到数据单元的预期目的地,并由此被接收方认可。如果数据单元的元素会被修改,正如标识模块所标识的以及输出控制所操作的,则网络丢掉该数据单元,由于修改后的数据单元以及其中一错误的校验码被发送到预期接收方,主机根据网络协议处理丢掉该数据单元。相反的,还没有被标识或者确信修改的数据单元保持有效形式,以及后续被主机接受。系统因此将数据单元过滤处理分担到后续阶段上的其他网络实体,例如网卡,包括以太网卡和TCP卸载引擎(TCP Offload Engine,Τ0Ε),交换机,服务器和桥接器。
[0140]根据图2,被标识的数据单元具有数据单元控制信息元素,数据单元的头部或者净荷数据的任意组合,该数据单元被修改,调整,破坏或者修正。
[0141]图6示出同时执行深度包检测和“直接转发”处理的系统能力。
[0142]FPGA适用于并行运行功能,并且因此能同时以及有效的执行多个处理,这个可作用于前文所述的并行处理方式之上,从而在两方面减少时延。
[0143]图7示出通信设备150防止已经被破坏的数据单元重传的方式。在通信协议中可靠的传输机制,例如TCP所使用的那些,提供了以一无效形式接收或者被确定为途中丢失的数据单元的发送方所要发布的重传指令。
[0144]在所示出的实例中,修改636通信设备150所接收的数据单元204(因为已经确定净荷为无效),使得一旦输出该数据单元,数据单元将由网络以导致数据单元后续被网络丢掉的方式处理(例如,通过破坏数据单元的尾部校验码)。
[0145]可靠的重传协议将引起当丢掉的数据没有被接收方接收时,发送方重传该丢掉的数据。被重传的数据单元由于会包含相同的无效的净荷,其将以与前面的数据单元204相同的方式,再一次穿过通信设备,以及该重传的数据单元再一次被通信设备修改。这实际上导致了无效循环。
[0146]因此,如果数据单元被破坏,则该数据单元也被缓存到存储器并且由标识模块发出指令640来修改所接收的数据单元缓存备份的净荷数据。为了防止重传,通信设备然后输出已接收的数据单元204的缓存备份,该缓存备份已被修改644使得修改后的缓存备份644被预期接收方有效地接收(S卩,数据单元没有被损害,以便免于重传),同时也确保修改后的缓存备份644被认为是错误的。
[0147]修改数据单元修改后的缓存备份644的净荷数据(或者在TCP/IP头部的CRC)以确保数据单元的缓存备份644被预期接收方拒绝并且发布错误通知到数据单元204的发送方。
[0148]例如,通信设备修改被指向交易所交易资产的新订单的数据单元(因为违背了风险校验),使得网络丢掉数据单元。在应用层(例如,金融信息交换(Financial Informat1nexchange,FIX)通信协议)修改包括新订单的数据单元的缓存备份,以允许FIX应用拒绝该数据单元,例如,通过指定零数量交易,其将不会被接收方(例如金融交易所)操作。
[0149]发送错误消息到发送方以通知发送方已指定了不正确数量的数据单元,通过识别出这个错误作为对已发送的数据单元的响应来防止重传,发送方(例如交易者)不受来自重传环路的限制,可以继续发送另外的有效订单。因此,当TCP会话保持打开的同时,接收方拒绝了无效订单。待过滤数据单元的应用层修改将该错误转移到应用层,在应用层,因为特定的数据单元被认为是无效的所以发送方可以识别出该特定的数据单元已被破坏。
[0150]可替换地,通过通信设备150发送包含TCP复位的数据单元到客户端120和主机110,阻止重传,由此断开网络通信连接。
[0151]图8到图10原理性示出在时间轴上通信设备150操作的另外多个实施例,包括使用TCP或者其他可保持顺序的传输协议的数据流恢复。照此方式,通过使用TCP数据单元顺序恢复,示出通信设备的非顺序数据单元的管理。
[0152]图8示出非顺序数据单元的接收,将数据单元存储在存储器以用于进一步的处理(使用系统保存功能,其中转发数据单元的元素以用于在存储器元件中存储)。如果初始延迟估计624被证明是错误的,这会特别有助于纠正序列顺序。
[0153]在输入处接收数据单元204的字节,随后“直接转发”处理该数据单元204的字节到输出控制,具有引入的延迟624。当正在接收数据单元时,在输入处解析数据单元的控制信息并处理。一旦处理控制信息,例如TCP会话616,通信设备确定具有特定顺序的数据单元是预期的,名义上是具有序列号O的数据单元。这个被套接字引擎处理,套接字引擎询问接收的数据单元的序列号字段并且将数据单元的序列号相关的信息与来自SHT428的会话状态信息进行比较,以便确定数据单元是否按顺序接收。随后接收包括数据净荷的剩余输入数据单元字节,并且当接收它时,一旦确定相对于期望的数据单元(如通过接收具有序列号“100”的数据单元所示出的)该数据单元是非顺序的,转发净荷到存储控制器416。因为接收的数据单元是非顺序的,没有转发数据单元到标识模块处理(该标识模块是操作顺序的数据单元的)。根据来自套接字存储模块414的指令,存储控制器保存输入数据单元204的净荷数据字节到外部存储器元件332或者在PLD内的存储器元件而不修改,而不是直接转发数据单元204到标识模块。依赖发送来自存储器元件332的数据单元的指令,发送非顺序的数据单元。基于先入先出,同时的将数据单元204字节从输出处发出。
[0154]图9原理性的示出通信设备150通过恢复连续的数据单元处理非顺序数据单元(如果存在丢失的数据单元以及这些数据单元在数量上很少)的方式。正在从网络接收的数据单元具有自己的字节,根据“直接转发”处理,这些字节被接收时立即被转发到输出控制模块。如果数据单元是无效的,例如校验码或者CRC236,将输入的数据单元字节发向输出控制408,具有引入的延迟624,使得完成标识操作和直到待修改数据单元的元素的输出处理一致。
[0155]同时解析和处理输入数据单元字节直到数据单元净荷数据元素620的开始。转发数据净荷字节到标识模块以及存储器元件。根据前面描述的深度包检测在标识模块检测该净荷数据620,做出关于是否标识数据单元的决定。如果当具有序列号“100” 820的非顺序的数据单元之前已经被接收,确定该数据单元是丢失的数据单元810 (在图9,如数据单元序列号O所示),那么存储该非顺序的数据单元820。套接字引擎426发布命令到套接字存储和/或套接字保存模块418/414以恢复和/或保存来自和/或输出到存储器的数据单
J L ο
[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]图1la示出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]图1lb示出通信设备150对输入的数据单元的处理,以及尤其是识别出数据单元顺序错误时对数据单元的恢复。对用于每一 TCP会话的输入的数据单元进行记录,其中包括已确收的数据单元的计数,其表明目的地所确收的数据单元的序列号;还包括已处理的数据单元,其表明通信设备接收的并且转发到标识模块的数据单元的序列号;以及包括最后接收的数据单元,其表示通信设备接收的最后数据单元的序列号,其可以被非顺序地接收并且从而不被传递到标识模块(但是被存储在存储器中以用于进一步的处理并且最后被恢复出来)。
[0168]图12说明了当首次接收到数据单元时,通信设备在重传期间所执行的保存功能。特别的,说明了通信设备150通过存储控制器416保存输
当前第4页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1