Hi,
Finnaly managd to get it working all together, but please need to reflect if I made the right choices and configuration assumptions. For now running with root priviliges but hope to run suricata with dpdk under a non root account.
HPE ProLiant DL380 Gen10 Plus
2 cpu nodes, 128 cores
128Gb memory
2 x Intel 810 100Gb nic’s for spanport data
DPDK source from git version 23.07.0-rc0
Suricata source from git version 7.0.0-rc2-dev (caf9940fd 2023-04-04)
- info on the Intel 810 card(s) before dpdk setup:
$ ethtool -i eth7
driver: ice
version: 4.18.0-425.13.1.el8_7.x86_64
firmware-version: 3.20 0x80012763 1.3189.0
expansion-rom-version:
bus-info: 0000:84:00.1
supports-statistics: yes
supports-test: yes
supports-eeprom-access: yes
supports-register-dump: yes
supports-priv-flags: yes
$ ethtool -l eth7
Channel parameters for eth7:
Pre-set maximums:
RX: 128
TX: 128
Other: 1
Combined: 128
Current hardware settings:
RX: 0
TX: 0
Other: 1
Combined: 128
Boot options: grub option intel_iommu=on added
$ dpdk-devbind.py -s
Network devices using DPDK-compatible driver
============================================
0000:10:00.0 'Ethernet Controller E810-C for QSFP 1592' drv=vfio-pci unused=ice
0000:10:00.1 'Ethernet Controller E810-C for QSFP 1592' drv=vfio-pci unused=ice
0000:84:00.0 'Ethernet Controller E810-C for QSFP 1592' drv=vfio-pci unused=ice
0000:84:00.1 'Ethernet Controller E810-C for QSFP 1592' drv=vfio-pci unused=ice
- Huge pages:
$ dpdk-hugepages.py -s
Node Pages Size Total
0 16384 2Mb 32Gb
1 16384 2Mb 32Gb
Hugepages mounted on /dev/hugepages
- Suricata config regarding dpdk:
dpdk:
eal-params:
proc-type: primary
interfaces:
threads: auto
mempool-cache-size: 257
copy-mode: none
- interface: default
threads: auto
promisc: true
multicast: true
checksum-checks: true
checksum-checks-offload: true
mtu: 1518
rss-hash-functions: auto
mempool-size: 65535
mempool-cache-size: 257
copy-mode: none
copy-iface: none
- interface: 0000:10:00.1
threads: auto
promisc: true
multicast: true
checksum-checks: true
checksum-checks-offload: true
mtu: 1518
rss-hash-functions: auto
mempool-size: 65535
mempool-cache-size: 257
copy-mode: none
copy-iface: none
- interface: 0000:84:00.0
threads: auto
promisc: true
multicast: true
checksum-checks: true
checksum-checks-offload: true
mtu: 1518
rss-hash-functions: auto
mempool-size: 65535
mempool-cache-size: 257
copy-mode: none
copy-iface: none
- interface: 0000:84:00.1
threads: auto
promisc: true
multicast: true
checksum-checks: true
checksum-checks-offload: true
mtu: 1518
rss-hash-functions: auto
mempool-size: 65535
mempool-cache-size: 257
copy-mode: none
copy-iface: none
- suricata systemd service file:
# Sample Suricata systemd unit file.
[Unit]
Description=Suricata Intrusion Detection Service
After=syslog.target network-online.target
[Service]
# Environment file to pick up $OPTIONS. On Fedora/EL this would be
# /etc/sysconfig/suricata, or on Debian/Ubuntu, /etc/default/suricata.
EnvironmentFile=-/etc/sysconfig/suricata
#EnvironmentFile=-/etc/default/suricata
ExecStartPre=/bin/rm -f /var/run/suricata.pid
ExecStart=/usr/bin/suricata -c /etc/suricata/suricata.yaml --pidfile /var/run/suricata.pid $OPTIONS
ExecReload=/bin/kill -USR2 $MAINPID
LimitNOFILE=1024000
LimitMEMLOCK=infinity
LimitMEMLOCKSoft=infinity
[Install]
WantedBy=multi-user.target
- Starting suricata takes way to long , maybe has todo with number of threads?
tail -f -s0 /var/log/suricata/suricata.log
[5956 - Suricata-Main] 2023-04-06 11:46:40 Info: runmodes: 0000:10:00.0: creating 128 threads
[5956 - Suricata-Main] 2023-04-06 11:46:43 Info: dpdk: 0000:10:00.1: creating packet mbuf pool mempool_0000:10:00.1 of size 65535, cache size 257, mbuf size 2176
[5956 - Suricata-Main] 2023-04-06 11:46:43 Info: runmodes: 0000:10:00.1: creating 128 threads
[15216 - Suricata-Main] 2023-04-06 12:32:32 Notice: suricata: This is Suricata version 7.0.0-rc2-dev (caf9940fd 2023-04-04) running in SYSTEM mode
[15216 - Suricata-Main] 2023-04-06 12:32:32 Info: cpu: CPUs/cores online: 128
[15216 - Suricata-Main] 2023-04-06 12:32:32 Info: suricata: Preparing unexpected signal handling
[15216 - Suricata-Main] 2023-04-06 12:32:32 Info: privs: dropped the caps for main thread
[15216 - Suricata-Main] 2023-04-06 12:32:32 Info: conf: Running in live mode, activating unix socket
[15216 - Suricata-Main] 2023-04-06 12:32:32 Info: logopenfile: eve-log output device (regular) initialized: /data/sensor_data/suricata/eve.json
[15216 - Suricata-Main] 2023-04-06 12:32:32 Info: logopenfile: stats output device (regular) initialized: stats.log
[15216 - Suricata-Main] 2023-04-06 12:32:45 Info: detect: 1 rule files processed. 70441 rules successfully loaded, 0 rules failed
[15216 - Suricata-Main] 2023-04-06 12:32:45 Info: threshold-config: Threshold config parsed: 0 rule(s) found
[15216 - Suricata-Main] 2023-04-06 12:32:45 Info: detect: 70444 signatures processed. 2352 are IP-only rules, 14806 are inspecting packet payload, 53255 inspect application layer, 0 are decoder event only
[15216 - Suricata-Main] 2023-04-06 12:33:18 Info: dpdk: 0000:10:00.0: creating packet mbuf pool mempool_0000:10:00.0 of size 65535, cache size 257, mbuf size 2176
[15216 - Suricata-Main] 2023-04-06 12:33:18 Info: runmodes: 0000:10:00.0: creating 128 threads
[15216 - Suricata-Main] 2023-04-06 12:33:34 Info: dpdk: 0000:10:00.1: creating packet mbuf pool mempool_0000:10:00.1 of size 65535, cache size 257, mbuf size 2176
[15216 - Suricata-Main] 2023-04-06 12:33:38 Info: runmodes: 0000:10:00.1: creating 128 threads
[15216 - Suricata-Main] 2023-04-06 12:40:48 Info: dpdk: 0000:84:00.0: creating packet mbuf pool mempool_0000:84:00.0 of size 65535, cache size 257, mbuf size 2176
[15216 - Suricata-Main] 2023-04-06 12:41:10 Info: runmodes: 0000:84:00.0: creating 128 threads
[20857 - W#128-84:00.0] 2023-04-06 12:56:42 Warning: dpdk: 0000:84:00.0: NIC is on NUMA 1, 128 threads on different NUMA node(s)
[15216 - Suricata-Main] 2023-04-06 12:56:47 Info: dpdk: 0000:84:00.1: creating packet mbuf pool mempool_0000:84:00.1 of size 65535, cache size 257, mbuf size 2176
[15216 - Suricata-Main] 2023-04-06 12:57:20 Info: runmodes: 0000:84:00.1: creating 128 threads