CN112948313B - 一种会话数据的管理方法和装置 - Google Patents

一种会话数据的管理方法和装置 Download PDF

Info

Publication number
CN112948313B
CN112948313B CN202110226626.4A CN202110226626A CN112948313B CN 112948313 B CN112948313 B CN 112948313B CN 202110226626 A CN202110226626 A CN 202110226626A CN 112948313 B CN112948313 B CN 112948313B
Authority
CN
China
Prior art keywords
message
processed
session data
message information
memory
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
CN202110226626.4A
Other languages
English (en)
Other versions
CN112948313A (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.)
Hangzhou DPTech Technologies Co Ltd
Original Assignee
Hangzhou DPTech 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 Hangzhou DPTech Technologies Co Ltd filed Critical Hangzhou DPTech Technologies Co Ltd
Priority to CN202110226626.4A priority Critical patent/CN112948313B/zh
Publication of CN112948313A publication Critical patent/CN112948313A/zh
Application granted granted Critical
Publication of CN112948313B publication Critical patent/CN112948313B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • G06F15/163Interprocessor communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/06Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
    • G06F3/0601Interfaces specially adapted for storage systems
    • G06F3/0628Interfaces specially adapted for storage systems making use of a particular technique
    • G06F3/0638Organizing or formatting or addressing of data
    • G06F3/064Management of blocks

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • Human Computer Interaction (AREA)
  • Computer And Data Communications (AREA)

Abstract

本申请公开了一种会话数据的管理方法和装置,该方法包括接收到待处理报文时,检测其报文信息是否命中已保存的映射关系;若否则处理并生成会话数据,将会话数据保存于自身所属物理CPU的内存中并向映射关系中添加报文信息及内存地址;若是则根据映射关系所记录对应的内存地址,于自身所属物理CPU的内存中获取会话数据并处理报文。本方案中各虚拟CPU将所处理报文所属会话的会话数据保存于自身所属物理CPU的内存中并记录报文信息及会话数据的内存地址间的映射关系,后续处理同一会话的报文时能够基于报文信息查询已保存的映射关系,于自身所属物理CPU的内存中获取会话数据以进行报文处理,性能消耗降低、处理效率提高。

Description

