一种基于硬件实现流表双向数据同步的方法及装置与流程

文档序号:20065907发布日期:2020-03-06 08:29阅读:157来源:国知局
一种基于硬件实现流表双向数据同步的方法及装置与流程

本发明涉及一种流表双向数据同步技术,尤其是涉及一种基于硬件实现流表双向数据同步的方法及装置。



背景技术:

当网络已经铺设完成,网络管理员无法通过一种有效的手段能够分析网络中传输的流量状态。ipfix(ipflowinformationexport,ip数据流信息输出)则是为了解决这一问题而存在的,ipfix通过key(关键字)来过滤网络中流量,一个key则代表了网络中的某一条数据流。对于每一条数据流对在入口方向和出口方向来对数据流中报文的数量,大小,延迟,目的地等信息进行统计,在这里称之为入口数据和出口数据。

在实际的硬件实现上,有两种方式来处理key和数据流两个方向上的数据之间联系,一种方案是采用两组key和数据的方式,即入口key+入口数据和出口key+出口数据这样两组key和数据的方式,但是这个方案存在一个问题由于报文在从入口到出口的过程中可能会存在编辑的行为,导致入口key和出口key无法匹配同一条数据流,从而导致管理员无法查看到某一条数据流在入口方向和出口方向上的数据情况。

另一种方案则是只在入口方向上存在key,入口数据和出口数据分别存在于芯片的入口方向和出口方向。这种方式则解决上述方案的缺点,使得管理员可以准确的看到一条数据流从出口到出口的信息以及状态。但是该方案也会导致一个问题,即由于key和数据是以分离的状态存在,导致无法关联出口数据和key之间的关系,以及实际数据在传输过程中由于时延以及数据流老化而导致出口数据的同步问题。



技术实现要素:

本发明的目的在于克服现有技术的缺陷,提供一种基于硬件实现流表双向数据同步的方法及装置。

为实现上述目的,本发明提出如下技术方案:一种基于硬件实现流表双向数据同步的方法,包括:

s1,预先在芯片的入口ipfix处理模块中根据数据报文生成关键字索引和添加入口流修改计数字段,及在出口ipfix处理模块中添加出口流修改计数字段;

s2,所述入口ipfix处理模块将数据报文和所述关键字索引和入口流修改计数字段组成总线数据送到出口ipfix处理模块;

s3,所述出口ipfix处理模块收到所述数据报文和对应的所述总线数据,从所述总线数据中提取出所述关键字索引和入口流修改计数字段,使用所述关键字索引在其出口数据存储中读取出出口数据,并在所述出口数据中提取出所述出口流修改计数字段;

s4,所述出口ipfix处理模块继续判断所述入口流修改计数字段和所述出口流修改计数字段是否相等,若相等,则将数据报文继续进行出口方向的ipfix处理。

优选地,所述入口ipfix处理模块抽取数据报文的相应字段作为ipfix关键字,再将所述ipfix关键字采用哈希算法计算出所述关键字索引。

优选地,所述入口流修改计数字段和出口流修改计数字段的初始值均设为0。

优选地,s4中,若不相等,则忽略所述数据报文后续出口方向的ipfix处理。

优选地,当数据流出现老化或者删除所述ipfix关键字对应的流信息时,则同时将所述入口流修改计数字段和出口流修改计数字段的值递增。

本发明还揭示另外一种技术方案:一种基于硬件实现流表双向数据同步的装置,所述装置包括:入口ipfix处理模块和出口ipfix处理模块,其中,所述入口ipfix处理模块中预先根据数据报文生成关键字索引及添加有入口流修改计数字段,及所述出口ipfix处理模块中添加有出口流修改计数字段;

所述入口ipfix处理模块用于将数据报文和所述关键字索引和入口流修改计数字段组成总线数据送到出口ipfix处理模块;

所述出口ipfix处理模块用于在收到所述数据报文和对应的所述总线数据后,从所述总线数据中提取出所述关键字索引和入口流修改计数字段,使用所述关键字索引在其出口数据存储中读取出出口数据,并在所述出口数据中提取出所述出口流修改计数字段;

所述出口ipfix处理模块还用于继续判断所述入口流修改计数字段和所述出口流修改计数字段是否相等,若相等,则将数据报文继续进行出口方向的ipfix处理。

优选地,所述入口ipfix处理模块抽取数据报文的相应字段作为ipfix关键字,再将所述ipfix关键字采用哈希算法计算出所述关键字索引。

优选地,所述出口ipfix处理模块若判断不相等,则忽略所述数据报文后续出口方向的ipfix处理。

优选地,当数据流出现老化或者删除所述ipfix关键字对应的流信息时,所述入口数据处理模块将所述入口流修改计数字段和所述出口数据处理模块将所述出口流修改计数字段的值同步递增。

本发明的有益效果是:本发明通过在flow数据中插入流修改计数字段,实现出口方向flow的统计数据和入口方向的代表flow的key能够同步,不会产生误匹配。

附图说明

图1、图2均是本发明方法的流程示意图;

图3是本发明asic芯片的原理示意图。

具体实施方式

下面将结合本发明的附图,对本发明实施例的技术方案进行清楚、完整的描述。

本发明所揭示的一种基于硬件实现流表双向数据同步的方法及装置,本发明通过在flow数据中插入流修改计数字段,实现出口方向flow的统计数据和入口方向的代表flow的key能够同步,不会产生误匹配。

