一种报文转发方法、系统及设备与流程

文档序号:20487777发布日期:2020-04-21 21:48阅读:136来源:国知局
技术简介:
本专利针对多核转发系统中负载不均导致的性能瓶颈问题,提出通过配置核动态调整网卡队列与转发核的映射关系,并同步更新会话表映射,将高负载网卡队列迁移至低负载转发核,实现负载均衡与处理效率优化。
关键词:多核负载均衡,动态映射调整
本申请涉及通信
技术领域
,具体涉及一种报文转发方法、系统及设备。
背景技术
:在多核转发系统中,除了多个转发核之间并发处理需要优化外,多个转发核之间的报文负载均衡也是十分重要的。当前技术中对报文转发负载均衡的处理一般是在负载较高的转发核收到报文后,基于软件将报文倒核到负载较小的转发核上处理,而报文的转发是基于会话表项的,故而还要涉及会话表项的迁移。当同一时刻多个报文被倒核到不同的转发核时,也会导致多个会话表项被倒核到不同的转发核中,导致转发系统性能下降。技术实现要素:有鉴于此,本申请实施例提供一种报文转发方法、系统及设备,通过迁移网卡队列和会话表实现报文转发系统的负载均衡,提升系统整体转发性能。为解决上述问题,本申请实施例提供的技术方案如下:一种报文转发方法,所述方法应用于多核转发系统,所述多核转发系统包括配置核和多个转发核,所述配置核建立网卡队列对应的会话表,各个所述网卡队列对应的会话表为每网卡队列资源,所述方法包括:所述配置核从所述转发核中确定第一转发核和第二转发核,并确定所述第一转发核对应的目标网卡队列;所述配置核建立更新后的网卡队列与转发核的映射表,所述更新后的网卡队列与转发核的映射表中将所述目标网卡队列与所述第一转发核具有对应关系,更新为所述目标网卡队列与所述第二转发核具有对应关系;所述配置核建立更新后的会话表与转发核的映射表,所述更新后的会话表与转发核的映射表中将所述目标网卡队列对应的会话表与所述第一转发核具有对应关系,更新为所述目标网卡队列对应的会话表与所述第二转发核具有对应关系;所述第二转发核基于所述更新后的网卡队列与转发核的映射表,从所述目标网卡队列接收报文;所述第二转发核基于所述更新后的会话表与转发核的映射表,利用报文所属会话表进行报文转发。在一种可能的实现方式中,所述配置核建立更新后的网卡队列与转发核的映射表,包括:所述配置核基于当前的网卡队列与转发核的映射表建立更新后的网卡队列与转发核的映射表,所述当前的网卡队列与转发核的映射表中所述目标网卡队列仅与所述第一转发核具有对应关系,所述更新后的网卡队列与转发核的映射表中所述目标网卡队列仅与所述第二转发核具有对应关系;所述配置核建立更新后的会话表与转发核的映射表,包括:所述配置核基于当前的会话表与转发核的映射表建立更新后的会话表与转发核的映射表,所述当前的会话表与转发核的映射表中所述目标网卡队列对应的会话表仅与所述第一转发核具有对应关系,所述更新后的会话表与转发核的映射表中所述目标网卡队列对应的会话表仅与所述第二转发核具有对应关系。在一种可能的实现方式中,在所述第二转发核基于所述更新后的网卡队列与转发核的映射表,从所述目标网卡队列接收报文之前,所述方法还包括:所述第一转发核将第一指针从指向所述当前的网卡队列与转发核的映射表,变更为指向所述更新后的网卡队列与转发核的映射表;所述第一指针为各个所述转发核使用的全局指针,表征各个转发核当前使用的网卡队列与转发核的映射表;所述第一转发核将第二指针从指向所述当前的会话表与转发核的映射表,变更为指向所述更新后的会话表与转发核的映射表;所述第二指针为各个所述转发核使用的全局指针,表征各个转发核当前使用的会话表与转发核的映射表。在一种可能的实现方式中,所述第二转发核基于所述更新后的网卡队列与转发核的映射表,从所述目标网卡队列接收报文,包括:所述第二转发核读取所述更新后的网卡队列与转发核的映射表,确定与当前转发核对应的网卡队列;所述第二转发核遍历各个所述与当前转发核对应的网卡队列,从各个所述与当前转发核对应的网卡队列接收报文,所述与当前转发核对应的网卡队列包括所述目标网卡队列。在一种可能的实现方式中,所述第二转发核基于所述更新后的会话表与转发核的映射表,利用报文所属会话表进行报文转发,包括:所述第二转发核在接收报文后,获取所述报文所属会话表的标识;所述第二转发核读取所述更新后的会话表与转发核的映射表,当所述报文所属会话表的标识对应的转发核为当前转发核时,基于所述报文所属会话表进行报文转发。在一种可能的实现方式中,所述方法还包括:当所述报文所属会话表的标识对应的转发核为其他转发核,将所述报文发送给该转发核。在一种可能的实现方式中,所述配置核从所述转发核中确定第一转发核和第二转发核,并确定所述第一转发核对应的目标网卡队列,包括:所述配置核获取各个所述转发核的利用率,当存在所述转发核的利用率超过预设阈值时,将所述利用率符合第一预设条件的转发核确定为第一转发核,将所述利用率符合第二预设条件的转发核确定为第二转发核;获取所述第一转发核的各个网卡队列的负载值,将所述负载值符合第三预设条件的网卡队列确定为所述第一转发核对应的目标网卡队列。在一种可能的实现方式中,所述配置核从所述转发核中确定第一转发核和第二转发核,并确定所述第一转发核对应的目标网卡队列,包括:所述配置核接收网卡队列高负载信息,将发送所述网卡队列高负载信息的转发核确定为第一转发核,根据所述网卡队列高负载信息携带的网卡队列标识确定所述第一转发核对应的目标网卡队列;所述配置核获取各个所述转发核的利用率,将所述利用率符合第二预设条件的转发核确定为第二转发核。一种报文转发系统,所述系统包括配置核和多个转发核,所述配置核包括建立单元,用于建立网卡队列对应的会话表,各个所述网卡队列对应的会话表为每网卡队列资源,所述配置核还包括第一确定单元、第二确定单元、第一建立单元和第二建立单元,所述转发核包括接收单元和转发单元,所述第一确定单元,用于从所述转发核中确定第一转发核和第二转发核;所述第二确定单元,用于确定所述第一转发核对应的目标网卡队列;所述第一建立单元,用于建立更新后的网卡队列与转发核的映射表,所述更新后的网卡队列与转发核的映射表中将所述目标网卡队列与所述第一转发核具有对应关系,更新为所述目标网卡队列与所述第二转发核具有对应关系;所述第二建立单元,用于建立更新后的会话表与转发核的映射表,所述更新后的会话表与转发核的映射表中将所述目标网卡队列对应的会话表与所述第一转发核具有对应关系,更新为所述目标网卡队列对应的会话表与所述第二转发核具有对应关系;所述接收单元,用于基于所述更新后的网卡队列与转发核的映射表,从所述目标网卡队列接收报文;所述转发单元,用于基于所述更新后的会话表与转发核的映射表,利用报文所属会话表进行报文转发。一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行所述的报文转发的方法。一种实现报文转发的处理设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现所述的报文转发方法。由此可见,本申请实施例具有如下有益效果:本申请实施例中配置核从多个转发核中确定出高负载的第一转发核和低负载的第二转发核,并从第一转发核中确定高负载的目标网卡队列。然后,配置核根据确定出的目标网卡队列重新构建网卡队列与转发核的映射表,使得更新后的网卡队列与转发核的映射表中的目标网卡队列仅与第二转发核具有对应关系。同时,配置核重新构建会话表与转发核的映射表,使得更新后的会话表与转发核的映射表中的目标网卡队列对应的会话表仅与第二转发核具有对应关系。从而由第二转发核从目标网卡队列接收报文,并基于更新后的会话表与转发核的映射表,找到报文所属会话表进行报文转发。也就是,本申请实施例通过迁移网卡队列和该网卡队列对应的会话表实现转发核之间的负载均衡,无需对单个报文和会话表项进行倒核,提升迁移效率,从而提升系统的整体转发性能。附图说明图1为本申请实施例提供的防火墙报文转发示意图;图2为本申请实施例提供的一种报文转发方法的流程图;图3为本申请实施例提供的一种报文接收和转发方法的流程图;图4为本申请实施例提供的一种报文转发处理框架图;图5为本申请实施例提供的一种报文转发装置结构图。具体实施方式为使本申请的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本申请实施例作进一步详细的说明。为便于理解本申请提供的技术方案,下面将先对本申请涉及的
背景技术
进行说明。多核转发系统在处理报文转发负载均衡时,通常采取的处理方式是将负载较重的转发核所接收的报文倒核到负载较小的转发核上。由于报文的转发是基于会话表项进行的,因此在进行报文倒核时,还需要将该报文对应的会话表项倒核到负载较小的转发核上。然而,由于一个会话表项仅能由一个转发核处理,因此在迁移会话表项时需要对涉及的会话表进行加锁处理,这样使得负载均衡机制更为复杂,反而导致多核转发系统的转发性能降低。此外,当同时需要对多个报文进行倒核处理时,也会导致同一时刻多个会话表项进行倒核,使得转发系统性能下降。基于此,本申请实施例提供了一种报文转发方法,该方法可以应用于多核转发系统中,该多核转发系统可以包括配置核和多个转发核。具体为,由配置核从多个转发核中确定出负载较重的第一转发核和负载较小的第二转发核,并从第一转发核对应的网卡队列中确定负载最重的目标网卡队列。为减轻第一转发核的负载,配置核构建新的网卡队列与转发核的映射表,使得目标网卡队列仅与第二转发核对应,即由第二转发核从目标网卡队列中接收报文。同时,配置核进一步构建新的会话表与转发核的映射表,使得目标网卡队列对应的会话表仅与第二转发核对应,即当第二转发核从目标网卡队列中接收到报文后,由于该报文对应的会话表被配置给第二转发核,因此,第二转发核可以利用该报文对应的会话表进行报文转发。可见,本申请实施例在进行负载均衡时,不再进行报文倒核和会话表项倒核,而是将负载较重的网卡队列以及该网卡队列对应的会话表整体迁移到负载较小的转发核中,不仅提升了整个负载均衡时处理性能,而且由配置核对全局映射表进行重新构建,整个迁移过程完全无锁,多核之间无需竞争,提升整体报文的转发性能。此外,当出现负载不均衡时,由配置核统一进行网卡队列和会话表的迁移,无需每个转发核自行选择负载较小的转发核进行报文和会话表项的倒核,既减小每个转发核的工作量,也避免报文倒核处理,提升转发性能。为便于理解本申请实施例提供的技术方案,参见图1,该图为本申请实施例提供的报文转发系统示意图,该报文转发系统为多核转发系统,例如可以为防火墙,该报文转发系统可以包括两类处理核分别为配置核和转发核。其中,转发核仅参与报文的接收和转发;配置核不仅可以参与转发报文,还可以处理负载均衡。在初始化时配置核统计所有网卡的网卡队列总数p,对每个网卡队列进行序号标记,为每个网卡队列配置全局id分别为1,2,3,4,…,p。为保证会话表同一时间仅被一个转发核处理,本申请实施例将会话表设计为每网卡队列资源,也就是,会话表是基于每个网卡队列而构建,每个网卡队列仅能使用对应于该网卡队列的会话表。具体地,配置核建立网卡队列对应的会话表,各个网卡队列对应的会话表为每网卡队列资源,也就是基于系统中p个网卡队列构建p个会话表,每个会话表的全局id分别为1,2,3,4,…,p,与每个网卡队列的id一一对应,即会话表与网卡队列一一对应。这样设计对于每个转发核而言,如果转发核处理m个网卡队列的报文,则将该m个网卡队列对应的会话表id配置给该转发核处理。需要说明的是,当转发核从网卡队列x接收报文后,未查询到该报文对应的会话表项,则转发核将基于该报文建立会话表项,并将该会话表项添加到会话表id为x的会话表中。基于上述说明,为便于理解本申请实施例的具体实现,下面将结合附图对本申请实施例提供的报文转发方法进行说明。需要说明的是,为便于理解和描述,下述实施例将利用nic-table表示网卡队列与转发核的映射表、sess-table表示会话表与转发核的映射表。参见图2,该图为本申请实施例提供的一种报文转发方法的流程图,如图2所示,该方法应用于多核转发系统,该多个转发系统包括配置核和多个转发核,该方法可以包括:s201:配置核从多个转发核中确定第一转发核和第二转发核,并确定第一转发核对应的目标网卡队列。本实施例中,为实现负载均衡,配置核可以获取每个转发核的负载情况,以便根据每个转发核的负载情况确定出处于高负载状态的第一转发核和处于低负载状态的第二转发核。而且,由于每个转发核可以对应多个网卡队列,因此在确定出第一转发核中,还可以从第一转发核对应的网卡队列中确定出高负载的目标网卡队列,以便针对高负载的目标网卡队列进行负载均衡。在具体实现时,本实施例提供了以下两种确定第一转发核、第二转发核以及目标网卡队列的实现方式,下面将分别进行说明:一种是:配置核获取各个转发核的利用率,当存在转发核的利用率超过预设阈值时,将利用率符合第一预设条件的转发核确定为第一转发核,将利用率符合第二预设条件的转发核确定为第二转发核。即,配置核可以实时获取每个转发核的利用率,当检测到某转发核的利用率超过预设阈值时,则进入负载均衡模式,将利用率符合第一预设条件的转发核确定为第一转发核,将利用率符合第二预设条件的转发核确定为第二转发核。其中,预设阈值可以根据实际应用情况进行设备,例如为90%;第一预设条件和第二预设条件可以为具体的利用率阈值,如第一预设条件为95%,第二预设条件为20%,即将利用率大于或等于95%的转发核确定为第一转发核,将利用率小于或等于20%的转发核确定为第二转发核。需要说明的是,通常情况下可以将负载最高的转发核确定为第一转发核,将负载最低的转发核确定为第二转发核。当确定出第一转发核后,获取该第一转发核的各个网卡队列的负载值,将负载值符合第三预设条件的网卡队列确定为第一转发核对应的目标网卡队列。其中,第三预设条件可以为负载阈值,将负载值大于或等于负载阈值的网卡队列确定为目标网卡队列。通常情况下可以将负载最高的网卡队列确定为目标网卡队列。另一种是:配置核接收网卡队列高负载信息,将发送网卡队列高负载信息的转发核确定为第一转发核,根据网卡队列高负载信息携带的网卡队列标识确定为第一转发核对应的目标网卡队列;配置核获取各个转发核的利用率,将利用率符合第二预设条件的转发核确定为第二转发核。即,每个转发核可以实时监测自身所对应的网卡队列的负载情况,当监测到某网卡队列对应的负载较高时,向配置核发送网卡队列高负载信息。配置核在接收到网卡队列高负载信息后,将发送该高负载信息的转发核确定为第一转发核,并将网卡队列高负载信息携带的网卡队列标识对应的网卡队列确定为目标网卡队列。同时,再根据每个转发核的利用率,将利用率符合第二预设条件的转发核确定为第二转发核。可以理解的是,通过上述两种方式配置核可以从多个转发核中确定出第一转发核、第二转发核以及目标网卡队列。s202:配置核建立更新后的网卡队列与转发核的映射表,更新后的网卡队列与转发核的映射表中将目标网卡队列与第一转发核具有对应关系,更新为目标网卡队列与第二转发核具有对应关系。配置核在确定出第一转发核、第二转发核以及目标网卡队列后,根据上述信息重新构建网卡队列与转发核的映射表,该重新构建的过程是将原网卡队列与转发核的映射表中目标网卡队列与第一转发核具有对应关系,修改为目标网卡队列与第二转发核具有对应关系,且目标网卡队列与第一转发核不再具有对应关系。即,在建立目标网卡队列与第二转发核的对应关系时,删除目标网卡队列与第一转发核的对应关系,从而保证一个网卡队列同时仅被一个转发核处理。具体地,配置核基于当前的网卡队列与转发核的映射表建立更新后的网卡队列与转发核的映射表,其中,当前的网卡队列与转发核的映射表中目标网卡队列仅与第一转发核具有对应关系,更新后的网卡队列与转发核的映射表中的目标网卡队列仅与第二转发核具有对应关系。例如,当前的网卡队列与转发核的映射表为nic-table0,重新构建的网卡队列与转发核的映射表为nic-table1。nic-table0与nic-table1的区别在于,nic-table0中目标网卡队列仅与第一转发核具有对应关系,nic-table1中目标网卡队列仅与第二转发核具有对应关系,其余网卡队列与转发核之间的对应关系两个表均相同。在具体实现时,网卡队列与转发核的映射表nic-table可以设计为二维数组,即nic-table[n][m],其中,n为转发核的最大个数,m为网卡队列的最大个数。在实际应用中,nic-table由配置核进行构建,其他转发核无权修改网卡队列与转发核之间的对应关系,只具有读权限。需要说明的是,nic-table被配置为全局表,所有的转发核共享该nic-table。在具体实现时,为保证所有的转发核所访问的nic-table为配置核最新构建的映射表,可以使用一个全局指针来实现。具体地,配置核在构建新的nic-table之后,可以向第一转发核发送更新消息,由第一转发核将第一指针从指向当前的网卡队列与转发核的映射表,变更为指向更新后的网卡队列与转发核的映射表。其中,第一指针为各个转发核所使用的全局指针,表征各个转发核当前使用的网卡队列与转发核的映射表。也就是说,在进行第一指针变更时,是由第一转发核执行变更操作,原因是配置核是将第一转发核对应的目标网卡队列移除掉,将目标网卡队列添加到第二转发核,为使得第一转发核和第二转发核不同时从目标网卡队列接收报文,故而由第一转发核率先将第一指针指向旧表变更为指向新表。同时,也使得所有的转发核在接收报文时,均使用新创建的nic-table。例如,第一指针为&nic-table,变更之前nic-table0=&nic-table,当配置核构建完成nic-table1后,向第一转发核发送构建完成消息,由第一转发核将第一指针变更为nic-table1=&nic-table。s203:配置核建立更新后的会话表与转发核的映射表,更新后的会话表与转发核的映射表中将目标网卡队列对应的会话表与第一转发核具有对应关系,更新为目标网卡队列对应的会话表与第二转发核具有对应关系。可以理解的是,由于会话表为每个网卡队列资源,当配置核将目标网卡队列的处理权从第一转发核更新为第二转发核时,也需要将目标网卡队列对应的会话表的处理权从第一转发核更新为第二转发核。即配置核重新构建会话表与转发核的映射表,将原始的会话表与转发核的映射表中目标网卡队列对应的会话表与第一转发核具有对应关系变更为目标网卡队列对应的会话表与第二转发核具有对应关系。具体地,配置核基于当前的会话表与转发核的映射表建立更新后的会话表与转发核的映射表,其中,当前的会话表与转发核的映射表中目标网卡队列对应的会话表仅与第一转发核具有对应关系,更新后的会话表与转发核的映射表中目标网卡队列对应的会话表仅与第二转发核具有对应关系。例如,当前的会话表与转发核的映射表为sess-table0,重新构建的会话表与转发核的映射表为sess-table1。sess-table0与sess-table1的区别在于,sess-table1中目标网卡队列对应的会话表仅与第一转发核具有对应关系,sess-table1中目标网卡队列对应的会话表仅与第二转发核具有对应关系,其余网卡队列对应的会话表与转发核之间的对应关系两个表均相同。在具体实现时,会话表与转发核的映射表sess-table可以设计为一维数组,在具体配置时,配置核根据当前网卡队列与转发核的映射关系构建该一维数组。同理,sess-table也被配置为全局表,所有转发核共享该sess-table,在应用时,可以使用一个全局指针来实现sess-table的共享。具体地,配置核在构建新的sess-table之后,可以向第一转发核发送更新消息,由第一转发核将第二指针从指向当前的会话表与转发核的映射表,变更为指向更新后的会话表与转发核的映射表。其中,第二指针为各个转发核使用的全局指针,表征各个转发核当前使用的会话表与转发核的映射表。即,在变更第二指针时,也是由第一转发核进行,从而保证第一转发核在接收目标网卡队列发送的报文时,可以从目标网卡对应的会话表中查找该报文对应的会话表项,进而实现报文的转发。例如,第二指针为&sess-table,变更之前sess-table0=&sess-table,当配置核构建完成sess-table1后,向第一转发核发送构建完成消息,由第一转发核将第一指针变更为sess-table1=&sess-table。基于上述描述可知,对于nic-table和sess-table两个表,本实施例均采用整表替换的方式实现映射表的更新,从而使得多核转发处理无需加锁,不仅提升整体转发性能,还可以保证其他转发核正常处理报文。s204:第二转发核基于更新后的网卡队列与转发核的映射表,从目标网卡队列接收报文。s205:第二转发核基于更新后的会话表与转发核的映射表,利用报文所属会话表进行报文转发。当配置核更新完上述两个映射表后,各个转发核可以基于新的映射表进行报文接收和转发。具体地,第二转发核基于更新后的网卡队列与转发核的映射表,从目标网卡队列接收报文,并基于更新后的会话表与转发核的映射表,利用报文所属会话表进行报文转发,从而实现由第二转发核处理目标网卡队列的报文,减轻第一转发核的负载。通过上述实施例可知,配置核从多个转发核中确定出处于高负载的第一转发核和处于低负载的第二转发核,并从第一转发核中确定高负载的目标网卡队列。然后,配置核根据确定出的目标网卡队列重新构建网卡队列与转发核的映射表,使得更新后的网卡队列与转发核的映射表中的目标网卡队列仅与第二转发核具有对应关系。同时,配置核重新构建会话表与转发核的映射表,使得更新后的会话表与转发核的映射表中的目标网卡队列对应的会话表仅与第二转发核具有对应关系。从而由第二转发核从目标网卡队列接收报文,并基于更新后的会话表与转发核的映射表,找到报文所属会话表进行报文转发。也就是,本申请实施例通过网卡队列迁移和该网卡队列对应的会话表迁移实现转发核之间的负载均衡,无需进行报文和会话表项的倒核,提升迁移效率,从而提升系统的整体转发性能。在一种可能的实现方式中,本实施例提供了一种第二转发核基于更新后的网卡队列与转发核的映射表接收报文和基于会话表与转发核的映射表转发报文的具体实现,为便于理解,下面将结合附图进行说明。参见图3,该图为本申请实施例提供的一种报文接收和转发方法的流程图,如图3所示,该方法可以包括:s301:第二转发核读取更新后的网卡队列与转发核的映射表,确定与当前转发核对应的网卡队列。s302:第二转发核遍历各个与当前转发核对应的网卡队列,从各个与当前转发核对应的网卡队列接收报文。本实施例中,第二转发核可以通过更新后的网卡队列与转发核的映射表,确定自身所对应的网卡队列,然后遍历自身所对应的各个网卡队列,以从上述各个网卡队列中接收报文。可以理解的是,对于多核转发系统中的每个转发核均可以通过上述方式确定自身所对应的网卡队列,以接收自身对应的网卡队列发送的报文。可以理解的是,第二转发核所对应的网卡队列中包括目标网卡队列。例如,更新后的nic-table中转发核cpu1对应网卡队列nic1、nic3和nic5;cpu2对应网卡队列nic2、nic4和nic6。cpu1通过nic-table可以确定自身将从nic1、nic3和nic5中接收报文,cpu2通过nic-table可以确定自身将从nic2、nic4和nic6中接收报文。s303:第二转发核在接收报文后,获取报文所属会话表的标识。可以理解的是,由于第二转发核已经获知自身所对应的网卡队列,因此在接收报文时,可以获知所接收的报文所归属的网卡队列。由于会话表的标识与网卡队列的标识一一对应,因此,第二转发核可以通过报文获取该报文所属会话表的标识。例如,第二转发核获取的报文来自网卡队列1,则该报文所属会话表的标识为1。s304:第二转发核读取更新后的会话表与转发核的映射表,当报文所属会话表的标识对应的转发核为当前转发核时,基于报文所属会话表进行报文转发。第二转发核在获取到报文所属会话表的标识后,通过读取更新后的会话表与转发核的映射表可以获取该会话表的标识对应的转发核。然后,第二转发核判断通过映射表所获取的转发核是否为自身,如果是,则基于报文所属会话表进行报文转发;如果不是,则将报文发送给所获取的转发核。例如,第二转发核cpu2根据报文所属会话表的标识从更新后的会话表与转发核的映射表获取的转发核为cpu2,则直接基于报文所属会话表进行报文转发;如果所获取的转发核为cpu1,则将报文发送给cpu1,由cpu1进行后续转发处理。在具体实现时,第二转发核基于报文所属会话表进行报文转发时,包括在报文所属会话表中查找该报文对应的会话表项,如果存在该报文对应的会话表项,则基于该会话表项进行报文转发;如果不存在,则根据报文构建会话表项,并将构建的会话表项添加到该会话表中。基于上述方法,第二转发核可以基于更新后的网卡队列与转发核的映射表以及更新后的会话表与转发核的映射表进行报文的接收和转发,实现对目标网卡队列报文的处理,从而提升报文转发性能。为便于理解转发核处理过程,参见图4所示转发核处理流程框架图,转发核从自身对应的网卡队列中接收报文,并根据该报文确定该报文所属会话表id。转发核利用会话表id从sess-table中获取该会话id对应的转发核cpux,再判断cpux是否为自身。如果cpux不是当前转发核,则将报文发送给cpux处理。如果cpux为当前转发核,则判断报文所属会话表中是否存在对应的会话表项,如果存在,则基于会话表转发报文;如果不存在,则基于策略创建会话表项,将该会话表项添加到该会话表中,再基于会话表转发报文。需要说明的是,在实际进行负载均衡重新分配时,仅对两个转发核的网卡队列进行切换,不会同时切换多个转发核的网卡队列。但如果出现多个转发核同时出现高负载,则会每两个转发核按照顺序依次进行替换,从而实现整个负载均衡的过程。基于上述方法实施例,本申请实施例还提供了一种报文转发系统,下面将结合附图对该系统进行说明。参见图5,该图为本申请实施例提供的一种报文转发系统结构图,如图5所示,所述系统可以应用于多核转发系统,所述系统可以包括配置核和多个转发核,所述配置核包括建立单元,用于建立网卡队列对应的会话表,各个所述网卡队列对应的会话表为每网卡队列资源,所述配置核501还包括第一确定单元5011、第二确定单元5012、第一建立单元5013和第二建立单元5014,所述转发核502包括接收单元5021和转发单元5022,所述第一确定单元5011,用于从所述转发核中确定第一转发核和第二转发核;所述第二确定单元5012,用于确定所述第一转发核对应的目标网卡队列;所述第一建立单元5013,用于建立更新后的网卡队列与转发核的映射表,所述更新后的网卡队列与转发核的映射表中将所述目标网卡队列与所述第一转发核具有对应关系,更新为所述目标网卡队列与所述第二转发核具有对应关系;所述第二建立单元5014,用于建立更新后的会话表与转发核的映射表,所述更新后的会话表与转发核的映射表中将所述目标网卡队列对应的会话表与所述第一转发核具有对应关系,更新为所述目标网卡队列对应的会话表与所述第二转发核具有对应关系;所述接收单元5021,用于基于所述更新后的网卡队列与转发核的映射表,从所述目标网卡队列接收报文;所述转发单元5022,用于基于所述更新后的会话表与转发核的映射表,利用报文所属会话表进行报文转发。在一种可能的实现方式中,所述第一建立单元,具体用于所述配置核基于当前的网卡队列与转发核的映射表建立更新后的网卡队列与转发核的映射表,所述当前的网卡队列与转发核的映射表中所述目标网卡队列仅与所述第一转发核具有对应关系,所述更新后的网卡队列与转发核的映射表中所述目标网卡队列仅与所述第二转发核具有对应关系;所述第二建立单元,具体用于基于当前的会话表与转发核的映射表建立更新后的会话表与转发核的映射表,所述当前的会话表与转发核的映射表中所述目标网卡队列对应的会话表仅与所述第一转发核具有对应关系,所述更新后的会话表与转发核的映射表中所述目标网卡队列对应的会话表仅与所述第二转发核具有对应关系。在一种可能的实现方式中,所述转发核还包括:第一变更单元和第二变更单元;所述第一变更单元,用于在执行所述接收单元之前,将第一指针从指向所述当前的网卡队列与转发核的映射表,变更为指向所述更新后的网卡队列与转发核的映射表;所述第一指针为各个所述转发核使用的全局指针,表征各个转发核当前使用的网卡队列与转发核的映射表;所述第二变更单元,用于将第二指针从指向所述当前的会话表与转发核的映射表,变更为指向所述更新后的会话表与转发核的映射表;所述第二指针为各个所述转发核使用的全局指针,表征各个转发核当前使用的会话表与转发核的映射表。在一种可能的实现方式中,所述接收单元,包括:确定子单元,用于读取所述更新后的网卡队列与转发核的映射表,确定与当前转发核对应的网卡队列;接收子单元,用于遍历各个所述与当前转发核对应的网卡队列,从各个所述与当前转发核对应的网卡队列接收报文,所述与当前转发核对应的网卡队列包括所述目标网卡队列。在一种可能的实现方式中,所述转发单元,包括:获取子单元,用于获取所述报文所属会话表的标识;转发子单元,用于读取所述更新后的会话表与转发核的映射表,当所述报文所属会话表的标识对应的转发核为当前转发核时,基于所述报文所属会话表进行报文转发。在一种可能的实现方式中,所述转发核还包括:发送单元,用于当所述报文所属会话表的标识对应的转发核为其他转发核,将所述报文发送给该转发核。在一种可能的实现方式中,所述第一确定单元,具体用于获取各个所述转发核的利用率,当存在所述转发核的利用率超过预设阈值时,将所述利用率符合第一预设条件的转发核确定为第一转发核,将所述利用率符合第二预设条件的转发核确定为第二转发核;所述第二确定单元,用于获取所述第一转发核的各个网卡队列的负载值,将所述负载值符合第三预设条件的网卡队列确定为所述第一转发核对应的目标网卡队列。在一种可能的实现方式中,所述第一确定单元,具体用于接收网卡队列高负载信息,将发送所述网卡队列高负载信息的转发核确定为第一转发核,根据所述网卡队列高负载信息携带的网卡队列标识确定所述第一转发核对应的目标网卡队列;所述第二确定单元,用于获取各个所述转发核的利用率,将所述利用率符合第二预设条件的转发核确定为第二转发核。需要说明的是,本实施例中各个单元的实现可以参见上述方法实施例,本实施例在此不再赘述。另外,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有指令,当所述指令在终端设备上运行时,使得所述终端设备执行上述的报文转发方法。本申请实施例还提供了一种实现报文转发的处理设备,包括:存储器,处理器,及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时,实现上述的报文转发方法。基于上述描述可知,配置核从多个转发核中确定出高负载的第一转发核和低负载的第二转发核,并从第一转发核中确定高负载的目标网卡队列。然后,配置核根据确定出的目标网卡队列重新构建网卡队列与转发核的映射表,使得更新后的网卡队列与转发核的映射表中的目标网卡队列仅与第二转发核具有对应关系。同时,配置核重新构建会话表与转发核的映射表,使得更新后的会话表与转发核的映射表中的目标网卡队列对应的会话表仅与第二转发核具有对应关系。从而由第二转发核从目标网卡队列接收报文,并基于更新后的会话表与转发核的映射表,找到报文所属会话表进行报文转发。也就是,本申请实施例通过迁移网卡队列和该网卡队列对应的会话表实现转发核之间的负载均衡,无需对单个报文和会话表项进行倒核,提升迁移效率,从而提升系统的整体转发性能。需要说明的是,本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统或装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当理解,在本申请中,“至少一个(项)”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,用于描述关联对象的关联关系,表示可以存在三种关系,例如,“a和/或b”可以表示:只存在a,只存在b以及同时存在a和b三种情况,其中a,b可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指这些项中的任意组合,包括单项(个)或复数项(个)的任意组合。例如,a,b或c中的至少一项(个),可以表示:a,b,c,“a和b”,“a和c”,“b和c”,或“a和b和c”,其中a,b,c可以是单个,也可以是多个。还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(ram)、内存、只读存储器(rom)、电可编程rom、电可擦除可编程rom、寄存器、硬盘、可移动磁盘、cd-rom、或
技术领域
内所公知的任意其它形式的存储介质中。对所公开的实施例的上述说明,使本领域专业技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的专业技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。当前第1页12
当前第1页1 2 
网友询问留言 留言:0条
  • 还没有人留言评论。精彩留言会获得点赞!