Permalänk
Medlem

WireGuard på äldre CPU?

Jag har nyligen testat WireGuard i VM med OPNsense. Kör en Proxmox server på rätt gammal hårdvara, i7-950 närmare bestämt.

Tyvärr har det funkat mindre bra. Framförallt är det CPU-lasten som blir väldigt hög. Kommer lätt upp i 100% CPU på 4 trådar, och då är jag inte ens nära att maxa uppkopplingen. Får kanske 160Mb/s på en 250Mb lina och det tycks vara CPU;n som är den begränsande faktorn.

Frågan är om detta är normalt och ifall det finns något att göra åt det? Jag kan ju tyvärr inte sitta och köra så hög last på CPU;n varje gång det är hög trafik.

Permalänk
Medlem

Säkert normalt om CPUn inte har hårdvaruaccelererad AES. Vilken den saknar:

"Intel® AES New Instructions - No"

https://ark.intel.com/content/www/us/en/ark/products/37150/in...

Permalänk
Vila i frid

Min i7-3770T (med aes) under esxi maxar ca 160 Mbit på en kärna över OpenVPN. Den cpun är ca 25% snabbare än en i7-950 men drar bara 45 watt mot 130 watt för 950'ian.

Permalänk
Medlem
Skrivet av hasenfrasen:

Min i7-3770T (med aes) under esxi maxar ca 160 Mbit på en kärna över OpenVPN. Den cpun är ca 25% snabbare än en i7-950 men drar bara 45 watt mot 130 watt för 950'ian.

OpenVPN har dock mer overhead än WireGuard, chansen är stor att du kan få bättre prestanda med WireGuard på den CPUn

Permalänk
Medlem

WireGuard använder inte AES-kryptering.

Ps. Det är ChaCha20 som används och den algoritmen är ämnad att vara snabb trots avsaknad av hårdvaruaccelerering.

Permalänk
Vila i frid

Om en kärna i7-3770t med aes körandes openvpn under esxi är lika snabb som fyra kärnor i7-950 med wireguard trots att cpu bara är 25% snabbare är det nog proxmox'eriet man bör se över. Hur mycket minne får OPNsense instansen tilldelat sig? Vad för nätverkskort används?

Permalänk
Medlem

Som någon sa så är WireGuard 100% CPU-baserad kryptering. OpenVPN (eller IPSec) kör normalt AES128/256 som avlastas med AES-NI.

Permalänk
Vila i frid

Hm, jag provade att inaktivare AES i min egen pfSense under esxi och då ökade hastigheten från 160 Mbit till 220 Mbit. Go figure!

Permalänk
Medlem

Jag kör Wireguard på en Pi4, har gigabit hemma och 250/250 hos kärringen, har 251/253 enligt iperf3, så...

Visa signatur

Asus B550E-Gaming / Ryzen 5900X stock / Corsair Vengeance 32GB 3600 MHz CL18 /
ASUS TUF 4080 Gaming OC / Samsung 980 PRO 2TB PCI-Ev4 + 2TB WD Black NVME PCI-Ev3 / Corsair RM850x v2 / Acer Predator XB273UGX 1440p 270 Hz G-Sync / Phantek P500A / Arctic Cooling LF II 240mm / Evo 4 / Sennheiser IE 300 / Rode NT1-A
Synology 1621+ 6*16 / 1513+ 5*8 / LG CX 65" / XBox Series X
Ownit > Bahnhof

Permalänk
Medlem
Skrivet av hasenfrasen:

Om en kärna i7-3770t med aes körandes openvpn under esxi är lika snabb som fyra kärnor i7-950 med wireguard trots att cpu bara är 25% snabbare är det nog proxmox'eriet man bör se över. Hur mycket minne får OPNsense instansen tilldelat sig? Vad för nätverkskort används?

OPNsense har 4GB RAM tilldelat sig och 4 kärnor som kör på "host", dvs ej emulerat. Nätverkskorten enlig lspci:

Citat:

Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 12)

Marvell Technology Group Ltd. 88E8056 PCI-E Gigabit Ethernet Controller (rev 12)

Permalänk
Medlem
Skrivet av KroesusSork:

Jag kör Wireguard på en Pi4, har gigabit hemma och 250/250 hos kärringen, har 251/253 enligt iperf3, så...

Om du inte överklockat satan ur din Pi4 borde alltså inte WG grilla min CPU...

Jag håller just på att sätta upp en container med WireGuard som jag tänkte routa all trafik igenom. Får se om det funkar bättre. Då körs ju i varje fall all hårdvara direkt från värdmaskinen, plus att det är Linux istället för BSD (som ju har långt ifrån samma stöd i drivrutiner).

Permalänk
Medlem
Skrivet av DasIch:

Om du inte överklockat satan ur din Pi4 borde alltså inte WG grilla min CPU...

Jag håller just på att sätta upp en container med WireGuard som jag tänkte routa all trafik igenom. Får se om det funkar bättre. Då körs ju i varje fall all hårdvara direkt från värdmaskinen, plus att det är Linux istället för BSD (som ju har långt ifrån samma stöd i drivrutiner).

Oavsett vilket är det ju smartare att skippa ett ytterligare lager mellan nätverk och mjukvara om det inte är nödvändigt.

Visa signatur

11600K@5.1 GHz + 32GB Corsair Vengeance RGB PRO 3200@3400 MHz + MSI RTX 2080 Super Gaming X Trio +
WDC Blue SN550 1TB + Black OEM SN730 500GB + Kingston A1000 480GB + A2000 500GB + NV2 1TB + 2TB R10 + RGB most of THE THINGS! + Corsair 4000D Airflow + 2*ZyXEL NSA326 2*3TB @ R1 + Netgear RN2100 4*3TB @ R10 + RN204 4*4TB @ R5 + Synology DS216j 2*4TB @ SHR R1 + DS418 4*8TB @ SHR R6
| tmp: R5 3600@4.2 GHz + 32GB 2666@3066MHz + 2070 8GB + 1 TB NV2 & 512GB SN730

Permalänk
Medlem
Skrivet av DasIch:

Om du inte överklockat satan ur din Pi4 borde alltså inte WG grilla min CPU...

Inte klockat alls. Körde sar (sysstat) på pi4:an nu så du får se hur den beter sig...

11:15:23 CPU %user %nice %system %iowait %steal %idle 11:15:23 all 0.50 0.00 0.00 0.00 0.00 99.50 11:15:24 all 0.00 0.00 6.20 0.00 0.00 93.80 11:15:25 all 0.27 0.00 44.57 0.00 0.00 55.16 11:15:26 all 0.00 0.00 42.82 0.00 0.00 57.18 11:15:27 all 1.63 0.00 44.44 0.00 0.00 53.93 11:15:28 all 1.41 0.00 43.79 0.00 0.00 54.80 11:15:29 all 2.07 0.00 45.34 0.00 0.00 52.59 11:15:30 all 0.27 0.00 39.18 0.00 0.00 60.55 11:15:31 all 0.51 0.00 48.08 0.00 0.00 51.41 11:15:32 all 0.00 0.00 47.26 0.00 0.00 52.74 11:15:33 all 0.00 0.00 45.97 0.00 0.00 54.03 11:15:34 all 0.00 0.00 36.29 0.00 0.00 63.71 11:15:35 all 3.35 0.00 4.64 0.00 0.00 92.01 11:15:36 all 0.25 0.00 0.51 0.00 0.00 99.24

börjar vid sekund 25, slutar vid sekund 35, resultat med iperf3 och 5 asynkrona streams:

[SUM] 0.00-10.02 sec 299 MBytes 251 Mbits/sec receiver

Rätt smutt, borde ju klara ~500mbit då ivf på en pi4 om jag tolkar det rätt, men den klarar kanske mer.

