CN115514508A - 数据包过滤方法和装置、电子设备、计算机可读存储介质 - Google Patents

数据包过滤方法和装置、电子设备、计算机可读存储介质 Download PDF

Info

Publication number
CN115514508A
CN115514508A CN202110689119.4A CN202110689119A CN115514508A CN 115514508 A CN115514508 A CN 115514508A CN 202110689119 A CN202110689119 A CN 202110689119A CN 115514508 A CN115514508 A CN 115514508A
Authority
CN
China
Prior art keywords
data packet
tipc
packet
ebpf program
ebpf
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
Application number
CN202110689119.4A
Other languages
English (en)
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.)
ZTE Corp
Original Assignee
ZTE Corp
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 ZTE Corp filed Critical ZTE Corp
Priority to CN202110689119.4A priority Critical patent/CN115514508A/zh
Priority to PCT/CN2022/095438 priority patent/WO2022267815A1/zh
Publication of CN115514508A publication Critical patent/CN115514508A/zh
Pending legal-status Critical Current

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
    • H04L47/00Traffic control in data switching networks
    • H04L47/10Flow control; Congestion control
    • H04L47/24Traffic characterised by specific attributes, e.g. priority or QoS
    • H04L47/2483Traffic characterised by specific attributes, e.g. priority or QoS involving identification of individual flows
    • 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/0263Rule management
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols

Landscapes

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

Abstract

本申请提供了一种数据包过滤方法和装置、电子设备、计算机可读存储介质,数据包过滤方法包括:在通过已加载的扩展的伯克利包过滤器eBPF程序识别内核需要传输的数据包为透明进程间通信TIPC数据包的情况下,通过所述eBPF程序将所述数据包与预先设置的过滤规则进行匹配得到匹配结果;通过所述eBPF程序根据所述匹配结果确定对所述数据包进行过滤。

Description

