CN110383779A - 数据处理装置、网络系统、分组顺序控制电路和数据处理方法 - Google Patents
数据处理装置、网络系统、分组顺序控制电路和数据处理方法 Download PDFInfo
- Publication number
- CN110383779A CN110383779A CN201880015077.2A CN201880015077A CN110383779A CN 110383779 A CN110383779 A CN 110383779A CN 201880015077 A CN201880015077 A CN 201880015077A CN 110383779 A CN110383779 A CN 110383779A
- Authority
- CN
- China
- Prior art keywords
- grouping
- packet
- data processing
- buffer
- data
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/14—Handling requests for interconnection or transfer
- G06F13/16—Handling requests for interconnection or transfer for access to memory bus
- G06F13/1668—Details of memory controller
- G06F13/1673—Details of memory controller using buffers
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/10—Program control for peripheral devices
- G06F13/12—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor
- G06F13/124—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine
- G06F13/128—Program control for peripheral devices using hardware independent of the central processor, e.g. channel or peripheral processor where hardware is a sequential transfer control unit, e.g. microprocessor, peripheral processor or state-machine for dedicated transfers to a network
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
分组顺序控制电路(12H)具有用于临时存储分组的缓冲器(32)。比较电路(31)将输入分组的分组ID与指示根据顺序接下来将选择的分组的分组ID的下一选择ID进行比较。如果比较结果指示分组ID与下一选择ID不匹配,控制电路(36)将输入分组存储在与分组ID相对应的存储位置中。如果分组ID与下一选择ID匹配,控制电路(36)选择该输入分组作为传送过程的对象而不在缓冲器(32)中存储该分组。如果下一选择ID与存储在缓冲器(32)中的分组的分组ID匹配,则控制电路(36)选择该分组作为传送过程的对象。这在较少存储资源的情况下确保了分组处理顺序。
Description
技术领域
本发明涉及在通过使多个数据处理装置相互协作来提供网络服务时使用的分组顺序控制技术。
背景技术
传统上,为用户提供的网络服务功能通过诸如路由器和网关之类的专用硬件来配置。然而,最近,使得这些功能作为通用服务器上的软件进行操作以便降低安装成本的NFV(网络功能虚拟化)技术受到了关注。
作为通过自由组合分布在网络上的多个NFV应用来灵活提供网络服务的系统,正在研究以对应于包括在网络服务中的功能的适当顺序、通过分组来传送服务数据的SFC(服务功能链)技术(例如参见专利文献1)。
通常,使用SFC技术的系统包括基于任意算法执行服务处理的数据处理功能(SF:服务功能)、基于报头信息传送包含服务数据的分组的分组传送功能(SFF:服务功能转发器),以及控制整个网络系统的控制功能。
已经开发了SFC技术以虚拟化大部分与网络服务有关的功能并进行可能的灵活服务操作。然而,即使将SFC技术应用于网络功能之外的功能,也可能期望有类似效果。一个示例是使图像处理功能虚拟化并在网络上对图像进行分类。原本,用户必须获取所有对象图像并在此后对包含目标物体的图像进行分类。然而,通过在网络上对图像进行分类,用户可以仅接收必需的图像,由此减少在他或她的终端上的处理。
相关技术文献
专利文献
专利文献1:日本专利申请公开No.2016-46736
非专利文献
非专利文献1:“DPDK程序员指南15.重新排序库”,在线,2015年,因特尔公司,2016年12月21日检索,互联网<URL:http://dpdk.org/doc/guides/prog_guide/reorder_lib.html>
发明内容
发明要解决的问题
上面描述的图像处理功能通常要求很大的计算量并因而不适合软件处理,因此期望通过使用诸如ASIC(专用集成电路)、GPU(图形处理单元)或FPGA(现场可编程门阵列)之类的硬件来执行计算。因此,用于执行数据处理的网络装置除了软件处理功能之外,必须具有硬件处理功能。
而且,当在网络上交换数据时通常使用分组通信。在分组通信中,数据被划分成小单元的分组并单独传输。由于分组处理顺序可能由于各种因素而变化,因此接收侧必须通过改变分组顺序来组装正确的数据。
在OSI(开放系统互连)参考模型中,IP(互联网协议)是网络层的主要协议,TCP(传输控制协议)是传输层的协议。在使用此TCP的通信中,可以在传输层确保分组处理顺序。然而,TCP通常是要求复杂处理的通信协议,因此不适合于延迟至关重要的应用。
对于上面描述的应用,有时执行使用传输层中的另一协议UDP(用户数据报协议)的通信。然而,UDP不能确保分组处理顺序,因此应用层必须确保数据的正确性。
相应地,当执行在硬件上接收UDP分组的数据处理时,与应用结合的分组顺序控制机制是必需的。
传统上,在DPDK(数据平面开发套件)中提供重新排序库,作为用于控制分组处理顺序的系统(例如参见非专利文献1)。此DPDK是专门用于网络处理的软件库组,其可以实现非常高速的网络处理。
更具体地,重新排序库按如下进行操作。首先,输入分组根据序列号存储在顺序缓冲器中。接着,顺序缓冲器的内容被移动到就绪缓冲器的空闲区域中。此后,应用从就绪缓冲器取出分组。
上面描述的DPDK的重新排序库可以确保分组处理顺序,但是配置要求两个缓冲器,也即,顺序缓冲器和就绪缓冲器。因此,重新排序库存在如下问题:它不适合存储资源严格受限的硬件实施,并且不能在少量存储资源的情况下确保分组处理顺序。
本发明解决了此问题,并且其目的在于提供一种能够在少量存储资源的情况下确保分组处理顺序的分组顺序控制技术。
问题的解决方案
为了实现该目的,根据本发明的数据处理装置包括:一个或多个输入/输出电路,配置成经由通信链路执行数据通信;以及硬件处理单元,配置成通过硬件实现用于构成由用户使用的网络服务的数据处理,其中硬件处理单元包括:数据处理电路,配置成基于输入数据执行数据处理;分组传送电路,配置成接收包含用于执行数据处理的数据的分组以及发送包含通过数据处理获取的数据的分组;以及分组顺序控制电路,配置成根据包含在分组的报头信息中的分组ID的顺序来依次选择通过分组传送电路接收和输入的分组,以及执行向数据处理电路传送包含在所选择的分组中的数据的传送过程;分组顺序控制电路包括:缓冲器,配置成临时存储分组;比较电路,配置成将输入分组的分组ID与指示根据顺序接下来将选择的分组的分组ID的下一选择ID进行比较;以及控制电路,配置成在比较电路的比较结果指示分组ID与下一选择ID不匹配时将输入分组存储在缓冲器中与该分组ID相对应的存储位置中,以及在分组ID与下一选择ID匹配时选择该输入分组作为传送过程的对象而不在缓冲器中存储该分组,以及在下一选择ID与存储在缓冲器中的分组的分组ID匹配时,控制电路选择该分组作为传送过程的对象。
根据本发明的网络系统包括分布在网络上的多个数据处理装置,并且通过数据处理装置的协作为用户提供各种网络服务,其中至少一个或多个数据处理装置包括上面提到的通过硬件实现用于构成网络服务的数据处理的数据处理装置。
根据本发明的分组顺序控制电路包括:缓冲器,配置用于临时存储将进行预设处理的分组;比较电路,配置成将包含在输入分组中的分组ID与指示根据分组ID的顺序接下来将选择的分组的分组ID的下一选择ID进行比较;以及控制电路,配置成在比较电路的比较结果指示分组ID与下一选择ID不匹配时将输入分组存储在缓冲器中与该分组ID相对应的存储位置中,以及在分组ID与下一选择ID匹配时选择该输入分组作为处理的对象而不在缓冲器中存储该分组,其中如果下一选择ID与存储在缓冲器中的分组的分组ID匹配,则控制电路选择该分组作为处理的对象。
根据本发明的数据处理方法是在数据处理装置中使用的数据处理方法,该数据处理装置包括:一个或多个输入/输出电路,配置成经由通信链路执行数据通信;以及硬件处理单元,配置成通过硬件实现用于构成由用户使用的网络服务的数据处理,该方法包括:数据处理步骤,其使得数据处理电路基于输入数据执行数据处理;分组传送步骤,其使得分组传送电路接收包含用于执行数据处理的数据的分组,以及发送包含通过数据处理获取的数据的分组;以及分组顺序控制步骤,其使得分组顺序控制电路根据包含在分组的报头信息中的分组ID的顺序来依次选择通过分组传送步骤接收和输入的分组,以及执行向数据处理步骤传送包含在所选择的分组中的数据的传送过程,其中分组顺序控制步骤包括:比较步骤,其使得比较电路将输入分组的分组ID与指示根据顺序接下来将选择的分组的分组ID的下一选择ID进行比较;以及控制步骤,其使得控制电路在比较电路的比较结果指示分组ID与下一选择ID不匹配时将输入分组存储在用于临时存储分组的缓冲器中与该分组ID相对应的存储位置中,以及在分组ID与下一选择ID匹配时选择该输入分组作为传送过程的对象而不在缓冲器中存储该分组,并且如果下一选择ID与存储在缓冲器中的分组的分组ID匹配,则控制步骤选择该分组作为传送过程的对象。
发明效果
根据本发明,根据分组ID顺序,基于分组ID和下一选择ID来准确地确定是将输入到分组顺序控制电路的分组选择为向数据处理电路传送的对象,还是在缓冲器中临时存储该分组。因此,当选择一个分组作为传送对象时,该分组可以被传送到数据处理单元而无需存储在缓冲器中。同样,存储在缓冲器中的分组的存储位置可以基于该分组ID而唯一指定。相应地,可以直接从缓冲器中选择与下一选择ID相对应的分组。
因此,通过仅安装一个缓冲器,依次输入的分组可以根据包含在这些分组的报头信息中的分组ID的顺序而被依次地选择。这使得有可能即使在存储资源严格受限的硬件实施中,在少量存储资源的情况下也确保分组处理顺序。结果,即使是图像处理等要求具有很大计算量、不适合软件处理的数据处理的网络服务,也可以通过存储资源严格受限的硬件实施来实现。
附图说明
图1是示出网络系统的配置的框图;
图2是示出数据处理装置的布置的框图;
图3A是示出分组顺序控制电路的布置的框图;
图3B是示出分组顺序控制单元的布置的框图;
图4是用于解释在网络系统中使用的分组格式的视图;
图5是用于解释分组顺序控制单元的操作示例的视图;
图6是用于解释缓冲器的操作示例的视图;
图7是示出分组顺序控制单元中的分组接收过程的流程图;
图8是示出分组顺序控制单元中的分组传送过程的流程图;以及
图9是用于解释连续发送两个图像的操作示例的视图。
具体实施方式
下面将参考附图解释本发明的实施例。
网络系统
首先,将参考图1来解释根据本实施例的网络系统1。
如图1所示,网络系统1具有以下功能:通过基于SFC(服务功能链)技术使得分布在网络上的多个数据处理功能相互协作,来为用户提供各种网络服务。注意,本发明中的网络服务不仅提供网络功能,而且包括在网络上运行的主机应用(诸如图像处理和运动图像处理)。
网络系统1包括:多个数据处理装置10,它们经由通信链路L相互连接,并执行用于构成由用户使用的网络服务的数据处理;SFC报头信息赋予装置22,用于为分组赋予SFC报头信息;以及控制装置20,基于指示用于构成网络服务的数据处理的协作的服务模式,控制数据处理装置10按预定顺序相互协作,由此为用户提供网络服务。
数据处理装置10包括以下单元作为主要功能单元:数据处理单元(SF)11S,执行用于构成由用户使用的网络服务的数据处理;分组顺序控制单元(SR)12S,基于每个分组的报头信息来改变处理顺序;分组传送单元(SFF)13S,传送将由数据处理单元11S处理的服务数据;数据处理电路(HF)11H,执行用于构成由用户使用的网络服务的数据处理;分组顺序控制电路(HR)12H,基于每个分组的报头信息来改变处理顺序;以及分组传送电路(HFF)13H,传送由数据处理电路11H处理的服务数据。
在网络系统1中,SFC报头信息赋予装置22为来自外部通信网络NW的分组赋予SFC报头信息。在网络系统1中,数据处理装置10的分组传送单元13S或分组传送电路13H基于此SFC报头信息执行路由。
由此,分组传送单元13S将分组经由分组顺序控制单元12S传送到同一装置的数据处理单元11S或分组传送单元13S,或者传送到另一数据处理装置10。同样,分组传送电路13H将分组经由分组顺序控制电路12H传送到同一装置的数据处理电路11H或分组传送电路13H,或者传送到另一数据处理装置10。
在此过程中,在一个或多个数据处理单元11S或数据处理电路11H中计算分组并将其发送至用户终端21。在此配置中,用户所需要的处理在网络上执行,因此减少了在用户终端21上的处理。
数据处理装置
下面将参考图2来解释根据本实施例的数据处理装置10。
如图2所示,数据处理装置10包括:软件处理单元10S,其配置成主要通过CPU(硬件)和程序(软件)的协作来实现用于构成由用户使用的网络服务的数据处理;硬件处理单元10H,其配置成主要通过硬件来实现用于构成由用户使用的网络服务的数据处理;以及一个或多个输入/输出电路15,其经由通信链路L来执行数据通信。例如,数据处理装置10通过组合通用服务器和FPGA(现场可编程门阵列)来实现。
软件处理单元10S包括以下单元作为主要功能单元:一个或多个数据处理单元(SF)11S,对包含服务数据的一个或多个分组共同执行数据处理;分组传送单元(SFF)13S,将经由输入/输出电路15从装置外部接收的分组传送至数据处理单元11S或另一数据处理装置10;分组顺序控制单元(SR)12S,针对每个数据处理单元11S进行设置,基于在对应的数据处理单元11S和分组传送单元13S之间交换的每个分组的报头信息来改变处理顺序;以及传送控制单元14S,经由输入/输出电路15从装置外部获取分组传送目的地信息。
硬件处理单元10H包括以下单元作为主要功能单元:一个或多个数据处理电路(HF)11H,对包含服务数据的一个或多个分组共同执行数据处理;分组传送电路(HFF)13H,将经由输入/输出电路15从装置外部接收的分组传送至数据处理电路11H或另一数据处理装置10;分组顺序控制电路(HR)12H,针对每个数据处理电路11H进行设置,当将从分组传送电路13H输入的分组数据传送至对应的数据处理电路11H时,根据包含在这些分组的报头信息中的分组ID的顺序来依次选择和传送数据;以及传送控制电路14H,经由输入/输出电路15从装置外部获取分组传送目的地信息。
在图2所示的配置示例中,两个数据处理单元11S形成在软件处理单元10S中,两个数据处理电路11H形成在硬件处理单元10H中。然而,数据处理单元11S和数据处理电路11H的数目不限于此。
而且,传送控制单元14S和传送控制电路14H具有交换分组传送目的地信息的功能。此外,输入/输出电路15具有交换分组的功能。
输入/输出电路15所接收的分组被传送到分组传送单元13S和分组传送电路13H中对应的一个。在软件处理单元10S中,分组传送单元13S基于输入分组的SFC报头信息,将输入分组传送到输入/输出电路15、分组顺序控制单元12S或分组传送电路13H。传送控制单元14S管理分组的传送目的地信息。在硬件处理单元10H中,分组传送电路13H基于输入分组的SFC报头信息,将输入分组传送到输入/输出电路15、分组顺序控制电路12H或分组传送单元13S。传送控制电路14H管理分组的传送目的地信息。
当软件处理单元10S通过使用分组来执行数据处理时,分组经由分组顺序控制单元12S从分组传送单元13S传送到数据处理单元11S。在此处理中,分组顺序控制单元12S控制分组处理顺序并解析分组。数据处理单元11S所计算的数据通过分组顺序控制单元12S形成分组,并传送到分组传送单元13S。
当硬件处理单元10H通过使用分组来执行数据处理时,分组经由分组顺序控制电路12H从分组传送电路13H传送到数据处理电路11H。在此处理中,分组顺序控制电路12H控制分组处理顺序并解析分组。数据处理电路11H所计算的数据通过分组顺序控制电路12H形成分组,并传送到分组传送电路13H。
在数据处理装置10中经过必要处理的分组经由输入/输出电路15传送到另一数据处理装置10。通过在每个数据处理装置10中重复此过程,用户所需的过程按顺序执行,最终计算结果发送到用户终端21。
分组顺序控制电路
下面将参考图3A来解释根据本实施例的分组顺序控制电路12H。
如图3A所示,分组顺序控制电路12H整体上通过硬件实现,并且主要包括如下电路:分组接收电路30、比较电路31、缓冲器32、分组选择电路33、数据分析电路34、数据发送电路35、控制电路36、数据接收电路37、分组生成电路38以及分组发送电路39。
注意,软件处理单元10S的分组顺序控制单元12S具有与分组顺序控制电路12H的功能相同的功能,因此将省略对其的详细描述。
也即,如图3B所示,分组顺序控制单元12S整体上通过CPU和程序的协作来实现,并且主要包括如下处理单元:分组接收单元70、比较单元71、缓冲器72、分组选择单元73、数据分析单元74、数据发送单元75、控制单元76、数据接收单元77、分组生成单元78以及分组发送单元79。这些处理单元分别对应于分组顺序控制电路12H的分组接收电路30、比较电路31、缓冲器32、分组选择电路33、数据分析电路34、数据发送电路35、控制电路36、数据接收电路37、分组生成电路38以及分组发送电路39。
分组接收电路30具有从分组传送电路13H接收分组并将接收的分组传送到比较电路31的功能,以及根据来自控制电路36的指令将分组传送到缓冲器32或分组选择电路33的功能。
缓冲器32整体上通过半导体存储器来形成,并且用作用于临时存储分组以便控制分组处理顺序的环形缓冲器。
比较电路31具有如下功能:从输入分组的报头信息获取分配给该分组的分组ID,将分组ID与比较电路31中所持有的下一选择ID进行比较,以及向控制电路36输出比较结果。下一选择ID是用于确定此时将向数据处理电路11H发送的分组的值,其指示分组处理顺序。
分组选择电路33具有如下功能:根据来自控制电路36的指令,选择从缓冲器32读出的分组和从分组接收电路30输入的分组之一,并向数据分析电路34输出该分组。
控制电路36具有如下功能:从比较电路31获取比较结果,如果由于分组ID与下一选择ID相匹配而发现接收的分组是传送对象,则通过控制分组选择电路33将该分组传送到数据分析电路34而不在缓冲器32中存储该分组;如果分组ID与下一选择ID不匹配,则通过控制分组接收电路30将该分组存储在缓冲器32中;以及如果存储在缓冲器32中的分组的分组ID与下一选择ID相匹配,则通过控制分组选择电路33从缓冲器32中读取出该分组并将该分组传送到数据分析电路34。
控制电路36还具有如下功能:当在缓冲器32中存储输入分组时,将该输入分组存储在缓冲器32的存储位置中,该存储位置从与下一选择ID相对应的参考位置前进了该分组ID与下一选择ID之间的差值;当从缓冲器32选择分组作为传送过程的对象时,将存储在缓冲器32中的分组的起始位置同与下一选择ID相对应的参考位置进行比较,如果起始位置与参考位置相匹配,则选择存储在该起始位置中的分组作为传送过程的对象。
数据分析电路34具有如下功能:从输入分组获取除了报头信息之外的数据,经由数据发送电路35将该数据发送到数据处理电路11H;以及向分组生成电路38传送从输入分组获取的报头信息。
分组生成电路38具有如下功能:通过组合经由数据接收电路37从数据处理电路11H接收的处理数据以及来自数据分析电路34的报头信息来生成分组。
分组发送电路39具有向分组传送电路13H发送通过分组生成电路38生成的分组的功能。
在网络系统1中使用的分组40使用通用以太网II帧格式。如图4所示的分组格式所指示的,分组40的数据部分41包括IP报头信息42、UDP报头信息43、用户定义报头信息44和数据部分45。IP报头信息42和UDP报头信息43是标准化报头信息,但是用户定义报头信息44是独有的报头信息,其存储在与OSI参考模型的第五层(会话层)、第六层(表示层)或第七层(应用层)相对应的区域中,并且在这些层的处理中使用。
根据本发明的分组的用户定义报头信息44包括各种类型的独有信息,例如通过SFC报头信息赋予装置22赋予的SFC报头信息46、以及在分组顺序控制电路12H中使用的分组ID 47。分组ID 47是在分组之间连续的顺序值,其与指示分组处理顺序的下一选择ID进行比较。数据部分45存储在数据处理单元11S和数据处理电路11H中的用于网络服务的数据处理中实际使用的数据。
本实施例的操作
下面将参考图5来解释根据本实施例的硬件处理单元10H的分组顺序控制电路12H的操作。注意,软件处理单元10S的分组顺序控制单元12S以与下文将解释的分组顺序控制电路12H相同的方式操作,因此省略对其的详细描述。
如图5所示,在时刻T和T+1,输入分组(50)的分组ID(=1和2)与指示分组处理顺序的下一选择ID(51)(=1和2)相匹配,因此传送这些输入分组作为输出数据(54)。在此情况下,下一选择ID更新为下一个分组ID。
另一方面,在时刻T+2到T+4,输入分组的分组ID(=6、4和5)与下一选择ID(=3)不匹配,因此这些输入分组存储在缓冲器32(52)中。稍后将描述指定分组存储地址的方法。
在时刻T+5,输入分组的分组ID(=3)与下一选择ID(=3)相匹配,因此传送该输入分组作为输出数据,并且下一选择ID更新为下一个分组ID(=4)。
由此,在时刻T+6,存储在缓冲器32中的分组的分组ID(=4)与下一选择ID(=4)相匹配,因此从缓冲器32取出该存储的分组(53)并作为输出数据传送。如果在该处理期间接下来的输入分组(分组ID=7)到达,则此分组不是输出对象,存储在缓冲器32中。
下面将参考图6来解释根据本实施例的缓冲器32的操作。
如图6所示,缓冲器32由环形缓冲器形成,并且通过参考地址(tp:参考位置)60、起始地址(sp:起始位置)61和结束地址(ep:结束位置)62进行管理。sp和ep分别指示分组存储区间的起始位置和紧接着结束位置的位置,tp是当假设输出对象分组存储在缓冲器32中时的存储位置。
当地址到达结束位置时,环形缓冲器返回到起始位置,因此在终点端tp、sp和ep的值之间的关系是其他位置中关系的反转。然而,这些变量之间仅“匹配”和“不匹配”是重要的,因此每个变量的值仅需要基于相同规则进行更新而没有任何问题。因此,在终点端处理中,当值到达结束位置时,仅需要返回到起始位置。
当向缓冲器32添加输入分组时,计算分组ID和下一选择ID之间的相对距离(=距tp的距离),并且将该结果转换成缓冲器32中的地址。接着,将分组存储在所获取的地址的位置中。与下一选择ID同步地更新tp,当tp和sp匹配时,从缓冲器32取出存储在sp位置中的分组。此后,将sp更新为下一起始分组的存储位置。
在图6的时刻T,缓冲器32是空的,tp、sp和ep指示相同位置(=2),并且输入分组的分组ID(=2)与指示分组处理顺序的下一选择ID(=2)相匹配,因此传送该输入分组作为输出数据。在这种情况下,更新sp和ep(=3),并且将下一选择ID和tp更新为下一个分组ID(=3)。
随后,在时刻T+1,输入分组的分组ID(=6)与下一选择ID(=3)不匹配,因此将该输入分组存储在缓冲器32中。在这种情况下,根据下一选择ID与该输入分组的分组ID之间的差值(=6-3=3),将该分组存储在沿着存储地址顺序、从tp(=3)顺时针向前的存储位置np(=6)。在这种情况下,使sp与分组所存储的位置(=6)相匹配,而使ep与下一存储位置(=7)相匹配。
类似地,在时刻T+2,出现了ID不匹配,因此将输入分组存储在从tp(=3)顺时针前进了差值4-3=1的存储位置np(=4)。在这种情况下,起始分组变化,因此使sp与存储分组ID为4的分组的位置(=4)相匹配。
之后在时刻T+3,出现ID不匹配,因此将输入分组存储在从tp(=3)顺时针前进了差值5-3=2的存储位置np(=5)。在这种情况下,起始和结束分组保持不变,因此sp和ep不需要修正。
随后,在时刻T+4,输入分组的分组ID(=3)与下一选择ID(=3)相匹配,因此该输入分组不在缓冲器32中存储,而是作为输出数据进行传送。在这种情况下,下一选择ID被更新为4,tp所指示的分组存储位置被更新为紧密相邻的存储位置(=4)。
之后在时刻T+5,在缓冲器32中,sp(=4)所指示的存储位置中的分组与tp所指示的分组存储位置(=4)相匹配,因此从缓冲器32中取出该分组(分组ID=4)并作为输出数据进行传送。在这种情况下,下一选择ID被更新为5,tp和sp所指示的分组存储位置被更新为紧密相邻的存储位置(=5)。
之后,输入分组的分组ID(=7)与下一选择ID(=5)不匹配,因此将该输入分组存储在从tp(=5)顺时针前进了差值7-5=2的存储位置np(=7)中。在这种情况下,使ep与下一存储位置(=8)相匹配。
上述操作使得有可能唯一地规定分组存储在缓冲器32中的位置,因此它们可以按照逐个分组的传送定时被传送到数据处理电路11H。
注意,可以假设一些分组没有到达。在这种情况下,当经过了预定时间或预定数量的分组存储在缓冲器32中时,通过强制更新下一选择ID,可以防止处理的暂停。
分组接收过程
下面将参考图7来解释根据本实施例的分组顺序控制电路12H的分组接收过程。
如图7所示,分组顺序控制电路12H首先初始化各种预设处理参数(步骤100),并且一直等待直到从分组传送电路13H接收到分组(步骤101:否)。
如果从分组传送电路13H接收到分组(步骤101:是),则分组顺序控制电路12H将所接收的输入分组的分组ID与下一选择ID进行比较(步骤102)。
如果分组ID与下一选择ID相匹配(步骤102:是),则分组顺序控制电路12H分析该输入分组(步骤103),向分组生成电路38传送该输入分组的报头信息(步骤104),以及向数据处理电路11H输出存储在该输入分组中的数据(步骤105)。
此后,分组顺序控制电路12H将下一选择ID更新为下一个分组ID,并同时更新tp(步骤106),并且基于外部控制信号等来确定是否终止操作(步骤107)。如果确定继续分组接收过程(步骤107:否),则过程返回到步骤101。如果确定终止分组接收过程(步骤107:是),则终止该系列分组接收过程。
另一方面,如果输入分组的分组ID与下一选择ID不匹配(步骤102:否),则分组顺序控制电路12H确定缓冲器32是否有空闲空间(步骤108)。
如果存在空闲空间(步骤108:是),则分组顺序控制电路12H通过上述方法计算缓冲器32中的分组存储位置(步骤109),将分组存储在该位置中(步骤110),执行对sp和ep的搜索和更新(步骤112),并前进到步骤107。如果没有空闲空间(步骤108:否),则分组顺序控制电路12H丢弃该分组(步骤112),并前进到步骤107。
分组传送过程
下面将参考图8来解释根据本实施例的分组顺序控制电路12H中的分组传送过程。
如图8所示,分组顺序控制电路12H首先初始化各种预设处理参数(步骤200),并且一直等待直到缓冲器32不再是空的,也即直到有分组存储在缓冲器32中(步骤201:是)。
如果有任何分组存储在缓冲器32中(步骤201:否),则分组顺序控制电路12H将缓冲器32中由sp所指示的起始分组的分组ID与由tp所指示的对象分组的下一选择ID进行比较(步骤202)。
如果分组ID与下一选择ID不匹配(步骤202:否),则过程返回到步骤201。
另一方面,如果分组ID与下一选择ID相匹配(步骤202:是),则分组顺序控制电路12H从缓冲器32中读出存储在sp位置中的分组(步骤203),通过数据分析电路34分析该分组(步骤204),向分组生成电路38传送该分组的报头信息(步骤205),以及向数据处理电路11H输出存储在该分组中的数据(步骤206)。
随后,分组顺序控制电路12H更新sp并搜索存储在缓冲器32中的下一起始分组(步骤207)。如果sp和ep匹配,则可以确定没有分组存储在缓冲器32中,因此分组顺序控制电路12H停止搜索。此外,分组顺序控制电路12H更新下一选择ID和tp(步骤208)。
之后,分组顺序控制电路12H基于外部控制信号等来确定是否终止操作(步骤209)。如果确定继续分组传送过程(步骤209:否),则过程返回到步骤201。如果确定终止分组传送过程(步骤209:是),则分组顺序控制电路12H终止该系列分组传送过程。
通过上述处理,分组顺序控制电路12H可以确保分组顺序,并且按合适的顺序向数据处理电路11H传送数据。
本实施例的操作示例
下面将参考图9来解释本实施例的操作示例。
在图像数据等的实时通信中经常使用的UDP通信中,没有安装用于指定分组顺序的措施。相应地,分组顺序有时候在通信路径上发生变化。当通过组装接收的分组来重现原始图像数据时,分组顺序对于提高处理效率尤其重要。
因此,通过应用本实施例,定义与应用有关的信息的报头(图4中所示的用户定义报头44)被添加到比UDP报头更高层的位置上,并且在分组顺序控制中使用。
图9示出了连续发送两个图像的示例。在此示例中,每个图像(帧ID=0或1)被划分成四个块(块ID=1到4),这些块作为分组按顺序发送。在这种情况下,帧ID和块ID保存在每个分组的用户定义报头44中。结果,数据处理单元11H可以指定每个分组所属于的图像和分组的坐标,以及分辨分组发送顺序。
例如,令N为包含在一个图像中的块数,也即块划分数,随后顺序分配一个整数值给分组ID,作为分组发送顺序,其通过下式计算:
分组ID=N×帧ID+块ID
在图9所示的示例中,每个图像包含4个块,因此N=4。相应地,首先发送的、包含帧ID=0且块ID=1的数据的分组的分组ID计算为:4×0+1=1。同样地,包含帧ID=1且块ID=1的数据的分组的ID计算为:4×1+1=5。
因此,通过使用按照上述计算的分组ID,分组顺序控制单元12H可以正确地确保分组顺序。
本实施例的效果
在如上所述的实施例中,用于临时存储分组的缓冲器32安装在分组顺序控制电路12H中,比较电路31将输入分组的分组ID与指示根据顺序接下来要选择的分组的分组ID的下一选择ID进行比较。如果比较结果指示分组ID与下一选择ID匹配,则控制电路36选择该分组作为传送过程的对象。如果分组ID与下一选择ID不匹配,则控制电路36将该分组存储在与该分组ID相对应的存储位置中。如果具有与下一选择ID相对应的分组ID的分组存储在缓冲器32中,则控制电路36选择该分组作为传送过程的对象。
更具体地,当在缓冲器32中存储分组时,控制电路36将该分组存储在从参考位置前进了分组ID与下一选择ID之间的差值的存储位置中。当从缓冲器32中选择分组作为传送过程的对象时,控制电路36将缓冲器32中存储的分组的起始位置同与下一选择ID相对应的参考位置进行比较。如果起始位置和参考位置匹配,则控制电路36选择存储在该起始位置中的分组作为传送过程的对象。
因此,根据分组ID的顺序,可以基于分组ID和下一选择ID来准确地确定是将输入到分组顺序控制电路12H的分组选择为传送到数据处理电路11H的对象,还是将该分组临时存储在缓冲器32中。相应地,如果分组被选择作为传送对象,则该分组可以被传送到数据处理电路11H而无需在缓冲器32中存储。此外,在缓冲器32中存储的分组的存储位置可以基于分组ID来唯一地指定,因此可以从缓冲器32中直接选择与下一选择ID相对应的分组。
因此,通过安装一个缓冲器32,依次输入的分组可以根据包含在这些分组的报头信息中的分组ID的顺序来依次地选择。相应地,即使在存储资源严格受限的硬件实现中,也可以在最小存储资源的情况下确保分组处理顺序。结果,即使是图像处理等要求具有极大计算量且不适合软件处理的数据处理的网络服务,也可以通过存储资源严格受限的硬件实施来实现。
本实施例的扩展
已经参考实施例解释了本发明,但本发明不限于上述实施例。可以对本发明的布置和细节做出在本发明范围内的、本领域技术人员能够理解的各种变化。
参考标号和符号的解释
1...网络系统,10...数据处理装置,10S...软件处理单元,10H...硬件处理单元,11S...数据处理单元(SF),11H...数据处理电路(HF),12S...分组顺序控制单元(SR),12H...分组顺序控制电路(HR),13S...分组传送单元(SFF),13H...分组传送电路(HFF),14S...传送控制单元,14H...传送控制电路,15...输入/输出电路,20...控制装置,21...用户终端,22...SFC报头信息赋予装置(CL),30...分组接收电路,31...比较电路,32...缓冲器,33...分组选择电路,34...数据分析电路,35...数据发送电路,36...控制电路,37...数据接收电路,38...分组生成电路,39...分组发送电路,40...分组,41...数据部分,42...IP报头信息,43...UDP报头信息,44...用户定义报头信息,45...数据部分,46...SFC报头信息,47...分组ID,70...分组接收单元,71,比较电路,72...缓冲器,73...分组选择单元,74...数据分析单元,75...数据发送单元,76...控制单元,77...数据接收单元,78...分组生成单元,79...分组发送单元,L...通信链路。
Claims (9)
1.一种数据处理装置,包括:
一个或多个输入/输出电路,配置成经由通信链路执行数据通信;以及
硬件处理单元,配置成通过硬件实现用于构成由用户使用的网络服务的数据处理,
其中所述硬件处理单元包括:
数据处理电路,配置成基于输入数据执行所述数据处理;
分组传送电路,配置成接收包含用于执行所述数据处理的数据的分组,以及发送包含通过所述数据处理获取的数据的分组;以及
分组顺序控制电路,配置成根据包含在分组的报头信息中的分组ID的顺序来依次选择通过所述分组传送电路接收和输入的分组,以及执行向所述数据处理电路传送包含在所选择的分组中的数据的传送过程,
所述分组顺序控制电路包括:
缓冲器,配置成临时存储分组;
比较电路,配置成将输入分组的分组ID与指示根据所述顺序接下来将选择的分组的分组ID的下一选择ID进行比较;以及
控制电路,配置成在所述比较电路的比较结果指示所述分组ID与所述下一选择ID不匹配时将所述输入分组存储在所述缓冲器中与所述分组ID相对应的存储位置中,以及在所述分组ID与所述下一选择ID匹配时选择所述输入分组作为所述传送过程的对象而不在所述缓冲器中存储该分组,
其中,在所述下一选择ID与存储在所述缓冲器中的分组的分组ID匹配时,所述控制电路选择所述分组作为所述传送过程的对象。
2.根据权利要求1所述的数据处理装置,其中,当在所述缓冲器中存储所述输入分组时,所述控制电路将所述输入分组存储在所述缓冲器中从与所述下一选择ID相对应的参考位置前进了所述分组ID与所述下一选择ID之间的差值的存储位置中。
3.根据权利要求1或2所述的数据处理装置,其中,当从所述缓冲器中选择分组作为所述传送过程的对象时,所述控制电路将存储在所述缓冲器中的每个分组的起始位置同与所述下一选择ID相对应的参考位置进行比较,以及如果起始位置与参考位置匹配,则选择存储在所述起始位置中的分组作为所述传送过程的对象。
4.根据权利要求1至3中任一项所述的数据处理装置,其中所述分组ID存储在所述分组中与OSI参考模型中的第五层、第六层或第七层相对应的区域中。
5.一种网络系统,包括分布在网络上的多个数据处理装置,并且通过允许这些数据处理装置协作来为用户提供各种网络服务,其中至少一个或多个所述数据处理装置包括通过硬件来实现用于构成所述网络服务的数据处理的、根据权利要求1至4中任一项所述的数据处理装置。
6.一种分组顺序控制电路,包括:
缓冲器,配置用于临时存储将进行预设处理的分组;
比较电路,配置成将包含在输入分组中的分组ID与指示根据分组ID的顺序接下来将选择的分组的分组ID的下一选择ID进行比较;以及
控制电路,配置成在所述比较电路的比较结果指示所述分组ID与所述下一选择ID不匹配时将所述输入分组存储在所述缓冲器中与所述分组ID相对应的存储位置中,以及在所述分组ID与所述下一选择ID匹配时选择所述输入分组作为所述处理的对象而不在所述缓冲器中存储该分组,
其中如果所述下一选择ID与存储在所述缓冲器中的分组的分组ID匹配,则所述控制电路选择所述分组作为所述处理的对象。
7.一种在数据处理装置中使用的数据处理方法,所述数据处理装置包括:一个或多个输入/输出电路,配置成经由通信链路执行数据通信;以及硬件处理单元,配置成通过硬件实现用于构成由用户使用的网络服务的数据处理,所述数据处理方法包括:
数据处理步骤,其使得数据处理电路基于输入数据来执行所述数据处理;
分组传送步骤,其使得分组传送电路接收包含用于执行所述数据处理的数据的分组,以及发送包含通过所述数据处理获取的数据的分组;以及
分组顺序控制步骤,其使得分组顺序控制电路根据包含在分组的报头信息中的分组ID的顺序来依次选择通过所述分组传送步骤接收和输入的分组,以及执行向所述数据处理步骤传送包含在所选择的分组中的数据的传送过程,
其中所述分组顺序控制步骤包括:
比较步骤,其使得比较电路将输入分组的分组ID与指示根据所述顺序接下来将选择的分组的分组ID的下一选择ID进行比较;以及
控制步骤,其使得控制电路在所述比较电路的比较结果指示所述分组ID与所述下一选择ID不匹配时将所述输入分组存储在用于临时存储分组的缓冲器中与所述分组ID相对应的存储位置中,以及在所述分组ID与所述下一选择ID匹配时选择所述输入分组作为所述传送过程的对象而不在所述缓冲器中存储该分组,并且
如果所述下一选择ID与存储在所述缓冲器中的分组的分组ID匹配,则所述控制步骤选择所述分组作为所述传送过程的对象。
8.根据权利要求7所述的数据处理方法,其中,当在所述缓冲器中存储所述输入分组时,所述控制步骤将所述输入分组存储在所述缓冲器中从与所述下一选择ID相对应的参考位置前进了所述分组ID与所述下一选择ID之间的差值的存储位置中。
9.根据权利要求7或8所述的数据处理方法,其中,当从所述缓冲器中选择分组作为所述传送过程的对象时,所述控制步骤将存储在所述缓冲器中的每个分组的起始位置同与所述下一选择ID相对应的参考位置进行比较,以及如果起始位置与参考位置匹配,则选择存储在所述起始位置中的分组作为所述传送过程的对象。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2017-038051 | 2017-03-01 | ||
JP2017038051 | 2017-03-01 | ||
PCT/JP2018/007501 WO2018159677A1 (ja) | 2017-03-01 | 2018-02-28 | データ処理装置、ネットワークシステム、パケット順序制御回路、およびデータ処理方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110383779A true CN110383779A (zh) | 2019-10-25 |
CN110383779B CN110383779B (zh) | 2021-09-14 |
Family
ID=63370678
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201880015077.2A Active CN110383779B (zh) | 2017-03-01 | 2018-02-28 | 数据处理装置、网络系统、分组顺序控制电路和数据处理方法 |
Country Status (4)
Country | Link |
---|---|
US (1) | US10891246B2 (zh) |
JP (1) | JP6654733B2 (zh) |
CN (1) | CN110383779B (zh) |
WO (1) | WO2018159677A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2023072282A (ja) * | 2021-11-12 | 2023-05-24 | 日本電信電話株式会社 | データ処理システムおよびデータ処理方法 |
JP2023072284A (ja) * | 2021-11-12 | 2023-05-24 | 日本電信電話株式会社 | データ転送デバイス、データ処理デバイスおよびデータ処理方法 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003023462A (ja) * | 2001-07-09 | 2003-01-24 | Hitachi Ltd | 多地点同報通信網用再送方法 |
JP2016046736A (ja) * | 2014-08-25 | 2016-04-04 | 日本電信電話株式会社 | サービスチェイニングシステム、サービスチェイニングフォワーダ装置、及びサービスチェイニング方法 |
CN106415513A (zh) * | 2014-06-26 | 2017-02-15 | 英特尔公司 | 用于分组发送的优化的信用返回机制 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6289023B1 (en) * | 1997-09-25 | 2001-09-11 | Hewlett-Packard Company | Hardware checksum assist for network protocol stacks |
JP5524584B2 (ja) * | 2009-11-20 | 2014-06-18 | キヤノン株式会社 | 画像処理装置及びその制御方法 |
KR101401874B1 (ko) * | 2010-02-22 | 2014-05-29 | 닛본 덴끼 가부시끼가이샤 | 통신제어 시스템, 스위칭 노드, 통신제어 방법, 및 통신제어용 프로그램 |
US8903966B2 (en) * | 2011-06-01 | 2014-12-02 | International Business Machines Corporation | Re-programming programmable hardware devices without system downtime |
-
2018
- 2018-02-28 WO PCT/JP2018/007501 patent/WO2018159677A1/ja active Application Filing
- 2018-02-28 CN CN201880015077.2A patent/CN110383779B/zh active Active
- 2018-02-28 US US16/490,393 patent/US10891246B2/en active Active
- 2018-02-28 JP JP2019503062A patent/JP6654733B2/ja active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2003023462A (ja) * | 2001-07-09 | 2003-01-24 | Hitachi Ltd | 多地点同報通信網用再送方法 |
CN106415513A (zh) * | 2014-06-26 | 2017-02-15 | 英特尔公司 | 用于分组发送的优化的信用返回机制 |
JP2016046736A (ja) * | 2014-08-25 | 2016-04-04 | 日本電信電話株式会社 | サービスチェイニングシステム、サービスチェイニングフォワーダ装置、及びサービスチェイニング方法 |
Also Published As
Publication number | Publication date |
---|---|
CN110383779B (zh) | 2021-09-14 |
US10891246B2 (en) | 2021-01-12 |
JPWO2018159677A1 (ja) | 2019-11-07 |
WO2018159677A1 (ja) | 2018-09-07 |
JP6654733B2 (ja) | 2020-02-26 |
US20200192833A1 (en) | 2020-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103999430B (zh) | 用于软件定义的网络中灵活及可扩展流处理的转发元件 | |
US20200374240A1 (en) | Protocol independent programmable switch (pips) for software defined data center networks | |
Yao et al. | AI routers & network mind: A hybrid machine learning paradigm for packet routing | |
CN109361600B (zh) | 一种获取路径标识的方法和设备 | |
CN110535782A (zh) | 一种实现QoS保障的报文处理方法、设备和系统 | |
WO1990000842A1 (en) | Adaptive routing system | |
CN104012063A (zh) | 用于软件定义网络中的灵活和可扩展流处理的控制器 | |
CN110233798A (zh) | 数据处理方法、装置及系统 | |
CN112532530B (zh) | 一种拥塞通知信息调整的方法及设备 | |
CN110383779A (zh) | 数据处理装置、网络系统、分组顺序控制电路和数据处理方法 | |
CN107925629A (zh) | 一种IPv6网络中数据报文的发送方法及装置 | |
CN108353036A (zh) | 用于通信网络的分组处理技术 | |
Desai et al. | Edge-based optimal routing in sdn-enabled industrial internet of things | |
Pan et al. | FlowConvertor: Enabling portability of SDN applications | |
CN106302016A (zh) | 小流量快速获取网络物理带宽的方法及系统 | |
CN113765825B (zh) | 一种链式业务流调度的规划方法和系统架构 | |
Ebrahimzadeh et al. | h-horizon sequential look-ahead greedy algorithm for VNF-FG embedding | |
Dominicini et al. | Polka: Polynomial key-based architecture for source routing in network fabrics | |
Lebrun | Reaping the benefits of ipv6 segment routing | |
CN109150708B (zh) | 数据转发接口的选择方法及装置 | |
US20180063296A1 (en) | Data-division control method, communication system, and communication apparatus | |
CN105933239B (zh) | 一种网络流量传输链路的设置方法及装置 | |
CN114124732A (zh) | 一种面向云的带内计算部署方法、装置和系统 | |
Patetta et al. | A lightweight southbound interface for standalone P4-NetFPGA SmartNICs | |
Attiya et al. | Efficiency of semisynchronous versus asynchronous networks |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |