CN102664815A - 报文流量的负荷分担方法、装置和系统 - Google Patents

报文流量的负荷分担方法、装置和系统 Download PDF

Info

Publication number
CN102664815A
CN102664815A CN2012101576226A CN201210157622A CN102664815A CN 102664815 A CN102664815 A CN 102664815A CN 2012101576226 A CN2012101576226 A CN 2012101576226A CN 201210157622 A CN201210157622 A CN 201210157622A CN 102664815 A CN102664815 A CN 102664815A
Authority
CN
China
Prior art keywords
message
flow
processor
message flow
identification information
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.)
Pending
Application number
CN2012101576226A
Other languages
English (en)
Inventor
郭晓阳
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN2012101576226A priority Critical patent/CN102664815A/zh
Publication of CN102664815A publication Critical patent/CN102664815A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明涉及一种报文流量的负荷分担方法、装置和系统。该方法包括:解析接收到的报文,获取报文对应的报文流的流标识信息;查询报文流状态表,根据流标识信息判断报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;如果正在所述处理器中处理,则将报文放入所述报文流中,由所述处理器处理;否则将报文放入所述报文流中,并将所述报文流分发到多核处理器的一个空闲的处理器进行处理;判断报文流是否处理完成,如果处理完成,更新报文流状态表,用以下一次分发报文流。本发明解决了多核系统中流量负荷分担和报文保序的矛盾问题,实现了多核系统中流量的动态均衡分担,省去了报文保序的开销,提高了报文的转发性能。

Description

