使用n2disk和PF_RING构建一个(便宜的)2×10 Gbit(连续)数据包记录器

连续数据包记录器是捕获网络流量并将其保存到磁盘的设备。术语 “连续 “意味着这项活动是 “连续 “进行的,直到设备处于活动状态,而不仅仅是几分钟。在ntop,我们已经开发了两个用于数据包记录器的配套应用程序:

1.n2disk是一个软件应用程序,可以以线速(多10 Gbit)捕获网络并将其以pcap格式转储到磁盘。在数据包捕获期间,n2disk也可以:

1)创建一个pcap索引,用于从捕获的流量中搜索与BPF过滤器匹配的特定数据包。从本质上讲,它可以加快没有索引就需要从头到尾读取完整pcap的操作。

2)在捕获过程中压缩捕获的流量,以节省磁盘空间,由于应用程序处理更小的PCAP文件从而减少搜索时间。如果您在支持PF_RING的libpcap之上编译基于pcap的应用程序,则所有应用程序(例如tcpdump和wirehark)都可以无缝读取压缩的pcap文件。

2.disk2n是一种软件应用程序,可以以线速或以相同的捕获速度重现pcap文件,因此您可以在实验室中重现与n2disk捕获流量时相同的流量条件。请注意,disk2n可以重现任何pcap文件(不仅仅是n2disk捕获的文件),并且要重现的流量可能超过可用内存(也就是说,您可以依次重现多个pcap文件,其大小甚至可以超过TB级)。

为了简化操作,我们创建了免费的nBox Web GUI,允许用户通过图形方式来启动/停止/重放/过滤/下载流量,只需点击几下。以上所有应用程序都在PF_RING ZC上以10 Gbit的速率运行,不仅具有高速数据包捕获和重放功能,还具有免费应用程序,如零拷贝数据包平衡器和扇出(fan-out)功能,以便在将流量转储到磁盘之前对其进行处理(例如,将同一个入口数据包同时发送给n2disk和nProbe,以生成流量跟踪)。所有应用程序都可以在Intel网络适配器和专用NIC(例如Napatech制造的NIC)上运行

传统的数据包记录器是昂贵的设备,因为它们需要一个快速的存储系统,而且还因为制造商有时会向高端客户收取“额外费用”。在ntop,我们相信简单性,并相信我们应该以实惠的价格为所有人提供最好的技术,增加一个低价格标签,足以让我们通过研究继续创新。在此博客文章中,我们将说明如何使用n2disk和商用硬件构建数据包记录器,让大家可以自己搭建。

问题1:Intel或Napatech NICs?

我们的读者知道,我们多年来一直是商业硬件上数据包捕获的先驱,但同时PF_RING ZC还支持专用的NIC,例如由Napatech制造的NIC。如果在Intel适配器之上使用PF_RING ZC可以实现64字节数据包的10G数据包捕获,那么为什么还要用Napatech的网卡呢,这些网卡有很多很好的功能(例如,硬件中的流量平衡/过滤),但需要额外的成本?这个问题的答案并不像是/否那么简单,因此我们将尝试对其进行详细说明。

  • intel适配器
    • [+]便宜的网络适配器,可在街角的商店购买。
    • [+]在RX和TX线速multi-10G中,PF_RING ZC本身都支持。
    • [-]用软件计算的数据包时间戳(除非您使用专用的 NIC,这会限制捕获性能,因为使用硬件时间戳扩展了数据包有效负载)。
    • [-]所有与捕获无关的活动(例如,过滤或平衡)都发生在PF_RING ZC的CPU上。为了做到这一点,您需要专门用于此活动的额外CPU内核,因此需要更昂贵的CPU。
    • [-]对于小数据包,NIC一张一张地传输数据包,这给PCIe总线带来了压力,因此就Napatech而言,提高了系统利用率。
    • [-]从多个网络适配器(例如,从2 x 10G端口)捕获时,数据包合并会在n2disk上发生,但会增加CPU负载。因此,无法以20G的线路速率合并和索引/压缩数据包。有一个变通办法,稍后在这篇文章中介绍。
  • Napatech适配器
    • [+]高精度的硬件时间戳,硬件中的数据包过滤/切片/平衡,大的内置内存缓冲区,即使在最坏的情况下也几乎没有丢失数据包。
    • [+]从网卡到CPU的数据包传输非常高效,特殊的“捕获”模式,相对于英特尔,该模式大大降低了CPU利用率。这意味着,与Napatech NIC一起使用的CPU可以比与Intel一起使用的CPU便宜得多且内核更少。
    • [+]多个10G端口的合并发生在具有高精度时间戳记的硬件中,这使CPU负担减轻了。
    • [-]与英特尔NIC相比,Napatech NIC会产生额外的费用,即使您可以节省CPU和存储空间的费用(如本文稍后所述)。

