宽带用户在线状态识别和时段聚合以及在线状态查询方法与流程

摘要: 本公开涉及网络安全溯源,特别地涉及一种宽带用户在线状态识别和时段聚合方法、宽带用户在线状态查询方法、宽带用户在线状态识别和时段聚合装置、宽带用户在线状态查询装置...
宽带用户在线状态识别和时段聚合以及在线状态查询方法与流程

本公开涉及网络安全溯源,特别地涉及一种宽带用户在线状态识别和时段聚合方法、宽带用户在线状态查询方法、宽带用户在线状态识别和时段聚合装置、宽带用户在线状态查询装置、存储介质、电子设备和计算机程序产品。

背景技术:

1、当前,宽带网络运营商通常部署aaa(认证、授权、计费,authentication、authorization、accounting)服务器(比如,radius服务器)对宽带用户的上网行为进行认证和计费管理。aaa服务器会实时产生三类日志事件:

2、•start类型的会话事件:记录宽带用户上线,包含用户账号、分配的ip地址、端口信息及事件时间;

3、•keepalive事件(keep类型的会话事件):周期性心跳记录,表明用户持续在线,通常每隔数分钟至数十分钟产生一条;

4、•stop类型的会话事件:记录宽带用户下线,包含完整的会话结束信息。

5、在网络安全源追、用户行为分析等业务场景中,需要实时维护一张用户在线期维表,以便通过ip地址和端口号在某一时间点关联到对应的宽带账号。该问题的技术难点在于:aaa日志以连续数据流的形式实时产生,单个用户的会话可能持续数小时乃至数天,keepalive事件频繁,同一ip地址可能在不同时间段被不同账号复用,且日志存在乱序、丢失等问题。

6、在相关技术中,主要包括以下技术方案:

7、方案一:批处理离线聚合。定期将aaa日志导入数据仓库,通过sql(结构化查询语言structured query language,简称sql)或mapreduce任务进行离线聚合,生成历史在线期记录。代表技术为基于hive/spark的批处理etl(extract-transform-load,简称etl)管道。

8、方案二:基于时间窗口的流式处理。使用apache flink或spark streaming的滚动窗口/滑动窗口机制,在固定时间窗口内聚合同一账号的事件。

9、方案三:基于会话超时的状态机。为每个用户维护一个状态机,收到start类型的会话事件时开启会话,收到stop类型的会话事件时关闭会话,若在配置的超时时间内未收到keepalive则判定为下线。

10、方案四:简单去重存储。将所有start和stop类型的会话事件直接存入数据库,keepalive事件丢弃或全量保存。

11、但是,现有技术存在如下这些技术缺陷:

12、缺陷一(实时性不足):批处理方案(方案一)存在数小时至天级别的数据延迟,无法满足网络源追等对实时性要求高的业务场景。

13、缺陷二(窗口切割导致记录不完整):基于时间窗口的流式方案(方案二)会将一次持续在线会话切割为多个窗口内的碎片记录,导致查询维表时同一会话出现多条记录,且窗口边界处的时间段存在覆盖盲区。

14、缺陷三(超时阈值难以准确配置):基于会话超时的状态机方案(方案三)需要人工设定超时阈值。若阈值设置过大,用户实际下线后维表中仍保留过期记录;若阈值设置过小,则长时间在线用户的会话被错误切断。keepalive间隔在不同运营商、不同设备型号间差异显著,难以统一配置。

15、缺陷四(同 ip 多账号处理缺失):现有方案普遍未处理同一ip地址在短时间内被不同账号复用的场景。当pppoe用户重拨后换号,若旧账号的stop日志延迟到达,会导致维表中同一ip地址在同一时间段出现两个账号的重叠记录,造成源追错误。

16、缺陷五(keepalive冗余存储):简单去重存储方案或保留全量keepalive消耗大量存储资源;或直接丢弃keepalive,导致长时间在线但缺少stop日志的用户在维表中的在线期结束时间无法准确推算。

17、因此,亟需一种基于radius日志流的宽带用户实时在线状态识别与时段聚合方法,以解决如上所述的缺陷。

技术实现思路

