CN107888500A - 报文转发方法及装置、存储介质、电子设备 - Google Patents
报文转发方法及装置、存储介质、电子设备 Download PDFInfo
- Publication number
- CN107888500A CN107888500A CN201711067952.5A CN201711067952A CN107888500A CN 107888500 A CN107888500 A CN 107888500A CN 201711067952 A CN201711067952 A CN 201711067952A CN 107888500 A CN107888500 A CN 107888500A
- Authority
- CN
- China
- Prior art keywords
- pmtu
- message
- sent
- conversational list
- message locally
- 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.)
- Granted
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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L47/00—Traffic control in data switching networks
- H04L47/10—Flow control; Congestion control
- H04L47/36—Flow control; Congestion control by determining packet size, e.g. maximum transfer unit [MTU]
- H04L47/365—Dynamic adaptation of the packet size
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/02—Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
- Computer And Data Communications (AREA)
Abstract
本公开涉及一种报文转发方法及装置、存储介质、电子设备。预设虚拟防火墙的默认身份标识,且在会话表中保存本地发出的报文对应的虚拟防火墙的真实身份标识,会话表采用共享内存设计,该方法包括:如果本地发出的报文中未携带虚拟防火墙的真实身份标识,则从本地发出的报文中提取五元组,利用五元组以及虚拟防火墙的默认身份标识,在哈希表中查找本地发出的报文对应的会话表;若在哈希表中查找到会话表,则访问会话表获得本地发出的报文对应的虚拟防火墙的真实身份标识;将本地发出的报文发送至用户态,以通过具有真实身份标识的虚拟防火墙对应的网卡,按照会话表中的转发策略发送本地发出的报文。有助于提高基于虚拟防火墙实现的报文转发的性能。
Description
技术领域
本公开涉及通信技术领域,具体地,涉及一种报文转发方法及装置、计算机可读存储介质、电子设备。
背景技术
为了使物理计算机的资源利用最大化,减少用户成本,虚拟防火墙技术已成为各网络安全厂商的研究重点。虚拟防火墙技术能够将一台物理防火墙在逻辑上划分成多个虚拟防火墙vsys(英文:virtual system),从用户角度来说,每个虚拟防火墙都可以被看成是一台完全独立的防火墙设备。
基于虚拟防火墙技术进行报文转发时,可以先由内核态获取虚拟防火墙的真实身份标识,然后将本地发出的报文发送至用户态,使用户态通过具有真实身份标识的虚拟防火墙对应的网卡,按照会话表中的转发策略进行报文转发。
通常,如果首包是本地到达的报文,由现有的协议栈实现可知,报文经协议栈再从本地发出时,无法携带虚拟防火墙的真实身份标识。针对于此,可以通过遍历的方式获得虚拟防火墙的真实身份标识。
具体地,如果虚拟防火墙系统包括255个虚拟防火墙,各虚拟防火墙的真实身份标识为1~255,则从本地发出的报文中提取出五元组后,五元组可以逐个与各虚拟防火墙的真实身份标识组合,尝试查找对应的会话表。如果查找到对应的会话表,则说明当前组合中的身份标识即为本地发出的报文对应的虚拟防火墙的真实身份标识。
如此遍历方案,会影响基于虚拟防火墙实现的报文转发的性能,如上述示例中,最差情况可能需要查询255次才能确定出虚拟防火墙的真实身份标识。
发明内容
本公开的目的是提供一种报文转发方法及装置、计算机可读存储介质、电子设备,有助于提高基于虚拟防火墙实现的报文转发的性能。
为了实现上述目的,第一方面,本公开提供一种报文转发方法,预设虚拟防火墙的默认身份标识,且在会话表中保存本地发出的报文对应的虚拟防火墙的真实身份标识,所述会话表采用共享内存设计,所述方法包括:
如果所述本地发出的报文中未携带虚拟防火墙的真实身份标识,则从所述本地发出的报文中提取五元组后,利用所述五元组以及所述虚拟防火墙的默认身份标识,在哈希表中查找所述本地发出的报文对应的会话表;
如果在所述哈希表中查找到所述会话表,则访问所述会话表,获得所述本地发出的报文对应的虚拟防火墙的真实身份标识;
将所述本地发出的报文发送至用户态,以通过具有所述真实身份标识的虚拟防火墙对应的网卡,按照所述会话表中的转发策略发送所述本地发出的报文。
可选地,所述将所述本地发出的报文发送至用户态,包括:
通过内核态的指定CPU将所述本地发出的报文发送至用户态的指定CPU,所述用户态的指定CPU用于将所述本地发出的报文转发至所述虚拟防火墙对应的网卡,使所述虚拟防火墙对应的网卡按照所述会话表中的转发策略发送所述本地发出的报文。
可选地,所述内核态的CPU与所述用户态的CPU为一对一关系,则确定所述内核态的指定CPU的方式为:
从本地到达的报文中提取五元组,所述本地到达的报文与所述本地发出的报文属于同一个会话;
基于接收端扩展RSS算法,利用所述本地到达的报文中提取的五元组,确定出所述用户态的指定CPU的身份标识;
基于所述一对一关系以及所述用户态的指定CPU的身份标识,确定出所述内核态的指定CPU的身份标识。
可选地,所述会话表中保存有路径最大传输单元PMTU的版本号以及PMTU值,所述方法还包括:
判断是否需要探测所述本地发出的报文的PMTU;
如果需要探测所述本地发出的报文的PMTU,则访问所述会话表和PMTU表,获取所述本地发出的报文在所述会话表中的PMTU的版本号、在所述PMTU表中的PMTU的版本号,并判断两个PMTU的版本号是否相同;
如果PMTU的版本号相同,则基于所述会话表中保存的PMTU值对所述本地发出的报文进行分片。
可选地,所述方法还包括:
如果PMTU的版本号不同,则获取所述本地发出的报文的新的PMTU值;
将所述新的PMTU值发送至用户态,由所述用户态更新所述本地发出的报文在所述会话表中的PMTU值,并同步所述本地发出的报文在所述会话表以及所述PMTU表中的PMTU的版本号。
第二方面,本公开提供一种报文转发装置,预设虚拟防火墙的默认身份标识,且在会话表中保存本地发出的报文对应的虚拟防火墙的真实身份标识,所述会话表采用共享内存设计,所述装置包括:
会话表查找模块,用于在所述本地发出的报文中未携带虚拟防火墙的真实身份标识时,从所述本地发出的报文中提取五元组后,利用所述五元组以及所述虚拟防火墙的默认身份标识,在哈希表中查找所述本地发出的报文对应的会话表;
身份标识获得模块,用于在所述哈希表中查找到所述会话表时,访问所述会话表,获得所述本地发出的报文对应的虚拟防火墙的真实身份标识;
报文发送模块,用于将所述本地发出的报文发送至用户态,以通过具有所述真实身份标识的虚拟防火墙对应的网卡,按照所述会话表中的转发策略发送所述本地发出的报文。
可选地,所述报文发送模块,用于通过内核态的指定CPU将所述本地发出的报文发送至用户态的指定CPU,所述用户态的指定CPU用于将所述本地发出的报文转发至所述虚拟防火墙对应的网卡,使所述虚拟防火墙对应的网卡按照所述会话表中的转发策略发送所述本地发出的报文。
可选地,所述内核态的CPU与所述用户态的CPU为一对一关系,所述装置还包括:
指定CPU确定模块,用于从本地到达的报文中提取五元组,所述本地到达的报文与所述本地发出的报文属于同一个会话;基于接收端扩展RSS算法,利用所述本地到达的报文中提取的五元组,确定出所述用户态的指定CPU的身份标识;基于所述一对一关系以及所述用户态的指定CPU的身份标识,确定出所述内核态的指定CPU的身份标识。
可选地,所述会话表中保存有路径最大传输单元PMTU的版本号以及PMTU值,所述装置还包括:
PMTU探测判断模块,用于判断是否需要探测所述本地发出的报文的PMTU;
版本号判断模块,用于在需要探测所述本地发出的报文的PMTU时,访问所述会话表和PMTU表,获取所述本地发出的报文在所述会话表中的PMTU的版本号、在所述PMTU表中的PMTU的版本号,并判断两个PMTU的版本号是否相同;
报文分片模块,用于在PMTU的版本号相同时,基于所述会话表中保存的PMTU值对所述本地发出的报文进行分片。
可选地,所述装置还包括:
PMTU值获取模块,用于在PMTU的版本号不同时,获取所述本地发出的报文的新的PMTU值;
PMTU值更新模块,用于将所述新的PMTU值发送至用户态,由所述用户态更新所述本地发出的报文在所述会话表中的PMTU值,并同步所述本地发出的报文在所述会话表以及所述PMTU表中的PMTU的版本号。
第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述报文转发方法的步骤。
第四方面,本公开提供一种电子设备,包括:
上述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
本公开方案中,当本地发出的报文中未携带虚拟防火墙的真实身份标识时,可以将五元组和虚拟防火墙的默认身份标识作为session key,在哈希表中查找报文对应的会话表,如若查找到会话表,内核态则可访问会话表,从中获取虚拟防火墙的真实身份标识,如此,在内核态将本地发出的报文发送至用户态后,便可通过具有真实身份标识的虚拟防火墙对应的网卡,按照会话表中的转发策略发送本地发出的报文。如此方案,仅需一次便可查找到虚拟防火墙的真实身份标识,有助于提高基于虚拟防火墙实现的报文转发的性能。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是本公开报文转发方法实施例1的流程示意图;
图2是本公开中内核态、用户态的CPU的对应关系示意图;
图3是本公开报文转发方法实施例2的流程示意图;
图4是本公开报文转发装置的结构示意图;
图5是本公开用于报文转发的电子设备的结构框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
参见图1,示出了本公开实施例报文转发方法实施例1的流程示意图。本公开方案可以应用于报文转发设备,实现基于虚拟防火墙的高性能报文转发,该方法可以包括以下步骤:
步骤101,如果本地发出的报文中未携带虚拟防火墙的真实身份标识,则从所述本地发出的报文中提取五元组后,利用所述五元组以及虚拟防火墙的默认身份标识,在哈希表中查找所述本地发出的报文对应的会话表。
步骤102,如果在所述哈希表中查找到所述会话表,则访问所述会话表,获得所述本地发出的报文对应的虚拟防火墙的真实身份标识。
对于本地发出的报文,即from local的报文来说,在实际应用中存在以下两种情况:第一种情况,首包是本地发出的报文,该情况下报文中携带有虚拟防火墙的真实身份标识;第二种情况,首包是本地到达的报文,即to local的报文,该情况下本地发出的报文中不会携带虚拟防火墙的真实身份标识。
针对第二种情况,为了获得虚拟防火墙的真实身份标识,本公开方案可做如下处理:
1.预设虚拟防火墙的默认身份标识。
作为一种示例,可以结合实际应用设置虚拟防火墙的默认身份标识,使虚拟防火墙的默认身份标识不同于虚拟防火墙系统中各虚拟防火墙的真实身份标识。举例来说,虚拟防火墙系统包括真实身份标识为1~255的虚拟防火墙,则虚拟防火墙的默认身份标识可以设置为0,本公开方案对虚拟防火墙系统包括虚拟防火墙的数目、各虚拟防火墙的真实身份标识、虚拟防火墙的默认身份标识等,可不做具体限定。
需要说明的是,虚拟防火墙系统包括的虚拟防火墙的数目是可配置的,例如可以通过liscense配置。
此外,本公开方案中的虚拟防火墙,可以在建立时为其动态申请内存空间,以供虚拟防火墙运行使用;或者,为了保障资源利用最大化,可以在初始化时,预先申请一定数量的虚拟防火墙的内存空间,并在需要建立某个虚拟防火墙时,直接从预先申请的内存空间中为该虚拟防火墙分配空间即可。本公开对虚拟防火墙内存空间的申请时机可不做具体限定。
2.在会话表中保存本地发出的报文对应的虚拟防火墙的真实身份标识。
作为一种示例,虚拟防火墙的真实身份标识可以通过人为方式预先配置于会话表中。
作为一种示例,考虑到属于同一会话的本地到达、本地发出的报文,对应相同的虚拟防火墙,本公开方案还可以利用本地到达的报文,确定出本地发出的报文对应的虚拟防火墙的真实身份标识,写入会话表中。
具体地,可以预先建立网卡的设备号与虚拟防火墙的真实身份标识的对应关系,如此,在接收到本地到达的报文后,可以解析出接收本地到达的报文的网卡的设备号;然后便可基于上述对应关系、接收本地到达的报文的网卡的设备号,确定出虚拟防火墙的真实身份标识,写入会话表中。
此外,针对本公开方案中的会话表还可做如下解释说明:
在异构平台中,用户态进程、内核态进程、软中断上下文等,进行报文转发时都需要访问会话表,并基于会话表中的转发策略实现报文转发。现有技术中,用户态、内核态之间设置有消息通道,所有内核态需要访问会话表的操作,均需通过消息通道传递至用户态执行,致使内核态访问会话表的延迟处理时间较长,属于异步操作。此外,若出现消息通道堵塞情况,还可能会造成消息丢失,导致内核态对会话表的访问超时。
针对上述问题,本公开方案中的会话表可以采用共享内存的设计方案,即用户态、内核态可以同时共享会话表内存,同步访问会话表,无任何延迟。另外,为了保证整体设计的安全性,内核态可以只对会话表进行读操作,写操作依旧通过消息通道传递至用户态执行。如此,既可满足绝大多数查询操作的及时性,又可保证新建、添加、删除等写操作的高健壮性,防止因为内核态操作不安全导致系统瘫痪。
需要说明的是,本公开方案应用于多核系统时,为了保证各CPU的处理都是相互独立的,可以将会话表设计为每核机制,即一个CPU对应一个会话表,以此保证每个CPU在基于会话表进行报文转发时,可以做到会话表的资源访问操作无需加锁,从而提升整体性能。
也就是说,本公开方案中的会话表,仅在用户态进行写操作时进行加锁处理,在用户态、内核态进行读操作时均无需加锁,如此,确保会话表在多核并发查找过程中无需加锁,便可使并发处理性能随着CPU数目增多呈线性增长。
3.创建哈希表。
本公开方案中,可以设置全局的哈希表,并基于哈希表查找报文对应的会话表。具体地,哈希表可以键值对的形式,保存五元组、虚拟防火墙的默认身份标识、会话表的存放位置之间的对应关系,其中,session key可以设计为:五元组、虚拟防火墙的默认身份标识,对应的value为会话表的存放位置。
可以理解地,针对第一种情况,即报文中携带虚拟防火墙的真实身份标识,哈希表的session key可以设计为:五元组、虚拟防火墙的真实身份标识,本公开方案对此不做详述。
综上,在判定本地发出的报文中未携带虚拟防火墙的真实身份标识时,可以利用五元组以及虚拟防火墙的默认身份标识,在哈希表中查找本地发出的报文对应的会话表。如若查找到会话表,内核态则可直接访问会话表,从中读取虚拟防火墙的真实身份标识。也就是说,本公开方案确定本地发出的报文对应的虚拟防火墙的真实身份标识的时间复杂度为O(1),在会话存在情况下,无需如现有技术遍历最大可能性255次,仅需一次便可查找到虚拟防火墙的真实身份标识,有助于提高基于虚拟防火墙实现的报文转发的性能。
需要说明的是,协议栈的端口号是有限的,同一个端口不可能做出来多个会话连接,即本地出来的五元组不可能重复,如此,五元组、虚拟防火墙的默认身份标识作为session key时,只能查找到唯一的会话表。
步骤103,将所述本地发出的报文发送至用户态,以通过具有所述真实身份标识的虚拟防火墙对应的网卡,按照所述会话表中的转发策略发送所述本地发出的报文。
通常,虚拟防火墙与网卡之间具有一定的对应关系,在获得虚拟防火墙的真实身份标识后,可以将报文从内核态发送至用户态,通过虚拟防火墙对应的网卡实现报文转发。作为一种示例,虚拟防火墙与网卡之间的对应关系,可以体现为一对一,也可以体现为一对多,本公开方案对此可不做限定。
作为一种示例,本公开方案中通过虚拟防火墙对应的网卡实现报文转发,可以体现为:内核态的指定CPU将本地发出的报文发送至用户态的指定CPU,由用户态的指定CPU将本地发出的报文转发至虚拟防火墙对应的网卡,使虚拟防火墙对应的网卡按照会话表中的转发策略进行报文转发。
本公开方案中,同一会话连接的两个方向的报文需要由会话所在CPU处理,若接收内核态发送的本地发出的报文的用户态CPU,与接收网卡发送的本地到达的报文的用户态CPU不相同,则需要进行倒核将报文转发至同一个CPU处理。为了避免报文在转发流程中倒核影响整体转发性能,本公开可以提供一种确定内核态的指定CPU的方案,即确定内核态中本地发出的报文的发包CPU。
如图2所示,本公开方案中内核态的CPU与用户态的CPU可以设置为一对一关系。例如,用户态的CPU0、内核态的CPU4可以是同属于一个物理CPU的两个逻辑内核,当CPU0的报文需要进入内核态处理时,CPU0可以将报文发送至CPU4,反之,当CPU4的报文需要进入用户态处理时,CPU4可以将报文发送至CPU0。如此,本公开方案可以基于接收端扩展RSS(英文:Receive Side Scaling)算法,确定出用户态的指定CPU,进而再根据对应关系确定出内核态的指定CPU。
举例来说,本地发出的报文的五元组为(sip,dip,sport,dport,protocol),在网卡硬件接收到本地到达的报文时,可以解析得到本地到达的报文的五元组(dip,sip,dport,sport,protocol),通过本地到达的报文的五元组可以计算出一个hash值,若网卡的队列个数为N,hash值模上N后的结果为x,则可将网卡x对应的CPUx确定为用户态的指定CPU,将CPUx对应的内核态CPUy确定为内核态的指定CPU。如此,对于同一会话中的报文来说,本地发出的报文可以通过CPUy发送至CPUx,本地到达的报文可以通过网卡发送至CPUx,即同一会话连接的两个方向的报文都可由同一个CPU接收并处理,无需倒核,有助于提升整体性能。
在实际应用过程中,如果本地发出的报文是ipv6报文或者其他需要探测PTMU(中文:路径最大传输单元,英文:Path Maximum Transmission Unit)的报文,在进行报文转发前,还需要获得本地发出的报文的PMTU值,并据此判断是否对报文进行分片处理,防止报文在转发过程中,中间的转发设备因为最大传输单元小于报文的真实长度,导致报文丢失。
为了减少PMTU探测次数,节省PMTU探测消耗的资源,可以在PMTU表中增加PMTU的版本号version,每次PMTU表有变化后,版本号可以更新加1;此外,会话表中也可以增加PMTU的版本号、PMTU值,若会话表、PMTU表中的版本号一致时,就说明PMTU值未发生变化,可以直接利用会话表中的PMTU值进行分片处理。若会话表、PMTU表中的版本号不一致时,则说明PMTU值发生了变化,需要重新探测获得本地发出的报文的新的PMTU值。
因为用户态只用于实现快速转发逻辑,无协议栈功能,故PMTU探测功能需在内核态实现。考虑到现有技术中内核态访问会话表的操作,需要通过用户态才可实现,也即需要内核态将报文发给用户态,由用户态从会话表、PMTU表中获取版本号,并根据版本号判断是否需要获取新的PMTU值,一旦判定需要获取新的PMTU值,用户态还需要将报文回发到内核态进行PMTU探测,最后再由内核态将探测到的新的PMTU值发往用户态。如此过程,流程较为复杂,报文处理存在延迟情况,影响报文转发的整体性能。
针对于此,本公开提供一种新的PMTU探测方案,具体可参见图3所示报文转发方法实施例2的流程示意图。该方法可以包括以下步骤:
步骤201,如果本地发出的报文中未携带虚拟防火墙的真实身份标识,则从所述本地发出的报文中提取五元组后,利用所述五元组以及虚拟防火墙的默认身份标识,在哈希表中查找所述本地发出的报文对应的会话表。
步骤202,如果在所述哈希表中查找到所述会话表,则访问所述会话表,获得所述本地发出的报文对应的虚拟防火墙的真实身份标识。
步骤201、202的实现过程,可参照上文步骤101、102处所做介绍,此处不再赘述。
步骤203,如果在所述哈希表中查找到所述会话表,则判断是否需要探测所述本地发出的报文的PMTU。
步骤204,如果需要探测所述本地发出的报文的PMTU,则访问所述会话表和PMTU表,获取所述本地发出的报文在所述会话表中的PMTU的版本号、在所述PMTU表中的PMTU的版本号,并判断两个PMTU的版本号是否相同。
步骤205,如果PMTU的版本号相同,则将所述本地发出的报文发送至用户态,通过具有所述真实身份标识的虚拟防火墙对应的网卡,按照所述会话表中保存的PMTU值以及转发策略发送所述本地发出的报文。
由上文介绍可知,本公开方案的会话表采用共享内存设计,内核态可以直接访问会话表,故本公开方案可以在查找到会话表后,由内核态访问会话表、PMTU表,根据二者保存的版本号,判断是否需要获取新的PMTU值。如果两个PMTU的版本号相同,则可直接利用会话表中保存的PMTU值进行分片处理;如果两个PMTU的版本号不同,则可从PMTU表中获取新的PMTU值,或者可以重新进行PMTU探测获得新的PMTU值,并利用新的PMTU值进行分片处理,本公开方案对此可不做具体限定。需要说明的是,内核态可以将新的PMTU值发送至用户态,由用户态更新本地发出的报文在会话表中的PMTU值,并同步本地发出的报文在会话表以及PMTU表中的PMTU的版本号。
需要说明的是,探测本地发出的报文的PMTU值的过程,可参照相关技术实现,此处不做详述。
综上所述,相对于PMTU探测的现有实现方案,本公开方案直接由内核态完成PMTU探测后,再将本地发出的报文发送至用户态,无需因为PMTU的处理而多次将报文在用户态和内核态的通道之间进行倒核,简化了操作流程的处理逻辑、减少了同一报文的处理延迟,有助于提高报文转发的整体性能。
参见图4,示出了本公开实施例报文转发装置的结构示意图。预设虚拟防火墙的默认身份标识,且在会话表中保存本地发出的报文对应的虚拟防火墙的真实身份标识,所述会话表采用共享内存设计,所述装置可以包括:
会话表查找模块301,用于在所述本地发出的报文中未携带虚拟防火墙的真实身份标识时,从所述本地发出的报文中提取五元组后,利用所述五元组以及所述虚拟防火墙的默认身份标识,在哈希表中查找所述本地发出的报文对应的会话表;
身份标识获得模块302,用于在所述哈希表中查找到所述会话表时,访问所述会话表,获得所述本地发出的报文对应的虚拟防火墙的真实身份标识;
报文发送模块303,用于将所述本地发出的报文发送至用户态,以通过具有所述真实身份标识的虚拟防火墙对应的网卡,按照所述会话表中的转发策略发送所述本地发出的报文。
可选地,所述报文发送模块,用于通过内核态的指定CPU将所述本地发出的报文发送至用户态的指定CPU,所述用户态的指定CPU用于将所述本地发出的报文转发至所述虚拟防火墙对应的网卡,使所述虚拟防火墙对应的网卡按照所述会话表中的转发策略发送所述本地发出的报文。
可选地,所述内核态的CPU与所述用户态的CPU为一对一关系,所述装置还包括:
指定CPU确定模块,用于从本地到达的报文中提取五元组,所述本地到达的报文与所述本地发出的报文属于同一个会话;基于接收端扩展RSS算法,利用所述本地到达的报文中提取的五元组,确定出所述用户态的指定CPU的身份标识;基于所述一对一关系以及所述用户态的指定CPU的身份标识,确定出所述内核态的指定CPU的身份标识。
可选地,所述会话表中保存有路径最大传输单元PMTU的版本号以及PMTU值,所述装置还包括:
PMTU探测判断模块,用于判断是否需要探测所述本地发出的报文的PMTU;
版本号判断模块,用于在需要探测所述本地发出的报文的PMTU时,访问所述会话表和PMTU表,获取所述本地发出的报文在所述会话表中的PMTU的版本号、在所述PMTU表中的PMTU的版本号,并判断两个PMTU的版本号是否相同;
报文分片模块,用于在PMTU的版本号相同时,基于所述会话表中保存的PMTU值对所述本地发出的报文进行分片。
可选地,所述装置还包括:
PMTU值获取模块,用于在PMTU的版本号不同时,获取所述本地发出的报文的新的PMTU值;
PMTU值更新模块,用于将所述新的PMTU值发送至用户态,由所述用户态更新所述本地发出的报文在所述会话表中的PMTU值,并同步所述本地发出的报文在所述会话表以及所述PMTU表中的PMTU的版本号。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
图5是根据一示例性实施例示出的一种电子设备400的框图,该电子设备400用于进行报文转发。如图5所示,该电子设备400可以包括:处理器401,存储器402,多媒体组件403,输入/输出(I/O)接口404,以及通信组件405。
其中,处理器401用于控制该电子设备400的整体操作,以完成上述的报文转发方法中的全部或部分步骤。存储器402用于存储各种类型的数据以支持在该电子设备400的操作,这些数据例如可以包括用于在该电子设备400上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器402可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件403可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器402或通过通信组件405发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口404为处理器401和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件405用于该电子设备400与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件405可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备400可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的报文转发方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,例如包括程序指令的存储器402,上述程序指令可由电子设备400的处理器401执行以完成上述的报文转发方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (10)
1.一种报文转发方法,其特征在于,预设虚拟防火墙的默认身份标识,且在会话表中保存本地发出的报文对应的虚拟防火墙的真实身份标识,所述会话表采用共享内存设计,所述方法包括:
如果所述本地发出的报文中未携带虚拟防火墙的真实身份标识,则从所述本地发出的报文中提取五元组后,利用所述五元组以及所述虚拟防火墙的默认身份标识,在哈希表中查找所述本地发出的报文对应的会话表;
如果在所述哈希表中查找到所述会话表,则访问所述会话表,获得所述本地发出的报文对应的虚拟防火墙的真实身份标识;
将所述本地发出的报文发送至用户态,以通过具有所述真实身份标识的虚拟防火墙对应的网卡,按照所述会话表中的转发策略发送所述本地发出的报文。
2.根据权利要求1所述的方法,其特征在于,所述将所述本地发出的报文发送至用户态,包括:
通过内核态的指定CPU将所述本地发出的报文发送至用户态的指定CPU,所述用户态的指定CPU用于将所述本地发出的报文转发至所述虚拟防火墙对应的网卡,使所述虚拟防火墙对应的网卡按照所述会话表中的转发策略发送所述本地发出的报文。
3.根据权利要求2所述的方法,其特征在于,所述内核态的CPU与所述用户态的CPU为一对一关系,确定所述内核态的指定CPU的方式为:
从本地到达的报文中提取五元组,所述本地到达的报文与所述本地发出的报文属于同一个会话;
基于接收端扩展RSS算法,利用所述本地到达的报文中提取的五元组,确定出所述用户态的指定CPU的身份标识;
基于所述一对一关系以及所述用户态的指定CPU的身份标识,确定出所述内核态的指定CPU的身份标识。
4.根据权利要求1至3任一项所述的方法,其特征在于,所述会话表中保存有路径最大传输单元PMTU的版本号以及PMTU值,所述方法还包括:
判断是否需要探测所述本地发出的报文的PMTU;
如果需要探测所述本地发出的报文的PMTU,则访问所述会话表和PMTU表,获取所述本地发出的报文在所述会话表中的PMTU的版本号、在所述PMTU表中的PMTU的版本号,并判断两个PMTU的版本号是否相同;
如果PMTU的版本号相同,则基于所述会话表中保存的PMTU值对所述本地发出的报文进行分片。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
如果PMTU的版本号不同,则获取所述本地发出的报文的新的PMTU值;
将所述新的PMTU值发送至用户态,由所述用户态更新所述本地发出的报文在所述会话表中的PMTU值,并同步所述本地发出的报文在所述会话表以及所述PMTU表中的PMTU的版本号。
6.一种报文转发装置,其特征在于,预设虚拟防火墙的默认身份标识,且在会话表中保存本地发出的报文对应的虚拟防火墙的真实身份标识,所述会话表采用共享内存设计,所述装置包括:
会话表查找模块,用于在所述本地发出的报文中未携带虚拟防火墙的真实身份标识时,从所述本地发出的报文中提取五元组后,利用所述五元组以及所述虚拟防火墙的默认身份标识,在哈希表中查找所述本地发出的报文对应的会话表;
身份标识获得模块,用于在所述哈希表中查找到所述会话表时,访问所述会话表,获得所述本地发出的报文对应的虚拟防火墙的真实身份标识;
报文发送模块,用于将所述本地发出的报文发送至用户态,以通过具有所述真实身份标识的虚拟防火墙对应的网卡,按照所述会话表中的转发策略发送所述本地发出的报文。
7.根据权利要求6所述的装置,其特征在于,所述会话表中保存有路径最大传输单元PMTU的版本号以及PMTU值,所述装置还包括:
PMTU探测判断模块,用于判断是否需要探测所述本地发出的报文的PMTU;
版本号判断模块,用于在需要探测所述本地发出的报文的PMTU时,访问所述会话表和PMTU表,获取所述本地发出的报文在所述会话表中的PMTU的版本号、在所述PMTU表中的PMTU的版本号,并判断两个PMTU的版本号是否相同;
报文分片模块,用于在PMTU的版本号相同时,基于所述会话表中保存的PMTU值对所述本地发出的报文进行分片。
8.根据权利要求7所述的装置,其特征在于,所述装置还包括:
PMTU值获取模块,用于在PMTU的版本号不同时,获取所述本地发出的报文的新的PMTU值;
PMTU值更新模块,用于将所述新的PMTU值发送至用户态,由所述用户态更新所述本地发出的报文在所述会话表中的PMTU值,并同步所述本地发出的报文在所述会话表以及所述PMTU表中的PMTU的版本号。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1至5任一项所述方法的步骤。
10.一种电子设备,其特征在于,包括:
权利要求9中所述的计算机可读存储介质;以及
一个或者多个处理器,用于执行所述计算机可读存储介质中的程序。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711067952.5A CN107888500B (zh) | 2017-11-03 | 2017-11-03 | 报文转发方法及装置、存储介质、电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201711067952.5A CN107888500B (zh) | 2017-11-03 | 2017-11-03 | 报文转发方法及装置、存储介质、电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107888500A true CN107888500A (zh) | 2018-04-06 |
CN107888500B CN107888500B (zh) | 2020-04-17 |
Family
ID=61778559
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201711067952.5A Active CN107888500B (zh) | 2017-11-03 | 2017-11-03 | 报文转发方法及装置、存储介质、电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107888500B (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595346A (zh) * | 2018-04-25 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种特征库文件管理方法和装置 |
CN109639534A (zh) * | 2019-01-11 | 2019-04-16 | 锐捷网络股份有限公司 | 一种测试网络传输性能的方法、装置及计算机存储介质 |
CN110098993A (zh) * | 2019-04-02 | 2019-08-06 | 视联动力信息技术股份有限公司 | 一种信令报文的处理方法和装置 |
CN110120956A (zh) * | 2019-05-28 | 2019-08-13 | 杭州迪普科技股份有限公司 | 基于虚拟防火墙的报文处理方法和装置 |
CN111181985A (zh) * | 2019-12-31 | 2020-05-19 | 奇安信科技集团股份有限公司 | 数据传输方法、数据传输系统、防火墙设备和存储介质 |
CN111371779A (zh) * | 2020-02-29 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 |
CN113839889A (zh) * | 2021-09-18 | 2021-12-24 | 深圳震有科技股份有限公司 | 一种报文处理方法、终端及计算机可读存储介质 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101656677A (zh) * | 2009-09-18 | 2010-02-24 | 杭州迪普科技有限公司 | 一种报文分流处理方法及装置 |
EP2357763A1 (en) * | 2008-11-29 | 2011-08-17 | Chengdu Huawei Symantec Technologies Co., Ltd. | Method, apparatus and system for crossing virtual firewall to transmit and receive data |
CN105100026A (zh) * | 2014-05-22 | 2015-11-25 | 杭州华三通信技术有限公司 | 一种报文安全转发方法及装置 |
CN105577628A (zh) * | 2014-11-11 | 2016-05-11 | 中兴通讯股份有限公司 | 实现虚拟防火墙的方法及装置 |
CN105634958A (zh) * | 2015-12-24 | 2016-06-01 | 东软集团股份有限公司 | 基于多核系统的报文转发方法和装置 |
CN105939356A (zh) * | 2016-06-13 | 2016-09-14 | 北京网康科技有限公司 | 一种虚拟防火墙划分方法和装置 |
-
2017
- 2017-11-03 CN CN201711067952.5A patent/CN107888500B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP2357763A1 (en) * | 2008-11-29 | 2011-08-17 | Chengdu Huawei Symantec Technologies Co., Ltd. | Method, apparatus and system for crossing virtual firewall to transmit and receive data |
CN101656677A (zh) * | 2009-09-18 | 2010-02-24 | 杭州迪普科技有限公司 | 一种报文分流处理方法及装置 |
CN105100026A (zh) * | 2014-05-22 | 2015-11-25 | 杭州华三通信技术有限公司 | 一种报文安全转发方法及装置 |
CN105577628A (zh) * | 2014-11-11 | 2016-05-11 | 中兴通讯股份有限公司 | 实现虚拟防火墙的方法及装置 |
CN105634958A (zh) * | 2015-12-24 | 2016-06-01 | 东软集团股份有限公司 | 基于多核系统的报文转发方法和装置 |
CN105939356A (zh) * | 2016-06-13 | 2016-09-14 | 北京网康科技有限公司 | 一种虚拟防火墙划分方法和装置 |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108595346B (zh) * | 2018-04-25 | 2020-12-04 | 新华三信息安全技术有限公司 | 一种特征库文件管理方法和装置 |
CN108595346A (zh) * | 2018-04-25 | 2018-09-28 | 新华三信息安全技术有限公司 | 一种特征库文件管理方法和装置 |
CN109639534A (zh) * | 2019-01-11 | 2019-04-16 | 锐捷网络股份有限公司 | 一种测试网络传输性能的方法、装置及计算机存储介质 |
CN109639534B (zh) * | 2019-01-11 | 2021-03-02 | 锐捷网络股份有限公司 | 一种测试网络传输性能的方法、装置及计算机存储介质 |
CN110098993A (zh) * | 2019-04-02 | 2019-08-06 | 视联动力信息技术股份有限公司 | 一种信令报文的处理方法和装置 |
CN110098993B (zh) * | 2019-04-02 | 2020-12-18 | 视联动力信息技术股份有限公司 | 一种信令报文的处理方法和装置 |
CN110120956A (zh) * | 2019-05-28 | 2019-08-13 | 杭州迪普科技股份有限公司 | 基于虚拟防火墙的报文处理方法和装置 |
CN110120956B (zh) * | 2019-05-28 | 2021-06-29 | 杭州迪普科技股份有限公司 | 基于虚拟防火墙的报文处理方法和装置 |
CN111181985A (zh) * | 2019-12-31 | 2020-05-19 | 奇安信科技集团股份有限公司 | 数据传输方法、数据传输系统、防火墙设备和存储介质 |
CN111371779A (zh) * | 2020-02-29 | 2020-07-03 | 苏州浪潮智能科技有限公司 | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 |
CN111371779B (zh) * | 2020-02-29 | 2022-05-10 | 苏州浪潮智能科技有限公司 | 一种基于dpdk虚拟化管理系统的防火墙及其实现方法 |
CN113839889A (zh) * | 2021-09-18 | 2021-12-24 | 深圳震有科技股份有限公司 | 一种报文处理方法、终端及计算机可读存储介质 |
CN113839889B (zh) * | 2021-09-18 | 2024-04-05 | 深圳震有科技股份有限公司 | 一种报文处理方法、终端及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN107888500B (zh) | 2020-04-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107888500A (zh) | 报文转发方法及装置、存储介质、电子设备 | |
US11902096B2 (en) | Collection of error packet information for network policy enforcement | |
US8065719B2 (en) | Method and apparatus for reducing firewall rules | |
CN103780430B (zh) | 监控网络设备的方法和装置 | |
US9832139B2 (en) | Method and system for accessing network service | |
CN107666473B (zh) | 一种攻击检测的方法及控制器 | |
CN102075537B (zh) | 一种实现虚拟机间数据传输的方法和系统 | |
CN112087415B (zh) | 基于应用路径的网络业务控制 | |
CN110311929A (zh) | 一种访问控制方法、装置及电子设备和存储介质 | |
US8817792B2 (en) | Data forwarding method, data processing method, system and relevant devices | |
CN108259425A (zh) | 攻击请求的确定方法、装置及服务器 | |
US10084679B2 (en) | Standalone network probing using available network connections | |
US20160277215A1 (en) | Data transfer method and system | |
CN108243192A (zh) | 应用访问网络的识别方法和系统 | |
US10237291B2 (en) | Session processing method and device, server and storage medium | |
CN116545921A (zh) | 基于ecmp的报文转发方法、装置、设备及存储介质 | |
CN109787900B (zh) | 传输方法、装置、设备和机器可读介质 | |
US9680739B2 (en) | Information transmission system, information communication apparatus, and information transmission apparatus | |
CN106302096B (zh) | 会话页面中实现地理位置展示的方法和系统 | |
KR101499666B1 (ko) | 네트워크 스캔 탐지 방법 및 장치 | |
CN113452663A (zh) | 基于应用特征的网络业务控制 | |
US9515864B2 (en) | Differentiated service behavior based on differentiated services code point (DSCP) bits | |
CN111106982B (zh) | 一种信息过滤方法、装置、电子设备及存储介质 | |
CA2752417C (en) | Data channel set up latency reduction | |
CN114374563A (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 |