CN115037654A - 流量统计方法、装置、电子设备及可读存储介质 - Google Patents

流量统计方法、装置、电子设备及可读存储介质 Download PDF

Info

Publication number
CN115037654A
CN115037654A CN202210499823.8A CN202210499823A CN115037654A CN 115037654 A CN115037654 A CN 115037654A CN 202210499823 A CN202210499823 A CN 202210499823A CN 115037654 A CN115037654 A CN 115037654A
Authority
CN
China
Prior art keywords
data
traffic
flow
bpf
application
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
Application number
CN202210499823.8A
Other languages
English (en)
Other versions
CN115037654B (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.)
Vivo Mobile Communication Co Ltd
Original Assignee
Vivo Mobile Communication 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 Vivo Mobile Communication Co Ltd filed Critical Vivo Mobile Communication Co Ltd
Priority to CN202210499823.8A priority Critical patent/CN115037654B/zh
Publication of CN115037654A publication Critical patent/CN115037654A/zh
Application granted granted Critical
Publication of CN115037654B publication Critical patent/CN115037654B/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
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters
    • H04L43/0876Network utilisation, e.g. volume of load or congestion level
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L43/00Arrangements for monitoring or testing data switching networks
    • H04L43/08Monitoring or testing based on specific metrics, e.g. QoS, energy consumption or environmental parameters