报文流量的负荷分担方法、装置和系统
技术领域
本发明涉及通信领域,尤其涉及一种报文流量的负荷分担方法、装置和系统。
背景技术
在通信领域,存在大量的报文高速转发处理场景,随着处理器CPU、专用集成电路ASIC(Application Specific Integrated Circuit)、现场可编程门阵列FPGA(Field-Programmable Gate Array)、网络处理器等硬件技术的不断发展,报文高速转发技术也在不断演进。由于通用CPU计算能力强,但是不适用于大带宽的I/O访问的转发处理;ASIC/FPGA转发能力强但是灵活性不够;网络处理器虽然结合了ASIC的高性能和CPU的可编程能力,但是无法适应有线或无线业务快速多样化的演进。近些年涌现的多核处理器既满足CPU的可编程性又具有高性能,但是随着多核的核数演进,核间的流量负荷分担算法成了一个较关键的问题。由于高速报文转发既需要保障转发性能,又需要保证报文顺序,在现有通用技术下,由于保序的存在,核数和性能无法线性增加,导致较大的性能损耗。
在现有技术下,有多种负荷分担的算法,主要有基于包分发和基于流分发两种。包分发为逐包依次分发到多个核处理,每个并发线程覆盖所有业务流程并发执行相同的代码,通过互斥机制完成相关报文的同步操作,这样虽然对多核的CPU利用均衡度较高但是降低了Cache命中率,而且互斥锁对性能影响较大。流分发方式基于数据流方式分发到多个核处理,虽然避免了互斥锁的引入,但存在单流流量激增时多核负载不均衡的问题。导致有些CPU过载,有些过轻,并没有充分利用多核负荷分担的优势。
发明内容
本发明实施例提供了一种报文流量的负荷分担方法、装置和系统,可以实现多核系统中流量负荷的基于流分发方式的改进动态均衡分担,既保证了分发的均衡性又省去了报文保序的开销,还可以实现核数和性能的线性比例增长,提高了报文的转发性能。
一方面,本实施例供了一种报文流量的负荷分担方法,所述方法包括:接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;
查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;
如果所述报文流正在所述处理器中处理,则将所述报文放入所述户用报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;
判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。
另一方面,本实施例供了一种报文流量的负荷分担装置,所述装置包括:
解析单元,用于接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;
判断单元,用于查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;
处理单元,用于如果所述报文流正在所述处理器中处理,则将所述报文放入所述户用报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;
第一更新单元,用于判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。
又一方面,本发明实施例提供了一种报文流量的负荷分担系统,所述系统包括上述报文流量的负荷分担装置,以及多核处理器。
本发明实施例中,FPGA接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;然后查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;如果所述报文流正在所述处理器中处理,则将所述报文放入所述户用报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;最后判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。由于多核处理器中流量均衡分担,实现了每个单核流量均衡,提升了报文的转发性能,而且通过对报文的标识信息进行散列得到的流标识信息进行报文分发,实现了逐流分发流量,使得多核处理器的性能随着核数的增加而线性增长。
附图说明
图1为本发明实施例提供的一种报文流量的负荷分担方法流程图;
图2为本发明实施例提供的一种报文流量的负荷分担方法中报文流分发示意图;
图3为本发明实施例提供的一种报文流量的负荷分担方法中流解析过程示意图;
图4为本发明实施例提供的一种报文流量的负荷分担装置示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
本发明实施例提供的实现多核系统中流量负荷分担的方法、装置和系统在实际应用时,作为一种新的实现多核系统中流量负荷分担的方法可应用于存在大量的报文高速转发处理的场景。大量报文高速转发的场景如交换机,路由器等L2/L3/L4等的转发处理,高速报文转发既需要转发性能有保障,又需要保证报文顺序,而报文保序和转发性能是一对矛盾综合体,报文保序操作一般会降低转发性能10%~20%左右。本发明实施例提供的报文转发处理的方法由高速FPGA实现报文的解析和分发,由多核处理器实现报文业务的处理,主要解决了多核系统的流量负荷均衡分担和报文保序的矛盾问题。
本发明实施例中,FPGA接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;然后查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;如果所述报文流正在所述处理器中处理,则将所述报文放入所述户用报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;最后判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。由此实现了多核系统中流量负荷的基于流分发方式的改进动态均衡分担,既保证了分发的均衡性又省去了报文保序的开销,还可以实现核数和性能的线性比例增长,提高了报文的转发性能。
图1为本发明实施例提供的一种实现多核系统中流量负荷分担的方法流程图。本实施例主体是FPGA芯片,其中详细描述了多核系统中基于流的概念实现报文负荷分担的方法流程。如图1所示,本实施例包括以下步骤:
步骤101,FPGA接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息。
当然,FPGA接收到报文后,为了方便后面的报文解析,首先将报文放到优先级缓存队列中。
解析所述报文,获取所述报文对应的报文流的流标识信息的具体操作是:对所述报文进行解析,判断所述报文是否为控制报文,如果所述报文不是控制报文,则识别所述报文的网际IP层协议号,判断所述报文的协议类型;根据所述报文的协议类型,提取不同的报文标识信息,使用不同的散列函数对所提取的所述报文标识信息进行散列,获取所述报文对应的报文流的流标识信息。
优选地,如果所述报文是控制报文,则将所述控制报文分发给多核处理器的专门用来处理控制报文的处理器上进行协议栈处理。
对于非控制报文,解析该报文用以获得该报文对应的报文流的标识信息,从而将报文放入所述报文流中,由处理该报文流的处理器对该报文进行处理。解析所述报文的过程为各种报文协议的流识别的过程。由于接口板要处理各种接入协议的报文,对于单用户侧的数据流,也存在不同的协议,为了识别单用户侧的报文,并将单用户侧的报文通过同一个数据流分发到多核处理器的一个处理器上处理,FPGA要解析报文,并将报文按照不同的协议来计算散列值。例如IUB口是处理UDP协议报文的接口,对于UDP协议报文,FPGA提取该报文携带的UDP端口号,并使用散列函数进行散列,以获得该报文对应的报文流的流标识信息。
步骤102,FPGA查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理。
报文流状态表包括所述流标识信息和所述流标识信息对应的处理状态标识信息。
查询报文流状态表,判断流标识信息对应的流是否正在多核处理器中处理的具体操作步骤为:查询所述报文流状态表,获取所述流标识信息对应的处理状态标识信息,如果所述处理状态标识信息为所述多核处理器的一个处理器的标识信息,则判断所述流标识信息对应的报文流正在所述处理器中处理;否则判断所述流标识信息对应的报文流不在所述多核处理器中处理。
优选地,报文流状态表中的流标识信息和对应的处理状态标识信息也可以用一条记录来表示。例如,假设流标识信息是2,这条流在单核处理器3中处理,则可以在报文流状态表中添加一条记录00100011,其中这条记录的高4位表示流的流标识信息2,低4位表示正在处理该流的单核处理器3。FPGA查询报文流状态表,判断流标识信息2对应的流是否正在多核处理器中处理的具体操作为查询报文流状态表中是否存在高4位为0010的记录,如果存在,则判断该流正在处理器中处理,否则判断该流是一个新流,还没有分发到处理器中处理。
需要说明的是,上面描述的报文流状态表中的流标识信息和处理状态标识信息的形式只是一种具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
步骤103,如果所述报文流正在所述处理器中处理,则FPGA将所述报文放入所述报文流中,由所述处理器处理;否则FPGA将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理。
FPGA判断所述流标识信息对应的报文流正在多核处理器中的某个处理器中处理时,将所述报文放入所述报文流中,由所述处理器进行处理。
FPGA判断所述流标识信息对应的报文流不在多核处理器中处理时,将所述流标识信息对应的报文流分发到一个空闲的单核处理器进行处理的具体操作步骤为:获取所述多核处理器中输入先进先出IFIFO队列长度最短的一个空闲的处理器;将所述流标识信息对应的报文流分发到所述处理器中进行处理。
FPGA判断流标识信息对应的流为一个新流,没有在多核处理器中处理时,会在多核处理器中查找最空闲的单核,并将流分发到该单核上处理。FPGA查找最空闲的单核的方法为:比较处理器的输入先进先出IFIFO队列的长度,IFIFO队列长度最短的处理器最空闲。
FPGA将一个新流分发给一个空闲的处理器后,会更新所述报文流状态表中所述流标识信息对应的处理状态标识信息,用以下次分发报文流时查询。
优选地,FPGA分发报文流到各个处理器的一种具体的分发系统参见图2。图2为本发明实施例提供的一种报文流量的负荷分担方法中报文流分发示意图。如图2所示:
优先级缓存队列201,优先级缓存队列201中保存了输入的报文,FPGA接收到报文后,根据VLAN协议字段中的报文优先级标识信息,将报文放入优先级缓存队列中,当需要将报文分发至多核处理器时,FPGA首先调度优先级高的报文。
报文流状态表202,报文流状态表202中包含所述流标识信息和所述流标识信息对应的处理状态标识信息。FPGA解析在优先级缓存队列中取出要分发的报文后,解析该报文,获取报文对应的报文流的标识信息,根据该报文流的标识信息查询报文流状态表202,根据查询得到的报文流的处理状态,将报文流分发到多核处理器中的处理中处理。
多核处理器203,多核处理器203用于处理报文流。报文流处理完成后,多核处理器203向FPGA发送一条流反馈消息,该消息中携带处理完的报文流的流标识信息,FPGA接收到该反馈消息后,转发报文流中的报文,并更新报文流状态表。用以下次分发报文流时查询。
步骤104,FPGA判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。
判断所述报文流是否处理完成的具体操作过程为:比较将报文流分发到所述多核处理器的一个处理器的次数与所述报文流从所述处理器中返回的次数是否相同,如果相同,则判断所述报文流处理完成。
FPGA在将报文流分发给处理器进行处理时,可以做发送统计,统计将报文流发送给处理器的次数;报文流在处理器中处理完成后,会再经由FPGA将报文转发出去,此时FPGA可以做接收统计,统计该报文流从处理器发送过来的次数。如果发送统计的次数和接收统计的次数相同,则说明该报文流在处理器中处理完成。
报文流在处理器中处理完成后,FPGA更新报文流状态表中对应报文流的处理状态信息,用于下次接收到报文时查询该表以分发报文流。
本发明实施例中,FPGA接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;然后查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;如果所述报文流正在所述处理器中处理,则将所述报文放入所述户用报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;最后判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。由于多核处理器中流量均衡分担,实现了每个处理器流量均衡,提升了报文的转发性能,而且通过对报文的标识信息进行散列得到的流标识信息进行报文分发,实现了逐流分发流量,使得多核处理器的性能随着核数的增加而线性增长。
上述实施例描述了FPGA接收到报文后解析、分发报文的流程,下面的实施例详细描述FPGA解析报文的过程。图3为本发明实施例提供的一种多核系统中实现流量负荷分担中流解析过程的示意图。该实施例的主体是FPGA,其中以无线控制器领域的接口板处理流程为例,描述了FPGA解析流的流程。如图3所示,本实施例包括以下步骤:
步骤301,FPGA接收报文,对接收到的报文进行端口镜像。
步骤302,FPGA对MAC/VLAN(Virtual Local Area Network,虚拟局域网)层协议报文进行解析。
通过MAC/VLAN层协议报文进行二级缓存解析,可以通过报文携带的协议类型字段判断该报文是否为控制报文,如果该报文是控制报文,则将所述控制报文分发给多核处理器的专门用来处理控制报文的处理器上进行协议栈处理。如果不确定该报文是控制报文,则执行步骤303。
步骤303,对IP层协议报文进行解析,识别IP层协议号,用以判断所述报文的协议类型。
对MAC层协议报文进行二级缓存解析后,对I P层协议报文进行解析,判断该报文是否为控制报文,识别报文的IP层协议号,根据IP层协议号识别报文的协议类型。例如,IP层协议号为0x84或0x6的报文为SCTP(StreamControl Transmission Protocol,流控制传输协议)或TCP(TransmissionControl Protocol,传输控制协议)报文;IP层协议号为0x11的报文为UDP(User Datagram Protocol,用户数据包协议)报文;IP层协议号为252的报文为UOIP协议报文。
步骤304,所述IP层协议号为0x84或0x6,识别报文为SCTP或TCP报文。
步骤305,报文为SCTP或TCP报文时,提取报文中的源IP地址、目的IP地址、协议号、源端口号、目的端口号,进行五元哈希计算,获取散列值。
如果判断所述报文为SCTP或TCP报文,则提取报文中携带的源IP地址、目的IP地址、协议号、源端口号、目的端口号等信息,并对提取的五元组信息进行五元哈希计算,得到散列值。
步骤306,所述IP层协议号为0x11,识别报文为UDP报文。
步骤307,判断UDP报文是否为GTP-U(GPRS Tunnel Protocol User Plane,GPRS通道协议-用户面)报文。
所述报文是GTP-U报文时,执行步骤305,否则执行步骤308。
步骤308,所述UDP报文为GTP-U报文时,提取报文中的TEID(TunnelEndpoint Identifier,隧道终点标识)信息,进行哈希计算,获取散列值。
步骤309,判断UDP报文中携带的目的IP地址是基站使用的IP地址还是核心网使用的IP地址。
步骤310,判断所述UDP报文中携带的目的IP地址是基站使用的IP地址时,提取报文中携带的目的IP地址和源IP地址,进行二元哈希计算,获取散列值。
步骤311,所述UDP报文中携带的目的IP地址是核心网的IP地址时,判断所述报文为RTP(Real-time Transport Protocol,实时传输协议)报文。
所述报文为RTP报文时,提取RTP报文中携带的源IP地址、目的IP地址、协议号、源端口号、目的端口号,进行五元哈希计算,获取散列值。
步骤312,所述报文为UOIP协议报文时,提取报文中携带的DSID信息,进行哈希计算,获取散列值。
本发明实施例中,FPGA通过对接收到的报文进行解析,并对不同协议的报文使用不同的散列函数进行散列计算,获取散列值,根据散列值可以获取报文对应的报文流的流标识信息。由此,FPGA可以根据得到的报文对应的报文流的标识信息将报文放入所述报文流,实现将分发到多核处理器的处理该报文流的处理器中进行处理。
本发明实施例提供了一种报文流量的负荷分担装置。图4为本发明实施例提供的一种报文流量的负荷分担装置示意图。如图4所示,本实施例包括以下单元:
解析单元401,用于接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息。
解析单元401具体用于:对所述报文进行解析,判断所述报文是否为控制报文,如果所述报文不是控制报文,则识别所述报文的网际IP层协议号,判断所述报文的协议类型;根据所述报文的协议类型,提取不同的报文标识信息,使用不同的散列函数对所提取的所述报文标识信息进行散列,获取所述报文对应的报文流的流标识信息。
解析单元401还用于:如果所述报文是控制报文,则将所述控制报文发送至控制报文流对应的所述多核处理器的用于处理控制报文流的一个处理器中处理。
判断单元402,用于查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理。
需要说明的是,报文流状态表包括所述流标识信息和所述流标识信息对应的处理状态标识信息。
判断单元402具体用于:查询所述报文流状态表,获取所述流标识信息对应的处理状态标识信息,如果所述处理状态标识信息为所述多核处理器的一个处理器的标识信息,则判断所述流标识信息对应的报文流正在所述处理器中处理;否则判断所述流标识信息对应的报文流不在所述多核处理器中处理.
处理单元403,用于如果所述报文流正在所述处理器中处理,则将所述报文放入所述报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理。
处理单元403具体用于:获取所述多核处理器中输入先进先出IFIFO队列长度最短的一个空闲的处理器;将所述流标识信息对应的报文流分发到所述处理器中进行处理。
第一更新单元404,用于判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流流。
第一更新单元404具体用于:比较将报文流分发到所述多核处理器的一个处理器的次数与所述报文流从所述处理器中返回的次数是否相同,如果相同,则判断所述报文流处理完成。
优选地,本发明实施例还包括:第二更新单元405,用于更新所述报文流状态表中所述流标识信息对应的处理状态标识信息。
本发明实施例中,FPGA接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;然后查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;如果所述报文流正在所述处理器中处理,则将所述报文放入所述户用报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;最后判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。由于多核处理器中流量均衡分担,实现了每个单核流量均衡,提升了报文的转发性能,而且通过对报文的标识信息进行散列得到的流标识信息进行报文分发,实现了按照用户流逐流分发流量,使得多核处理器的性能随着核数的增加而线性增长。
本发明实施例还提供了一种报文流量的负荷分担系统。该系统植入了报文流量的负荷分担方法,包括上述报文流量的负荷分担装置,以及多核处理器。其中,FPGA接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;然后查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;如果所述报文流正在所述处理器中处理,则将所述报文放入所述户用报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;最后判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。由于多核处理器中流量均衡分担,实现了每个单核流量均衡,提升了报文的转发性能,而且通过对报文的标识信息进行散列得到的流标识信息进行报文分发,实现了按照用户流逐流分发流量,使得多核处理器的性能随着核数的增加而线性增长。由此,本发明实施例提供的报文流量的负荷分担系统也在本发明的保护范围内。
专业人员应该还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (15)

