CN102480430B - 实现报文保序的方法和装置 - Google Patents
实现报文保序的方法和装置 Download PDFInfo
- Publication number
- CN102480430B CN102480430B CN201010570221.4A CN201010570221A CN102480430B CN 102480430 B CN102480430 B CN 102480430B CN 201010570221 A CN201010570221 A CN 201010570221A CN 102480430 B CN102480430 B CN 102480430B
- Authority
- CN
- China
- Prior art keywords
- forwarding
- queue
- queue area
- core
- shared
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 56
- 238000004321 preservation Methods 0.000 title claims abstract description 18
- 238000012545 processing Methods 0.000 claims abstract description 157
- 230000008569 process Effects 0.000 claims abstract description 34
- 238000004891 communication Methods 0.000 claims abstract description 32
- 238000010276 construction Methods 0.000 claims 1
- 230000032683 aging Effects 0.000 abstract description 10
- 238000010586 diagram Methods 0.000 description 7
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003139 buffering effect Effects 0.000 description 2
- 238000006243 chemical reaction Methods 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000002028 premature Effects 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本发明提供了实现报文保序的方法和装置。该方法包括:A,网络通信设备上的队列区控制单元将已接收的报文存入共享队列区输入队列,并将该共享队列区输入队列提供给所述网络通信设备上首先执行转发处理的第一转发核;所述第一转发核轮询共享队列区输入队列,依次获取共享队列区输入队列中的每个共享队列区并处理;B,所述第一转发核处理完当前共享队列区中对应报文队列的所有报文后,判断自身是否为最后一个执行转发处理的转发核,如果否,提供处理后的共享队列区给下一个执行转发处理的转发核,并执行步骤C,如果是,提供处理后的共享队列区给所述网络通信设备上的保序处理单元,并执行步骤D;C,所述下一个执行转发处理的转发核执行步骤B中所述第一转发核执行的操作;D,所述保序处理单元获取共享队列区中的报文,并按照接收顺序进行串行化处理以供报文发送。采用本发明,能够在对报文保序时避免缓存,定时老化等问题。
Description
技术领域
本发明涉及数据通信技术,特别涉及实现报文保序的方法和装置。
背景技术
随着物理接口速率的不断提升,网络通信设备中CPU的转发核(core)数也随之增加。目前,通常采用并行工作方式使CPU中各个转发核并行处理报文流,以期提高转发性能,具体可如图1所示。
并行工作方式虽然充分利用了多核并行转发能力,且在大多数情况下也的确提高了转发性能,但是,针对某一个转发核而言,当一条报文流(其实质上为具有相同协议关键字的报文集合)的流量大于该转发核当前的负载时,为避免报文流中的报文被丢弃,需要将报文流中的一些报文分发到其他转发核上去处理,即出现了属于同一条报文流的报文被不同转发核处理的情况。如此,如果不同转发核处理报文的时间不匹配,就会导致同一条报文流中的报文不是按照接收顺序发送的,而数据通信系统要求报文发送顺序与接收顺序必须一致,基于此,网络通信设备就需要在报文发送之前对同一条报文流中的报文进行保序操作。
现有技术中,一旦涉及到报文保序,就会相应涉及到缓存,定时老化等问题。由于仅在一条报文流的流量大于某个转发核当前的负载时,才会将报文分发到不同的转发核,即不能事先知道同一条报文流中的报文在不同转发核之间的分布,以及在不同转发核上的处理延迟,因此,报文保序所需要的缓存容量就无法确定。如果缓存容量大小,会导致报文流中的报文过早丢弃,太大会导致缓存资源的过度消耗,进而引起系统反应(如接收端无法获得报文缓存)。至于定时老化问题,其也会由于不能事先知道同一条报文流中的报文在不同转发核之间的分布,以及在不同转发核上的处理延迟而导致无法确定所需要的老化时间,如果老化时间设置太小会导致过早丢弃,太大会增加缓存负担。
综上可以看出,一种能够避免缓存以及定时老化等问题的报文保序方法是当前亟待解决的技术问题。
发明内容
本发明提供了实现报文保序的方法和装置,以便在对报文保序时避免缓存以及定时老化等问题。
一种实现报文保序的方法,包括:
A,网络通信设备上的队列区控制单元将已接收的报文依次存入共享队列区输入队列,并将共享队列区输入队列提供给首先执行转发处理的第一转发核,所述第一转发核轮询共享队列区输入队列,依次获取共享队列区输入队列中的每个共享队列区并处理;
B,所述第一转发核处理完当前共享队列区中对应报文队列的所有报文后,判断自身是否为最后一个执行转发处理的转发核,如果否,提供处理后的共享队列区给下一个执行转发处理的转发核处理,并执行步骤C,如果是,提供处理后的共享队列区给所述网络通信设备上的保序处理单元,并执行步骤D;
C,所述下一个执行转发处理的转发核执行步骤B中所述第一转发核执行的操作;
D,所述保序处理单元获取共享队列区中的报文,并按照接收顺序进行串行化处理以供报文发送。
一种用于实现报文保序的装置,包括至少一个参与转发处理的转发核,报文接收队列和报文发送队列,其关键在于,该装置还包括:队列区控制单元和保序处理单元;其中,
所述队列区控制单元用于将已接收的报文存入共享队列区输入队列,并提供该共享队列区输入队列给所述装置上首先执行转发处理的第一转发核;
第一转发核轮询共享队列区输入队列,依次获取共享队列区输入队列中的共享队列区并处理,所述第一转发核每处理完一个共享队列区中对应报文队列的所有报文后,判断自身是否为最后一个执行转发处理的转发核,如果否,提供处理后的共享队列区给下一个执行转发处理的转发核,由下一个执行转发处理的转发核执行所述第一转发核执行的操作,如果是,提供处理后的共享队列区给所述保序处理单元;
所述保序处理单元用于获取共享队列区,并对获取的共享队列区中的报文按照接收顺序进行串行化处理,以供处理后的报文发送。
由以上技术方案可以看出,本发明中,由首先执行转发处理的第一转发核先处理共享队列区输入队列中的共享队列区,其中,共享队列区包括每一参与转发处理的转发核对应的报文队列,每一个转发核将处理后的共享队列区提供给下一个相邻的执行转发处理的转发核处理,依次类推,直至最后一个执行转发处理的转发核将处理后的共享队列区提供给保序处理单元,以便保序处理单元对获取的共享队列区中的报文按照接收顺序进行串行化处理,实现了按照报文接收顺序发送报文的目的,即实现了报文保序。本发明提供的报文保序,对于共享队列区输入队列中的共享队列区按顺序分别被各个转发核处理,对于同一共享队列区来说转发核之间串行处理,最后各个处理后的共享队列区又按照进入共享队列区输入队列的顺序,进入到共享队列区输出队列后进行报序处理,因此不涉及缓存,定时老化等问题。
附图说明
图1为现有技术中并行工作方式示意图;
图2为本发明实施例提供的基本流程图;
图3为本发明实施例提供的详细流程图;
图4为本发明实施例提供的共享队列区的结构示意图;
图5为本发明实施例提供的步骤312的实现流程图;
图6为本发明实施例提供的对应图3中流程的示意图;
图7为本发明实施例提供的装置结构图;
图8为本发明相邻的两个转发核之间的访问通道示意图。
具体实施方式
为了使本发明的目的、技术方案和优点更加清楚,下面结合附图和具体实施例对本发明进行详细描述。
本发明提供的方法主要是避免现有技术在进行报文保序时所涉及的缓存,定时老化等问题,图2对本发明实施例提供的方法进行了描述。
参见图2,图2为本发明实施例提供的基本流程图。该流程主要应用于网络通信设备上,其中,该网络通信设备具体实现时可为路由器,也可为其他具有路由功能的设备,比如交换机等,本发明实施例并不具体限定。基于此,如图2所示,该流程可包括以下步骤:
步骤201,网络通信设备上的队列区控制单元将已接收的报文依次存入共享队列区输入队列,并提供该共享队列区输入队列给所述网络通信设备上首先执行转发处理的第一转发核,第一转发核轮询共享队列区输入队列,依次获取共享队列区输入队列中的每个共享队列区并处理。
本步骤201中,队列区控制单元将已接收的报文存入共享队列区输入队列的操作具体可参见图3中的步骤302至步骤305中的描述。
步骤202,第一转发核处理完当前共享队列区中对应报文队列的所有报文后,判断自身是否为最后一个执行转发处理的转发核,如果否,提供处理后的共享队列区给下一个执行转发处理的转发核,并执行步骤203,如果是,提供处理后的共享队列区给所述网络通信设备上的保序处理单元,并执行步骤204。
本步骤202执行的操作具体可参见图3中步骤306至步骤309的操作。
另外,本实施例中,第一转发核为最后一个执行转发处理的转发核的情况是:所述网络通信设备仅包含一个用于转发处理的转发核。
步骤203,下一个执行转发处理的转发核按照步骤202中第一转发核执行的操作执行。
从步骤202至步骤203可以看出,第一转发核先处理共享队列区,并将处理后的共享队列区提供给下一个转发核处理,依次类推,直至最后执行转发处理的转发核提供处理后的共享队列区给保序处理单元,以便保序处理单元执行步骤204。
步骤204,保序处理单元获取共享队列区中的报文,并按照接收顺序进行串行化处理以供报文发送。
本步骤204的描述可参见图3中步骤311至步骤312的描述。
以上对本发明实施例提供的方法进行了简单描述。
在上述流程中,可预先对网络通信设备上所有参与转发的转发核按照顺序编号。基于此,本实施例中的第一转发核可为编号最小的转发核,最后一个执行转发处理的转发核相应为编号最大的转发核;或者,第一转发核为编号最大的转发核,最后一个执行转发处理的转发核相应为编号最小的转发核。下面以第一转发核为编号最小的转发核,最后一个执行转发处理的转发核为编号最大的转发核为例,其他情况原理类似,通过图3对图2所示的流程进行详细描述。
参见图3,图3为本发明实施例提供的详细流程图。本实施例中,网络通信设备上所有参与转发的转发核功能完全相同,都是用于报文的转发处理。如果该网络通信设备上所有参与转发的转发核按照顺序进行的编号,分别为core-1,core-2,...core-N,其中,首先执行转发处理的第一转发核为编号最小的转发核即core-1,最后执行转发处理的转发核为编号最大的转发核即core-N。
基于此,如图3所示,该流程可包括以下步骤:
步骤301,网络通信设备上的报文接收器按照先进先出(FIFO:First InFirst Out)顺序存放接收到的报文至报文接收队列中。
步骤302,网络通信设备上的队列区控制单元在设定时间到达时,轮询所述报文接收队列,如果该报文接收队列为空,则结束当前流程;否则,执行步骤303。
本步骤302中,队列区控制单元实时或者以固定时间为间隔周期性地执行轮询所述报文接收队列是否为空的操作。
步骤303,队列区控制单元从报文接收队列中获取所有报文。
步骤304,队列区控制单元创建共享队列区,并从共享队列区中core-1对应的报文队列开始,按顺序依次向各个转发核对应的报文队列放入报文。
本实施例中,共享队列区包括每一参与转发处理的转发核对应的报文队列,其中,每一转发核对应的报文队列由为该转发核创建的队列链表头存入,存入方式为FIFO。如此,执行到本步骤304时,网络通信设备上每一参与转发处理的转发核即core-1,core-2,...,core-N都有一个用于存入自身对应的报文队列的队列链表头。
而本实施例中的共享队列区具体实现时可为:将从core-1对应的报文队列开始按顺序依次并行存放的各个报文队列组成的报文链块确定为共享队列区。具体可参见图4所示。
另外,本步骤304中,队列区控制单元可按照各个转发核平均分配报文的原则向各个转发核对应的报文队列放入报文,具体为:队列区控制单元确定需要放入每一个报文队列的报文数量M;之后以M为单位按顺序划分获取的所有报文,从core-1对应的报文队列开始按顺序依次向各个转发核对应的报文队列中放入N个报文。比如,网络通信设备存在3个转发核,即core-1至core-3,如果队列区控制单元从报文接收队列获取的所有报文的数量为12,依次为报文1至报文12,如此,就需要每个转发核对应的报文队列中存放4个报文,即core-1对应的报文队列存放报文1至报文4,core-2对应的报文队列存放报文5至报文8,core-3对应的报文队列存放报文9至报文12。
当然,作为本发明实施例的另一种实现方式,本步骤304中,队列区控制单元也可根据各个转发核当前的负载以及获取的所有报文的数量向各个转发核对应的报文队列中放入报文,具体为:步骤1,队列区控制单元将core-1作为当前核。步骤2,队列区控制单元根据当前核的当前负载以及获取的所有报文的数量确定向当前核对应的报文队列中放入的报文数量X。步骤3,队列区控制单元按顺序向当前核对应的报文队列中放入X个报文;之后设置core-1的下一个转发核为当前核,返回步骤2。仍以网络通信设备存在3个转发核,即core-1至core-3,队列区控制单元从报文接收队列获取的所有报文的数量为12,即依次为报文1至报文12为例,假如core-1当前负载比较严重,目前仅能承载2个报文,core-2当前负载仅可以承载4个报文,core-3当前负载比较轻松,可以承载至少6个报文,则基于上述步骤1至步骤3的描述,可将报文1至报文2存放至core-1对应的报文队列中,报文3至报文6存放至core-2对应的报文队列中,报文7至报文12存放至core-3对应的报文队列中。当然,若core-2当前负载比较轻松,可以承载至少10个报文,则可以直接将报文3至报文12存放至core-2对应的报文队列中,core-3对应的报文队列中不存放报文,具体情况具体分析,本发明实施例并不具体限定。
步骤305,队列区控制单元将存放报文的共享队列区依次放入共享队列区输入队列。
本步骤305中的共享队列区输入队列,其实质上为队列区控制单元与core-1之间的报文传输通道,用于按照FIFO方式存入放入其中的共享队列区。
需要说明的是,本实施例中,在执行本步骤305之前,需要预先在每一个共享队列区中为每一个执行转发处理的转发核创建对应的报文队列。
步骤306,core-1轮询共享队列区输入队列,依次获取共享队列区输入队列中的每个共享队列区。
步骤307,core-1针对获取的每一个共享队列区(记为当前共享队列区),判断当前共享队列区中自身对应的报文队列是否为空,如果是,执行步骤308;否则,处理自身对应的报文队列中的所有报文,之后执行步骤309。
如果步骤304中,队列区控制单元根据各个转发核当前的负载以及获取的所有报文的数量向各个转发核对应的报文队列中放入报文,并且,在形成当前共享队列区时core-1的负载比较严重,不能再承载报文处理,基于此,执行到本步骤307时,该当前共享队列区就会出现core-1对应的报文队列为空的情况,考虑到本发明实施例的广泛性,需要执行本步骤307中的判断操作。
本步骤307中,处理报文队列中的报文可按照该报文所需要的处理操作执行,这里并不限定。
步骤308,core-1判断自身是否为编号最大的转发核,如果是,将当前共享队列区存放到已创建的共享队列区输出队列中,并执行步骤311,否则,执行步骤309。
本步骤308之所以由core-1判断自身是否为编号最大的转发核,是为了确定core-1是否为最后一个执行转发处理的转发核。其中,core-1为最后一个执行转发处理的转发核的情况为:core-1为网络通信设备唯一的转发核。
本步骤308中的共享队列区输出队列为最后一个执行转发处理的转发核与保序处理单元之间的报文传输通道,其按照FIFO方式存入存放其中的共享队列区。由于一个共享队列区中的报文经过最后一个执行转发处理的转发核后,已经全部处理完成,通过将处理后的共享队列区入队到共享队列区输出队列后,保序处理单元即可将处理后的报文进行保序。
步骤309,core-1将处理后的共享队列区存放至下一个转发核对应的核间访问通道中,该核间访问通道可组织成共享队列区输入队列。
本实施例中,下一个转发核对应的核间访问通道为该下一个转发核顺序相邻的上一个转发核和该下一个转发核之间的报文传输通道,其可按照FIFO方式存入顺序相邻的上一个转发核处理后的共享队列区,因此,可组织成共享队列区输入队列,具体可参见图8所示。以本步骤309中下一个转发核为core-2为例,则本步骤309具体为:core-1将处理后的共享队列区存放至core-2对应的核间访问通道中,其中,core-2对应的核间访问通道为core-1与core-2之间的报文传输通道,其可按照FIFO方式存入core-1处理后的共享队列区,并可组织成共享队列区输入队列。
步骤310,下一个转发核按照类似步骤306至309中core-1执行的操作执行。
需要说明的是,由于每个共享队列区中各个转发核对应的报文队列的报文数会有不同,所以并非每个核按照相同的先后顺序处理共享队列区,因此,优选地,在下一个转发核执行步骤306中core-1执行的操作之前,可由该下一个转发核实时判断自身对应的共享队列区输入队列是否为空,如果是,继续返回该判断操作,否则,执行步骤306中core-1执行的操作。
步骤311,保序处理单元轮询共享队列区输出队列,依次获取共享队列区。
需要说明的是,由于保序处理单元和最后一个执行转发处理的转发核执行的操作并非按照固定的时间先后顺序,因此,优选地,在执行步骤311之前,可由保序处理单元实时判断共享队列区输出队列是否为空,是则继续返回判断操作,否则,执行步骤311。
步骤312,保序处理单元针对获取的每一个共享队列区,从获取的共享队列区中按顺序依次访问每个转发核对应的报文队列,并按照顺序将该被访问的报文队列中的报文依次存入所述网络通信设备的报文发送队列中。
本步骤312具体实现时可有多种实现形式,图5示出了其中一种实现形式。
参见图5,图5为本发明实施例提供的步骤312的实现流程图。如图5所示,该流程可包括以下步骤:
步骤501,创建初始值为空的报文链L。
即执行到本步骤501时,报文链L没有存放任何报文。
步骤502,保序处理单元从获取的共享队列区中访问core-S对应的报文队列Q。
由于本实施例中,转发核是从1开始编号的,因此,初始阶段的S为1。
本实施例中,由于每一转发核对应的报文队列是由该转发核的队列链表头存入的,因此,本步骤502可根据core-s的队列链表头访问core-S对应的报文队列Q。
步骤503,保序处理单元判断该被访问的报文队列Q是否为空,如果是,执行步骤504;否则,按照顺序将报文队列Q中的报文依次放入报文链L。
步骤504,保序处理单元判断core-S是否为编号最大的转发核,如果否,执行步骤505,如果是,执行步骤506。
步骤505,令S=S+1,返回执行步骤502。
步骤506,将报文链L放入报文发送队列,由网络通信设备上的报文发送器发送报文发送队列中的报文链L。
至此,通过图5所示的流程实现了步骤312的操作。
通过步骤301至步骤312的描述,可以看出,本实施例中,并非是由网络通信设备上的转发核真正并行处理报文,而是先由core-1处理共享队列区中的报文,并将处理后的共享队列区提供给core-2处理,依次类推,直至core-N即最后一个执行转发处理的转发核将处理后的共享队列区提供给保序处理单元,以便保序处理单元对获取的共享队列区中的报文按照接收顺序进行串行化处理,即实现了按照报文接收顺序发送报文的目的。而同一时间,每一个转发核都在处理不同的共享队列区,从而某种意义上来说,每个核都在并行工作。
为了使图3所示的流程更加清楚,本发明实施例给出了对应图3流程的具体示意图,具体如图6所示。
以上对本发明实施例提供的方法进行了描述,下面对本发明实施例提供的设备进行描述。
参见图7,图7为本发明实施例提供的装置结构图。其中,该装置具体实现时可为路由器,也可为其他具有路由功能的设备,比如交换机等,本发明实施例并不具体限定。如图7所示,该装置可包括:至少一个参与转发处理的转发核701,报文接收队列702和报文发送队列703,其关键在于,该装置还包括:队列区控制单元704、保序处理单元705和共享队列区输入队列706。
其中,队列区控制单元704用于将已接收的报文存入共享队列区输入队列706,并提供该共享队列区输入队列706给所述装置上首先执行转发处理的第一转发核;
第一转发核轮询共享队列区输入队列706,依次获取共享队列区输入队列中的共享队列区并处理,以及每处理完一个共享队列区中对应报文队列的所有报文后,判断自身是否为最后一个执行转发处理的转发核,如果否,提供处理后的共享队列区给下一个执行转发处理的转发核,由下一个执行转发处理的转发核执行所述第一转发核执行的操作,如果是,提供处理后的共享队列区给保序处理单元705。本实施例中,第一转发核在处理共享队列区时,先判断该获取的当前共享队列区中自身对应的报文队列是否为空,如果不为空,则执行处理该当前共享队列区的操作;而如果为空,直接判断自身是否为最后一个执行转发处理的转发核,是则提供当前共享队列区给保序处理单元705,否则提供当前共享队列区给下一个执行转发处理的转发核,由下一个执行转发处理的转发核执行所述第一转发核执行的操作。
保序处理单元705用于获取共享队列区,并对获取的共享队列区中的报文按照接收顺序进行串行化处理,以供处理后的报文发送。
在本实施例中,所述装置上所有参与转发处理的转发核被按照顺序编号;基于此,所述第一转发核为编号最小的转发核,所述最后一个执行转发处理的转发核为编号最大的转发核;或者,所述第一转发核为编号最大的转发核,所述最后一个执行转发处理的转发核为编号最小的转发核。
本实施例中,如果所述装置上存在至少一个参与转发处理的转发核,则如图7所示,该装置还包括:至少一个核间访问通道707。
以所述装置上参与转发处理的转发核依次为第一转发核,第二转发核,第三转发核......第N转发核为例,则共享队列区输入队列706和核间访问通道之间的关系如图8所示。其中,每一核间访问通道用于存放顺序相邻的上一个转发核处理后的共享队列区,因此,其也可相应组织成共享队列区输入队列。
基于此,第一转发核在判断出自身不为最后一个执行转发处理的转发核时,提供处理后的共享队列区给下一个执行转发处理的转发核比如第二转发核对应的核间访问通道,由该下一个执行转发处理的转发核按照类似第一转发核执行的操作执行。
优选地,如图7所示,队列区控制单元704可包括:
获取子单元7041,用于轮询报文接收队列,一旦发现所述报文接收队列中存在报文,则从所述报文接收队列中获取所有报文;
创建子单元7042,用于创建共享队列区,所述共享队列区包括每一参与转发处理的转发核对应的报文队列;
处理子单元7043,用于从共享队列区中第一转发核对应的报文队列开始,按顺序依次向各个转发核对应的报文队列放入报文;
构造子单元7044,用于将存放报文的共享队列区依次放入共享队列区输入队列706。
其中,处理子单元7043在向各个转发核对应的报文队列放入报文时可按照各个转发核平均分配报文的原则向各个转发核对应的报文队列放入报文;或者,根据各个转发核当前的负载以及获取的所有报文的数量向各个转发核对应的报文队列中放入报文。
优选地,如图7所示,所述装置还包括:共享队列区输出队列708。
其中,共享队列区输出队列708为最后一个执行转发处理的转发核与保序处理单元705之间的报文传输通道,用于存放最后一个执行转发处理的转发核处理后的共享队列区,以供保序处理单元705将共享队列区中处理后的报文进行保序处理。基于此,最后一个执行转发处理的转发核提供处理后的共享队列区给保序处理单元包括:提供处理后的共享队列区给所述共享队列区输出队列,由保序处理单元705通过轮询所述共享队列区输出队列获取共享队列区中处理后的报文。
本发明实施例中,如图7所示,保序处理单元705具体实现时可包括:
轮询子单元7051,用于轮询共享队列区输出队列708,并将共享队列区输出队列中的共享队列区交给报文处理子单元7052;
报文处理子单元7052,用于从获取的共享队列区中按顺序依次访问每个转发核对应的报文队列,并按照顺序将该被访问的报文队列中的报文依次存入报文发送队列中。
至此,对本发明实施例提供的装置进行了描述。
由以上技术方案可以看出,本发明中,由首先执行转发处理的第一转发核先处理共享队列区输入队列中的共享队列区,其中,共享队列区包括每一参与转发处理的转发核对应的报文队列,每一个转发核将处理后的共享队列区提供给下一个相邻的执行转发处理的转发核处理,依次类推,直至最后一个执行转发处理的转发核将处理后的共享队列区提供给保序处理单元,以便保序处理单元对获取的共享队列区中的报文按照接收顺序进行串行化处理,实现了按照报文接收顺序发送报文的目的,即实现了报文保序。本发明提供的报文保序,对于共享队列区输入队列中的共享队列区按顺序分别被各个转发核处理,对于同一共享队列区来说转发核之间串行处理,最后各个处理后的共享队列区又按照进入共享队列区输入队列的顺序,进入到共享队列区输出队列后进行报序处理,因此不涉及缓存,定时老化等问题。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明保护的范围之内。
Claims (10)
1.一种实现报文保序的方法,其特征在于,该方法包括:
A,网络通信设备上的队列区控制单元将已接收的报文依次存入共享队列区输入队列,并将共享队列区输入队列提供给首先执行转发处理的第一转发核,所述第一转发核轮询共享队列区输入队列,依次获取共享队列区输入队列中的每个共享队列区并处理;
B,所述第一转发核处理完当前共享队列区中对应报文队列的所有报文后,判断自身是否为最后一个执行转发处理的转发核,如果否,提供处理后的共享队列区给下一个执行转发处理的转发核处理,并执行步骤C,如果是,提供处理后的共享队列区给所述网络通信设备上的保序处理单元,并执行步骤D;
C,所述下一个执行转发处理的转发核执行步骤B中所述第一转发核执行的操作;
D,所述保序处理单元获取共享队列区中的报文,并按照接收顺序进行串行化处理以供报文发送;
其中,步骤A中,队列区控制单元依次将已接收的报文存入共享队列区输入队列包括:
A1,队列区控制单元每次轮询报文接收队列时,从报文接收队列中获取所有报文,所述报文接收队列用于存放所述网络通信设备接收的报文;
A2,所述队列区控制单元创建共享队列区,所述共享队列区包括每一参与转发处理的转发核对应的报文队列,并从共享队列区中第一转发核对应的报文队列开始,按顺序依次向各个转发核对应的报文队列放入报文;
A3,所述队列区控制单元将存放报文的共享队列区依次放入共享队列区输入队列。
2.根据权利要求1所述的方法,其特征在于,在所述方法执行之前,进一步包括:对网络通信设备上所有参与转发处理的转发核按照顺序编号;
所述第一转发核为编号最小的转发核,所述最后一个执行转发处理的转发核为编号最大的转发核;或者,
所述第一转发核为编号最大的转发核,所述最后一个执行转发处理的转发核为编号最小的转发核。
3.根据权利要求1所述的方法,其特征在于,步骤A2中,所述队列区控制单元按照各个转发核平均分配报文的原则向各个转发核对应的报文队列放入报文;或者,
所述队列区控制单元根据各个转发核当前的负载以及获取的所有报文的数量向各个转发核对应的报文队列中放入报文。
4.根据权利要求1所述的方法,其特征在于,在执行步骤B之前进一步包括:创建共享队列区输出队列,所述共享队列区输出队列用于存放最后一个执行转发处理的转发核处理后的共享队列区,以供保序处理单元将共享队列区中处理后的报文进行保序处理;
步骤B中,提供处理后的共享队列区给保序处理单元包括:提供处理后的共享队列区给所述共享队列区输出队列,由所述保序处理单元通过轮询所述共享队列区输出队列获取共享队列区中处理后的报文。
5.根据权利要求4所述的方法,其特征在于,步骤D包括:
D1,保序处理单元轮询共享队列区输出队列,依次获取共享队列区;
D2,保序处理单元从获取的共享队列区中按顺序依次访问每个转发核对应的报文队列,并按照顺序将被访问的报文队列中的报文依次存入所述网络通信设备的报文发送队列中。
6.一种用于实现报文保序的装置,包括至少一个参与转发处理的转发核,报文接收队列和报文发送队列,其特征在于,该装置还包括:队列区控制单元和保序处理单元;其中,
所述队列区控制单元用于将已接收的报文存入共享队列区输入队列,并提供该共享队列区输入队列给所述装置上首先执行转发处理的第一转发核;
第一转发核用于轮询共享队列区输入队列,依次获取共享队列区输入队列中的共享队列区并处理,以及每处理完一个共享队列区中对应报文队列的所有报文后,判断自身是否为最后一个执行转发处理的转发核,如果否,提供处理后的共享队列区给下一个执行转发处理的转发核,由下一个执行转发处理的转发核执行所述第一转发核执行的操作,如果是,提供处理后的共享队列区给所述保序处理单元;
所述保序处理单元用于获取共享队列区,并对获取的共享队列区中的报文按照接收顺序进行串行化处理,以供处理后的报文发送;
其中,所述队列区控制单元包括:
获取子单元,用于轮询报文接收队列,一旦发现所述报文接收队列中存在报文,则从所述报文接收队列中获取所有报文;
创建子单元,用于创建共享队列区,所述共享队列区包括每一参与转发处理的转发核对应的报文队列;
处理子单元,用于按照各个转发核平均分配报文的原则,或者根据各个转发核当前的负载以及获取的所有报文的数量,从第一转发核对应的报文队列开始按顺序依次向共享队列区中各个转发核对应的报文队列放入报文;
构造子单元,用于将存放报文的共享队列区依次放入共享队列区输入队列。
7.根据权利要求6所述的装置,其特征在于,所述装置上所有参与转发处理的转发核被按照顺序编号;
所述第一转发核为编号最小的转发核,所述最后一个执行转发处理的转发核为编号最大的转发核;或者,
所述第一转发核为编号最大的转发核,所述最后一个执行转发处理的转发核为编号最小的转发核。
8.根据权利要求6或7所述的装置,其特征在于,该装置进一步包括:
共享队列区输出队列,所述共享队列区输出队列用于存放最后一个执行转发处理的转发核处理后的共享队列区,以供保序处理单元将共享队列区中处理后的报文进行保序处理;
所述最后一个执行转发处理的转发核提供处理后的共享队列区给保序处理单元包括:提供处理后的共享队列区给所述共享队列区输出队列,由所述保序处理单元通过轮询所述共享队列区输出队列获取共享队列区中处理后的报文。
9.根据权利要求8所述的装置,其特征在于,所述保序处理单元包括:
轮询子单元,用于轮询共享队列区输出队列,并将共享队列区输出队列中的共享队列区交给报文处理子单元;
报文处理子单元,用于从获取的共享队列区中按顺序依次访问每个转发核对应的报文队列,并按照顺序将被访问的报文队列中的报文依次存入报文发送队列中。
10.根据权利要求9所述的装置,其特征在于,该装置进一步包括:至少一个核间访问通道,用于存放顺序相邻的上一个转发核处理后的共享队列区,可组织成共享队列区输入队列。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201010570221.4A CN102480430B (zh) | 2010-11-24 | 2010-11-24 | 实现报文保序的方法和装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201010570221.4A CN102480430B (zh) | 2010-11-24 | 2010-11-24 | 实现报文保序的方法和装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN102480430A CN102480430A (zh) | 2012-05-30 |
| CN102480430B true CN102480430B (zh) | 2014-07-09 |
Family
ID=46092914
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201010570221.4A Expired - Fee Related CN102480430B (zh) | 2010-11-24 | 2010-11-24 | 实现报文保序的方法和装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN102480430B (zh) |
Families Citing this family (13)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US9313148B2 (en) | 2013-04-26 | 2016-04-12 | Mediatek Inc. | Output queue of multi-plane network device and related method of managing output queue having multiple packet linked lists |
| CN105511954B (zh) * | 2014-09-23 | 2020-07-07 | 华为技术有限公司 | 一种报文处理方法及装置 |
| CN104994032B (zh) * | 2015-05-15 | 2018-09-25 | 京信通信系统(中国)有限公司 | 一种信息处理的方法和装置 |
| CN106685854B (zh) * | 2016-12-09 | 2020-02-14 | 浙江大华技术股份有限公司 | 一种数据发送方法及系统 |
| WO2018103565A1 (en) | 2016-12-09 | 2018-06-14 | Zhejiang Dahua Technology Co., Ltd. | Methods and systems for data transmission |
| CN109218119B (zh) * | 2017-06-30 | 2020-11-27 | 迈普通信技术股份有限公司 | 网络丢包诊断方法及网络设备 |
| CN109218226A (zh) * | 2017-07-03 | 2019-01-15 | 迈普通信技术股份有限公司 | 报文处理方法及网络设备 |
| CN109327405B (zh) * | 2017-07-31 | 2022-08-12 | 迈普通信技术股份有限公司 | 报文保序方法及网络设备 |
| CN108259369B (zh) * | 2018-01-26 | 2022-04-05 | 迈普通信技术股份有限公司 | 一种数据报文的转发方法及装置 |
| CN108667730B (zh) * | 2018-04-17 | 2021-02-12 | 东软集团股份有限公司 | 基于负载均衡的报文转发方法、装置、存储介质和设备 |
| CN114090274A (zh) * | 2020-07-31 | 2022-02-25 | 华为技术有限公司 | 网络接口卡、存储装置、报文接收方法和发送方法 |
| CN113055403B (zh) * | 2021-04-02 | 2022-06-17 | 电信科学技术第五研究所有限公司 | 一种线速保序方法 |
| CN115118686B (zh) * | 2022-06-23 | 2024-08-09 | 中国民航信息网络股份有限公司 | 一种旅客报文的处理系统、方法、设备、介质和产品 |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101013383A (zh) * | 2007-02-13 | 2007-08-08 | 杭州华为三康技术有限公司 | 实现多核cpu进行报文联合处理的系统及方法 |
| CN101217467A (zh) * | 2007-12-28 | 2008-07-09 | 杭州华三通信技术有限公司 | 核间负载分发装置及方法 |
| CN101442513A (zh) * | 2007-11-20 | 2009-05-27 | 杭州华三通信技术有限公司 | 实现多种业务处理功能的方法和多核处理器设备 |
Family Cites Families (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20080259797A1 (en) * | 2007-04-18 | 2008-10-23 | Aladdin Knowledge Systems Ltd. | Load-Balancing Bridge Cluster For Network Nodes |
-
2010
- 2010-11-24 CN CN201010570221.4A patent/CN102480430B/zh not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN101013383A (zh) * | 2007-02-13 | 2007-08-08 | 杭州华为三康技术有限公司 | 实现多核cpu进行报文联合处理的系统及方法 |
| CN101442513A (zh) * | 2007-11-20 | 2009-05-27 | 杭州华三通信技术有限公司 | 实现多种业务处理功能的方法和多核处理器设备 |
| CN101217467A (zh) * | 2007-12-28 | 2008-07-09 | 杭州华三通信技术有限公司 | 核间负载分发装置及方法 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN102480430A (zh) | 2012-05-30 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN102480430B (zh) | 实现报文保序的方法和装置 | |
| CN105162724B (zh) | 一种数据入队与出队方法及队列管理单元 | |
| TWI510030B (zh) | 用於在客戶端裝置上利用封包服務分類執行封包佇列的系統及方法 | |
| US20150215226A1 (en) | Device and Method for Packet Processing with Memories Having Different Latencies | |
| CN107733813B (zh) | 报文转发方法及装置 | |
| WO2016202158A1 (zh) | 一种报文传输方法、装置及计算机可读存储介质 | |
| Hua et al. | Scheduling heterogeneous flows with delay-aware deduplication for avionics applications | |
| CN101291194A (zh) | 报文保序的方法和系统 | |
| CN114338523A (zh) | 一种报文转发方法和装置 | |
| US10869227B2 (en) | Message cache management in a mesh network | |
| CN107613529A (zh) | 消息处理方法以及基站 | |
| WO2016082603A1 (zh) | 一种调度器及调度器的动态复用方法 | |
| WO2017045501A1 (zh) | 一种报文调度方法和装置、存储介质 | |
| CN107347039A (zh) | 一种共享缓存空间的管理方法及装置 | |
| CN109525518B (zh) | 一种基于fpga的ip报文网络地址转换方法及装置 | |
| WO2014075488A1 (zh) | 队列管理方法及装置 | |
| CN102984089B (zh) | 流量管理调度方法及装置 | |
| CN107733812A (zh) | 一种数据包调度方法、装置及设备 | |
| CN102170401B (zh) | 一种数据的处理方法和设备 | |
| JP6101114B2 (ja) | パケット伝送装置およびそのプログラム | |
| CN114221916B (zh) | 一种交换芯片的转发队列冲刷方法及系统 | |
| CN109039934A (zh) | 一种空间dtn网络拥塞控制方法及系统 | |
| US8441953B1 (en) | Reordering with fast time out | |
| US9128785B2 (en) | System and method for efficient shared buffer management | |
| CN115361346B (zh) | 显式丢包通告机制 |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| C06 | Publication | ||
| PB01 | Publication | ||
| C10 | Entry into substantive examination | ||
| SE01 | Entry into force of request for substantive examination | ||
| C14 | Grant of patent or utility model | ||
| GR01 | Patent grant | ||
| CF01 | Termination of patent right due to non-payment of annual fee | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20140709 |