Landscapes

  • Engineering & Computer Science (AREA)
  • Environmental & Geological Engineering (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种流量统计方法、装置、电子设备及可读存储介质,属于通信技术领域。该方法包括:通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件。

Description

流量统计方法、装置、电子设备及可读存储介质
技术领域
本申请属于通信技术领域,具体涉及一种流量统计方法、装置、电子设备及可读存储介质。
背景技术
上网流量统计对于移动终端用户和运营商都非常重要,目前对于系统应用与系统服务共享同一个用户标识(User Identification,UID)的情况下,流量都被记录到系统服务这个大类别,或者终端设备中多个系统应用共享同一个UID的情况,流量都被记录到该共享UID下。如此,没有办法把共享UID的应用的流量区分开来。
发明内容
本申请实施例的目的是提供一种流量统计方法、装置、电子设备及可读存储介质,能够解决共享UID的应用的流量无法区分问题。
第一方面,本申请实施例提供了一种流量统计方法,该方法包括:
通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;
在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;
根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件。
第二方面,本申请实施例提供了一种流量统计装置,包括:
应用包名获取模块,用于通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;
存储模块,用于在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;
统计模块,用于根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件。
第三方面,本申请实施例提供了一种电子设备,该电子设备包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种可读存储介质,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如第一方面所述的方法的步骤。
第五方面,本申请实施例提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现如第一方面所述的方法。
第六方面,本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如第一方面所述的方法。
在本申请实施例中,通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件,由此可以对共享UID的应用的流量统计进行粒度细化,将共享同一个UID的系统服务和系统应用的流量区分开来,或者将共享同一个UID的不同应用的流量区分开来,实现共享UID的应用流量的精确统计。
附图说明
图1是本申请实施例的流量统计方法的流程示意图。
图2是本申请实施例的流量统计方法的整体架构示意图之一。
图3是本申请实施例的流量统计方法的整体架构示意图之一。
图4至图8是本申请实施例的流量统计方法的用户界面示意图。
图9是本申请实施例的流量统计装置的结构方框图。
图10是本申请实施例的电子设备的结构方框图。
图11是实现本申请实施例的一种电子设备的硬件结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员获得的所有其他实施例,都属于本申请保护的范围。
本申请的说明书和权利要求书中的术语“第一”、“第二”等是用于区别类似的对象,而不用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施,且“第一”、“第二”等所区分的对象通常为一类,并不限定对象的个数,例如第一对象可以是一个,也可以是多个。此外,说明书以及权利要求中“和/或”表示所连接对象的至少其中之一,字符“/”,一般表示前后关联对象是一种“或”的关系。
下面结合附图,通过具体的实施例及其应用场景对本申请实施例提供的流量统计方法进行详细地说明。
图1是本申请实施例的流量统计方法的流程示意图。如图1所示,本申请实施例的流量统计方法包括以下步骤102至步骤106。
步骤102,通过伯克利包过滤器(Berkeley Packet Filter,BPF)辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名。
执行网络协议通信的数据包是指终端设备上共享UID的目标应用连接网络上网时产生的传输数据包,预定时间内累计的传输数据包大小即为对应目标应用的流量大小。
在Linux网络代码中收、发数据包都是通过套接字缓存(socket buffer,SKB),传输数据包为SKB包。
可选地,在步骤102通过BPF辅助函数,在终端设备的内核空间获取目标应用包名之前,所述方法还包括:通过所述终端设备的用户空间的BPF程序,在所述终端设备执行所述网络协议通信数据包传输的情况下,传入特定套接字缓存偏移量到所述终端设备的内核空间;所述通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名包括:根据所述特定套接字缓存偏移量,通过所述BPF辅助函数在所述终端设备的内核空间获取所述目标应用包名。
在本申请实施例中,终端设备存在应用使用网络流量执行上网行为,则在终端设备的用户空间通过BPF程序设置特定的传输数据包的套接字缓存偏移量,并传入内核空间,用于调用终端设备内核空间的BPF辅助函数在内核空间执行提取数据包传输对应的目标应用的应用包名。
特定套接字缓存偏移量的设置和传入由用户空间用于流量统计的插件BPF程序实现,在终端设备存在应用上网的情况下,对当前每次接收的数据包或发送的数据包均进行特定套接字缓存偏移量的传入。设置特定值的套接字缓存偏移量为内核空间和用户空间事先约定,用于提取数据包传输对应应用的应用包名,包括共享UID的应用和非共享UID的应用。
通常,现有的套接字缓存偏移量例如不会超过0xffff,如果超过这个偏移量内核对应的流量统计的调用函数认为数据包是异常的,内核空间会返回异常报错信息。
在本申请实施例中,设置特定套接字缓存偏移量为显著区别于现有的0xffff偏移量的数值,例如设置特定套接字缓存偏移量为远大于0xffff的0xffffff。
内核空间在接收到用户空间传入的特定值的套接字缓存偏移量后,会通过BPF辅助函数在内核空间提取数据包传输对应应用的应用包名,同时还通过BPF辅助函数在内核空间获取包括用户标识(UID)和流量大小等流量数据。
可选地,所述通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,包括:通过所述BPF辅助函数,在所述内核空间获取数据包传输对应的调用任务的任务信息;从所述任务信息中提取数据包传输对应的目标应用的目标应用包名。
在内核空间,数据包传输对应应用的应用包名可以从数据包对应的调用任务的任务信息中提取。
调用任务的任务信息中纪录有调用任务当前调用的应用名称的字符,由此提取对应的字符可以得到数据包传输对应应用的应用包名。
具体地,在任务信息中不包括线程名称对应字符的情况下,从任务信息中的最后一个字符向前提取预定位数的字符,得到数据包传输对应应用的应用包名。
在任务信息中包括线程名称对应字符的情况下,从任务信息中去除线程名称对应字符之外的最后一个字符向前提取任务信息中预定位数的字符,得到数据包传输对应应用的应用包名。
传输数据包对应的调用任务的任务信息,例如安卓系统的task_comm中准确记录了调用者的身份,即调用任务当前调用的应用的名称,也即应用包名(packagename)。在用户空间的套接字,例如socket初始化时,内核空间会进行套接字sock初始化的操作,当前调用任务的任务信息task_comm中准确记录了调用者的身份。
通常,任务信息task_comm所记录的是com.android.xxx或者com.android.xxx:xxx这种类型的数据,其中“com.android.xxx”即对应传输数据包对应的应用的应用包名。受到Linux内核的限制,可从task comm中从右向左取一定位数的数据,例如16位的数值,即只存储一部分的应用的应用包名。
在一个实施例中,在不改变内核空间原有收发包数据结构的情况下,可以根据用户空间实际可存储的位数大小选择对应数量的位数。例如对于安卓系统,在不增加sock结构的情况下,只有一个u64的预留值可进行存储。则名称标识提取的规则是,如果task_comm在如果没有冒号的情况,从最后一个字符向前存储八个字符;在有冒号的情况,因为冒号之后是线程的名称,这个信息是不需要的,因此从冒号开始,从后向前存储前八个字符。
步骤104,在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据。
流量数据为终端设备执行网络协议通信数据包传输对应应用的流量数据,流量数据除了包括应用包名之外,还包括接收数据包大小、发送数据包大小、用户标识(UID)和网卡名称等用于流量统计的参数。
流量数据通过BPF辅助函数在终端设备的内核空间获取,并存储到BPF数据图中。
可选地,所述在所述内核空间存储流量数据至BPF数据图中之前,所述方法还包括:在所述终端设备的用户空间创建BPF数据图,其中,所述BPF数据图的维度包括接收数据包大小、发送数据包大小、用户标识UID、网卡名称、以及应用包名。
创建的BPF数据图可以用于BPF辅助函数从内核空间读取的流量数据的更新,每接收或发送一个数据包,则BPF辅助函数读取对应的流量数据,并更新到该数据包传输对应的BPF数据图中,以便于用户空间后续的流量统计。步骤106,根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件。
从BPF数据图中读取的流量数据为缓存数据,在终端设备关机再开机后数据则不会存在,由此可以将读取的流量数据保存到流量统计文件中,便于终端设备异常开关机后流量统计不会受到影响。
由此,根据从BPF数据图中读取的流量数据,在用户空间将传输数据包的流量大小保存到应用包名对应粒度的流量统计文件中。
如上文所述,流量统计文件的维度包括接收数据包大小、发送数据包大小、UID、网卡名称、以及应用包名。因此,根据接收数据包大小、发送数据包大小、网卡名称,可以确定传输数据包对应的流量大小,通过UID和应用包名,可以确定传输数据包对应的共享UID的应用。由此,根据传输数据包对应的流量统计文件,可以将传输数据包的流量大小统计到共享UID的应用下。
例如,传输数据包的UID为系统服务和系统应用“**音乐”共用的共享UID,应用包名为系统应用“**音乐”的名称。则通过该共享UID和该应用包名,可以确定传输数据包对应唯一的系统应用“**音乐”。因此,可以将该传输数据包的流量大小统计到该系统应用“**音乐”中。
由此,可以对共享UID的应用的流量统计进行粒度细化,将共享于同一个UID的系统服务和系统应用的流量区分开来,或者将共享同一个UID的不同应用的流量区分开来,实现共享UID的应用流量的精确统计。
通过上述实施例,可以将共享UID的应用的流量统计从系统服务中脱离出来,或者共享UID的不同应用的流量统计区分开单独进行。
为了享受高性能的专用流量服务,终端设备的部分应用可能存在签约切片流量服务的情况,这种应用的流量使用会存在一般流量和切片流量。为了对共享UID的应用不同类型的流量分别进行统计,在一个实施例中,可选地,所述在所述终端设备的用户空间将所述流量数据统计至流量统计文件之前,所述方法还包括:通过包管理服务,在所述终端设备的用户空间获取应用标识APPID;
所述在所述终端设备的用户空间将所述流量数据统计至流量统计文件中包括:根据所述APPID,在所述终端设备的用户空间将所述流量数据统计至流量统计文件中,所述流量数据包括所述APPID对应的切片流量数据和一般流量数据。
相应地,所述在所述终端设备的用户空间将所述流量数据统计至流量统计文件中之前,所述方法还包括:在所述终端设备的用户空间创建流量统计文件,其中,所述流量统计文件的维度包括接收数据包大小、发送数据包大小、UID、网卡名称、应用包名、以及APPID。
APPID用于标识应用签约有切片流量,APPID在目标应用签约切片服务后存储在用户空间中,并非从内核空间读取。因此,在终端设备的用户空间将流量数据统计至流量统计文件中后,如果该传输数据包对应应用,则需要从用户空间查询该应用是否存在对应的APPID。如果是,将该传输数据包对应的流量大小统计到该应用的切片流量中;否则,将该传输数据包对应的流量大小统计到该应用的一般流量中。
由此,可以对共享UID的应用的流量统计再进一步进行粒度细化,将共享UID的应用的切片流量和一般流量区分开来,实现流量的精确统计。
下面,结合图2和图3对本申请实施例的流量统计方法的整体架构示意图进行描述。
如图2所示,整体架构一共分为三个部分Linux内核(Linux kernel)、本地层(Native Layer)和架构层(Framework Layer),其中Linux kernel对应内核空间,NativeLayer和Framework Layer对应用户空间。
主要包括内核空间的BPF与用户空间的Native Layer的交互,用户空间的Framework Layer与Native Layer的交互。
如图2,BPF程序(BPF Program)是运行在用户空间的流量数据统计插件,该插件在安卓(android)或者ios侧都可以实现,这里以android侧举例说明。BPF Program通常称为prog.bpf,其是用系统调用bpf()与内核空间侧进行通信,比如初始化生成用于流量数据存储的BPF数据图(Map),以及在内核函数钩子节点(kernel functions hook点)中可以进行BPF Map的更新等,同时可以调用到BPF过滤器的辅助函数(Bpf helper function)这个标准方式获取内核空间中的流量数据。针对流量数据获取,是kernel functions hook点其中之一的套接字过滤器(SK Filter)这个hook点进行的。存在SK Filter的辅助函数很有限,仅有几个,并且Bpf helper function需要被BPF过滤器验证。
首先,在用户空间通过prog.bpf新增了BPF Map,用于存储流量数据对应的Rx(接收包大小)、Tx(发送包大小)、UID(用户ID)、Interface(网卡名称)、Packagename(应用包名)。Packagename的获取采用使用bpf_skb_load_bytes的Bpf helper function执行特定值的套接字偏移量处理实现。
该bpf_skb_load_bytes满足以下几个特征:
bpf_skb_load_bytes位于SK Filter的Bpf helper function中,在用户空间prog.bpf对应的SK Filter的hook点中可以被调用到。
该Bpf helper function本身是操作SKB,可以通过内核空间的sock与SKB的联系读取到Packagename的信息。
bpf_skb_load_bytes可以通过特定值的套接字缓存偏移量,保证BPF校验通过,并且通过用户空间的bpf.prog传入特定值的套接字缓存偏移量,在bpf_skb_load_bytes检测到是特定值,则进行Package name读取的动作,从而获得packagename,并返回给bpf.prog。
Bpf helper function在BPF工具存在的内核版本中已包含。
在hook节点当有套接字缓存数据包传输时,内核空间的Bpf helper function提取的流量数据由bpf.prog更新到BPF Map中。Framework layer可以定期去读取这个Map的数值,再根据这些数据的维度进行数据的整理,存储到对应的流量统计文件当中。其中参数UID、Packagename和切片标识appid可以由包管理服务(PackageManagrService)负责,Rx、Tx、Interface可以由网络统计服务(NetworkStatsService)负责。
此外,在存储流量数据到流量统计文件之前时,Framework layer通过和包管理服务交互,确定当前传输数据包属于应用还是系统服务,如果确定是属于应用,则统计到该应用的流量;如果确定是属于系统服务,由于系统服务较多,这里可统一计算成系统服务的流量。
类似于Native Layer的bpf.prog,在Framework层中,也可以生成一个流量统计文件去保存从BPF Map读取的流量数据,流量数据的维度除了Rx、Tx、UID、Interface、Packagename之外,还可以增加一个针对一般流量和切片流量的维度APPID。APPID只能通过Framework层和包管理服务交互,确定传输数据包的流量是否是属于切片流量,如果包管理服务可以查询到传输数据包所属的应用的APPID,则说明该应用使用的是切片流量,则APPID设置为true,反之则设置为false,从而对一般流量和切片流量做出区分。
举例说明,比如共享UID 1000对应系统服务和系统音乐,假设系统音乐签约了切片服务,则对于系统服务来说,通过以上维度可以确定系统服务只有一般流量,而系统音乐有切片流量和一般流量。本身流量限制和禁网规则都是通过UID的方式进行的,由于本申请实施例增加了应用包名的维度和应用标识的维度,因此可以在共享UID的情况下,单独统计系统音乐的切片流量,并且可以做流量的限制以及单独的禁网规则。
在一个实施例中,还可以基于不同粒度的流量数据统计分别显示对应流量数据给前端用户。
可选地,该方法还包括:接收用户的第一输入;响应于所述第一输入,显示所述目标应用的流量数据,所述流量数据为所述流量统计文件中所述目标应用的应用包名对应的流量数据。
在该实施例中,对于流量数据包括应用包名的情况下,可以显示出共享UID的应用的流量数据。
可选地,所述方法还包括:接收用户的第二输入;响应于所述第二输入,显示所述目标应用的切片流量数据和一般流量数据,所述切片流量数据和所述一般流量数据为所述流量统计文件中所述目标应用的APPID对应的流量数据。
在该实施例中,对于流量数据包括应用包名和应用标识的情况下,不仅可以显示出共享UID的应用的流量数据,还可以显示出该共享UID的应用中流量数据包括的切片流量数据和一般流量数据。
下面结合附图4到图8的示例,对流量数据的显示进行展开描述。
图4是流量统计的主用户界面,这里有一般应用的流量统计,比如通信应用A,游戏应用B等,这里一般的应用指的是不属于共享UID的应用,共享UID例如在图4中以“Android系统服务与应用”作为示例。这里,可以按日维度或者月维度去细分,然后展示各个应用的流量。对于一般的应用,如图4所示,右侧提供控件用户可以点击进入该应用流量细则。对于共享UID则没有该控件。
点击“Android系统服务与应用”控件,进入到图5,会有一个子列表展开,这里会把系统服务和应用进行分类,由于系统服务类别较多,每个系统服务本身消耗流量也很少,这里统一归类为系统服务,而其他应用这里单独去计算流量,比如“xx音乐”,“xx主题”等,这里每个子列项都有一个控件。
对于系统服务,点击控件进入系统服务的细则界面。由于系统服务是Android系统的内在服务,通常不可能去和运营商签约切片服务,因此这里的流量数据统计只有一般流量数据的统计。
对于应用点击控件,比如这里是“xx音乐”,如果用户没有签约切片服务,那么这里显示和图6一样。如果签约切片服务,则如图7显示,流量统计分为一般流量和切片流量,这里的切片流量和一般流量可通过不同的标识区分。
当系统流量有签约切片服务时,这个用户界面可以通过包管理服务获取到是否签约的信息,如图8所示,用户界面上会出现两个选项,第一个是默认使用切片,由于签约的应用是默认开启切片功能的,这里如果用户感觉系统应用切片流量异常的话,可以自行选择关闭。或者用户可以设置一个流量的阈值,当用户希望监控某个系统应用切片时,可以自己设定,比如xxx音乐设定了200MB。
当达到提醒上限时,如图8左图所示弹出通知,如果用户点击通知框可以直接跳转至图8中右图,方便用户自行选择关闭。
通过给提供了一种展示给用户的粒度统计流量显示,可以使得用户清楚了解共享UID的应用的流量的使用情况。此外,可便于用户针对某个应用设置切片开关以及流量提醒阈值。
本申请实施例提供的流量统计方法,执行主体可以为流量统计装置。本申请实施例中以流量统计装置执行流量统计方法为例,说明本申请实施例提供的流量统计装置。
如图9所示,流量统计装置800包括:
应用包名获取模块820,用于通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;
存储模块840,用于在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;
统计模块860,用于根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件。
可选地,流量统计装置800还包括:
应用标识获取模块880,用于在所述终端设备的用户空间将所述流量数据统计至流量统计文件之前,通过包管理服务,在所述终端设备的用户空间获取应用标识APPID;
所述统计模块860,具体用于:
根据所述APPID,在所述终端设备的用户空间将所述流量数据统计至流量统计文件中,所述流量数据包括所述APPID对应的切片流量数据和一般流量数据。
可选地,应用包名获取模块820,具体用于:
通过所述BPF辅助函数,在所述内核空间获取数据包传输对应的调用任务的任务信息;
从所述任务信息中提取数据包传输对应的目标应用的目标应用包名。
可选地,流量统计装置800还包括:
传入模块,用于在终端设备的内核空间获取目标应用包名之前,通过所述终端设备的用户空间的BPF程序,在所述终端设备执行所述网络协议通信数据包传输的情况下,传入特定套接字缓存偏移量到所述终端设备的内核空间;
应用包名获取模块820,具体用于:
根据所述特定套接字缓存偏移量,通过所述BPF辅助函数在所述终端设备的内核空间获取所述目标应用包名。
可选地,流量统计装置800还包括:
第一创建模块,用于在所述内核空间存储流量数据至BPF数据图中之前,在所述终端设备的用户空间创建BPF数据图,其中,所述BPF数据图的维度包括接收数据包大小、发送数据包大小、用户标识UID、网卡名称、以及应用包名。
可选地,流量统计装置800还包括:
第二创建模块,用于在所述终端设备的用户空间将所述流量数据统计至流量统计文件中之前,在所述终端设备的用户空间创建流量统计文件,其中,所述流量统计文件的维度包括接收数据包大小、发送数据包大小、UID、网卡名称、应用包名、以及APPID。
可选地,流量统计装置800还包括:
第一接收模块,用于接收用户的第一输入;
第一显示模块,用于响应于所述第一输入,显示所述目标应用的流量数据,所述流量数据为所述流量统计文件中所述目标应用的应用包名对应的流量数据。
可选地,流量统计装置800还包括:
第二接收模块,用于接收用户的第二输入;
第二显示模块,用于响应于所述第二输入,显示所述目标应用的切片流量数据和一般流量数据,所述切片流量数据和所述一般流量数据为所述流量统计文件中所述目标应用的APPID对应的流量数据。
在本申请实施例中,通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件,由此可以对共享UID的应用的流量统计进行粒度细化,将共享同一个UID的系统服务和系统应用的流量区分开来,或者将共享同一个UID的不同应用的流量区分开来,实现共享UID的应用流量的精确统计。
本申请实施例中的流量统计装置可以是电子设备,也可以是电子设备中的部件,例如集成电路、或芯片。该电子设备可以是终端,也可以为除终端之外的其他设备。。示例性的,电子设备可以为手机、平板电脑、笔记本电脑、掌上电脑、车载电子设备、移动上网装置(Mobile Internet Device,MID)、增强现实(augmented reality,AR)/虚拟现实(virtualreality,VR)设备、机器人、可穿戴设备、超级移动个人计算机(ultra-mobile personalcomputer,UMPC)、上网本或者个人数字助理(personal digital assistant,PDA)等,还可以为个人计算机(personal computer,PC)等,本申请实施例不作具体限定。
本申请实施例中的流量统计装置可以为具有操作系统的装置。该操作系统可以为安卓(Android)操作系统,可以为ios操作系统,还可以为其他可能的操作系统,本申请实施例不作具体限定。
本申请实施例提供的流量统计装置能够实现图1至图8的方法实施例实现的各个过程,为避免重复,这里不再赘述。
可选的,如图10所示,本申请实施例还提供一种电子设备900,包括处理器940和存储器920,存储器920上存储有可在所述处理器940上运行的程序或指令,该程序或指令被处理器940执行时实现上述流量统计方法实施例的各个步骤,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,本申请实施例中的电子设备包括上述的移动电子设备和非移动电子设备。
图11为实现本申请实施例的一种电子设备的硬件结构示意图。
该电子设备1000包括但不限于:射频单元1001、网络模块1002、音频输出单元1003、输入单元1004、传感器1005、显示单元1006、用户输入单元1007、接口单元1008、存储器1009、以及处理器1010等部件。
本领域技术人员可以理解,电子设备1000还可以包括给各个部件供电的电源(比如电池),电源可以通过电源管理系统与处理器1010逻辑相连,从而通过电源管理系统实现管理充电、放电、以及功耗管理等功能。图10中示出的电子设备结构并不构成对电子设备的限定,电子设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置,在此不再赘述。
其中,处理器1010,用于通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件。
可选地,处理器1010,还用于:在所述终端设备的用户空间将所述流量数据统计至流量统计文件之前,通过包管理服务,在所述终端设备的用户空间获取应用标识APPID;所述在所述终端设备的用户空间将所述流量数据统计至流量统计文件中包括:根据所述APPID,在所述终端设备的用户空间将所述流量数据统计至流量统计文件中,所述流量数据包括所述APPID对应的切片流量数据和一般流量数据。
可选地,处理器1010,具体用于:通过所述BPF辅助函数,在所述内核空间获取数据包传输对应的调用任务的任务信息;从所述任务信息中提取数据包传输对应的目标应用的目标应用包名。
可选地,处理器1010,还用于:通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名之前,通过所述终端设备的用户空间的BPF程序,在所述终端设备执行所述网络协议通信数据包传输的情况下,传入特定套接字缓存偏移量到所述终端设备的内核空间;根据所述特定套接字缓存偏移量,通过所述BPF辅助函数在所述终端设备的内核空间获取所述目标应用包名。
可选地,处理器1010,还用于:在所述内核空间存储流量数据至BPF数据图中之前,在所述终端设备的用户空间创建BPF数据图,其中,所述BPF数据图的维度包括接收数据包大小、发送数据包大小、用户标识UID、网卡名称、以及应用包名。
可选地,处理器1010,还用于:在所述终端设备的用户空间将所述流量数据统计至流量统计文件中之前,在所述终端设备的用户空间创建流量统计文件,其中,所述流量统计文件的维度包括接收数据包大小、发送数据包大小、UID、网卡名称、应用包名、以及APPID。
可选地,用户输入单元1007用于:接收用户的第一输入;
显示单元1006用于:响应于所述第一输入,显示所述目标应用的流量数据,所述流量数据为所述流量统计文件中所述目标应用的应用包名对应的流量数据。
可选地,用户输入单元1007用于:接收用户的第二输入;
显示单元1006用于:响应于所述第二输入,显示所述目标应用的切片流量数据和一般流量数据,所述切片流量数据和所述一般流量数据为所述流量统计文件中所述目标应用的APPID对应的流量数据。
在本申请实施例中,通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件,由此可以对共享UID的应用的流量统计进行粒度细化,将共享同一个UID的系统服务和系统应用的流量区分开来,或者将共享同一个UID的不同应用的流量区分开来,实现共享UID的应用流量的精确统计。
应理解的是,本申请实施例中,输入单元1004可以包括图形处理器(GraphicsProcessing Unit,GPU)10041和麦克风10042,图形处理器10041对在视频捕获模式或图像捕获模式中由图像捕获装置(如摄像头)获得的静态图片或视频的图像数据进行处理。显示单元1006可包括显示面板10061,可以采用液晶显示器、有机发光二极管等形式来配置显示面板10061。用户输入单元1007包括触控面板10071以及其他输入设备10072中的至少一种。触控面板10071,也称为触摸屏。触控面板10071可包括触摸检测装置和触摸控制器两个部分。其他输入设备10072可以包括但不限于物理键盘、功能键(比如音量控制按键、开关按键等)、轨迹球、鼠标、操作杆,在此不再赘述。
存储器1009可用于存储软件程序以及各种数据。存储器1009可主要包括存储程序或指令的第一存储区和存储数据的第二存储区,其中,第一存储区可存储操作系统、至少一个功能所需的应用程序或指令(比如声音播放功能、图像播放功能等)等。此外,存储器1009可以包括易失性存储器或非易失性存储器,或者,存储器1009可以包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data Rate SDRAM,DDRSDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synch link DRAM,SLDRAM)和直接内存总线随机存取存储器(Direct Rambus RAM,DRRAM)。本申请实施例中的存储器1009包括但不限于这些和任意其它适合类型的存储器。
处理器1010可包括一个或多个处理单元;可选的,处理器1010集成应用处理器和调制解调处理器,其中,应用处理器主要处理涉及操作系统、用户界面和应用程序等的操作,调制解调处理器主要处理无线通信信号,如基带处理器。可以理解的是,上述调制解调处理器也可以不集成到处理器1010中。
本申请实施例还提供一种可读存储介质,所述可读存储介质上存储有程序或指令,该程序或指令被处理器执行时实现上述流量统计方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
其中,所述处理器为上述实施例中所述的电子设备中的处理器。所述可读存储介质,包括计算机可读存储介质,如计算机只读存储器ROM、随机存取存储器RAM、磁碟或者光盘等。
本申请实施例另提供了一种芯片,所述芯片包括处理器和通信接口,所述通信接口和所述处理器耦合,所述处理器用于运行程序或指令,实现上述流量统计方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
应理解,本申请实施例提到的芯片还可以称为系统级芯片、系统芯片、芯片系统或片上系统芯片等。
本申请实施例提供一种计算机程序产品,该程序产品被存储在存储介质中,该程序产品被至少一个处理器执行以实现如上述流量统计方法实施例的各个过程,且能达到相同的技术效果,为避免重复,这里不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。此外,需要指出的是,本申请实施方式中的方法和装置的范围不限按示出或讨论的顺序来执行功能,还可包括根据所涉及的功能按基本同时的方式或按相反的顺序来执行功能,例如,可以按不同于所描述的次序来执行所描述的方法,并且还可以添加、省去、或组合各种步骤。另外,参照某些示例所描述的特征可在其他示例中被组合。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以计算机软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端(可以是手机,计算机,服务器,或者网络设备等)执行本申请各个实施例所述的方法。
上面结合附图对本申请的实施例进行了描述,但是本申请并不局限于上述的具体实施方式,上述的具体实施方式仅仅是示意性的,而不是限制性的,本领域的普通技术人员在本申请的启示下,在不脱离本申请宗旨和权利要求所保护的范围情况下,还可做出很多形式,均属于本申请的保护之内。