1.一种报文流量的负荷分担方法,其特征在于,所述方法包括:
接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;
查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;
如果所述报文流正在所述处理器中处理,则将所述报文放入所述报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;
判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。
2.如权利要求1所述的报文流量的负荷分担方法,其特征在于,所述解析所述报文,获取所述报文对应的报文流的流标识信息具体包括:
对所述报文进行解析,判断所述报文是否为控制报文,如果所述报文不是控制报文,则识别所述报文的传输IP层协议号,判断所述报文的协议类型;
根据所述报文的协议类型,提取不同的报文标识信息,使用不同的散列函数对所提取的所述报文标识信息进行散列,获取所述报文对应的报文流的流标识信息。
3.如权利要求2所述的报文流量的负荷分担方法,其特征在于,还包括:如果所述报文是控制报文,则将所述控制报文发送至控制报文流对应的所述多核处理器的用于处理控制报文流的一个处理器中处理。
4.如权利要求1所述的报文流量的负荷分担方法,其特征在于,所述报文流状态表包括所述流标识信息和所述流标识信息对应的处理状态标识信息;
所述查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理具体为:查询所述报文流状态表,获取所述流标识信息对应的处理状态标识信息,如果所述处理状态标识信息为所述多核处理器的一个处理器的标识信息,则判断所述流标识信息对应的报文流正在所述处理器中处理;否则判断所述流标识信息对应的报文流不在所述多核处理器中处理。
5.如权利要求1所述的报文流量的负荷分担方法,其特征在于,所述将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理具体为:
获取所述多核处理器中输入先进先出IFIFO队列长度最短的一个空闲的处理器;
将所述流标识信息对应的报文流分发到所述处理器中进行处理。
6.如权利要求1所述的报文流量的负荷分担方法,其特征在于,所述将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理之后还包括:更新所述报文流状态表中所述流标识信息对应的处理状态标识信息。
7.如权利要求1所述的报文流量的负荷分担方法,其特征在于,所述判断所述报文流是否处理完成具体为:比较将报文流分发到所述多核处理器的一个处理器的次数与所述报文流从所述处理器中返回的次数是否相同,如果相同,则判断所述报文流处理完成。
8.一种报文流量的负荷分担装置,其特征在于,所述装置包括:
解析单元,用于接收报文,解析所述报文,获取所述报文对应的报文流的流标识信息;
判断单元,用于查询报文流状态表,根据所述流标识信息判断所述报文流是否正在多核处理器的所述报文流对应的一个处理器中处理;
处理单元,用于如果所述报文流正在所述处理器中处理,则将所述报文放入所述报文流中,由所述处理器处理;否则将所述报文放入所述报文流中,并将所述报文流分发到所述多核处理器的一个空闲的处理器进行处理;
第一更新单元,用于判断所述报文流是否处理完成,如果所述报文流处理完成,更新所述报文流状态表,用以下一次分发报文流。
9.如权利要求8所述的报文流量的负荷分担装置,其特征在于,所述解析单元具体用于:
对所述报文进行解析,判断所述报文是否为控制报文,如果所述报文不是控制报文,则识别所述报文的网际IP层协议号,判断所述报文的协议类型;
根据所述报文的协议类型,提取不同的报文标识信息,使用不同的散列函数对所提取的所述报文标识信息进行散列,获取所述报文对应的报文流的流标识信息。
10.如权利要求9所述的报文流量的负荷分担装置,其特征在于,所述解析单元还用于:如果所述报文是控制报文,则将所述控制报文发送至控制报文流对应的所述多核处理器的用于处理控制报文流的一个处理器中处理。
11.如权利要求8所述的报文流量的负荷分担装置,其特征在于,所述报文流状态表包括所述流标识信息和所述流标识信息对应的处理状态标识信息;
所述判断单元具体用于:查询所述报文流状态表,获取所述流标识信息对应的处理状态标识信息,如果所述处理状态标识信息为所述多核处理器的一个处理器的标识信息,则判断所述流标识信息对应的报文流正在所述处理器中处理;否则判断所述流标识信息对应的报文流不在所述多核处理器中处理。
12.如权利要求9所述的报文流量的负荷分担装置,其特征在于,所述处理单元具体用于:
获取所述多核处理器中输入先进先出IFIFO队列长度最短的一个空闲的处理器;
将所述流标识信息对应的报文流分发到所述处理器中进行处理。
13.如权利要求9所述的报文流量的负荷分担装置,其特征在于,所述装置还包括:第二更新单元,用于更新所述报文流状态表中所述流标识信息对应的处理状态标识信息。
14.如权利要求9所述的报文流量的负荷分担装置,其特征在于,所述第一更新单元具体用于:比较将报文流分发到所述多核处理器的一个处理器的次数与所述报文流从所述处理器中返回的次数是否相同,如果相同,则判断所述报文流处理完成。
15.一种报文流量的负荷分担系统,其特征在于,所述系统包括如权利要求8-14中任意一项所述的报文流量的负荷分担装置,以及多核处理器。
CN2012101576226A 2012-05-21 2012-05-21 报文流量的负荷分担方法、装置和系统 Pending CN102664815A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012101576226A CN102664815A (zh) 2012-05-21 2012-05-21 报文流量的负荷分担方法、装置和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012101576226A CN102664815A (zh) 2012-05-21 2012-05-21 报文流量的负荷分担方法、装置和系统