好消息是,PF_RING ZC掩盖了所有这些差异,所以对于最终用户来说,在英特尔或Napatech NIC上操作数据包记录器基本上是一样的。

问题2:我需要什么存储系统?

在ntop,我们使用10k RPM SATA驱动器。您可以使用速度更快的15K RPM SAS驱动器或SSD,但是根据我们的经验,速度的提高会给您带来更高的价格和更小的存储空间。因此,用户将决定高质量的10k RPM SATA驱动器是不错的。对于10 Gbit到磁盘,您至少需要8个驱动器,而对于20G,至少需要16个磁盘。如果您决定使用Napatech NIC,则至少需要10或20个驱动器,因为Napatech NIC还会捕获以太网CRC,从而稍微增加数据量(即,由于以太网头,您的NIC将向主机发送超过10 Gbit的数据) 。通常,这些是您可以购买的最低价格。由于10K RPM SATA驱动器通常为1 TB,(请记住,在20G时捕获2.5 GB /秒),您可能希望至少使用16个10G驱动器和24G 20G驱动器的存储系统,以满足您的要求。

如前所述,Napatech NIC在硬件中进行2x10G合并,而对于Intel,我们需要在主机上合并数据包。由于您可能希望索引并(也许还需要)压缩捕获的流量,因此,使用Intel NIC,您无法在数据包合并的基础上实现所有这些功能。因此,如果您决定将Napatech NIC与n2disk一起使用,则可以使用一个RAID子系统来存储20G。使用Intel NIC,您需要两个RAID子系统:一个用于一个NIC,另一个用于另一个NIC。当您提取/过滤数据包时,nBox将透明地合并两个遵循数据包时间戳的NIC(因此,结果是相同的)。这种基于Intel的解决方案的缺点是我们无法在20G的CPU节点上完成所有这些操作,因为我们将需要的内核数量将太高。因此,对于20G的数据包捕获+索引+压缩,您分别需要:

  • Intel
    • 双CPU(2个NUMA节点):每个CPU都需要一个10G网络适配器。
    • 由于您需要许多内核(至少6个),因此需要使用例如Intel E5-2677或(更好)  E5-2690。本质上,准备为CPU花费3k / 4k USD。
    • 2个单端口10G Intel适配器:您需要为每个NUMA节点安装一个适配器(请记住此警告)
    • 2个RAID控制器,每个驱动器驱动12个驱动器:每个NUMA节点需要安装一个控制器。
  • Napatech
    • 单节点系统。4核Intel E5-2643足够了(或更好)为  E5-2677
    • 单个RAID控制器。

对于RAID控制器,您可以使用各种产品(例如这个这个),具体取决于驱动器的数量和可扩展性。

结束语

如本文上文所述,ntop产品使用Intel和Napatech NIC都支持2 x 10G到磁盘。本文的目的是告诉您,为自己构建连续的数据包捕获设备需要购买哪些硬件组件。我们已经描述了这两个平台的优缺点,并说明了英特尔和Napatech的BOM(物料清单)是不同的,但从金钱角度来看非常接近。选择一个或另一个网卡会对您需要购买的服务器及其体系结构产生影响。本质上是用户将首先决定哪种解决方案最适合其需求,说ntop使用相同的统一n2disk / nBox Web界面无缝支持两个平台。

现在是时候构建自己的第一个数据包记录器设备了!

FAQ

问:如何构建40 Gbit数据包记录器?
答:使用Intel NIC,您需要4个节点的NUMA系统,4个NIC,4个10G单端口适配器。每个节点将保存一部分流量,在提取过程中,ntop工具将合并方向。使用Napatech,您需要单节点8核(快速)CPU或双节点NUMA系统。当然,您需要两倍的磁盘来维持速度。

问:如何构建具有数百个TB的系统?
答:最便宜的解决方案是使用能够驱动SAS扩展器的RAID控制器。这篇文章前面列出的控制器最多可以驱动256个磁盘。

问:哪种硬件系统足以构建2 x 10G数据包记录器?答
:有许多可用选项,包括Dell R72 0(CPU E5-2690 v2,RAID控制器Perc H710P)或Supermicro 2027R

摘自Ntop,写自2014年10月23日