本发明涉及带内网络遥测,尤其涉及一种基于带内网络遥测的遥测数据实时压缩方法和系统。
背景技术:
1、随着互联网规模继续扩大、用户基数不断激增、业务类型趋向差异化及网络流量特征复杂等,给网络管理带来了新挑战。实时、高效、细粒度地监控网络状态,实现网络状态的深度、全面可观测,给网络测量提出了新要求。传统网络测量方式存在监测粒度粗、实时性差等问题,难以满足网络管理的需求。近年来,随着可编程数据平面的发展,带内网络遥测(in-band network telemetry,int)技术逐渐崭露头角。带内网络遥测通过交换节点在报文中插入元数据来采集网络状态,是一种随包进行网络状态获取的网络测量方法。int可以精准实现逐包、逐流、逐路径的网络状态实时监测,通过中间交换节点在用户数据包的相应位置插入元数据,实现网络状态数据收集功能,为智能网络管理提供可靠数据支撑。然而,随着网络规模的增加,数据包或网络流量经过网络节点的数量超过一定阈值时,数据包的长度会超过最大传输单元(maximum transmission unit,mtu),用于监控网络状态的数据将急剧增加,导致网络传输效率大大降低。因此,如何实时高效地进行网络状态监测,从根本上降低int测量数据上报节点数量,降低网络状态监控产生的开销,是带内网络遥测机制亟需解决的关键问题。
2、现有的带内遥测数据压缩方法需要修改交换机的编译器,重新对编译器进行编译,因此方法复杂,压缩效率低。
技术实现思路
1、鉴于上述的分析,本发明实施例旨在提供一种基于带内网络遥测的遥测数据实时压缩方法,用以解决现有带内遥测数据压缩复杂,压缩效率低的问题。
2、一方面,本发明实施例提供了一种基于带内网络遥测的遥测数据实时压缩方法,包括以下步骤:
3、获取网络数据包并进行解析得到数据包头、每个节点的int数据和业务数据;
4、判断当前是否是重解析阶段;若不是,则按照第一格式收集当前节点的网络状态数据构成当前节点的int数据;将数据包头、每个节点的int数据和业务数据进行逆解析构成网络数据包,将构成的网络数据包发送至当前节点的入端;
5、若是重解析阶段,则将当前节点的int数据解析为第二格式的网络状态数据;对当前节点的第二格式的网络状态数据进行压缩,将压缩后的网络状态数据作为当前节点的int数据;将数据包头、每个节点的int数据和业务数据进行逆解析构成网络数据包,发送至下一跳节点。
6、基于上述方法的进一步改进,所述第二格式为将第一个格式中的每个字段进行分块得到的格式;对当前节点的网络状态数据进行压缩,包括:
7、根据当前节点的前一跳节点的int数据得到当前节点的前一跳节点第二格式的网络状态数据;
8、将当前节点第二格式的网络状态数据的每个分块与当前节点的前一跳节点第二格式的网络状态数据中对应的分块进行比较,采用压缩标志位记录每个分块是否相同,并将相同的分块删除;剩余的分块和压缩标志位构成当前节点压缩后的网络状态数据。
9、基于上述方法的进一步改进,将当前节点第二格式的网络状态数据的每个分块与当前节点的前一跳节点第二格式的网络状态数据对应的分块进行异或,若结果为0,则对应的压缩标志位置为0,否则置为1。
10、基于上述方法的进一步改进,根据当前节点的前一跳节点的int数据得到当前节点的前一跳节点第二格式的网络状态数据,包括:
11、对第一跳节点的int数据的每个字段进行分块,得到第一跳节点第二格式的网络状态数据;
12、若当前节点的前一跳节点不是第一跳节点,则:
13、依次以第二跳节点至当前节点的前一跳节点为当前遍历节点,根据当前遍历节点的前一跳节点第二格式的网络状态数据、当前遍历节点的int数据中的压缩标志位和分块数据还原得到当前遍历节点的第二格式的网络状态数据。
14、基于上述方法的进一步改进,根据当前遍历节点的前一跳节点第二格式的网络状态数据、当前遍历节点的int数据中的压缩标志位和分块数据还原得到当前遍历节点的第二格式的网络状态数据,包括:
15、依次遍历当前遍历节点的int数据中的每一位压缩标志位,对于第i个标志位,若为0,则取当前遍历节点的前一跳节点第二格式的网络状态数据中为第i个分块作为当前遍历节点还原后的第i个数据块;若为1,则取当前遍历节点的分块数据的最前端的一个分块作为当前遍历节点还原后的第i个数据块,并将当前遍历节点的分块数据的最前端的一个分块删除;
16、当前遍历节点还原后的数据块构成当前遍历节点的第二格式的网络状态数据。
17、基于上述方法的进一步改进,将数据包头中的ipv4包头的tos字段中的一位或ipv6包头的traffic class字段中的一位作为重解析标志位;用于当节点接收到网络数据包后根据该重解析标志位判断是否是重解析阶段。
18、基于上述方法的进一步改进,所述第二格式为将第一个格式中的每个字段进行分块得到的格式;对当前节点的网络状态数据进行压缩,包括:
19、统计当前节点第二格式的网络状态数据中每种分块的频次,根据每种分块的频次构建哈夫曼树,根据构建的哈夫曼树得到每种分块的编码;
20、根据每种分块的编码对当前节点第二格式的网络状态数据进行编码,得到当前节点压缩后的网络状态数据。
21、另一方面,本发明实施例提供了一种基于带内网络遥测的遥测数据实时压缩系统,包括以下模块:
22、数据获取模块,用于获取网络数据包并进行解析得到数据包头、每个节点的int数据和业务数据;
23、判断模块,用于判断当前是否是重解析阶段;
24、初解析模块,用于若不是重解析阶段,则按照第一格式收集当前节点的网络状态数据构成当前节点的int数据;将数据包头、每个节点的int数据和业务数据进行逆解析构成网络数据包,将构成的网络数据包发送至当前节点的入端;
25、重解析模块,用于若是重解析阶段,则将当前节点的int数据解析为第二格式的网络状态数据;对当前节点的第二格式的网络状态数据进行压缩,将压缩后的网络状态数据作为当前节点的int数据;将数据包头、每个节点的int数据和业务数据进行逆解析构成网络数据包,发送至下一跳节点。
26、基于上述系统的进一步改进,所述第二格式为将第一个格式中的每个字段进行分块得到的格式;对当前节点的网络状态数据进行压缩,包括:
27、根据当前节点的前一跳节点的int数据得到当前节点的前一跳节点第二格式的网络状态数据;
28、将当前节点第二格式的网络状态数据的每个分块与当前节点的前一跳节点第二格式的网络状态数据中对应的分块进行比较,采用压缩标志位记录每个分块是否相同,并将相同的分块删除;剩余的分块和压缩标志位构成当前节点压缩后的网络状态数据。
29、基于上述系统的进一步改进,根据当前节点的前一跳节点的int数据得到当前节点的前一跳节点第二格式的网络状态数据,包括:
30、对第一跳节点的int数据的每个字段进行分块,得到第一跳节点第二格式的网络状态数据;
31、若当前节点的前一跳节点不是第一跳节点,则:
32、依次以第二跳节点至当前节点的前一跳节点为当前遍历节点,根据当前遍历节点的前一跳节点第二格式的网络状态数据、当前遍历节点的int数据中的压缩标志位和分块数据还原得到当前遍历节点的第二格式的网络状态数据。
33、与现有技术相比,本发明提供的基于带内网络遥测的遥测数据实时压缩方法和系统,当交换机接收并解析网络数据包后,先判断是否为重解析阶段,如果不是重解析,即为第一次解析,则按照第一格式进行收集构成当前节点的int数据,然后将逆解析后的网络数据包发送至当前节点的入端进行重解析,此时,当前节点接收到网络数据包后根据数据包头判断为重解析阶段,将当前节点的int数据解析为第二格式的网络状态数据,并进行压缩,将压缩后的数据作为当前节点遥测的int数据,因此,不需要对交换机的编译器重新编码,在降低遥测数据量的同时大大降低了压缩编码的复杂性,提高了数据压缩的效率。
34、本发明中,上述各技术方案之间还可以相互组合,以实现更多的优选组合方案。本发明的其他特征和优点将在随后的说明书中阐述,并且,部分优点可从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过说明书以及附图中所特别指出的内容中来实现和获得。