CN106411778B - 数据转发的方法及装置 - Google Patents

数据转发的方法及装置 Download PDF

Info

Publication number
CN106411778B
CN106411778B CN201610971547.5A CN201610971547A CN106411778B CN 106411778 B CN106411778 B CN 106411778B CN 201610971547 A CN201610971547 A CN 201610971547A CN 106411778 B CN106411778 B CN 106411778B
Authority
CN
China
Prior art keywords
message
packet buffer
buffer queue
slow processes
kernel
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.)
Active
Application number
CN201610971547.5A
Other languages
English (en)
Other versions
CN106411778A (zh
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.)
Neusoft Corp
Original Assignee
Neusoft Corp
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 Neusoft Corp filed Critical Neusoft Corp
Priority to CN201610971547.5A priority Critical patent/CN106411778B/zh
Publication of CN106411778A publication Critical patent/CN106411778A/zh
Application granted granted Critical
Publication of CN106411778B publication Critical patent/CN106411778B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/622Queue service order
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L47/00Traffic control in data switching networks
    • H04L47/50Queue scheduling
    • H04L47/62Queue scheduling characterised by scheduling criteria
    • H04L47/625Queue scheduling characterised by scheduling criteria for service slots or service orders
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/25Routing or path finding in a switch fabric
    • H04L49/252Store and forward routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L49/00Packet switching elements
    • H04L49/90Buffering arrangements
    • H04L49/9063Intermediate storage in different physical parts of a node or terminal

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明公开了一种数据转发的方法及装置,涉及互联网技术领域,解决了现有网络转发系统中,在快速处理与慢速处理之间的交互会导致报文乱序的问题。本发明的方法包括:快速处理报文方接收到报文后,查找报文对应的连接的报文缓存队列,连接和报文缓存队列一一对应;若报文缓存队列的状态是进入慢速处理,则将报文缓存至报文缓存队列中,进入慢速处理表示报文缓存队列中已经有进入内核进行慢速处理的报文;若报文缓存队列的状态不是进入慢速处理,则将报文直接发给上级应用。本发明网络转发系统进行报文转发的过程中。

Description

