一种基于回溯机制的数据中心网络遥测信息采集方法

未命名 08-26 阅读:148 评论:0


1.本发明涉及计算机网络通信领域,尤其涉及一种基于回溯机制的数据中心网络遥测信息采集方法。


背景技术:

2.近年来,随着数据中心模式的逐步成熟,越来越多的关键业务部署在数据中心网络中,网络拓扑也日趋复杂庞大。作为连接数据中心网络测量和管理的重要桥梁,遥测数据采集的性能和收集数据支撑进一步分析、管理功能的能力直接影响数据中心网络运维的效率。特别是现实中,正常状态下遥测信息只在邻居关系内交互。在收集汇总过程中或者随流收集至下游交换机,或者直接与控制器交互,上游交换机对于网内遥测信息的获取能力较为薄弱。但是作为上游交换机,其依照数据决策的能力直接影响了负载均衡、快速重路由等数据中心重要优化功能。可以说一个支撑上游交换机获取详细数据的高效遥测信息采集方法能够直接提升数据中心网络管理和网络运维的实际效能。
3.数据中心网络遥测数据采集是指为了获取精确的网内状态,在特定时机收集测量的网络信息的方法。一般来说,现有的遥测数据收集方法可以分为两类,pull模式和push模式。pull模式主要是基于控制器的轮询模式,它要求收集器轮询每个网元并提取信息。如果需要支撑上游交换机智能决策,需要在控制器收集汇总数据后,再将数据下发到上游交换机,进行全局优化。但一方面随着网络规模的扩大,采集器数量和需要采集的信息不断增加,使得网元不得不接受越来越多的查询,而这也将很快导致控制器瓶颈问题的出现。另一方面,数据需要先由控制器收集,再进行下发,时效性不高,对于一些突发的事件反应速度较慢。
4.另一种方法是push方法,该方法基于交换机本身主动上传遥测数据实现。特别是随着硬件设备的发展,网络内设备可以主动聚合上传到控制器的细粒度信息。push模式的代表方法可以进一步分为postcard模式和passport模式。postcard方法允许设备在流量通过时,每个交换机实时与控制器交互以获取细粒度的感知和便捷的控制能力。但是对于上游交换机来讲,还是依照先收集再下发的流程进行,虽然可以支撑高并发流量下的数据采集,但是对于上游交换机的支撑能力仍然较弱。passport方法通过不断将有效载荷信息添加到特定数据包中以记录逐跳数据和关联。但是这种随流检测的类型一般选择将数据随流流转到下游交换机,上游交换机无法有效及时获取下游交换机的数据,进行智能决策。
5.同时,得益于可编程设备的不断发展,目前数据包的处理可以变得愈加灵活高效,可以非常方便的实现数据中心中流级别的遥测信息采集。数据包在经过可编程交换机的入口、出口处理管道时,可编程交换机可以从数据包头部和载荷中提取当前流的五元组信息(源ip地址、目的ip地址、源端口号、目的端口号和协议号)。根据五元组信息可以唯一的识别一条流,并针对特定的流进行数据的存储与采集,从而实现流级别的遥测信息采集。


技术实现要素:

