CN114257545B - 一种报文转发方法及装置 - Google Patents
一种报文转发方法及装置 Download PDFInfo
- Publication number
- CN114257545B CN114257545B CN202111496154.0A CN202111496154A CN114257545B CN 114257545 B CN114257545 B CN 114257545B CN 202111496154 A CN202111496154 A CN 202111496154A CN 114257545 B CN114257545 B CN 114257545B
- Authority
- CN
- China
- Prior art keywords
- message
- address
- gateway
- port number
- 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.)
- Active
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L45/00—Routing or path finding of packets in data switching networks
- H04L45/74—Address processing for routing
- H04L45/745—Address table lookup; Address filtering
Abstract
本发明实施例提供了一种报文转发方法及装置,涉及网络技术领域,上述方法包括:在接收到用户设备发送的报文后,采用预设计算方式,基于报文的报文信息计算报文的第一分配标识;将报文分配至第一分配标识对应的网关包含的目标CPU处;在目标CPU对应的转发表项中,查找与报文相匹配的目标转发表项;若不存在则从目标CPU对应的空闲地址表中获取一个表项,并为目标CPU配置包含报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项,基于目标转发表项向服务器转发报文,使得服务器对报文进行处理并发送反馈报文;在接收到反馈报文之后,向用户设备转发报文。应用本发明实施例提供的方案可以提高报文转发的效率。
Description
技术领域
本发明涉及网络技术领域,特别是涉及一种报文转发方法及装置。
背景技术
用户设备可以与服务器进行数据交互,从而从服务器获取数据,或通过服务器进行数据处理。现有技术中,可以通过在用户设备与服务器之间配置网关,由网关协助用户设备与服务器之间的数据交互。
具体的,用户设备可以向网关发送第一报文,基于与第一报文相匹配的目标转发表项修改第一报文的信息,例如将第一报文的目的地址修改为服务器的地址,将第一报文转发给服务器。在完成数据处理之后,服务器向网关发送反馈给用户设备的第二报文,第一报文与第二报文为一组双向传输的报文,网关同样基于上述目标转发表项修改第二报文的报文信息,例如将第二报文的目的地址修改为用户设备的地址,将第二报文转发给用户设备,从而完成用户设备与服务器之间的数据交互过程。对于双向传输的报文,网关基于同一转发表项完成报文转发的过程。
但是,若网关中配置有多CPU,网关可以基于不同的CPU转发不同的报文,从而可以提高网关的处理效率,不同CPU能够使用的转发表项不同。具体的,网关可以基于报文信息将报文分配至相匹配的CPU处进行转发,但由于网关在转发报文时会对报文信息进行修改,使得用户设备向网关发送的报文与服务器反馈的报文中包含的信息不同,因此双向传输的两个报文可能会被分配至不同的CPU处。又由于不同CPU能够使用的转发表项不同,双向传输的报文又需要基于同一转发表项进行转发,为了完成报文转发过程,不同CPU之间可能需要进行数据交互,从而浪费CPU的处理资源,造成报文转发的效率较低的问题。
发明内容
本发明实施例的目的在于提供一种报文转发方法及装置,以实现提高报文转发的效率。具体技术方案如下:
在本发明实施例的第一方面,首先提供了一种报文转发方法,应用于网关,所述方法包括:
在接收到用户设备发送的报文后,采用预设计算方式,基于所述报文的报文信息计算所述报文的第一分配标识,其中,所述报文信息中包含:所述报文的源地址、源端口号、目的地址、目的端口号,所述源地址为所述用户设备的地址,所述源端口号为所述用户设备的端口号,所述目的地址为所述网关的虚拟地址,所述目的端口号为所述网关的虚拟端口号;
将所述报文分配至所述第一分配标识对应的、所述网关包含的目标CPU处;
在所述目标CPU对应的转发表项中,查找与所述报文相匹配的目标转发表项;
若不存在与所述报文相匹配的目标转发表项,则从所述目标CPU对应的空闲地址表中获取一个表项,并为所述目标CPU配置包含所述报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项,其中,采用所述预设计算方式对所述空闲地址表中包含的各个表项中记录的服务器信息与网关信息进行计算,均能够计算得到所述目标CPU对应的分配标识,所述服务器信息中包含:服务器的真实地址、真实端口号,所述网关信息中包含:所述网关的本地地址、本地端口号;
基于所述目标转发表项向所述服务器转发报文,使得所述服务器对所述报文进行处理并发送反馈报文,其中,所述反馈报文的目的地址、目的端口号、源地址、源端口号分别为:所述报文的源地址、源端口号、目的地址、目的端口号;
在接收到所述反馈报文之后,采用所述预设计算方式基于所述反馈报文的报文信息计算所述反馈报文的第二分配标识,将所述反馈报文分配至所述第二分配标识对应的CPU处,基于所分配至的CPU对应的、与所述反馈报文相匹配的转发表项向所述用户设备转发报文。
本发明的一个实施例中,针对所述网关中包含的每一CPU,通过以下方式生成与该CPU对应的空闲地址表中的表项:
采用所述预设计算方式对该CPU能够使用的服务器信息与网关信息进行计算,得到计算结果;
选择目标信息组,生成包含所述目标信息组的表项,其中,所述目标信息组内包含的服务器信息与网关信息的计算结果为该CPU对应的分配标识。
本发明的一个实施例中,所述从所述目标CPU对应的空闲地址表中获取一个表项,包括:
从所述目标CPU能够使用的服务器信息中选择一组目标服务器信息;
从所述目标CPU对应的空闲地址表中获取一个包含所述目标服务器信息的表项。
本发明的一个实施例中,所述方法还包括:
针对每一CPU,在删除该CPU能够使用的服务器信息和/或网关信息后,删除该CPU对应的空闲地址表中记录有所删除的服务器信息或网关信息的表项。
本发明的一个实施例中,所述方法还包括:
若所述网关与服务器之间的会话超时,删除各个CPU对应的、记录有所述服务器的服务器信息的转发表项;
和/或
若所述用户设备与网关之间的会话超时,删除各个CPU对应的、记录有所述用户设备的地址的转发表项。
本发明的一个实施例中,针对每一CPU对应的空闲地址表,该空闲地址表中包含的表项的数量高于第一阈值和/或低于第二阈值。
在本发明实施例的第二方面,还提供了一种报文转发装置,应用于网关,所述装置包括:
标识计算模块,用于在接收到用户设备发送的报文后,采用预设计算方式,基于所述报文的报文信息计算所述报文的第一分配标识,其中,所述报文信息中包含:所述报文的源地址、源端口号、目的地址、目的端口号,所述源地址为所述用户设备的地址,所述源端口号为所述用户设备的端口号,所述目的地址为所述网关的虚拟地址,所述目的端口号为所述网关的虚拟端口号;
报文分配模块,用于将所述报文分配至所述第一分配标识对应的、所述网关包含的目标CPU处;
表项查找模块,用于在所述目标CPU对应的转发表项中,查找与所述报文相匹配的转发表项;
表项配置模块,用于若不存在与所述报文相匹配的目标转发表项,则从所述目标CPU对应的空闲地址表中获取一个表项,并为所述目标CPU配置包含所述报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项,其中,采用所述预设计算方式对所述空闲地址表中包含的各个表项中记录的服务器信息与网关信息进行计算,均能够计算得到所述目标CPU对应的分配标识,所述服务器信息中包含:服务器的真实地址、真实端口号,所述网关信息中包含:所述网关的本地地址、本地端口号;
第一报文转发模块,用于基于所述目标转发表项向所述服务器转发报文,使得所述服务器对所述报文进行处理并发送反馈报文,其中,所述反馈报文的目的地址、目的端口号、源地址、源端口号分别为:所述报文的源地址、源端口号、目的地址、目的端口号;
第二报文转发模块,用于在接收到所述反馈报文之后,采用所述预设计算方式基于所述反馈报文的报文信息计算所述反馈报文的第二分配标识,将所述反馈报文分配至所述第二分配标识对应的CPU处,基于所分配至的CPU对应的、与所述反馈报文相匹配的转发表项向所述用户设备转发报文。
本发明的一个实施例中,所述装置还包括:表项生成模块,用于针对所述网关中包含的每一CPU,通过以下方式生成与该CPU对应的空闲地址表中的表项:
采用所述预设计算方式对该CPU能够使用的服务器信息与网关信息进行计算,得到计算结果;
选择目标信息组,生成包含所述目标信息组的表项,其中,所述目标信息组内包含的服务器信息与网关信息的计算结果为该CPU对应的分配标识。
本发明的一个实施例中,所述表项配置模块,具体用于:
若不存在与所述报文相匹配的转发表项,则从所述目标CPU能够使用的服务器信息中选择一组目标服务器信息;
从所述目标CPU对应的空闲地址表中获取一个包含所述目标服务器信息的表项;
为所述目标CPU配置包含所述报文信息以及所获取的表项中记录的服务器信息与网关信息的转发表项。
本发明的一个实施例中,所述装置还包括:
表项删除模块,用于针对每一CPU,在删除该CPU能够使用的服务器信息和/或网关信息后,删除该CPU对应的空闲地址表中记录有所删除的服务器信息或网关信息的表项。
本发明的一个实施例中,所述装置还包括:
转发表项删除模块,用于若所述网关与服务器之间的会话超时,删除各个CPU对应的、记录有所述服务器的服务器信息的转发表项;
和/或
若所述用户设备与网关之间的会话超时,删除各个CPU对应的、记录有所述用户设备的地址的转发表项。
本发明的一个实施例中,针对每一CPU对应的空闲地址表,该空闲地址表中包含的表项的数量高于第一阈值和/或低于第二阈值。
第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现第一方面任一所述的方法步骤。
第四方面,在本发明实施例的又一方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述第一方面任一所述的方法步骤。
第五方面,在本发明实施例的又一方面,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述第一方面任一所述的方法步骤。
本发明实施例提供的报文转发方法,网关在接收到用户设备发送的报文后,采用预设计算方式,基于上述报文的报文信息计算上述报文的分配标识;将上述报文分配至上述第一分配标识对应的、上述网关包含的目标CPU处;在上述目标CPU对应的转发表项中,查找与上述报文相匹配的目标转发表项;若不存在与上述报文相匹配的目标转发表项,则从上述CPU对应的空闲地址表中获取一个表项,并为上述目标CPU配置包含上述报文信息以及所获取的表项中记录的服务器信息与网关信息的转发表项,其中,采用上述预设计算方式对上述空闲地址表中包含的各个表项中记录的服务器信息与网关信息进行计算,均能够计算得到上述目标CPU对应的第一分配标识;为上述目标CPU配置记录有:上述报文信息、所获取的表项中记录的服务器信息与网关信息的转发表项,再基于与报文相匹配的转发表项转发报文,使得服务器对上述报文进行处理并发送反馈报文,其中,上述反馈报文的目的地址、目的端口号、源地址、源端口号分别为上述报文的源地址、源端口号、目的地址、目的端口号。在接收到反馈报文之后,采用预设计算方式基于反馈报文的报文信息计算反馈报文的第二分配标识,将反馈报文分配至第二分配标识对应的CPU处,基于目所分配至的CPU对应的、与反馈报文相匹配的转发表项标转发表项向用户设备转发报文。
由以上可见,在网关中不包含与报文相匹配的转发表项时,通过本发明实施例可以配置记录有报文信息、网关信息与服务器信息的转发表项。则目标CPU在获取到上述报文后,可以基于上述转发表项中记录的网关信息将报文的源地址修改为网关的本地地址,将源端口号修改为网关的本地端口号,并基于转发表项中记录的服务器信息将报文的目的地址修改为服务器的真实地址,将报文的目的端口号修改为真实端口号。则可以基于修改后的目的地址与目的端口号将报文转发至服务器,服务器在完成数据处理之后,会生成向用户设备发送的反馈报文,与服务器接收到的报文相反,反馈报文的目的地址、目的端口号、源地址、源端口号分别为上述报文的源地址、源端口号、目的地址、目的端口号,也就是反馈报文的目的地址为网关的本地地址,目的端口号为本地端口号,源地址为服务器的真实地址,源端口号为真实端口号,因此服务器可以将反馈报文发送至网关。网关采用预设计算方式基于反馈报文的报文信息计算第二分配标识,并将反馈报文分配至第二分配标识对应的CPU处。由于反馈报文的报文信息是为目标CPU配置的空闲地址表内记录的真实地址、真实端口号、本地地址与本地端口号,因此基于反馈报文的报文信息计算得到的第二分配标识同样与目标CPU相对应,基于第二分配标识可以将反馈报文分配至目标CPU,目标CPU可以继续基于自身对应的转发表项转发反馈报文。因此无论用户设备发送的报文,还是服务器发送的反馈报文,均是由同一个目标CPU负责转发的,在转发报文的过程中CPU之间不需要进行数据交互,从而可以提高报文转发的效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1A为本发明实施例中提供的第一种报文转发方法的流程示意图;
图1B为本发明实施例提供的一种单臂网关的示意图;
图1C为本发明实施例提供的一种双臂网关的示意图;
图2为本发明实施例中提供的第二种报文转发方法的流程示意图;
图3为本发明实施例中提供的第三种报文转发方法的流程示意图;
图4为本发明实施例中提供的第四种报文转发方法的流程示意图;
图5为本发明实施例中提供的第五种报文转发方法的流程示意图;
图6为本发明实施例中提供的一种报文转发装置的结构示意图;
图7为本发明实施例中提供的一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本申请所获得的所有其他实施例,都属于本发明保护的范围。
现有技术中存在网关在转发报文的过程中,不同CPU之间需要进行数据交互,从而浪费CPU的处理资源,造成报文转发的效率较低的问题。为解决这一问题,本发明实施例提供了一种报文转发方法及装置。
本发明实施例提供了一种报文转发方法,应用于网关,上述方法包括:
在接收到用户设备发送的报文后,采用预设计算方式,基于上述报文的报文信息计算上述报文的第一分配标识,其中,上述报文信息中包含:上述报文的源地址、源端口号、目的地址、目的端口号,上述源地址为上述用户设备的地址,上述源端口号为上述用户设备的端口号,上述目的地址为上述网关的虚拟地址,上述目的端口号为上述网关的虚拟端口号;
将上述报文分配至上述第一分配标识对应的、上述网关包含的目标CPU处;
在上述目标CPU对应的转发表项中,查找与上述报文相匹配的目标转发表项;
若不存在与上述报文相匹配的目标转发表项,则从上述目标CPU对应的空闲地址表中获取一个表项,并为上述目标CPU配置包含上述报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项,其中,采用上述预设计算方式对上述空闲地址表中包含的各个表项中记录的服务器信息与网关信息进行计算,均能够计算得到上述目标CPU对应的第一分配标识,上述服务器信息中包含:服务器的真实地址、真实端口号,上述网关信息中包含:上述网关的本地地址、本地端口号;
基于上述目标转发表项向上述服务器转发报文,使得上述服务器对上述报文进行处理并发送反馈报文,其中,上述反馈报文的目的地址、目的端口号、源地址、源端口号分别为:上述报文的源地址、源端口号、目的地址、目的端口号;
在接收到上述反馈报文之后,采用上述预设计算方式基于上述反馈报文的报文信息计算上述反馈报文的第二分配标识,将上述反馈报文分配至上述第二分配标识对应的CPU处,基于所分配至的CPU对应的、与上述反馈报文相匹配的转发表项向上述用户设备转发报文。
由以上可见,在网关中不包含与报文相匹配的转发表项时,通过本发明实施例可以配置记录有报文信息、网关信息与服务器信息的转发表项。则目标CPU在获取到上述报文后,可以基于上述转发表项中记录的网关信息将报文的源地址修改为网关的本地地址,将源端口号修改为网关的本地端口号,并基于转发表项中记录的服务器信息将报文的目的地址修改为服务器的真实地址,将报文的目的端口号修改为真实端口号。则可以基于修改后的目的地址与目的端口号将报文转发至服务器,服务器在完成数据处理之后,会生成向用户设备发送的反馈报文,与服务器接收到的报文相反,反馈报文的目的地址、目的端口号、源地址、源端口号分别为上述报文的源地址、源端口号、目的地址、目的端口号,也就是反馈报文的目的地址为网关的本地地址,目的端口号为本地端口号,源地址为服务器的真实地址,源端口号为真实端口号,因此服务器可以将反馈报文发送至网关。网关采用预设计算方式基于反馈报文的报文信息计算第二分配标识,并将反馈报文分配至第二分配标识对应的CPU处。由于反馈报文的报文信息是为目标CPU配置的空闲地址表内记录的真实地址、真实端口号、本地地址与本地端口号,因此基于反馈报文的报文信息计算得到的第二分配标识同样与目标CPU相对应,基于第二分配标识可以将反馈报文分配至目标CPU,目标CPU可以继续基于自身对应的转发表项转发反馈报文。因此无论用户设备发送的报文,还是服务器发送的反馈报文,均是由同一个目标CPU负责转发的,在转发报文的过程中CPU之间不需要进行数据交互,从而可以提高报文转发的效率。
参见图1A,为本发明实施例提供的第一种报文转发方法的流程示意图,应用于网关,上述网关可以为FullNAT(Full Network Address Translation,完整网络地址转换)网关。
具体的,用户设备向上述网关发送报文时,报文的源地址与源端口号为用户设备的地址与端口号,报文的目的地址与目的端口号为网关提供给用户设备的虚拟地址与虚拟端口号。网关在接收到用户设备发送的报文之后可以基于转发表项将报文的源地址与源端口号修改为网关的本地地址与本地端口号,将报文的目的地址与目的端口号修改为服务器的真实地址与真实端口号,再向服务器转发报文。其中,网关具有多组可使用的本地地址与本地端口号。
服务器在对接收到的报文进行处理后,需要将反馈报文发送给网关,与服务器接收到的报文相反,反馈报文的源地址与源端口号为服务器的真实地址与真实端口号,反馈报文的目的地址与目的端口号为所接收到的报文中记录的网关的本地地址与本地端口号。网关接收到反馈报文之后,依据转发表项将反馈报文的源地址与源端口号修改为自身的虚拟地址和虚拟端口号,将目的地址与目的端口号修改为用户设备的地址与端口号,再向用户设备转发报文。
在此过程中服务器与用户设备不需获得对方的端口号与地址,同样可以完成报文转发的过程。
另外,对于网关而言,用户设备向服务器发送的报文可以被称为入队inbound报文,服务器向用户设备发送的报文可以被称为出队outbound报文。
参见图1B,为本发明实施例提供的一种单臂网关的示意图。
与单臂网关相连的用户设备与服务器处于同一网络中,图中的实线箭头表示用户设备向服务器发送的inbound报文的转发路径,图中的虚线箭头表示服务器向用户设备发送的outbound报文的转发路径。单臂网关中包含网卡1,用户设备的地址为cip,用户设备可以基于虚拟地址vip向网关发送inbound报文,网关可以基于转发表中记录的转发表项,将报文的地址更新为本地地址lip,将报文的目的地址更新服务器的真实地址rip,并向服务器发送inbound报文。
转发表项1中记录有cip1、vip1、lip1与rip1,转发表项2中记录有cip2、vip2、lip2与rip2,以此类推,转发表项n中记录有cipn、vipn、lipn与ripn。
服务器可以基于lip向网关反馈outbound报文,网关基于转发表中的转发表项将outbound报文的目的地址更新为用户设备的cip,将源地址更新为网关的vip,并向用户设备转发outbound报文。从而实现用户设备与服务器之间双向的报文转发过程。
本实施例中涉及的具体的报文转发流程可以参见下文,在此暂不详述。
参见图1C,为本发明实施例提供的一种双臂网关的示意图。
与双臂网关相连的用户设备与服务器处于不同网络中,图中的实线箭头表示用户设备向服务器发送的inbound报文的转发路径,图中的虚线箭头表示服务器向用户设备发送的outbound报文的转发路径。双臂网关中包含多个网卡,图中所示的网卡为网卡1与网卡2,网卡1与用户设备进行报文交互,网卡2用于与服务器进行数据交互。用户设备的地址为cip,用户设备可以基于虚拟地址vip向网关发送inbound报文,网关可以基于转发表中记录的转发表项,将报文的地址更新为本地地址lip,将报文的目的地址更新服务器的真实地址rip,并向服务器发送inbound报文。
转发表项1中记录有cip1、vip1、lip1与rip1,转发表项2中记录有cip2、vip2、lip2与rip2,以此类推,转发表项n中记录有cipn、vipn、lipn与ripn。
服务器可以基于lip向网关反馈outbound报文,网关基于转发表中的转发表项将outbound报文的目的地址更新为用户设备的cip,将源地址更新为网关的vip,并向用户设备转发outbound报文。从而实现用户设备与服务器之间双向的报文转发过程。
本实施例中涉及的具体的报文转发流程可以参见下文,在此暂不详述。
则上述网关可以被称为单臂网关,若上述用户设备与服务器处于不同网络中,则上述网关可以被称为双臂网关。
图1A所示实施例包括以下步骤S101-S106。
S101:在接收到用户设备发送的报文后,采用预设计算方式,基于上述报文的报文信息计算上述报文的第一分配标识。
其中,上述报文信息中包含:上述报文的源地址、源端口号、目的地址、目的端口号。上述源地址为上述用户设备的地址,上述源端口号为上述用户设备的端口号,上述目的地址为上述网关的虚拟地址,上述目的端口号为上述网关的虚拟端口号。
另外,上述报文信息中还可以包含协议号。
具体的,上述网关可以通过自身硬件层的逻辑电路计算上述分配标识。
本发明的一个实施例中,可以基于RSS算法计算上述分配标识。
具体的,可以计算上述源地址、源端口号、目的地址、目的端口号与协议号整体的哈希值,将哈希值的低位的预设数量位确定为上述第一分配标识。
S102:将上述报文分配至上述第一分配标识对应的、上述网关包含的目标CPU处。
具体的,网关中可以存储有RETA表,RETA表中的每一表项中记录有分配标识与所对应的CPU的标识,在计算得到第一分配标识之后,可以查找RETA表确定与第一分配标识相对应的CPU的标识,可以将上述报文分配至所查找到的标识指示的目标CPU对应的内存中的队列中,目标CPU可以从自身对应的队列中提取报文进行处理。
另外,在软件层可以存在与不同CPU一一绑定的工作模块worker,报文被分配至目标CPU之后,目标CPU对应的worker可以对上述报文进行处理。
S103:在上述目标CPU对应的转发表项中,查找与上述报文相匹配的目标转发表项。
具体的,不同CPU对应不同的转发表项,可以从目标CPU对应的转发表项中查找记录有上述报文的源地址、源端口号、目的地址、目的端口号中至少一项的转发表项,作为与上述报文相匹配的目标转发表项。
每一转发表项中记录有用户设备的地址和端口号、网关的虚拟地址和虚拟端口号、网关的本地地址和本地端口号、服务器的真实地址和真实端口号。
若能够查找到目标转发表项,则可以直接执行步骤S105。否则继续执行步骤S104-S105。
S104:若不存在与上述报文相匹配的目标转发表项,则从上述目标CPU对应的空闲地址表中获取一个表项,并为上述目标CPU配置包含上述报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项。
其中,采用上述预设计算方式对上述空闲地址表中包含的各个表项中记录的服务器信息与网关信息进行计算,均能够计算得到上述目标CPU对应的分配标识。另外,上述服务器信息中包含:服务器的真实地址、真实端口号,上述网关信息中包含:所述网关的本地地址、本地端口号。
具体的,每一CPU对应一个空闲地址表,该CPU对应的worker可以调用该CPU对应的空闲地址表。空闲地址表中包含的每一表项内记录有一组服务器信息与一组网关信息。
本发明的一个实施例中,针对每一CPU可以通过以下步骤A-步骤B生成与该CPU对应的空闲地址表中的表项。其中,网关可以通过软件层的控制模块master生成各个CPU对应的空闲地址表中的表项,master为网关中设置的、用于对各个worker配置的空闲地址表以及转发表项进行管理的软件模块,也就是网关中包含多个worker与一个master,master可以按照步骤A-步骤B分别基于预设计算方式对不同网关信息与服务信息进行计算,得到不同的分配标识,再针对每一CPU,将计算得到的分配标识与该CPU相匹配的网关信息与服务器信息作为表项添加至该CPU对应的空闲地址表中。
步骤A:采用上述预设计算方式对该CPU能够使用的服务器信息与网关信息进行计算,得到计算结果。
具体的,在生成空闲地址表中的表项的过程中使用的预设计算方式与网关接收到报文后为报文分配CPU时使用的计算方式相同。
其中,每一CPU能够使用的服务器信息与网关信息是预设的已知信息,CPU可以先从能够使用的服务器信息中选择服务器信息,再将所选择的服务器信息与各个网关信息分别进行计算,得到计算结果。
本发明的一个实施例中,若上述预设计算方式为RSS算法,则可以采用RSS算法对上述网关信息、服务器信息与已知的协议号进行计算,得到计算结果。
步骤B:选择目标信息组,生成包含上述目标信息组的表项。
其中,上述目标信息组内包含的服务器信息与网关信息的计算结果为该CPU对应的分配标识。
具体的,对不同的服务器信息与网关信息进行计算得到的计算结果不同,可以选择计算结果为该CPU对应的分配标识的服务器信息与网关信息,作为目标信息组,将目标信息组作为表项写入该CPU对应的空闲地址表中,从而可以保证对空闲地址表中记录的各个表项内的服务器信息和网关信息进行计算,得到的计算结果为所对应的CPU对应的分配标识。
另外,在从空闲地址表中获取表项之后,可以删除所获取的表项,则在下一次为目标CPU配置转发表项时,不会再次获取到上述表项,则基于所获取的表项生成转发表项,可以使得每次生成的转发表项中记录的服务器信息和网关信息不同。
此外,上述所配置的转发表项中记录的报文信息为:发送报文的用户设备的地址和端口号、上述网关的虚拟地址和虚拟端口号。上述服务器信息为所选择的空闲地址表中的表项内记录的服务器的真实地址、真实端口号,上述网关信息为所选择的空闲地址表中的表项内记录的网关的本地地址、本地端口号。
S105:基于上述目标转发表项向上述服务器转发报文,使得上述服务器对上述报文进行处理并发送反馈报文。
其中,上述反馈报文的目的地址、目的端口号、源地址、源端口号分别为:上述报文的源地址、源端口号、目的地址、目的端口号。
若原本便存在与上述报文相匹配的转发表项,则可以基于所查找到的转发表项转发报文,若原本不存在与上述报文相匹配的转发表项,则在通过步骤S104配置上述转发表项之后,网关便可以基于所配置的转发表项转发报文,具体的,网关可以将报文的源地址和源端口号修改为转发表项中携带的本地地址和本地端口号,将报文的目的地址和目的端口号修改为服务器的真实地址和真实端口号,再进行报文转发。
而服务器在接收到报文之后,会对报文进行处理生成反馈报文,与网关发送给服务器的报文相反,反馈报文的源地址与源端口号为上述报文的目的地址与目的端口号,也就是服务器的真实地址与真实端口号,反馈报文的目的地址与目的端口号为上述报文的源地址与源端口号,也就是网关的本地地址和本地端口号,因此服务器能够基于网关的本地地址与本地端口号将反馈报文发送至网关。
S106:在接收到上述反馈报文之后,采用上述预设计算方式基于上述反馈报文的报文信息计算上述反馈报文的第二分配标识,将上述反馈报文分配至上述第二分配标识对应的CPU处,基于所分配至的CPU对应的、与上述反馈报文相匹配的转发表项向上述用户设备转发报文。
具体的,网关在接收到上述反馈报文之后,可以基于预设计算方式对反馈报文的源地址、源端口号、目的地址与目的端口号进行计算,得到第二分配标识,上述源地址、源端口号、目的地址与目的端口号为前述步骤S104中选择的空闲地址表内表项记录的信息,因此计算得到的第二分配标识与目标CPU相对应。反馈报文被分配至目标CPU。并且由于反馈报文的源地址、源端口号、目的地址与目的端口号分别为目标转发表项中记录的真实地址、真实端口号、本地地址、本地端口号,反馈报文与目标转发表项向匹配,目标CPU可以将反馈报文的源地址与源端口号分别更新为目标转发表项记录的网关的虚拟地址与虚拟端口号,并将反馈报文的目的地址与目的端口号分别更新为目标转发表项记录的用户设备的地址与端口号。再进行报文转发便可以将报文转发至用户设备。
本发明的一个实施例中,以上述网关为FullNAT网关为例,FullNAT网关可以将报文中携带的用户设备的地址与端口号以及网关的虚拟地址和虚拟端口号共四类信息称为第一四元组,采用RSS算法对第一四元组中包含的信息进行计算可以得到第一哈希值,作为第一分配标识。
另外,空闲地址表中的每一表项内包含服务器的真实地址、真实端口号、网关的本地地址、本地端口号,可以将上述四类信息称为第二四元组。采用RSS算法对第二四元组中包含的信息进行计算得到的第二哈希值与基于第一四元组计算得到的第一哈希值相同。
生成包含第一四元组与第二四元组的目标转发表项之后,目标CPU可以基于目标转发表项转发报文,将报文的源地址与源端口号更新为第二四元组中包含的本地地址与本地端口号,将报文的目的地址与目的端口号更新为第二四元组中包含的服务器的真实地址与真实端口号。服务器基于上述报文生成的反馈报文的源地址与源端口号分别为服务器的真实地址与真实端口号,反馈报文的目的地址与目的端口号分别为网关的本地地址与本地端口号,由此可见,反馈报文的目的地址、目的端口号、源地址与源端口号依旧为第二四元组中包含的四类信息。网关在接收到反馈报文后,基于RSS算法对反馈报文的目的地址、目的端口号、源地址与源端口号进行计算,也就相当于对第二四元组中包含的信息进行计算,得到的第二哈希值与第一哈希值相同。
在转发用户设备发送的报文时,基于第一四元组计算得到的第一哈希值与目标CPU相对应,在转发服务器发送的反馈报文时,基于第二四元组计算得到的第二哈希值同样与目标CPU相对应,因此用户设备发送的报文与服务器发送的反馈报文均可以被分配至目标CPU,基于相同的目标转发表项进行报文转发。
由以上可见,在网关中不包含与报文相匹配的转发表项时,通过本发明实施例可以配置记录有报文信息、网关信息与服务器信息的转发表项。则目标CPU在获取到上述报文后,可以基于上述转发表项中记录的网关信息将报文的源地址修改为网关的本地地址,将源端口号修改为网关的本地端口号,并基于转发表项中记录的服务器信息将报文的目的地址修改为服务器的真实地址,将报文的目的端口号修改为真实端口号。则可以基于修改后的目的地址与目的端口号将报文转发至服务器,服务器在完成数据处理之后,会生成向用户设备发送的反馈报文,与服务器接收到的报文相反,反馈报文的目的地址、目的端口号、源地址、源端口号分别为上述报文的源地址、源端口号、目的地址、目的端口号,也就是反馈报文的目的地址为网关的本地地址,目的端口号为本地端口号,源地址为服务器的真实地址,源端口号为真实端口号,因此服务器可以将反馈报文发送至网关。网关采用预设计算方式基于反馈报文的报文信息计算第二分配标识,并将反馈报文分配至第二分配标识对应的CPU处。由于反馈报文的报文信息是为目标CPU配置的空闲地址表内记录的真实地址、真实端口号、本地地址与本地端口号,因此基于反馈报文的报文信息计算得到的第二分配标识同样与目标CPU相对应,基于第二分配标识可以将反馈报文分配至目标CPU,目标CPU可以继续基于自身对应的转发表项转发反馈报文。因此无论用户设备发送的报文,还是服务器发送的反馈报文,均是由同一个目标CPU负责转发的,在转发报文的过程中CPU之间不需要进行数据交互,从而可以提高报文转发的效率。
本发明的另一个实施例中,针对每一CPU对应的空闲地址表,该空闲地址表中包含的表项的数量高于第一阈值,以保证空闲地址表中包含的表项的数量不会过少,在需要配置转发表项时,CPU可以直接从空闲地址表中提取表项生成转发表项。若空闲地址表中包含的表项的数量低于上述第一阈值,则master可以执行步骤A-步骤B,为该空闲地址表生成新的表项。
另外,针对每一CPU对应的空闲地址表,该空闲地址表中包含的表项的数量低于第二阈值,以防止空闲地址表中包含的表项的数量过多,占用网关内存过多的存储资源。并且,每一空闲地址表中包含的表项的数量高于第一阈值,因此在网关的报文转发量较大时,若CPU接收到需要转发的报文,但该CPU未配置有与该报文相匹配的转发表项,CPU可以直接从空闲地址表中获取表项生成转发表项,而不需要等待空闲地址表中表项的生成。在报文转发量较大时,空闲地址表中记录有较多的表项使得CPU生成转发表项的效率较高,进而使得报文转发的效率较高。
此外,上述第一阈值和/或第二阈值可以为预设值,具体的,可以基于网关的并发业务量调整上述第一阈值和第二阈值,并发业务量越高说明接入该网关的用户设备越多,第一阈值和第二阈值可以被设置为越大的值,使得各个CPU对应的空闲地址表中记录较大量的表项,以保证网关在接收到大量的用户设备发送的报文后,CPU能够快速得从自身对应的空闲地址表中获取表项,并基于表项配置转发表项。
参见图2,为本发明实施例提供的第二种报文转发方法的流程示意图,与前述图1A所示的实施例相比,上述步骤S104可以通过以下步骤S104A-S104B实现。
S104A:若不存在与上述报文相匹配的转发表项,则从上述目标CPU能够使用的服务器信息中选择一组目标服务器信息。
具体的,可以随机从目标CPU能够使用的服务器信息中选择一组目标服务器信息。也可以基于现有技术中的FullNAT调度算法选择一组目标服务器信息,在此不再赘述。
其中,上述目标服务器信息中包含服务器的真实地址与真实端口号。
选择目标服务器信息相当于选择了所生成的目标转发表项中包含的真实地址与真实端口号,在后续转发报文的过程中,报文会被转发至该真实地址与真实端口号对应的服务器中,所以在生成目标转发表项时选择目标服务器信息相当于为报文分配了用于接收并处理该报文的服务器,在网关与多个服务器相连的情况下,为报文选择服务器能够实现各个服务器处理报文时的负载均衡。
S104B:从上述目标CPU对应的空闲地址表中获取一个包含上述目标服务器信息的表项,并为上述目标CPU配置包含上述报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项。
具体的,可以以目标服务器信息为索引值,从空闲地址表中查找包含上述目标服务器的表项,查找到的表项可能有多个,则可以选择并获取查找到的表项内在空闲地址表中位于最前端的表项,当然可以随机选择并获取所查找到的表项中的一个。
由以上可见,在从空闲地址表中获取表项并配置转发表项时,可以先选择目标服务器信息,也就是先选择待生成的转发表项中包含服务器的真实地址和真实端口号,从而使得在配置转发表项后,网关基于所配置的转发表项可以向目标服务器信息对应的服务器转发报文。因此优先选择目标服务器信息相当于优先决定接收上述报文的服务器,从而可以实现对报文的调度。
参见图3,为本发明实施例提供的的第三种报文转发方法的流程示意图,与前述图1A所示的实施例相比,上述方法还包括以下步骤S107。
S107:针对每一CPU,在删除该CPU能够使用的服务器信息和/或网关信息后,删除该CPU对应的空闲地址表中记录有所删除的服务器信息或网关信息的表项。
本发明的一个实施例中,针对每一CPU,网关可以删除自身记录的该CPU能够使用的网关信息,表示该CPU不能继续基于被删除的网关信息中包含的本地地址和本地端口号转发报文。另外,若出现服务器故障、网关与服务器之间的传输通道断开等情况,网关难以继续向该服务器转发报文,则网关可以删除所记录的服务器信息。
在删除上述服务器信息和/或网关信息后,该CPU便不能继续基于所删除的信息转发报文。若该CPU对应的空闲地址表中依旧记录有包含所删除的信息的表项,则后续可能会基于已经被删除的信息生成的转发表项,造成报文转发出现故障,因此可以从空闲地址表中查找包含所删除的信息的表项,并删除上述表项。
具体的,若被删除的信息是服务器信息,则从空闲地址表中查找并删除包含上述服务器信息的表项。若被删除的信息是网关信息,则从空闲地址中查找并删除包含上述服务器信息的表项。若被删除的信息是网关信息和服务器信息,则从空闲地址表中查找并删除包含上述服务器信息或包含上述网关信息的表项。
在删除表项之后,若上述空闲地址表中包含的表项的数量少于第一阈值,则可以基于上述步骤A-步骤B向上述空闲地址表中添加表项。
另外,本发明实施例还支持新增CPU能够使用的服务器信息和/或网关信息,则在向空闲地址表中添加表项时,可以添加包含新增的服务器信息和/或网关信息的表项。
具体的,上述步骤S107可以通过网关中配置的master实现。
由以上可见,本发明实施例支持删除CPU能够使用的服务器信息和/或网关信息,在删除信息后删除空闲地址表中包含所删除信息的表项,使得在基于空闲地址表中包含的表项生成转发表项时,所生成的转发表项内不会包含已被删除的服务器信息和网关信息,从而可以避免基于所生成的转发表项转发报文时转发错误的问题。
参见图4,为本发明实施例提供的第四种报文转发方法的流程示意图,与前述图1A所示的实施例相比,上述方法还包括以下步骤S108。
S108:若上述网关与服务器之间的会话超时,删除各个CPU对应的、记录有上述服务器的服务器信息的转发表项,和/或若上述用户设备与网关之间的会话超时,删除各个CPU对应的、记录有上述用户设备的地址的转发表项。
具体的,网关与服务器之间会话超时可能是由服务器发生故障或网关与服务器之间的传输通道发生故障造成的。若上述网关与服务器之间的会话超时,则表示上述网关与该服务器之间的报文传输发生问题,网关若继续向服务器发送报文可能造成丢包等问题,因此网关可以暂停向上述服务器发送报文。所以可以删除记录上述服务器的服务器信息的转发表项,以防止CPU继续基于上述转发表项向上述服务器发送报文。
另外,用户设备与网关之间的会话超时可能是由用户设备发生故障或网关与用户设备之间的传输通道发生故障造成的。若上述用户设备与网关之间的会话超时,则表示上述网关与用户设备之间的报文传输发生问题,网关若继续为该用户转发报文,则可能发生丢包等问题,因此网关可以暂停为该用户设备转发报文。所以可以删除记录上述用户设备的地址的转发表项,以防止CPU继续基于上述转发表项为用户设备转发报文。
由以上可见,若服务器与网关之间的会话超时,则可以删除网关中记录的包含上述服务器的服务器信息的转发表项,上述转发表项被删除之后网关在基于转发表项转发报文时就不会将报文转发至会话超时的服务器,从而可以防止转发报文时报文丢包等问题。并且,若用户设备与网关之间的会话超时,则可以删除网关中记录的包含上述用户设备的地址的转发表项,同样可以防止转发报文时报文丢包等问题。
参见图5,为本发明实施例提供的第五种报文转发方法的流程示意图,上述方法包括以下步骤S501-S510。
S501:网关在接收到用户设备发送的报文后,基于哈希函数对报文的源地址、源端口号、目的地址、目的端口号、协议号进行计算,得到哈希值。
S502:基于RETA表中记录的哈希值与CPU的标识之间的对应关系,确定用于对该报文进行转发的目标CPU,将报文添加至该目标CPU对应的队列中。
由图所示,该网关包含n+1个队列,分别为队列0-队列n,队列0-队列n分别与CPU0-CPUn一一对应。上述报文被添加进队列1中,由CPU1作为目标CPU进行后续处理。
S503:CPU1查找与上述报文相匹配的目标转发表项。
S504:若匹配成功,则直接基于目标转发表项将报文转发至服务器。
S505:若匹配失败,则基于调度算法选择用于处理上述报文的服务器。
S506:从CPU1对应的空闲地址表1中查找记录有所选择的服务器的rip以及rport的表项。
S507:获取所查找到的表项中记录的网关的lip与lport,基于rip、rport、lip、lport生成目标转发表项。
在生成目标转发表项后,可以执行步骤S504,基于目标转发表项转发报文。
S508:将所生成的目标转发表项存储于CPU1对应的转发表1中。
S509:从网关的lip、lport列表以及服务器的rip、rport列表中获取lip、lport、rip、rport,并计算哈希值。
S510:基于RETA查找计算得到的哈希值对应的CPU,并将计算得到该哈希值的lip、lport、rip、rport添加至该CPU对应的空闲地址表中。
本实施例中网关内报文n+1个CPU,CPU0-CPUn分别对应空闲地址表0-空闲地址表n。并且,在用户设备与网关之间的会话超时的情况下,CPU1可以删除转发表1中记录有上述用户设备的cip、cport的转发表项,并将所删除的转发表项中记录的lip、lport、rip、rport重新写入空闲地址表1中。
与前述应用于网关的报文转发方法相对应,本发明实施例还提供了一种应用于报文转发装置。
参见图6,为本发明实施例提供的一种报文转发装置的结构示意图,应用于网关,上述装置包括:
标识计算模块601,用于在接收到用户设备发送的报文后,采用预设计算方式,基于所述报文的报文信息计算所述报文的第一分配标识,其中,所述报文信息中包含:所述报文的源地址、源端口号、目的地址、目的端口号,所述源地址为所述用户设备的地址,所述源端口号为所述用户设备的端口号,所述目的地址为所述网关的虚拟地址,所述目的端口号为所述网关的虚拟端口号;
报文分配模块602,用于将所述报文分配至所述第一分配标识对应的、所述网关包含的目标CPU处;
表项查找模块603,用于在所述目标CPU对应的转发表项中,查找与所述报文相匹配的目标转发表项;
表项配置模块604,用于若不存在与所述报文相匹配的目标转发表项,则从所述目标CPU对应的空闲地址表中获取一个表项,并为所述目标CPU配置包含所述报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项,其中,采用所述预设计算方式对所述空闲地址表中包含的各个表项中记录的服务器信息与网关信息进行计算,均能够计算得到所述目标CPU对应的分配标识,所述服务器信息中包含:服务器的真实地址、真实端口号,所述网关信息中包含:所述网关的本地地址、本地端口号;
第一报文转发模块605,用于基于所述目标转发表项向所述服务器转发报文,使得所述服务器对所述报文进行处理并发送反馈报文,其中,所述反馈报文的目的地址、目的端口号、源地址、源端口号分别为:所述报文的源地址、源端口号、目的地址、目的端口号;
第二报文转发模块606,用于在接收到所述反馈报文之后,采用所述预设计算方式基于所述反馈报文的报文信息计算所述反馈报文的第二分配标识,将所述反馈报文分配至所述第二分配标识对应的CPU处,基于所分配至的CPU对应的、与所述反馈报文相匹配的转发表项向所述用户设备转发报文。
由以上可见,在网关中不包含与报文相匹配的转发表项时,通过本发明实施例可以配置记录有报文信息、网关信息与服务器信息的转发表项。则目标CPU在获取到上述报文后,可以基于上述转发表项中记录的网关信息将报文的源地址修改为网关的本地地址,将源端口号修改为网关的本地端口号,并基于转发表项中记录的服务器信息将报文的目的地址修改为服务器的真实地址,将报文的目的端口号修改为真实端口号。则可以基于修改后的目的地址与目的端口号将报文转发至服务器,服务器在完成数据处理之后,会生成向用户设备发送的反馈报文,与服务器接收到的报文相反,反馈报文的目的地址、目的端口号、源地址、源端口号分别为上述报文的源地址、源端口号、目的地址、目的端口号,也就是反馈报文的目的地址为网关的本地地址,目的端口号为本地端口号,源地址为服务器的真实地址,源端口号为真实端口号,因此服务器可以将反馈报文发送至网关。网关采用预设计算方式基于反馈报文的报文信息计算第二分配标识,并将反馈报文分配至第二分配标识对应的CPU处。由于反馈报文的报文信息是为目标CPU配置的空闲地址表内记录的真实地址、真实端口号、本地地址与本地端口号,因此基于反馈报文的报文信息计算得到的第二分配标识同样与目标CPU相对应,基于第二分配标识可以将反馈报文分配至目标CPU,目标CPU可以继续基于自身对应的转发表项转发反馈报文。因此无论用户设备发送的报文,还是服务器发送的反馈报文,均是由同一个目标CPU负责转发的,在转发报文的过程中CPU之间不需要进行数据交互,从而可以提高报文转发的效率。
本发明的一个实施例中,所述装置还包括:表项生成模块,用于针对所述网关中包含的每一CPU,通过以下方式生成与该CPU对应的空闲地址表中的表项:
采用所述预设计算方式对该CPU能够使用的服务器信息与网关信息进行计算,得到计算结果;
选择目标信息组,生成包含所述目标信息组的表项,其中,所述目标信息组内包含的服务器信息与网关信息的计算结果为该CPU对应的分配标识。
本发明的一个实施例中,所述表项配置模块504,具体用于:
若不存在与所述报文相匹配的转发表项,则从所述目标CPU能够使用的服务器信息中选择一组目标服务器信息;
从所述目标CPU对应的空闲地址表中获取一个包含所述目标服务器信息的表项;
为所述目标CPU配置包含所述报文信息以及所获取的表项中记录的服务器信息与网关信息的转发表项。
由以上可见,在从空闲地址表中获取表项并配置转发表项时,可以先选择目标服务器信息,也就是先选择待生成的转发表项中包含服务器的真实地址和真实端口号,从而使得在配置转发表项后,网关基于所配置的转发表项可以向目标服务器信息对应的服务器转发报文。因此优先选择目标服务器信息相当于优先决定接收上述报文的服务器,从而可以实现对报文的调度。
本发明的一个实施例中,所述装置还包括:
表项删除模块,用于针对每一CPU,在删除该CPU能够使用的服务器信息和/或网关信息后,删除该CPU对应的空闲地址表中记录有所删除的服务器信息或网关信息的表项。
由以上可见,本发明实施例支持删除CPU能够使用的服务器信息和/或网关信息,在删除信息后删除空闲地址表中包含所删除信息的表项,使得在基于空闲地址表中包含的表项生成转发表项时,所生成的转发表项内不会包含已被删除的服务器信息和网关信息,从而可以避免基于所生成的转发表项转发报文时转发错误的问题。
本发明的一个实施例中,所述装置还包括:
转发表项删除模块,用于若所述网关与服务器之间的会话超时,删除各个CPU对应的、记录有所述服务器的服务器信息的转发表项;
和/或
若所述用户设备与网关之间的会话超时,删除各个CPU对应的、记录有所述用户设备的地址的转发表项。
由以上可见,若服务器与网关之间的会话超时,则可以删除网关中记录的包含上述服务器的服务器信息的转发表项,上述转发表项被删除之后网关在基于转发表项转发报文时就不会将报文转发至会话超时的服务器,从而可以防止转发报文时报文丢包等问题。并且,若用户设备与网关之间的会话超时,则可以删除网关中记录的包含上述用户设备的地址的转发表项,同样可以防止转发报文时报文丢包等问题。
本发明的一个实施例中,针对每一CPU对应的空闲地址表,该空闲地址表中包含的表项的数量高于第一阈值和/或低于第二阈值。
本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
存储器703,用于存放计算机程序;
处理器701,用于执行存储器703上所存放的程序时,实现上述应用于网关的报文转发方法的任一方法步骤。
应用本发明实施例提供的电子设备转发报文时,在网关中不包含与报文相匹配的转发表项时,通过本发明实施例可以配置记录有报文信息、网关信息与服务器信息的转发表项。则目标CPU在获取到上述报文后,可以基于上述转发表项中记录的网关信息将报文的源地址修改为网关的本地地址,将源端口号修改为网关的本地端口号,并基于转发表项中记录的服务器信息将报文的目的地址修改为服务器的真实地址,将报文的目的端口号修改为真实端口号。则可以基于修改后的目的地址与目的端口号将报文转发至服务器,服务器在完成数据处理之后,会生成向用户设备发送的反馈报文,与服务器接收到的报文相反,反馈报文的目的地址、目的端口号、源地址、源端口号分别为上述报文的源地址、源端口号、目的地址、目的端口号,也就是反馈报文的目的地址为网关的本地地址,目的端口号为本地端口号,源地址为服务器的真实地址,源端口号为真实端口号,因此服务器可以将反馈报文发送至网关。网关采用预设计算方式基于反馈报文的报文信息计算第二分配标识,并将反馈报文分配至第二分配标识对应的CPU处。由于反馈报文的报文信息是为目标CPU配置的空闲地址表内记录的真实地址、真实端口号、本地地址与本地端口号,因此基于反馈报文的报文信息计算得到的第二分配标识同样与目标CPU相对应,基于第二分配标识可以将反馈报文分配至目标CPU,目标CPU可以继续基于自身对应的转发表项转发反馈报文。因此无论用户设备发送的报文,还是服务器发送的反馈报文,均是由同一个目标CPU负责转发的,在转发报文的过程中CPU之间不需要进行数据交互,从而可以提高报文转发的效率。
上述终端提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,简称PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,简称EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述终端与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,简称RAM),也可以包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,简称CPU)、网络处理器(Network Processor,简称NP)等;还可以是数字信号处理器(Digital Signal Processor,简称DSP)、专用集成电路(Application SpecificIntegrated Circuit,简称ASIC)、现场可编程门阵列(Field-Programmable Gate Array,简称FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述实施例中任一所述的应用于网关的报文转发方法。
应用本实施例提供的计算机可读存储介质中存储的计算机程序转发报文时,在网关中不包含与报文相匹配的转发表项时,通过本发明实施例可以配置记录有报文信息、网关信息与服务器信息的转发表项。则目标CPU在获取到上述报文后,可以基于上述转发表项中记录的网关信息将报文的源地址修改为网关的本地地址,将源端口号修改为网关的本地端口号,并基于转发表项中记录的服务器信息将报文的目的地址修改为服务器的真实地址,将报文的目的端口号修改为真实端口号。则可以基于修改后的目的地址与目的端口号将报文转发至服务器,服务器在完成数据处理之后,会生成向用户设备发送的反馈报文,与服务器接收到的报文相反,反馈报文的目的地址、目的端口号、源地址、源端口号分别为上述报文的源地址、源端口号、目的地址、目的端口号,也就是反馈报文的目的地址为网关的本地地址,目的端口号为本地端口号,源地址为服务器的真实地址,源端口号为真实端口号,因此服务器可以将反馈报文发送至网关。网关采用预设计算方式基于反馈报文的报文信息计算第二分配标识,并将反馈报文分配至第二分配标识对应的CPU处。由于反馈报文的报文信息是为目标CPU配置的空闲地址表内记录的真实地址、真实端口号、本地地址与本地端口号,因此基于反馈报文的报文信息计算得到的第二分配标识同样与目标CPU相对应,基于第二分配标识可以将反馈报文分配至目标CPU,目标CPU可以继续基于自身对应的转发表项转发反馈报文。因此无论用户设备发送的报文,还是服务器发送的反馈报文,均是由同一个目标CPU负责转发的,在转发报文的过程中CPU之间不需要进行数据交互,从而可以提高报文转发的效率。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一所述的应用于网关的报文转发方法。
执行本实施例提供的计算机程序产品转发报文时,在网关中不包含与报文相匹配的转发表项时,通过本发明实施例可以配置记录有报文信息、网关信息与服务器信息的转发表项。则目标CPU在获取到上述报文后,可以基于上述转发表项中记录的网关信息将报文的源地址修改为网关的本地地址,将源端口号修改为网关的本地端口号,并基于转发表项中记录的服务器信息将报文的目的地址修改为服务器的真实地址,将报文的目的端口号修改为真实端口号。则可以基于修改后的目的地址与目的端口号将报文转发至服务器,服务器在完成数据处理之后,会生成向用户设备发送的反馈报文,与服务器接收到的报文相反,反馈报文的目的地址、目的端口号、源地址、源端口号分别为上述报文的源地址、源端口号、目的地址、目的端口号,也就是反馈报文的目的地址为网关的本地地址,目的端口号为本地端口号,源地址为服务器的真实地址,源端口号为真实端口号,因此服务器可以将反馈报文发送至网关。网关采用预设计算方式基于反馈报文的报文信息计算第二分配标识,并将反馈报文分配至第二分配标识对应的CPU处。由于反馈报文的报文信息是为目标CPU配置的空闲地址表内记录的真实地址、真实端口号、本地地址与本地端口号,因此基于反馈报文的报文信息计算得到的第二分配标识同样与目标CPU相对应,基于第二分配标识可以将反馈报文分配至目标CPU,目标CPU可以继续基于自身对应的转发表项转发反馈报文。因此无论用户设备发送的报文,还是服务器发送的反馈报文,均是由同一个目标CPU负责转发的,在转发报文的过程中CPU之间不需要进行数据交互,从而可以提高报文转发的效率。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质和计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
Claims (10)
1.一种报文转发方法,其特征在于,应用于网关,所述方法包括:
在接收到用户设备发送的报文后,采用预设计算方式,基于所述报文的报文信息计算所述报文的第一分配标识,其中,所述报文信息中包含:所述报文的源地址、源端口号、目的地址、目的端口号,所述源地址为所述用户设备的地址,所述源端口号为所述用户设备的端口号,所述目的地址为所述网关的虚拟地址,所述目的端口号为所述网关的虚拟端口号;
将所述报文分配至所述第一分配标识对应的、所述网关包含的目标CPU处;
在所述目标CPU对应的转发表项中,查找与所述报文相匹配的目标转发表项;
若不存在与所述报文相匹配的目标转发表项,则从所述目标CPU对应的空闲地址表中获取一个表项,并为所述目标CPU配置包含所述报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项,其中,采用所述预设计算方式对所述空闲地址表中包含的各个表项中记录的服务器信息与网关信息进行计算,均能够计算得到所述目标CPU对应的分配标识,所述服务器信息中包含:服务器的真实地址、真实端口号,所述网关信息中包含:所述网关的本地地址、本地端口号;
基于所述目标转发表项中记录的网关信息,将所述报文的源地址和源端口号分别修改为所述网关的本地地址和本地端口号,并基于所述目标转发表项中记录的服务器信息,将所述报文的目的地址和目的端口号分别修改为所述服务器的真实地址和真实端口号;基于修改后的目的地址和目的端口号向所述服务器转发所述报文,使得所述服务器对所述报文进行处理并发送反馈报文,其中,所述反馈报文的报文信息中包含:所述反馈报文的目的地址、目的端口号、源地址、源端口号,所述反馈报文的目的地址、目的端口号、源地址、源端口号分别为:所述报文的修改后的源地址、源端口号、目的地址、目的端口号;
在接收到所述反馈报文之后,采用所述预设计算方式基于所述反馈报文的报文信息计算所述反馈报文的第二分配标识,将所述反馈报文分配至所述第二分配标识对应的CPU处,基于所分配至的CPU对应的、与所述反馈报文相匹配的转发表项向所述用户设备转发所述反馈报文,其中,所述第二分配标识与所述目标CPU对应。
2.根据权利要求1所述的方法,其特征在于,针对所述网关中包含的每一CPU,通过以下方式生成与该CPU对应的空闲地址表中的表项:
采用所述预设计算方式对该CPU能够使用的服务器信息与网关信息进行计算,得到计算结果;
选择目标信息组,生成包含所述目标信息组的表项,其中,所述目标信息组内包含的服务器信息与网关信息的计算结果为该CPU对应的分配标识。
3.根据权利要求1所述的方法,其特征在于,所述从所述目标CPU对应的空闲地址表中获取一个表项,包括:
从所述目标CPU能够使用的服务器信息中选择一组目标服务器信息;
从所述目标CPU对应的空闲地址表中获取一个包含所述目标服务器信息的表项。
4.根据权利要求1所述的方法,其特征在于,所述方法还包括:
针对每一CPU,在删除该CPU能够使用的服务器信息和/或网关信息后,删除该CPU对应的空闲地址表中记录有所删除的服务器信息或网关信息的表项。
5.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若所述网关与服务器之间的会话超时,删除各个CPU对应的、记录有所述服务器的服务器信息的转发表项;
和/或
若所述用户设备与网关之间的会话超时,删除各个CPU对应的、记录有所述用户设备的地址的转发表项。
6.根据权利要求1-5中任一项所述的方法,其特征在于,针对每一CPU对应的空闲地址表,该空闲地址表中包含的表项的数量高于第一阈值和/或低于第二阈值。
7.一种报文转发装置,其特征在于,应用于网关,所述装置包括:
标识计算模块,用于在接收到用户设备发送的报文后,采用预设计算方式,基于所述报文的报文信息计算所述报文的第一分配标识,其中,所述报文信息中包含:所述报文的源地址、源端口号、目的地址、目的端口号,所述源地址为所述用户设备的地址,所述源端口号为所述用户设备的端口号,所述目的地址为所述网关的虚拟地址,所述目的端口号为所述网关的虚拟端口号;
报文分配模块,用于将所述报文分配至所述第一分配标识对应的、所述网关包含的目标CPU处;
表项查找模块,用于在所述目标CPU对应的转发表项中,查找与所述报文相匹配的目标转发表项;
表项配置模块,用于若不存在与所述报文相匹配的目标转发表项,则从所述目标CPU对应的空闲地址表中获取一个表项,并为所述目标CPU配置包含所述报文信息以及所获取的表项中记录的服务器信息与网关信息的目标转发表项,其中,采用所述预设计算方式对所述空闲地址表中包含的各个表项中记录的服务器信息与网关信息进行计算,均能够计算得到所述目标CPU对应的分配标识,所述服务器信息中包含:服务器的真实地址、真实端口号,所述网关信息中包含:所述网关的本地地址、本地端口号;
第一报文转发模块,用于基于所述目标转发表项中记录的网关信息,将所述报文的源地址和源端口号分别修改为所述网关的本地地址和本地端口号,并基于所述目标转发表项中记录的服务器信息,将所述报文的目的地址和目的端口号分别修改为所述服务器的真实地址和真实端口号;基于修改后的目的地址和目的端口号向所述服务器转发所述报文,使得所述服务器对所述报文进行处理并发送反馈报文,其中,所述反馈报文的报文信息中包含:所述反馈报文的目的地址、目的端口号、源地址、源端口号,所述反馈报文的目的地址、目的端口号、源地址、源端口号分别为:所述报文的修改后的源地址、源端口号、目的地址、目的端口号;
第二报文转发模块,用于在接收到所述反馈报文之后,采用所述预设计算方式基于所述反馈报文的报文信息计算所述反馈报文的第二分配标识,将所述反馈报文分配至所述第二分配标识对应的CPU处,基于所分配至的CPU对应的、与所述反馈报文相匹配的转发表项向所述用户设备转发所述反馈报文,其中,所述第二分配标识与所述目标CPU对应。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:表项生成模块,用于针对所述网关中包含的每一CPU,通过以下方式生成与该CPU对应的空闲地址表中的表项:
采用所述预设计算方式对该CPU能够使用的服务器信息与网关信息进行计算,得到计算结果;
选择目标信息组,生成包含所述目标信息组的表项,其中,所述目标信息组内包含的服务器信息与网关信息的计算结果为该CPU对应的分配标识。
9.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-6任一所述的方法步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一所述的方法步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111496154.0A CN114257545B (zh) | 2021-12-09 | 2021-12-09 | 一种报文转发方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111496154.0A CN114257545B (zh) | 2021-12-09 | 2021-12-09 | 一种报文转发方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114257545A CN114257545A (zh) | 2022-03-29 |
CN114257545B true CN114257545B (zh) | 2023-09-05 |
Family
ID=80791832
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202111496154.0A Active CN114257545B (zh) | 2021-12-09 | 2021-12-09 | 一种报文转发方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114257545B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116938829A (zh) * | 2022-04-06 | 2023-10-24 | 华为云计算技术有限公司 | 一种数据转发方法及相关设备 |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7177943B1 (en) * | 2001-12-27 | 2007-02-13 | Cisco Technology, Inc. | System and method for processing packets in a multi-processor environment |
CN102025643A (zh) * | 2010-12-30 | 2011-04-20 | 华为技术有限公司 | 一种流表查找方法和装置 |
CN102984006A (zh) * | 2012-12-06 | 2013-03-20 | 武汉烽火网络有限责任公司 | 基于简单网络管理协议的网管实现方法 |
WO2014008802A1 (en) * | 2012-07-10 | 2014-01-16 | Hangzhou H3C Technologies Co., Ltd. | Traffic forwarding in a layer 2 edge network |
CN104780088A (zh) * | 2015-03-19 | 2015-07-15 | 杭州华三通信技术有限公司 | 一种业务报文的传输方法和设备 |
WO2016034014A1 (zh) * | 2014-09-05 | 2016-03-10 | 华为技术有限公司 | 一种基于虚拟机迁移的网关控制方法、装置及*** |
CN105871741A (zh) * | 2015-01-23 | 2016-08-17 | 阿里巴巴集团控股有限公司 | 一种报文分流方法及装置 |
CN108363621A (zh) * | 2018-01-18 | 2018-08-03 | 东软集团股份有限公司 | numa架构下的报文转发方法、装置、存储介质及电子设备 |
CN112965824A (zh) * | 2021-03-31 | 2021-06-15 | 北京金山云网络技术有限公司 | 报文的转发方法及装置、存储介质、电子设备 |
CN113014689A (zh) * | 2021-03-01 | 2021-06-22 | 杭州迪普科技股份有限公司 | 一种网络地址转换的方法和装置 |
CN113419973A (zh) * | 2021-06-17 | 2021-09-21 | 杭州迪普科技股份有限公司 | 一种报文转发方法及装置 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030110379A1 (en) * | 2001-12-07 | 2003-06-12 | Tatu Ylonen | Application gateway system, and method for maintaining security in a packet-switched information network |
US9094466B2 (en) * | 2011-04-07 | 2015-07-28 | Hewlett-Packard Development Company, L.P. | Maintaining caches of object location information in gateway computing devices using multicast messages |
-
2021
- 2021-12-09 CN CN202111496154.0A patent/CN114257545B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7177943B1 (en) * | 2001-12-27 | 2007-02-13 | Cisco Technology, Inc. | System and method for processing packets in a multi-processor environment |
CN102025643A (zh) * | 2010-12-30 | 2011-04-20 | 华为技术有限公司 | 一种流表查找方法和装置 |
WO2014008802A1 (en) * | 2012-07-10 | 2014-01-16 | Hangzhou H3C Technologies Co., Ltd. | Traffic forwarding in a layer 2 edge network |
CN102984006A (zh) * | 2012-12-06 | 2013-03-20 | 武汉烽火网络有限责任公司 | 基于简单网络管理协议的网管实现方法 |
WO2016034014A1 (zh) * | 2014-09-05 | 2016-03-10 | 华为技术有限公司 | 一种基于虚拟机迁移的网关控制方法、装置及*** |
CN105871741A (zh) * | 2015-01-23 | 2016-08-17 | 阿里巴巴集团控股有限公司 | 一种报文分流方法及装置 |
CN104780088A (zh) * | 2015-03-19 | 2015-07-15 | 杭州华三通信技术有限公司 | 一种业务报文的传输方法和设备 |
CN108363621A (zh) * | 2018-01-18 | 2018-08-03 | 东软集团股份有限公司 | numa架构下的报文转发方法、装置、存储介质及电子设备 |
CN113014689A (zh) * | 2021-03-01 | 2021-06-22 | 杭州迪普科技股份有限公司 | 一种网络地址转换的方法和装置 |
CN112965824A (zh) * | 2021-03-31 | 2021-06-15 | 北京金山云网络技术有限公司 | 报文的转发方法及装置、存储介质、电子设备 |
CN113419973A (zh) * | 2021-06-17 | 2021-09-21 | 杭州迪普科技股份有限公司 | 一种报文转发方法及装置 |
Non-Patent Citations (1)
Title |
---|
李凯 ; 叶麟 ; 余翔湛 ; 胡阳 ; .基于DPDK的流量动态负载均衡方法.智能计算机与应用.2017,(第04期),全文. * |
Also Published As
Publication number | Publication date |
---|---|
CN114257545A (zh) | 2022-03-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11134134B2 (en) | Routing for origin-facing points of presence | |
WO2020186909A1 (zh) | 虚拟网络业务处理方法、装置和***,控制器,存储介质 | |
EP3142310B1 (en) | Method, device, and system for configuring flow entries | |
CN111460460B (zh) | 任务访问方法、装置、代理服务器及机器可读存储介质 | |
CN107172120B (zh) | 信息处理方法、处理节点及网络节点 | |
CN109660578B (zh) | Cdn的回源处理方法及装置、*** | |
CN108322325B (zh) | 一种虚拟机管理方法及装置 | |
CN108259328B (zh) | 报文转发方法及装置 | |
JP2019527988A (ja) | パケット伝送 | |
US20180241608A1 (en) | Forwarding ethernet packets | |
CN111585887B (zh) | 基于多个网络的通信方法、装置、电子设备及存储介质 | |
WO2017000565A1 (zh) | 一种用户接入的控制方法、装置、中继设备及服务器 | |
US20150088995A1 (en) | Method and apparatus for sharing contents using information of group change in content oriented network environment | |
CN110290044B (zh) | 一种vpn网络和主干网络的分流方法、装置及存储介质 | |
JP2010219845A (ja) | 中継装置、テナント管理プログラム、 | |
CN104954155B (zh) | 具有多个业务板的网络设备以及多业务板分担方法 | |
WO2020181735A1 (zh) | 一种提供网络地址转换nat服务的方法及控制器 | |
JP2020502941A (ja) | リソーススケジューリング | |
CN114257545B (zh) | 一种报文转发方法及装置 | |
CN114095430A (zh) | 一种访问报文的处理方法、***及工作节点 | |
CN111064786B (zh) | 账户标识管理方法及设备 | |
CN104780232A (zh) | 一种资源分配方法、控制器及*** | |
RU2716748C1 (ru) | Способ выравнивания нагрузки и связанное с ним устройство | |
CN109617817B (zh) | 一种mlag组网的转发表项的生成方法及装置 | |
CN110086727B (zh) | 一种cgn板间负载分担方法及装置 |
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 |