数据转发的方法及装置
技术领域
本发明涉及互联网技术领域,尤其涉及一种数据转发的方法及装置。
背景技术
在网络转发系统中,从功能上主要分为两部分,一部分是以实现快速转发为目的的快速处理,即将接收到的报文直接转发,快速处理是在用户态实现的;另一部分是功能复杂的慢速处理,慢速处理是在内核态实现的,即接收到的报文需要先从用户态转发至内核进行慢速处理,处理完成后再返回用户态进行快速处理。
在实际的应用中,对于一个连接中的报文,可能有一部分需要进入慢速处理,等慢速处理完成后的报文返回后,跟不需要进行慢速处理的报文按顺序一起进行快速处理。然而由于慢速处理的速度相对于快速处理很慢,因此,在等待需要慢速处理的报文返回的过程中,快速处理单元可能会将其他的不需要进入慢速处理的报文送入内核态进行慢速处理,最终等需要慢速处理的报文返回并将所有的报文发出时,会出现报文乱序的现象。比如,若一个连接有5个有序的报文,分别记作报文1、报文2、报文3、报文4、报文5,假设该连接中只有报文1需要进入慢速处理,则当报文1进入慢速处理后,由于慢速处理的速度很慢,则可能会导致在报文1返回之前,快速处理单元又将多个报文送入内核态进行慢速处理,假设又将报文2和报文3送入慢速处理。而当报文1回到快速处理后,快速处理若将所有的报文直接发出,而此时报文2和报文3还没有从慢速处理中返回,这样就会导致最终报文发出的顺序为报文1、报文4、报文5、报文2、报文3的乱序现象。
因此,在网络转发系统中,在快速处理与慢速处理之间的交互会导致报文乱序的问题。
发明内容
鉴于上述问题,本发明提供一种数据转发方法及装置,用以解决现有网络转发系统中,在快速处理与慢速处理之间的交互会导致报文乱序的问题。
为解决上述技术问题,本发明提供了一种数据转发的方法,所述方法包括:
快速处理报文方接收到报文后,查找所述报文对应的连接的报文缓存队列,所述连接和所述报文缓存队列一一对应;
若所述报文缓存队列的状态是进入慢速处理,则将所述报文缓存至所述报文缓存队列中,所述进入慢速处理表示所述报文缓存队列中已经有进入内核进行慢速处理的报文;
若所述报文缓存队列的状态不是进入慢速处理,则将所述报文直接发给上级应用。
可选的,所述查找所述报文对应的连接的报文缓存队列,包括:
若存在与所述报文对应的连接的会话表,则查找所述报文对应的会话表中的会话表报文缓存队列;或者,
若不存在与所述报文对应的连接的会话表,则查找所述连接对应的独立资源报文缓存队列。
可选的,所述方法进一步包括:
接收内核返回的慢速处理的结果;
若所述慢速处理的结果为drop,则将所述报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理;或者,
若所述慢速处理的结果不是drop,则将所述报文缓存队列中的下一个需要送入慢速处理之前的报文直接发给上级应用。
可选的,所述方法进一步包括:
当有报文发送至内核进行慢速处理后,通过定时器监测内核返回的慢速处理结果;
若超过预设时长后,所述内核未返回慢速处理的结果,则将报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理。
可选的,所述方法进一步包括:
在建立所述报文对应的连接的会话表之后,将与所述报文对应的连接的独立资源报文缓存队列删除。
可选的,若所述方法应用于多核处理器CPU计算机系统中,所述方法进一步包括:
将需要进行慢速处理的报文送入唯一对应的内核CPU进行慢速处理。
本发明还提供了一种数据转发的装置,所述装置包括:
查找单元,用于快速处理报文方接收到报文后,查找所述报文对应的连接的报文缓存队列,所述连接和所述报文缓存队列一一对应;
缓存单元,用于若所述报文缓存队列的状态是进入慢速处理,则将所述报文缓存至所述报文缓存队列中,所述进入慢速处理表示所述报文缓存队列中已经有进入内核进行慢速处理的报文;
发送单元,用于若所述报文缓存队列的状态不是进入慢速处理,则将所述报文直接发给上级应用。
可选的,所述查找单元,包括:
第一查找模块,用于若存在与所述报文对应的连接的会话表,则查找所述报文对应的会话表中的会话表报文缓存队列;
第二查找模块,用于若不存在与所述报文对应的连接的会话表,则查找所述连接对应的独立资源报文缓存队列。
可选的,所述装置进一步包括:
接收单元,用于接收内核返回的慢速处理的结果;
送入单元,用于若所述慢速处理的结果为drop,则将所述报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理;
所述发送单元,还用于若所述慢速处理的结果不是drop,则将所述报文缓存队列中的下一个需要送入慢速处理之前的报文直接发给上级应用。
可选的,所述装置进一步包括:
监测单元,用于当有报文发送至内核进行慢速处理后,通过定时器监测内核返回的慢速处理结果;
所述送入单元,还用于若超过预设时长后,所述内核未返回慢速处理的结果,则将报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理。
可选的,所述装置进一步包括:
删除单元,用于在建立所述报文对应的连接的会话表之后,将与所述报文对应的连接的独立资源报文缓存队列删除。
可选的,所述装置进一步包括:
所述送入单元,还用于若所述装置应用于多核处理器CPU计算机系统中,将需要进行慢速处理的报文送入唯一对应的内核CPU进行慢速处理。
借由上述技术方案,本发明提供的数据转发的方法及装置,能够由快速处理报文方接收到报文后,查找报文对应的连接的报文缓存队列,连接和报文缓存队列一一对应;若报文缓存队列的状态是进入慢速处理,则将报文缓存至报文缓存队列中,进入慢速处理表示报文缓存队列中已经有进入内核进行慢速处理的报文;若报文缓存队列的状态不是进入慢速处理,则将报文直接发给上级应用。与现有技术相比,在快速处理报文方中设置有基于连接建立的缓存报文的缓存队列,当缓存队列中有需要进行慢速处理的报文时,会将接收到的报文放置在缓存队列中进行等待;并且快速处理报文方是按序对缓存队列中的报文进行慢速处理或者直接发给上级应用,因此在等待需要进入慢速处理的报文返回的过程中不会有不需要进行慢速处理的报文进入内核进行慢速处理,所以,在快速处理和慢速处理之间交互时不会导致报文乱序的现象。
上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。
附图说明
通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:
图1示出了本发明实施例提供的一种数据转发的方法的流程图;
图2示出了本发明实施例提供的一种数据转发的装置的组成框图;
图3示出了本发明实施例提供的另一种数据转发的装置的组成框图。
具体实施方式
下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。
为解决现有网络转发系统中,在快速处理与慢速处理之间的交互会导致报文乱序的问题,本发明实施例提供了一种数据转发的方法,如图1所示,该方法包括:
101、快速处理报文方接收到报文后,查找报文对应的连接的报文缓存队列。
本实施例中快速处理报文方为DPDK程序,DPDK是一种进行快速数据包处理的库和驱动程序,DPDK快速收发包程序在用户态实现,快速处理报文方是从网卡中接收报文。本实施例中的缓存报文的报文缓存队列是基于连接建立的,即一个连接对应一个报文缓存队列,具体的是以连接对应的五元组为key以及报文缓存队列的地址为value建立的对应连接的报文缓存队列。因此,在接收到报文后需要查找报文对应的连接对应的报文缓存队列。需要说明的是,本实施例中报文包括一个或者多个报文;五元组包括连接对应的源网间协议(Internet Protocol,IP)地址,源端口,目的IP地址,目的端口和传输层协议。
102、若所述报文缓存队列的状态是进入慢速处理,则将所述报文缓存至所述报文缓存队列中。
其中进入慢速处理表示当前报文缓存队列中对应有进入内核进行慢速处理的报文。
在实际应用中,快速处理报文方接收到的报文中有的可以直接发出给上级应用,有的需要送入内核进行慢速处理。而慢速处理的速度远远低于快速处理的速度,因此为避免出现乱序的现象,若当前报文缓存队列中有报文进入内核进行慢速处理,则需要等待进入慢速处理的报文从内核中返回后再按序将报文缓存队列中的报文转发给上级应用。
因此当接收到报文后,需要判断对应的报文缓存队列的状态,报文缓存队列的状态能够表示报文缓存队列中是否有报文进入内核进行慢速处理。然后根据报文缓存队列的状态来判断对报文的处理方式。
若报文缓存队列的状态是进入慢速处理,即需要等待进入慢速处理的报文返回后再进行报文缓存队列中报文的发出,因此需要将报文缓存至报文缓存队列中等待,具体的是将报文缓存至报文缓存队列的尾部,这样可以保证先进先出。
103、若报文缓存队列的状态不是进入慢速处理,则将报文直接发给上级应用。
若报文缓存队列的状态不是进入慢速处理,则表示当前报文缓存队列中没有进入内核进行慢速处理的报文,则可以将收到的报文直接发给上级应用。由于快速处理报文方进行报文转发的速度很快,若当前缓存队列中没有需要进行慢速处理的报文,则在报文缓存队列中通常不会留下缓存的报文,因此可以将接收到的报文直接发出,不会产生乱序的现象。在实际应用中,若报文缓存队列还留有没有发出的报文,则可以将接收到的的报文在留下的报文后发给上级应用。
本发明实施例提供的数据转发的方法,能够由快速处理报文方接收到报文后,查找报文对应的连接的报文缓存队列,连接和报文缓存队列一一对应;若报文缓存队列的状态是进入慢速处理,则将报文缓存至报文缓存队列中,进入慢速处理表示报文缓存队列中已经有进入内核进行慢速处理的报文;若报文缓存队列的状态不是进入慢速处理,则将报文直接发给上级应用。与现有技术相比,在快速处理报文方中设置有基于连接建立的缓存报文的缓存队列,当缓存队列中有需要进行慢速处理的报文时,会将接收到的报文放置在缓存队列中进行等待;并且快速处理报文方是按序对缓存队列中的报文进行慢速处理或者直接发给上级应用,因此在等待需要进入慢速处理的报文返回的过程中不会有不需要进行慢速处理的报文进入内核进行慢速处理,所以,在快速处理和慢速处理之间交互时不会导致报文乱序的现象。
进一步的,对图1所示的方法进行细化和扩展,如下所述:
对于步骤101中查找所述报文对应的连接的报文缓存队列,具体还包括:
先查找报文对应的连接是否已经建立会话表,若建立了会话表,则从对应的会话表中查找是否已经建立了对应的会话表报文缓存队列,若没有建立,则在会话表中一个空间地址作为会话表报文缓存队列的基地址。
若报文对应的连接还未建立会话表,则需要在处理器CPU中建立独立资源报文缓存队列。另外当建立对应的会话表之后需要将之前建立的独立资源报文缓存队列删除。将独立资源报文缓存队列删除的目的为及时释放内存资源,防止内存泄漏问题。
给出具体的示例,对独立资源报文缓存队列的删除过程进行说明:假设在建立会话表之前接收到5个报文,分别为报文1、报文2、报文3、报文4、报文5,其中报文1需要进入内核进行慢速处理,若报文1送入内核进行慢速处理后,4个报文被缓存在独立资源报文缓存队列中,若在报文1经过慢速处理并返回慢速处理结果后,快速处理报文方建立了对应连接的会话表,此时若报文2需要送入内核进行慢速处理,则会将报文2送入内核进行慢速处理,然后将剩下的报文3、报文4、报文5转移到会话表中建立的会话表报文缓存队列中,然后将独立资源报文缓存队列删除;若报文2、报文3、报文4、报文5都不需要进入内核进行慢速处理,则将报文2、报文3、报文4、报文5直接基于连接发送给上级应用,并在发送给上级应用后,将独立资源报文缓存队列删除。
进一步的,将报文添加到对应的报文缓存队列中,则需要等待接收内核返回的慢速处理的结果,并根据等待的结果对缓存队列中的报文进行对应的处理。具体的处理过程为:若在预设时长内接收到内核返回的慢速处理的结果,并且慢速处理的结果为drop,则将报文缓存队列中的下一个需要进行慢速处理的报文送入内核进行慢速处理;若在预设时长内接收到内核返回的慢速处理的结果,并且慢速处理的结果不是drop,而是accept、queue等结果,则将报文缓存队列中下一个需要慢速处理的报文之前的所有报文直接发出给上级应用;若在预设时长内没有接收到内核返回的慢速处理的结果,则表示进入内核进行慢速处理的报文有可能死在内核中,无法返回,这时需要将缓存队列中的下一个需要慢速处理的报文送入内核进行慢速处理,然后继续等待内核返回慢速处理的结果。需要说明的是,对于是否超过预设时长是由定时器监测的。其中预设时长可以根据实际的需求设置,比如可以设置为100ms等。定时器在每一次有报文送入内核进行慢速处理时,进行状态的更新,即以此刻为起点计算返回慢速处理结果的时长。
进一步的,上述图1所述的数据转发的方法可以应用于单核CPU或者多核CPU计算机系统中,对于多核CPU计算机系统,为了将多核的竞争对数据转发的性能的影响降到最低,使数据转发的性能可以随CPU的增加线性增长。本实施例将快速处理报文方将接收的报文发送给唯一对应的内核CPU进行慢速处理,即快速处理报文方对应的CPU与慢速处理的内核对应的CPU一一对应,即单生产者对应单消费者的形式。另外,上述定时器也是每核资源。
进一步的,由于慢速处理上下文为软中断上下文,因此需要由快速处理报文方向内核发送核间中断,该核间中断的处理函数即为内核接收报文函数,通过这种方式可以使内核接收用户态实现的快速处理报文发送的报文。另外为了提高内核态接收报文的效率,在一次核间中断时,内核对快速处理报文方中对应的报文缓存队列进行多次轮询,并且根据报文缓存队列中的报文数量来确定轮询接收报文的次数,这样可以达到一次核间中断可以收取更多的报文;而快速处理报文方接收内核返回报文的方式为持续轮询的方式与内核接收报文的核间中断结合轮询的方式不同。需要说明的是,快速处理报文方发送核间中断的机制为定时发送,或者根据报文缓存队列中的报文的数量发送,当报文缓存队列中的报文较多时发送核间中断。
进一步的,由于对于传输控制协议(Transmission Control Protocol,TCP)报文,不存在发包乱序的现象,本实施例主要是针对非TCP报文,比如用户数据报协议(UserDatagram Protocol,UDP)报文。因此在实际应用中,在对接收到的报文查找报文缓存队列之前,还需要判断是否为非TCP报文,若为非TCP报文在进行后续的处理。
进一步的,对于现有技术中没有报文缓存队列时,在进行UDP吞吐性能测试时,由于报文转发性能十分快,可能会导致大量报文突然进入快慢速交互通道而产生通道堵塞丢失报文的现象,而当建立报文缓存队列后可以避免大量的报文突然进入快慢速交互通道的现象,从而避免UDP吞吐性能测试时不会因为快速处理与慢速处理之间的交互而导致首轮测试大量丢失报文的现象。
进一步的,作为对上述各实施例的实现,本发明实施例的另一实施例还提供了一种数据转发的装置,用于实现上述图1所述的方法。如图2所示,该装置包括:查找单元21、缓存单元22以及发送单元23。
查找单元21,用于快速处理报文方接收到报文后,查找报文对应的连接的报文缓存队列,连接和报文缓存队列一一对应。
其中,快速处理报文方为DPDK程序,DPDK是一种进行快速数据包处理的库和驱动程序,DPDK快速收发包程序在用户态实现,快速处理报文方是从网卡中接收报文。本实施例中的缓存报文的报文缓存队列是基于连接建立的,即一个连接对应一个报文缓存队列,具体的是以连接对应的五元组为key以及报文缓存队列的地址为value建立的对应连接的报文缓存队列。因此,在接收到报文后需要查找报文对应的连接对应的报文缓存队列。需要说明的是,本实施例中报文包括一个或者多个报文;五元组包括连接对应的源IP地址,源端口,目的IP地址,目的端口和传输层协议。
缓存单元22,用于若报文缓存队列的状态是进入慢速处理,则将报文缓存至报文缓存队列中,进入慢速处理表示报文缓存队列中已经有进入内核进行慢速处理的报文。
其中进入慢速处理表示当前报文缓存队列中对应有进入内核进行慢速处理的报文。
在实际应用中,快速处理报文方接收到的报文中有的可以直接发出给上级应用,有的需要送入内核进行慢速处理。而慢速处理的速度远远低于快速处理的速度,因此为避免出现乱序的现象,若当前报文缓存队列中有报文进入内核进行慢速处理,则需要等待进入慢速处理的报文从内核中返回后再按序将报文缓存队列中的报文转发给上级应用。
因此当接收到报文后,需要判断对应的报文缓存队列的状态,报文缓存队列的状态能够表示报文缓存队列中是否有报文进入内核进行慢速处理。然后根据报文缓存队列的状态来判断对报文的处理方式。
若报文缓存队列的状态是进入慢速处理,即需要等待进入慢速处理的报文返回后再进行报文缓存队列中报文的发出,因此需要将报文缓存至报文缓存队列中等待,具体的是将报文缓存至报文缓存队列的尾部,这样可以保证先进先出。
发送单元23,用于若报文缓存队列的状态不是进入慢速处理,则将报文直接发给上级应用。
若报文缓存队列的状态不是进入慢速处理,则表示当前报文缓存队列中没有进入内核进行慢速处理的报文,则可以将收到的报文直接发给上级应用。由于快速处理报文方进行报文转发的速度很快,若当前缓存队列中没有需要进行慢速处理的报文,则在报文缓存队列中通常不会留下缓存的报文,因此可以将接收到的报文直接发出,不会产生乱序的现象。在实际应用中,若报文缓存队列还留有没有发出的报文,则可以将接收到的的报文在留下的报文后发给上级应用。
进一步的,如图3所示,查找单元21,包括:
第一查找模块211,用于若存在与报文对应的连接的会话表,则查找报文对应的会话表中的会话表报文缓存队列;
第二查找模块212,用于若不存在与报文对应的连接的会话表,则查找连接对应的独立资源报文缓存队列。
先查找报文对应的连接是否已经建立会话表,若建立了会话表,则从对应的会话表中查找是否已经建立了对应的会话表报文缓存队列,若没有建立,则在会话表中一个空间地址作为会话表报文缓存队列的基地址。
若报文对应的连接还未建立会话表,则需要在处理器CPU中建立独立资源报文缓存队列。
进一步的,如图3所示,装置进一步包括:
接收单元24,用于接收内核返回的慢速处理的结果;
送入单元25,用于若慢速处理的结果为drop,则将报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理;
发送单元23,还用于若慢速处理的结果不是drop,则将报文缓存队列中的下一个需要送入慢速处理之前的报文直接发给上级应用。
慢速处理的结果不是drop,而是accept、queue等结果,则将报文缓存队列中下一个需要慢速处理的报文之前的所有报文直接发出给上级应用。
进一步的,如图3所示,装置进一步包括:
监测单元26,用于当有报文发送至内核进行慢速处理后,通过定时器监测内核返回的慢速处理结果;
送入单元25,还用于若超过预设时长后,内核未返回慢速处理的结果,则将报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理。
其中预设时长可以根据实际的需求设置,比如可以设置为100ms等。定时器在每一次有报文送入内核进行慢速处理时,进行状态的更新,即以此刻为起点计算返回慢速处理结果的时长。
进一步的,如图3所示,装置进一步包括:
删除单元27,用于在建立报文对应的连接的会话表之后,将与报文对应的连接的独立资源报文缓存队列删除。
另外当建立对应的会话表之后需要将之前建立的独立资源报文缓存队列删除。将独立资源报文缓存队列删除的目的为及时释放内存资源,防止内存泄漏问题。
给出具体的示例,对独立资源报文缓存队列的删除过程进行说明:假设在建立会话表之前接收到5个报文,分别为报文1、报文2、报文3、报文4、报文5,其中报文1需要进入内核进行慢速处理,若报文1送入内核进行慢速处理后,4个报文被缓存在独立资源报文缓存队列中,若在报文1经过慢速处理并返回慢速处理结果后,快速处理报文方建立了对应连接的会话表,此时若报文2需要送入内核进行慢速处理,则会将报文2送入内核进行慢速处理,然后将剩下的报文3、报文4、报文5转移到会话表中建立的会话表报文缓存队列中,然后将独立资源报文缓存队列删除;若报文2、报文3、报文4、报文5都不需要进入内核进行慢速处理,则将报文2、报文3、报文4、报文5直接基于连接发送给上级应用,并在发送给上级应用后,将独立资源报文缓存队列删除。
进一步的,如图3所示,装置进一步包括:
送入单元25,还用于若装置应用于多核处理器CPU计算机系统中,将需要进行慢速处理的报文送入唯一对应的内核CPU进行慢速处理。
将快速处理报文方将接收的报文发送给唯一对应的内核CPU进行慢速处理,即快速处理报文方对应的CPU与慢速处理的内核对应的CPU一一对应,即单生产者对应单消费者的形式。另外,上述定时器也是每核资源。
本发明实施例提供的数据转发的装置,能够由快速处理报文方接收到报文后,查找报文对应的连接的报文缓存队列,连接和报文缓存队列一一对应;若报文缓存队列的状态是进入慢速处理,则将报文缓存至报文缓存队列中,进入慢速处理表示报文缓存队列中已经有进入内核进行慢速处理的报文;若报文缓存队列的状态不是进入慢速处理,则将报文直接发给上级应用。与现有技术相比,在快速处理报文方中设置有基于连接建立的缓存报文的缓存队列,当缓存队列中有需要进行慢速处理的报文时,会将接收到的报文放置在缓存队列中进行等待;并且快速处理报文方是按序对缓存队列中的报文进行慢速处理或者直接发给上级应用,因此在等待需要进入慢速处理的报文返回的过程中不会有不需要进行慢速处理的报文进入内核进行慢速处理,所以,在快速处理和慢速处理之间交互时不会导致报文乱序的现象。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
可以理解的是,上述方法及装置中的相关特征可以相互参考。另外,上述实施例中的“第一”、“第二”等是用于区分各实施例,而并不代表各实施例的优劣。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统,装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的发明名称(如数据转发的装置)中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