6.本发明要解决的技术问题:针对现有技术的上述问题,提供一种基于回溯机制的数据中心网络遥测信息采集方法,本发明能够实现高效低开销的数据收集,实现了无需控制器参与的上游设备获取多跳距离外信息的能力,能有效针对负载均衡、快速重路由等自适应算法提供更详细和丰富的决策依据,具有较好的可扩展性和易用性。
7.为了解决上述技术问题,本发明采用的技术方案为:
8.一种基于回溯机制的数据中心网络遥测信息采集方法,包括各个交换机实时进行流信息采集和存储,若某一交换机收到遥测信息采集任务,则根据任务生成快包直接发送至指定的源边缘交换机,并根据任务生成慢包发送至网络中的上一跳交换机,通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直至慢包到达指定的源边缘交换机;源边缘交换机分别接收快包和慢包并生成告警数据包或者数据报告并转发给控制器。
9.可选地,所述进行流信息采集和存取时,进行流信息采集包括:从当前交换机的交换机接口ingress的入队列中读取数据包pkt头部的五元组作为二进制串q-tuple,查询硬件转发表获得数据包的入端口号in_num和出端口号out_num,查询内部时钟获取流出现时间戳timestamps_in;查询当前交换机的现场数据flow_data,将二进制串q-tuple、入端口号in_num、出端口号out_num、流出现时间戳timestamps_in以及现场数据flow_data整理为用分隔符间隔的二进制串flow_raw_data以作为采集得到的流信息。
10.可选地,所述进行流信息采集和存取时,进行流信息存储包括:采用两个指定的哈希函数分别计算当前的流信息中数据包的头部五元组信息的哈希值,得到哈希值hash1和哈希值hash2;判断哈希值hash1和哈希值hash2在布谷过滤器中对应位置的情况,若哈希值hash1或哈希值hash2对应的位置为空,则选择一个为空的位置插入当前的流信息,存储结束;若哈希值hash1对应的位置为空且值等于哈希值hash1,或者哈希值hash2对应的位置为空且值等于哈希值hash2,则判定当前的流信息已经存储,存储结束;若哈希值hash1和哈希值hash2对应的位置均非空,按照布谷过滤器中插入算法的方法递归的挪动数据使得哈希值hash1或哈希值hash2对应的位置为空,最后将数据插入挪动数据腾空的位置中。
11.可选地,所述进行流信息采集和存取时,所述进行流信息存储时还包括:定期计算所有已经存入的流信息中的流出现时间戳timestamps_in与当前时间戳time.time之间的时间差值,如果某一流信息的时间差值超过预设阈值,则按布谷过滤器中删除算法的流程,查找该流信息的位置并删除该流信息。
12.可选地,所述根据任务生成快包直接发送至指定的源边缘交换机包括:获取当前流中数据包pkt头部的五元组哈希值hash_flow及任务指定的源边缘交换机的ip地址srcip;按照指定的报文格式生成一个新的回溯包,并将目的ip设置成源边缘交换机的ip地址srcip,将五元组哈希值hash_flow、当前设备的交换设备编号switch id及任务触发时间task_ini_timestamps及任务指定的事件编号event id填入回溯包,并将新的回溯包标记为快包的标记fast_pkt并发送出去以直接通过网络到达指定的源边缘交换机。
13.可选地,所述根据任务生成慢包发送至网络中的上一跳交换机包括:获取当前流中数据包pkt头部的五元组哈希值hash_flow、入端口号in_num、出端口号out_num以及现场数据flow_data,根据入端口号in_num、出端口号out_num获取当前流的正常方向上的源mac地址srcmac与目的mac地址dstmac,按照指定的报文格式生成一个新的回溯包,将源mac地
址srcmac作为上一跳交换机的mac地址,将五元组哈希值hash_flow和任务指定的事件编号event id填入回溯包,并将新的回溯包标记为慢包的标记slow_pkt并发送至上一跳交换机。
14.可选地,所述通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直至慢包到达指定的源边缘交换机时,收到慢包的上一跳交换机针对慢包的处理包括:首先解析慢包获取当前流的五元组哈希值hash_flow以及任务指定的事件编号event id,根据五元组哈希值hash_flow,查询硬件转发表获得数据包的入端口号in_num和出端口号out_num,以及本交换机的流数据及现场数据flow_data生成本交换机的流数据列表;按照任务指定的事件编号event id,抽取慢包的载荷中下游交换机的流数据列表,所述流数据列表包括流数据及现场数据flow_data,将本交换机的流数据列表、下游交换机的流数据列表按栈顺序形成多个二元组(switchid,relavant_flow_data)作为慢包中的遥测数据,其中switchid为交换机的编号,relavant_flow_data为流数据列表;同时根据入端口号in_num、出端口号out_num获取当前流的正常方向上的源mac地址srcmac与目的mac地址dstmac,将源mac地址srcmac作为慢包中新的上一跳交换机的mac地址,并将慢包发送至上一跳交换机或者指定的源边缘交换机。
15.可选地,所述慢包的数据区域包括以太数据帧头部、回溯数据头部以及遥测数据栈,所述以太数据帧头部中包含上一跳交换机的mac地址和本设备mac地址,所述将源mac地址srcmac作为慢包中新的上一跳交换机的mac地址时,还包括将本交换机的mac地址填入以太数据帧头部中的本设备mac地址;所述回溯数据头部中包括当前流的五元组哈希值hash_flow、任务指定的事件编号event id、数据栈深度和整体长度,所述形成多个二元组(switch id,relavant_flow_data)作为慢包中的遥测数据栈时,还报更新回溯数据头部中的数据栈深度和整体长度,使得数据栈深度为二元组(switch id,relavant_flow_data)的大小,整体长度为慢包的整体长度。
16.可选地,所述源边缘交换机分别接收快包和慢包时,接收快包后的处理包括:解析快包的包格式,获取快包中的五元组哈希值hash_flow、当前设备的交换设备编号switch id及任务触发时间task_ini_timestamps及任务指定的事件编号event id;根据预先设定的规则,识别任务指定的事件编号event id,如果事件编号event id对应的事件为故障事件,则将快包作为告警数据包直接转发至控制器;通过五元组哈希值hash_flow获取本交换机中当前数据流对应的数据包pkt头部的五元组作为二进制串q-tuple,形成初始的数据报告并等待对应的慢包到达。
17.可选地,所述源边缘交换机分别接收快包和慢包时,接收慢包后的处理包括:解析慢包的包格式,获取慢包中的五元组哈希值hash_flow、当前设备的交换设备编号switch id、遥测数据栈、数据栈深度和整体长度,根据五元组哈希值hash_flow查找对应的快包,获取已经生成好的初始的数据报告;然后从遥测数据栈中抽取二元组(switch id,relavant_flow_data)并按序存入数据报告中,switchid为交换机的编号,relavant_flow_data为流数据列表;在遥测数据栈的所有数据抽取完毕并存入数据报告后,通过整体长度进行校验,校验通过则将数据报告转发给控制器,当前流的遥测信息采集任务完成。
18.1、本发明针对数据中心网络场景下遥测信息采集方法对于上游交换机智能决策支撑能力弱的问题,本发明通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直
至慢包到达指定的源边缘交换机来实现高效低开销的数据收集。
19.2、本发明实现了无需控制器参与的上游设备获取多跳距离外信息的能力,能有效针对负载均衡、快速重路由等自适应算法提供更详细和丰富的决策依据。此外,该方法还具有较好的可扩展性和易用性,能够快速便捷的根据需求收集特定信息,支持不同种类的根因定位和故障恢复算法。
附图说明
20.图1为本发明实施例中遥测信息采集的原理示意图。
21.图2为本发明实施例中慢包的数据结构示意图。
22.图3为本发明实施例中执行回溯收集数据时慢包的递归收集工作流程图。
具体实施方式
23.为了更清楚地说明本发明基于回溯机制的数据中心网络遥测信息采集方法的步骤,以部署在可编程交换机的数据平面为例对本发明基于回溯机制的数据中心网络遥测信息采集方法进行进一步的详细说明。在说明过程中,本实施例中将网内的交换设备分为两种角色,边缘交换机和其他交换机。边缘交换机指的是与终端、服务器直接相连的接入交换机。其他交换机指的是网内的交换设备中除去边缘交换机的其他交换机集合。
24.如图1所示,本实施例提供一种基于回溯机制的数据中心网络遥测信息采集方法,包括各个交换机实时进行流信息采集和存储,若某一交换机收到遥测信息采集任务(图1中表示为

回溯任务触发),则根据任务生成快包直接发送至指定的源边缘交换机(图1中表示为

快包直传),并根据任务生成慢包发送至网络中的上一跳交换机,通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直至慢包到达指定的源边缘交换机(图1中表示为

慢包回溯);源边缘交换机分别接收快包和慢包并生成告警数据包(图1中

所示)或者数据报告(图1中

所示)并转发给控制器。图1中,h1和h2为两个主机,s1~s6为交换机,其中s1和s6为边缘交换机,s2~s5为其他交换机。参见图1可知,交换机s5根据任务生成快包直接发送至指定的源边缘交换机s1,并根据任务生成慢包发送至网络中的上一跳交换机s4,从上一跳交换机s4开始通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直至慢包到达指定的源边缘交换机s1,回溯过程依次经过s4、s3、s2到达s1,在此过程中会收集s4、s3、s2中的流信息和任务相关信息,使得s1在不需要控制器干预即可获得s4、s3、s2中的流信息和任务相关信息;源边缘交换机s1分别接收快包和慢包并生成告警数据包(图1中

所示)或者数据报告(图1中

所示)并转发给控制器。
25.作为一种可选的实施方式,本实施例中包括在交换机数据平面中增加流信息采集模块,在控制平面中增加定制化的布谷过滤器、数据存取模块、回溯数据生成模块、回溯包生成模块、数据包整合模块,其中:流信息采集模块,用于进行流信息采集;数据存取模块,用于执行流信息存储;布谷过滤器,用于存储流信息并进行过滤;回溯数据生成模块,用于生成回溯数据;回溯包生成模块,用于生成回溯包,包括快包和慢包;数据包整合模块,用于将回溯数据整合至慢包。流信息采集模块与数据存取模块相连。流信息采集模块主要负责通过特定规则,获取流的五元组信息、当前流的出入端口号、首次到达的时间、当前设备的id号以及其他可以支持后续算法的数据,如当前的最大排队深度和流优先级、流排队时延、
流丢包率等。流信息采集模块在收集上述信息后,发送给数据存取模块待存。数据存取模块与布谷过滤器、流信息采集模块、回溯数据生成模块相连。数据存取模块可以读写、删除布谷过滤器中的元素。数据存取模块的输入是五元组的哈希值、出入端口号、设备接口、采集时间以及其他变长数据组成的数据结构。数据存取模块的输出是依靠特定标识筛选出的与收集目的相关的部分数据。回溯包生成模块与回溯数据生成模块相连,负责按照自定义的报文结构生成回溯收集用的快、慢两种数据包。回溯数据生成模块则与数据存取模块相连。在遥测信息收集任务发起时,生成模块首先生成快包,通过回溯数据生成模块获取当前的收集目的、现场信息以及收集时间等信息,并通过源边缘交换机的ip生成回溯包,直接返回边缘交换机。随后生成慢包,通过回溯数据生成模块获取回溯需要使用的源、目的mac地址,填入现场信息并交由交换机转发,逐跳回溯收集遥测信息。数据包整合模块与数据存取模块相连,在收到慢包回溯来的信息时,按照特定需求收集载荷中的相关信息,记录特定流在下游交换机可能存在的异常信息,便于其他链路调优参考决策。边缘交换机直接与控制器相连,其上的数据包整合模块的输入是特定流的快包和慢包。通过整合,获取并整理快、慢包的收集信息,形成数据报告并上报控制器。
26.本实施例中通过进行流信息采集和存取时,进行流信息采集包括:从当前交换机的交换机接口ingress的入队列中读取数据包pkt头部的五元组作为二进制串q-tuple(由五元组源ip地址srcip、目的ip地址dstip、源端口号srcport、目的端口号dstport和协议protocol拼接组成),查询硬件转发表获得数据包的入端口号in_num和出端口号out_num,查询内部时钟获取流出现时间戳timestamps_in;查询当前交换机的现场数据flow_data,将二进制串q-tuple、入端口号in_num、出端口号out_num、流出现时间戳timestamps_in以及现场数据flow_data整理为用分隔符间隔的二进制串flow_raw_data以作为采集得到的流信息。数据存取模块在收到流信息采集模块上传的二进制串flow_raw_data后,依靠分隔符解析出(q-tuple、in_num、out_num、flow_data、timestamps_in)数据。
27.数据存取模块在收到二进制串flow_raw_data后,首先计算二进制串q-tuple的哈希值用于唯一标记一条流,通过执行布谷过滤器中查找算法的工作流程,判断该流是否已经被记录,如果记录则不再重复记录,如果未记录则进行进一步整理数据。此外,也可以根据需要采用其他方式来存储采集的流数据,或者采用布谷过滤器以外的其他方法来对采集的流数据进行过滤。本实施例中,对于边缘交换机需要插入的是(hash、q-tuple、in_num、out_num、flow_data、timestamps_in),对于其他交换机进需要存储(hash、srcip、in_num、out_num、flow_data、timestamps_in)即可,原因是其他交换机仅仅作为中间转发,不需要存储二进制串q-tuple。本实施例中进行流信息采集和存取时,进行流信息存储包括:采用两个指定的哈希函数分别计算当前的流信息中数据包的头部五元组信息的哈希值,得到哈希值hash1和哈希值hash2;判断哈希值hash1和哈希值hash2在布谷过滤器中对应位置的情况,若哈希值hash1或哈希值hash2对应的位置为空,则选择一个为空的位置插入当前的流信息,存储结束;若哈希值hash1对应的位置为空且值等于哈希值hash1,或者哈希值hash2对应的位置为空且值等于哈希值hash2,则判定当前的流信息已经存储,存储结束;若哈希值hash1和哈希值hash2对应的位置均非空,按照布谷过滤器中插入算法的方法递归的挪动数据使得哈希值hash1或哈希值hash2对应的位置为空,最后将数据插入挪动数据腾空的位置中。需要说明的是,布谷过滤器及其插入算法均为现有技术。布谷过滤器的结构由两个固
定大小的桶数组构成,通过流的五元组的哈希值作为唯一标识。在网内交换机(不含边缘交换机)中数组中每个元素包含三个域,分别是五元组信息的哈希域、采集的数据域与和填入时间域。在边缘交换机中,还需增加五元组信息域,即哈希域、五元组信息域、数据域及填入时间域。流五元组信息域是由流的源ip地址、目的ip地址、源端口号、目的端口号和协议号得到的。交换机开始运行,布谷过滤器初始化为空。
28.本实施例中进行流信息采集和存取时,所述进行流信息存储时还包括:定期计算所有已经存入的流信息中的流出现时间戳timestamps_in与当前时间戳time.time之间的时间差值,如果某一流信息的时间差值超过预设阈值(如300毫秒),则按布谷过滤器中删除算法的流程,查找该流信息的位置并删除该流信息,以减小所需存储空间。
29.本实施例中,流信息采集模块、数据存取模块并行工作,配合完成遥测信息收集所需信息的采集、存取功能。流信息采集模块获取流数据包头部的五元组信息、填入时间等数据并发送给数据存取模块;数据存取模块流程整理数据,生成五元组哈希值并将数据写入布谷过滤器;同时,数据存取模块定期扫描各数据填入时间,超过时间阈值的就进行删除,以减小所需存储空间。
30.本实施例中,在遥测信息采集任务发起后,数据存取模块、数据整合模块、回溯数据及包生成模块并行工作,配合完成所需遥测数据的逐跳回溯收集工作。方法是在遥测数据收集任务发起后,回溯数据生成模块与回溯包生成模块协作,通过数据存取模块获取需要收集的流的简易信息,结合收集目的(如仅收集与排队时延指标异常事件相关的数据)生成快包,直接发送至源边缘交换机,用于快速告警或指示网内发生的事件类型和遥测收集任务的简易信息;随后,二者协作获取上一跳交换设备地址,结合收集目的生成慢包,并发送至上一跳交换设备。其他网内设备在收到慢包后,按照特定报文字段标识的收集目的,存储慢包载荷中与事件相关的信息用于支撑其他智能调优算法获取多跳之外的下游交换机信息,同时通过数据存取模块收集相应的遥测数据并填入慢包载荷中,通过回溯数据生成模块获取上一跳交换设备地址并修改慢包地址,随后按地址发送至上一跳交换设备。重复上述回溯过程,直至慢包到达源边缘交换机。
31.本实施例中根据任务生成快包直接发送至指定的源边缘交换机包括:获取当前流中数据包pkt头部的五元组哈希值hash_flow及任务指定的源边缘交换机的ip地址srcip;按照指定的报文格式生成一个新的回溯包,并将目的ip设置成源边缘交换机的ip地址srcip,将五元组哈希值hash_flow、当前设备的交换设备编号switch id及任务触发时间task_ini_timestamps及任务指定的事件编号event id填入回溯包,并将新的回溯包标记为快包的标记fast_pkt并发送出去以直接通过网络到达指定的源边缘交换机(无需逐跳收集数据,然后直接发至数据平面转发出去)。本实施例中,快包主要由三部分组成:以太网数据帧头部、填入了源边缘交换机ip的标准ip头部及使用udp协议形成的包含有收集任务简易信息的有效载荷。
32.本实施例中根据任务生成慢包发送至网络中的上一跳交换机包括:获取当前流中数据包pkt头部的五元组哈希值hash_flow、入端口号in_num、出端口号out_num以及现场数据flow_data,根据入端口号in_num、出端口号out_num获取当前流的正常方向上的源mac地址srcmac与目的mac地址dstmac,按照指定的报文格式生成一个新的回溯包,将源mac地址srcmac作为上一跳交换机的mac地址,将五元组哈希值hash_flow和任务指定的事件编号
event id填入回溯包,并将新的回溯包标记为慢包的标记slow_pkt并发送至上一跳交换机。其他交换设备在收到下游交换机的带有慢包的标记slow_pkt的慢包时,收集下游交换机时间信息和现场信息,解析数据包获取收集目的,根据相应的收集目的从回溯数据生成模块中获取数据及获取上一跳的mac地址,并进行转发。如图3所示,通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直至慢包到达指定的源边缘交换机时,收到慢包的上一跳交换机针对慢包的处理包括:首先解析慢包获取当前流的五元组哈希值hash_flow以及任务指定的事件编号event id,根据五元组哈希值hash_flow,查询硬件转发表获得数据包的入端口号in_num和出端口号out_num,以及本交换机的流数据及现场数据flow_data生成本交换机的流数据列表;按照任务指定的事件编号event id,抽取慢包的载荷中下游交换机的流数据列表,所述流数据列表包括流数据及现场数据flow_data,将本交换机的流数据列表、下游交换机的流数据列表按栈顺序形成多个二元组(switchid,relavant_flow_data)作为慢包中的遥测数据,其中switchid为交换机的编号,relavant_flow_data为流数据列表;同时根据入端口号in_num、出端口号out_num获取当前流的正常方向上的源mac地址srcmac与目的mac地址dstmac,将源mac地址srcmac作为慢包中新的上一跳交换机的mac地址,并将慢包发送至上一跳交换机或者指定的源边缘交换机。此时,作为上游交换机的交换设备就获取了多跳之外的下游交换机的现场信息,这些信息可以用与负载均衡、快速重路由等方法的智能决策。上一跳设备收到标记为慢包时,解析回溯报文头,获取事件编号event id,依照事件编号event id字段数据和预定规则,抽取对应的数据形成流数据列表relavant_flow_data,准备附加在载荷后面,形成新的载荷。同时将按照新的载荷长度,同步修改回溯报文头部中的数据栈深度data left和包整体长度total length值。回溯包生成模块通过hash_flow值,查询对应的in/out_num,获取正常方向上的srcmac与dstmac并修改数据包中的对应值,此时当前包的目的地址是srcmac,源地址是dstmac。随后将已经附加好载荷和修改过头部的新slow_pkt送至数据平面转发。重复执行上述过程,使得标记为slow_pkt的慢包沿真实路径逐跳通告下游交换机数据,并迭代回溯收集到达边缘交换机。同时,为了缓解存储压力,防止冗余数据占用存储空间,各个上一跳交换机同样也定期计算所有已经存入的流信息中的流出现时间戳timestamps_in与当前时间戳time.time之间的时间差值,如果某一流信息的时间差值超过预设阈值(如300毫秒),则按布谷过滤器中删除算法的流程,查找该流信息的位置并删除该流信息,以减小所需存储空间。
33.如图2所示,慢包的数据区域包括以太数据帧头部、回溯数据头部以及遥测数据栈,以太数据帧头部中包含上一跳交换机的mac地址和本设备mac地址,所述将源mac地址srcmac作为慢包中新的上一跳交换机的mac地址时,还包括将本交换机的mac地址填入以太数据帧头部中的本设备mac地址;所述回溯数据头部中包括当前流的五元组哈希值hash_flow、任务指定的事件编号event id、数据栈深度data left和整体长度total length,所述形成多个二元组(switch id,relavant_flow_data)作为慢包中的遥测数据栈时,还报更新回溯数据头部中的数据栈深度data left和整体长度total length,使得数据栈深度data left为二元组(switch id,relavant_flow_data)的大小,整体长度total length为慢包的整体长度。
34.源边缘交换机在收到一个标记为fast_pkt的快包时开始工作。收到快包时,首先抽取快包报文中的事件信息,如果是异常告警或者故障告警类的事件信息则直接转发给控
制器,起到及时告警的目的,然后等待同一条流的慢包到来;当同一条流的慢包到达边缘交换机时,然后整合数据生成数据报告并上传至控制器。
35.本实施例中源边缘交换机分别接收快包和慢包时,接收快包后的处理包括:解析快包的包格式,获取快包中的五元组哈希值hash_flow、当前设备的交换设备编号switch id及任务触发时间task_ini_timestamps及任务指定的事件编号event id;根据预先设定的规则,识别任务指定的事件编号event id,如果事件编号event id对应的事件为故障事件(例如流排队时延过长、丢包率过大等指标异常或链路不通等),则将快包作为告警数据包直接转发至控制器;通过五元组哈希值hash_flow获取本交换机中当前数据流对应的数据包pkt头部的五元组作为二进制串q-tuple(此类信息仅在边缘交换机上存储),形成初始的数据报告并等待对应的慢包到达。接收慢包后的处理包括:解析慢包的包格式,获取慢包中的五元组哈希值hash_flow、当前设备的交换设备编号switch id、遥测数据栈、数据栈深度和整体长度,根据五元组哈希值hash_flow查找对应的快包,获取已经生成好的初始的数据报告;然后从遥测数据栈中抽取二元组(switch id,relavant_flow_data)并按序存入数据报告中,switchid为交换机的编号,relavant_flow_data为流数据列表;在遥测数据栈的所有数据抽取完毕并存入数据报告后,通过整体长度进行校验防止数据缺失或溢出,校验通过则将数据报告转发给控制器,当前流的遥测信息采集任务完成。
36.综上所述,针对数据中心网络场景下遥测信息采集方法对于上游交换机智能决策支撑能力弱的问题,本实施例方法通过收集少量与收集目的相关数据,并沿着流的真实路径逐跳与上游交换机交互远端(多跳范围之外)数据,直至回溯收集到边缘交换机来实现高效低开销的数据收集。同时,实现了无需控制器参与的上游设备获取多跳距离外信息的能力,能有效针对负载均衡、快速重路由等自适应算法提供更详细和丰富的决策依据。此外,该方法还具有较好的可扩展性和易用性,能够快速便捷的根据需求收集特定信息,支持不同种类的根因定位和故障恢复算法。
37.本实施例方法通过慢包回溯,实现了遥测信息的收集功能的同时,向上游交换机通告下游交换机的事件信息和故障信息,提供了远端信息的获取能力。由于在回溯过程中慢包所携带的故障信息会通过链路逐跳经过上游交换机,在采集数据的同时,链路的上游交换机也可以同步获取多跳之外下游交换机的状态信息及可能的故障信息。这种超出邻居关系传递信息的可能性,允许在多跳之外的上游交换机,在没有全局控制器参与规划和控制的前提下,在遇到网内故障,如链路拥塞时,可以自行完成远距离负载均衡和调度流量等功能。同时,由于可以获取多跳之外的设备的现场信息,也可以为部署在上游交换机的其他自适应算法提供更加详细的数据依据。当多个设备具有远距离信息获取、自适应决策能力时,可以实现局部的智能自适应功能。通过快慢包机制,同步实现了事件的快速告警和数据的可靠收集功能;本实施例方法通过定制化的布谷过滤器,实现了高并发环境下的数据查找、插入、删除操作,使得大流量下数据存取具有较高的可用性。本实施例方法结合布谷过滤器结构,实现了流数据及回溯机制实现所需数据的查找、存储和删除方法。通过在数据平面为每个设备维护一个布谷过滤器结构,每次流信息采集模块上报流数据时,使用布谷过滤器查找算法判断流是否已经存储,如果已经存储则忽略本次插入;如果未存储,则通过插入算法,插入布谷过滤器,网内设备中的数据结构为(五元组哈希值,出端口号,入端口号,源边缘交换机ip,填入时间戳,网络数据),其中网络数据是由现场信息组成的数据结构,其
具体内容可根据网络测量、异常检测、故障定位等算法的需求快速定制,边缘交换机中的数据结构还需增加五元组的具体信息,即(五元组哈希值,五元组具体信息,出端口号,入端口号,源边缘交换机ip,填入时间戳,网络数据);由于流的持续时间普遍较短,采用定期删除条目的方法,有效缓解存储压力、提高存取效率,具体通过定期扫描的方式,将填入时间超过一定阈值的数据条目进行删除。本实施例方法使用了自行设计的回溯数据包格式,快包主要由三部分组成:以太网数据帧头部、填入了源边缘交换机ip的标准ip头部及使用udp协议形成的包含有收集任务简易信息的有效载荷。慢包(回溯数据包)主要由三部分组成:反向填入源、目的地址的以太网数据帧头部,包含有当前流五元组哈希值、事件id、载荷数据深度、数据包总大小四个字段的回溯数据包头部,以及在每个设备中收集到的有效数据组成的回溯数据包载荷。其中,为了具有更好的扩展性和易用性,回溯数据包中的有效载荷采用栈结构的形式,允许收集设备按照(设备id,变长数据结构)的形式放入载荷中,变长数据结构中的信息具体由支持的网络分析、定位、恢复算法和事件id共同决定,实现了较好的可扩展性和易用性。本实施例方法实现了回溯收集及远端信息通告的机制。具体通过获取流经设备时特定流的出入端口号标记特定的源、目的mac地址并在需要回溯时反向填入回溯包数据帧头部,从而实现沿真实路径返回上一跳的功能;通过不断数据收集和回溯地址的填入,可以实现沿真实路径逐跳收集相应数据及下游交换机信息对上游交换机的通告功能,最后返回边缘交换机。可以有效提升上游交换机队下游交换机网内状态的掌控和把握,对上游交换机自适应地决策能力有显著提升的可能性。此过程无需控制器参与规划及控制,可以有效缓解集中型控制器的存储开销和计算开销。本实施例方法生成了快慢两种回溯包,同时实现了快速事件告警和可靠数据收集的功能。主要在遥测数据收集任务发起时优先生成快包,填入遥测数据收集任务简易信息,直接通过源边缘交换机ip进行发送,无需进行逐跳回溯和数据收集,起到了快速通知、快速告警的功能;在生成快包后,继续生成慢包,按照逐步回溯收集数据,起到了可靠数据收集的功能。
38.以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