EDIT: Skall väll kanske tilläggas att jag kör ett "par" docker-containrar på den, inklusive homeassistant, så helt idle bör den ju inte vara

@:~ $ docker ps | wc -l 13 @:~ $

Visa signatur

Asus B550E-Gaming / Ryzen 5900X stock / Corsair Vengeance 32GB 3600 MHz CL18 /
ASUS TUF 4080 Gaming OC / Samsung 980 PRO 2TB PCI-Ev4 + 2TB WD Black NVME PCI-Ev3 / Corsair RM850x v2 / Acer Predator XB273UGX 1440p 270 Hz G-Sync / Phantek P500A / Arctic Cooling LF II 240mm / Evo 4 / Sennheiser IE 300 / Rode NT1-A
Synology 1621+ 6*16 / 1513+ 5*8 / LG CX 65" / XBox Series X
Ownit > Bahnhof

Permalänk
Medlem

Är det wireguard-kmod eller wireguard-go som du använder? Wireguard-kmod är en kernel module och har betydligt högre prestanda.

Permalänk
Medlem
Skrivet av Zarper:

Är det wireguard-kmod eller wireguard-go som du använder? Wireguard-kmod är en kernel module och har betydligt högre prestanda.

kernel module, gjorde KISS (Keep It Simple, Stupid) modellen via https://github.com/adrianmihalko/raspberrypiwireguard

@~ $ lsmod | grep wireguard wireguard 69632 0 curve25519_neon 28672 1 wireguard libcurve25519_generic 24576 2 curve25519_neon,wireguard libchacha20poly1305 16384 1 wireguard ip6_udp_tunnel 16384 1 wireguard udp_tunnel 24576 1 wireguard libblake2s 16384 1 wireguard ipv6 495616 247 br_netfilter,wireguard,bridge @:~ $

Visa signatur

Asus B550E-Gaming / Ryzen 5900X stock / Corsair Vengeance 32GB 3600 MHz CL18 /
ASUS TUF 4080 Gaming OC / Samsung 980 PRO 2TB PCI-Ev4 + 2TB WD Black NVME PCI-Ev3 / Corsair RM850x v2 / Acer Predator XB273UGX 1440p 270 Hz G-Sync / Phantek P500A / Arctic Cooling LF II 240mm / Evo 4 / Sennheiser IE 300 / Rode NT1-A
Synology 1621+ 6*16 / 1513+ 5*8 / LG CX 65" / XBox Series X
Ownit > Bahnhof

Permalänk
Medlem
Skrivet av KroesusSork:

kernel module, gjorde KISS (Keep It Simple, Stupid) modellen via https://github.com/adrianmihalko/raspberrypiwireguard

@~ $ lsmod | grep wireguard wireguard 69632 0 curve25519_neon 28672 1 wireguard libcurve25519_generic 24576 2 curve25519_neon,wireguard libchacha20poly1305 16384 1 wireguard ip6_udp_tunnel 16384 1 wireguard udp_tunnel 24576 1 wireguard libblake2s 16384 1 wireguard ipv6 495616 247 br_netfilter,wireguard,bridge @:~ $

Nu syftade jag på OP

WireGuard till FreeBSD som OPNsense bygger på är inte riktigt färdigbakat utan räknas komma med FreeBSD 13.1 eller 14.0. Tills dess får man installera det från ports och då finns det både en Go version som körs i user space och en kernel module som kommer bli det som är inbakat i kommande versioner. Stor skillnad på prestanda mellan dem.

Permalänk
Medlem
Skrivet av Zarper:

Nu syftade jag på OP

WireGuard till FreeBSD som OPNsense bygger på är inte riktigt färdigbakat utan räknas komma med FreeBSD 13.1 eller 14.0. Tills dess får man installera det från ports och då finns det både en Go version som körs i user space och en kernel module som kommer bli det som är inbakat i kommande versioner. Stor skillnad på prestanda mellan dem.