一种会话数据的管理方法和装置
技术领域
本申请涉及通信技术领域,特别是一种会话数据的管理方法和装置。
背景技术
随着网络规模不断扩大,对各类网络设备计算性能的要求也不断提高,配置有多路物理CPU(后文所述的CPU均表示物理CPU)的网络设备因而得到日益广泛的使用。
在配置有多路物理CPU的网络设备中使用虚拟技术时,每个物理CPU下可以运行若干虚拟CPU(VCPU)。目前,相关技术中,各VCPU在处理会话的首个报文时,将报文所属会话的会话数据优先保存在一个特定物理CPU的内存中,若后续处理该会话的其他报文,则再从所述特定物理CPU的内存中拷贝该会话的会话数据至自身所属物理CPU的内存中。
该方案在管理会话数据时,将所有会话数据均保存于特定CPU的内存中,导致各VCPU在处理报文时,为获取报文所属会话的会话数据而访问非自身所属物理CPU的内存,产生性能消耗大、处理效率低的问题。
发明内容
本申请提供一种会话数据的管理方法和装置。
根据本申请实施例的第一方面,提供一种会话数据的管理方法,所述方法应用于网络设备中的任一虚拟CPU上,所述网络设备配置有多个物理CPU且每个物理CPU下运行有至少一个虚拟CPU,所述方法包括:
当接收到待处理报文时,检测所述待处理报文的报文信息是否命中已保存的映射关系,所述映射关系为若干报文信息及会话数据的内存地址间的映射关系;
若未命中,则处理所述待处理报文并生成所述待处理报文所属会话的会话数据,将所述会话数据保存于自身所属目标物理CPU的内存中,并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址;
若命中,则根据所述映射关系中记录的所述报文信息对应的会话数据的内存地址,于所述目标物理CPU的内存中获取所述待处理报文所属会话的会话数据,基于所述会话数据对所述待处理报文进行处理。
根据本申请实施例的第二方面,提供一种会话数据的管理装置,所述装置应用于网络设备中的任一虚拟CPU上,所述网络设备配置有多个物理CPU且每个物理CPU下运行有至少一个虚拟CPU,所述装置包括检测单元、添加单元和获取单元:
其中,检测单元,用于在接收到待处理报文时,检测所述待处理报文的报文信息是否命中已保存的映射关系,所述映射关系为若干报文信息及会话数据的内存地址间的映射关系;
添加单元,用于在所述报文信息未命中所述映射关系时,处理所述待处理报文并生成所述待处理报文所属会话的会话数据,将所述会话数据保存于自身所属目标物理CPU的内存中并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址;
获取单元,用于在所述报文信息命中所述映射关系时,根据所述报文信息对应的会话数据的内存地址,于所述目标物理CPU的内存中获取所述待处理报文所属会话的会话数据,基于所述会话数据对所述待处理报文进行处理。
本申请所提供的技术方案,各虚拟CPU将所处理报文所属会话的会话数据保存于自身所属物理CPU的内存中,并记录报文信息及会话数据的内存地址间的映射关系,后续处理同一会话的报文时,各VCPU能够基于报文信息查询已保存的映射关系,准确地于自身所属物理CPU的内存中获取其会话数据,不会出现跨物理CPU的内存访问,因而降低了性能消耗、提高了处理效率。
附图说明
图1为本申请所提供的一种会话数据的管理方法的流程图;
图2为本申请方案中以多条链表保存报文信息及内存地址间映射关系的示意图;
图3为本申请所提出的会话数据的管理装置所在网络设备的硬件结构示意图;
图4为本申请所提供的一种会话数据的管理装置的框图。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本申请。在本申请和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本申请可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本申请范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
一个配置有多路物理CPU的网络设备,每路物理CPU均配有内存,每个物理CPU下可以运行若干虚拟CPU(VCPU)。
目前,现有技术中,各VCPU在处理会话的首个报文时,会将报文所属会话的会话数据优先保存在特定的物理CPU的内存中,若后续处理同一会话的报文,各VCPU再从所述特定物理CPU的内存中拷贝会话数据至自身所属物理CPU的内存中。
以一个配置有双路物理CPU的网络设备为例,其物理CPU分别为CPU 0和CPU 1,假设在物理CPU 0下运行有VCPU 0和VCPU 1,在物理CPU 1下运行有VCPU 2,各VCPU所处理报文所属会话的会话数据将优先保存于物理CPU0的内存中。
若VCPU 1接收并处理了某一会话的报文,并将该报文所属会话的会话数据保存在了物理CPU 0的内存中,后续VCPU 1再处理同一会话的报文时,将访问并查询物理CPU 0的内存以获取会话数据,由于VCPU 1属于物理CPU 0,该情况下的内存访问和查询不跨物理CPU,性能消耗和处理效率不受影响。
若VCPU 2接收并处理了某一会话的报文,并将该报文所属会话的会话数据保存在了物理CPU 0的内存中,后续VCPU 2再处理同一会话的报文时,将访问并查询物理CPU 0的内存以获取会话数据,由于VCPU 2属于物理CPU 1,此时就需要跨物理CPU访问和查询内存,导致性能消耗增大、处理效率降低的问题。
有鉴于此,本申请提出一种会话数据的管理方法,应用于网络设备中的任一虚拟CPU上,所述网络设备配置有多个物理CPU且每个物理CPU下运行有至少一个虚拟CPU。图1所示,为本申请所提供的会话数据管理方法的流程图,该方法具体包括如下步骤:
步骤102,目标VCPU接收到其待处理报文时,检测所述待处理报文的报文信息是否命中已保存的映射关系,所述映射关系为若干报文信息及会话数据的内存地址间的映射关系。
当网络设备接收到待处理报文时,将基于预设的分配策略,从自身所运行的多个VCPU中确定一个处理所述待处理报文的目标VCPU,所述预设的分配策略存在多种可选择形式,本申请对此不做具体限制,不过应当明确的是,网络设备为待处理报文分配目标VCPU时应当基于一种既定的、而非随机的策略,即,本申请方案适用于网络设备将同一会话下各报文分配至同一VCPU进行处理的场景中。
在一个例子中,所述网络设备可以获取待处理报文的五元组信息等参数并计算其哈希值,根据所述哈希值以及所述网络设备中的VCPU数量,按“取模法”确定处理所述待处理报文的目标VCPU。
在另一个例子中,所述网络设备也可以根据待处理报文的协议号、端口号等参数确定其所属的业务类型,根据预设的报文所属业务类型与VCPU间的对应关系,确定处理所述待处理报文的目标VCPU。
当确定处理待处理报文的目标VCPU后,所述待处理报文将被转至所述目标VCPU由其检测所述待处理报文的报文信息是否命中已保存的映射关系,以获取或生成待处理报文所属会话的会话数据。
所述待处理报文的报文信息,包括报文报头中五元组信息的一或多项以及报文载荷中的特定数据信息等,它可以通过FPGA(Field Programmable Gate Array,现场可编程逻辑门阵列)芯片解析获取,也可以另设软件方法进行获取,本申请对于待处理报文的报文信息的具体形式和获取方式不做限定,它与网络设备为待处理报文分配目标VCPU时所使用的相关参数可以一致,也可以不同。
所述报文信息及会话数据的内存地址之间的映射关系,可以同时保存于各个物理CPU的内存中,各VCPU于自身所属物理CPU的内存中检测待处理报文的报文信息是否命中所述映射关系;也可以只保存于某一特定物理CPU的内存中,各VCPU向所述特定物理CPU的内存中检测待处理报文的报文信息是否命中所述映射关系。所述报文信息及会话数据的内存地址之间的映射关系,可以由多种可选择的数据结构保存,包括线性表、链表等。本申请对于所述映射关系以何种方式设置、以及采用何种数据结构保存不做具体限制。
所述已保存的映射关系是当前时刻所述网络设备中已保存的若干报文信息以及会话数据的内存地址之间的映射关系。所述报文信息为所述网络设备中各VCPU已处理报文的报文信息,与任一已处理报文的报文信息有映射关系的内存地址指向的内存中存储有该已处理报文所属会话的会话数据。
所述已保存的映射关系中,所述会话数据的内存地址可以直接以基址加偏移量的完整形式记录,也可以只记录内存地址的偏移量并在各VCPU中预存自身所属物理CPU中用于保存会话数据的内存的基址。
步骤104,若所述目标VCPU检测出所述待处理报文的报文信息未命中所述已保存的映射关系,则所述目标VCPU处理所述待处理报文并生成所述待处理报文所属会话的会话数据,将所述会话数据保存于自身所属目标物理CPU的内存中并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址。
若基于步骤102,所述目标VCPU检测出待处理报文的报文信息并未命中已保存的映射关系,即未查询到所述待处理报文所属会话的会话数据的内存地址,说明所述待处理报文为其所属会话的首个报文,因而所述网络设备中尚未记录其所属会话的会话数据。
故所述目标VCPU直接处理所述待处理报文,并将在此处理过程中生成的所述待处理报文所属会话的会话数据保存在目标VCPU所属目标物理CPU的内存中。
本申请对于所述目标VCPU在所述目标物理CPU的内存中保存会话数据的具体方式不做限制,在一种可选择的实现方式下,所述目标VCPU可以根据自身的VCPU标识确定所属目标物理CPU标识,并根据所述目标物理CPU标识,于所述目标物理CPU预分配的用于保存会话数据的若干内存块中选取任一未使用的内存块保存所述待处理报文所属会话的会话数据。
其中,而各物理CPU中用于保存会话数据的若干内存块,可以由所述网络设备根据自身物理CPU的数量以及预设的整机最大会话数,为各物理CPU预先分配,各物理CPU中用于保存会话数据的内存块的数量是既定的。
举例来说,若网络设备中预设的整机最大会话数为m,其配置有的物理CPU数量为n,则为各物理CPU预先分配m/n块用于保存会话数据的内存块。
各物理CPU中所述用于保存会话数据的既定数量的内存块还可以采用内存链或位图的形式预先配置,以提高保存会话数据时的效率。
同时,所述目标VCPU将待处理报文的报文信息,以及所述目标物理CPU的内存中保存有待处理报文所属会话的会话数据的内存地址添加保存进所述报文信息及会话数据的内存地址间的映射关系中,以使后续所述待处理报文所属会话下的其他报文再次由所述网络设备接收并到达该目标VCPU时得以通过所述映射关系,由其报文信息得到对应的会话数据的内存地址,进而得到其所属会话的会话数据。
步骤106,若所述待处理报文的报文信息命中所述已保存的映射关系,则所述目标VCPU根据所述报文信息对应的会话数据的内存地址,于所述目标物理CPU的内存中获取所述待处理报文所属会话的会话数据,基于所述会话数据对所述待处理报文进行处理。
若基于步骤102,所述目标VCPU检测出待处理报文的报文信息命中已保存的映射关系,即查询到所述待处理报文所属会话的会话数据的内存地址,说明所述待处理报文并非其所属会话的首个报文,所述目标VCPU已经于其所属目标物理CPU的内存中保存过其所属会话的会话数据。
故所述目标VCPU根据所命中的映射关系,由所述报文信息对应的会话数据的内存地址,于自身所属物理CPU的内存中获取待处理报文所属会话的会话数据,并基于所述会话数据,对待处理报文进行例如业务转发、NAT(Network Address Translation,网络地址转换)等处理。
进一步地,本申请方案还可以包括:
步骤110,所述网络设备中的任一VCPU检测到自身所属物理CPU的内存中保存有已老化的会话数据时,于所述已保存的映射关系中删除所述已老化的会话数据的内存地址及对应的报文信息,并对保存有所述已老化的会话数据的内存进行释放。
在所述网络设备各物理CPU下运行的若干VCPU中预设一VCPU执行会话数据老化检测任务,该VCPU将检测其所属物理CPU的内存中是否保存有已老化的会话数据,检测方式包括但不限于遍历内存链或内存位图检测是否存在某一会话数据已被打上老化标识;执行会话数据老化检测任务的VCPU将在存在已老化的会话数据时,将所述映射关系中已老化会话数据的内存地址及对应的报文信息删除,并释放保存有所述已老化的会话数据的内存。
本申请所提供的技术方案,各虚拟CPU将所处理报文所属会话的会话数据保存于自身所属物理CPU的内存中,并记录报文信息及会话数据的内存地址间的映射关系,后续处理同一会话的报文时,各VCPU能够基于报文信息查询已保存的映射关系,准确地于自身所属物理CPU的内存中获取其会话数据,不会出现跨物理CPU的内存访问,因而降低了性能消耗、提高了处理效率。
为了使本领域技术人员更好地理解本申请中的技术方案,接下来结合附图,对图1所示的方法作进一步的详细说明,后续描述的实施例仅仅是本申请的一部分实施例,而不是全部的实施例。
基于前文所述,本申请方案中所述已保存的报文信息及会话数据的内存地址间的映射关系能够以多种可选择的数据结构实现,在一种可选择的实现方式下,所述映射关系通过多条链表保存,各链表包括若干链表结点,每个链表结点保存有报文信息及其对应的会话数据的内存地址,和指向下一链表结点的指针。
图2所示,即用于保存所述报文信息及会话数据的内存地址之间映射关系的多条链表的示意图。其中,用于保存所述映射关系的链表数量可以任意设置,包括但不限于按照物理CPU或VCPU的数量进行预设,而所设置的各链表的头结点地址既定。
图2中预设有3条链表,分别以0、1、2表征3条链表的头结点地址;其中,头结点地址为0的链表包括3个结点,分别为0-0、0-1、0-2;头结点地址为1的链表除头结点1-0外无其他结点;头结点为2的链表包括2个结点,分别为2-0、2-1。所述链表数量、各链表的头结点地址以及各链表中所包含的链表结点及其数量仅用以示例说明,并不构成具体限制。
下面基于此多链表形式保存的所述映射关系,对本申请方案中的步骤102、步骤104作进一步地详细说明。
针对本申请方案中的步骤102,所述目标VCPU检测所述待处理报文的报文信息是否命中已保存的映射关系,具体包括:
步骤1022,目标VCPU计算所述待处理报文的报文信息的哈希值,并确定所述哈希值对应的链表的头结点地址。
所述目标VCPU获取待处理报文的报文信息并计算其哈希值,并根据所述哈希值确定对应的一链表的头结点地址,本申请对此处采用的哈希算法不做具体限制。
举例来说,可以预设哈希函数并按“取模法”确定其对应的链表的头结点地址,假设目标VCPU获取待处理报文的五元组信息作为其报文信息,计算得到其哈希值为16,图2中配置有3条链表,则根据“取模法”,即对16取3的余数,得到该哈希值对应的链表的头结点地址为1。
步骤1024,所述目标VCPU判断所述哈希值对应的链表中除头结点外是否有其他结点,若无,则确定所述待处理报文的报文信息未命中所述映射关系。
在该实现方式中,所述链表头结点的用途在于以既定地址为该链表中其他结点提供存储和查询基础,链表头结点中并未保存有效数据。
基于此,在实现步骤1024的一个例子中,所述目标VCPU可以检测所述哈希值对应的链表头结点的指针是否为空,若非空则该链表中除头结点外还包含有其它结点,若为空则该链表中除头结点外不包含其他结点。
若所述目标VCPU判断出所述哈希值对应的链表中除头结点外并无其他结点,则可以确定该待处理报文的报文信息并未命中所述映射关系。
基于上例,假设所确定的所述哈希值对应的链表的头结点地址为1,在图2所示的映射关系中,所述头结点地址为1的链表中除头结点1-0外无其他结点,所述目标VCPU确定待处理报文的报文信息未命中已保存的映射关系。
步骤1026,若所述哈希值对应的链表除头结点外有其他结点,则所述目标VCPU将所述待处理报文的报文信息与所述哈希值对应的链表的各结点所保存的报文信息进行匹配结点;
若任一结点所保存的报文信息与所述待处理报文的报文信息匹配,则确定所述待处理报文的报文信息命中所述映射关系;若所有结点所保存的报文信息与所述待处理报文的报文信息均不匹配,则确定所述待处理报文的报文信息未命中所述映射关系。
在该实现方式中,如果所述哈希值对应的链表中包括除头结点以外的其他链表结点,则所述待处理报文的报文信息可能命中其中的某一结点,仍需将待处理报文的报文信息与该链表中各节点所保存的报文信息进行匹配。
基于上例,假设步骤1022中所计算出的哈希值为15,对应的链表头结点地址为0;步骤1024中基于图2所示的映射关系,判断出头结点地址为0的链表中除头结点外还包括两个链表结点0-1、0-2。
目标VCPU将匹配所述待处理报文的报文信息与链表结点0-1、0-2所保存的报文信息,若待处理报文的报文信息与链表结点0-1或0-2中所保存的报文信息相匹配,则所述目标VCPU可以确定待处理报文的报文信息命中已保存的映射关系;若待处理报文的报文信息与链表结点0-1及0-2中所保存的报文信息均不匹配,则所述目标VCPU可以确定待处理报文的报文信息未命中已保存的映射关系。
针对本申请方案中的步骤104,所述目标VCPU向所述映射关系中添加所述待处理报文的报文信息及其对应的所述会话数据的内存地址,具体包括:
所述目标VCPU基于所述待处理报文的报文信息及其对应的所述会话数据的内存地址,构建链表结点,并将所构建的链表结点作为链表尾结点插入所述哈希值对应的链表中。
在该实现方式下,目标VCPU将于图2所示的映射关系中添加新处理报文的报文信息及其对应会话数据的内存地址。所述目标VCPU将采用同步骤1042所述方法,确定该报文信息对应的链表的头结点地址,并基于所述报文信息及其对应的会话数据的内存地址构建新的链表结点,根据所述头结点地址遍历该链表以将新构建的所述链表结点作为链表尾结点插入该链表末位。
举例来说,若计算出报文信息的哈希值为16,将构建保存有报文信息及对应会话数据的内存地址的链表结点1-1,遍历头结点地址为1的链表以将链表结点1-1插入其末位。
进一步地,针对本申请方案中的步骤110,执行会话数据老化检测任务的VCPU于已保存的映射关系中删除所述已老化的会话数据的内存地址及对应的报文信息,包括:
删除保存有所述已老化的会话数据的内存地址的链表结点。
若执行会话数据老化检测任务的VCPU检测出已老化的会话数据,可以根据会话数据中的报文信息,查询并删除如图2所示的映射关系中保存有已老化的会话数据的内存地址的链表节点,具体查询过程同前文所述,此处不再赘述。
下面结合图2所示的多链表形式保存的映射关系,对本申请所提供的会话数据的管理方法进行具体实施例的说明。
一个配置有双路物理CPU的网络设备,其物理CPU分别标识为CPU 0和CPU 1,在物理CPU 0下运行的VCPU分别标识为VCPU 0和VCPU 1,在物理CPU 1下运行的VCPU标识为VCPU2。
所述网络设备根据预设的整机最大会话数100,于物理CPU 0和物理CPU 1的内存中均预先分配了100/2,即50块内存,并用内存链的方式配置,当前每个物理CPU中的50块内存均挂于空闲链上,物理CPU 0的内存块地址分别为0-1至0-50,物理CPU 1的内存块的地址分别为1-1至1-50。
所述网络设备中以图2所示的3条链表保存报文信息及会话数据的内存地址间的映射关系。
所述网络设备接收到待处理报文A-1,其为会话A的首个报文,计算待处理报文A-1的五元组哈希值为17,按“取模法”分配至VCPU 2进行处理。
VCPU 2根据待处理报文A-1的五元组哈希值17,按“取模法”确定其对应的链表头结点地址为2,该链表中除头结点2-0外还有结点2-1,将待处理报文A-1的五元组与结点2-1中所保存的五元组进行匹配,匹配失败,判定待处理报文A-1的五元组并未命中图2所示的已保存的映射关系。
VCPU 2处理待处理报文A-1,根据自身的VCPU标识VCPU 2确定所属物理CPU的标识CPU 1,进而从物理CPU 1预分配的若干内存块构建的空闲链上选取未使用的内存块保存所生成的会话A的会话数据,并将该内存块改挂至使用链上,该内存块的内存地址为1-1。
VCPU 2将报文A-1的五元组,以及保存有会话A的会话数据的内存地址1-1,构建成一个新的链表结点,基于报文A-1的五元组哈希值17,将该新构建的链表结点作为尾结点2-2,插入所述头结点地址为2的链表中。
所述网络设备又接收到待处理报文A-2,其为会话A的非首个报文,计算待处理报文A-2的五元组哈希值为17,按“取模法”分配至VCPU 2进行处理。
VCPU 2根据待处理报文A-2的五元组哈希值17,按“取模法”确定其对应的链表头结点地址为2,该链表中除头结点2-0外还有结点2-1、2-2,待处理报文A-2的五元组与结点2-2中所保存的五元组匹配成功,判定其命中图2所示的已保存的映射关系。
基于结点2-2中所保存的内存地址1-1,VCPU 2于自身所属物理CPU 1的内存中获取了会话A的会话数据,并基于会话A的会话数据,完成了对待处理报文A-2的处理。
本申请所提供的技术方案,各虚拟CPU将所处理报文所属会话的会话数据保存于自身所属物理CPU的内存中,并记录报文信息及会话数据的内存地址间的映射关系,后续处理同一会话的报文时,各VCPU能够基于报文信息查询已保存的映射关系,准确地于自身所属物理CPU的内存中获取其会话数据,不会出现跨物理CPU的内存访问,因而降低了性能消耗、提高了处理效率。
与前述会话数据管理方法的实施例相对应,本申请还提供了会话数据管理装置的实施例。
本申请所提供的会话数据管理装置的实施例,可以应用于网络设备中的任一虚拟CPU上,所述网络设备配置有多个物理CPU且每个物理CPU下运行有至少一个虚拟CPU。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在网络设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图3所示,为本申请所提供的会话数据管理装置所在网络设备的一种硬件结构图,除了图3所示的处理器、内存、网络接口、以及非易失性存储器之外,实施例中装置所在的网络设备通常根据其实际功能,还可以包括其他硬件,对此不再赘述。
参见图4,为本申请所提供的一种会话数据管理装置的框图,该装置包括检测单元410、添加单元420和获取单元430:
其中,检测单元410,用于在接收到待处理报文时,检测所述待处理报文的报文信息是否命中已保存的映射关系,所述映射关系为若干报文信息及会话数据的内存地址间的映射关系。
添加单元420,用于在所述报文信息未命中所述映射关系时,处理所述待处理报文并生成所述待处理报文所属会话的会话数据,将所述会话数据保存于自身所属目标物理CPU的内存中并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址。
获取单元430,用于在所述报文信息命中所述映射关系时,根据所述报文信息对应的会话数据的内存地址,于所述目标物理CPU的内存中获取所述待处理报文所属会话的会话数据,基于所述会话数据对所述待处理报文进行处理。
在一种可选择的实现方式下,所述映射关系通过多条链表保存,各链表包括若干链表结点,每个链表结点保存有报文信息及其对应的会话数据的内存地址,和指向下一链表结点的指针。
基于该实现方式,可选择地,所述检测单元410,在检测所述待处理报文的报文信息是否命中已保存的映射关系时,具体用于:
计算所述待处理报文的报文信息的哈希值,并确定所述哈希值对应的链表的头结点地址;
判断所述哈希值对应的链表除头结点外是否有其他结点,若无,则确定所述待处理报文的报文信息未命中所述映射关系;
若有,则将所述待处理报文的报文信息与所述哈希值对应的链表的各结点所保存的报文信息进行匹配结点,若任一结点所保存的报文信息与所述待处理报文的报文信息匹配,则确定所述待处理报文的报文信息命中所述映射关系;
若所有结点所保存的报文信息与所述待处理报文的报文信息均不匹配,则确定所述待处理报文的报文信息未命中所述映射关系。
基于该实现方式,可选择地,所述添加单元420,在将所述会话数据保存于自身所属目标物理CPU的内存中,并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址时,具体用于:
于所述目标物理CPU预分配的用于保存会话数据的若干内存块中,选取任一未使用的内存块保存所述会话数据;
基于所述待处理报文的报文信息及其对应的所述会话数据的内存地址构建链表结点,并将所构建的链表结点作为链表尾结点插入所述哈希值对应的链表中。
可选择地,所述各物理CPU用于保存会话数据的若干内存块,通过如下方法进行预分配:
根据所述网络设备中物理CPU的数量以及预设的整机最大会话数,为各物理CPU预先分配既定数量的内存块。
基于该实现方式,进一步地,所述装置还包括删除单元440,用于在检测到自身所属物理CPU的内存中保存有已老化的会话数据时,删除保存有所述已老化的会话数据的内存地址的链表结点,并对保存有所述已老化的会话数据的内存进行释放。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本申请方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
本说明书中描述的主题及功能操作的实施例可以在以下中实现:数字电子电路、有形体现的计算机软件或固件、包括本说明书中公开的结构及其结构性等同物的计算机硬件、或者它们中的一个或多个的组合。本说明书中描述的主题的实施例可以实现为一个或多个计算机程序,即编码在有形非暂时性程序载体上以被数据处理装置执行或控制数据处理装置的操作的计算机程序指令中的一个或多个模块。可替代地或附加地,程序指令可以被编码在人工生成的传播信号上,例如机器生成的电、光或电磁信号,该信号被生成以将信息编码并传输到合适的接收机装置以由数据处理装置执行。计算机存储介质可以是机器可读存储设备、机器可读存储基板、随机或串行存取存储器设备、或它们中的一个或多个的组合。
本说明书中描述的处理及逻辑流程可以由执行一个或多个计算机程序的一个或多个可编程计算机执行,以通过根据输入数据进行操作并生成输出来执行相应的功能。所述处理及逻辑流程还可以由专用逻辑电路—例如FPGA(现场可编程门阵列)或ASIC(专用集成电路)来执行,并且装置也可以实现为专用逻辑电路。
适合用于执行计算机程序的计算机包括,例如通用和/或专用微处理器,或任何其他类型的中央处理单元。通常,中央处理单元将从只读存储器和/或随机存取存储器接收指令和数据。计算机的基本组件包括用于实施或执行指令的中央处理单元以及用于存储指令和数据的一个或多个存储器设备。通常,计算机还将包括用于存储数据的一个或多个大容量存储设备,例如磁盘、磁光盘或光盘等,或者计算机将可操作地与此大容量存储设备耦接以从其接收数据或向其传送数据,抑或两种情况兼而有之。然而,计算机不是必须具有这样的设备。此外,计算机可以嵌入在另一设备中,例如移动电话、个人数字助理(PDA)、移动音频或视频播放器、游戏操纵台、全球定位系统(GPS)接收机、或例如通用串行总线(USB)闪存驱动器的便携式存储设备,仅举几例。
适合于存储计算机程序指令和数据的计算机可读介质包括所有形式的非易失性存储器、媒介和存储器设备,例如包括半导体存储器设备(例如EPROM、EEPROM和闪存设备)、磁盘(例如内部硬盘或可移动盘)、磁光盘以及CD ROM和DVD-ROM盘。处理器和存储器可由专用逻辑电路补充或并入专用逻辑电路中。
虽然本说明书包含许多具体实施细节,但是这些不应被解释为限制任何发明的范围或所要求保护的范围,而是主要用于描述特定发明的具体实施例的特征。本说明书内在多个实施例中描述的某些特征也可以在单个实施例中被组合实施。另一方面,在单个实施例中描述的各种特征也可以在多个实施例中分开实施或以任何合适的子组合来实施。此外,虽然特征可以如上所述在某些组合中起作用并且甚至最初如此要求保护,但是来自所要求保护的组合中的一个或多个特征在一些情况下可以从该组合中去除,并且所要求保护的组合可以指向子组合或子组合的变型。
类似地,虽然在附图中以特定顺序描绘了操作,但是这不应被理解为要求这些操作以所示的特定顺序执行或顺次执行、或者要求所有例示的操作被执行,以实现期望的结果。在某些情况下,多任务和并行处理可能是有利的。此外,上述实施例中的各种系统模块和组件的分离不应被理解为在所有实施例中均需要这样的分离,并且应当理解,所描述的程序组件和系统通常可以一起集成在单个软件产品中,或者封装成多个软件产品。
由此,主题的特定实施例已被描述。其他实施例在所附权利要求书的范围以内。在某些情况下,权利要求书中记载的动作可以以不同的顺序执行并且仍实现期望的结果。此外,附图中描绘的处理并非必需所示的特定顺序或顺次顺序,以实现期望的结果。在某些实现中,多任务和并行处理可能是有利的。
以上所述仅为本申请的较佳实施例而已,并不用以限制本申请,凡在本申请的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本申请保护的范围之内。