Claims (12)

1.一种数据转发的方法,其特征在于,所述方法包括:
快速处理报文方接收到报文后,从所述报文对应的会话表或从独立资源报文缓存队列中查找所述报文对应的连接的报文缓存队列,所述连接和所述报文缓存队列一一对应;
若所述报文缓存队列的状态是进入慢速处理,则将所述报文缓存至所述报文缓存队列中,所述进入慢速处理表示所述报文缓存队列中已经有进入内核进行慢速处理的报文;
若所述报文缓存队列的状态不是进入慢速处理,则将所述报文直接发给上级应用。
2.根据权利要求1所述的方法,其特征在于,所述查找所述报文对应的连接的报文缓存队列,包括:
若存在与所述报文对应的连接的会话表,则查找所述报文对应的会话表中的会话表报文缓存队列;
若不存在与所述报文对应的连接的会话表,则查找所述连接对应的独立资源报文缓存队列。
3.根据权利要求1所述的方法,其特征在于,所述方法进一步包括:
接收内核返回的慢速处理的结果;
若所述慢速处理的结果为drop,则将所述报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理;
若所述慢速处理的结果不是drop,则将所述报文缓存队列中的下一个需要送入慢速处理之前的报文直接发给上级应用。
4.根据权利要求3所述的方法,其特征在于,所述方法进一步包括:
当有报文发送至内核进行慢速处理后,通过定时器监测内核返回的慢速处理结果;
若超过预设时长后,所述内核未返回慢速处理的结果,则将报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理。
5.根据权利要求2所述的方法,其特征在于,所述方法进一步包括:
在建立所述报文对应的连接的会话表之后,将与所述报文对应的连接的独立资源报文缓存队列删除。
6.根据权利要求1所述的方法,其特征在于,若所述方法应用于多核处理器CPU计算机系统中,所述方法进一步包括:
将需要进行慢速处理的报文送入唯一对应的内核CPU进行慢速处理。
7.一种数据转发的装置,其特征在于,所述装置包括:
查找单元,用于快速处理报文方接收到报文后,从所述报文对应的会话表或从独立资源报文缓存队列中查找所述报文对应的连接的报文缓存队列,所述连接和所述报文缓存队列一一对应;
缓存单元,用于若所述报文缓存队列的状态是进入慢速处理,则将所述报文缓存至所述报文缓存队列中,所述进入慢速处理表示所述报文缓存队列中已经有进入内核进行慢速处理的报文;
发送单元,用于若所述报文缓存队列的状态不是进入慢速处理,则将所述报文直接发给上级应用。
8.根据权利要求7所述的装置,其特征在于,所述查找单元,包括:
第一查找模块,用于若存在与所述报文对应的连接的会话表,则查找所述报文对应的会话表中的会话表报文缓存队列;
第二查找模块,用于若不存在与所述报文对应的连接的会话表,则查找所述连接对应的独立资源报文缓存队列。
9.根据权利要求7所述的装置,其特征在于,所述装置进一步包括:
接收单元,用于接收内核返回的慢速处理的结果;
送入单元,用于若所述慢速处理的结果为drop,则将所述报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理;
所述发送单元,还用于若所述慢速处理的结果不是drop,则将所述报文缓存队列中的下一个需要送入慢速处理之前的报文直接发给上级应用。
10.根据权利要求9所述的装置,其特征在于,所述装置进一步包括:
监测单元,用于当有报文发送至内核进行慢速处理后,通过定时器监测内核返回的慢速处理结果;
所述送入单元,还用于若超过预设时长后,所述内核未返回慢速处理的结果,则将报文缓存队列中的下一个需要送入慢速处理的报文送入内核进行慢速处理。
11.根据权利要求8所述的装置,其特征在于,所述装置进一步包括:
删除单元,用于在建立所述报文对应的连接的会话表之后,将与所述报文对应的连接的独立资源报文缓存队列删除。
12.根据权利要求7所述的装置,其特征在于,所述装置进一步包括:
所述送入单元,还用于若所述装置应用于多核处理器CPU计算机系统中,将需要进行慢速处理的报文送入唯一对应的内核CPU进行慢速处理。
CN201610971547.5A 2016-10-27 2016-10-27 数据转发的方法及装置 Active CN106411778B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201610971547.5A CN106411778B (zh) 2016-10-27 2016-10-27 数据转发的方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201610971547.5A CN106411778B (zh) 2016-10-27 2016-10-27 数据转发的方法及装置