结合图1和图2所示,本发明所揭示的一种基于硬件实现流表双向数据同步的方法,包括:

s1,预先在芯片的入口ipfix处理模块中根据数据报文生成关键字索引,在入口数据处理模块中添加入口流修改计数字段,及在出口数据处理模块中添加出口流修改计数字段。

具体地,在芯片(如asic芯片)的入口方向上,入口ipfix处理模块根据flow规则,抽取出数据报文中相应的字段作为ipfix的flowkey(流关键字)。通过hash(哈希)算法将flowkey压缩成keyindex(关键字索引)。在入口ipfix处理模块中keyindex有三个作用,其一是作为key存放在入口ipfix处理模块的keymemory(关键字存储器)中的index;其二用于作为入口方向flow数据存储(即入口数据memory)的index;其三是作为flow的标识(flowid),带到出口方向的出口ipfix处理模块中。

同时在入口ipfix处理模块中添加入口流修改计数字段(ingressflowchangecount),用于记录入口流修改计数,ingressflowchangecount的初始值设置为0。及在出口ipfix处理模块中添加出口流修改计数字段(egressflowchangecount),用于记录出口流修改计数,egressflowchangecount的初始值设置为0。

s2,所述入口ipfix处理模块将数据报文和所述关键字索引和入口流修改计数字段组成总线数据送到出口ipfix处理模块。

具体地,结合图3所示,所述总线(bus)数据依次经过芯片的入口数据处理模块、报文调度处理和出口数据处理模块,到达出口ipfix处理模块。

s3,所述出口ipfix处理模块收到所述数据报文和对应的所述总线数据,从所述总线数据中提取出所述关键字索引和入口流修改计数字段,使用所述关键字索引在其出口数据存储中读取出出口数据,并在所述出口数据中提取出所述出口流修改计数字段。

具体地,出口ipfix处理模块在收到数据报文的同时,也收到对应的总线数据,然后从总线数据中提取出关键字索引和入口流修改计数字段,使用关键字索引在出口ipfix处理模块的出口数据存储(memory),索引出出口数据,并在出口数据中提取出出口流修改计数字段。

s4,所述出口ipfix处理模块继续判断所述入口流修改计数字段和所述出口流修改计数字段是否相等,若相等,则将数据报文继续进行出口方向的ipfix处理。

具体地,出口ipfix处理模块判断入口的入口流修改计数字段和出口的出口流修改计数字段的值是否相等,如果相等,则认为当前的出口数据和当前入口ipfix处理模块的ipfix关键字key是匹配的,继续进行出口方向的ipfix处理,否则,即不相等,则认为不是同一条流,忽略后续出口ipfix的处理。这里需要明确的是,不相等表明该条flow的key已经被删除,具体就是这条flow中的某一个报文在入口ipfix做处理时候key还存在,在传输到出口ipfix的处理引擎前的这段时间,key已经被删除。删除原因有多种,可能是老化(aging)导致的也有可能是cpu主动删除或者其他原因。

另外,在当数据流出现老化或者删除所述ipfix关键字对应的流信息时,则同时将入口流修改计数字段和出口流修改计数字段的值递增,以保持同步。需要说明的是,删除flow信息通常有两个地方会出现删除key的操作,一种是flow的自然老化,由ipfix的老化引擎(agingengine)来处理,另一种是cpu下发指令来做删除处理。在ipfix的agingengine和cpu的删除指令处理engine中都需要同时能够访问到入方向(ingress)ipfix和出方向(egress)ipfix中的对于flow做统计的存储(memory),并更新两块memory中的流修改计数字段。

另外,入口流修改计数字段和出口流修改计数字段的值不需要无限递增,无限递增需存储一个很大的数,实际只需要循环就可以了。例如0,1,2,3,4,5,6,0,1,2,3,4,5,6...循环即可。

本发明所揭示的一种基于硬件实现流表双向数据同步装置,包括:入口ipfix处理模块和出口ipfix处理模块,其中,所述入口ipfix处理模块中预先根据数据报文生成关键字索引及添加有入口流修改计数字段,及所述出口ipfix处理模块中添加有出口流修改计数字段;

所述入口ipfix处理模块用于将数据报文和所述关键字索引和入口流修改计数字段组成总线数据送到出口ipfix处理模块;

所述出口ipfix处理模块用于在收到所述数据报文和对应的所述总线数据后,从所述总线数据中提取出所述关键字索引和入口流修改计数字段,使用所述关键字索引在其出口数据存储中读取出出口数据,并在所述出口数据中提取出所述出口流修改计数字段;

所述出口ipfix处理模块还用于继续判断所述入口流修改计数字段和所述出口流修改计数字段是否相等,若相等,则将数据报文继续进行出口方向的ipfix处理。

其中,入口ipfix处理模块和出口ipfix处理模块的实现原理可参见上述步骤s1~s3的介绍,这里不做赘述。

本发明的技术内容及技术特征已揭示如上,然而熟悉本领域的技术人员仍可能基于本发明的教示及揭示而作种种不背离本发明精神的替换及修饰,因此,本发明保护范围应不限于实施例所揭示的内容,而应包括各种不背离本发明的替换及修饰,并为本专利申请权利要求所涵盖。

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