Claims (10)

1.一种会话数据的管理方法,其特征在于,所述方法应用于网络设备中的任一虚拟CPU上,所述网络设备配置有多个物理CPU且每个物理CPU下运行有至少一个虚拟CPU,所述物理CPU拥有内存,且同一会话下各报文分配至同一虚拟CPU进行处理,于所述物理CPU预分配的用于保存会话数据的若干内存块中,选取任一未使用的内存块保存所述会话数据,所述方法包括:
当目标虚拟CPU接收到待处理报文时,检测所述待处理报文的报文信息是否命中已保存的映射关系,所述映射关系为若干报文信息及会话数据的内存地址间的映射关系;
若所述目标虚拟CPU检测出所述待处理报文的报文信息未命中所述已保存的映射关系,则处理所述待处理报文并生成所述待处理报文所属会话的会话数据,将所述会话数据保存于自身所属目标物理CPU的内存中,并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址;
若所述目标虚拟CPU检测出所述待处理报文的报文信息命中所述已保存的映射关系,则根据所述映射关系中记录的所述报文信息对应的会话数据的内存地址,于所述目标物理CPU的内存中获取所述待处理报文所属会话的会话数据,基于所述会话数据对所述待处理报文进行处理。
2.根据权利要求1所述的方法,其特征在于,所述映射关系通过多条链表保存,各链表包括若干链表结点,每个链表结点保存有报文信息及其对应的会话数据的内存地址,和指向下一链表结点的指针;
所述检测所述待处理报文的报文信息是否命中已保存的映射关系,包括:
计算所述待处理报文的报文信息的哈希值,并确定所述哈希值对应的链表的头结点地址;
判断所述哈希值对应的链表除头结点外是否有其他结点,若无,则确定所述待处理报文的报文信息未命中所述映射关系;
若有,则将所述待处理报文的报文信息与所述哈希值对应的链表的各结点所保存的报文信息进行匹配,若任一结点所保存的报文信息与所述待处理报文的报文信息匹配,则确定所述待处理报文的报文信息命中所述映射关系;
若所有结点所保存的报文信息与所述待处理报文的报文信息均不匹配,则确定所述待处理报文的报文信息未命中所述映射关系。
3.根据权利要求2所述的方法,其特征在于,所述将所述会话数据保存于自身所属目标物理CPU的内存中,并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址,包括:
基于所述待处理报文的报文信息及其对应的所述会话数据的内存地址构建链表结点,并将所构建的链表结点作为链表尾结点插入所述哈希值对应的链表中。
4.根据权利要求3所述的方法,其特征在于,各物理CPU用于保存会话数据的若干内存块,通过如下方法进行预分配:
根据所述网络设备中物理CPU的数量以及预设的整机最大会话数,为各物理CPU预先分配既定数量的内存块。
5.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在检测到自身所属物理CPU的内存中保存有已老化的会话数据时,删除保存有所述已老化的会话数据的内存地址的链表结点,并对保存有所述已老化的会话数据的内存进行释放。
6.一种会话数据的管理装置,其特征在于,所述装置应用于网络设备中的任一虚拟CPU上,所述网络设备配置有多个物理CPU且每个物理CPU下运行有至少一个虚拟CPU,所述物理CPU拥有内存,且同一会话下各报文分配至同一虚拟CPU进行处理,于所述物理CPU预分配的用于保存会话数据的若干内存块中,选取任一未使用的内存块保存所述会话数据,所述装置包括检测单元、添加单元和获取单元:
所述检测单元,用于当目标虚拟CPU接收到待处理报文时,检测所述待处理报文的报文信息是否命中已保存的映射关系,所述映射关系为若干报文信息及会话数据的内存地址间的映射关系;
所述添加单元,用于在所述目标虚拟CPU检测出所述待处理报文的报文信息未命中所述已保存的映射关系时,处理所述待处理报文并生成所述待处理报文所属会话的会话数据,将所述会话数据保存于自身所属目标物理CPU的内存中并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址;
所述获取单元,用于在所述目标虚拟CPU检测出所述待处理报文的报文信息命中所述已保存的映射关系时,根据所述报文信息对应的会话数据的内存地址,于所述目标物理CPU的内存中获取所述待处理报文所属会话的会话数据,基于所述会话数据对所述待处理报文进行处理。
7.根据权利要求6所述的装置,其特征在于,所述映射关系通过多条链表保存,各链表包括若干链表结点,每个链表结点保存有报文信息及其对应的会话数据的内存地址,和指向下一链表结点的指针;
所述检测单元在检测所述待处理报文的报文信息是否命中已保存的映射关系时,具体用于:
计算所述待处理报文的报文信息的哈希值,并确定所述哈希值对应的链表的头结点地址;
判断所述哈希值对应的链表除头结点外是否有其他结点,若无,则确定所述待处理报文的报文信息未命中所述映射关系;
若有,则将所述待处理报文的报文信息与所述哈希值对应的链表的各结点所保存的报文信息进行匹配结点,若任一结点所保存的报文信息与所述待处理报文的报文信息匹配,则确定所述待处理报文的报文信息命中所述映射关系;
若所有结点所保存的报文信息与所述待处理报文的报文信息均不匹配,则确定所述待处理报文的报文信息未命中所述映射关系。
8.根据权利要求7所述的装置,其特征在于,所述添加单元在将所述会话数据保存于自身所属目标物理CPU的内存中,并向所述映射关系中添加所述报文信息及其对应的所述会话数据的内存地址时,具体用于:
基于所述待处理报文的报文信息及其对应的所述会话数据的内存地址构建链表结点,并将所构建的链表结点作为链表尾结点插入所述哈希值对应的链表中。
9.根据权利要求8所述的装置,其特征在于,各物理CPU用于保存会话数据的若干内存块,通过如下方法进行预分配:
根据所述网络设备中物理CPU的数量以及预设的整机最大会话数,为各物理CPU预先分配既定数量的内存块。
10.根据权利要求7所述的装置,其特征在于,所述装置还包括删除单元:
所述删除单元,用于在检测到自身所属物理CPU的内存中保存有已老化的会话数据时,删除保存有所述已老化的会话数据的内存地址的链表结点,并对保存有所述已老化的会话数据的内存进行释放。
CN202110226626.4A 2021-03-01 2021-03-01 一种会话数据的管理方法和装置 Active CN112948313B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110226626.4A CN112948313B (zh) 2021-03-01 2021-03-01 一种会话数据的管理方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110226626.4A CN112948313B (zh) 2021-03-01 2021-03-01 一种会话数据的管理方法和装置

