虹科干货 | 如何使用nProbe Cento构建100 Gbit NetFlow 传感器

2024-01-30 09:04

本文主要是介绍虹科干货 | 如何使用nProbe Cento构建100 Gbit NetFlow 传感器,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文是一份全面的指南,解释了如何使用nProbe Cento构建一个高效的100 Gbit NetFlow传感器。旨在帮助大家充分利用NetFlow技术,以监控和分析高速网络流量。

当需要监控分布式网络,了解流经上行链路或关键网段的网络流量时,NetFlow等技术通常是最佳选择。

nProbe Pro/Enterprise和nProbe Cento是软件探针,可用于构建多功能传感器,以多种不同格式输出流量信息,包括NetFlow v5/v9/IPFIX、Kafka、Elasticsearch、ClickHouse、MySQL、CSV文件等。nProbe Pro/Enterprise专为低/中速率(1/10 Gbps)而设计,而 nProbe Cento则专为高速运行而设计(如今我们认为 100 Gbit 已是高速链路)。

通过将nProbe Cento与 ntopng相结合,可以为100 Gbit分布式网络构建一个完全成熟的网络监控解决方案,提供全面的可视性。

想要高速使用nProbe Cento的用户经常向我们提出的一个问题是:"我需要什么样的硬件才能处理100 Gbps的全速率?我们希望通过这篇文章提供一些硬件选择指南。

一、网络适配器

在高速运行n2disk时,必须使用像Napatech或Silicom/Fiberblaze这样能在分段模式下运行的FPGA适配器才能获得最佳转储性能,而nProbe Cento则不需要昂贵的适配器。

100 Gbit探头可以使用低于1千美元的ASIC适配器。这里必须支持的是对称RSS。RSS用于通过多个数据流将流量负载分散到多个CPU内核上,将物理接口分割成多个逻辑接口,根据数据包头计算的哈希函数分配流量。使用RSS进行扩展,并结合PF_RING ZC(零拷贝)驱动程序提供最大捕获性能,可确保在处理流量时在100 Gbit全速下不丢失数据包。

因此,建议在100 Gbit时与nProbe Cento结合使用的适配器包括

  1. NVIDIA/Mellanox ConnectX 5/6
  2. Intel E810

二、CPU

各种CPU有不同的频率、内核数量、缓存大小、缓存级别、指令集等。不过,根据我们的经验来讲,现代CPU(例如Xeon Gold 6346 3 Ghz或AMD EPYC 9124)的每个CPU内核通常能够处理超过10 Mpps(每秒百万数据包)。考虑到互联网数据包的平均大小,10 Gbit链路通常有13 Mpps。最坏的情况下,10 Gbit链路的数据包速度也可达14.88 Mpps。

这意味着,在最坏的情况下,要处理100 Gbps的速度,我们需要一个至少有16个内核、主频为3 Ghz的CPU。对于频率较高且高速缓存较大的CPU来说,较少的内核也足够了。

例如,如果我们要构建基于英特尔的系统,我们可以使用Xeon Gold 6326或6346或更高版本。如果要构建基于AMD的系统,我们可以使用AMD EPYC 9124或更高版本。

三、内存

实现最佳性能的内存配置主要取决于CPU本身:

  1. 模块数量:应与CPU支持的内存通道数量相匹配(请查看CPU的规格说明)
    • Intel Xeon Gold目前支持8个内存通道
    • AMD EPYC的大多数型号支持12个内存通道
  2. 速度:选择CPU支持的较高速度(请查看CPU规格说明)
  3. 容量:考虑到每个模块的最小容量(816GB),通常选择较小的可用容量即可(8x 8GB = 64GB)。

四、存储

许多朋友担心存储问题,但是其实在运行nProbe Cento时,存储空间其实并不重要,因为当使用NetFlow、ZMQ、Kafka或CSV以外的其他导出格式(实际上是写入本地磁盘)将数据导出到外部收集器时,并不会占用磁盘空间。这意味着一个小型磁盘,或一个RAID1双磁盘阵列(如果需要对系统磁盘进行数据恢复)就已足够。

五、软件配置

nProbe Cento的配置非常简单。向命令行(或配置文件)提供的实际选项可能会因工作模式和导出格式的不同而有所变化,但在捕获方面却非常简单。大家需要注意两个主要选项:接口配置(i)和CPU亲和性(processingcores)。