1、本发明的目的在于至少提供一种宽带用户在线状态识别和时段聚合方法、宽带用户在线状态查询方法、宽带用户在线状态识别和时段聚合装置、宽带用户在线状态查询装置、存储介质、电子设备和计算机程序产品,以至少解决以下这些技术缺陷:

2、1.在流式处理环境下,实现对宽带用户在线时段的实时、无窗口切割的连续聚合,消除批处理延迟;

3、2.在不依赖超时阈值配置的前提下,利用事件间的时序关系动态推算并持续修正在线时段的结束时间边界;

4、3.通过账号一致性检测机制,在同一ip地址发生账号切换时自动截断前一账号的在线期,防止维表中出现时段重叠;

5、4.通过keepalive事件的吸收合并机制,在不丢失在线证明信息的前提下消除冗余keepalive记录,控制维表规模;

6、5.区分完整事件链(combined结构)和查询维表(dim结构),使维表在任意时间点查询时均能以o(log n)复杂度返回唯一有效记录。

7、为解决上述技术缺陷,本技术的至少一个实施例提供了一种宽带用户在线状态识别和时段聚合方法,所述方法包括:

8、获取实时的radius日志流;其中,所述radius日志流中会话事件的事件类型包含:开始类型、保持类型和结束类型;

9、基于所述radius日志流的ip地址对所述radius日志流进行分组;其中,为每个分组维护第一存储结构和第二存储结构,其中,所述第一存储结构用于为每个端口范围组合维护一个按时间顺序排列的事件链,所述第二存储结构用于按会话开始时间顺序存储各在线期的会话条目;

10、响应于接收到会话事件,根据所述会话事件的事件类型,以及所述会话事件与其前驱事件和后继事件的账号一致性,动态推算并修正所述会话事件的结束时间,并根据所述事件类型和前驱事件的活跃状态,将所述会话事件选择性存入第一存储结构和/或第二存储结构。

11、本技术的至少一个实施例还提供了一种宽带用户在线状态查询方法,包括:

12、响应于接收到查询请求,根据所述查询请求的ip地址确定对应的第二存储结构;其中,所述第二存储结构基于如上所述的宽带用户在线状态识别和时段聚合方法得到,在所述查询请求中包含:ip地址、端口号和时间点;

13、在所述第二存储结构中,查找开始时间不大于所述查询请求对应时间点的最大开始时间;其中,所述第二存储结构中的每条会话条目均包含账号、开始时间、结束时间和端口范围;

14、在所述最大开始时间对应的一个或多个会话条目中,查找端口范围包含所述查询请求的端口号的目标会话条目;

15、在所述目标会话条目的端口范围内包含所述查询请求的端口号,且所述目标会话条目的结束时间满足预设条件的情况下,将所述目标会话条目对应的账号作为所述查询请求对应的账户信息。

16、本技术的至少一个实施例还提供了一种宽带用户在线状态识别和时段聚合装置,包括:

17、日志流获取模块,用于获取实时的radius日志流;其中,所述radius日志流中会话事件的事件类型包含:开始类型、保持类型和结束类型;

18、分组模块,用于基于所述radius日志流的ip地址对所述radius日志流进行分组;其中,为每个分组维护第一存储结构和第二存储结构,其中,所述第一存储结构用于为每个端口范围组合维护一个按时间顺序排列的事件链,所述第二存储结构用于按会话开始时间顺序存储各在线期的会话条目;

19、保存模块,用于响应于接收到会话事件,根据所述会话事件的事件类型,以及所述会话事件与其前驱事件和后继事件的账号一致性,动态推算并修正所述会话事件的结束时间,并根据所述事件类型和前驱事件的活跃状态,将所述会话事件选择性存入第一存储结构和/或第二存储结构。

20、本技术的至少一个实施例还提供了一种宽带用户在线状态查询装置,包括:

21、第二存储结构确定模块,用于响应于接收到查询请求,根据所述查询请求的ip地址确定对应的第二存储结构;其中,所述第二存储结构基于如上所述的宽带用户在线状态识别和时段聚合方法得到,在所述查询请求中包含:ip地址、端口号和时间点;