数据包过滤方法和装置、电子设备、计算机可读存储介质
技术领域
本申请实施例涉及互联网技术领域,特别涉及数据包过滤方法和装置、电子设备、计算机可读存储介质。
背景技术
透明进程间通信(TIPC,Transparent Inter-process Communication)协议是一种用于进程间通信的网络通信协议。最初由爱立信研发,应用于电信集群内的应用间通信。后逐步开源,并合入Linux、VxWorks等操作系统的内核中,使得开发人员能够创建多个应用间快速、可靠的通信信道,同时无须考虑应用在集群环境中的物理位置。
目前尚未有公开的解决方案能够实现对TIPC数据包的识别和过滤。
发明内容
本申请实施例提供一种数据包过滤方法和装置、电子设备、计算机可读存储介质。
第一方面,本申请实施例提供一种数据包过滤方法,包括:
在通过已加载的扩展的伯克利包过滤器eBPF程序识别内核需要传输的数据包为透明进程间通信TIPC数据包的情况下,通过所述eBPF程序将所述数据包与预先设置的过滤规则进行匹配得到匹配结果;
通过所述eBPF程序根据所述匹配结果确定对所述数据包进行过滤。
第二方面,本申请实施例提供一种电子设备,包括:
至少一个处理器;
存储器,存储器上存储有至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,实现上述任意一种数据包过滤方法。
第三方面,本申请实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一种数据包过滤方法。
第四方面,本申请实施例提供一种数据包过滤装置,包括:
匹配模块,用于在通过已加载的扩展的伯克利包过滤器eBPF程序识别内核需要传输的数据包为透明进程间通信TIPC数据包的情况下,通过所述eBPF程序将所述数据包与预先设置的过滤规则进行匹配得到匹配结果;
处理模块,用于通过所述eBPF程序根据所述匹配结果确定对所述数据包进行过滤。
本申请实施例提供的数据包过滤方法,通过加载在内核中的eBPF程序实现了对TIPC数据包的识别和过滤,不需要自定义的内核代码补丁,且对内核版本变化不敏感。
附图说明
图1为相关技术中TIPC协议支持的底层承载方式示意图;
图2为本申请一个实施例提供的数据包过滤方法的流程图;
图3为本申请实施例在TIPC的底层承载方式为以太网承载方式的情况下,eBPF程序从内存缓冲区读取的数据包的结构示意图;
图4为本申请实施例在TIPC的底层承载方式为UDP承载方式的情况下,IPV4协议的数据包的结构示意图;
图5为本申请实施例在TIPC的底层承载方式为UDP承载方式的情况下,IPV6协议的数据包的结构示意图;
图6为本申请实施例的载荷类型的TIPC数据包的结构示意图;
图7为本申请实施例的内部控制类型的TIPC数据包的结构示意图;
图8为本申请另一个实施例提供的数据包过滤装置的组成框图;
图9为本申请实施例提供的数据包过滤装置的一种可实现示意图;
图10为本申请实施例的数据包过滤装置的部署示意图一;
图11为本申请实施例的数据包过滤装置的部署示意图二;
图12为本申请实施例的数据包过滤装置的部署示意图三;
图13为本申请实施例的管理模块的工作处理流程图;
图14为本申请实施例的eBPF程序模块的工作处理流程图。
具体实施方式
为使本领域的技术人员更好地理解本申请的技术方案,下面结合附图对本申请提供的数据包过滤方法和装置、电子设备、计算机可读存储介质进行详细描述。
在下文中将参考附图更充分地描述示例实施例,但是所述示例实施例可以以不同形式来体现且不应当被解释为限于本文阐述的实施例。反之,提供这些实施例的目的在于使本申请透彻和完整,并将使本领域技术人员充分理解本申请的范围。
在不冲突的情况下,本申请各实施例及实施例中的各特征可相互组合。
如本文所使用的,术语“和/或”包括至少一个相关列举条目的任何和所有组合。
本文所使用的术语仅用于描述特定实施例,且不意欲限制本申请。如本文所使用的,单数形式“一个”和“该”也意欲包括复数形式,除非上下文另外清楚指出。还将理解的是,当本说明书中使用术语“包括”和/或“由……制成”时,指定存在所述特征、整体、步骤、操作、元件和/或组件,但不排除存在或添加至少一个其它特征、整体、步骤、操作、元件、组件和/或其群组。
除非另外限定,否则本文所用的所有术语(包括技术和科学术语)的含义与本领域普通技术人员通常理解的含义相同。还将理解,诸如那些在常用字典中限定的那些术语应当被解释为具有与其在相关技术以及本申请的背景下的含义一致的含义,且将不解释为具有理想化或过度形式上的含义,除非本文明确如此限定。
TIPC协议的一些功能特性有:
每个服务有自己的地址(不是根据套接字而是基于地址来定位服务);
服务状态追踪(应用可以订阅服务状态,当服务地址与底层套接字发生绑定或解绑等状态变化时能够收到通知);
集群内统一的进程间调用(IPC)机制(通信双方只需要知道对方的服务地址,不知道也不关心对方在集群中的具体节点位置);
提供不可靠的数据报传输服务(支持单播、多播、广播等模式);
提供可靠的、基于链接的数据传输服务;
提供组播服务(基于可靠的数据报传输机制);
集群拓扑状态追踪(应用可以订阅拓扑状态变化消息,当集群新增或丢失节点时会收到通知);
节点链接状态追踪(应用可以订阅节点链接状态变化消息,当节点间通链或断链时会收到通知);
集群能自动发现新增节点;
包含1000个节点规模的集群能够以秒级的响应速度发现节点异常;
提供了标准的套接字编程接口(新增了AF_TIPC协议地址族);
其代码已合入Linux内核;
具备极佳的性能。
图1为相关技术中TIPC协议支持的底层承载方式示意图。如图1所示,TIPC协议目前主要支持两种底层承载:以太网(Ethernet)承载方式和用户数据报协议(UDP,UserDatagram Protocol)承载方式。在开放系统互联模型(OSI,Open SystemsInterconnection model)所定义的7层网络通信模型中,以太网属于层2(即图1中的传输链路层,也就是媒体访问控制(MAC,Media Access Control)层),UDP属于层4(即图1中的传输层,即UDP层)。也就是说,TIPC可以直接工作在层2之上,而不依赖层3层4协议(即互联网协议(IP,Internet Protocol),传输控制协议(TCP,Transmission Control Protocol)/UDP),显然在这种配置下也能获得更好的性能。但出于兼容性考虑,某些场景下可能还是需要利用层3层4提供的功能(例如互联网协议安全性(IPSec,Internet ProtocolSecurity)、路由等等),因此TIPC也支持运行在UDP之上。在使用UDP作为底层承载时,通讯双方需要配置TIPC流量所使用的UDP端口号。
TIPC的主要优势在于其简单、扁平化的服务寻址方式和优异的传输时延性能。官方的性能测试显示,在使用以太网承载方式的场景下,TIPC与TCP相比节点间通信时延减少近33%,节点内小报文通信时延减少近66%,大报文通信时延减少近87%。由于TIPC的这些优点,其在对传输可靠性和传输时延都有很高要求的电信级业务中有较广泛的应用。
TIPC在早期设计时主要是针对内部专网的电信集群场景,并未过多考虑安全相关的内容。但随着日益严峻的网络安全环境,对系统中任何网络通信平面都提出了更高的安全要求。TIPC当前并未内置任何数据传输加密功能,但这可以通过其依赖的底层协议来间接实现(媒体访问控制安全性(MACSec,Media Access Control Security)或IPSec,分别对应层2和层4的配置场景);而数据包的检查与过滤(也就是通称的防火墙),目前仍然是空白:当前几乎所有主流的Linux防火墙系统都是依赖内核中的iptable子系统来实现流量过滤,但iptable并不能识别和过滤TIPC协议流量,因此试图通过服务地址或其他协议字段来进行TIPC流量过滤是当前主流的防火墙系统所无法实现的。
图2为本申请一个实施例提供的数据包过滤方法的流程图。
第一方面,参照图2,本申请一个实施例提供一种数据包过滤方法,包括:
步骤200、在通过已加载的扩展的伯克利包过滤器(eBPF,extended BerkeleyPacket Filter)程序识别数据包为TIPC数据包的情况下,通过eBPF程序将数据包与预先设置的过滤规则进行匹配得到匹配结果。
在一些示例性实施例中,内核可以是执行本申请实施例的数据包过滤方法的设备的内核。在另一些示例性实施例中,由于市面上一些主流厂商的网卡已经支持直接加载并允许eBPF程序,这意味着特定的eBPF程序可以不必加载到业务节点上,而是在专用的网络处理硬件上运行。这可以避免消耗业务节点上的资源,获得更高的性能和更高的安全性。因此,内核也可以是执行本申请实施例的数据包过滤方法的设备的专用硬件的内核,这里专用硬件可以是USB接口的计算卡、智能网卡、专用的防火墙硬件平台等。
在一些示例性实施例中,执行本申请实施例的数据包过滤方法的设备可以是任何设备,如可以是业务节点,也可以是专用的网络处理设备,如交换机、路由器等。
本申请实施例所提及的eBPF诞生的初始目标就是实现一种全新的包过滤器以取代iptable,但后续的演进对其功能进行了扩展,现在eBPF本质上是一个运行在内核里的微型虚拟机,用户可以在规定的限制条件下编写功能代码,这些功能代码编译后可以加载到内核里执行。在加载eBPF程序到内核中时,内核会对eBPF程序进行类型、语义以及其他合法性检查,确保eBPF程序不存在可能导致挂死或崩溃的缺陷。在eBPF程序运行时,内核还会执行其他一些保护措施以防止eBPF程序崩溃。而在性能方面,由于eBPF程序运行在内核态,不需要与用户面程序频繁交互,理论上eBPF程序的性能与传统内核模块相当。
eBPF支持多种程序类型,不同类型的eBPF程序适用于不同的用途,针对网络流量处理的程序类型是流量控制(TC,Traffic Control)或快速数据路径(XDP,eXpress DataPath)。TC类型的eBPF程序能够直接拦截Linux内核对于网络数据包的处理入口和出口,在内核对数据包进行接收或发送前,TC类型的eBPF程序就可以直接访问到最原始的网络数据包缓存,对数据包进行处理(如分析、修改、统计等)后,再交给内核完成其他的处理。XDP类型的eBPF程序的工作原理与TC类型的eBPF程序类似,只是内核对XDP类型的eBPF程序进行了特别的路径优化,使得XDP类型的eBPF程序处理数据包的效率更高,但目前XDP类型的eBPF程序只能处理入向数据包,也就是内核接收的数据包。
在一些示例性实施例中,在内核有数据包需要传输的情况下,内核会调用已加载的eBPF程序,将待传输的数据包的内存缓冲区地址传递给eBPF程序,eBPF程序就可以根据内存缓冲区地址从内存缓冲区中读取内核待传输的数据包。
在一些示例性实施例中,传输包括以下至少之一:发送、接收。
在一些示例性实施例中,在通过eBPF程序识别数据包不是TIPC数据包的情况下,结束本流程。
在一些示例性实施例中,通过eBPF程序识别数据包是否为透明进程间通信TIPC数据包包括:
通过eBPF程序根据表征TIPC的底层承载方式的信息识别数据包是否为TIPC数据包。
在一些示例性实施例中,表征TIPC的底层承载方式的信息可以是在生成eBPF程序时包含在eBPF程序中的,也就是在生成eBPF程序时将表征TIPC的底层承载方式的信息嵌入到代码模板的全局数据区中,然后调用clang根据代码模板编译输出eBPF程序,eBPF程序可在代码中直接获取表征TIPC的底层承载方式的信息,这种方式在表征TIPC的底层承载方式的信息发生变化时需要重新生成新的eBPF程序,并重新加载到内核中,但是这种方法不需要进行内存分配或执行系统调用,因此运行时效率更高;也可以是eBPF程序加载到内核后,通过eBPF与用户面的通信机制将表征TIPC的底层承载方式的信息传递给eBPF程序,eBPF程序需要通过系统调用或bpf库的辅助函数来读取表征TIPC的底层承载方式的信息,这种方法在表征TIPC的底层承载方式的信息发生变化时不需要重新生成新的eBPF程序,只需要将新的TIPC的底层承载方式传递给eBPF程序即可,但是这种方法需要进行内存分配和执行系统调用,因此运行时效率较低。
在本申请实施例中,clang是一种C/C++语言编译器,目前只有该编译器支持输出eBPF程序字节码。
在本申请实施例中,eBPF与用户面的通信机制可以是任意一种可实现的通信机制,如通过bpf_map对象来实现数据的传递。
在一些示例性实施例中,通过eBPF程序根据表征TIPC的底层承载方式的信息识别数据包是否为TIPC数据包包括:
在表征TIPC的底层承载方式的信息为表征以太网承载方式的信息的情况下,通过eBPF程序解析数据包的以太网帧头得到帧类型;
通过eBPF程序根据帧类型判断数据包是否为TIPC数据包。
在本申请实施例中,在表征TIPC的底层承载方式的信息为表征以太网承载方式的信息的情况下,说明以太网协议之上就是TIPC协议,中间没有其他协议存在,eBPF程序从内存缓冲区读取的数据包的结构如图3所示,包括以太网帧头和载荷,以太网帧头包括:目的MAC地址、源MAC地址、帧类型。eBPF程序需要将数据缓存指针偏移12个字节,然后读取2字节即可获得帧类型。
不同类型的上层协议载荷都各自对应一个不同的帧类型,TIPC协议对于的帧类型为0x88CA,因此,如果eBPF程序获得的帧类型为0x88CA,则说明载荷部分为TIPC数据;如果eBPF程序获得的帧类型不是0x88CA,则说明载荷部分不是TIPC数据。
在一些示例性实施例中,通过eBPF程序根据表征TIPC的底层承载方式的信息识别数据包为TIPC数据包包括:
在表征TIPC的底层承载方式的信息为表征UDP承载方式的信息的情况下,通过eBPF程序依次解析数据包的以太网帧头、IP头和UDP头得到UDP端口号;
通过eBPF程序根据UDP端口号判断数据包是否为TIPC数据包。
在本申请实施例中,在表征TIPC的底层承载方式的信息为表征UDP承载方式的信息的情况下,说明以太网协议之上还有IP协议和UDP协议,之后才是TIPC协议,IP协议分为互联网协议第四版(IPV4,Internet Protocol Version 4)协议和互联网协议第六版(IPV6,Internet Protocol Version 6)协议,IPV4协议对应的以太网帧的帧类型为0x0800,IPV6协议对应的以太网帧的帧类型为0x86DD,可以根据IPV4的帧类型和IPV6的帧类型识别出IP协议的数据包;IP协议头中也有载荷类型指示,如图4和图5所示,UDP协议的载荷类型为0x11,根据UDP协议的载荷类型可以从IP协议的数据包中识别出UDP协议的数据包;UDP协议头中包括源端口号和目的端口号,根据UDP协议头中的源端口号和目的端口号判断UDP数据包中的载荷部分是否为TIPC数据。也就是说,前面描述的UDP端口号包括源端口号和目的端口号。
在一些示例性实施例中,根据UDP协议头中的源端口号和目的端口号判断UDP数据包中的载荷部分是否为TIPC数据包括:
在源端口号和目的端口号均在TIPC所使用的UDP端口号内的情况下,确定UDP数据包中的载荷部分为TIPC数据,也就是说前面描述的数据包为TIPC数据包;
在源端口号或目的端口号不在TIPC所使用的UDP端口号内的情况下,确定UDP数据包中的载荷部分不是TIPC数据,也就是说前面描述的数据包不是TIPC数据包。
在一些示例性实施例中,TIPC所使用的UDP端口号可以是在生成eBPF程序时包含在eBPF程序中的,也就是在生成eBPF程序时将TIPC所使用的UDP端口号嵌入代码模板的全局数据区,然后调用clang根据代码模板编译输出eBPF程序,eBPF程序可在代码中直接访问TIPC所使用的UDP端口号,这种方式在TIPC所使用的UDP端口号发生变化时需要重新生成新的eBPF程序,并重新加载到内核中,但是这种方法不需要进行内存分配或执行系统调用,因此运行时效率更高;也可以是eBPF程序加载到内核后,通过eBPF与用户面的通信机制将TIPC所使用的UDP端口号传递给eBPF程序,eBPF程序需要通过系统调用或bpf库的辅助函数来读取TIPC所使用的UDP端口号,这种方法在TIPC所使用的UDP端口号发生变化时不需要重新生成新的eBPF程序,只需要将TIPC所使用的新的UDP端口号传递给eBPF程序即可,但是这种方法需要进行内存分配和执行系统调用,因此运行时效率较低。
综上所述,针对表征TIPC的底层承载方式的信息为表征UDP承载方式的信息的情况,eBPF程序识别TIPC数据包的过程如下:
eBPF程序将数据缓存指针偏移12个字节,然后读取2字节即可获得帧类型。如果eBPF程序获得的帧类型为0x0800,则说明载荷部分为IPV4数据;如果eBPF程序获得的帧类型为0x86DD,则说明载荷部分为IPV6数据。
如果eBPF程序获得的帧类型为0x0800,则eBPF程序将数据缓存指针再偏移9个字节后读取1个字节即可得到载荷类型,如果eBPF程序得到的载荷类型为0x11,则eBPF程序将数据缓存指针再偏移2个字节后读取4个字节即可获得UDP协议的源端口号和目的端口号,如果eBPF程序获得的源端口号和目的端口号均在TIPC所使用的UDP端口号内,则说明载荷部分为TIPC数据;如果eBPF程序获得的源端口号或目的端口号不在TIPC所使用的UDP端口号内,则说明载荷部分不是TIPC数据。
如果eBPF程序获得的帧类型为0x86DD,则eBPF程序将数据缓存指针再偏移39个字节后读取1个字节即可得到载荷类型,如果eBPF程序得到的载荷类型为0x11,则eBPF程序读取4个字节即可获得UDP协议的源端口号和目的端口号,如果eBPF程序获得的源端口号和目的端口号均在TIPC所使用的UDP端口号内,则说明载荷部分为TIPC数据;如果eBPF程序获得的源端口号或目的端口号不在TIPC所使用的UDP端口号内,则说明载荷部分不是TIPC数据。
在一些示例性实施例中,通过eBPF程序将数据包与预先设置的过滤规则进行匹配得到匹配结果包括:
通过eBPF程序解析数据包的TIPC协议头得到特征信息;
通过eBPF程序将特征信息与过滤规则进行匹配得到匹配结果。
在本申请实施例中,TIPC共有8中载荷类型的数据包和9种内部控制类型的数据包,载荷类型的数据包共享相同的协议头格式,如图6所示,内部控制类型的数据包也共享相同的协议头格式,如图7所示。
TIPC协议提供了四种寻址方式:端口号、端口名称、端口名称序列、网络地址。任何一种寻址方式都可以精确定位TIPC集群网络中的一个或一个以上通信终端。从协议头的前两个字(Word)中可以获取数据包的用途大类(User)和子类型信息(MType),根据用途大类和子类型信息就可以确定一个TIPC数据包是载荷类型的数据包还是内部控制类型的数据包,进而判断TIPC数据包使用的是何种寻址方式。
其中,一个字包含4个字节。
在一些示例性实施例中,特征信息可以是源服务地址、目的服务地址中的至少一个等。
在一些示例性实施例中,服务地址可以是端口号、端口名称、端口名称范围、网络地址、节点号等中的至少一个。
在一些示例性实施例中,通过eBPF程序解析数据包的TIPC协议头得到特征信息包括:
通过eBPF程序解析数据包的TIPC协议头中的前2个字(即8个字节)获得数据包的用途大类和子类型信息;
根据数据包的用途大类和子类型信息确定协议头结构和寻址类型,根据协议头结构和寻址类型解析TIPC协议头的后续内容得到特征信息。
在一些示例性实施例中,过滤规则可以是在生成eBPF程序时包含在eBPF程序中的,也就是在生成eBPF程序时将过滤规则嵌入代码模板的全局数据区,然后根据代码模板生成eBPF程序,eBPF程序可在代码中直接访问过滤规则,这种方式在过滤规则发生变化时需要重新生成新的eBPF程序,并重新加载到内核中,但是这种方法不需要进行内存分配或执行系统调用,因此运行时效率更高;也可以是eBPF程序加载到内核后,通过eBPF与用户面的通信机制将过滤规则传递给eBPF程序,eBPF程序需要通过系统调用或bpf库的辅助函数来读取过滤规则,这种方法在过滤规则发生变化时不需要重新生成新的eBPF程序,只需要将新的过滤规则传递给eBPF程序即可,但是这种方法需要进行内存分配和执行系统调用,因此运行时效率较低。
在本申请实施例中,eBPF与用户面的通信机制可以是任意一种可实现的通信机制,如通过bpf_map对象来实现数据的传递。
在本申请实施例中,用于传递表征TIPC的底层承载方式的信息的bpf_map对象和用于传递过滤规则的bpf_map对象可以是同一个对象,也可以是不同的对象,过滤规则也可以通过两个或两个以上bpf_map对象来传递,每个bpf_map对象传递的数据可以预先设定好。
步骤201、通过eBPF程序根据匹配结果确定对数据包进行过滤。
在一些示例性实施例中,通过eBPF程序根据匹配结果确定对数据包进行过滤包括以下至少之一:
在匹配结果为数据包与过滤规则匹配的情况下,对数据包进行阻拦;
在匹配结果为数据包与过滤规则不匹配的情况下,对数据包进行放行。
在一些示例性实施例中,过滤规则可以是一个或一个以上。在过滤过滤为两个或两个以上时,数据包与过滤规则匹配是指数据包与任意一个过滤规则匹配,数据包与过滤规则不匹配是指数据包与所有过滤规则均不匹配。
在一些示例性实施例中,数据包与过滤规则匹配也就是特征信息与过滤规则匹配,数据包与过滤规则不匹配也就是特征信息与过滤规则不匹配。
在一些示例性实施例中,对数据包进行阻拦也就是不允许内核后续对数据包进行任何处理,eBPF程序可以通知内核丢弃该数据包;对数据包进行放行也就是允许内核后续对数据包进行处理,eBPF程序可以通知内核对数据包进行处理。
在一些示例性实施例中,在内核有数据包需要传输之前,该方法还包括:
根据预先设置的配置数据生成eBPF程序;其中,配置数据包括过滤规则;
将eBPF程序加载到内核中。
在一些示例性实施例中,配置数据还包括以下至少之一:表征TIPC的底层承载方式的信息、TIPC所使用的UDP端口号。
本申请实施例中,生成的eBPF程序中包含有配置数据。
在一些示例性实施例中,根据预先设置的配置数据生成eBPF程序之前,该方法还包括:
读取预先设置的配置数据,检查配置数据的完整性,在配置数据完整的情况下,继续执行根据预先设置的配置数据生成eBPF程序的步骤。
在一些示例性实施例中,在接收到防火墙激活指令的情况下,将eBPF程序加载到内核中。
在一些示例性实施例中,在接收到防火墙禁用指令的情况下,该方法还包括:
从内核中卸载eBPF程序。
在一些示例性实施例中,在接收到数据读取请求的情况下,该方法还包括:
通过eBPF与用户面的通信机制读取eBPF程序的运行状态数据,显示读取到的eBPF程序的运行状态数据。
在本申请实施例中,eBPF与用户面的通信机制可以是任意一种可实现的通信机制,如通过bpf_map对象来实现数据的传递,即eBPF程序需要通过系统调用或bpf库中的辅助函数来向bpf_map对象中写入运行状态数据。
在一些示例性实施例中,运行状态数据包括以下至少之一:
过滤规则触发的次数、阻拦的次数、放行的次数、过滤的数据包数量等。
在一些示例性实施例中,在接收到停止指令的情况下,该方法还包括:
从内核中卸载eBPF程序,并终止自身运行。
在一些示例性实施例中,将eBPF程序加载到内核中后,在内核有数据包需要传输之前,该方法还包括:
根据新的配置数据生成新的eBPF程序;其中,新的配置数据包括:新的过滤规则;
将新的eBPF程序重新加载到内核中。
在一些示例性实施例中,新的配置数据还包括:新的表征TIPC的底层承载方式的信息。
本申请实施例中,新的eBPF程序中包含有新的过滤规则和新的表征TIPC的底层承载方式的信息。
在一些示例性实施例中,根据新的配置数据生成新的eBPF程序之前,该方法还包括:
获取新的配置数据,检查新的配置数据的完整性,在新的配置数据完整的情况下,继续执行根据新的配置数据生成新的eBPF程序的步骤。
在一些示例性实施例中,在接收到配置更新指令的情况下,根据新的配置数据生成新的eBPF程序。如果当前防火墙为激活状态则将新的eBPF程序重新加载到内核中。
本申请实施例提供的数据包过滤方法,通过加载在内核中的eBPF程序实现了对TIPC数据包的识别和过滤,不需要自定义的内核代码补丁,且对内核版本变化不敏感。
第二方面,本申请另一个实施例提供一种电子设备,包括:
至少一个处理器;
存储器,存储器上存储有至少一个程序,当至少一个程序被至少一个处理器执行时,实现上述任意一种数据包过滤方法。
其中,处理器为具有数据处理能力的器件,其包括但不限于中央处理器(CPU)等;存储器为具有数据存储能力的器件,其包括但不限于随机存取存储器(RAM,更具体如SDRAM、DDR等)、只读存储器(ROM)、带电可擦可编程只读存储器(EEPROM)、闪存(FLASH)。
在一些实施例中,处理器、存储器通过总线相互连接,进而与计算设备的其它组件连接。
第三方面,本申请另一个实施例提供一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现上述任意一种数据包过滤方法。
图8为本申请另一个实施例提供的数据包过滤装置的组成框图。
第四方面,参照图8,本申请另一个实施例提供一种数据包过滤装置,包括:
匹配模块801,用于在通过已加载的eBPF程序识别内核需要传输的数据包为TIPC数据包的情况下,通过eBPF程序将数据包与预先设置的过滤规则进行匹配得到匹配结果;
处理模块802,用于通过eBPF程序根据匹配结果确定对数据包进行过滤。
在一些示例性实施例中,还包括:
生成模块803,用于根据预先设置的配置数据生成eBPF程序;其中,配置数据包括过滤规则;
加载模块804,用于将eBPF程序加载到内核中。
在一些示例性实施例中,生成模块803还用于:
根据新的配置数据生成新的eBPF程序;其中,新的配置数据包括:新的过滤规则;
加载模块804还用于:将新的eBPF程序重新加载到内核中。
在一些示例性实施例中,配置数据还包括以下至少之一:表征TIPC的底层承载方式的信息、TIPC所使用的UDP端口号。
在一些示例性实施例中,匹配模块801具体用于采用以下方式实现通过已加载的eBPF程序识别内核需要传输的数据包为透明进程间通信TIPC数据包:
通过eBPF程序根据表征TIPC的底层承载方式的信息识别数据包为TIPC数据包。
在一些示例性实施例中,匹配模块801具体用于采用以下方式实现通过eBPF程序根据表征TIPC的底层承载方式的信息识别数据包为TIPC数据包:
在表征TIPC的底层承载方式的信息为表征以太网承载方式的信息的情况下,通过eBPF程序解析数据包的以太网帧头得到帧类型;
通过eBPF程序根据帧类型判断数据包为TIPC数据包。
在一些示例性实施例中,匹配模块801具体用于采用以下方式实现通过eBPF程序根据表征TIPC的底层承载方式的信息识别数据包为TIPC数据包:
在表征TIPC的底层承载方式的信息为表征用户数据报协议UDP承载方式的信息的情况下,通过eBPF程序依次解析数据包的以太网帧头、互联网协议IP头和UDP头得到UDP端口号;
通过eBPF程序根据UDP端口号判断数据包为TIPC数据包。
在一些示例性实施例中,匹配模块801具体用于采用以下方式实现通过eBPF程序将数据包与预先设置的过滤规则进行匹配得到匹配结果:
通过eBPF程序解析数据包的TIPC协议头得到特征信息;
通过eBPF程序将特征信息与过滤规则进行匹配得到匹配结果。
在一些示例性实施例中,处理模块802具体用于采用以下方式至少之一实现通过eBPF程序根据匹配结果确定对数据包进行过滤:
在匹配结果为数据包与过滤规则匹配的情况下,对数据包进行阻拦;
在匹配结果为数据包与过滤规则不匹配的情况下,对数据包进行放行。
在一些示例性实施例中,内核为专用硬件的内核。
本申请实施例的数据包过滤装置可以设置在业务节点上,也可以设置在专用的网络处理设备上。
上述数据包过滤装置的具体实现过程与前述实施例的数据包过滤方法的具体实现过程相同,这里不再赘述。
图9为本申请实施例提供的数据包过滤装置的一种可实现示意图。如图9所示,数据包过滤装置包括:eBPF程序模块901和管理模块902。
其中,eBPF程序模块901运行在内核态,用于对内核需要传输的数据包进行识别和过滤。具体的,在识别数据包为TIPC数据包的情况下,将数据包与预先设置的过滤规则进行匹配得到匹配结果;用于通过eBPF程序根据匹配结果确定对数据包进行过滤。
其中,管理模块902运行在用户面,用于对eBPF程序模块401的过滤规则和TIPC的底层承载方式进行配置。
其中,管理模块902可以包括用户交互接口,管理模块402可以通过用户交互接口接收用户输入过滤规则和TIPC的底层承载方式,也可以通过用户交互接口接收用户输入的eBPF程序模块901,将eBPF程序模块901加载到内核中供内核直接调用。
其中,eBPF程序模块901和管理模块902可以同时部署在业务节点上,如图10所示;也可以同时部署在专用的网络处理设备上,如图11所示;也可以是eBPF程序模块901部署在业务节点的智能网卡上,管理模块902部署在业务节点上,如图12所示。
图10、图12、图11的部署成本依次递增,但是处理性能和安全性也依次递增。
下面描述管理模块902的工作处理流程,如图13所示,管理模块902的工作处理流程包括:
步骤1300、在启动运行时,读取预先设置的配置数据,检查配置数据的完整性,在配置数据完整的情况下,执行步骤1301;在配置数据不完整的情况下,结束本流程。
步骤1301、根据配置数据生成eBPF程序。
步骤1302、进入消息处理循环,等待外界输入的指令并进行响应:
在接收到防火墙激活指令的情况下,将eBPF程序加载到内核中;
在接收到防火墙禁用指令的情况下,从内核中卸载eBPF程序;
在接收到配置更新指令的情况下,根据新的配置数据生成新的eBPF程序;如果当前防火墙为激活状态则将新的eBPF程序重新加载到内核中;
在接收到数据读取请求的情况下,通过eBPF与用户面的通信机制读取eBPF程序的运行状态数据,显示读取到的eBPF程序的运行状态数据;
在接收到防火墙禁用指令的情况下,从内核中卸载eBPF程序,并终止自自身运行。
下面描述eBPF程序模块901的工作处理流程,如图14所示,eBPF程序模块901的工作处理流程包括:
步骤1400、接收内核传递过来的内存缓冲区地址,根据内存缓冲区地址从内存缓冲区中读取内核待传输的数据包。
步骤1401、在表征TIPC的底层承载方式的信息为表征以太网承载方式的信息的情况下,执行步骤902;在表征TIPC的底层承载方式的信息为表征UDP承载方式的信息的情况下,执行步骤903。
步骤1402、解析数据包的以太网帧头得到帧类型,根据帧类型判断数据包是否为TIPC数据包;在数据包为TIPC数据包的情况下,执行步骤904;在数据包不是TIPC数据包的情况下,结束本流程。
步骤1403、依次解析数据包的以太网帧头、IP头和UDP头得到UDP端口号,根据UDP端口号判断数据包是否为TIPC数据包;在数据包为TIPC数据包的情况下,执行步骤904;在数据包不是TIPC数据包的情况下,结束本流程。
步骤1404、解析数据包的TIPC协议头得到特征信息。
步骤1405、将特征信息与所有的过滤规则进行匹配,在有任意一个过滤规则与特征信息匹配的情况下,对数据包进行阻拦;在所有过滤规则均匀特征信息不匹配的情况下,对数据包进行放行。
本领域普通技术人员可以理解,上文中所公开方法中的全部或某些步骤、系统、装置中的功能模块/单元可以被实施为软件、固件、硬件及其适当的组合。在硬件实施方式中,在以上描述中提及的功能模块/单元之间的划分不一定对应于物理组件的划分;例如,一个物理组件可以具有多个功能,或者一个功能或步骤可以由若干物理组件合作执行。某些物理组件或所有物理组件可以被实施为由处理器,如中央处理器、数字信号处理器或微处理器执行的软件,或者被实施为硬件,或者被实施为集成电路,如专用集成电路。这样的软件可以分布在计算机可读介质上,计算机可读介质可以包括计算机存储介质(或非暂时性介质)和通信介质(或暂时性介质)。如本领域普通技术人员公知的,术语计算机存储介质包括在用于存储信息(诸如计算机可读指令、数据结构、程序模块或其它数据)的任何方法或技术中实施的易失性和非易失性、可移除和不可移除介质。计算机存储介质包括但不限于RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁存储器、或者可以用于存储期望的信息并且可以被计算机访问的任何其它的介质。此外,本领域普通技术人员公知的是,通信介质通常包含计算机可读指令、数据结构、程序模块或者诸如载波或其它传输机制之类的调制数据信号中的其它数据,并且可包括任何信息递送介质。
本文已经公开了示例实施例,并且虽然采用了具体术语,但它们仅用于并仅应当被解释为一般说明性含义,并且不用于限制的目的。在一些实例中,对本领域技术人员显而易见的是,除非另外明确指出,否则可单独使用与特定实施例相结合描述的特征、特性和/或元素,或可与其它实施例相结合描述的特征、特性和/或元件组合使用。因此,本领域技术人员将理解,在不脱离由所附的权利要求阐明的本申请的范围的情况下,可进行各种形式和细节上的改变。