Publications (1)

Publication Number Publication Date
CN102664815A true CN102664815A (zh) 2012-09-12

Family

ID=46774233

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012101576226A Pending CN102664815A (zh) 2012-05-21 2012-05-21 报文流量的负荷分担方法、装置和系统

Country Status (1)

Country Link
CN (1) CN102664815A (zh)

Cited By (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103166845A (zh) * 2013-03-01 2013-06-19 华为技术有限公司 数据处理方法和装置
CN104618253A (zh) * 2015-01-22 2015-05-13 大唐移动通信设备有限公司 一种动态变更的传输报文处理方法和装置
CN104734993A (zh) * 2013-12-24 2015-06-24 杭州华为数字技术有限公司 数据分流方法及分流器
CN105763480A (zh) * 2016-04-12 2016-07-13 烽火通信科技股份有限公司 一种基于fpga实现流采样的装置及方法
CN106034086A (zh) * 2015-03-19 2016-10-19 中兴通讯股份有限公司 一种实现负荷分担的方法及装置
CN108712242A (zh) * 2018-04-26 2018-10-26 烽火通信科技股份有限公司 分组设备内提升信令处理能力的系统及方法
CN112822722A (zh) * 2020-12-30 2021-05-18 联想未来通信科技(重庆)有限公司 一种数据报文的传输方法和装置
CN113472812A (zh) * 2021-09-01 2021-10-01 深圳鼎信通达股份有限公司 报文数据处理方法、装置及计算机可读存储介质
CN114157611A (zh) * 2021-12-15 2022-03-08 苏州盛科通信股份有限公司 一种报文去重方法、装置及存储介质
CN116346953A (zh) * 2023-03-02 2023-06-27 杭州又拍云科技有限公司 一种用于实时数据传输的加速方法及装置

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006065691A1 (en) * 2004-12-13 2006-06-22 Intel Corporation Flow assignment
CN101217467A (zh) * 2007-12-28 2008-07-09 杭州华三通信技术有限公司 核间负载分发装置及方法
CN101771595A (zh) * 2008-12-29 2010-07-07 华为技术有限公司 一种报文保序的方法和装置
CN102004673A (zh) * 2010-11-29 2011-04-06 中兴通讯股份有限公司 多核处理器负载均衡的处理方法及系统
CN102377640A (zh) * 2010-08-11 2012-03-14 杭州华三通信技术有限公司 一种报文处理装置和报文处理方法、及预处理器

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2006065691A1 (en) * 2004-12-13 2006-06-22 Intel Corporation Flow assignment
CN101217467A (zh) * 2007-12-28 2008-07-09 杭州华三通信技术有限公司 核间负载分发装置及方法
CN101771595A (zh) * 2008-12-29 2010-07-07 华为技术有限公司 一种报文保序的方法和装置
CN102377640A (zh) * 2010-08-11 2012-03-14 杭州华三通信技术有限公司 一种报文处理装置和报文处理方法、及预处理器
CN102004673A (zh) * 2010-11-29 2011-04-06 中兴通讯股份有限公司 多核处理器负载均衡的处理方法及系统

Cited By (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103166845A (zh) * 2013-03-01 2013-06-19 华为技术有限公司 数据处理方法和装置
CN104734993A (zh) * 2013-12-24 2015-06-24 杭州华为数字技术有限公司 数据分流方法及分流器
US10097466B2 (en) 2013-12-24 2018-10-09 Huawei Technologies Co., Ltd. Data distribution method and splitter
CN104734993B (zh) * 2013-12-24 2018-05-18 杭州华为数字技术有限公司 数据分流方法及分流器
CN104618253B (zh) * 2015-01-22 2018-08-07 大唐移动通信设备有限公司 一种动态变更的传输报文处理方法和装置
CN104618253A (zh) * 2015-01-22 2015-05-13 大唐移动通信设备有限公司 一种动态变更的传输报文处理方法和装置
CN106034086A (zh) * 2015-03-19 2016-10-19 中兴通讯股份有限公司 一种实现负荷分担的方法及装置
CN105763480B (zh) * 2016-04-12 2018-09-18 烽火通信科技股份有限公司 一种基于fpga实现流采样的装置及方法
CN105763480A (zh) * 2016-04-12 2016-07-13 烽火通信科技股份有限公司 一种基于fpga实现流采样的装置及方法
CN108712242A (zh) * 2018-04-26 2018-10-26 烽火通信科技股份有限公司 分组设备内提升信令处理能力的系统及方法
CN108712242B (zh) * 2018-04-26 2020-10-30 烽火通信科技股份有限公司 分组设备内提升信令处理能力的系统及方法
CN112822722A (zh) * 2020-12-30 2021-05-18 联想未来通信科技(重庆)有限公司 一种数据报文的传输方法和装置
CN113472812A (zh) * 2021-09-01 2021-10-01 深圳鼎信通达股份有限公司 报文数据处理方法、装置及计算机可读存储介质
CN114157611A (zh) * 2021-12-15 2022-03-08 苏州盛科通信股份有限公司 一种报文去重方法、装置及存储介质
CN114157611B (zh) * 2021-12-15 2023-12-08 苏州盛科通信股份有限公司 一种报文去重方法、装置及存储介质
CN116346953A (zh) * 2023-03-02 2023-06-27 杭州又拍云科技有限公司 一种用于实时数据传输的加速方法及装置
CN116346953B (zh) * 2023-03-02 2024-02-13 杭州又拍云科技有限公司 一种用于实时数据传输的加速方法及装置

Similar Documents

Publication Publication Date Title
CN102664815A (zh) 报文流量的负荷分担方法、装置和系统
EP3314827B1 (en) Method and system for managing data traffic in a computing network
EP2928134B1 (en) High-performance, scalable and packet drop-free data center switch fabric
EP2928135B1 (en) Pcie-based host network accelerators (hnas) for data center overlay network
US9065701B2 (en) Enhanced serialization mechanism
US7535907B2 (en) TCP engine
CN112965824B (zh) 报文的转发方法及装置、存储介质、电子设备
US10348646B2 (en) Two-stage port-channel resolution in a multistage fabric switch
KR101409311B1 (ko) 패킷 처리 및 전처리기를 위한 장치 및 방법
EP2208322B1 (en) A grid router
CA2425706A1 (en) Method to synchronize and upload an offloaded network stack connection with a network stack
US10587515B2 (en) Stateless information centric forwarding using dynamic filters
CN102598598B (zh) 用于分析数据分组的设备、数据分组处理系统和方法
US20210359952A1 (en) Technologies for protocol-agnostic network packet segmentation
CN109729022B (zh) 一种基于软件定义网络的数据发送方法、装置及系统
CN102209019B (zh) 一种基于报文净荷的负载均衡方法和负载均衡设备
WO2016029345A1 (zh) 网络流的信息统计方法和装置
US11979340B2 (en) Direct data placement
CN100377550C (zh) 一种路由表下一跳ip地址到mac地址解析方法
CN105991755B (zh) 业务报文分发方法及装置
US9015438B2 (en) System and method for achieving enhanced performance with multiple networking central processing unit (CPU) cores
US20180287850A1 (en) Techniques for network multicasting with buffering
KR100641655B1 (ko) 부하 분산 시스템 및 그 방법
CN117596211B (zh) Ip分片多核负载均衡装置及方法
CN109150584B (zh) 一种基于simd指令的为网络分组分类提供加速支持的方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120912