技术特征:
1.一种基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,包括各个交换机实时进行流信息采集和存储,若某一交换机收到遥测信息采集任务,则根据任务生成快包直接发送至指定的源边缘交换机,并根据任务生成慢包发送至网络中的上一跳交换机,通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直至慢包到达指定的源边缘交换机;源边缘交换机分别接收快包和慢包并生成告警数据包或者数据报告并转发给控制器。2.根据权利要求1所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述进行流信息采集和存取时,进行流信息采集包括:从当前交换机的交换机接口ingress的入队列中读取数据包pkt头部的五元组作为二进制串q-tuple,查询硬件转发表获得数据包的入端口号in_num和出端口号out_num,查询内部时钟获取流出现时间戳timestamps_in;查询当前交换机的现场数据flow_data,将二进制串q-tuple、入端口号in_num、出端口号out_num、流出现时间戳timestamps_in以及现场数据flow_data整理为用分隔符间隔的二进制串flow_raw_data以作为采集得到的流信息。3.根据权利要求1所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述进行流信息采集和存取时,进行流信息存储包括:采用两个指定的哈希函数分别计算当前的流信息中数据包的头部五元组信息的哈希值,得到哈希值hash1和哈希值hash2;判断哈希值hash1和哈希值hash2在布谷过滤器中对应位置的情况,若哈希值hash1或哈希值hash2对应的位置为空,则选择一个为空的位置插入当前的流信息,存储结束;若哈希值hash1对应的位置为空且值等于哈希值hash1,或者哈希值hash2对应的位置为空且值等于哈希值hash2,则判定当前的流信息已经存储,存储结束;若哈希值hash1和哈希值hash2对应的位置均非空,按照布谷过滤器中插入算法的方法递归的挪动数据使得哈希值hash1或哈希值hash2对应的位置为空,最后将数据插入挪动数据腾空的位置中。4.根据权利要求2所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述进行流信息采集和存取时,所述进行流信息存储时还包括:定期计算所有已经存入的流信息中的流出现时间戳timestamps_in与当前时间戳time.time之间的时间差值,如果某一流信息的时间差值超过预设阈值,则按布谷过滤器中删除算法的流程,查找该流信息的位置并删除该流信息。5.根据权利要求1所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述根据任务生成快包直接发送至指定的源边缘交换机包括:获取当前流中数据包pkt头部的五元组哈希值hash_flow及任务指定的源边缘交换机的ip地址srcip;按照指定的报文格式生成一个新的回溯包,并将目的ip设置成源边缘交换机的ip地址srcip,将五元组哈希值hash_flow、当前设备的交换设备编号switch id及任务触发时间task_ini_timestamps及任务指定的事件编号event id填入回溯包,并将新的回溯包标记为快包的标记fast_pkt并发送出去以直接通过网络到达指定的源边缘交换机。6.根据权利要求2所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述根据任务生成慢包发送至网络中的上一跳交换机包括:获取当前流中数据包pkt头部的五元组哈希值hash_flow、入端口号in_num、出端口号out_num以及现场数据flow_data,根据入端口号in_num、出端口号out_num获取当前流的正常方向上的源mac地址srcmac与目的mac地址dstmac,按照指定的报文格式生成一个新的回溯包,将源mac地址
srcmac作为上一跳交换机的mac地址,将五元组哈希值hash_flow和任务指定的事件编号event id填入回溯包,并将新的回溯包标记为慢包的标记slow_pkt并发送至上一跳交换机。7.根据权利要求1所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直至慢包到达指定的源边缘交换机时,收到慢包的上一跳交换机针对慢包的处理包括:首先解析慢包获取当前流的五元组哈希值hash_flow以及任务指定的事件编号event id,根据五元组哈希值hash_flow,查询硬件转发表获得数据包的入端口号in_num和出端口号out_num,以及本交换机的流数据及现场数据flow_data生成本交换机的流数据列表;按照任务指定的事件编号event id,抽取慢包的载荷中下游交换机的流数据列表,所述流数据列表包括流数据及现场数据flow_data,将本交换机的流数据列表、下游交换机的流数据列表按栈顺序形成多个二元组(switchid,relavant_flow_data)作为慢包中的遥测数据,其中switchid为交换机的编号,relavant_flow_data为流数据列表;同时根据入端口号in_num、出端口号out_num获取当前流的正常方向上的源mac地址srcmac与目的mac地址dstmac,将源mac地址srcmac作为慢包中新的上一跳交换机的mac地址,并将慢包发送至上一跳交换机或者指定的源边缘交换机。8.根据权利要求7所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述慢包的数据区域包括以太数据帧头部、回溯数据头部以及遥测数据栈,所述以太数据帧头部中包含上一跳交换机的mac地址和本设备mac地址,所述将源mac地址srcmac作为慢包中新的上一跳交换机的mac地址时,还包括将本交换机的mac地址填入以太数据帧头部中的本设备mac地址;所述回溯数据头部中包括当前流的五元组哈希值hash_flow、任务指定的事件编号event id、数据栈深度和整体长度,所述形成多个二元组(switch id,relavant_flow_data)作为慢包中的遥测数据栈时,还报更新回溯数据头部中的数据栈深度和整体长度,使得数据栈深度为二元组(switch id,relavant_flow_data)的大小,整体长度为慢包的整体长度。9.根据权利要求5所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述源边缘交换机分别接收快包和慢包时,接收快包后的处理包括:解析快包的包格式,获取快包中的五元组哈希值hash_flow、当前设备的交换设备编号switch id及任务触发时间task_ini_timestamps及任务指定的事件编号event id;根据预先设定的规则,识别任务指定的事件编号event id,如果事件编号event id对应的事件为故障事件,则将快包作为告警数据包直接转发至控制器;通过五元组哈希值hash_flow获取本交换机中当前数据流对应的数据包pkt头部的五元组作为二进制串q-tuple,形成初始的数据报告并等待对应的慢包到达。10.根据权利要求8所述的基于回溯机制的数据中心网络遥测信息采集方法,其特征在于,所述源边缘交换机分别接收快包和慢包时,接收慢包后的处理包括:解析慢包的包格式,获取慢包中的五元组哈希值hash_flow、当前设备的交换设备编号switch id、遥测数据栈、数据栈深度和整体长度,根据五元组哈希值hash_flow查找对应的快包,获取已经生成好的初始的数据报告;然后从遥测数据栈中抽取二元组(switch id,relavant_flow_data)并按序存入数据报告中,switchid为交换机的编号,relavant_flow_data为流数据列表;在遥测数据栈的所有数据抽取完毕并存入数据报告后,通过整体长度进行校验,校验通过则
将数据报告转发给控制器,当前流的遥测信息采集任务完成。

技术总结
本发明公开了一种基于回溯机制的数据中心网络遥测信息采集方法,包括各个交换机实时进行流信息采集和存储,若某一交换机收到遥测信息采集任务,则根据任务生成快包直接发送至指定的源边缘交换机,并根据任务生成慢包发送至网络中的上一跳交换机,通过慢包逐跳回溯收集中间交换机的流信息和任务相关信息直至慢包到达指定的源边缘交换机;源边缘交换机分别接收快包和慢包并生成告警数据包或者数据报告并转发给控制器。本发明能够实现高效低开销的数据收集,实现了无需控制器参与的上游设备获取多跳距离外信息的能力,能有效针对负载均衡、快速重路由等自适应算法提供更详细和丰富的决策依据,具有较好的可扩展性和易用性。具有较好的可扩展性和易用性。具有较好的可扩展性和易用性。


技术研发人员:刘佳琦 荀鹏 王宝生 郦苏丹 唐竹 彭伟
受保护的技术使用者:中国人民解放军国防科技大学
技术研发日:2023.05.26
技术公布日:2023/8/23
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