Claims (12)

1.一种流量统计方法,其特征在于,包括:
通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;
在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;
根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件。
2.根据权利要求1所述的方法,所述在所述终端设备的用户空间将所述流量数据统计至流量统计文件之前,所述方法还包括:
通过包管理服务,在所述终端设备的用户空间获取应用标识APPID;
所述在所述终端设备的用户空间将所述流量数据统计至流量统计文件中包括:
根据所述APPID,在所述终端设备的用户空间将所述流量数据统计至流量统计文件中,所述流量数据包括所述APPID对应的切片流量数据和一般流量数据。
3.根据权利要求1或2所述的方法,其特征在于,所述通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,包括:
通过所述BPF辅助函数,在所述内核空间获取数据包传输对应的调用任务的任务信息;
从所述任务信息中提取数据包传输对应的目标应用的目标应用包名。
4.根据权利要求1或2所述的方法,其特征在于,所述通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名之前,所述方法还包括:
通过所述终端设备的用户空间的BPF程序,在所述终端设备执行所述网络协议通信数据包传输的情况下,传入特定套接字缓存偏移量到所述终端设备的内核空间;
所述通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名包括:
根据所述特定套接字缓存偏移量,通过所述BPF辅助函数在所述终端设备的内核空间获取所述目标应用包名。
5.根据权利要求1或2所述的方法,其特征在于,所述在所述内核空间存储流量数据至BPF数据图中之前,所述方法还包括:
在所述终端设备的用户空间创建BPF数据图,其中,所述BPF数据图的维度包括接收数据包大小、发送数据包大小、用户标识UID、网卡名称、以及应用包名。
6.根据权利要求2所述的方法,其特征在于,所述在所述终端设备的用户空间将所述流量数据统计至流量统计文件中之前,所述方法还包括:
在所述终端设备的用户空间创建流量统计文件,其中,所述流量统计文件的维度包括接收数据包大小、发送数据包大小、UID、网卡名称、应用包名、以及APPID。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
接收用户的第一输入;
响应于所述第一输入,显示所述目标应用的流量数据,所述流量数据为所述流量统计文件中所述目标应用的应用包名对应的流量数据。
8.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收用户的第二输入;
响应于所述第二输入,显示所述目标应用的切片流量数据和一般流量数据,所述切片流量数据和所述一般流量数据为所述流量统计文件中所述目标应用的APPID对应的流量数据。
9.一种流量统计装置,其特征在于,包括:
应用包名获取模块,用于通过伯克利包过滤器BPF辅助函数,在终端设备的内核空间获取目标应用包名,所述目标应用包名为终端设备执行网络协议通信数据包传输对应应用的应用包名;
存储模块,用于在所述内核空间存储流量数据至BPF数据图中,所述流量数据包括所述目标应用包名对应的流量数据;
统计模块,用于根据所述BPF数据图中读取的流量数据,在所述终端设备的用户空间将所述流量数据统计至流量统计文件。
10.根据权利要求9所述的装置,还包括:
应用标识获取模块,用于在所述终端设备的用户空间将所述流量数据统计至流量统计文件之前,通过包管理服务,在所述终端设备的用户空间获取应用标识APPID;
所述统计模块,还用于根据所述APPID,在所述终端设备的用户空间将所述流量数据统计至流量统计文件中,所述流量数据包括所述APPID对应的切片流量数据和一般流量数据。
11.一种电子设备,其特征在于,包括处理器和存储器,所述存储器存储可在所述处理器上运行的程序或指令,所述程序或指令被所述处理器执行时实现如权利要求1-8任一项所述的流量统计方法的步骤。
12.一种可读存储介质,其特征在于,所述可读存储介质上存储程序或指令,所述程序或指令被处理器执行时实现如权利要求1-8任一项所述的流量统计方法的步骤。
CN202210499823.8A 2022-05-09 2022-05-09 流量统计方法、装置、电子设备及可读存储介质 Active CN115037654B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202210499823.8A CN115037654B (zh) 2022-05-09 2022-05-09 流量统计方法、装置、电子设备及可读存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202210499823.8A CN115037654B (zh) 2022-05-09 2022-05-09 流量统计方法、装置、电子设备及可读存储介质