22、查找模块,用于在所述第二存储结构中,查找开始时间不大于所述查询请求对应时间点的最大开始时间;其中,所述第二存储结构中的每条会话条目均包含账号、开始时间、结束时间和端口范围;

23、目标会话条目确定模块,用于在所述最大开始时间对应的一个或多个会话条目中,查找端口范围包含所述查询请求的端口号的目标会话条目;

24、账号查找模块,用于在所述目标会话条目的端口范围内包含所述查询请求的端口号,且所述目标会话条目的结束时间满足预设条件的情况下,将所述目标会话条目对应的账号作为所述查询请求对应的账户信息。

25、本技术的至少一个实施例还提供了一种电子设备,包括存储器、处理器及存储在存储器上的计算机程序,所述处理器执行所述计算机程序以实现如上所述方法的步骤。

26、本技术的至少一个实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如上所述方法的步骤。

27、本技术的至少一个实施例还提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现如上所述方法的步骤。

28、本技术实施例提供的宽带用户在线状态识别和时段聚合方法、宽带用户在线状态查询方法、宽带用户在线状态识别和时段聚合装置、宽带用户在线状态查询装置、存储介质、电子设备和计算机程序产品,相对于现有技术而言,具备以下有益效果:

29、1.在流式处理环境下,实现对宽带用户在线时段的实时、无窗口切割的连续聚合,消除批处理延迟;

30、2.在不依赖超时阈值配置的前提下,利用事件间的时序关系动态推算并持续修正在线时段的结束时间边界;

31、3.通过账号一致性检测机制,在同一ip地址发生账号切换时自动截断前一账号的在线期,防止维表中出现时段重叠;

32、4.通过keepalive事件的吸收合并机制,在不丢失在线证明信息的前提下消除冗余keepalive记录,控制维表规模;

33、5.区分完整事件链(combined结构,也即第一存储结构)和查询维表(dim结构,也即第二存储结构),使维表在任意时间点查询时均能以o(log n)复杂度返回唯一有效记录。

34、在一些可选的实施例中,在所述第一存储结构中,根据时间戳对会话事件进行排序,将与当前会话事件在时间上相邻的前一会话事件作为前驱事件,将与当前会话事件在时间上相邻的后一会话事件作为后继事件。

35、通过有序存储和相邻事件定义,使得在流式处理环境中能够快速定位每个事件在时间轴上的前驱和后继,为后续的无阈值动态推算和反向修正提供基础。该排序方式结合(starttime, state, eventtime)复合键,能够正确处理同一时间点多个事件以及日志乱序问题,保证前驱/后继关系的唯一性和准确性。

36、在一些可选的实施例中,所述动态推算并修正所述会话事件的结束时间,包括:

37、若所述会话事件为开始类型事件或孤立的保持类型事件,则在所述会话事件的前驱事件未结束会话的情况下,将所述前驱事件的结束时间设置为所述会话事件的开始时间,并根据所述会话事件的后继事件的事件类型及账号关系设置所述会话事件的结束时间;其中,所述孤立的保持类型事件为不存在同账号活跃前驱事件的保持类型事件;

38、若所述会话事件为结束类型事件,则在所述会话事件的前驱事件未结束会话的情况下,基于所述会话事件的结束时间或开始时间修正所述前驱事件的结束时间。

39、利用后继事件的开始时间或结束时间作为当前会话的结束时间上界,能够避免相关技术中由于固定超时阈值设置不当而导致的误判。而在开始事件处理中无条件截断前驱(无论账号是否相同),并在结束事件处理中根据账号是否相同选择修正值,从而防止同ip不同账号的在线期重叠。另外,结束事件到达时能够将前驱的结束时间从估算值修正为精确值,可保证维表数据的最终准确性。

40、在一些可选的实施例中,所述基于所述会话事件的结束时间或开始时间修正所述前驱事件的结束时间,包括:

41、当所述前驱事件的账号与所述会话事件的账号相同时,将所述会话事件的结束时间作为所述前驱事件的结束时间;

