什么是 NetFlow?

NetFlow 由思科推出,并被整个网络设备行业广泛采用,如今已成为网络监控的广泛支持标准。NetFlow 收集进出接口的 IP 流量,根据 IP、端口、服务类别、协议和源接口将其聚合到流中,从而提供对带宽使用情况监控、拥塞、潜在 DoS 攻击的洞察。DoS 攻击也称为拒绝服务攻击,当网络意外地被流量淹没时就会发生 DoS 攻击——最终在最糟糕的时刻使其和所有连接的资源离线。

NetFlow 在收集、排序和分析数据时遵循非常直接的过程。其中一个主要组成部分是 IP 流,它由一组包含相同 IP 属性的数据包组成。一旦数据包在路由器或交换机内转发,就会对其进行检查并分解其属性。

另一个重要元素是 NetFlow 缓存,这是一个数据库,一旦检查完这些数据包,所有信息都会被浓缩并存储在该数据库中。接下来是命令行界面,简称 CLI。这提供了所有网络流量的即时视图,并且由于其实时性,非常适合解决您可能遇到的某些类型的问题。

或者,您可以选择将数据导出到 NetFlow Collector 开源解决方案,并以这种方式检查数据。您可以根据您的需求以及您当前尝试完成的任务,从基于硬件和基于软件的收集器中进行选择。

什么是 sFlow?

sFlow 也是用于网络监控的行业标准。它定义了一种数据包采样(并非所有流量)技术,以提供有关任何协议(L2、L3、L4 以及高达 L7)的连续统计信息。由于它使用采样,因此可以扩展到高速网络。它受到多家网络设备制造商和网络管理软件供应商的支持。

sFlow 的独特之处在于它使用强制采样来实现最大可扩展性。因此,它非常适合在高速网络中使用——通常是那些速度达到每秒千兆位或更高的网络。总的来说,典型的 sFlow 系统将分为两种不同的采样类型:一种与数据包的随机采样有关,另一种与更大的应用程序层操作有关。

无论如何,流样本和计数器样本都作为 sFlow 图发送到运行软件的主服务器,该软件旨在分析和报告所有正在发生的网络流量。这也通常被描述为 sFlow 收集器,它也非常适合尽快排除网络问题。

sFlow 与 NetFlow

NetFlow 和 sFlow 的最初目的略有不同。sFlow 旨在与尽可能多的不同平台兼容——包括网络交换机和路由器。它使用内置于硬件本身的专用芯片,将分析负担从 CPU 以及路由器、交换机或其他相关硬件的内部存储器中转移出来。另一方面,NetFlow 是一种基于软件的专有技术,旨在专门用于思科的互联网操作系统或 IOS。

sFlow 与 NetFlow 之间的区别归结为准确度值:sFlow 使用样本数据包,这依赖于随机化,而 NetFlow 可以记录和跟踪所有传入会话,从而实现接近完全的准确度。

sFlow 与 NetFlow 的历史

NetFlow 最初于 1996 年在思科路由器上推出。第一个实现(现已过时)仅限于 IPv4,不包括 IP 掩码或 AS 号码功能。最常见的版本是第五版,于 2009 年发布。它将兼容性扩展到来自不同品牌的许多路由器,但仍然仅限于 IPv4 流。

sFlow 最初由 sFlow.org 联盟于 2004 年发布,目的是进一步“开发和推广”基于底层技术的解决方案。与 sFlow 直接合作的供应商包括 Arista Networks、思科、戴尔、IBM、Juniper、LG-Ericsson 等。很大程度上由于它弥补了 NetFlow 中固有的某些限制的方式,sFlow 已成为现有高速交换网络监控的领先标准。

使用 InfluxData 进行 NetFlow 和 sFlow 网络监控

InfluxData 通过 sFlow Telegraf 插件支持 sFlow。该插件根据 sflow.org 的规范,提供充当 SFlow V5 收集器的支持。

InfluxData 还通过与网络流量分析器设备(如 ntopng)集成来支持 NetFlow 和 sFlow 网络监控。ntopng 可以充当 NetFlow/sFlow 消息以及原始数据包检查器的收集器。ntopng 根据主机、接口和流等标准实时分析网络流量。它从捕获的数据包中提取元数据,并使用此信息来识别谁/什么(应用程序协议)正在网络中生成流以及消耗了多少带宽。

这两种方法都可能产生大量序列,这可能会给您的数据库带来高负载。使用以下技术来避免基数问题

  • 使用指标过滤选项排除不需要的指标和标签
  • 写入具有适当保留策略的数据库
  • 使用 max-series-per-database 和 max-values-per-tag 设置限制数据库中的序列基数
  • 监控数据库序列基数
  • 有关最新的技术,请查阅 InfluxDB 文档

NetFlow and sFlow diagram

总结

显然,选择哪种解决方案的决定最终将取决于您和您尝试实现的目标。如果您需要一种可以在尽可能多的不同设备上运行的解决方案,那么 sFlow 显然是最佳选择,因为它受到多家网络设备制造商和网络管理解决方案供应商的支持。另一方面,NetFlow 可以近乎完全准确地了解谁在通过设备进行通信——同时对其 CPU 的影响非常小。但是,它将与较少数量的设备兼容。

在决定选择哪个选项之前,所有这些都是需要牢记的重要事项。还有疑问吗?请阅读下面的 NetFlow 和 sFlow 常见问题解答。

关于 NetFlow 和 sFlow 的常见问题

为什么需要流?

流数据在网络监控方面非常重要,因为它允许用户可视化整个网络的流量模式。团队可以轻松监控用户何时以及多久访问特定信息,以便他们能够就未来的资源分配做出更好、更明智的选择。流数据对于网络规划也非常有帮助——团队可以优先考虑端口数量、更高带宽接口等的维护和升级。

流是如何创建的?

“流”只是一个术语,用于描述在接口中流入或流出的活动 IP 网络流量。流通常包含有关设备和数据包的各种不同信息,包括原点、目的地、容量,甚至是从一个点到另一个点所采用的路径。

您如何处理流数据?

您可以使用流数据完成的另一项最重要的任务与安全分析有关。使用准确的实时流数据,团队可以检测网络行为中可能超出正常、可预测方式的变化。换句话说,如果发生奇怪的变化,可能表明数据泄露即将发生,您可以了解它并立即采取措施——这一切都是为了在小问题变成更大的问题之前将其阻止。

了解更多

InfluxDb-cloud-logo

最强大的时间序列
数据库即服务

免费开始使用
Influxdbu

开发者教育

时间序列应用程序开发人员培训。

查看所有教育