Publications (2)

Publication Number Publication Date
CN106411778A CN106411778A (zh) 2017-02-15
CN106411778B true CN106411778B (zh) 2019-07-19

Family

ID=58014676

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201610971547.5A Active CN106411778B (zh) 2016-10-27 2016-10-27 数据转发的方法及装置

Country Status (1)

Country Link
CN (1) CN106411778B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108628684B (zh) * 2017-03-20 2021-01-05 华为技术有限公司 一种基于dpdk的报文处理方法及计算机设备
CN107257352B (zh) * 2017-08-02 2020-09-08 赛尔网络有限公司 基于dpdk的url认证的重定向系统与方法
CN109218227B (zh) * 2018-08-02 2019-12-24 武汉绿色网络信息服务有限责任公司 一种网络数据包处理方法和装置
CN109656705A (zh) * 2018-12-21 2019-04-19 北京天融信网络安全技术有限公司 一种数据处理的方法和装置
CN110661731B (zh) * 2019-09-26 2020-09-29 光大兴陇信托有限责任公司 一种报文处理方法及其装置
CN112770344B (zh) * 2021-01-26 2022-06-14 深圳震有科技股份有限公司 一种5g数据转发平面的转发效率控制方法、系统及终端

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101631074A (zh) * 2009-07-30 2010-01-20 北京星网锐捷网络技术有限公司 一种多链路报文发送方法、装置和网络设备
CN101997871A (zh) * 2010-09-21 2011-03-30 电子科技大学 一种数据快速捕获与过滤转发装置
CN102970246A (zh) * 2012-11-23 2013-03-13 上海寰创通信科技股份有限公司 一种以太网报文流量控制方法
CN103391256A (zh) * 2013-07-25 2013-11-13 武汉邮电科学研究院 一种基于Linux系统的基站用户面数据处理优化方法
CN104394098A (zh) * 2014-11-20 2015-03-04 迈普通信技术股份有限公司 一种报文处理方法和装置

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8752063B2 (en) * 2011-06-23 2014-06-10 Microsoft Corporation Programming interface for data communications

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101631074A (zh) * 2009-07-30 2010-01-20 北京星网锐捷网络技术有限公司 一种多链路报文发送方法、装置和网络设备
CN101997871A (zh) * 2010-09-21 2011-03-30 电子科技大学 一种数据快速捕获与过滤转发装置
CN102970246A (zh) * 2012-11-23 2013-03-13 上海寰创通信科技股份有限公司 一种以太网报文流量控制方法
CN103391256A (zh) * 2013-07-25 2013-11-13 武汉邮电科学研究院 一种基于Linux系统的基站用户面数据处理优化方法
CN104394098A (zh) * 2014-11-20 2015-03-04 迈普通信技术股份有限公司 一种报文处理方法和装置