42、当所述前驱事件的账号与所述会话事件的账号不同时,将所述会话事件的开始时间作为所述前驱事件的结束时间。

43、用stop类型的会话事件携带的精确结束时间更新前驱,确保会话时段的完整性和精确性;用stop类型的会话事件的开始时间截断前驱(以当前结束类型事件携带的开始时间作为前驱事件的截断边界),解决了旧账号stop日志延迟导致的时段重叠问题,以保证在查询维表中同一ip地址在同一时间段内仅有一个活跃账号。并且,无需依赖ip地址释放信号,仅通过日志事件本身的账号比较即可完成,相较于现有技术,简化了实现方式。

44、在一些可选的实施例中,所述根据所述会话事件的后继事件的事件类型及账号关系设置所述会话事件的结束时间,包括:

45、在所述会话事件存在后继事件的情况下,若满足第一预设条件,则所述会话事件的结束时间设置为所述后继事件的开始时间;

46、在所述会话事件存在后继事件的情况下,若满足第二预设条件,则将所述会话事件的结束时间设置为所述后继事件的结束时间;

47、在所述会话事件不存在后继事件或不满足所述第一预设条件或所述第二预设条件的情况下,所述会话事件的结束时间保持未设置状态。

48、在一些可选的实施例中,所述第一预设条件包括:所述后继事件为开始类型,或,所述后继事件不是开始类型且所述后继事件的账号与所述会话事件的账号不同;

49、所述第二预设条件包括:所述后继事件不是开始类型,且所述后继事件的账号与所述会话事件的账号相同。

50、基于对后继事件的分析,无需配置任何超时参数即可为当前会话设置结束时间上界,将结束时间的误差范围控制在相邻日志的时间间隔内,优于当前选择固定超时的方案。而当后继事件是同一账号的stop类型的会话事件时,当前会话事件直接获得精确结束时间,无需等待独立处理,可提高维表的实时性。另外,当后继事件为不同账号的其它事件时,用后继事件的开始时间截断当前会话,进而防止了资源冲突。

51、在一些可选的实施例中,所述根据所述事件类型和前驱事件的活跃状态,将所述会话事件选择性存入第一存储结构和/或第二存储结构,包括:

52、若所述会话事件为开始类型事件,则将所述会话事件存入所述第一存储结构和所述第二存储结构;

53、若所述会话事件为保持类型事件,且不存在与所述会话事件同账号且未结束的前驱事件,则将所述会话事件存入所述第一存储结构和所述第二存储结构;

54、若所述会话事件为保持类型事件,且存在与所述会话事件同账号且未结束的前驱事件,则不将所述会话事件存入所述第一存储结构和所述第二存储结构;

55、若所述会话事件为结束类型事件,则将所述会话事件存入所述第一存储结构,并且当所述会话事件不存在同账号且未结束的前驱事件时,将所述会话事件存入所述第二存储结构。

56、正常心跳(存在同账号的活跃前驱会话)完全不存入任何存储结构,可大幅减少存储资源的消耗;仅将孤立keep类型的会话事件作为新在线期代表存入双表,能保证日志缺失时的容错能力。其中,在第一存储结构中保留完整事件链(可支持审计和状态回溯),而在第二存储结构中仅保留每个在线期的最小代表性记录(这中处理策略可支持高效查询)。另外,结束类型会话事件仅在孤立场景下才写入第二存储结构,进而可防止同一在线期出现两条记录,以保证查询维表的唯一性。

57、在一些可选的实施例中,所述宽带用户在线状态查询方法中的预设条件包括:

58、所述查询请求的时间点小于所述目标会话条目的结束时间;或

59、所述目标会话条目的结束时间为空。

60、利用第二存储结构的按开始时间排序特性对目标会话进行快速定位,能实现毫秒级实时查询需求,且每个在线期在第二存储结构中仅有一条记录,查询时无需处理多行合并逻辑,满足结果唯一。若结束时间为空则表示会话仍在进行中,而查询请求对应的时间点小于结束时间则表示会话已结束但查询时刻仍处于在线期内,同一开始时间下支持多个端口范围的会话条目,通过端口匹配准确区分同一ip下的不同用户。