Publications (2)

Publication Number Publication Date
CN115037654A true CN115037654A (zh) 2022-09-09
CN115037654B CN115037654B (zh) 2024-01-09

Family

ID=83119919

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202210499823.8A Active CN115037654B (zh) 2022-05-09 2022-05-09 流量统计方法、装置、电子设备及可读存储介质

Country Status (1)

Country Link
CN (1) CN115037654B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115442310A (zh) * 2022-11-10 2022-12-06 中亿(深圳)信息科技有限公司 基于物联网卡的应用程序流量消耗级别划分方法及装置

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050125195A1 (en) * 2001-12-21 2005-06-09 Juergen Brendel Method, apparatus and sofware for network traffic management
WO2017196380A1 (en) * 2016-05-13 2017-11-16 Intel IP Corporation Avoiding discard of critical video data in modem long term evolution stack
US10187400B1 (en) * 2016-02-23 2019-01-22 Area 1 Security, Inc. Packet filters in security appliances with modes and intervals
CN110149343A (zh) * 2019-05-31 2019-08-20 国家计算机网络与信息安全管理中心 一种基于流的异常通联行为检测方法和系统
CN110213198A (zh) * 2018-02-28 2019-09-06 中标软件有限公司 网络流量的监控方法及系统
CN111314328A (zh) * 2020-02-03 2020-06-19 北京字节跳动网络技术有限公司 网络攻击防护方法、装置、存储介质及电子设备
CN112817597A (zh) * 2021-01-12 2021-05-18 山东兆物网络技术股份有限公司 运行在用户空间的基于ebpf的软件容器实现方法
CN113886336A (zh) * 2021-10-25 2022-01-04 珠海市魅族科技有限公司 流量检测方法、装置、设备及介质

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050125195A1 (en) * 2001-12-21 2005-06-09 Juergen Brendel Method, apparatus and sofware for network traffic management
US10187400B1 (en) * 2016-02-23 2019-01-22 Area 1 Security, Inc. Packet filters in security appliances with modes and intervals
WO2017196380A1 (en) * 2016-05-13 2017-11-16 Intel IP Corporation Avoiding discard of critical video data in modem long term evolution stack
CN110213198A (zh) * 2018-02-28 2019-09-06 中标软件有限公司 网络流量的监控方法及系统
CN110149343A (zh) * 2019-05-31 2019-08-20 国家计算机网络与信息安全管理中心 一种基于流的异常通联行为检测方法和系统
CN111314328A (zh) * 2020-02-03 2020-06-19 北京字节跳动网络技术有限公司 网络攻击防护方法、装置、存储介质及电子设备
CN112817597A (zh) * 2021-01-12 2021-05-18 山东兆物网络技术股份有限公司 运行在用户空间的基于ebpf的软件容器实现方法
CN113886336A (zh) * 2021-10-25 2022-01-04 珠海市魅族科技有限公司 流量检测方法、装置、设备及介质

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
WENGANG ZHANG;ANTHONY T.C.GOH;: "Multivariate adaptive regression splines and neural network models for prediction of pile drivability", GEOSCIENCE FRONTIERS, no. 01 *
姚晟;: "一种新型网络流量系统的设计与实现", 安庆师范学院学报(自然科学版), no. 04 *
朱星嘉;李红莲;吕学强;周建设;夏红科;: "一种改进的Attention-Based LSTM特征选择模型", 北京信息科技大学学报(自然科学版), no. 02 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115442310A (zh) * 2022-11-10 2022-12-06 中亿(深圳)信息科技有限公司 基于物联网卡的应用程序流量消耗级别划分方法及装置

