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
			
			
			
				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
			
			
			
				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.
			
			
			
				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 
			
			
			
				Offtopic,
bei Proxmox sollten die VMs wenn die CPU das kann idealerweise auf Host gesetzt sein.
Aus Performance Gründen.
https://serverfault.com/questions/876664/kvm-which-cpu-for-vm-host-vs-kvm64-to-use-for-web-load
			
			
			
				Quote from: lewald on January 19, 2021, 06:26:06 PM
Offtopic,
bei Proxmox sollten die VMs wenn die CPU das kann idealerweise auf Host gesetzt sein.
Aus Performance Gründen.
https://serverfault.com/questions/876664/kvm-which-cpu-for-vm-host-vs-kvm64-to-use-for-web-load
Danke Dir für den Hinweis!
			
 
			
			
				Hallo Franco,
im gestrigen Update habe ich gelesen, dass an dem Thema Mbuf gearbeitet wurde. 
src: free full mbuf chains in iflib when draining transmit queues
Macht es schon Sinn das Update einzuspielen und IPS wieder einzuschalten?
Das Dashboard zeigt weiterhin 0% Mbuf Nutzung an. 
Viele Grüße 
Matze
			
			
			
				Ich habe das Update durchgeführt und weiterhin MBUF=0%
Heute habe ich dann IPS eingeschaltet und erneut läuft der MBUF voll ohne sich wieder zurückzusetzen.
			
			
			
				Hi Matze,
Sorry für die späte Antwort. Es war ein Fix... und zwar der aus dem Test Kernel, aber in deinem Fall leider der Falsche. Da es mit Netmap zu tun hat werde ich versuchen das Sensei-Team hinter den Kulissen einzubinden. Ob es eine schnelle Lösung gibt oder gar 21.1 schon das Problem löst lässt sich nicht sagen aktuell.
Grüsse
Franco
			
			
			
				Hi Franco,
vielen Dank für die Rückmeldung. Dann schalte ich IPS mal wieder aus und warte ab.
Wie finde ich denn raus, ob es einen Fix gibt?
Vielen Dank dafür, dass Du bei dem Thema am Ball bleibst!
Viele Grüße 
Matze
			
			
			
				Wir prüfen und integrieren die verfügbaren Fixes aus FreeBSD regelmäßig; so sind auch in 21.1 neue Updates drin für Systemkomponenten die in FreeBSD schon aufgefallen und behoben wurden. In 20.7.x kommen nur Systemupdates die gezielt (verifiziert) Probleme beheben oder so offensichtlich sind, dass es keine Regression erzeugen kann.
Ist ein bisschen wie die Nadel im Heuhaufen zu finden. Der Anfang dazu ist immer die Stelle im Code zu finden die Probleme macht. Da sind wir mit Netmap zwar am Beginn der Eingrenzung, aber das sind noch tausende Zeilen Code potentiell... Gute Frage ist noch welcher Netzwerkkartentreiber im OPNsense bei dir verwendet wird (em, igb, etc.)
Grüsse
Franco
			
			
			
				Hallo Franco, 
wenn ich zur Suche etwas beitragen kann, dann mache ich das gerne.
Ich habe gerade gesehen, dass die 21.1 rausgekommen ist. Soll ich updaten?
Für den Anschluß an die Fritzbox nutze ich igb, für die beiden Netzwerke vtnet und dann habe ich noch 3x ovpnc, von denen jeweils nur ein Anschluß aktiv ist.
Viele Grüße
Matze