CN116455837A - 一种报文处理方法及装置、设备、存储介质 - Google Patents
一种报文处理方法及装置、设备、存储介质 Download PDFInfo
- Publication number
- CN116455837A CN116455837A CN202310384050.3A CN202310384050A CN116455837A CN 116455837 A CN116455837 A CN 116455837A CN 202310384050 A CN202310384050 A CN 202310384050A CN 116455837 A CN116455837 A CN 116455837A
- Authority
- CN
- China
- Prior art keywords
- message
- processed
- flow table
- forwarding
- packet
- 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.)
- Pending
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 29
- 238000001514 detection method Methods 0.000 claims abstract description 199
- 238000012545 processing Methods 0.000 claims abstract description 87
- 238000000034 method Methods 0.000 claims abstract description 63
- 238000004806 packaging method and process Methods 0.000 claims abstract description 8
- 230000004044 response Effects 0.000 claims description 22
- 230000015654 memory Effects 0.000 claims description 11
- 238000005538 encapsulation Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 6
- 230000008569 process Effects 0.000 description 27
- 230000006870 function Effects 0.000 description 24
- 238000013507 mapping Methods 0.000 description 9
- 238000013519 translation Methods 0.000 description 9
- 230000009471 action Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 8
- 101150071927 AANAT gene Proteins 0.000 description 7
- 238000012423 maintenance Methods 0.000 description 7
- 238000006243 chemical reaction Methods 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 238000001914 filtration Methods 0.000 description 4
- 238000005516 engineering process Methods 0.000 description 3
- 239000000203 mixture Substances 0.000 description 3
- 238000013515 script Methods 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 239000000284 extract Substances 0.000 description 1
- 230000004927 fusion Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000002360 preparation method Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/70—Virtual switches
-
- 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L49/00—Packet switching elements
- H04L49/30—Peripheral units, e.g. input or output ports
- H04L49/3009—Header conversion, routing tables or routing tags
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/22—Parsing or analysis of headers
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2212/00—Encapsulation of packets
Landscapes
- Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Security & Cryptography (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
本申请提供了一种报文处理方法及装置、设备、存储介质,方法包括,确定出接收的第一待处理报文对应的状态检测结果;状态检测结果用于表征接收第一待处理报文的次数;基于状态检测结果对第一待处理报文进行封装处理,得到第一报文,并将第一报文发送至安全检测节点;接收安全检测节点反馈的第二报文;第二报文是安全检测节点对第一报文安全检测后的报文;基于第一预设流表对第二报文进行转发处理,第一预设流表是基于首包报文而查找的,第一预设流表包含第一待处理报文的转发规则。这样,本申请实施例通过对转发处理和安全检测的解耦,可以提高报文处理的可靠性。
Description
技术领域
本申请涉及安全检测技术领域,尤其涉及一种报文处理方法及装置、设备、存储介质。
背景技术
超融合设备环境中,目前使用虚拟交换机(open vSwitch,ovs)作为数据面,对于虚拟路由器上可以通过流表来实现流量防护功能和流量转发的功能。在相关技术中,使用ovs流表来实现上述功能时,用户的一条配置往往需要被拆分成多条openflow流表来下发到ovs上,这会导致通过ovs实现流量防护功能和流量转发功能的运维难度较大;并且在实现流量防护的过程中,匹配域的可扩展性依赖于ovs的实现,新增扩展域(比如要匹配某个中央处理器上转发的流量)后需要替换ovs数据面,势必导致流量中断,进而导致报文处理可靠性差。
发明内容
本申请主要提供一种报文处理方法及装置、设备、存储介质,能够提高报文处理的可靠性。
本申请实施例的技术方案是这样实现的:
本申请实施例提供了一种报文处理方法,所述方法应用于转发节点;所述方法包括:
确定出接收的第一待处理报文对应的状态检测结果;所述状态检测结果用于表征接收所述第一待处理报文的次数;
基于所述状态检测结果对所述第一待处理报文进行封装处理,得到第一报文,并将所述第一报文发送至安全检测节点;
接收所述安全检测节点反馈的第二报文;所述第二报文是所述安全检测节点对所述第一报文安全检测后的报文;
基于第一预设流表对所述第二报文进行转发处理,所述第一预设流表是基于首包报文而查找的,所述第一预设流表包含所述第一待处理报文的转发规则。
本申请实施例还提供了一种报文处理装置,所述装置应用于转发节点;所述装置包括:
确定单元,用于确定出接收的第一待处理报文对应的状态检测结果;所述状态检测结果用于表征接收所述第一待处理报文的次数;
封装单元,用于基于所述状态检测结果对所述第一待处理报文进行封装处理,得到第一报文,并将所述第一报文发送至安全检测节点;
接收单元,用于接收所述安全检测节点反馈的第二报文;所述第二报文是所述安全检测节点对所述第一报文安全检测后的报文;
转发单元,用于基于第一预设流表对所述第二报文进行转发处理,所述第一预设流表是基于首包报文而查找的,所述第一预设流表包含所述待处理报文的转发规则。
本申请实施例还提供了一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述方法中的步骤。
本申请实施例还提供了一种存储介质,所述存储介质上存储有可执行指令,该可执行指令被处理器执行时实现上述的方法步骤。
本申请实施例在接收第一待处理报文之后,确定与第一待处理报文对应的用于表征第一待处理报文是否为首包报文的状态检测结果,基于状态检测结果对第一待处理报文进行封装处理,得到第一报文,并将第一报文发送至安全检测节点;接收安全检测节点反馈的第二报文;基于包含第一待处理报文的转发规则的第一预设流表对第二报文进行转发处理。这样,本申请实施例将转发处理和安全检测处理解耦,通过转发节点实现对报文的转发处理,通过安全检测节点实现对报文的安全检测处理,降低了流量防护功能和流量转发功能的运维难度,并且本申请实施例通过安全检测节点实现对报文的安全检测处理,如此便不需要新增扩展域后替换ovs数据面,即可以避免相关技术中通过ovs实现流量防护功能而造成的流量中断,提高了报文处理的可靠性。
附图说明
图1为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图2为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图3为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图4为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图5为本申请实施例提供的第一报文的结构示意图;
图6为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图7为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图8为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图9为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图10为本申请实施例中报文的处理过程示意图;
图11为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图12为本申请实施例中重传报文的处理过程示意图;
图13为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图14为本申请实施例提供的报文处理方法的一个可选的流程示意图;
图15为本申请实施例中后续报文的处理过程示意图;
图16为本申请实施例提供的报文处理装置的组成结构示意图;
图17为本申请实施例提供的报文处理设备的组成结构示意图。
具体实施方式
下面结合附图和具体实施例对本申请的技术方案进一步详细阐述。
为了使本技术领域的人员更好地理解本公开实施例方案,下面将结合本公开实施例中的附图,对本公开实施例中的技术方案进行清楚地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。
本申请的说明书实施例和权利要求书及上述附图中的术语“第一”、“第二”、和“第三”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元。方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
相关技术中,通常使用ovs来实现访问控制列表(AccessControlLists,ACL)功能时,需要将用户的配置拆分成多条openflow流表来下发到ovs上,这会导致通过ovs实现流量防护功能和流量转发功能的运维难度较大;而且在进行匹配域的扩展时,需要修改ovs用户态进程,来增加匹配域,同时需要修改ovs内核模块以便内核模块能够先对新增加的匹配域对应的字段进行解析,再根据解析的新字段与新的匹配域进行比较;这个过程需要将老的内核模块卸载,卸载后再重新加载新的内核模块,这中间就会导致流量的中断,从而导致报文处理可靠性差。
为了解决上述技术问题,本申请实施例提供一种报文处理方法,该方法可以应用至转发节点,在一些实施例中,该转发节点可以是ovs,在转发节点接收到发送服务器发送的报文的情况下,转发节点可以确定报文的状态检测结果,根据状态检测结果,将报文发送至安全检测节点,以使安全检测节点对报文进行安全检测,然后安全检测节点将安全检测后的报文发送至转发节点,转发节点可以根据在自身查找到的转发规则,将安全检测后的报文发送至目标服务器。这样,本申请实施例将转发处理和安全检测处理解耦,通过转发节点实现对报文的转发处理,通过安全检测节点实现对报文的安全检测处理。这样可以避免ovs为实现ACL功能而导致的流量的中断,提高了报文处理的可靠性。
图1为本申请实施例的一种报文处理方法的流程图,如图1所示,该流程可以包括:
S101、确定出接收的第一待处理报文对应的状态检测结果;所述状态检测结果用于表征接收所述第一待处理报文的次数。
本申请实施例中,转发节点可以根据接收的第一待处理报文确定对应的状态检测结果。该状态检测结果用于表征第一待处理报文的接收次数。例如,当第一待处理报文是转发节点首次接收的报文时,可以将该报文作为首包报文,当该报文是转发节点再次或多次接收的报文时,可以将该报文作为非首包报文。
在一些实施例中,转发节点可以根据第一待处理报文对应的转发规则的存在情况确定状态检测结果。
S102、基于所述状态检测结果对所述第一待处理报文进行封装处理,得到第一报文,并将所述第一报文发送至安全检测节点。
本申请实施例中,转发节点可以在状态检测结果表征第一待处理报文为首包报文或者重发报文的情况下,对第一待处理报文进行封装处理,得到第一报文,并将第一报文发送至安全检测节点,以使得安全检测节点对第一报文进行安全检测。其中,重发报文表征第一待处理报文是首包报文的重发报文。
在实际应用中,当转发节点确定第一待处理报文的状态检测结果时,可以确定该第一待处理报文的类型,例如第一待处理报文是首包报文,或者是首包报文的重发报文时,确定该第一待处理报文是首次向目标服务器发送的报文,需要对第一待处理报文进行安全检测,即对第一待处理报文进行封装处理,并将封装处理后的第一待处理报文发送至安全检测节点。这里,首包报文的重发报文是指,发送服务器因首包报文未被转发节点发送出去,而再次发送的与首包报文相同的报文,因为首包报文未被转发节点发送出去,所以需要再次进行安全检测。
在一些实施例中,转发节点可以基于状态检测结果,通过第一待处理报文对应的转发规则对第一待处理报文进行封装处理。这里,转发规则是指基于第一待处理报文在转发节点中而查找到的,用于规定第一待处理报文如何转发的信息,例如:入/出接口标识、路由器标识以及下位设备标识等。
在一些实施例中,安全检测节点接收第一报文之后,对第一报文进行解析处理,得到报头信息以及五元组信息;根据报头信息以及五元组信息,对第一报文进行安全检测得到检测结果;该安全检测结果用于表征第一报文是否正常;在安全检测结果表征所述第一报文正常的情况下,得到第二报文并将第二报文发送至转发节点;该第二报文是所述安全检测节点对所述第一报文安全检测后的报文。
S103、接收所述安全检测节点反馈的第二报文;所述第二报文是所述安全检测节点对所述第一报文安全检测后的报文。
本申请实施例中,转发节点可以在向安全检测节点发送第一报文之后,接收安全检测节点反馈的第二报文。这里,第二报文是安全检测节点对第一报文安全检测后而得到的报文。
这里,安全检测节点可以是可扩展的伯克利包过滤器(Extended BerkeleyPacket Filter,eBPF)。这样,本申请实施例可以通过与转发节点不同的安全检测节点来进行安全检测,如此便不需要新增扩展域后替换ovs数据面,即可以避免相关技术中通过ovs实现流量防护功能而造成的流量中断,提高了报文处理的可靠性。
在其他实施例中,该安全检测节点也可以是云防火墙。这样,本申请将转发处理和安全检测处理解耦,可以随时更换不同的安全检测节点,采用不同方式的安全检测方法对待处理报文进行安全检测。
在一些实施例中,对第一报文进行安全检测可以包括:安全检测节点根据第一报文,确定对应的转发规则以及五元组信息;根据转发规则以及五元组信息确定第一报文是否丢弃,在不丢弃第一报文的情况下,将第一报文发送至转发节点。也就是说,在安全检测节点不丢弃第一报文的情况下,第一报文与第二报文是同一报文。
S104、基于第一预设流表对所述第二报文进行转发处理,所述第一预设流表是基于首包报文而查找的,所述第一预设流表包含所述第一待处理报文的转发规则。
本申请实施例中,转发节点可以基于第一预设流表对第二报文进行转发处理。其中,第一预设流表是转发节点基于首包报文而查找的,包含第一待处理报文的转发规则的预设流表。
在一些实施例中,转发节点可以对第二报文进行解封处理,得到第一头部信息,根据第一头部信息在源地址数据集合中查找到源地址表项及源端口表项,根据第一头部信息、源地址表项及源端口表项对第二报文进行转发处理。其中,源地址数据集合是转发节点基于待处理报文而查找出的。该源地址数据集合是用户预先在转发节点中配置的报文转发规则,转发节点可以基于待处理报文查找到源地址数据集合。
如此,本申请实施例中的转发节点确定接收的第一待处理报文对应的用于表征第一待处理报文是否为首包报文的状态检测结果,基于状态检测结果对第一待处理报文进行封装处理,得到第一报文,并将第一报文发送至安全检测节点;接收安全检测节点反馈的第二报文;基于包含第一待处理报文的转发规则的第一预设流表对第二报文进行转发处理。这样,本申请实施例将转发处理和安全检测处理解耦,通过转发节点实现对报文的转发处理,通过安全检测节点实现对报文的安全检测处理,降低了流量防护功能和流量转发功能的运维难度,并且本申请实施例通过安全检测节点实现对报文的安全检测处理,避免了相关技术中通过ovs实现流量防护功能而造成的流量中断,提高了报文处理的可靠性。
在一些实施例中,上述S101还可以通过S105或S106实现。
S105、在基于所述第一待处理报文的第一头部字段未查找到所述第一预设流表的情况下,确定出表征所述第一待处理报文为所述首包报文的所述状态检测结果。
本申请实施例中,在基于第一待处理报文的第一头部字段未查找到第一预设流表的情况下,转发节点可以确定第一待处理报文为首包报文。
这里,第一头部字段可以包括以下至少之一:以太头、网际互连协议(InternetProtocol,IP)头、用户数据报协议(User Datagram Protocol,UDP)头、在传输层工作的传输控制协议(Transmission Control Protocol,TCP)头等报文头信息。
在一些实施例中,转发节点中包含有用户针对多个待处理报文而配置的多个预设流表,该预设流表中包含有对应的待处理报文的头部字段,基于此,S105中基于第一待处理报文的第一头部字段查找第一预设流表可以包括:将第一待处理报文的第一头部字段,与多个预设流表中的每一预设流表所包含的头部字段进行匹配,在确定每一预设流表中存在头部字段与第一头部字段匹配的预设流表的情况下,将该预设流表确定为第一待处理报文对应的第一预设流表。
S106、在基于所述第一待处理报文的第一头部字段查找到所述第一预设流表,且在所述第一预设流表中查找对应的连接跟踪表项的会话状态为第一状态的情况下,确定出表征所述第一待处理报文为重发报文的所述状态检测结果。
本申请实施例中,在基于所述第一待处理报文的第一头部字段查找到所述第一预设流表,且在所述第一预设流表中查找对应的连接跟踪表项的会话状态为第一状态的情况下,转发节点可以确定第一待处理报文为首包报文。该第一状态可以表征发送服务器与目标服务器处于首次会话状态。在一些实施例中,第一状态可以用new表示。
如此,本申请实施例根据第一待处理报文的第一头部字段,确定第一待处理报文为首包报文或者首包报文对应的重发报文的情况下,将封装后的第一待处理报文发送至安全检测节点,以进行安全检测。这样,首包报文对应的后续报文等其他类型的报文便不需要进行安全检测,简化了报文处理的流程,提高了转发报文的效率。
在一些实施例中,参见图2,图2是本申请实施例提供的报文处理方法的一个可选的流程示意图,上述S105之后,S102之前,还包括S107,将结合各步骤进行说明。
S107、在所述第一待处理报文的入接口标识非安全检测节点接口的情况下,在多个第一预设数据集合中的各所述第一预设数据集合查找对应的多个第一流表项,进而得到多个所述第一流表项。
本申请实施例中,在第一待处理报文的入接口标识非安全检测节点接口的情况下,转发节点可以在每第一预设数据集合中查找到对应的第一流表项,进而得到多个第一流表项。这里,第一流表项包括第一待处理报文的转发规则,上述第一预设流表可以包括多个第一流表项。也就是说,第一流表项可以是第一预设流表中的部分转发规则或者全部转发规则。
在一些实施例中,S107中确定第一待处理报文的入接口标识非安全检测节点接口,可以包括:基于入接口标识在接口分类流表中确定接口判断结果;该接口判断结果用于表征第一待处理报文的入接口标识是否为安全检测节点接口。这里,接口分类流表中含有安全检测节点接口与对应的接口标识的映射关系,转发节点可以根据第一待处理报文的入接口标识以及映射关系确定接口判断结果。例如,安全检测节点接口的接口标识为10,在第一待处理报文的入接口标不为10的情况下,可以确定第一待处理报文的入接口标识非安全检测节点接口。
这样,本申请实施例在确定第一待处理报文的入接口标识非安全检测节点接口时,说明第一待处理报文并非是安全检测节点发送的,即第一待处理报文并没有进行过安全检测,所以需要对第一待处理报文进行安全检测,进而需要在多个第一预设数据集合中查找多个第一流表项,以为之后的安全检测以及转发处理做好预先准备。
在一些实施例中,上述多个第一预设数据集合包括:目的地址数据集合、路由数据集合以及访问控制数据集合;所述第一流表项包括:目的地址表项、目的端口表项、接口标识、下位设备标识以及连接跟踪表项。
上述S107通过S108至S110实现:
S108、在所述目的地址数据集合中查找到所述目的地址表项及所述目的端口表项。
本申请实施例中,转发节点在确定第一待处理报文的入接口标识非安全检测节点接口的情况下,在目的地址数据集合中查找到第一待处理报文对应的目的地址表项及目的端口表项。在一些实施例中,目的地址数据集合可以是目标地址转换(DestinationNetwork Address Translation,DNAT)表,该集合中包含第一待处理报文所需要转换的目的地址以及目的端口。
在一些实施例中,S108可以包括:根据第一待处理报文的第一头部字段,在目的地址数据集合中查找到与第一头部字段匹配的目的地址表项及目的端口表项。
S109、在所述路由数据集合中查找到所述出接口标识及所述下位设备标识。
本申请实施例中,转发节点在查找目的地址数据集合之后,在所述路由数据集合中查找到第一待处理报文对应的所述出接口标识及所述下位设备标识。
在一些实施例中,路由数据集合可以是路由(ROUTE)表。
在一些实施例中,转发节点在确定第一待处理报文的入接口标识非安全检测节点接口的情况下,可根据第一待处理报文的入接口标识,给第一待处理报文的入接口配置对应的路由器标识。因为不同入接口可能连接不同的路由器,因此在路由器建立时,会给每个路由器一个id值(比如1/2/3等),当有入接口连接在某个路由器上时,需要将入接口标识和路由器标识做一个映射(比如接口1对应路由器id10;接口2也连接的路由器10,则接口2也对应路由器id10),然后将入接口标识和路由器标识的映射保存至转发节点的寄存器中,例如可以使用reg0或者reg1来标记当前报文进入哪个虚拟路由器中。
在转发节点为第一待处理报文的入接口配置对应的路由器标识之后,S109可以包括:根据与第一待处理报文的入接口对应的路由器标识,在路由数据集合中查找到出接口标识及下位设备标识。在一些实施例中,路由数据集合中包含有不同的路由器标识对应的不同的路由规则,转发节点可以根据路由器标识在路由数据集合中确定出对应的路由规则(即出接口标识及下位设备标识)。
S110,在所述访问控制数据集合中未查到与所述第一待处理报文对应的所述连接跟踪表项的情况下,构建所述连接跟踪表项并将所述连接跟踪表项的会话状态设置为第一状态。
本申请实施例中,转发节点在查找路由数据集合之后,可以访问控制数据集合中查找对应的第一待处理报文对应的连接跟踪表项,因为此时该第一待处理报文为首包报文,即发送服务器与目标服务器第一次进行会话,所以访问控制数据集合并没有该第一待处理报文对应的连接跟踪表项,也就无法在访问控制数据集合中查到与第一待处理报文对应的连接跟踪表项,此时转发节点需要在访问控制数据集合中构建一个新的第一待处理报文对应的连接跟踪表项,然后将该连接跟踪表项的会话状态设置为第一状态。
在一些实施例中,转发节点确定连接跟踪表项的会话状态为第一状态时,确定对第一待处理报文进行封装处理时,需要进行第一头部信息的封装以及第二头部信息的封装。在一些实施例中,第一头部信息可以是网络服务头(Network Service Header,NSH),第二头部信息可以是以太头,其中,封装第一头部信息以及第二头部信息的具体方案将在下文中详细论述。
在一些实施例中,转发节点可以根据第一待处理报文的路由器标识在访问控制数据集合中查找对应的连接跟踪表项。
这样,本申请实施例在确定第一待处理报文的入接口标识非安全检测节点接口时,确定第一待处理报文需要进行安全检测,分别通过目的地址数据集合、路由数据集合以及访问控制数据集合,查找到目的地址表项、目的端口表项、接口标识、下位设备标识和连接跟踪表项,为之后的安全检测以及转发处理做好了预先准备。
在一些实施例中,参见图3,图3是本申请实施例提供的报文处理方法的一个可选的流程示意图,在确定第一待处理报文为首包报文的情况下,在图2示出的S104之前,S103之后,还包括S111至S113,将结合各步骤进行说明。
S111、对所述第二报文解封装,得到所述入接口标识、所述路由器标识、所述出接口标识及所述下位设备标识。
本申请实施例中,转发节点可以对安全检测节点发送的第二报文进行解封装,得到入接口标识、路由器标识、出接口标识及下位设备标识。
在一些实施例中,在转发节点为OVS的情况下,转发节点包括内核模块以及用户态进程,S111可以包括:在基于第二报文的头部字段在内核模块未查找到第一预设流表的情况下,在用户态进程中查找到第一预设流表;基于第一预设流表所包括的接口分类流表,确定第二报文的入接口是否为安全检测接口,以及第二报文是否包括第一头部信息;在第二报文的入接口为安全检测接口且第二报文是包括第一头部信息的情况下,对安全检测节点发送的第二报文的第一头部信息进行解封装,得到入接口标识、路由器标识、出接口标识及下位设备标识。在一些实施例中,可以将基于解封装而得到的入接口标识、路由器标识、出接口标识及下位设备标识存储到OVS的寄存器中,以便后续查找源地址数据集合使用。
S112、基于所述入接口标识、所述路由器标识、所述出接口标识及所述下位设备标识,在源地址数据集合中查找到源地址表项及源端口表项。
本申请实施例中,转发节点基于入接口标识、所述路由器标识、所述出接口标识及下位设备标识,在源地址数据集合中查找到源地址表项及源端口表项。在一些实施例中,该源地址数据集合可以是源地址转换(Source Network Address Translation,Snat)表。
在一些实施例中,源地址数据集合中包括源地址表项、源端口表项与入接口标识、路由器标识、出接口标识、下位设备标识的映射关系,转发节点可以根据入接口标识、路由器标识、出接口标识、下位设备标识以及上述映射关系,确定源地址表项及源端口表项。
S113、将所述源地址端口表项、所述源端口表项、所述目的地址表项、目的端口表项、所述出接口标识及所述下位设备标识组合得到所述第一预设流表。
本申请实施例中,转发节点可以将源地址端口表项、源端口表项、目的地址表项、目的端口表项、出接口标识及下位设备标识组合得到第一预设流表,也就是说,源地址端口表项、源端口表项、目的地址表项、目的端口表项、出接口标识及下位设备标识是第一预设流表中的关于待处理报文的转发规则。
这样,本申请实施例可以先对第二报文解封,得到入接口标识、路由器标识、出接口标识及下位设备标识,然后根据入接口标识、路由器标识、出接口标识及下位设备标识,在源地址数据集合中查找到源地址表项及源端口表项,最后将源地址端口表项、源端口表项、目的地址表项、目的端口表项、出接口标识及下位设备标识组合得到第一预设流表。如此,通过组合得到的第一预设流表对第二报文进行转发,可以提高转发报文的准确性。
在一些实施例中,上述“基于第一预设流表对所述第二报文进行转发处理”可以包括:将所述源地址端口表项、所述源端口表项、所述目的地址表项、所述目的端口表项、所述出接口标识及所述下位设备标识添加至所述第二报文中;对添加后的所述第二报文进行转发处理。
本申请实施例中,转发节点可以将查找到的源地址端口表项、源端口表项、目的地址表项、目的端口表项、出接口标识及下位设备标识添加至第二报文中,然后转发节点对添加后的所述第二报文进行转发处理。
在一些实施例中,参见图4,图4是本申请实施例提供的报文处理方法的一个可选的流程示意图,在图2示出的S102还可以通过S114至S115实现,将结合各步骤进行说明。
S114、在所述状态检测结果表征所述第一待处理报文为所述首包报文或者所述重发报文的情况下,将所述入接口标识、所述路由器标识、所述出接口标识及所述下位设备标识封装至所述第一待处理报文的第一头部信息;所述路由器标识是基于所述入接口标识确定的。
本申请实施例中,第一待处理报文携带有入接口标识,转发节点在查找到入接口标识、路由器标识、出接口标识,下位设备标识,以及确定连接跟踪表项的会话状态为第一状态时,确定需要对第一待处理报文封装第一头部信息,即将入接口标识、路由器标识、出接口标识及下位设备标识封装至第一待处理报文的第一头部信息中。
在一些实施例中,可以将第一头部信息中的元数据域(Context Header)的格式(md type)设为0x1,用于表示元数据域为固定长度16字节,将Next protocol设为0x3,用于表示nsh头下封装的原始报文为Ethernet报文。然后将入接口标识、路由器标识、出接口标识及下位设备标识封装到NSH头的Context Header中。
S115、将所述第一待处理报文的第二头部信息中的物理地址信息设置为预定地址,得到所述第一报文,并将所述第一报文发送至安全检测节点。
本申请实施例中,转发节点封装第一头部信息之后,需要将第一待处理报文的第二头部信息中的物理地址信息设置为预定地址,这样,对第一待处理报文封装第一头部信息以及第二头部信息,则可以得到第一报文,然后将第一报文发送至安全检测节点,以进行安全检测。第一报文的具体结构如图5所示,最内层为第一待处理报文的原始报文,中间层为第一头部信息,最外层为第二头部信息。
在一些实施例中,物理地址信息包括源物理地址信息和目的物理地址信息,示例性的,可以将源物理地址信息和目的物理地址信息分别设置为00:EE:EE:EE:EE:EE以及00:EE:EE:EE:EE:FF。
如此,本申请实施例将入接口标识、路由器标识、出接口标识及下位设备标识封装至第一待处理报文的第一头部信息;路由器标识是基于入接口标识确定的;将第一待处理报文的第二头部信息中的物理地址信息设置为预定地址,得到第一报文。这样,本申请实施例采用第一头部信息对待处理报文进行封装,可以进行不同路由器配置的隔离,且报文过滤后仍然能够知道第一待处理报文原始的信息(即入接口标识、路由器标识、出接口标识及下位设备标识)。
在一些实施例中,参见图6,图6是本申请实施例提供的报文处理方法的一个可选的流程示意图,在图1示出的S104之后还包括S116至S119,将结合各步骤进行说明。
S116、接收第二待处理报文。
本申请实施例中,转发节点可以接收发送服务器发送的第二待处理报文。
S117、在基于所述第二待处理报文的第二头部字段未查找到对应的第二预设流表,且所述第二待处理报文的入接口标识非所述安全检测节点接口的情况下,在多个第二预设数据集合中的各所述第二预设数据集合查找对应的多个第二流表项,进而得到多个所述第二流表项;所述第二预设流表由多个所述第二流表项组成。
本申请实施例中,转发节点在基于第二待处理报文的第二头部字段未查找到对应的第二预设流表,且第二待处理报文的入接口标识非安全检测节点接口时,需要在多个第二预设数据集合中查找到多个第二流表项。这里,第二头部字段可以是以太头、IP头、UDP头以及TCP头等报文头部信息。
在一些实施例中,转发节点基于第二待处理报文的第二头部字段查找对应的第二预设流表的方式可以与上述转发节点基于第一待处理报文的第一头部字段查找第一预设流表的方式相同。
在一些实施例中,在转发节点为OVS的情况下,转发节点包括内核模块以及用户态进程,当转发节点在内核模块未查找到第二预设流表的情况下,需要将第二待处理报文发送至用户态进程,在用户态进程中查找对应的多个第二预设数据集合,然后在多个第二预设数据集合中查找到多个第二流表项。
在一些实施例中,多个第二预设数据集合包括:目的地址数据集合、路由数据集合以及访问控制数据集合;多个第二流表项包括:第二目的地址表项、第二目的端口表项、第二出接口标识、第二下位设备标识、第二连接跟踪表项、第二源地址表项以及第二源端口表项;S117中的“在多个第二预设数据集合中的各所述第二预设数据集合查找对应的多个第二流表项”可通过S120至S123实现:
S120、在所述目的地址数据集合中查找到第二目的地址表项及第二目的端口表项。
本申请实施例中,转发节点可以根据第二待处理报文的第二头部字段,在目的地址数据集合中查找到与第二头部字段匹配的第二目的地址表项及第二目的端口表项。
S121、在所述路由数据集合中查找到第二出接口标识及第二下位设备标识。
本申请实施例中,转发节点在确定第二待处理报文的入接口标识非安全检测节点接口的情况下,可根据第二待处理报文的第二入接口标识,给第二待处理报文的入接口配置对应的第二路由器标识,然后根据该第二路由器标识在路由数据集合中查找到第二出接口标识及第二下位设备标识。
S122、基于所述第二待处理报文的第二头部字段在所述访问控制数据集合中查找对应的第二连接跟踪表项,并将所述第二连接跟踪表项的会话状态更新为第二状态;所述第二状态用于表征所述第二待处理报文为所述首包报文对应的回应报文。
本申请实施例中,转发节点可以将第二待处理报文的第二头部字段提取处理,然后对的第二头部字段进行反转处理,然后根据反转处理后的第二头部字段在访问控制数据集合中查找对应的连接跟踪表项,因为此时查找到的是首包报文的连接跟踪表项,所以需要将连接跟踪表项的会话状态从第一状态更新为第二状态。在一些实施例中,第二状态可以通过“rep”表示。
本申请实施例中,转发节点在根据第二头部字段在访问控制数据集合中未查到对应的所述连接跟踪表项时,此时第二待处理报文可能是首包报文也可能是首包报文对应的回应报文。为了进一步地确定第二待处理报文的类型,可以将第二待处理报文的第二头部字段进行反转处理,即将第二待处理报文的第二头部字段中的源地址信息以及源端口信息,分别作为目的地址信息以及目的端口信息,以及将第二待处理报文的第一头部字段中的目的地址信息以及目的端口信息,分别作为源地址信息以及源端口信息。如果转发节点可以根据第二待处理报文变化后的源地址信息、源端口信息、目的地址信息以及目的端口信息在所述访问控制数据集合中查找对应的连接跟踪表项,说明第二待处理报文是首包报文对应的回应报文,即将第二待处理报文对应的连接跟踪表项的会话状态更新为第二状态。
S123、在源地址数据集合中查找到第二源地址表项及第二源端口表项。
本申请实施例中,当转发节点确定第二待处理报文是首包报文对应的回应报文时,可以确定不需要对该第二待处理报文进行安全检测,可以直接进行源地址数据集合的查找,得到第二源地址表项及第二源端口表项。
S118、将所述多个第二流表项添加至所述第二待处理报文中。
本申请实施例中,转发节点可以将第二待处理报文对应的第二源地址端口表项、第二源端口表项、第二目的地址表项、第二目的端口表项、第二出接口标识及第二下位设备标识添加至第二待处理报文中。
S119、对添加后的所述第二待处理报文进行转发处理。
本申请实施例中,转发节点可以对添加后的第二待处理报文进行转发处理。
这样,本申请实施例基于第二待处理报文的第二头部字段,在访问控制数据集合中确定第二待处理报文为首发报文对应的回应报文之后,因为首发报文已经在安全检测节点中进行了安全检测,所以对应的回应报文便无需再次进行安全检测,可以直接基于多个第二流表项对第二待处理报文进行转发处理。如此,本申请实施例在不降低安全风险的基础上,可以简化报文的处理流程,提高了转发报文的效率。
在一些实施例中,参见图7,图7是本申请实施例提供的报文处理方法的一个可选的流程示意图,在图6示出的S119之后还包括S124至S126,将结合各步骤进行说明。
S124、接收第三待处理报文。
S125、基于所述第三待处理报文查找到对应的第三预设流表;所述第三预设流表属于所述第一预设流表和所述第二预设流表中的一个。
本申请实施例中,转发节点可以基于第三待处理报文的头部字段查找到对应的第三预设流表。
在一些实施例中,在转发节点在访问控制数据集合中查找到对应的连接跟踪表项,且所述连接跟踪表项的会话状态为第二状态的情况下,可以说明第三待处理报文可能是首包报文或重发报文的后续报文,也可能是回应报文的后续报文。所以,转发节点查询到的第三预设流表属于第一预设流表和第二预设流表中的一个。
S126、基于所述第三预设流表对所述第三待处理报文进行转发处理。
本申请实施例中,转发节点可以将第三预设流表中的流表项添加至第三待处理报文中,然后对添加后的第三待处理报文进行转发处理。
这样,本申请实施例基于第三待处理报文的头部字段,在访问控制数据集合中确定第三待处理报文为后续报文之后,因为首发报文已经在安全检测节点中进行了安全检测,所以后续报文也无需再次进行安全检测,可以直接基于多个第三流表项对第三待处理报文进行转发处理。如此,本申请实施例在不降低安全风险的基础上,可以简化报文的处理流程,提高了转发报文的效率。
本申请实施例还提供一种报文处理方法,该方法应用至安全检测节点,参见图8,图8是本申请实施例提供的报文处理方法的一个可选的流程示意图,如图8所示,该流程可以包括:
S201、接收第一报文。
S202、对所述第一报文进行解析处理,得到报头信息以及五元组信息。
本申请实施例中,安全检测节点可以在接收到第一报文之后,对第一报文进行解析处理,得到第一报文对应的报头信息以及五元组信息。
在一些实施例中,安全检测节点可以对第一报文的第一报头信息进行解析处理,得到报头信息,以及对第一报文的内层报文进行解析处理,得到对应的五元组信息。其中,报头信息可以包括路由器标识、入接口标识以及出接口标识。
S203、根据所述报头信息以及所述五元组信息,对所述第一报文进行安全检测得到安全检测结果;所述安全检测结果用于表征所述第一报文是否正常。
本申请实施例中,安全检测节点可以基于解析处理得到的报头信息以及五元组信息,对第一报文进行安全检测得到检测结果。
在一些实施例中,安全检测节点中包含有不同报头信息、五元组信息与安全检测策略的映射关系,例如:安全检测策略可以包括报文异常,丢弃报文或者报文正常,保留报文。所以,S203可以包括:根据报头信息以及五元组信息在上述映射关系中确定第一报文的安全检测策略;根据所述安全检测策略,确定第一报文的安全检测结果。
S204、在所述检测结果表征所述第一报文正常的情况下,得到第二报文并将所述第二报文发送至转发节点;所述第二报文是所述安全检测节点对所述第一报文安全检测后的报文。
本申请实施例中,安全检测节点确定第一报文正常的情况下,可以将第一报文作为第二报文发送至转发节点。
这样,本申请实施例通过安全检测节点可以实现对报文的安全检测。这样,本申请实施例将转发处理和安全检测处理解耦出来,不仅可以降低流量防护功能和流量转发功能的运维难度,而且将安全检测节点解耦出来,也更容易的根据需求更换不同类型的节点,以实现通过不同方式对报文进行安全检测。
在一些实施例中,参见图9,图9为本申请实施例提供的报文处理方法的一个可选的流程示意图,本申请实施例是针对初始方向为首包的处理流程。将结合各步骤进行说明。
S301、基于首包在内核模块中查找对应的内核态流表。
如附图10所示,当首包进入到OVS时,需要先在OVS的内核模块(OVS dp)中查找对应的内核态流表(对应上述实施例中的第一预设流表)。
S302、在没有查找到对应的内核态流表的情况下,将报文发送至用户态进程。
由于报文是首包还没有建立内核态流表,所以查找不到,因此被上送到ovs用户态进程,进行虚拟路由器用户态流表查找。
在一些实施例中,查找用户态流表的方案可以是:根据提取的报文中字段与配置的用户态流表进行循环匹配,根据优先级进行报文字段的匹配,从而查找到对应的用户态流表。
S303、依次进行流量分类表、目标地址转换表、路由表以及访问控制列表的查找动作。
本申请实施例中,OVS先进行流量分类(flow classify)表处理,该表基于接口进行分类,因为每个内核接口都存在一个入接口id(对应上述实施例中的入接口标识),根据入接口id来区分;比如先获取ebpf接口id(10),后续判断入接口id是否为10,如果入接口id为10,则说明是ebpf接口;如果入接口id不是10,则说明当前接口为非ebpf接口。
如果报文入接口不是ebpf接口,则走虚拟路由器流表查找过程,根据不同的接口对报文标记不同的虚拟路由器i,不同接口可能连接不同的路由器,因此在路由器建立时,会给每个路由器一个id值(比如1/2/3等)。当有接口连接在某个路由器上时,需要将接口和路由器id(对应上述实施例中的路由器标识)做一个映射(比如接口1对应路由器id 10;接口2也连接的路由器10,则接口2也对应路由器id10),然后使用ovs的寄存器来保存路由器id,由于ovs中,每个包都有一份寄存器,可以使用reg0或者reg1来标记当前报文进入哪个虚拟路由器中,后续进行路由查找以及ACL查找时需要根据路由器id来查找不同路由器的路由规则以及ACL规则。
本申请实施例中,OVS可以根据报文的报头字段信息在目标地址转换(DNAT)表中查找DNAT的用户态流表项(对应上述实施例中的目的地址表项、目的端口表项)。
本申请实施例中,OVS可以根据路由器id在路由表中查找出接口以及下一跳信息(对应上述实施例中的下位设备标识)。
本申请实施例中,OVS在访问控制列表(ACL)表中查找内核连接跟踪模块的会话信息(对应上述是实施例中的连接跟踪表项),如果不存在则新建一条会话,并获取当前会话状态,由于是首包,当前会话状态是new(对应上述实施例中的第一状态)。
S304、将查找到的用户态流表生成内核态流表,并将内核态流表和报文下发至内核模块。
S305、对报文进行封装处理。
本申请实施例中,OVS可以对报文封装NSH头,以及以太头,其中NSH头中md type为1,且将当前虚拟路由器的id、入接口id、出接口id以及下一跳信息封装到NSH头的ContextHeader里;以太头设置源mac和目的mac为两个固定值(比如:00:EE:EE:EE:EE:EE,00:EE:EE:EE:EE:FF)。
S306、将封装后的报文发送至与虚拟路由器连接的可扩展的伯克利包过滤器接口。
S307、对报文进行流量匹配过滤,并将过滤后的报文发送至内核模块。
本申请实施例中,ebpf程序在ebpf接口的tc egress的hook上attach ebpf防火墙处理程序,ebpf程序收到报文后检测是nsh报文,则提取当前报文所在的虚拟路由器id,以及内层报文的ip、协议、端口号信息,进行防火墙的匹配,通过预先设置好ebpf map,报文来后匹配ebpf的map表,来确定是丢包还是通过;如果是通过,则再将报文重定向到该接口的ingress方向,从ebpf接口重新进入ovs内核模块
S308、在用户态进程中查找用户态流表项。
本申请实施例中,ebpf程序将报文重定向到ebpf接口的入方向,进而再次进入ovs内核模块;接着再次查找ovs内核流表项,查找失败,则上送ovs用户态进程查找流表项;在ovs用户态进程查找流表项时报文先查找flow classify表,该表基于接口进行分类,如果报文入接口ebpf接口,且是nsh报文,则进行解封装,提取nsh头中携带的路由器id、入接口id、出接口id以及下一跳,设置到ovs的寄存器中。然后根据路由器id、入接口id、出接口id以及下一跳信息,在snat表查找对应的用户态流表项(对应上述实施例中的源地址端口表项、源端口表项)。
S309、将查找到的用户态流表项生成内核态流表项,并将内核态流表项和报文下发至内核模块。
S310、对报文进行转发处理。
在一些实施例中,参见图11,图11为本申请实施例提供的报文处理方法的一个可选的流程示意图,本申请实施例是针对初始方向为首包的重传报文的处理流程。将结合各步骤进行说明。
S311、基于重传报文在内核模块中查找对应的内核态流表。
如附图12所示,图中的实线部分为重传报文在OVS(对应上述实施例中的转发节点)以及ebpf程序(对应上述实施例中的安全检测节点)中处理的过程。当重传报文进入到OVS时,需要先在OVS的内核模块(OVS dp)中查找对应的内核态流表(对应上述实施例中的第一预设流表)。
在实际过程中,由于是重传报文,在处理首包的过程中已经通过ovs用户态模块流表的查找学习,生成了对应报文的内核态流表项,因此可以在内核模块中查找到内核态流表项。
S312、基于内核态流表,依次进行目标地址转换表、路由表、访问控制列表的查找动作。
本申请实施例中,针对重传报文的目标地址转换表的查找动作,与针对首包的目标地址转换表的查找动作的具体方式相同。针对重传报文的路由表的查找动作,与针对首包的路由表的查找动作的具体方式相同。
本申请实施例中,OVS在访问控制列表(ACL)中查找内核连接跟踪模块的会话信息,由于首包已经建立了会话,所以可以直接查找到对应的内核连接跟踪模块的会话信息,并且该会话信息的当前会话状态是new。
S313、对报文进行封装处理。
本申请实施例中,对重发报文的封装处理过程与对首包的封装处理过程相同。
S314、将封装后的报文发送至与虚拟路由器连接的可扩展的伯克利包过滤器接口。
S315、对报文进行流量匹配过滤,并将过滤后的报文发送至内核模块。
本申请实施例中,ebpf程序对重发报文的流量匹配过滤过程与ebpf程序对首包的流量匹配过滤过程相同。
S316、在内核模块中查找内核态流表项。
本申请实施例中,ebpf程序将报文重定向到ebpf接口的入方向,进而再次进入ovs内核模块;接着再次查找ovs内核流表项,因为首包已经通过ovs用户态查找到了用户态流表并下发到了内核模块中,则能够查找到,则进行nsh解封装,提取内层原始数据包,并将提取出的携带的路由器id、入接口id、出接口id以及吓一跳,设置到ovs的寄存器中,接着进行snat处理,在snat表查找对应的用户态流表项。
S317、对报文进行转发处理。
在一些实施例中,参见图13,图13为本申请实施例提供的报文处理方法的一个可选的流程示意图,本申请实施例是针对初始方向为首包收到的回应报文的处理流程。将结合各步骤进行说明。
S318、基于回应报文在内核模块中未查找到对应的内核态流表的情况下,将报文发送至用户态进程。
当回应报进入到OVS时,需要先在OVS的内核模块(OVS dp)中查找对应的内核态流表(对应上述实施例中的第二预设流表)
在本申请实施例中,由于回应报文是针对首包的第一个包,还没有建立内核态流表,所以查找不到,因此需要被上送到ovs的用户态进程,进行用户态流表的查找。
S319、在用户态进程中依次进行流量分类表、目标地址转换表、路由表、访问控制列表以及源地址转换表的查找动作。
在本申请实施例中,ovs基于flow classify表对回应报文的入接口进行分类,如果回应报文的入接口不是ebpf接口,则走虚拟路由器,根据不同的入接口对回应报文标记不同的虚拟路由器id。
本申请实施例中,针对回应报文的目标地址转换表的查找动作,与针对首包的目标地址转换表的查找动作的具体方式相同。
本申请实施例中,ovs查找路由表,获取出接口以及下一跳信息。
本申请实施例中,ovs在ACL表中查找内核连接跟踪模块的会话信息,由于是同一条流的反方向,在正方向查找内核连接跟踪模块时会话信息已经建立好,所以能够查找到,根据当前报文的五元组信息是会话的反方向,因此更新当前会话状态为rep,即回应报文对应的会话信息的当前会话状态为非new,则直接走snat表进行snat表项的学习。
S320、将查找到的用户态流表项生成内核态流表项,并将内核态流表项和报文下发至内核模块。
S321、对报文进行转发处理。
在一些实施例中,参见图14,图14为本申请实施例提供的报文处理方法的一个可选的流程示意图,本申请实施例是针对初始方向为后续报文的处理流程。将结合各步骤进行说明。
S322、基于后续报文在内核模块中查找对应的内核态流表。
如附图15所示,图中的实线部分为后续报文在OVS(对应上述实施例中的转发节点)中处理的过程。当后续报文进入到OVS时,需要先在OVS的内核模块(OVS dp)中查找对应的内核态流表(对应上述实施例中的第三预设流表)。
S323、依次进行目标地址转换表、路由表、访问控制列表已经源地址转换表的查找动作。
本申请实施例中,后续报文从入接口进入ovs内核模块,由于是首包和回应报文已经通过ovs用户态进程建立了内核态流表项,因此能够查找到内核态流表项,直接根据内核态流表项进行dnat处理,路由查找并查找acl的内核态连接跟踪表项,由于已经有了回应报文,连接跟踪表项状态为非new,因此直接进行snat处理,而不会进入ebpf程序处理。
S324、基于查找到的内核态流表项对报文进行转发处理。
这样,本申请实施例在确定待处理报文是首发报文或者重发报文时,通过ovs对待处理报文进行转发处理,通过ebpf程序对待处理报文进行流量清洗。这样,降低了流量防护功能和流量转发功能的运维难度,并且本申请实施例通过ebpf程序实现对报文的安全检测处理,如此便不需要新增扩展域后替换ovs数据面,即可以避免相关技术中通过ovs实现流量防护功能而造成的流量中断,提高了报文处理的可靠性。在确定待处理报文是回应报文或者后续报文时,只需通过ovs对待处理报文进行转发处理即可,不需要进行流量清洗,简化了报文处理的流程,提高了转发报文的效率。
请参阅图16,图16为本申请实施例提供的报文处理装置的结构示意图。该网报文处理装置1600,所述装置包括:确定单元1601、封装单元1602、接收单元1603、转发单元1604、查找单元以及解封单元;其中:
确定单元1601,用于确定出接收的第一待处理报文对应的状态检测结果;所述状态检测结果用于表征接收所述第一待处理报文的次数;
封装单元1602,用于基于所述状态检测结果对所述第一待处理报文进行封装处理,得到第一报文,并将所述第一报文发送至安全检测节点;
接收单元1603,用于接收所述安全检测节点反馈的第二报文;所述第二报文是所述安全检测节点对所述第一报文安全检测后的报文;
转发单元1604,用于基于第一预设流表对所述第二报文进行转发处理,所述第一预设流表是基于首包报文而查找的,所述第一预设流表包含所述待处理报文的转发规则。
在一些实施例中,确定单元1601,还用于在基于所述第一待处理报文的第一头部字段未查找到所述第一预设流表的情况下,确定出表征所述第一待处理报文为所述首包报文的所述状态检测结果;
在基于所述第一待处理报文的第一头部字段查找到所述第一预设流表,且在所述第一预设流表中查找对应的连接跟踪表项的会话状态为第一状态的情况下,确定出表征所述第一待处理报文为重发报文的所述状态检测结果;所述重发报文为所述首包报文的重发报文。
在一些实施例中,在基于所述第一待处理报文的第一头部字段未查找到所述第一预设流表的情况下,查找单元,用于在所述第一待处理报文的入接口标识非安全检测节点接口的情况下,在多个第一预设数据集合中的各所述第一预设数据集合查找对应的多个第一流表项,进而得到多个所述第一流表项。
在一些实施例中,多个所述第一预设数据集合包括:目的地址数据集合、路由数据集合以及访问控制数据集合;多个所述第一流表项包括:目的地址表项、目的端口表项、出接口标识、下位设备标识以及连接跟踪表项;查找单元,还用于在所述目的地址数据集合中查找到所述目的地址表项及所述目的端口表项;在所述路由数据集合中查找到所述出接口标识及所述下位设备标识;在所述访问控制数据集合中未查到与所述第一待处理报文对应的所述连接跟踪表项的情况下,构建所述连接跟踪表项并将所述连接跟踪表项的会话状态设置为第一状态。
在一些实施例中,解封单元,用于对所述第二报文解封装,得到所述入接口标识、路由器标识、所述出接口标识及所述下位设备标识;基于所述入接口标识、所述路由器标识、所述出接口标识及所述下位设备标识,在源地址数据集合中查找到源地址表项及源端口表项;将所述源地址端口表项、所述源端口表项、所述目的地址表项、目的端口表项、所述出接口标识及所述下位设备标识组合得到所述第一预设流表。
在一些实施例中,封装单元1602,还用于在所述状态检测结果表征所述第一待处理报文为所述首包报文或者所述重发报文的情况下,将所述入接口标识、所述路由器标识、所述出接口标识及所述下位设备标识封装至所述第一待处理报文的第一头部信息;所述路由器标识是基于所述入接口标识确定的;将所述第一待处理报文的第二头部信息中的物理地址信息设置为预定地址,得到所述第一报文。
在一些实施例中,所述第一预设流表包括:所述源地址端口表项、所述源端口表项、所述目的地址表项、所述目的端口表项、所述出接口标识及所述下位设备标识;转发单元1604,还用于将所述源地址端口表项、所述源端口表项、所述目的地址表项、所述目的端口表项、所述出接口标识及所述下位设备标识添加至所述第二报文中;对添加后的所述第二报文进行转发处理。
在一些实施例中,转发单元1604,还用于接收第二待处理报文;在基于所述第二待处理报文的第二头部字段未查找到对应的第二预设流表,且所述第二待处理报文的入接口标识非所述安全检测节点接口的情况下,在多个第二预设数据集合中的各所述第二预设数据集合查找对应的多个第二流表项,进而得到多个所述第二流表项;所述第二预设流表由多个所述第二流表项组成;将多个所述第二流表项添加至所述第二待处理报文中;对添加后的所述第二待处理报文进行转发处理。
在一些实施例中,所述多个第二预设数据集合包括:目的地址数据集合、路由数据集合以及访问控制数据集合;所述多个第二流表项包括:第二目的地址表项、第二目的端口表项、第二出接口标识、第二下位设备标识、第二连接跟踪表项、第二源地址表项及第二源端口表项;转发单元1604,还用于在所述目的地址数据集合中查找到第二目的地址表项及第二目的端口表项;在所述路由数据集合中查找到第二出接口标识及第二下位设备标识;基于所述第二待处理报文的第二头部字段在所述访问控制数据集合中查找对应的第二连接跟踪表项,并将所述第二连接跟踪表项的会话状态更新为第二状态;所述第二状态用于表征所述第二待处理报文为所述首包报文对应的回应报文;在源地址数据集合中查找到第二源地址表项及第二源端口表项。
在一些实施例中,转发单元1604,还用于接收第三待处理报文;基于所述第三待处理报文查找到对应的第三预设流表;所述第三预设流表属于所述第一预设流表和所述第二预设流表中的一个;基于所述第三预设流表对所述第三待处理报文进行转发处理。
这样,本申请实施例将转发处理和安全检测处理解耦,通过转发节点实现对报文的转发处理,通过安全检测节点实现对报文的安全检测处理,降低了流量防护功能和流量转发功能的运维难度,并且本申请实施例通过安全检测节点实现对报文的安全检测处理,如此便不需要新增扩展域后替换ovs数据面,即可以避免相关技术中通过ovs实现流量防护功能而造成的流量中断,提高了报文处理的可靠性。
本申请实施例提供提供一种报文处理设备,图17为本申请实施例提供的报文处理设备1700的组成结构示意图,如图17所示,所述设备包括:处理器1701、通信接口1702和存储器1703,其中:
处理器1701通常控制计算机设备1700的总体操作,总体操作可以是实现本申请实施例提供的报文处理方法,例如,如图1至图14示出的方法。
通信接口1702可以使计算机设备通过网络与其他终端或服务器通信。
存储器1703配置为存储由处理器1701可执行的指令和应用,还可以缓存待处理器1701以及计算机设备1700中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(FLASH)或随机访问存储器(Random AccessMemory,RAM)实现。处理器8101、通信接口1702和存储器1703之间可以通过总线1704进行数据传输。
本申请实施例提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在可读存储介质中。计算机设备的处理器从可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例上述的报文处理方法。
本申请实施例提供一种存储有可执行指令的可读存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的报文处理方法,例如,如图1至图14示出的方法。
在一些可能的实现方式中,可读存储介质可以是FRAM、ROM、PROM、EPROM、EEPROM、闪存、磁表面存储器、光盘、或CD-ROM等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些可能的实现方式中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。
作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (13)
1.一种报文处理方法,其特征在于,所述方法应用于转发节点;所述方法包括:
确定出接收的第一待处理报文对应的状态检测结果;所述状态检测结果用于表征接收所述第一待处理报文的次数;
基于所述状态检测结果对所述第一待处理报文进行封装处理,得到第一报文,并将所述第一报文发送至安全检测节点;
接收所述安全检测节点反馈的第二报文;所述第二报文是所述安全检测节点对所述第一报文安全检测后的报文;
基于第一预设流表对所述第二报文进行转发处理,所述第一预设流表是基于首包报文而查找的,所述第一预设流表包含所述第一待处理报文的转发规则。
2.根据权利要求1所述的报文处理方法,其特征在于,所述确定出接收的第一待处理报文对应的状态检测结果,包括以下之一:
在基于所述第一待处理报文的第一头部字段未查找到所述第一预设流表的情况下,确定出表征所述第一待处理报文为所述首包报文的所述状态检测结果;
在基于所述第一待处理报文的第一头部字段查找到所述第一预设流表,且在所述第一预设流表中查找对应的连接跟踪表项的会话状态为第一状态的情况下,确定出表征所述第一待处理报文为重发报文的所述状态检测结果;所述重发报文为所述首包报文的重发报文。
3.根据权利要求2所述的报文处理方法,其特征在于,所述在基于所述第一待处理报文的第一头部字段未查找到所述第一预设流表的情况下,确定出表征所述第一待处理报文为所述首包报文的所述状态检测结果之后,所述基于所述状态检测结果对所述第一待处理报文进行封装处理,得到第一报文,并将所述第一报文发送至安全检测节点之前,所述方法还包括:
在所述第一待处理报文的入接口标识非安全检测节点接口的情况下,在多个第一预设数据集合中的各所述第一预设数据集合查找对应的多个第一流表项,进而得到多个所述第一流表项。
4.根据权利要求3所述的报文处理方法,其特征在于,多个所述第一预设数据集合包括:目的地址数据集合、路由数据集合以及访问控制数据集合;多个所述第一流表项包括:目的地址表项、目的端口表项、出接口标识、下位设备标识以及连接跟踪表项;
所述在多个第一预设数据集合中的各所述第一预设数据集合查找对应的多个第一流表项,包括:
在所述目的地址数据集合中查找到所述目的地址表项及所述目的端口表项;
在所述路由数据集合中查找到所述出接口标识及所述下位设备标识;
在所述访问控制数据集合中未查到与所述第一待处理报文对应的所述连接跟踪表项的情况下,构建所述连接跟踪表项并将所述连接跟踪表项的会话状态设置为第一状态。
5.根据权利要求4所述的报文处理方法,其特征在于,在所述第一待处理报文为所述首包报文的情况下,所述接收所述安全检测节点反馈的第二报文之后,所述基于第一预设流表对所述第二报文进行转发处理之前,所述方法还包括:
对所述第二报文解封装,得到所述入接口标识、路由器标识、所述出接口标识及所述下位设备标识;
基于所述入接口标识、所述路由器标识、所述出接口标识及所述下位设备标识,在源地址数据集合中查找到源地址表项及源端口表项;
将所述源地址端口表项、所述源端口表项、所述目的地址表项、目的端口表项、所述出接口标识及所述下位设备标识组合得到所述第一预设流表。
6.根据权利要求5所述的报文处理方法,其特征在于,所述基于所述状态检测结果对所述第一待处理报文进行封装处理,得到第一报文,包括:
在所述状态检测结果表征所述第一待处理报文为所述首包报文或者所述重发报文的情况下,将所述入接口标识、所述路由器标识、所述出接口标识及所述下位设备标识封装至所述第一待处理报文的第一头部信息;所述路由器标识是基于所述入接口标识确定的;
将所述第一待处理报文的第二头部信息中的物理地址信息设置为预定地址,得到所述第一报文。
7.根据权利要求1-6任一项所述的报文处理方法,其特征在于,所述第一预设流表包括:源地址端口表项、源端口表项、目的地址表项、目的端口表项、出接口标识及下位设备标识;
所述基于第一预设流表对所述第二报文进行转发处理,包括:
将所述源地址端口表项、所述源端口表项、所述目的地址表项、所述目的端口表项、所述出接口标识及所述下位设备标识添加至所述第二报文中;
对添加后的所述第二报文进行转发处理。
8.根据权利要求1所述的报文处理方法,其特征在于,所述基于第一预设流表对所述第二报文进行转发处理之后,所述方法还包括:
接收第二待处理报文;
在基于所述第二待处理报文的第二头部字段未查找到对应的第二预设流表,且所述第二待处理报文的入接口标识非安全检测节点接口的情况下,在多个第二预设数据集合中的各所述第二预设数据集合查找对应的第二流表项,进而得到多个所述第二流表项;所述第二预设流表由多个所述第二流表项组成;
将多个所述第二流表项添加至所述第二待处理报文中;
对添加后的所述第二待处理报文进行转发处理。
9.根据权利要求8所述的报文处理方法,其特征在于,所述多个第二预设数据集合包括:目的地址数据集合、路由数据集合以及访问控制数据集合;所述多个第二流表项包括:第二目的地址表项、第二目的端口表项、第二出接口标识、第二下位设备标识、第二连接跟踪表项、第二源地址表项以及第二源端口表项;
所述在多个第二预设数据集合中的各所述第二预设数据集合查找对应的多个第二流表项,包括:
在所述目的地址数据集合中查找到所述第二目的地址表项及所述第二目的端口表项;
在所述路由数据集合中查找到所述第二出接口标识及所述第二下位设备标识;
基于所述第二待处理报文的第二头部字段在所述访问控制数据集合中查找对应的所述第二连接跟踪表项,并将所述第二连接跟踪表项的会话状态更新为第二状态;所述第二状态用于表征所述第二待处理报文为所述首包报文对应的回应报文;
在源地址数据集合中查找到所述第二源地址表项及所述第二源端口表项。
10.根据权利要求8或9所述的报文处理方法,其特征在于,所述对添加后的所述第二待处理报文进行转发处理之后,所述方法还包括:
接收第三待处理报文;
基于所述第三待处理报文查找到对应的第三预设流表;所述第三预设流表属于所述第一预设流表和所述第二预设流表中的一个;
基于所述第三预设流表对所述第三待处理报文进行转发处理。
11.一种报文处理装置,其特征在于,所述装置应用于转发节点;所述装置包括:
确定单元,用于确定出接收的第一待处理报文对应的状态检测结果;所述状态检测结果用于表征接收所述第一待处理报文的次数;
封装单元,用于基于所述状态检测结果对所述第一待处理报文进行封装处理,得到第一报文,并将所述第一报文发送至安全检测节点;
接收单元,用于接收所述安全检测节点反馈的第二报文;所述第二报文是所述安全检测节点对所述第一报文安全检测后的报文;
转发单元,用于基于第一预设流表对所述第二报文进行转发处理,所述第一预设流表是基于首包报文而查找的,所述第一预设流表包含所述待处理报文的转发规则。
12.一种电子设备,其特征在于,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1至10任一项所述方法中的步骤。
13.一种存储介质,其特征在于,所述存储介质上存储有可执行指令,该可执行指令被处理器执行时实现权利要求1至10任一项所述方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310384050.3A CN116455837A (zh) | 2023-04-06 | 2023-04-06 | 一种报文处理方法及装置、设备、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310384050.3A CN116455837A (zh) | 2023-04-06 | 2023-04-06 | 一种报文处理方法及装置、设备、存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116455837A true CN116455837A (zh) | 2023-07-18 |
Family
ID=87127082
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310384050.3A Pending CN116455837A (zh) | 2023-04-06 | 2023-04-06 | 一种报文处理方法及装置、设备、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116455837A (zh) |
-
2023
- 2023-04-06 CN CN202310384050.3A patent/CN116455837A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11245620B2 (en) | Method for forwarding packet and network device | |
US10237177B2 (en) | Transfer device and transfer system | |
US20190356594A1 (en) | Packet Processing Method, Apparatus, and System | |
KR100733020B1 (ko) | 사용자 mac 프레임 전송방법, 에지 브리지 및 프로그램을 기록한 기록 매체 | |
CN106452925B (zh) | 在nfv系统中检测故障的方法、装置和系统 | |
JP5994851B2 (ja) | 転送装置の制御装置、転送装置の制御方法、通信システムおよびプログラム | |
US9019837B2 (en) | Packet modification to facilitate use of network tags | |
CN107615710B (zh) | Sdn交换机中的直接回复动作 | |
US9667440B2 (en) | Method and system for identifying an incoming interface using openflow protocol | |
WO2016128834A1 (en) | Method and system for identifying an outgoing interface using openflow protocol | |
US11522795B1 (en) | End to end application identification and analytics of tunnel encapsulated traffic in the underlay | |
US10263901B2 (en) | Service packet processing method, apparatus, and system | |
CN116319553A (zh) | 一种表项查找方法以及网络设备 | |
JPWO2014125636A1 (ja) | 通信装置またはパケット転送方法 | |
CN116455837A (zh) | 一种报文处理方法及装置、设备、存储介质 | |
CN111770049B (zh) | 全局缓存变量及报文信息存储方法及装置 | |
WO2015137977A1 (en) | A switching fabric including a virtual switch | |
JP2018064228A (ja) | パケット制御装置 | |
CN112804130A (zh) | 报文处理方法及装置、系统、存储介质以及电子设备 | |
WO2020125650A1 (zh) | 报文采样方法及解封装方法、节点、系统及存储介质 | |
CN116668375B (zh) | 一种报文分流方法、装置、网络设备及存储介质 | |
WO2022252569A1 (zh) | 报文处理方法、装置及系统 | |
CN112491701B (zh) | 转发报文方法和装置 | |
CN117376233A (zh) | 数据处理方法、装置及系统 | |
CN116015838A (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 |