Absturz nach kern.ipc.nmbufs limit reached

Started by Matze_, January 06, 2021, 12:37:07 PM

Previous topic - Next topic
Hallo zusammen,

meine OPNsense beendet zeitweise die Arbeit und ist nicht mehr erreichbar mit dem Hinweis im Log:

[zone: mbuf] kern.ipc.nmbufs limit reached und anschließend
[ 704] generic_netmap_txsync     Failed to replenish mbuf

Den MBUF habe ich bereits auf 1.000.000 hochgesetzt (siehe Anhang). Im Regelfall wird der Wert nicht erreicht. Allerdings ist mir auch aufgefallen, dass der MBUF über die Zeit steigt und nicht wieder zurückgeht.

Die OPNsense ist auf dem Release 20.7.7_1-amd64 und läuft virtualisiert (Proxmox) auf einer Qotom Q355G4 i5-5200U, mit 8GB RAM. Neben der OPNsense ist noch ein Pihole virtualisiert, so dass die Prozessorlast nicht zu hoch ist.

Hat jemand eine Idee, womit das zusammenhängen könnte und wie ich das beheben kann oder mit einem Workaround lösen könnte?

Vor dem Absturz habe ich folgenden Logeintrag gefunden:
2021-01-06T11:51:38 kernel FreeBSD/SMP: 1 package(s) x 2 core(s)
2021-01-06T11:51:38 kernel FreeBSD/SMP: Multiprocessor System Detected: 2 CPUs
2021-01-06T11:51:38 kernel ACPI APIC Table: <BOCHS  BXPCAPIC>
2021-01-06T11:51:38 kernel Event timer "LAPIC" quality 100
2021-01-06T11:51:38 kernel avail memory = 4048093184 (3860 MB)
2021-01-06T11:51:38 kernel real memory  = 4244635648 (4048 MB)
2021-01-06T11:51:38 kernel Hypervisor: Origin = "KVMKVMKVM"
2021-01-06T11:51:38 kernel AMD Features2=0x1<LAHF>
2021-01-06T11:51:38 kernel AMD Features=0x20100800<SYSCALL,NX,LM>
2021-01-06T11:51:38 kernel Features2=0x80202001<SSE3,CX16,x2APIC,HV>
2021-01-06T11:51:38 kernel Features=0x1783fbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR,SSE,SSE2,HTT>
2021-01-06T11:51:38 kernel Origin="GenuineIntel"  Id=0xf61  Family=0xf  Model=0x6  Stepping=1
2021-01-06T11:51:38 kernel CPU: Common KVM processor (2194.97-MHz K8-class CPU)
2021-01-06T11:51:38 kernel HardenedBSD: initialize and check features (__HardenedBSD_version 1200059 __FreeBSD_version 1201000).
2021-01-06T11:51:38 kernel VT(vga): text 80x25
2021-01-06T11:51:38 kernel FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1)
2021-01-06T11:51:38 kernel root@sensey64:/usr/obj/usr/src/amd64.amd64/sys/SMP amd64
2021-01-06T11:51:38 kernel FreeBSD 12.1-RELEASE-p11-HBSD #0  74f1f081a1e(stable/20.7)-dirty: Fri Dec  4 13:40:15 CET 2020
2021-01-06T11:51:38 kernel FreeBSD is a registered trademark of The FreeBSD Foundation.
2021-01-06T11:51:38 kernel The Regents of the University of California. All rights reserved.
2021-01-06T11:51:38 kernel Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994
2021-01-06T11:51:38 kernel Copyright (c) 1992-2019 The FreeBSD Project.
2021-01-06T11:51:38 kernel Copyright (c) 2013-2019 The HardenedBSD Project.
2021-01-06T11:51:38 kernel ---<<BOOT>>---
2021-01-06T11:51:38 syslogd kernel boot file is /boot/kernel/kernel
2021-01-06T11:48:31 syslogd exiting on signal 15
2021-01-06T11:46:28 kernel [zone: mbuf] kern.ipc.nmbufs limit reached
2021-01-06T11:46:28 kernel 988.260048 [ 704] generic_netmap_txsync     Failed to replenish mbuf
2021-01-06T11:46:28 kernel 988.259730 [ 704] generic_netmap_txsync     Failed to replenish mbuf
2021-01-06T11:46:23 kernel 983.611449 [ 704] generic_netmap_txsync     Failed to replenish mbuf
2021-01-06T11:46:23 kernel 983.611295 [ 704] generic_netmap_txsync     Failed to replenish mbuf
2021-01-06T11:46:19 kernel 979.641664 [ 704] generic_netmap_txsync     Failed to replenish mbuf
2021-01-06T11:46:19 kernel 979.641537 [ 704] generic_netmap_txsync     Failed to replenish mbuf
2021-01-06T11:46:18 kernel 978.611650 [ 704] generic_netmap_txsync     Failed to replenish mbuf
2021-01-06T11:46:18 kernel 978.259743 [ 704] generic_netmap_txsync     Failed to replenish mbuf