1、如果使用的是英特尔适配器,并且配置了带RSS的ZC驱动程序,那么只需指定RSS接口即可,如下所示:

cento -i zc:eth1@0 -i zc:eth1@1 -i zc:eth1@2 -i zc:eth1@3 ...

2、我们还可以使用快捷方式来实现这一功能,尤其是在运行16个以上RSS流时非常方便:

cento -i zc:eth1@[0-15]

3、如果你使用的瑟吉欧NVIDIA/Mellanox适配器,则可以使用类似的语法:

cento -i mlx:mlx5_0@[0-15]

此时,我们只需添加CPU亲和配置,以确保nProbe Cento通过为每个内核绑定一个线程来使用所有可用内核(提供最大的可扩展性和整体性能)。

cento -i mlx:mlx5_0@[0-15] --processing-cores 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15

现在,你只需添加控制导出格式的选项。

这篇关于虹科干货 | 如何使用nProbe Cento构建100 Gbit NetFlow 传感器的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/659730

相关文章

Conda与Python venv虚拟环境的区别与使用方法详解

《Conda与Pythonvenv虚拟环境的区别与使用方法详解》随着Python社区的成长,虚拟环境的概念和技术也在不断发展,:本文主要介绍Conda与Pythonvenv虚拟环境的区别与使用... 目录前言一、Conda 与 python venv 的核心区别1. Conda 的特点2. Python v

Spring Boot中WebSocket常用使用方法详解

《SpringBoot中WebSocket常用使用方法详解》本文从WebSocket的基础概念出发,详细介绍了SpringBoot集成WebSocket的步骤,并重点讲解了常用的使用方法,包括简单消... 目录一、WebSocket基础概念1.1 什么是WebSocket1.2 WebSocket与HTTP

C#中Guid类使用小结

《C#中Guid类使用小结》本文主要介绍了C#中Guid类用于生成和操作128位的唯一标识符,用于数据库主键及分布式系统,支持通过NewGuid、Parse等方法生成,感兴趣的可以了解一下... 目录前言一、什么是 Guid二、生成 Guid1. 使用 Guid.NewGuid() 方法2. 从字符串创建

Python使用python-can实现合并BLF文件

《Python使用python-can实现合并BLF文件》python-can库是Python生态中专注于CAN总线通信与数据处理的强大工具,本文将使用python-can为BLF文件合并提供高效灵活... 目录一、python-can 库:CAN 数据处理的利器二、BLF 文件合并核心代码解析1. 基础合

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Spring IoC 容器的使用详解(最新整理)

《SpringIoC容器的使用详解(最新整理)》文章介绍了Spring框架中的应用分层思想与IoC容器原理,通过分层解耦业务逻辑、数据访问等模块,IoC容器利用@Component注解管理Bean... 目录1. 应用分层2. IoC 的介绍3. IoC 容器的使用3.1. bean 的存储3.2. 方法注

Python内置函数之classmethod函数使用详解

《Python内置函数之classmethod函数使用详解》:本文主要介绍Python内置函数之classmethod函数使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地... 目录1. 类方法定义与基本语法2. 类方法 vs 实例方法 vs 静态方法3. 核心特性与用法(1编程客

Linux中压缩、网络传输与系统监控工具的使用完整指南

《Linux中压缩、网络传输与系统监控工具的使用完整指南》在Linux系统管理中,压缩与传输工具是数据备份和远程协作的桥梁,而系统监控工具则是保障服务器稳定运行的眼睛,下面小编就来和大家详细介绍一下它... 目录引言一、压缩与解压:数据存储与传输的优化核心1. zip/unzip:通用压缩格式的便捷操作2.

使用Python实现可恢复式多线程下载器

《使用Python实现可恢复式多线程下载器》在数字时代,大文件下载已成为日常操作,本文将手把手教你用Python打造专业级下载器,实现断点续传,多线程加速,速度限制等功能,感兴趣的小伙伴可以了解下... 目录一、智能续传:从崩溃边缘抢救进度二、多线程加速:榨干网络带宽三、速度控制:做网络的好邻居四、终端交互

Python中注释使用方法举例详解

《Python中注释使用方法举例详解》在Python编程语言中注释是必不可少的一部分,它有助于提高代码的可读性和维护性,:本文主要介绍Python中注释使用方法的相关资料,需要的朋友可以参考下... 目录一、前言二、什么是注释?示例:三、单行注释语法:以 China编程# 开头,后面的内容为注释内容示例:示例:四