CN113438252B - 报文访问控制方法、装置、设备及存储介质 - Google Patents

报文访问控制方法、装置、设备及存储介质 Download PDF

Info

Publication number
CN113438252B
CN113438252B CN202110772439.6A CN202110772439A CN113438252B CN 113438252 B CN113438252 B CN 113438252B CN 202110772439 A CN202110772439 A CN 202110772439A CN 113438252 B CN113438252 B CN 113438252B
Authority
CN
China
Prior art keywords
message
target
mask
chip
access control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202110772439.6A
Other languages
English (en)
Other versions
CN113438252A (zh
Inventor
王新菊
贾李健
王征归
梁彧
蔡琳
杨满智
王杰
田野
金红
陈晓光
傅强
张园
李路
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Eversec Beijing Technology Co Ltd
Original Assignee
Eversec Beijing Technology Co Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Eversec Beijing Technology Co Ltd filed Critical Eversec Beijing Technology Co Ltd
Priority to CN202110772439.6A priority Critical patent/CN113438252B/zh
Publication of CN113438252A publication Critical patent/CN113438252A/zh
Application granted granted Critical
Publication of CN113438252B publication Critical patent/CN113438252B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/02Network architectures or network communication protocols for network security for separating internal from external traffic, e.g. firewalls
    • H04L63/0227Filtering policies
    • H04L63/0236Filtering by address, protocol, port number or service, e.g. IP-address or URL
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L63/00Network architectures or network communication protocols for network security
    • H04L63/10Network architectures or network communication protocols for network security for controlling access to devices or network resources
    • H04L63/101Access control lists [ACL]

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Computing Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本发明实施例公开了一种报文访问控制方法、装置、设备及存储介质。该方法应用于汇聚分流设备中的可编程芯片,包括:实时接收目标报文,并通过芯片的入口管道和出口管道分别对所述目标报文进行解析,得到目标数据,所述目标数据中包括报文载荷部分的内容;通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;根据匹配的处理策略,对所述目标报文进行相应的转发或丢弃。本发明实施例的技术方案,利用芯片管道对报文的载荷部分进行数据解析,实现对UDF报文的ACL过滤。

Description

报文访问控制方法、装置、设备及存储介质
技术领域
本发明实施例涉及通信技术领域,尤其涉及一种报文访问控制方法、装置、设备及存储介质。
背景技术
随着通信技术的发展,协议的类型越来越多,用户定义功能(User-DefinedFunction,UDF)使得用户可以按照自定义的报文头进行访问控制列表(Access ControlList,ACL)匹配。
目前,基于网络安全的现网汇聚分流需求,汇聚分流设备接收报文以后,可能需要从报文载荷头部自定义的固定偏移开始,匹配若干个字节做ACL过滤。但是,当载荷部分是可变长的时候,传统汇聚分流设备无法解析载荷部分。如果通过CPU来解析报文载荷部分或者非传统意义上的报文,性能比较低。
发明内容
本发明实施例提供一种报文访问控制方法、装置、设备及存储介质,利用芯片管道对报文的载荷部分进行数据解析,实现对UDF报文的ACL过滤。
第一方面,本发明实施例提供了一种报文访问控制方法,应用于汇聚分流设备中的可编程芯片,包括:
实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;
通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;
根据匹配的处理策略,对目标报文进行相应的转发或丢弃。
可选的,通过芯片的入口管道对目标报文进行解析,得到目标数据,包括:
通过入口管道中的分析器模块,为目标报文的所有相关的报文头定义对应的存储区域,通过移动指针位置,依次对目标报文的各报文头进行解码并存储到对应的存储区域中;
当指针移动到报文载荷部分的起始位置时,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据。
可选的,通过芯片的出口管道对目标报文进行解析,得到目标数据,包括:
通过出口管道中的分析器模块,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据;
其中,指针当前指向目标报文的起始位置。
可选的,还包括:
通过入口管道的MAU模块或者出口管道的MAU模块,获取控制函数下发的实体数据,并根据所述实体数据更新掩码访问控制表;
其中,所述实体数据包括响应于用户配置操作生成的与配置信息对应的key值和掩码,所述配置信息包括起始偏移位置和待匹配数据。
可选的,实体数据的生成方式,包括:
分别获取预设长度的第一内存空间和第二内存空间;
在第一内存空间中,从起始偏移位置开始存储待匹配数据,并将其余字节设置为0;
在第二内存空间中,将与第一内存空间中的待匹配数据对应的字节设置为1,将其余字节设置为0;
将第一内存空间中的key值与第二内存空间中的掩码,作为实体数据。
可选的,通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略,包括:
通过入口管道的MAU模块,将入口管道解析得到的目标数据与入口管道的掩码访问控制列表中的掩码做与运算,以及将入口管道的掩码访问控制列表中的key值与掩码做与运算,判断两者的运算结果是否一致;
如果一致,则在掩码访问控制列表中,匹配目标报文的处理策略;以及
通过出口管道的MAU模块,将出口管道解析得到的目标数据与出口管道的掩码访问控制列表中的掩码做与运算,以及将出口管道的掩码访问控制列表中的key值与掩码做与运算,判断两者的运算结果是否一致;
如果一致,则在掩码访问控制列表中,匹配目标报文的处理策略。
可选的,可编程芯片包括Tofino芯片。
第二方面,本发明实施例还提供了一种报文访问控制装置,应用于汇聚分流设备中的可编程芯片,包括:
报文解析模块,用于实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;
查表匹配模块,用于通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;
报文处理模块,用于根据匹配的处理策略,对目标报文进行相应的转发或丢弃。
第三方面,本发明实施例还提供了一种汇聚分流设备,汇聚分流设备包括:
一个或多个可编程芯片;
存储装置,用于存储一个或多个程序,
当一个或多个程序被一个或多个可编程芯片执行,使得一个或多个可编程芯片实现本发明任意实施例提供的报文访问控制方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被可编程芯片执行时实现本发明任意实施例提供的报文访问控制方法。
本发明实施例的技术方案,应用于汇聚分流设备中的可编程芯片,包括:实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;根据匹配的处理策略,对目标报文进行相应的转发或丢弃,解决了现有技术中传统汇聚分流设备无法解析报文载荷部分数据的问题,利用芯片管道对报文的载荷部分进行数据解析,实现对UDF报文的ACL过滤。
附图说明
图1a是本发明实施例一中的一种报文访问控制方法的流程图;
图1b是本发明实施例一中的一种实体数据下发流程图;
图2a是本发明实施例二中的一种报文访问控制方法的流程图;
图2b是本发明实施例二中的一种入口管道报文解析示意图;
图2c是本发明实施例二中的一种入口管道建立的ACL表格示意图;
图2d是本发明实施例二中的一种出口管道报文解析示意图;
图2e是本发明实施例二中的一种出口管道建立的ACL表格示意图;
图3是本发明实施例三中的一种报文访问控制装置的结构示意图;
图4是本发明实施例四中的一种汇聚分流设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1a是本发明实施例一中的一种报文访问控制方法的流程图,本实施例可适用于汇聚分流设备对接收的报文进行ACL匹配过滤的情况,该方法可以由报文访问控制装置来执行,该装置可以由硬件和/或软件来实现,并一般可以集成在提供ACL匹配服务的汇聚分流设备中,具体可以应用于汇聚分流设备中的可编程芯片中。如图1a所示,该方法包括:
步骤110、实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容。
可选的,可编程芯片包括Tofino芯片。本实施例中,汇聚分流设备中的可编程芯片可以是barefoot公司的Tofino芯片,该芯片以管道(Pipeline)的形式处理接收到的数据包,包括入口管道(Ingress Pipeline)和出口管道(Egress Pipeline),每个Pipeline都包含Paser(解析器)、MAU、Depaser(逆解析器)三个模块。其中,Paser模块用于对数据包进行报文解析,并将解析得到的数据存储到相应的数据包头向量中,MAU模块用于根据Paser模块解析到的数据进行相关的ACL表格查询,完成规则过滤等功能,Depaser模块用于将数据包头向量中经过ACL处理的报文重新组码,形成完整的报文输出。
本实施例中,可以在Ingress Paser和Egress Paser分别设置不同的报文解码逻辑,从而针对接收的目标报文,不论是从报文载荷payload部分获取偏移字段进行ACL匹配,还是从整个报文头部获取偏移字段进行ACL匹配,都可以实现预设长度的报文解析支持,例如128字节的深度解析支持。
可选的,通过芯片的入口管道对目标报文进行解析,得到目标数据,可以包括:通过入口管道中的分析器模块,为目标报文的所有相关的报文头定义对应的存储区域,通过移动指针位置,依次对目标报文的各报文头进行解码并存储到对应的存储区域中;当指针移动到报文载荷部分的起始位置时,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据。
本实施例中,对于从报文payload部分获取偏移字段的情况,可以通过IngressPaser,针对目标报文中各报文头的所有可能取值分别申请对应的存储区域。示例性的,由于目标报文中的IP报文头可能对应IPV4地址或者IPV6地址,因此,需要分别针对IPV4地址和IPV6地址申请对应大小的存储区域。然后通过移动指针位置,严格按照报文的每一段的格式来解析报文,并将解析得到的内容存储到对应的存储区域中。当一个报文头解析完成之后,指针会移动到该报文头最后的位置。当解析到payload部分时,此时指针指向payload部分的起始位置,可以调用芯片中的lookahead关键字,在指针不移动的情况下,获取指针指向的当前位置之后的预设长度的报文内容,例如获取payload部分的128字节数据,作为目标数据。
可选的,通过芯片的出口管道对目标报文进行解析,得到目标数据,可以包括:通过出口管道中的分析器模块,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据;其中,指针当前指向目标报文的起始位置。
本实施例中,对于从整个报文头部获取偏移字段的情况,可以通过Egress Paser模块,在指针当前指向目标报文的起始位置时,既不关心用户想要进行ACL过滤的字段是否是从payload部分开始偏移,也不去解析相关IP等元组信息,直接调用芯片的lookahead关键字来获取指针指向的当前位置之后的预设长度的报文内容,例如整个报文的前128字节的报文内容,作为目标数据。
本实施例基于barefoot公司的Tofino芯片,对报文的payload部分做了128字节的深度解析支持,同时对于非传统意义上的报文也做了128字节的解析支持,解析的数据用来匹配ACL过滤,很大程度上为报文转发处理后使用的DPI设备减轻了压力,同时芯片以管道的形式对报文的解析可以达到线速,性能较高。
步骤120、通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略。
本实施例中,在芯片的入口管道和出口管道同时对接收的目标报文进行数据解析之后,还需要通过入口管道和出口管道分别对各自解析的数据进行ACL查表匹配,以获取匹配的报文处理策略。其中,在进行ACL查表时,如果用户尚未配置ACL过滤规则,则查询ACL表格不会命中报文转发策略;如果用户已经配置ACL过滤规则对ACL表格进行更新,则可能会命中报文转发策略。
可选的,通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略,可以包括:通过入口管道的MAU模块,将入口管道解析得到的目标数据与入口管道的掩码访问控制列表中的掩码做与运算,以及将入口管道的掩码访问控制列表中的key值与掩码做与运算,判断两者的运算结果是否一致;如果一致,则在掩码访问控制列表中,匹配目标报文的处理策略;以及
通过出口管道的MAU模块,将出口管道解析得到的目标数据与出口管道的掩码访问控制列表中的掩码做与运算,以及将出口管道的掩码访问控制列表中的key值与掩码做与运算,判断两者的运算结果是否一致;如果一致,则在掩码访问控制列表中,匹配目标报文的处理策略。
本实施例中,掩码ACL表中包括用户自定义的key值以及与key值对应的掩码,当芯片的两个管道分别使用MAU模块对解析出的目标数据进行ACL匹配时,可以将目标数据作为目标key值,使用ACL表格中的掩码与目标key值做与运算,掩掉目标key值中不被用户关注的部分,保留用户关注的字段。然后使用ACL表格中的自定义key值与掩码做与运算,得到用户定义的待匹配字段,将目标key值中用户关注的字段与自定义key值中的待匹配字段进行比较,如果两者一致,则认为目标报文命中ACL表格,可以继续根据目标数据,在掩码访问控制列表中匹配目标报文的处理策略,例如,匹配的处理策略为将目标报文从端口1转发。
可选的,还可以包括:通过入口管道的MAU模块或者出口管道的MAU模块,获取控制函数下发的实体数据,并根据所述实体数据更新掩码访问控制表;其中,所述实体数据包括响应于用户配置操作生成的与配置信息对应的key值和掩码,所述配置信息包括起始偏移位置和待匹配数据。
本实施例中,在芯片实时接收报文的同时,位于芯片上层的控制层如果获取到用户输入的配置信息,会解析用户配置的偏移需求生成相应的实体数据,并调用控制函数将实体数据下发至芯片的入口管道或者出口管道的MAU模块的ACL表格中。芯片的入口管道或者出口管道接收到控制函数下发的实体数据后,根据实体数据更新ACL表格。
如图1b所示,控制层通过对配置信息进行解析,得到用户设置的起始偏移位置和待匹配数据,根据起始偏移位置确定待匹配数据是从报文的payload部分开始偏移还是从整个报文头部开始偏移。如果是从报文的payload部分开始偏移,则确定需要通过入口管道对目标报文进行ACL过滤,即需要更新入口管道的ACL表格,此时,可以根据起始偏移位置和待匹配数据生成自定义key值和掩码作为实体数据,并调用控制函数向入口管道MAU模块的payload_ACL表格下发实体数据,以使MAU模块对原本存在的空白payload_ACL表格进行填充更新。如果是从整个报文头部开始偏移,则确定需要通过出口管道对目标报文进行ACL过滤,即需要更新出口管道的ACL表格。此时,可以生成与配置信息对应的自定义key值和掩码作为实体数据,并调用控制函数向出口管道MAU模块的data_ACL表格下发实体数据,以使MAU模块对原本存在的空白data_ACL表格进行填充更新。
可选的,实体数据的生成方式,可以包括:分别获取预设长度的第一内存空间和第二内存空间;在第一内存空间中,从起始偏移位置开始存储待匹配数据,并将其余字节设置为0;在第二内存空间中,将与第一内存空间中的待匹配数据对应的字节设置为1,将其余字节设置为0;将第一内存空间中的key值与第二内存空间中的掩码,作为实体数据。
本实施例中,在控制层生成与配置信息对应的自定义key值和掩码时,由于key值与掩码的长度相等,例如都是128字节,因此可以预先申请两个128字节的内存空间,第一内存空间用来存储key值,第二内存空间用来存储与key值对应的掩码。在根据配置信息确定key值时,可以先在第一内存空间中找到起始偏移位置,并从该位置开始存储用户关心的待匹配数据,然后将第一内存空间中的用户不关心的其他字节设置为0。在确定掩码时,在第二内存空间中,将与第一内存空间中用户关心的待匹配数据对应的字节设置为1,将其余字节设置为0,从而可以使用掩码遮住key值中用户不关心的部分。
本实施例利用barefoot Tofino芯片的可编程特性,对于从payload部分取偏移的情况,在芯片所在的数据层,Ingress Paser模块对报文payload部分进行128字节深度解析,然后在Ingress MAU模块,以解析到的payload部分作为key值进行掩码ACL查表。对于从报文头部取偏移的情况,在Egress Paser模块对整个报文进行128字节的深度解析,在Egress MAU阶段,以解析到的数据为key查询掩码ACL表格。在位于芯片上层的控制层,在接收到用户配置的起始偏移位置和待匹配数据以后,计算对应的key值和掩码作为实体数据,并调用控制函数将实体数据下发到芯片底层,在Ingress或者Egeress流程MAU阶段的ACL表格中建立相应实体entry,以此进行报文过滤;完成ACL匹配UDF报文功能。
步骤130、根据匹配的处理策略,对目标报文进行相应的转发或丢弃。
本实施例中,在确定目标报文的处理策略之后,如果处理策略是转发报文,则通过匹配到处理策略的目标管道的Depaser模块,对经过ACL匹配的报文进行重新组码,形成完整的报文进行转发。如果处理策略是丢弃报文,则无需进行报文重组,直接丢弃目标报文。
本发明实施例的技术方案,应用于汇聚分流设备中的可编程芯片,包括:实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;根据匹配的处理策略,对目标报文进行相应的转发或丢弃,解决了现有技术中传统汇聚分流设备无法解析报文载荷部分数据的问题,利用芯片管道对报文的载荷部分进行数据解析,实现对UDF报文的ACL过滤。
实施例二
图2a是本发明实施例二中的一种报文访问控制方法的流程图,本实施例在上述实施例的基础上进一步细化。下面结合图2a对本实施例提供的一种报文访问控制方法进行说明,包括以下步骤:
步骤210、实时接收目标报文。
本实施例中,汇聚分流设备持续不断的接收报文,将当前时刻接收的报文作为目标报文,则汇聚分流设备中的芯片需要对目标报文进行ACL匹配,例如匹配HTTP协议GET、POST、URL等字段,或者匹配某些话单数据,又或者匹配固定偏移位置指定长度的一部分字段,以确定对目标报文进行转发还是丢弃。
本实施例中,Tofino芯片以管道的形式处理报文的解析以及转发流程,并由P4语言编程实现。通过在Ingress管道和Egress管道分别设置不同的报文处理流程,不论是从报文载荷payload部分获取偏移字段进行ACL匹配,还是从整个报文头部获取偏移字段进行ACL匹配,都可以实现128字节的报文解析支持。
步骤220、通过芯片的入口管道对目标报文进行解析,得到包括报文载荷部分内容的目标数据。
本实施例中,对于芯片的入口管道,会严格按照报文每一段的格式来解析目标报文。如图2b所示,在Ingress Paser模块,可以根据报文的不同为目标报文的所有相关的报文头定义对应的存储区域。例如,定义与MAC报文头对应的存储空间作为mac头域,定义与UDP报文头对应的两个存储空间分别作为tcp头域和udp头域。然后通过移动指针位置逐段进行报文解码。例如解析IPV4、UDP报文,在Paser模块解码时,指针会指向MAC报文头以对MAC报文头进行解析,并将解析到的数据存储到mac头域中,解析完之后指针会偏移到MAC报文头最后的位置,然后根据MAC报文头中的ether_type字段判断接下来是解析IPV4报文还是IPV6报文。依此类推,再根据IPV4报文中的proto协议号,来判断接下来解析的是TCP报文还是UDP报文。当解析到payload部分时,传统芯片已经无法解析了,但基于tofino芯片,可以利用lookahead关键字获取出payload部分的128字节的数据。
本实施例的数据解析方式不仅可以将payload部分的数据获取到,还不会进行指针偏移,对报文本身的解码逻辑没有任何影响,对tofino芯片中存储空间的占用也比较小。
如图2b所示,芯片底层为所有的可能存在的报文头定义对应的存储区域用于解码,Paser模块从MAC报文头开始解析,依次将报文数据解析到对应的头域中,深色部分代表当前报文携带的报文头,浅色部分则代表当前报文中没有携带的报文头。
步骤230、通过芯片的入口管道,根据目标数据查询掩码访问控制列表,获取匹配的处理策略。
本实施例中,报文解析完成以后,MAU模块会建立如图2c所示的payload_acl表格,该表格以Paser模块解码得到的128字节的payload部分为key值,匹配命中报文处理策略。其中,payload_acl表中的key列包括至少一对根据用户配置信息生成的key值和掩码,用户在配置的时候可以通过掩码的形式,掩掉key值中不关心的部分,以此来实现指定偏移位置、指定字段的过滤功能。
其中,ACL表格中的key用来匹配命中,Action为命中key之后可以执行的动作,每张表格都可以有多个Action。命中Action以后可以获取其对应的Action data数据,也可以为某些变量赋值。每个Action都可以对应0-N个action data数据。
步骤240、通过芯片的出口管道对目标报文进行解析,得到包括报文载荷部分内容的目标数据。
本实施例中,对于芯片的出口管道,Egress Paser模块既不关心汇聚分流设备接收到的报文的格式,也不解析相关IP等元组信息,而是如图2d所示,直接调用lookahead关键字来提前获取整个报文前128字节的报文内容,并在Egress MAU模块中以此128字节数据作为掩码key值,查询掩码ACL表格,来完成从整个报文头部取偏移字段做ACL过滤的功能。
其中,该过程不关注用户想要进行ACL过滤的字段是否是从payload部分开始,直接将报文前128字节的数据提取出来用于查表,如图2d所示,芯片底层所有提前定义好的与报文头对应的存储区域都没有被使用,且报文指针没有做任何偏移,这样给用户提供了更灵活的UDF报文匹配功能。
步骤250、通过芯片的出口管道,根据目标数据查询掩码访问控制列表,获取匹配的处理策略。
本实施例中,报文解析完成以后,在Egress MAU模块中会建立如图2e所示的data_acl表格,该表格以Paser模块解码得到的整个报文前128字节的报文内容为key值,匹配命中报文处理策略。其中,data_acl表中的key包括至少一对根据用户配置信息生成的key值和掩码,用户在配置的时候通过掩码的形式掩掉key值中不关心的部分,实现过滤指定偏移位置的指定字段的功能。
需要说明的是,在Ingress流程和Egress流程设置不同的解码流程以及不同的ACL过滤,原因有两个:
第一,在Ingress流程中,完全按照报文的固定格式解析,不会对其他查表逻辑产生任何影响,可以在保证其他ACL过滤的同时,在payload部分提取128字节的数据做指定偏移过滤,即,可以同时支持UDF报文的ACL匹配和普通报文的ACL匹配,两者不会产生任何冲突。
第二,在Egress流程中,不关心报文的格式,将整个报文都当作payload部分直接提取128字节,是为了解决在Ingress流程中无法从报文头指定偏移的问题。从而,不仅为用户提供从payload部分指定偏移过滤ACL的功能,又提供了从报文头部指定偏移过滤ACL的功能,更加灵活方便。
步骤260、根据匹配的处理策略,对目标报文进行相应的转发或丢弃。
本发明实施例的技术方案,应用于汇聚分流设备中的可编程芯片,包括:实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;根据匹配的处理策略,对目标报文进行相应的转发或丢弃,解决了现有技术中传统汇聚分流设备无法解析报文载荷部分数据的问题,利用芯片管道对报文的载荷部分进行数据解析,实现对UDF报文的ACL过滤。
实施例三
图3是本发明实施例三中的一种报文访问控制装置的结构示意图,本实施例可适用于汇聚分流设备对接收的报文进行ACL匹配过滤的情况,该装置可以由硬件和/或软件来实现,并一般可以集成在提供ACL匹配服务的汇聚分流设备中,具体可以应用于汇聚分流设备中的可编程芯片中。如图3所示,该装置包括:
报文解析模块310,用于实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;
查表匹配模块320,用于通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;
报文处理模块330,用于根据匹配的处理策略,对目标报文进行相应的转发或丢弃。
本发明实施例的技术方案,应用于汇聚分流设备中的可编程芯片,包括:实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;根据匹配的处理策略,对目标报文进行相应的转发或丢弃,解决了现有技术中传统汇聚分流设备无法解析报文载荷部分数据的问题,利用芯片管道对报文的载荷部分进行数据解析,实现对UDF报文的ACL过滤。
可选的,报文解析模块310,包括:
第一解析单元,用于通过入口管道中的分析器模块,为目标报文的所有相关的报文头定义对应的存储区域,通过移动指针位置,依次对目标报文的各报文头进行解码并存储到对应的存储区域中;
当指针移动到报文载荷部分的起始位置时,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据。
可选的,报文解析模块310,包括:
第二解析单元,用于通过出口管道中的分析器模块,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据;其中,指针当前指向目标报文的起始位置。
可选的,还包括:
表格更新模块,用于通过入口管道的MAU模块或者出口管道的MAU模块,获取控制函数下发的实体数据,并根据所述实体数据更新掩码访问控制表;
其中,所述实体数据包括响应于用户配置操作生成的与配置信息对应的key值和掩码,所述配置信息包括起始偏移位置和待匹配数据。
可选的,实体数据的生成方式,包括:
分别获取预设长度的第一内存空间和第二内存空间;
在第一内存空间中,从起始偏移位置开始存储待匹配数据,并将其余字节设置为0;
在第二内存空间中,将与第一内存空间中的待匹配数据对应的字节设置为1,将其余字节设置为0;
将第一内存空间中的key值与第二内存空间中的掩码,作为实体数据。
可选的,查表匹配模块320,包括:
第一匹配单元,用于通过入口管道的MAU模块,将入口管道解析得到的目标数据与入口管道的掩码访问控制列表中的掩码做与运算,以及将入口管道的掩码访问控制列表中的key值与掩码做与运算,判断两者的运算结果是否一致;
如果一致,则在掩码访问控制列表中,匹配目标报文的处理策略;
第二匹配单元,用于通过出口管道的MAU模块,将出口管道解析得到的目标数据与出口管道的掩码访问控制列表中的掩码做与运算,以及将出口管道的掩码访问控制列表中的key值与掩码做与运算,判断两者的运算结果是否一致;
如果一致,则在掩码访问控制列表中,匹配目标报文的处理策略。
可选的,可编程芯片包括Tofino芯片。
本发明实施例所提供的报文访问控制装置可执行本发明任意实施例所提供的报文访问控制方法,具备执行方法相应的功能模块和有益效果。
实施例四
图4是本发明实施例四公开的一种汇聚分流设备的结构示意图。图4示出了适于用来实现本发明实施方式的示例性设备12的框图。图4显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图4所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,例如汇聚分流设备中的可编程芯片,系统存储器28,连接不同系统组件(包括系统存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,外围总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及外围组件互连(PCI)总线。
设备12典型地包括多种计算机系统可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
系统存储器28可以包括易失性存储器形式的计算机系统可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机系统存储介质。仅作为举例,存储系统34可以用于读写不可移动的、非易失性磁介质(图4未显示,通常称为“硬盘驱动器”)。尽管图4中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作系统、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID系统、磁带驱动器以及数据备份存储系统等。
处理单元16通过运行存储在系统存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的报文访问控制方法。
也即:实现一种报文访问控制方法,应用于汇聚分流设备中的可编程芯片,包括:
实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;
通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;
根据匹配的处理策略,对目标报文进行相应的转发或丢弃。
实施例五
本发明实施例五还公开了一种计算机存储介质,其上存储有计算机程序,该程序被处理器,例如汇聚分流设备中的可编程芯片,执行时实现一种报文访问控制方法,应用于汇聚分流设备中的可编程芯片,包括:
实时接收目标报文,并通过芯片的入口管道和出口管道分别对目标报文进行解析,得到目标数据,目标数据中包括报文载荷部分的内容;
通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;
根据匹配的处理策略,对目标报文进行相应的转发或丢弃。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

Claims (8)

1.一种报文访问控制方法,其特征在于,应用于汇聚分流设备中的可编程芯片,包括:
实时接收目标报文,并通过芯片的入口管道和出口管道分别对所述目标报文进行解析,得到目标数据,所述目标数据中包括报文载荷部分的内容;
通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;
根据匹配的处理策略,对所述目标报文进行相应的转发或丢弃;
其中,通过芯片的入口管道对所述目标报文进行解析,得到目标数据,包括:
通过入口管道中的分析器模块,为目标报文的所有相关的报文头定义对应的存储区域,通过移动指针位置,依次对目标报文的各报文头进行解码并存储到对应的存储区域中;
当指针移动到报文载荷部分的起始位置时,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据;
其中,通过芯片的出口管道对所述目标报文进行解析,得到目标数据,包括:
通过出口管道中的分析器模块,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据;其中,指针当前指向目标报文的起始位置。
2.根据权利要求1所述的方法,其特征在于,还包括:
通过入口管道的MAU模块或者出口管道的MAU模块,获取控制函数下发的实体数据,并根据所述实体数据更新掩码访问控制表;
其中,所述实体数据包括响应于用户配置操作生成的与配置信息对应的key值和掩码,所述配置信息包括起始偏移位置和待匹配数据。
3.根据权利要求2所述的方法,其特征在于,所述实体数据的生成方式,包括:
分别获取预设长度的第一内存空间和第二内存空间;
在所述第一内存空间中,从起始偏移位置开始存储所述待匹配数据,并将其余字节设置为0;
在所述第二内存空间中,将与第一内存空间中的待匹配数据对应的字节设置为1,将其余字节设置为0;
将第一内存空间中的key值与第二内存空间中的掩码,作为实体数据。
4.根据权利要求1所述的方法,其特征在于,通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略,包括:
通过入口管道的MAU模块,将入口管道解析得到的目标数据与入口管道的掩码访问控制列表中的掩码做与运算,以及将入口管道的掩码访问控制列表中的key值与掩码做与运算,判断两者的运算结果是否一致;
如果一致,则在掩码访问控制列表中,匹配目标报文的处理策略;以及
通过出口管道的MAU模块,将出口管道解析得到的目标数据与出口管道的掩码访问控制列表中的掩码做与运算,以及将出口管道的掩码访问控制列表中的key值与掩码做与运算,判断两者的运算结果是否一致;
如果一致,则在掩码访问控制列表中,匹配目标报文的处理策略。
5.根据权利要求1所述的方法,其特征在于,所述可编程芯片包括Tofino芯片。
6.一种报文访问控制装置,其特征在于,应用于汇聚分流设备中的可编程芯片,包括:
报文解析模块,用于实时接收目标报文,并通过芯片的入口管道和出口管道分别对所述目标报文进行解析,得到目标数据,所述目标数据中包括报文载荷部分的内容;
查表匹配模块,用于通过芯片的入口管道和出口管道,分别根据解析得到的目标数据查询掩码访问控制列表,获取匹配的处理策略;
报文处理模块,用于根据匹配的处理策略,对所述目标报文进行相应的转发或丢弃;
其中,所述报文解析模块,包括:
第一解析单元,用于通过入口管道中的分析器模块,为目标报文的所有相关的报文头定义对应的存储区域,通过移动指针位置,依次对目标报文的各报文头进行解码并存储到对应的存储区域中;
当指针移动到报文载荷部分的起始位置时,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据;
第二解析单元,用于通过出口管道中的分析器模块,调用芯片中的lookahead关键字,获取指针指向的当前位置之后的预设长度的报文内容,作为目标数据;其中,指针当前指向目标报文的起始位置。
7.一种汇聚分流设备,其特征在于,所述汇聚分流设备包括:
一个或多个可编程芯片;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个可编程芯片执行,使得所述一个或多个可编程芯片实现如权利要求1-5中任一项所述的报文访问控制方法。
8.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被可编程芯片执行时实现如权利要求1-5中任一项所述的报文访问控制方法。
CN202110772439.6A 2021-07-08 2021-07-08 报文访问控制方法、装置、设备及存储介质 Active CN113438252B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110772439.6A CN113438252B (zh) 2021-07-08 2021-07-08 报文访问控制方法、装置、设备及存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110772439.6A CN113438252B (zh) 2021-07-08 2021-07-08 报文访问控制方法、装置、设备及存储介质

Publications (2)

Publication Number Publication Date
CN113438252A CN113438252A (zh) 2021-09-24
CN113438252B true CN113438252B (zh) 2023-01-10

Family

ID=77759635

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110772439.6A Active CN113438252B (zh) 2021-07-08 2021-07-08 报文访问控制方法、装置、设备及存储介质

Country Status (1)

Country Link
CN (1) CN113438252B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116074405A (zh) * 2021-11-02 2023-05-05 苏州盛科通信股份有限公司 一种报文处理方法、装置及存储介质
CN114095231B (zh) * 2021-11-16 2023-11-17 锐捷网络股份有限公司 一种报文过滤方法、装置、设备及介质
CN114363258B (zh) * 2022-03-17 2022-12-06 中国人民解放军国防科技大学 一种报文处理装置
CN115002039B (zh) * 2022-07-27 2023-03-24 之江实验室 一种基于udf的流量卸载方法及系统
CN115580570A (zh) * 2022-09-22 2023-01-06 新华三技术有限公司合肥分公司 一种匹配报文策略的方法和网络设备
CN116600031B (zh) * 2023-07-18 2023-10-31 无锡沐创集成电路设计有限公司 报文处理方法、装置、设备及存储介质

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10911579B1 (en) * 2016-03-01 2021-02-02 Amazon Technologies, Inc. Generating programmatically defined fields of metadata for network packets
CN106572085B (zh) * 2016-10-19 2019-10-11 盛科网络(苏州)有限公司 一种从udf应用角度出发的芯片及匹配方法
US10757005B2 (en) * 2017-04-09 2020-08-25 Barefoot Networks, Inc. Execution of packet-specified actions at forwarding element
EP3707864A4 (en) * 2017-11-06 2021-08-18 Pensando Systems Inc. NETWORK SYSTEM WITH MATCH PROCESSING UNIT FOR TABLE-BASED ACTIONS
CN110035074A (zh) * 2019-04-01 2019-07-19 盛科网络(苏州)有限公司 一种acl匹配udf报文的芯片实现方法及装置
CN112131356B (zh) * 2020-08-03 2022-06-07 国家计算机网络与信息安全管理中心 一种基于tcam的报文关键字匹配方法和装置
US20210103403A1 (en) * 2020-11-09 2021-04-08 Shaopeng He End-to-end data plane offloading for distributed storage using protocol hardware and pisa devices
US20210194828A1 (en) * 2020-12-07 2021-06-24 Intel Corporation Architecture for smart switch centered next generation cloud infrastructure
CN112702278B (zh) * 2020-12-30 2022-08-12 恒安嘉新(北京)科技股份公司 一种负载均衡方法、汇聚分流器及存储介质

Also Published As

Publication number Publication date
CN113438252A (zh) 2021-09-24

Similar Documents

Publication Publication Date Title
CN113438252B (zh) 报文访问控制方法、装置、设备及存储介质
US8176300B2 (en) Method and apparatus for content based searching
US8819217B2 (en) Intelligent graph walking
US9154418B1 (en) Efficient packet classification in a network device
US8867395B2 (en) Accelerating data packet parsing
US9787693B2 (en) Graph caching
US8818921B2 (en) Content search mechanism that uses a deterministic finite automata (DFA) graph, a DFA state machine, and a walker process
US8024787B2 (en) Packet firewalls of particular use in packet switching devices
US12058231B2 (en) Hybrid fixed/programmable header parser for network devices
CN113411380B (zh) 基于fpga可编程会话表的处理方法、逻辑电路和设备
WO2012075818A1 (zh) 报文包头的解析方法、包头解析预处理装置和网络处理器
CN108153803A (zh) 一种数据获取方法、装置及电子设备
CN114006831B (zh) 报文数据处理方法及装置
CN114338529B (zh) 五元组规则匹配方法及装置
US7961732B2 (en) Method and hardware apparatus for implementing frame alteration commands
CN113645188A (zh) 一种基于安全关联的数据包快速转发方法
WO2024021588A1 (zh) 一种基于udf的流量卸载方法及系统
CN114363257B (zh) 隧道报文的五元组匹配方法及装置
CN114189572B (zh) 一种包检测规则匹配方法、装置、网元及存储介质
US11882039B1 (en) UDF-based traffic offloading methods and systems
CN116600031B (zh) 报文处理方法、装置、设备及存储介质
CN116319575A (zh) 通用路由封装协议报文的限速方法及装置
CN118784604A (zh) 可编程交换机的数据处理系统、方法、设备、介质及产品
CN118590438A (zh) 反向首包报文的转发方法及装置
CN112039778A (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