Hat keiner eine Idee oder die gleiche Situation? Ich habe festgestellt, dass nach einem Reboot sind die Buffer wieder geleert und füllen sich dann langsam.

Hi Matze,

Vermute dieser FreeBSD Fix könnte helfen da hier nicht alle (immer nur der erste) transmit mbufs freigegeben werden und dann nicht mehr im System zu finden sind... https://github.com/opnsense/src/commit/9daba9a379

Eigentlich sollte dieser auf 21.1 (ist auch auf dem RC1), aber ich nehme das mal mit in die 20.7.8 nächste Woche. Bitte dann um Rückmeldung ob es was gebracht hat.


Grüsse
Franco

Hallo Franco,

vielen Dank. Ich vermute, dass ich jetzt noch nicht aktiv werden kann, oder?
Wenn ich bei der Lösung unterstützen kann, gib mir gerne Bescheid. Der Fall tritt regelmäßig auf und ich kann ggf. Traces etc. ziehen.

VG
Matze

Hi Matze,

Da ich für einen anderen Fall gerade einen neuen Kernel gebaut habe kannst du auch testen, und zwar so:

# opnsense-update -kr 20.7.6-ipsec2
# opnsense-shell reboot


Grüsse
Franco

January 15, 2021, 12:11:06 PM #5 Last Edit: January 15, 2021, 12:13:06 PM by Matze_
Hi Franco,

das Update ließ sich problemlos einspielen und ich warte jetzt mal ab, ob der Buffer langsam vollläuft.
Gibt es irgendwelche Logs, die Dir weiterhelfen?

VG
Matze

Hi Matze,

Nein, da Hilft tatsächlich nur der MBUF Counter auf dem Dashboard.


Grüsse
Franco

Hallo Franco,

leider hat der Fix nicht die gewünschte Wirkung erzielt.
MBUF läuft weiter hoch und führte wieder zu einem Totalabsturz am Sonntag.

Viele Grüße
Matze

Kleine Ergänzung:
Ich habe auf das zur Verfügung stehende Update aktualisiert. Der Effekt ist aber auch da vermutlich noch vorhanden. Nach 3,5h bin ich bei ca. 7% Auslastung MBUF.


Oh, nein, jetzt ist wieder der normale Kernel drin (p11) statt dem Testkernel (p12).

Passiert das auch wenn Suricata nicht im IPS Modus läuft?


Grüsse
Franco

January 18, 2021, 07:05:41 PM #10 Last Edit: January 18, 2021, 08:28:49 PM by lewald
Hmm,

ich habe 4 aktuelle OPNSense auf Proxmox laufen. Bei keiner der Installationen habe ich dieses Problem.

Welche Netzwerkkarte ist via Proxmox zugewiesen? Wie läuft die VM (Host)?

Bei mir laufen die OPNSense VMs via Virtio und Processor Typ Host.

January 18, 2021, 09:55:38 PM #11 Last Edit: January 18, 2021, 10:25:28 PM by Matze_
Quote from: franco on January 18, 2021, 06:00:29 PM
Oh, nein, jetzt ist wieder der normale Kernel drin (p11) statt dem Testkernel (p12).

Passiert das auch wenn Suricata nicht im IPS Modus läuft?


Grüsse
Franco

Ok, habe  wieder auf die vorherige Version gewechselt, IPS ausgestellt und werde berichten.

Viele Grüße
Matze

Quote from: lewald on January 18, 2021, 07:05:41 PM
Hmm,

ich habe 4 aktuelle OPNSense auf Proxmox laufen. Bei keiner der Installationen habe ich dieses Problem.

Welche Netzwerkkarte ist via Proxmox zugewiesen? Wie läuft die VM (Host)?

Bei mir laufen die OPNSense VMs via Virtio und Processor Typ Host.

Ich habe aktuell 3 Netzwerkkarten zugewiesen. 2x virtio und 1x hostpci. Processor type ist kvm64(default)

Quote from: Matze_ on January 18, 2021, 09:55:38 PM
Quote from: franco on January 18, 2021, 06:00:29 PM
Oh, nein, jetzt ist wieder der normale Kernel drin (p11) statt dem Testkernel (p12).

Passiert das auch wenn Suricata nicht im IPS Modus läuft?


Grüsse
Franco

Kurze Rückmeldung nach einer Stunde: MBUF usage 0 % ( 4046/1000000 )
Das klingt nach Abschalten von IPS vielversprechend
Mal sehen, wie es morgen früh aussieht.

Viele Grüße
Matze

Ok, habe  wieder auf die vorherige Version gewechselt, IPS ausgestellt und werde berichten.

Viele Grüße
Matze

Kurzes Update nach 12h und ausgeschaltetem IPS:
MBUF usage: 0 % ( 3926/1000000 )

VG
Matze