基于中位数的网络流量熵值估算方法及装置的制造方法
【技术领域】
[0001 ]本发明涉及网络流量分析技术领域,尤其涉及一种基于中位数的网络流量熵值估 算方法及装置。
【背景技术】
[0002] 在网络流量分析领域中,基于流分布的分析通常会得到比基于简单流量的分析更 丰富的结果。熵值可以很好地概括和提炼流量分布的特征,是网络流量极其重要的一种度 量,例如,很多网络异常检测的算法都依赖于网络流的熵值。如何在高速骨干网上快速,实 时地计算网络流量的熵对于异常检测,流量工程,流量分析等领域具有十分重要的意义。计 算熵值需要记录每一条网络流的大小,然而骨干网的流量很大,每分钟内网络流的数目动 辄数以十万计,想要记录每条流的状态需要消耗大量的存储空间,大大地增加计算的复杂 度,很难做到实时计算。
[0003] 而现有技术的熵值估算方法,往往存储空间和计算复杂度较低但熵值估算准确率 不高,或者熵值估算准确率较高但存储空间和计算复杂度较高。
[0004] 鉴于此,如何在不增加存储空间和计算复杂度的情况下提高熵值估算的准确率成 为目前需要解决的技术问题。
【发明内容】
[0005] 为解决上述的技术问题,本发明提供一种基于中位数的网络流量熵值估算方法及 装置,能够在不增加存储空间和计算复杂度的情况下提高熵值估算的准确率。
[0006] 第一方面,本发明提供一种基于中位数的网络流量熵值估算方法,包括:
[0007] 获取网络数据流的数据包,并发送至Stom集群的各从节点中;
[0008] 接收所述Storm集群的各从节点返回的中间项S的估计值,所述S的估计值为所述 Stom集群的各从节点根据接收的数据包,通过预设熵值估算算法获取的;
[0009] 将接收的S的估计值按照大小进行排序;
[0010] 获取排序后的所有S的估计值的中位数,将所述中位数作为S最终的估计值
[0011] 根据所述§,获取所述网络数据流网络流量的熵值的估计值
[0012] 其中,所述Storm集群包括至少一个从节点。
[0013] 可选地,所述中间项S是通过第一公式计算得到的,所述第一公式为:
[0015] 其中,所述网络数据流中的数据包用i表示,Hi1为数据包i在网络数据流中出现的 频数,i e {1,2,…,24b},b为所述网络数据流中单个数据包的字节长度。
[0016] 可选地,所述根据所述§,获取网络流量的熵值的估计值II,包括:
[0017] 根据所述§,通过第二公式,获取网络流量的熵值的估计值H;
[0018]所述第二公式为:
[0020]其中,m为网络数据流的总长度,m是通过第三公式计算得到的;
[0021 ]所述第三公式为:
[0023] η为正整数。
[0024] 可选地,所述预设熵值估算算法为熵值估算近似算法,包括:
[0025] 在所述网络数据流中随机选取g X ζ个位置,生成随机位置集合;
[0026] 对于所述网络数据流中第j个数据包a」= i,判断j是否属于所述随机位置集合,若 j属于所述随机位置集合,则为i增加一个计数器,并将与i相关联的计数器集合全都加1;若 j不属于所述随机位置集合,且存在与i相关联的计数器,则将与i相关联的计数器加1;
[0027] 在判断完所述网络数据流中所有数据包的j是否属于所述随机位置集合之后,得 至Ijg X Z的计数器矩阵C= (Cpq);
[0028]根据所述计数器矩阵C,构建矩阵X=(xPq);
[0029] 获取所述矩阵X每一行元素的平均值;
[0030] 获取所有平均值的中位数,并将该中位数作为S的估计值;
[0031] 其中,Xpq = IIlX (CPql〇gCPq-(CPq-l)l〇g(CPq-l)),
>ε为相对估计误差,1_δ为估计准确率。
[0032] 可选地,所述获取所述矩阵X每一行元素的平均值,包括:
[0033] 通过第四公式,获取所述矩阵X每一行元素的平均值avg[p];
[0034] 其中,所述第四公式为:
[0036]可选地,所述预设熵值估算算法为熵值估算筛选算法,包括:
[0037] 按照预设采样率,对获取的网络数据流中的数据包进行采样;
[0038] 判断所述网络数据流中第j个数据包a」= i是否被选中以及是否存在与i相关联的 计数器;
[0039] 若网络数据流中第j个数据包a」= i被选中,且不存在与i相关联的计数器,则为i 创建一个计数器并将i标记为小流;
[0040] 若网络数据流中第j个数据包a」= i被选中,且存在与i相关联的计数器,则将i标 记为大流;
[0041] 若网络数据流中第j个数据包a」= i未被选中,且存在与i相关联的计数器,则将与 i相关联的计数器加1;
[0042] 在判断完网络数据流中第j个数据包a」= i是否被选中以及是否存在与i相关联的 计数器之后,得到标记为大流的计数器矩阵E和标记为小流的计数器矩阵M;
[0043] 根据所述标记为大流的计数器矩阵E,获取大流的贡献值Se;
[0044] 根据所述标记为小流的计数器矩阵M,构建矩阵Y= (yPq);
[0045] 获取所述矩阵Y每一行元素的平均值;
[0046] 获取所有平均值的中位数,并将该中位数作为小流的贡献值Sm;
[0047] 根据所述Se3和Sm,获取S的估计值;
[0048] 其中,£=(£1;),七=1,2,~,6;6为正整数;
[0049] M=(MM),p = l,2,...,g;q=l,2,...,z;
[0050] yM=mX (MMlogMM-(MM-l)log(MM-l)),p=l,2,···,g;q=l,2,···,z。
[0051 ]可选地,所述根据所述标记为大流的计数器矩阵E,获取大流的贡献值Se,包括: [0052]根据所述标记为大流的计数器矩阵E,通过第五公式,获取大流的贡献值Se;
[0053]其中,所述第五公式为:
[0055] 和/或,
[0056] 所述根据所述Se3和Sm,获取S的估计值,包括:
[0057] 根据所述SjPSm,通过第六公式,获取S的估计值;
[0058] 其中,所述第六公式为:
[0060] 和/或,
[0061] 所述获取所述矩阵Y每一行元素的平均值,包括:
[0062] 通过第七公式,获取所述矩阵Y每一行元素的平均值avg[p];
[0063] 其中,所述第七公式为:
[0065] 第二方面,本发明提供一种基于中位数的网络流量熵值估算装置,包括:
[0066] 第一获取模块,用于获取网络数据流的数据包,并发送至Storm集群的各从节点 中;
[0067 ]接收模块,用于接收所述Storm集群的各从节点返回的中间项S的估计值,所述S的 估计值为所述Stom集群的各从节点根据接收的数据包,通过预设熵值估算算法获取的;
[0068] 排序模块,用于将接收的S的估计值按照大小进行排序;
[0069] 第二获取模块,用于获取排序后的所有S的估计值的中位数,将所述中位数作为S 最终的估计值§;
[0070] 第三获取模块,用于根据所述§,获取所述网络数据流网络流量的熵值的估计值1?
[0071] 其中,所述Storm集群包括至少一个从节点。
[0072] 可选地,所述中间项S是通过第一公式计算得到的,所述第一公式为:
[0074] 其中,所述网络数据流中的数据包用i表示,Hi1为数据包i在网络数据流中出现的 频数,i e {1,2,…,24b},b为所述网络数据流中单个数据包的字节长度。
[0075] 可选地,所述第四获取模块,具体用于
[0076] 根据所述§,通过第二公式,获取网络流量的熵值的估计值;R丨
[0077]所述第二公式为:
[0079]其中,m为网络数据流的总长度,"!是通过第三公式计算得到的;
[0080] 所述第三公式为:
[0082] η为正整数。
[0083] 由上述技术方案可知,本发明的基于中位数的网络流量熵值估算方法及装置,通 过Storm平台并行实时计算,能够在不增加存储空间和计算复杂度的情况下提高熵值估算 的准确率。
【附图说明】
[0084] 图1为本发明一实施例提供的一种基于中位数的网络流量熵值估算方法的流程示 意图;
[0085] 图2为图1所示实施例中的预设熵值估算算法为熵值估算近似算法时图1所示实施 例提供的基于中位数的网络流量熵值估算方法的Stom集群拓扑示意图;
[0086] 图3为图1所示实施例中的预设熵值估算算法为熵值估算筛选算法时图1所示实施 例提供的基于中位数的网络流量熵值估算方法的St