Also Published As

Publication number Publication date
CN106411778A (zh) 2017-02-15

Similar Documents

Publication Publication Date Title
CN106411778B (zh) 数据转发的方法及装置
CN106412137B (zh) 一种文件下载系统及文件下载方法
CN103327415B (zh) 一种加速网络视频下载的方法和装置
US9465662B2 (en) Processor with efficient work queuing
CN104468629B (zh) 一种批量发送消息的方法和装置
CN105939297B (zh) 一种tcp报文重组方法和装置
CN105511954A (zh) 一种报文处理方法及装置
CN106570097A (zh) 序列生成方法及装置
CN106534345B (zh) 一种报文转发方法及装置
CN103207785A (zh) 数据下载请求的处理方法、装置及系统
CN110581812A (zh) 一种数据报文的处理方法和装置
WO2016159813A1 (en) Network address sharing in a multitenant, monolithic application environment
CN105224396B (zh) 一种业务数据处理方法和装置
CN103607356A (zh) 一种负载均衡方法、负载均衡器及系统
CN107180050A (zh) 一种数据抓取系统及方法
CN103414959B (zh) 一种加快网络视频播放速度的方法和装置
CN109254854A (zh) 异步调用方法、计算机装置及存储介质
CN102801635A (zh) 在多核处理器系统中使用的报文保序方法
CN107608795A (zh) 云计算方法和装置
CN104580435B (zh) 一种网络连接的缓存方法和装置
CN103733188B (zh) 一种在基于流的计算系统中实现的方法和系统
CN105915587B (zh) 内容推送方法、系统、以及缓存服务器
CN104572901B (zh) 网页数据的下载方法及装置
CN105141549B (zh) 网络请求处理方法和装置
CN106953933B (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
GR01 Patent grant
GR01 Patent grant