Claims (13)

1.一种数据包过滤方法,包括:
在通过已加载的扩展的伯克利包过滤器eBPF程序识别内核需要传输的数据包为透明进程间通信TIPC数据包的情况下,通过所述eBPF程序将所述数据包与预先设置的过滤规则进行匹配得到匹配结果;
通过所述eBPF程序根据所述匹配结果确定对所述数据包进行过滤。
2.根据权利要求1所述的数据包过滤方法,在通过已加载的扩展的伯克利包过滤器eBPF程序识别内核需要传输的数据包为透明进程间通信TIPC数据包之前,该方法还包括:
根据预先设置的配置数据生成所述eBPF程序;其中,所述配置数据包括所述过滤规则;
将所述eBPF程序加载到所述内核中。
3.根据权利要求2所述的数据包过滤方法,所述将所述eBPF程序加载到所述内核中后,在所述内核有数据包需要传输之前,该方法还包括:
根据新的配置数据生成新的eBPF程序;其中,所述新的配置数据包括:新的过滤规则;
将所述新的eBPF程序重新加载到所述内核中。
4.根据权利要求2所述的数据包过滤方法,所述配置数据还包括以下至少之一:表征TIPC的底层承载方式的信息、TIPC所使用的用户数据报协议UDP端口号。
5.根据权利要求1所述的数据包过滤方法,其中,所述通过已加载的扩展的伯克利包过滤器eBPF程序识别内核需要传输的数据包为透明进程间通信TIPC数据包包括:
通过所述eBPF程序根据表征TIPC的底层承载方式的信息识别所述数据包为所述TIPC数据包。
6.根据权利要求5所述的数据包过滤方法,其中,所述通过所述eBPF程序根据所述表征TIPC的底层承载方式的信息识别所述数据包为所述TIPC数据包包括:
在所述表征TIPC的底层承载方式的信息为表征以太网承载方式的信息的情况下,通过所述eBPF程序解析所述数据包的以太网帧头得到帧类型;
通过所述eBPF程序根据所述帧类型判断所述数据包为所述TIPC数据包。
7.根据权利要求5所述的数据包过滤方法,其中,所述通过所述eBPF程序根据所述表征TIPC的底层承载方式的信息识别所述数据包为所述TIPC数据包包括:
在所述表征TIPC的底层承载方式的信息为用户数据报协议UDP承载方式的情况下,通过所述eBPF程序依次解析所述数据包的以太网帧头、互联网协议IP头和UDP头得到UDP端口号;
通过所述eBPF程序根据所述UDP端口号判断所述数据包为所述TIPC数据包。
8.根据权利要求1所述的数据包过滤方法,其中,所述通过所述eBPF程序将所述数据包与预先设置的过滤规则进行匹配得到匹配结果包括:
通过所述eBPF程序解析所述数据包的TIPC协议头得到特征信息;
通过所述eBPF程序将所述特征信息与所述过滤规则进行匹配得到所述匹配结果。
9.根据权利要求1所述的数据包过滤方法,其中,所述通过所述eBPF程序根据所述匹配结果确定对所述数据包进行过滤包括以下至少之一:
在所述匹配结果为所述数据包与所述过滤规则匹配的情况下,对所述数据包进行阻拦;
在所述匹配结果为所述数据包与所述过滤规则不匹配的情况下,对所述数据包进行放行。
10.根据权利要求1所述的数据包过滤方法,其中,所述内核为专用硬件的内核。
11.一种电子设备,包括:
至少一个处理器;
存储器,所述存储器上存储有至少一个程序,当所述至少一个程序被所述至少一个处理器执行时,实现根据权利要求1-10任意一项所述的数据包过滤方法。
12.一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现根据权利要求1-10任意一项所述的数据包过滤方法。
13.一种数据包过滤装置,包括:
匹配模块,用于在通过已加载的扩展的伯克利包过滤器eBPF程序识别内核需要传输的数据包为透明进程间通信TIPC数据包的情况下,通过所述eBPF程序将所述数据包与预先设置的过滤规则进行匹配得到匹配结果;
处理模块,用于通过所述eBPF程序根据所述匹配结果确定对所述数据包进行过滤。
CN202110689119.4A 2021-06-21 2021-06-21 数据包过滤方法和装置、电子设备、计算机可读存储介质 Pending CN115514508A (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN202110689119.4A CN115514508A (zh) 2021-06-21 2021-06-21 数据包过滤方法和装置、电子设备、计算机可读存储介质
PCT/CN2022/095438 WO2022267815A1 (zh) 2021-06-21 2022-05-27 数据包过滤方法和装置、电子设备、和计算机可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110689119.4A CN115514508A (zh) 2021-06-21 2021-06-21 数据包过滤方法和装置、电子设备、计算机可读存储介质

Publications (1)

Publication Number Publication Date
CN115514508A true CN115514508A (zh) 2022-12-23

Family

ID=84499377

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110689119.4A Pending CN115514508A (zh) 2021-06-21 2021-06-21 数据包过滤方法和装置、电子设备、计算机可读存储介质

Country Status (2)

Country Link
CN (1) CN115514508A (zh)
WO (1) WO2022267815A1 (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115883255A (zh) * 2023-02-02 2023-03-31 中信证券股份有限公司 数据过滤方法、设备以及计算机可读介质
CN116545978A (zh) * 2023-05-16 2023-08-04 深圳市石犀科技有限公司 数据处理方法、装置、系统、可读存储介质及进口网卡
CN118312243A (zh) * 2024-06-07 2024-07-09 芯云晟(杭州)电子科技有限公司 智能网卡的eBPF卸载方法、基于eBPF卸载的可编程RSS方法及装置

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115801482A (zh) * 2023-02-08 2023-03-14 银河麒麟软件(长沙)有限公司 云原生环境下基于eBPF的组播实现方法、系统及介质

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2542396A (en) * 2015-09-18 2017-03-22 Telesoft Tech Ltd Methods and Apparatus for Detecting Patterns in Data Packets in a Network
CN106452925B (zh) * 2016-12-02 2021-01-05 华为技术有限公司 在nfv系统中检测故障的方法、装置和系统
CN111984290B (zh) * 2020-08-06 2022-08-16 锐捷网络股份有限公司 嵌入式设备升级的方法、嵌入式设备及存储介质
CN112367196B (zh) * 2020-10-30 2023-03-21 锐捷网络股份有限公司 一种检测网络通信故障的方法、装置及电子设备

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115883255A (zh) * 2023-02-02 2023-03-31 中信证券股份有限公司 数据过滤方法、设备以及计算机可读介质
CN116545978A (zh) * 2023-05-16 2023-08-04 深圳市石犀科技有限公司 数据处理方法、装置、系统、可读存储介质及进口网卡
CN116545978B (zh) * 2023-05-16 2024-05-17 深圳市石犀科技有限公司 数据处理方法、装置、系统、可读存储介质及进口网卡
CN118312243A (zh) * 2024-06-07 2024-07-09 芯云晟(杭州)电子科技有限公司 智能网卡的eBPF卸载方法、基于eBPF卸载的可编程RSS方法及装置

Also Published As

Publication number Publication date
WO2022267815A1 (zh) 2022-12-29

Similar Documents

Publication Publication Date Title
CN115514508A (zh) 数据包过滤方法和装置、电子设备、计算机可读存储介质
CN108111523B (zh) 数据传输方法和装置
CN112585915B (zh) 控制网络系统中数据传输的装置和方法
US6636521B1 (en) Flexible runtime configurable application program interface (API) that is command independent and reusable
CN112671860B (zh) 用于kubernetes集群的服务访问方法、系统、电子设备及介质
CN112532538A (zh) 流量的控制方法、装置、电子设备及计算机可读存储介质
US11500699B2 (en) Communication of data between virtual processes
CN111800490A (zh) 获取网络行为数据的方法、装置及终端设备
WO2022068744A1 (zh) 获取报文头信息、生成报文的方法、设备及存储介质
US20120140640A1 (en) Apparatus and method for dynamically processing packets having various characteristics
CN110191200A (zh) 网络访问方法、装置、电子设备和计算机可读介质
CN114826969B (zh) 网络连通性检查方法、装置、设备及存储介质
CN110073644B (zh) 信息处理方法和装置
CN112511438B (zh) 一种利用流表转发报文的方法、装置及计算机设备
CN114697387A (zh) 数据包传输方法、装置及存储介质
CN116016687B (zh) 一种基于dpdk的报文分流方法及系统
CN115033407B (zh) 一种适用于云计算的采集识别流量的系统和方法
CN115695013A (zh) 一种流量重定向方法、装置、电子设备及存储介质
Cisco
Cisco
US10754661B1 (en) Network packet filtering in network layer of firmware network stack
KR102354062B1 (ko) 직접 메모리 액세스 제어 장치 및 그 작동 방법
BR102019009234A2 (pt) dispositivo de rede e método para processar o tráfego de rede com estrutura sdn de modo dinâmico e independente de protocolo
CN118606079B (zh) 一种基于socket接口的通信方法和系统
CN113890789B (zh) 适用于数据中心的udp隧道流量的分流方法、流量转发方法

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