Just curious if you ran iperf through the firewall for a baseline? I have a dual core 1.7GHz celeron that I can get 400Mb/s with tcp iperf (17.1.b). I would expect udp to perform better. This is running Opnsense under Fedora 25 Server as a KVM guest. BTW in my testing 17.1.b performs much better under a VM than does 16.7.11
Just an idea: Can you try to turn off state tracking for this service (advanced firewall settings) - note that you will need to pass the reverse channel too when state tracking is disabled.
Another idea is changing the state timeout of UDP to something less so it will also free the state tracking entry earlier.
Question: Why are you even putting this device behind NAT, a firewall is one thing but NAT should not be used here in my frank opinion.
Anyway, really what you are going to care about here is how fast your box can forward traffic in packets per-second (PPS), not bit/s because as you have discovered the actual throughput is very low. Also small sized packets, which will be more taxing on the CPU.A useful tool to hammer your box with here is something like Cisco TRex (https://trex-tgn.cisco.com). Here are a few pointers though:1) Run the OPNsense box on bare metal, or if you must use a VM then at least use some form of direct-io to attach the NICs directly.2) OPNsense is a software router, performance is CPU and memory bound, get the fastest you can in both cases - the Atoms are great boxes but if outright pps is what you are chasing then an E3 or E5 Xeon is what you should be going for, look for the "frequency optimised" chips perhaps, more GHz less cores.3) Set the firewall to expire state entries aggressively - Firewall > Settings > Advanced "Firewall Optimization - Aggressive"
Quote from: fabian on January 06, 2017, 11:59:11 amJust an idea: Can you try to turn off state tracking for this service (advanced firewall settings) - note that you will need to pass the reverse channel too when state tracking is disabled.Is that for the firewall rule itself or for the entire firewall?
Quote from: fabian on January 06, 2017, 11:59:11 amAnother idea is changing the state timeout of UDP to something less so it will also free the state tracking entry earlier.I can't seem to find that option. Is is a command line thing I need to add?