Vet inte vilken av dem det är. Jag installerade den jag hittade under firmware/plugins i OPNsense.

Permalänk
Medlem

Använder inte OPNsense själv, så kan inte steg för steg hjälpa dig. Borde dock gå att söka fram.

Om du vet hur du kommer åt terminalen så kan du testa att skriva "pkg info" för att se vad som är installerat.

Permalänk
Medlem

Tror det ska räcka med att SSH:a in och installera kernel modulen ("pkg install wireguard-kmod"), sen reboota.

Tänk dock på att det kan finns en anledning till att det inte är inlagt i FreeBSD än och bör betraktas som experimentellt. Så är säkerhet eller stabilitet av väldigt hög prioritet så kanske du bör avvakta.

Permalänk
Medlem
Skrivet av Zarper:

Tror det ska räcka med att SSH:a in och installera kernel modulen ("pkg install wireguard-kmod"), sen reboota.

Tänk dock på att det kan finns en anledning att det inte är inlagt i FreeBSD än och bör betraktas som experimentellt. Så är säkerhet eller stabilitet av väldigt hög prioritet så kanske du bör avvakta.

Jag kanske kikar på det sen. Tänkte prova köra WG i separat container först. Känns som det har störst chans att funka bra, och ifall det gör det så vet jag ju om det är implementationen i OPNsense som är problemet.

Tyvärr tycks inte min hjärna gjord för att konfigurera brandväggar så det tar lite tid det här... Mottager tacksamt tips på hur port forward och regler ska se ut för att det att funka.

Min setup är alltså följande:

Proxmox hypervisor med en LAN och en WAN bridge. OPNsense i VM som i sin tur använder en LXC container med Pi-hole som rekursiv DNS. Sen VM's och fysiska enheter (har en AP/router kopplad till nätverkskortet i servern) med OPNsense som gateway.

Så, nu vill jag förstås ha all trafik genom min nyskapade container som kör WireGuard. Här tänker jag att det borde räcka med en port forward i OPNsense (fast det räcker förstås inte, av för mig okänd anledning).

Citat:

NAT/Port Forward

Interface LAN
Protocol UDP
Destination any
Destination port HTTP-HTTPS
Redirect target IP [IP för WireGuard VM]
Redirect target port 51820 [WG port]

WireGuard för container verkar dock funka och kör följande konfiguration:

Citat:

[Interface]
PrivateKey = [dold]
Address = 10.0.208.213/24,fdab:1337:1337:208::213/64
ListenPort=51820

[Peer]
PublicKey = [dold]
Endpoint = wireguard.5july.net:48574
AllowedIPs = 0.0.0.0/0, ::/0

Jag tänker att det kanske behövs någon regel i brandväggen, men får det inte att funka. Alternativt kanske det inte räcker med att WG bara lyssnar på porten?

Permalänk
Medlem
Skrivet av DasIch:

Jag kanske kikar på det sen. Tänkte prova köra WG i separat container först. Känns som det har störst chans att funka bra, och ifall det gör det så vet jag ju om det är implementationen i OPNsense som är problemet.

Tyvärr tycks inte min hjärna gjord för att konfigurera brandväggar så det tar lite tid det här... Mottager tacksamt tips på hur port forward och regler ska se ut för att det att funka.

Min setup är alltså följande:

Proxmox hypervisor med en LAN och en WAN bridge. OPNsense i VM som i sin tur använder en LXC container med Pi-hole som rekursiv DNS. Sen VM's och fysiska enheter (har en AP/router kopplad till nätverkskortet i servern) med OPNsense som gateway.

Så, nu vill jag förstås ha all trafik genom min nyskapade container som kör WireGuard. Här tänker jag att det borde räcka med en port forward i OPNsense (fast det räcker förstås inte, av för mig okänd anledning).

WireGuard för container verkar dock funka och kör följande konfiguration:

Jag tänker att det kanske behövs någon regel i brandväggen, men får det inte att funka. Alternativt kanske det inte räcker med att WG bara lyssnar på porten?

Testa att lämna Endpoint tom för Peer

Visa signatur

11600K@5.1 GHz + 32GB Corsair Vengeance RGB PRO 3200@3400 MHz + MSI RTX 2080 Super Gaming X Trio +
WDC Blue SN550 1TB + Black OEM SN730 500GB + Kingston A1000 480GB + A2000 500GB + NV2 1TB + 2TB R10 + RGB most of THE THINGS! + Corsair 4000D Airflow + 2*ZyXEL NSA326 2*3TB @ R1 + Netgear RN2100 4*3TB @ R10 + RN204 4*4TB @ R5 + Synology DS216j 2*4TB @ SHR R1 + DS418 4*8TB @ SHR R6
| tmp: R5 3600@4.2 GHz + 32GB 2666@3066MHz + 2070 8GB + 1 TB NV2 & 512GB SN730

Permalänk
Medlem
Skrivet av ZaInT:

Testa att lämna Endpoint tom för Peer

Då blir det ju svårt att skicka traffik genom tunneln...

WireGuard i sig funkar. Jag har dock två problem som jag inte lyckats hitta svar på.

* WireGuard containern (Ubuntu i grunden) behöver köra någon form av routing. Jag har fått forwarding att funka så länge jag inte startar WG. Alltså, jag kan ställa in en client på att köra containern som gateway men det slutar funka när jag startar WG.

* Jag har fortfarande ingen aning om hur jag ska få OPNsense att skicka trafiken genom WG-containern.

Permalänk
Medlem
Skrivet av DasIch:

Då blir det ju svårt att skicka traffik genom tunneln...

WireGuard i sig funkar. Jag har dock två problem som jag inte lyckats hitta svar på.

* WireGuard containern (Ubuntu i grunden) behöver köra någon form av routing. Jag har fått forwarding att funka så länge jag inte startar WG. Alltså, jag kan ställa in en client på att köra containern som gateway men det slutar funka när jag startar WG.

* Jag har fortfarande ingen aning om hur jag ska få OPNsense att skicka trafiken genom WG-containern.

Det ska inte behövas för serverns peer-conf, läste en tråd om det för bara några dagar sedan. Peer på klientsidan måste så klart vara ifylld.

WG skapar ju lite egna routes, börja med att jämföra routes före och efter så kanske du kan hitta något relativt enkelt. iptables eller vad du nu använder behöver säkert confas också.

Visa signatur

11600K@5.1 GHz + 32GB Corsair Vengeance RGB PRO 3200@3400 MHz + MSI RTX 2080 Super Gaming X Trio +
WDC Blue SN550 1TB + Black OEM SN730 500GB + Kingston A1000 480GB + A2000 500GB + NV2 1TB + 2TB R10 + RGB most of THE THINGS! + Corsair 4000D Airflow + 2*ZyXEL NSA326 2*3TB @ R1 + Netgear RN2100 4*3TB @ R10 + RN204 4*4TB @ R5 + Synology DS216j 2*4TB @ SHR R1 + DS418 4*8TB @ SHR R6
| tmp: R5 3600@4.2 GHz + 32GB 2666@3066MHz + 2070 8GB + 1 TB NV2 & 512GB SN730

Permalänk
Vila i frid

Flikar in, Wireguard på QNAP NAS'ar funkar alldeles utmärkt. Synd att det saknas bra implementationer som wrappar mot AD/LDAP. En vanlig dödlig ska inte behövs rådda med ip-adresser, nätmasker, dns och routing.

Permalänk
Medlem

Wireguard fungerade mycket bättre än Ovpn på min gamla laptop med Intel C n2840

Visa signatur

CPU: 5600x
GPU: 3080
RAM: 32GB

Sluta gömma din identitet, skaffa en till istället