一种基于NetFlow的网络拓扑生成方法与流程

文档序号:15497628发布日期:2018-09-21 22:01阅读:225来源:国知局

本发明涉及计算机技术领域,尤其涉及一种基于netflow的网络拓扑生成方法。



背景技术:

netflow是一种数据交换方式,其提供了高效通用的流量统计功能,netflow对流量的统计基于流(flow),而不是传统的基于数据包或字节的方法,利用netflow收集到ip流信。netflow有两个核心的组件:(1)netflow缓存,存储ip流信息;(2)netflow的数据导出或传输机制,netflow利用此机制将数据发送到网络管理采集器。netflow流是在一个给定的源和目标之间的单向的一组数据包,源和目标都通过网络层的ip地址和传输层的端口来定义,更为明确地说,一个流由以下七个关键字段来标识:源地址、目标地址、源端口号、目标端口号、第三层协议、tos、输入的逻辑端口。

由于netflow采集到的数据是各个路由器采集流经其本身的网络流信息,只是显示了单个路由器上的流量数据,没有相关性,不能从整个网络的范围内看到流量信息、拓扑状态及其网络流的趋势信息。



技术实现要素:

本发明实施例提出一种基于netflow的网络拓扑生成方法,为用户提供网络的全局信息和状态信息,提高用户体验。

本发明实施例提供一种基于netflow的网络拓扑生成方法,包括:

获取各网络设备发送的netflow报文;所述netflow报文包括:数据包信息和netflow流数据;

提取各所述netflow报文的网络设备ip地址和五元组数据,并根据各所述五元组数据,更新网络流哈希表中的netflow流数据;其中,所述五元组数据包括:源ip地址、目的ip地址、源端口、目的端口和协议类型;所述网络流哈希表记录了具有相同五元组数据的若干个netflow流数据;

遍历所述网络流哈希表,按照数据流开始的系统时间由先到后,对所述网络流哈希表中的各netflow流数据进行排序;

根据排序后所述网络流哈希表和各所述网络设备的ip地址,生成网络流的拓扑结构。

进一步的,所述根据各所述五元组数据,更新网络流哈希表中的netflow流数据,具体为:

根据提取的各所述五元组数据,将具有相同五元组数据的netflow流数据作为第一集合;

分别计算所述第一集合中各第一netflow流数据的哈希索引值,并查询所述网络流哈希表中是否存在相同的哈希索引值;

如果不存在,则在所述网络流哈希表中创建一个数据流表项来存储所述第一netflow流数据;如果存在,则根据所述第一netflow流数据,更新具有相同哈希索引值的数据流表项。

进一步的,所述数据流表项包含网络设备ip地址、数据流开始的系统时间、数据流结束的系统时间、流中的数据包数和字节数、下一跳的网络设备ip地址以及五元组数据;

所述根据所述第一netflow流数据,更新具有相同哈希索引值的数据流表项,具体为:

保持所述数据流表项中数据流开始的系统时间不变,将第一netflow流数据的数据流结束的系统时间作为所述数据流表项的数据流结束的系统时间;

将所述第一netflow流数据中的数据包数和字节数、下一跳的网络设备ip地址,累加到所述数据流表项中。

进一步的,在所述根据排序后所述网络流哈希表和各所述网络设备的ip地址,生成网络流的拓扑结构之前,还包括:

遍历所述网络流哈希表,按照各netflow流数据中的数据包数量由多到少,对所述网络流哈希表中的各netflow流数据进行排序。

进一步的,所述根据排序后所述网络流哈希表和各所述网络设备的ip地址,生成网络流的拓扑结构具体为:

步骤a:根据所述网络流哈希表中的五元流数据,将所述源ip地址所对应的网络设备作为拓扑结构起点,将所述目的ip地址所对应的网络设备作为拓扑结构终点;

步骤b:获取所述网络流哈希表中第i个netflow流数据,判断所述第i个netflow流数据是否为第一级节点;其中,i的初始值为1;若是,则将所述第i个netflow流数据所对应的网络设备,作为所述拓扑结构起点的第一级节点,并将i的值加1,返回步骤b;否则,获取上级节点的下一跳的网络设备ip地址,执行步骤c;