Publications (2)

Publication Number Publication Date
CN112948313A CN112948313A (zh) 2021-06-11
CN112948313B true CN112948313B (zh) 2023-11-21

Family

ID=76246960

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110226626.4A Active CN112948313B (zh) 2021-03-01 2021-03-01 一种会话数据的管理方法和装置

Country Status (1)

Country Link
CN (1) CN112948313B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113419973B (zh) * 2021-06-17 2023-05-26 杭州迪普科技股份有限公司 一种报文转发方法及装置
CN113645140B (zh) * 2021-07-06 2023-04-07 曙光信息产业(北京)有限公司 报文的统计方法、装置、存储介质及网络设备
CN116723150B (zh) * 2023-08-07 2024-07-19 北京立思辰安科技术有限公司 一种数据包的转发系统

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013071890A1 (zh) * 2011-11-18 2013-05-23 运软网络科技(上海)有限公司 基于身份和会话的资源访问系统和方法
CN105630731A (zh) * 2015-12-24 2016-06-01 曙光信息产业(北京)有限公司 一种多cpu环境下网卡数据处理方法和装置
CN105634958A (zh) * 2015-12-24 2016-06-01 东软集团股份有限公司 基于多核系统的报文转发方法和装置
CN106534287A (zh) * 2016-10-27 2017-03-22 杭州迪普科技股份有限公司 一种会话表项的管理方法和装置
CN106713041A (zh) * 2016-12-29 2017-05-24 杭州迪普科技股份有限公司 会话日志的发送方法及装置
CN107124402A (zh) * 2017-04-12 2017-09-01 杭州迪普科技股份有限公司 一种报文过滤的方法和装置
CN107612840A (zh) * 2017-09-26 2018-01-19 东软集团股份有限公司 一种四层负载均衡设备的数据处理方法及装置
CN108363621A (zh) * 2018-01-18 2018-08-03 东软集团股份有限公司 numa架构下的报文转发方法、装置、存储介质及电子设备
CN110855528A (zh) * 2019-11-22 2020-02-28 新华三技术有限公司 报文处理方法及测试设备
CN111526225A (zh) * 2020-04-28 2020-08-11 杭州迪普科技股份有限公司 会话管理方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6658480B2 (en) * 1997-10-14 2003-12-02 Alacritech, Inc. Intelligent network interface system and method for accelerated protocol processing
CN101800676A (zh) * 2010-02-20 2010-08-11 中兴通讯股份有限公司 链路检测方法、装置和系统
US9727451B2 (en) * 2014-03-28 2017-08-08 Fortinet, Inc. Virtualization in a multi-host environment

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013071890A1 (zh) * 2011-11-18 2013-05-23 运软网络科技(上海)有限公司 基于身份和会话的资源访问系统和方法
CN105630731A (zh) * 2015-12-24 2016-06-01 曙光信息产业(北京)有限公司 一种多cpu环境下网卡数据处理方法和装置
CN105634958A (zh) * 2015-12-24 2016-06-01 东软集团股份有限公司 基于多核系统的报文转发方法和装置
CN106534287A (zh) * 2016-10-27 2017-03-22 杭州迪普科技股份有限公司 一种会话表项的管理方法和装置
CN106713041A (zh) * 2016-12-29 2017-05-24 杭州迪普科技股份有限公司 会话日志的发送方法及装置
CN107124402A (zh) * 2017-04-12 2017-09-01 杭州迪普科技股份有限公司 一种报文过滤的方法和装置
CN107612840A (zh) * 2017-09-26 2018-01-19 东软集团股份有限公司 一种四层负载均衡设备的数据处理方法及装置
CN108363621A (zh) * 2018-01-18 2018-08-03 东软集团股份有限公司 numa架构下的报文转发方法、装置、存储介质及电子设备
CN110855528A (zh) * 2019-11-22 2020-02-28 新华三技术有限公司 报文处理方法及测试设备
CN111526225A (zh) * 2020-04-28 2020-08-11 杭州迪普科技股份有限公司 会话管理方法和装置

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
VMGuard:An Integrity Monitoring System for Management Virtual Machines;Haifeng Fang等;《2010 IEEE 16th International Conference on Parallel and Distributed Systems》;67-74 *
面向移动网络环境的智能协同蜜网设计与性能分析;陈利跃等;《电信科学》;第34卷(第11期);156-165 *

