PC Engines APU2C4 + OpnSense 18.1 routing+NAT 1Gbit hogyan?

Helló mindenki!

Előzmények:
https://hup.hu/node/152567
https://hup.hu/cikkek/20170327/opnsense_teszt
https://hup.hu/cikkek/20170322/lk_pfsense_ala_hw
https://www.pcengines.ch/apu2c4.htm
https://pcengines.github.io/ --> coreboot BIOS for apu2 (current vonal: 4.8.akármi, legacy vonal: 4.0.akármi)
http://www.pcengines.info/forums/?page=post&id=69F984B9-1542-4103-8808-… --> coreboot 4.0.x vs 4.6.x
https://openwrt.org/toh/pcengines/apu2

apu2c0 (2 GB DRAM, 2 i211AT NICs)
apu2c2 (2 GB DRAM, 3 i211AT NICs)
apu2c4 = 3x i210AT LAN / AMD GX-412TC 1 Ghz Quad-core CPU / 4 GB DRAM

"The i210 implements 4 receive queues and 4 transmit queues"
"The i211 implements 2 receive queues and 2 transmit queues" --> ez az i21x sorozat gyengébbik tagja

Out of the box OpnSense 18.1.6-al teszteltem, ergo kb. 0 extra szabály van a tűzfalban, nem VPN tunnel-e keresztül mértem stb.
coreboot 20170218
seabios 1.10.0.1

Kiindulási konfig:
hw.igb.enable_msix: 1
hw.igb.txd: 1024
net.link.ifqmaxlen: 50
kern.random.harvest.mask: 2047
hw.igb.rx_process_limit: 100
Disabled HW TSO, LSO, CRC

A gond:
1 Gbit-es internetet nem bír kihajtani PC1 --> LAN -> NAT -> WAN --> PC2 láb irányban iperf szerint stabilan 650 Mbit környékén megáll. Ekkor 1 core 100% system, 1 core 75% interrupt, a másik 2 kb. 98% idle.
Ha ellenkező irány: PC1 <-- LAN <- NAT <- WAN <-- PC2 , még gyengébb: max. kb. 450 Mbit. Ilyenkor szintén 1 core 100% system, egy másik core meg 10% interrupt.

Nyomozás után kiderült h. pppoe (Digi = pppoe) esetén még tovább romlik a helyzet, mert FreeBSD alatt a pppoe interfész "igb" Intel NIC esetén csak 1 RX queue-t tud kezelni a 4-ből (https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=203856)

Aktív VPN tunnel-en (+aktív crypto beállítással) meg még ennél is rosszabb lenne a helyzet.

Viszont biztosan nem endpoint issue, mert:
PC1 <--> PC2 direktben, v. egy L2 gbit-es switchen keresztül stabilan 950 Mbit-et hoz iperf.

Van erre bármilyen 1 parancsos varázs-megoldás, v. ez tényleg csak ennyit tud?

Ötlet híjján itt indulnék el:
https://teklager.se/en/knowledge-base/apu2c0-ipfire-throughput-test-muc…
https://bsdrp.net/documentation/technical_docs/performance
https://github.com/ocochard/netbenches/blob/master/README.md
https://calomel.org/freebsd_network_tuning.html
https://wiki.freebsd.org/10gFreeBSD/Router

de ezzel ahogy látom a routing performance tuningolás feneketlen bugyraiba jutok el

Hozzászólások

Első körben:

hw.igb.num_queues=4

Mintha ha lett volna már ez a téma de lehet pfsense-nél

Azért furcsállom, mert írják a fenti URL-eken h. ne 1 szálon futtasd az iperf-et mikor a router teljesítményét méred (mint ahogy te is -P3 használtál). Na de ha 1 szálon akarok/tudok forgalmazni Gbit-et wirespeed-en egy konkrét esetben, akkor hajamra kenhetem ezeket a jótanácsokat :S
--

Kb. igen.
Ugyanakkor ha az otthoni interneted megosztásához kell a doboz, akkor nem valószínű, hogy fogsz találni olyan partnert, akivel tudnál gyorsabban forgalmazni, mint amit egy szálon tud. Ha meg egyszerre több kapcsolaton töltesz le, vagy többen akarjátok használni, akkor már elég, ha több szálon tudja a Gbit sebességet.

Nézem TOP-ban, 1 core-t kihajt 99% system, másik 3 core meg 98% idle. Szóval nem a cpu gyenge, hanem rossz a NIC queue --> cpu core szétosztás.

Ami rosszabb hír, h. pppoe (DIGI = pppoe) BSD alatt úgy tűnik single thread-ed, és az a mostani max. 650 mbitet tovább fogja csökkenteni.
--

Nagyon nem ugyanazt méred ám, a NAT-olásnak és a pppoe-nek együtt simán van ekkora overheadje.

kern.random.harvest.mask: 2047 --> 600 Mbit (PC1->LAN->NAT->WAN->PC2)
kern.random.harvest.mask: 351 --> 625 Mbit (PC1->LAN->NAT->WAN->PC2), PC2-->WAN-->LAN-->PC1 irányon nem segít kb. semennyit
--

+Subscribe - kíváncsi leszek mi lesz az eredmény.

Én megnézném PfSense-el is, bár úgy olvasgatom a fórumokon mostanában, hogy az opensense talán jobb (de ki tudja 1 Gbit-tel is jobb-e...)

Másfelől ahogy fent is írják lehet, hogy BSD háza táján van a probléma. Mi van ha felhúzol egy Debian-t teszt céllal és mérsz egyet az iperf-fel?
Előtte persze csinálsz a diskről egy image-et és ha nem válik be a debian akkor visszaállítod az opensense-t.

remek téma, pont gondolkozom ilyesmi vételén.
jó volna már találni itthonra vmi értelmes *bsd usecase-t, de akkor ezen is linux lesz (ipfire).

Honnan vettétek a board-ot?
A gyártó EU-ba nem szállít csak viszonteladóknak.