步骤c:判断所述第i个netflow流数据的网络设备ip地址是否为所述上级节点的下一跳的网络设备ip地址;如果是,则将所述第i个netflow流数据所对应的网络设备作为所述上级节点的下一级节点;如果不是,则遍历所述网络流哈希表中剩余netflow流数据的下一跳的网络设备ip地址,以匹配所述第i个netflow流数据所对应的网络设备ip地址,在匹配到时,将所述第i个netflow流数据所对应的网络设备作为,匹配到netflow流数据所对应网络设备的下一级节点;

步骤d:判断所述第i个netflow流数据的下一跳的网络设备ip地址是否为目的ip地址,若是,则所述拓扑结构终点作为所述第i个netflow流数据所对应网络设备的下一级节点,将i的值加1,返回步骤b,直到i的值大于所述网络流哈希表中netflow流数据的记录数量;若否,则将i的值加1,返回步骤b,直到i的值大于所述网络流哈希表中netflow流数据的记录数量;

步骤e:生成网络流的拓扑结构。

进一步的,所述提取各所述netflow报文的网络设备ip地址和五元组数据,具体为:

从各所述netflow报文的的头部提取网络设备ip地址,从各所述netflow报文的netflow流数据中提取所述五元组数据。

实施本发明实施例,具有如下有益效果:

本发明实施例提供的一种基于netflow的网络拓扑生成方法,先获取各网络设备发送的netflow报文,并根据五元组数据,更新网络流哈希表中的netflow流数据,再按照数据流开始的系统时间由先到后,对网络流哈希表中的各netflow流数据进行排序,最后根据排序后网络流哈希表和各网络设备的ip地址,生成网络流的拓扑结构。相比于现有技术不能从整个网络的范围内看到流量信息,本发明技术方案从个体路由器上的流量数据,去提取网络流的相关性,为用户提供网络的全局信息和状态信息,提高用户体验。

附图说明

图1是本发明提供的基于netflow的网络拓扑生成方法的一种实施例的流程示意图;

图2是本发明提供的拓扑结构生成的一种实施例的流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

参见图1,是本发明提供的基于netflow的网络拓扑生成方法的一种实施例的流程示意图,该方法包括以下步骤:

步骤101:获取各网络设备发送的netflow报文;netflow报文包括:数据包信息和netflow流数据。

在本实施例中,网络设备可以但不限于为开启netflow功能的路由器或交换机。网络设备会定时发送netflow报文到本系统的采集器中,采集器获取netflow报文后,存储到数据库中,再由本系统的网络拓扑生成单元定时从数据库获取netflow流信息,定时生成网络拓扑结构。

在本实施例中,netflow报文包括:数据包信息和netflow流数据。netflow流数据包含以下信息,具体如下表所示;

步骤102:提取各netflow报文的网络设备ip地址和五元组数据,并根据各五元组数据,更新网络流哈希表中的netflow流数据;其中,五元组数据包括:源ip地址、目的ip地址、源端口、目的端口和协议类型;网络流哈希表记录了具有相同五元组数据的若干个netflow流数据。

在本实施例中,步骤102具体为:从各netflow报文的的头部提取网络设备ip地址,从各netflow报文的netflow流数据中提取五元组数据;根据提取的各所述五元组数据,将具有相同五元组数据的netflow流数据作为第一集合;分别计算第一集合中各第一netflow流数据的哈希索引值,并查询网络流哈希表中是否存在相同的哈希索引值;如果不存在,则在网络流哈希表中创建一个数据流表项来存储第一netflow流数据;如果存在,则根据第一netflow流数据,更新具有相同哈希索引值的数据流表项。

在本实施例中,数据流表项包含网络设备ip地址、数据流开始的系统时间first、数据流结束的系统时间last、流中的数据包数dpkts和字节数doctets、下一跳的网络设备ip地址next_hop以及五元组数据。本实施例中的步骤:根据第一netflow流数据,更新具有相同哈希索引值的数据流表项,具体为:

保持数据流表项中数据流开始的系统时间first不变,将第一netflow流数据的数据流结束的系统时间last作为数据流表项的数据流结束的系统时间last;

将第一netflow流数据中的数据包数dpkts和字节数doctets、下一跳的网络设备ip地址next_hop,累加到数据流表项中。

步骤103:遍历网络流哈希表,按照数据流开始的系统时间由先到后,对网络流哈希表中的各netflow流数据进行排序。