Also Published As

Publication number Publication date
CN115037654B (zh) 2024-01-09

Similar Documents

Publication Publication Date Title
CN108365967B (zh) 动态配置通讯参数的方法、系统、终端及计算机可读存储介质
US11221743B2 (en) Information processing method, terminal, server, and computer storage medium
CN106649446B (zh) 信息推送方法和装置
US20170277526A1 (en) Software categorization method and electronic device
CN107968881A (zh) 终端设备广播处理方法及装置、终端设备及存储介质
CN109688094B (zh) 基于网络安全的可疑ip配置方法、装置、设备及存储介质
CN110928681A (zh) 数据的处理方法和装置、存储介质及电子装置
CN106227483B (zh) 一种显示控制方法及移动终端
CN113434844A (zh) 智能场景的搭建方法、装置、存储介质、电子设备
CN114868119A (zh) 信息推送方法、装置、服务器及存储介质
CN115037654B (zh) 流量统计方法、装置、电子设备及可读存储介质
CN111859127A (zh) 消费数据的订阅方法、装置及存储介质
CN111338710A (zh) 应用程序控制方法、装置、电子设备及存储介质
CN110851334A (zh) 流量统计方法、电子设备、系统及介质
CN109343944B (zh) eSIM卡的数据处理方法、装置、终端及存储介质
CN108062401B (zh) 应用推荐方法、装置及存储介质
CN110874301A (zh) 程序卡顿信息的获取方法和装置
CN110786028A (zh) 应用资源处理方法及相关产品
CN114285906B (zh) 报文处理方法、装置、电子设备及存储介质
CN116594834A (zh) 一种用于多协议服务器的运维数据处理方法及装置
CN112541645A (zh) 伴随车辆产品项目开发的数据处理方法、系统及相关装置
CN113434796B (zh) 页面缓存的操作方法及装置、存储介质及电子装置
CN115357179A (zh) 显示屏管理方法、显示屏管理装置、电子设备及存储介质
CN113326302A (zh) 数据查询方法及装置、存储介质
CN112650763A (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