netmap可以架设在虚拟机上吗

netmap可以架设在虚拟机上吗,第1张

Netmap

由于官网上介绍的已经很详细了,我这里简单描述。 Netmap 框架是一个用于网络硬件和应用程序的高性能通信的通道,基于共享内存机制。可以将Netmap和Linux网络编程[4]需要用到的系统调用(read,write)进行对比,他们所要完成的功能是类似的。相对于系统调用,netmap的主要特点在于:buffer分配和数据复制的开销没有了,这是因为使用了共享内存并且提前分配了buffer。

那么问题是程序是怎么使用netmap机制的呢?通过在程序里面打开一个特殊的文件/dev/netmap,获得一个文件描述符,并且使用ioctl()系统调用选择一个设备,然后应该可以获取一块region,然后使用mmap()将文件描述符对应的文件对应到那个region。

netmap是作为内核模块来实施的,主要包括两部分。一是功能,实现了那些open,close,ioctl,poll/select等基本功能。另外一个是与设备相关的部分,netmap延伸了驱动的功能,负责传输数据(只要传输描述符ring的元数据)。因为做到了zero copy,所以能够达到高性能。

VALE原理

Netmap机制是实现VALE (Virtual local ethernet)高性能的核心所在。

VALE其实就是一个虚拟本地以太网交换机。它给它的每个用户(hypervisor或者process)提供一个虚拟的网络接口(可以通过netmap的api来访问)。核心工作还是在netmap backend端,需要在后端增加交换机的逻辑,比如转发学习逻辑。然后进一步优化。

到现在为止Netmap已经列入了FreeBSD的内核,但是在linux下面使用还是需要编译这个模块并加载。

1、suricata命令行选项命令行选项有两种方式:-后跟字符,--后跟单词。 -h  :显示一个简短的使用帮助概述 -V:显示Suricata的版本 -c <path>: 配置文件路径(suricata.yaml文件路径)。 -T: 测试配置文件 -v:小v选项使Suricata的输出更加冗长。多次提供更多的冗长。 -r <path>:运行在pcap离线模式(回放模式)从pcap文件读取文件。如果<path>指定了一个目录,那么该目录中的所有文件将按照维护文件间流状态的修改时间顺序进行处理。 --pcap-file-continuous:与-r选项一起使用,指示模式应保持活动状态,直到中断。这对于添加新文件而不是重置文件之间的流状态的目录非常有用。 --pcap-file-delete:与-r选项一起使用,指示模式应在处理pcap文件后删除它们。这对于pcap-file-continuous非常有用,它可以连续地将文件提供给一个目录,并在完成之后清理它们。如果未设置此选项,处理后将不会删除pcap文件。 -i <interface>:在-i选项之后,可以输入要用来嗅探数据包的接口卡。此选项将尝试使用可用的最佳捕获方法。跟libpcap有关。 --pcap[=<device>]:运行在PCAP模式。如果没有提供设备,则使用配置文件的pcap部分中提供的接口。 --af-packet[=<device>]:在Linux上启用使用AF_PACKET 捕获包。如果没有提供设备,则使用yaml中af-packet部分的设备列表。 -q <queue id>:内联运行提供的NFQUEUE队列ID。可能提供多次。 -s <filename.rules>:使用-s选项,您可以设置一个带有签名的文件,该文件将与yaml中设置的规则一起加载。 -S <filename.rules>:使用-S选项,您可以设置一个带有签名的文件,无论yaml中设置的规则如何,该文件都将被完全加载. -l <directory>: 使用-l选项可以设置默认的日志目录。如果已经在yaml中设置了default-log-dir,那么如果使用-l选项,Suricata将不会使用它。它将使用使用-l选项设置的日志目录。如果没有使用-l选项设置目录,Suricata将使用在yaml中设置的目录。 -D:通常,如果您在您的控制台运行Suricata,它会占用您的控制台。您不能将它用于其他目的,当您关闭窗口时,Suricata将停止运行。如果您将Suricata作为守护进程运行(使用-D选项),它将在后台运行,您将能够在不影响引擎运行的情况下使用控制台执行其他任务 --runmode <runmode>:使用-runmode选项,您可以设置想要使用的runmode。这个命令行选项可以覆盖yaml runmode选项。运行模式是: workers ,  autofp  and  single . -F <bpf filter file>:从文件中使用BPF过滤器。 -k [all | none]: 强制(all)检查校验和或禁用(none)所有校验和检查。 --user=<user>:初始化后设置进程的用户。覆盖配置文件run-as部分中提供的用户。 --group=<group>:初始化后将进程组设置为组。覆盖配置文件run-as部分中提供的组。 --pidfile <file>:将进程ID写入文件。覆盖配置文件中的pid-file选项,并强制在不作为守护进程运行时写入该文件。 --init-errors-fatal:当加载签名时遇到错误时,失败并退出。 --disable-detection:禁用检测引擎。 --dump-config:将从配置文件加载的配置转储到终端并退出。 --build-info:显示用Suricata编译的构建信息 --list-app-layer-protos:列出所有受支持的应用层协议 --list-keywords=[ all | csv | <kword>]:列出所有受支持的规则关键字 --list-runmodes:列出所有支持的运行模式 --set <key>=<value>:设置配置值。用于覆盖配置中的基本配置参数。例如,要更改默认日志目录:--set default-log-dir=/var/tmp --engine-analysis:打印引擎不同部分的分析报告并退出。请查看conf参数 engine-analysis 查看哪些报告可以打印 --unix-socket=<file>:使用file作为Suricata unix控制套接字。覆盖配置文件的unix-command部分中提供的文件名。 --pcap-buffer-size=<size>:设置PCAP缓冲区的大小(0 - 2147483647) --netmap[=<device>]:在FreeBSD或Linux上启用使用NETMAP捕获数据包。如果没有提供设备,则使用yaml中的netmap部分中的设备列表。 --pfring[=<device>]: 启用PF_RING 包捕获。如果没有提供设备,将使用Suricata配置中的设备。 --pfring-cluster-id <id>:设置PF_RING集群ID --pfring-cluster-type:设置PF_RING集群类型(集群循环、集群流) -d <divert-port>:使用IPFW转移模式内联运行 --dag <device>:启用DAG卡上的数据包捕获功能。如果想捕获特定的传输数据流,则可以使用设备名称如“dag0:4” 选择该流。此选项可能提供多次读取多个设备 和/或 流。 --napatech:使用Napatech Streams API启用包捕获。 --mpipe:使用TileGX mpipe接口启用包捕获 --erf-in=<file>:以脱机模式运行,读取特定的ERF文件(Endace可扩展记录格式)。 --simulate-ips:在非IPS模式下运行时模拟IPS模式2、单元测试只有在使用-enable-unittests构建Suricata时,才可以使用内置单元测试。运行单元测试不需要配置文件。使用-l 提供输出目录。 -u:运行单元测试并退出。要求使用-enable-unittests 编译Suricata。 -U, --unittest-filter=REGEX:使用-U选项,您可以选择要运行哪个单元测试。此选项使用正则表达式。使用示例suricata -u -U http。 --list-unittests:列出所有的单元测试。 --fatal-unittests:在单元测试错误上启用致命故障。Suricata将退出,而不是继续更多的测试。 --unittests-coverage:显示单元测试覆盖率报告。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7159328.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-02
下一篇2023-04-02

发表评论

登录后才能评论

评论列表(0条)

    保存