Also Published As

Publication number Publication date
CN112948313A (zh) 2021-06-11

Similar Documents

Publication Publication Date Title
CN112948313B (zh) 一种会话数据的管理方法和装置
CN105630955B (zh) 一种高效动态的数据集合成员管理方法
CN104462225B (zh) 一种数据读取的方法、装置及系统
WO2017020576A1 (zh) 一种键值存储系统中文件压实的方法和装置
CN108234348A (zh) 一种队列操作中的处理方法及装置
CN110858162A (zh) 内存管理方法及装置、服务器
CN108399175B (zh) 一种数据存储、查询方法及其装置
CN107122130A (zh) 一种数据重删方法及装置
US10073878B1 (en) Distributed deduplication storage system with messaging
CN107038092B (zh) 一种数据复制方法及装置
TW201716983A (zh) 針對網路裝置實施階層分布式連結列表之系統及方法
CN108259348B (zh) 一种报文传输方法和装置
CN115048142A (zh) 缓存访问命令处理系统、方法、装置、设备和存储介质
CN113419973B (zh) 一种报文转发方法及装置
CN113377689B (zh) 一种路由表项查找、存储方法及网络芯片
CN116991855B (zh) 哈希表处理方法、装置、设备、介质、控制器及固态硬盘
WO2016131175A1 (zh) 多核系统中数据访问者目录的访问方法及设备
CN114706834A (zh) 一种高效率的动态集合管理方法和系统
WO2017045500A1 (zh) 存储阵列管理方法及装置
CN116560562A (zh) 一种读、写数据方法及装置
CN117577163A (zh) 一种ssd坏块检测方法、装置、计算机设备及存储介质
US9811403B1 (en) Method, apparatus and system for performing matching operations in a computing system
CN112800057B (zh) 一种指纹表管理方法及装置
US11606277B2 (en) Reducing the impact of network latency during a restore operation
CN113835613B (zh) 一种文件读取方法、装置、电子设备和存储介质

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