发布信息

基于eBPF和应用识别技术的网络控制方法和系统与流程

作者:admin      2022-08-31 17:07:08     268



电子通信装置的制造及其应用技术基于ebpf和应用识别技术的网络控制方法和系统技术领域1.本技术涉及计算机网络领域,尤其涉及一种基于ebpf和应用识别技术的网络控制方法和系统。背景技术:2.目前,随着云和网络技术的演进,qos(服务质量,quality of service)、acl(访问控制列表,access control list)、路由选路等网络控制功能被广泛应用到网关系统中。但是,一方面这些功能相对比较复杂,在使用配置上对用户有较高的门槛,另一方面随着网络内容越来越丰富,用户已不再满足于四层的网络控制方案,希望有更精细化的网络控制方案。技术实现要素:3.基于此,本发明提供了基于ebpf(extended berkeley packet filter,扩展的伯克利包过滤)和应用识别技术的网络控制方案,除了将网络控制精细化到应用维度外,还可以让网络控制更加的稳定和易用。4.根据本技术的第一个方面,提供一种基于ebpf和应用识别技术的网络控制方法,应用于应用识别控制器,其包括:5.接收来自数据处理系统的网络控制规则;6.接收来自ebpf处理程序模块的会话表,所述会话表包括一个或多个会话;以及7.响应于所述会话表中第一会话没有超时,在所述第一会话已经被应用识别引擎识别出应用标识符的情况下,根据所述网络控制规则更新所述第一会话的网络控制动作。8.根据本技术的第二个方面,提供一种基于ebpf和应用识别技术的网络控制方法,应用于ebpf处理程序模块,其包括:9.接收进入所述ebpf处理程序模块的数据包;以及10.在所述数据包对应的会话已经建立且所述数据包对应的会话具有控制动作标记的情况下,根据所述控制动作标记对所述数据包进行控制动作标记。11.根据本技术的第三个方面,提供一种基于ebpf和应用识别技术的网络控制系统,包括数据处理系统、应用识别引擎、应用识别控制器、ebpf处理程序模块,其中:12.所述数据处理系统用于向所述应用识别控制器下发网络控制规则;13.所述应用识别引擎用于从虚拟的镜像流量网口读取数据包,对镜像数据包进行应用识别分析,并将应用识别结果传递给所述应用识别控制器;14.所述应用识别控制器用于执行第一个方面所述的方法;15.所述ebpf处理程序模块用于执行第二个方面所述的方法。16.根据本技术的第四个方面,提供一种电子设备,包括:17.处理器以及存储器。存储器存储有计算机指令,当所述计算机指令被处理器执行时,处理器执行如第一个方面和第二个方面所述的方法。18.根据本技术的第五个方面,提供一种非瞬时性计算机存储介质,存储有计算机程序,当所述计算机程序被多个处理器执行时,使得所述处理器执行如第一个方面和第二个方面所述的方法。19.根据本技术提供的一种基于应用的网络控制方案,将网络控制精细化到应用维度,一方面,提供了一种基于ebpf的数据包镜像和打标方法,对比传统内核模块,更加的稳定、安全和易用;另一方面,提供了一种解耦应用识别引擎的方法,不用对应用引擎进行深度适配,可以任意选择商用或者自研应用识别引擎。附图说明20.为了更清楚地说明本技术实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本技术的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的附图,而并不超出本技术要求保护的范围。21.图1是现有技术中网络控制方案的系统示意图。22.图2是根据本技术实施例的基于ebpf和应用识别技术的网络控制方案的系统示意图。23.图3是根据本技术实施例的应用识别控制器的工作流程图。24.图4是根据本技术实施例的ebpf处理程序模块的工作流程图。25.图5(a)是根据本技术一个实施例的应用识别控制器实施的网络控制方法的流程图。26.图5(b)是根据本技术另一个实施例的应用识别控制器实施的网络控制方法的流程图。27.图5(c)是根据本技术再一个实施例的应用识别控制器实施的网络控制方法的流程图。28.图6(a)是根据本技术一个实施例的ebpf处理程序模块实施的网络控制方法的流程图。29.图6(b)是根据本技术另一个实施例的ebpf处理程序模块实施的网络控制方法的流程图。30.图6(c)是根据本技术再一个实施例的ebpf处理程序模块实施的网络控制方法的流程图。31.图7是本发明提供的一种电子设备的结构图。具体实施方式32.下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本技术保护的范围。33.图1是现有技术中网络控制方案的系统示意图。如图1所示,该系统分为用户态和内核态,其中,用户态侧包括数据处理系统和应用识别系统,内核态侧包括应用识别内核模块和网络控制动作模块,其中,网络控制动作模块包括例如qos模块和acl模块。34.在用户态侧,数据处理系统为使用应用识别技术的数据处理系统,它会给应用识别系统下发基于应用的网络控制规则,比如(appid=1,app=app1,acl=drop),其中,appid为应用标识符,通常为一个整数,在应用识别系统中,用于代表一个应用,例如,appid等于1在系统中可能代表应用app1;acl是访问控制列表,acl=drop的意思是acl模块对appid等于1的应用的处理是“丢弃”。对于应用识别系统,其核心功能模块是应用识别引擎,它会对应用识别内核模块拷贝过来的数据包进行应用识别,并根据数据处理系统下发的网络控制规则,对数据包进行控制标记。35.在内核态侧,应用识别内核模块主要有两个功能:一个是将应用识别系统所需的数据包从内核态拷贝到用户态;另一个是配合应用识别系统对数据包进行标记。36.qos(quality of service,服务质量)指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是用来解决网络延迟和阻塞等问题的一种技术模块。对于qos模块,例如linux自带的qos模块(qdisc),如果数据包标记了qos规则,就在这个模块进行处理。37.对于acl模块,例如linux自带的acl模块(netfilter),如果数据包标记了acl规则,在这个模块进行处理。38.图1所示的系统的工作流程包括:39.a.系统启动后,数据处理系统会下发一批基于应用的网络控制规则,保存在应用识别系统中;40.b.数据包先经过应用识别内核模块,如果是应用识别系统所需的数据包,应用识别内核模块会将它拷贝到应用识别系统;41.c.应用识别系统收到数据包后,对数据包进行应用识别,如果该数据包识别出应用结果,会查询数据处理系统下发的网络控制规则,对数据包进行网络控制标记;42.d.数据包在应用识别内核模块被网络控制标记,依次通过qos和acl模块,按照网络控制规则依次被这两个模块处理。43.然而,图1所示的系统的网络控制方案存在如下缺点:44.1、引入内核模块带来的问题45.a.安全性不高,内核模块出错可能导致整个系统崩溃;46.b.移植性较差,不同的内核版本,需要进行重新适配;47.c.应用识别内核模块没有实现自己的会话表,如果某个会话已经识别出应用,此时该会话的数据包仍会被拷贝到应用识别系统进行分析;48.d.开发内核模块,研发周期较长。49.2、系统耦合度高50.a.数据处理系统必须使用应用识别引擎提供的应用名字进行规则下发;51.b.应用识别引擎必须依赖应用识别内核模块才能读取和分析数据包。52.针对现有技术存在的问题,本技术提供一种安全、稳定、低耦合的基于应用识别技术的网络控制方案。53.图2是根据本技术实施例的基于ebpf和应用识别技术的网络控制方案的系统示意图。如图2所示,该系统分为用户态侧和内核态侧,用户态侧包括数据处理系统、应用识别引擎和应用识别控制器,内核态侧包括ebpf处理程序模块和网络控制动作模块,例如qos模块和acl模块。ebpf技术的核心思想是,与其把数据包拷贝到用户态进行过滤,不如把过滤程序(例如,elf文件格式)注入到内核执行;应用识别是一种按照流量中的应用/协议特征对流量进行分类的机制,通过应用识别技术精确识别流量中的各类应用,从而对流量进行精细化的管控。54.在用户态侧,对于数据处理系统,可以使用应用识别技术的数据处理系统,例如sag,它会给应用识别控制器下发基于应用的网络控制规则。在本技术中,数据处理系统下发的网络控制规则可以通过数据处理应用标识符和控制动作映射表以及数据处理应用标识符和应用识别引擎应用标识符映射表来实现,分别如表1和表2所示。55.表1[0056][0057][0058]表2[0059][0060]对于应用识别引擎,从虚拟的镜像流量网口读取数据包,对镜像数据包进行应用识别分析,并将应用识别结果传递给应用识别控制器。[0061]对于应用识别控制器,其接收数据处理系统下发的网络控制规则(如表1和表2所示),和ebpf处理程序模块共享同一份会话数据,接收应用识别引擎对其会话进行应用标记,根据应用识别引擎识别出的应用结果,查询数据处理系统下发的网络控制规则,将会话的应用标记通过映射表转变为会话的网络控制标记。[0062]对于数据处理应用标识符和控制动作映射表在图2所示系统中的作用如下:[0063]i.在整个系统应用前,数据处理系统会根据实际需要,整理一张数据处理应用标识符和控制动作映射表(例如表1所示);[0064]ii.系统应用后,数据处理系统会将这个映射表下发到应用识别控制器;如果数据处理系统需要更新此映射表,也可以进行热升级;[0065]iii.应用识别控制器会定时更新已经识别出数据处理应用标识符的会话的控制动作。[0066]对于数据处理应用标识符和应用识别引擎应用标识符映射表在图2所示系统中的作用如下:[0067]i.在整个系统应用前,数据处理系统会根据自己的需要,整理一张数据处理应用标识符和应用识别引擎应用标识符映射表(例如表2所示);[0068]ii.系统启动后,数据处理系统会将这个映射表下发到应用识别控制器;如果数据处理系统需要更新此映射表,也可以进行热升级;[0069]iii.当应用识别控制器接收到应用识别引擎识别的应用标识符后,会先将这个应用标识符转化为数据处理系统的应用标识符,然后根据数据处理的应用标识符,查询这个会话的控制动作。[0070]在内核态侧,对于ebpf处理程序模块,其接收数据包,建立并维护会话表状态,根据会话状态,选择克隆(clone)数据包到虚拟的镜像流量网口。[0071]对于qos模块,例如linux自带的qos模块(qdisc),如果数据包标记了qos规则,就在这个模块进行处理。[0072]对于acl模块,例如linux自带的acl模块(netfilter),如果数据包标记了acl规则,在这个模块进行处理。[0073]在图2中,网络控制动作模块除了qos模块和acl模块,还可以包括其它网络控制动作模块,例如路由选路模块,nat(network address translation,网络地址转换)模块,应用维度的流量统计模块等。对应不同的网络控制动作,在数据处理系统中整理和下发相应的数据处理应用标识符和控制动作映射表。[0074]在图2的基础上,下面分别介绍应用识别控制器和ebpf处理程序模块的处理流程。[0075]图3是根据本技术实施例的应用识别控制器的工作流程图。如图3所示,该流程包括如下步骤:[0076]步骤0:开始,进入步骤1;[0077]步骤1:接收数据处理系统下发的映射表配置,该映射表配置包括网络控制规则,进入步骤2;[0078]步骤2:遍历会话表的第一个会话,进入步骤3;[0079]步骤3:查看会话是否超时,如果没有超时,进入步骤4;否则进入步骤8;[0080]步骤4:查看会话是否已经被应用识别引擎识别出应用标识符,如果是,进入步骤5;否则进入步骤7;[0081]步骤5:根据网络控制规则将被应用识别引擎识别出应用标识符转换为控制动作标记;[0082]步骤6:更新会话的网络控制动作;进入步骤7;[0083]步骤7:遍历下一个会话,进入步骤3;[0084]步骤8:会话老化,进入步骤7;[0085]步骤9:如果有中断,结束。[0086]图4是根据本技术实施例的ebpf处理程序模块的工作流程图。如图4所示,该流程包括如下步骤:[0087]步骤0:开始,进入步骤1;[0088]步骤1:接收进入ebpf处理程序模块的数据包,进入步骤2;[0089]步骤2:查看数据包对应的会话是否建立,如果是,进入步骤3;否则,进入步骤5;[0090]步骤3:查看数据包的会话是否具有控制动作标记,如果是,进入步骤4;否则,进入步骤6;[0091]步骤4:对数据包进行控制动作标记;进入步骤7;[0092]步骤5:新建会话表,进入步骤6;[0093]步骤6:将数据包拷贝到虚拟的镜像流量网口;进入步骤7;[0094]步骤7:结束。[0095]在图3的基础上,本技术提供一种应用识别控制器实施的网络控制方法,如图5(a)所示,该方法包括如下步骤。[0096]步骤s501,接收来自数据处理系统的网络控制规则。[0097]数据处理系统会给应用识别控制器下发基于应用的网络控制规则。在本技术中,数据处理系统下发的网络控制规则可以通过数据处理应用标识符和控制动作映射表以及数据处理应用标识符和应用识别引擎应用标识符映射表来实现,分别如表1和表2所示。[0098]步骤s502,接收来自ebpf处理程序模块的会话表,所述会话表包括一个或多个会话。[0099]ebpf处理程序模块建立并维护会话表状态,会话表包括一个或多个会话,应用识别控制器接收来自ebpf处理程序模块的会话表。[0100]步骤s503,响应于会话表中第一会话没有超时,在第一会话已经被应用识别引擎识别出应用标识符的情况下,根据网络控制规则更新第一会话的网络控制动作。[0101]对于会话表中的任一个会话,应用识别控制器查看会话是否超时。会话超时表示和该会话表相关的五元组(包括源ip地址,源端口,目的ip地址,目的端口和传输层协议)数据包超过一定的时间都没有来。如果没有超时,查看该会话是否已经被识别引擎识别出应用标识符,如果已经被识别引擎识别出应用标识符,则根据所述网络控制规则更新所述第一会话的网络控制动作。[0102]然而,如果会话超时或者会话未被所述应用识别引擎识别出应用标识符,应用识别控制器会查看会话表中的下一个会话。这样,如图5(b)所示,除了步骤s501、s502和s503,应用识别控制器实施的网络控制方法还可以包括步骤s504。[0103]步骤s504,响应于第一会话超时或第一会话未被应用识别引擎识别出应用标识符的情况下,遍历所述会话表中第一会话的下一个会话。[0104]在出现中断的情况下,应用识别控制器会停止网络控制方法的流程。这样,如图5(c)所示,除了步骤s501、s502、s503和s504,图5所示的方法还可以包括步骤s505。[0105]步骤s505,响应于中断信号,停止更新该第一会话的网络控制动作。[0106]在检测到中断信号的情况下,停止图5(c)所示的网络控制方法的流程,包括停止更新该第一会话的网络控制动作。[0107]在图4的基础上,本技术提供一种ebpf处理程序模块实施的网络控制方法,如图6(a)所示,该方法包括如下步骤。[0108]步骤s601,接收进入ebpf处理程序模块的数据包。[0109]一个数据包进入后,ebpf处理程序模块会基于数据包的五元组建立会话表。会话表用于记录相同五元组的一批数据包的状态。[0110]步骤s602,在该数据包对应的会话已经建立且该数据包对应的会话具有控制动作标记的情况下,根据控制动作标记对该数据包进行控制动作标记。[0111]使用会话表可以简化程序,比如a端和b端之间的一个tcp会话,通过前五个数据包识别出应用后,将应用的控制动作标记在会话上,当第六个数据包来的时候,只要查找会话表即可知道第六个数据包的控制动作标记是什么,而不需要把第六个包再给应用识别引擎识别。[0112]然后,ebpf处理程序模块将具有控制动作标记的数据包发送至网络控制动作模块,例如qos模块和acl模块。网络控制动作模块会根据控制动作标记对数据包进行相应的处理。根据已经识别出的会话的控制动作标记对属于同一会话的数据包进行标记,无需将已经识别出控制动作标记的会话的数据包复制到应用识别引擎进行识别,可以简化对数据包标记的流程。[0113]上面描述了数据包对应的会话已经建立且所述数据包对应的会话具有控制动作标记的情况下,ebpf处理程序模块的处理。在数据包对应的会话未建立的情况下,ebpf处理程序模块需要新建数据包对应的会话,并将该数据包复制到虚拟的镜像流量网口,由应用识别引擎对数据包进行识别。这样,如图6(b)所示,除了步骤s601和s602,ebpf处理程序模块实施的网络控制方法还包括步骤s603和s604。[0114]步骤s603,在该数据包对应的会话未建立的情况下,新建该数据包对应的会话。[0115]步骤s604,将该数据包复制到虚拟的镜像流量网口。[0116]另外,数据包对应的会话已经建立但该数据包的会话不具有控制动作标记的情况下,ebpf处理程序模块将该数据包复制到虚拟的镜像流量网口,由应用识别引擎对数据包进行识别。这样,如图6(c)所示,除了步骤s601、s602、s603和s604,ebpf处理程序模块实施的网络控制方法还包括步骤s605。[0117]步骤s605,在该数据包对应的会话已经建立且该数据包的会话不具有控制动作标记的情况下,将该数据包复制到虚拟的镜像流量网口。[0118]在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。[0119]本技术方案与现有技术的内核模块方案相比,具有如下好处:[0120](1)ebpf程序架构更强调安全和稳定性,使用ebpf程序不需要重新编译内核,此外在ebpf编译的时候会进行程序可行性校验,确保ebpf程序可以运行,不会造成系统的崩溃;[0121](2)整个系统和应用识别引擎耦合度解耦,可以根据场景使用商用或者自研的应用识别引擎,具体来说,一方面,通过数据处理应用标识符和应用识别引擎应用标识符映射表,在应用识别控制器进行应用标识符的转换;另一方面,应用识别引擎通过虚拟的镜像流量网口(例如sniff网络端口)获取数据包进行分析,而不是通过特定的内核模块获取数据包,此功能几乎所有的商用或自研的应用识别引擎都支持;[0122](3)ebpf处理程序模块和应用识别控制器共享同一份会话数据,可以保证识别出应用的会话,数据包不再送往应用识别引擎进行分析,减少了整个系统的负载。[0123]参阅图7,图7提供一种电子设备,包括处理器以及存储器。存储器存储有计算机指令,当计算机指令被处理器执行时,使得处理器执行所述计算机指令从而实现如图5(a)、图5(b)、图5(c)、图6(a)、图6(b)和/或图6(c)所示的方法以及细化方案。[0124]应该理解,上述的装置实施例仅是示意性的,本发明披露的装置还可通过其它的方式实现。例如,上述实施例中所述单元/模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式。例如,多个单元、模块或组件可以结合,或者可以集成到另一个系统,或一些特征可以忽略或不执行。[0125]另外,若无特别说明,在本发明各个实施例中的各功能单元/模块可以集成在一个单元/模块中,也可以是各个单元/模块单独物理存在,也可以两个以上单元/模块集成在一起。上述集成的单元/模块既可以采用硬件的形式实现,也可以采用软件程序模块的形式实现。[0126]所述集成的单元/模块如果以硬件的形式实现时,该硬件可以是数字电路,模拟电路等等。硬件结构的物理实现包括但不局限于晶体管,忆阻器等等。若无特别说明,所述处理器或芯片可以是任何适当的硬件处理器,比如cpu、gpu、fpga、dsp和asic等等。若无特别说明,所述片上缓存、片外内存、存储器可以是任何适当的磁存储介质或者磁光存储介质,比如,阻变式存储器rram(resistive random access memory)、动态随机存取存储器dram(dynamic random access memory)、静态随机存取存储器sram(static random-access memory)、增强动态随机存取存储器edram(enhanced dynamic random access memory)、高带宽内存hbm(high-bandwidth memory)、混合存储立方hmc(hybrid memory cube)等等。[0127]所述集成的单元/模块如果以软件程序模块的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储器中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储器中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本披露各个实施例所述方法的全部或部分步骤。而前述的存储器包括:u盘、只读存储器(rom,read-only memory)、随机存取存储器(ram,random access memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。[0128]本技术实施例还提供一种非瞬时性计算机存储介质,存储有计算机程序,当所述计算机程序被多个处理器执行时,使得所述处理器执行如图5(a)、图5(b)、图5(c)、图6(a)、图6(b)和/或图6(c)所示的方法以及细化方案。[0129]根据本技术提供的一种基于应用的网络控制方案,将网络控制精细化到应用维度;提供了一种基于ebpf的数据包镜像和打标方法,对比传统内核模块,更加的稳定、安全和易用;提供了一种解耦应用识别引擎的方法,不用对应用引擎进行深度适配,可以任意选择商用或者自研应用识别引擎。[0130]以上对本技术实施例进行了详细介绍,本文中应用了具体个例对本技术的原理及实施方式进行了阐述,以上实施例的说明仅用于帮助理解本技术的方法及其核心思想。同时,本领域技术人员依据本技术的思想,基于本技术的具体实施方式及应用范围上做出的改变或变形之处,都属于本技术保护的范围。综上所述,本说明书内容不应理解为对本技术的限制。









图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!




内容声明:本文中引用的各种信息及资料(包括但不限于文字、数据、图表及超链接等)均来源于该信息及资料的相关主体(包括但不限于公司、媒体、协会等机构)的官方网站或公开发表的信息。部分内容参考包括:(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供参考使用,不准确地方联系删除处理!本站为非盈利性质站点,发布内容不收取任何费用也不接任何广告!




免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本文部分文字与图片资源来自于网络,部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理!的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们,情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!

相关内容 查看全部