在本实施例中,以流开始时间first值为参考值,通过选择排序算法进行排序,每次选择first值最早的流数据排在最前面。完成排序后,排在前面的节点,即是该网络流最先经过的节点。

作为本实施例的一种举例,在步骤104之前还包括:遍历网络流哈希表,按照各netflow流数据中的数据包数量由多到少,对网络流哈希表中的各netflow流数据进行排序。以数据包数量dpkts为参考值,通过选择排序算法进行排序,每次选择数据包数量最大的值排在最前面。完成排序后,排在前面的节点,即是该网络流经过最多的节点。

步骤104:根据排序后网络流哈希表和各所述网络设备的ip地址,生成网络流的拓扑结构。

在本实施例中,参见图2,图2是本发明提供的拓扑结构生成的一种实施例的流程示意图。如图2所示,步骤104包括步骤a至e,各步骤具体如下:

步骤a:根据网络流哈希表中的五元流数据,将源ip地址所对应的网络设备作为拓扑结构起点,将目的ip地址所对应的网络设备作为拓扑结构终点。

在本实施例中,将源ip地址src_addr作为拓扑结构起点,将目的ip地址dst_addr所对应的网络设备作为拓扑结构终点

步骤b:获取网络流哈希表中第i个netflow流数据,判断第i个netflow流数据是否为第一级节点;其中,i的初始值为1;若是,则将第i个netflow流数据所对应的网络设备,作为拓扑结构起点的第一级节点,并将i的值加1,返回步骤b;否则,获取上级节点的下一跳的网络设备ip地址,执行步骤c。

在本实施例中,由于网络流哈希表以按照first进行排序,遍历网络流哈希表中的netflow流数据,判断其是否第一级节点,第一级节点为拓扑结构起点的下一级节点。如果是,则将其作为第一级节点,否则,获取上级节点的next_hop。

步骤c:判断第i个netflow流数据的网络设备ip地址是否为上级节点的下一跳的网络设备ip地址;如果是,则将第i个netflow流数据所对应的网络设备作为上级节点的下一级节点;如果不是,则遍历网络流哈希表中剩余netflow流数据的下一跳的网络设备ip地址,以匹配第i个netflow流数据所对应的网络设备ip地址,在匹配到时,将第i个netflow流数据所对应的网络设备作为,匹配到netflow流数据所对应网络设备的下一级节点。

在本实施例中,判断第i个netflow流数据的网络设备ip地址是否为上级节点的next_hop;如果是,则将第i个netflow流数据所对应的网络设备作为上级节点的下一级节点;如果不是,则遍历网络流哈希表中剩余netflow流数据的next_hop,以匹配第i个netflow流数据所对应的网络设备ip地址,在匹配到时,将第i个netflow流数据所对应的网络设备作为,匹配到netflow流数据所对应网络设备的下一级节点。

步骤d:判断第i个netflow流数据的下一跳的网络设备ip地址是否为目的ip地址,若是,则拓扑结构终点作为第i个netflow流数据所对应网络设备的下一级节点,将i的值加1,返回步骤b,直到i的值大于网络流哈希表中netflow流数据的记录数量;若否,则将i的值加1,返回步骤b,直到i的值大于网络流哈希表中netflow流数据的记录数量;

在本实施例中,如果第i个netflow流数据的next_hop为目的ip地址,直接将目的ip地址作为该级的节点的下一级节点,否则的话,将i的值加1,返回步骤b,直到i的值大于网络流哈希表中netflow流数据的记录数量,完成网络流哈希表的遍历。

步骤e:生成网络流的拓扑结构。

在确定各级节点后,生成相应的网络流拓扑结构。

由上可见,本发明实施例提供的一种基于netflow的网络拓扑生成方法,先获取各网络设备发送的netflow报文,并根据五元组数据,更新网络流哈希表中的netflow流数据,再按照数据流开始的系统时间由先到后,对网络流哈希表中的各netflow流数据进行排序,最后根据排序后网络流哈希表和各网络设备的ip地址,生成网络流的拓扑结构。相比于现有技术不能从整个网络的范围内看到流量信息,本发明技术方案从个体路由器上的流量数据,去提取网络流的相关性,为用户提供网络的全局信息和状态信息,提高用户体验。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1