Собрал себе новый роутер на базе industrial-PC с пассивным охлаждением - называется Qotom Q335G4. Давно хотелось нечто подобное - производительное, бесшумное и компактное. До этого юзал разные SOHO-роутеры с собственно разработанными прошивками на базе FreeBSD. Последним таким был D-Link DSR-1000N - в целом, нормальная железка, кроме производительности шифрования (аппаратный криптоускоритель так и не удалось задействовать), в OpenVPN он едва вытягивал 10 Мбит.
Этот Qotom Q335G4 довольно дорогой, но все более дешевые не устраивали по разным причинам (или мало портов, или нет SATA, или слабый проц). К тому же, эта модель поставляется с pfSense, т.е. некоторая гарантия, что с поддержкой железа в FreeBSD проблем не будет.
Заказывал без SSD и ОЗУ, c доставкой обошлось в 240$.
Что на борту:
- Core i3 5005U с TDP 15 Вт (есть опция TDP down 10 Вт), 2 ядра с HT, поддержка AES-NI
- 4 отличные сетевухи Intel I211-AT (4 независимых интерфейса igb в системе)
- SATA-интерфейс
- 1 слот mSATA, 1 слот mini PCI-E (стоит wifi карта Atheros AR9287)
- 2х USB 2.0, 2x USB 3.0, HDMI, COM
- массивный полностью алюминевый корпус с пассивным охлаждением (корпус реально тяжелый, больше 2 кг).
Докупил планку ОЗУ DDR3L 8 Gb Kingston HyperX Impact (HX316LS9IB/8), SSD под систему нашелся в закромах от старого нетбука (16 Гб). К SATA пока ничего не подключено. Это на будущее, как появятся 16-Тб SSD - вполне вероятно, файловое хранилище переедет на роутер и от отдельного постоянного включенного NAS'а можно будет отказаться вообще (включать разве что для бэкапов).
Как и ожидалось, FreeBSD 12.2 взлетела сразу и без каких-либо плясок с бубном. Все устройства корректно определяются и даже звуковая карта. Сетевухи и SATA-интерфейс честные, каждая сидит на своей отдельной PCIE-шине. ACPI и управление питанием тоже работает.
По энергопотреблению. В режиме бездействия потребляет около 8 Вт (на минимальной частоте CPU), максимальное потребление при полной нагрузке CPU - 15-16 Вт. Питается через маленький industrial ИБП под 12 В на литиевых батареях, что дает ему порядка 60-70 минут автономности.
Корпус, конечно, греется. Он так и спроектирован чтобы отводить тепло - внутри радиатор процессора прилеплен к корпусу, (возможно, не намертво, но отдирать не стал). Температура процессора при бездействии в среднем 45-47 градусов, при максимальной длительной нагрузке максимум видел 69.
Производительность для роутера огромная. По сравнению с моим прошлым D-Link DSR-1000N разница просто гигантская - в OpenVPN порядка 500-550 Мбит/c с шифрованием AES-128-CBC и 600-640 Мбит/с с шифрованием AES-128-GCM. AES-NI, конечно, делает свое дело. Разумеется, NAT и обычная маршрутизация легко утилизирует гигабитный интерфейс, даже без особой нагрузки на CPU.
В общем, если хочется бескомпромиссный роутер и есть прямые руки чтобы все это настроить - отличный вариант. Огромный запас производительности, можно реализовать почти любые хотелки, в т.ч. закачку торрентов, медиасервер, файлохранилка и т.д.
Из недостатков... Ну, скорее хотелок - хотелось бы 2ой слот miniPCI-E вместо mSATA (слот mSATA только для SSD, линии miniPCI-E даже не распаяны), чтобы во второй воткнуть LTE-модем и аккуратно вывести антенны на SMA-разъемы на задней стенке. Сейчас приходится юзать обычный USB-stick, что не очень удобно (торчит, гемор с внешними антеннами).
Начиная с версий 1.1.x поддержка AES-NI добавлена в код openssl и работает в user-space режиме. Т.е. даже не обязательно собирать ядро с device aesni - если в features процессора есть AESNI, то openssl будет его использовать по умолчанию, дополнительные опции в конфиге OpenVPN тоже не нужны. Это круто, давно пора было так сделать.
Qotom with AES-NI
------------------
- код выделить все
openssl speed -elapsed -evp aes-128-cbc
aes-128-cbc 358448.25k 430796.83k 444283.75k 447429.55k 448779.69k 449433.29k
openssl speed -elapsed -evp aes-128-gcm
aes-128-gcm 203272.59k 627078.55k 1385908.99k 2065229.36k 2590236.92k 2636446.05k
Qotom without AES-NI
------------------
- код выделить все
env OPENSSL_ia32cap="-0x200000200000000" openssl speed -elapsed -evp aes-128-cbc
aes-128-cbc 97976.03k 122657.22k 126326.16k 128149.23k 128773.71k 128811.01k
env OPENSSL_ia32cap="-0x200000200000000" openssl speed -elapsed -evp aes-128-gcm
aes-128-gcm 64032.27k 85260.48k 90334.99k 92098.14k 92831.74k 92955.72k
Как видно, AES-NI дает прирост скорости шифрования в несколько раз (а в случае AES-128-GCM в десятки раз)
Для сравнения, производительность openssl в DSR-1000N. В нем есть криптоускоритель (cryptocteon), но задействовать его можно только на уровне ядра, например, для ядерного IPSEC. В user-space режиме к сожалению не работает (насколько я понял, нужна особая версия openssl, с этим я так и не разобрался).
DSR-1000N
----------
- код выделить все
openssl speed -elapsed -evp aes-128-cbc
aes-128-cbc 897.58k 3456.45k 12474.65k 33378.42k 64722.26k
openssl speed -elapsed -evp aes-128-gcm
aes-128-gcm 3222.65k 3550.70k 3668.74k 3692.15k 3762.86k
(звуковуху отключил в ядре)
- код выделить все
FreeBSD 12.2-STABLE r367767 QOTOM_Q335G4 amd64
FreeBSD clang version 10.0.1 (git@github.com:llvm/llvm-project.git llvmorg-10.0.1-0-gef32c611aa2)
VT(efifb): resolution 800x600
CPU: Intel(R) Core(TM) i3-5005U CPU @ 2.00GHz (1995.43-MHz K8-class CPU)
Origin="GenuineIntel" Id=0x306d4 Family=0x6 Model=0x3d Stepping=4
Features=0xbfebfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE>
Features2=0x7ffafbbf<SSE3,PCLMULQDQ,DTES64,MON,DS_CPL,VMX,EST,TM2,SSSE3,SDBG,FMA,CX16,xTPR,PDCM,PCID,SSE4.1,SSE4.2,x2APIC,MOVBE,POPCNT,TSCDLT,AESNI,XSAVE,OSXSAVE,AVX,F16C,RDRAND>
AMD Features=0x2c100800<SYSCALL,NX,Page1GB,RDTSCP,LM>
AMD Features2=0x121<LAHF,ABM,Prefetch>
Structured Extended Features=0x21c27ab<FSGSBASE,TSCADJ,BMI1,AVX2,SMEP,BMI2,ERMS,INVPCID,NFPUSG,RDSEED,ADX,SMAP,PROCTRACE>
XSAVE Features=0x1<XSAVEOPT>
VT-x: (disabled in BIOS) PAT,HLT,MTF,PAUSE,EPT,UG,VPID
TSC: P-state invariant, performance statistics
real memory = 8589934592 (8192 MB)
avail memory = 8214634496 (7834 MB)
Event timer "LAPIC" quality 600
ACPI APIC Table: <ALASKA A M I >
FreeBSD/SMP: Multiprocessor System Detected: 4 CPUs
FreeBSD/SMP: 1 package(s) x 2 core(s) x 2 hardware threads
random: unblocking device.
WARNING: Bogus Interrupt Trigger Mode. Assume CONFORMS.
ioapic0 <Version 2.0> irqs 0-39 on motherboard
Launching APs: 1 2 3
Timecounter "TSC" frequency 1995426184 Hz quality 1000
random: entropy device external interface
module_register_init: MOD_LOAD (vesa, 0xffffffff80999cc0, 0) error 19
random: registering fast source Intel Secure Key RNG
random: fast provider: "Intel Secure Key RNG"
[ath_hal] loaded
kbd1 at kbdmux0
000.000046 [4336] netmap_init netmap: loaded module
nexus0
efirtc0: <EFI Realtime Clock> on motherboard
efirtc0: registered as a time-of-day clock, resolution 1.000000s
cryptosoft0: <software crypto> on motherboard
acpi0: <ALASKA A M I > on motherboard
acpi0: Power Button (fixed)
cpu0: <ACPI CPU> on acpi0
hpet0: <High Precision Event Timer> iomem 0xfed00000-0xfed003ff on acpi0
Timecounter "HPET" frequency 14318180 Hz quality 950
Event timer "HPET" frequency 14318180 Hz quality 550
Event timer "HPET1" frequency 14318180 Hz quality 440
Event timer "HPET2" frequency 14318180 Hz quality 440
Event timer "HPET3" frequency 14318180 Hz quality 440
Event timer "HPET4" frequency 14318180 Hz quality 440
atrtc0: <AT realtime clock> port 0x70-0x77 irq 8 on acpi0
atrtc0: Warning: Couldn't map I/O.
atrtc0: registered as a time-of-day clock, resolution 1.000000s
Event timer "RTC" frequency 32768 Hz quality 0
attimer0: <AT timer> port 0x40-0x43,0x50-0x53 irq 0 on acpi0
Timecounter "i8254" frequency 1193182 Hz quality 0
Event timer "i8254" frequency 1193182 Hz quality 100
Timecounter "ACPI-fast" frequency 3579545 Hz quality 900
acpi_timer0: <24-bit timer at 3.579545MHz> port 0x1808-0x180b on acpi0
pcib0: <ACPI Host-PCI bridge> port 0xcf8-0xcff on acpi0
pci0: <ACPI PCI bus> on pcib0
vgapci0: <VGA-compatible display> port 0xf000-0xf03f mem 0xf6000000-0xf6ffffff,0xe0000000-0xefffffff irq 16 at device 2.0 on pci0
vgapci0: Boot video device
xhci0: <Broadwell Integrated PCH-LP chipset USB 3.0 controller> mem 0xf7500000-0xf750ffff irq 21 at device 20.0 on pci0
xhci0: 32 bytes context size, 64-bit DMA
xhci0: Port routing mask set to 0xffffffff
usbus0 on xhci0
usbus0: 5.0Gbps Super Speed USB v3.0
pci0: <simple comms> at device 22.0 (no driver attached)
pci0: <multimedia, HDA> at device 27.0 (no driver attached)
pcib1: <ACPI PCI-PCI bridge> irq 16 at device 28.0 on pci0
pci1: <ACPI PCI bus> on pcib1
igb0: <Intel(R) PRO/1000 PCI-Express Network Driver> port 0xe000-0xe01f mem 0xf7400000-0xf741ffff,0xf7420000-0xf7423fff irq 16 at device 0.0 on pci1
igb0: Using 1024 TX descriptors and 1024 RX descriptors
igb0: Using 2 RX queues 2 TX queues
igb0: Using MSI-X interrupts with 3 vectors
igb0: Ethernet address: 40:62:31:13:eb:6a
igb0: netmap queues/slots: TX 2/1024, RX 2/1024
pcib2: <ACPI PCI-PCI bridge> irq 17 at device 28.1 on pci0
pci2: <ACPI PCI bus> on pcib2
igb1: <Intel(R) PRO/1000 PCI-Express Network Driver> port 0xd000-0xd01f mem 0xf7300000-0xf731ffff,0xf7320000-0xf7323fff irq 17 at device 0.0 on pci2
igb1: Using 1024 TX descriptors and 1024 RX descriptors
igb1: Using 2 RX queues 2 TX queues
igb1: Using MSI-X interrupts with 3 vectors
igb1: Ethernet address: 40:62:31:13:eb:6b
igb1: netmap queues/slots: TX 2/1024, RX 2/1024
pcib3: <ACPI PCI-PCI bridge> irq 18 at device 28.2 on pci0
pci3: <ACPI PCI bus> on pcib3
igb2: <Intel(R) PRO/1000 PCI-Express Network Driver> port 0xc000-0xc01f mem 0xf7200000-0xf721ffff,0xf7220000-0xf7223fff irq 18 at device 0.0 on pci3
igb2: Using 1024 TX descriptors and 1024 RX descriptors
igb2: Using 2 RX queues 2 TX queues
igb2: Using MSI-X interrupts with 3 vectors
igb2: Ethernet address: 40:62:31:13:eb:6c
igb2: netmap queues/slots: TX 2/1024, RX 2/1024
pcib4: <ACPI PCI-PCI bridge> irq 19 at device 28.3 on pci0
pci4: <ACPI PCI bus> on pcib4
igb3: <Intel(R) PRO/1000 PCI-Express Network Driver> port 0xb000-0xb01f mem 0xf7100000-0xf711ffff,0xf7120000-0xf7123fff irq 19 at device 0.0 on pci4
igb3: Using 1024 TX descriptors and 1024 RX descriptors
igb3: Using 2 RX queues 2 TX queues
igb3: Using MSI-X interrupts with 3 vectors
igb3: Ethernet address: 40:62:31:13:eb:6d
igb3: netmap queues/slots: TX 2/1024, RX 2/1024
pcib5: <ACPI PCI-PCI bridge> irq 16 at device 28.4 on pci0
pci5: <ACPI PCI bus> on pcib5
ath0: <Atheros 9287> mem 0xf7000000-0xf700ffff irq 16 at device 0.0 on pci5
ath0: [HT] enabling HT modes
ath0: [HT] enabling short-GI in 20MHz mode
ath0: [HT] 1 stream STBC receive enabled
ath0: [HT] 1 stream STBC transmit enabled
ath0: [HT] 2 RX streams; 2 TX streams
ath0: AR9287 mac 384.2 RF5133 phy 15.15
ath0: 2GHz radio: 0x0000; 5GHz radio: 0x00c0
ehci0: <Intel Wildcat Point-LP USB 2.0 controller> mem 0xf7516000-0xf75163ff irq 23 at device 29.0 on pci0
usbus1: EHCI version 1.0
usbus1 on ehci0
usbus1: 480Mbps High Speed USB v2.0
isab0: <PCI-ISA bridge> at device 31.0 on pci0
isa0: <ISA bus> on isab0
ahci0: <Intel Wildcat Point-LP AHCI SATA controller> port 0xf0b0-0xf0b7,0xf0a0-0xf0a3,0xf090-0xf097,0xf080-0xf083,0xf060-0xf07f mem 0xf7515000-0xf75157ff irq 19 at device 31.2 on pci0
ahci0: AHCI v1.30 with 2 6Gbps ports, Port Multiplier not supported
ahcich0: <AHCI channel> at channel 0 on ahci0
acpi_button0: <Sleep Button> on acpi0
acpi_button1: <Power Button> on acpi0
acpi_tz0: <Thermal Zone> on acpi0
acpi_tz1: <Thermal Zone> on acpi0
uart0: <16950 or compatible> port 0x3f8-0x3ff irq 4 flags 0x10 on acpi0
uart0: console (9600,n,8,1)
uart1: <16950 or compatible> port 0x2f8-0x2ff irq 3 on acpi0
atkbdc0: <Keyboard controller (i8042)> at port 0x60,0x64 on isa0
atkbd0: <AT Keyboard> irq 1 on atkbdc0
kbd0 at atkbd0
atkbd0: [GIANT-LOCKED]
coretemp0: <CPU On-Die Thermal Sensors> on cpu0
est0: <Enhanced SpeedStep Frequency Control> on cpu0
ZFS filesystem version: 5
ZFS storage pool version: features support (5000)
Timecounters tick every 1.000 msec
Trying to mount root from zfs:zroot []...
ugen0.1: <0x8086 XHCI root HUB> at usbus0
ugen1.1: <Intel EHCI root HUB> at usbus1
Root mount waiting for: usbus0 usbus1ada0 at ahcich0 bus 0 scbus0 target 0 lun 0
ada0: <SanDisk pSSD-S2 16GB SSD 6.00> ATA8-ACS SATA 1.x device
ada0: Serial Number 100434300047
ada0: 150.000MB/s transfers (SATA 1.x, UDMA6, PIO 512bytes)
ada0: 15272MB (31277232 512 byte sectors)
uhub0: CAM
<0x8086 XHCI root HUB, class 9/0, rev 3.00/1.00, addr 1> on usbus0
uhub1: <Intel EHCI root HUB, class 9/0, rev 2.00/1.00, addr 1> on usbus1
uhub0: 15 ports with 15 removable, self powered
Root mount waiting for: usbus0 usbus1
uhub1: 2 ports with 2 removable, self powered
ugen0.2: <HUAWEIMOBILE HUAWEIMOBILE> at usbus0
u3g0 on uhub0
u3g0: <HUAWEIMOBILE HUAWEIMOBILE, class 0/0, rev 2.10/1.02, addr 1> on usbus0
u3g0: Found 2 ports.
ugen1.2: <vendor 0x8087 product 0x8001> at usbus1
uhub2 on uhub1
uhub2: <vendor 0x8087 product 0x8001, class 9/0, rev 2.00/0.03, addr 2> on usbus1
uhub2: 8 ports with 8 removable, self powered
wlan0: Ethernet address: 64:5a:04:62:9e:eb
bridge0: Ethernet address: 02:80:4b:e2:c6:00
igb3: changing name to 'wan0'
lo0: link state changed to UP
wan0: link state changed to UP
igb0: link state changed to UP
ng0: changing name to 'lte0'
interface u3g.1 already present in the KLD 'kernel'!
linker_load_file: /boot/kernel/u3g.ko - unsupported file type
cdce0 on uhub0
cdce0: <NCM Network Control Model> on usbus0
cdce0: faking MAC address
ue0: <USB Ethernet> on cdce0
ue0: Ethernet address: 2a:a8:08:f7:7f:00
igb0: link state changed to DOWN
igb0: promiscuous mode enabled
bridge0: link state changed to UP
wlan0: promiscuous mode enabled
igb0: link state changed to UP
[контент удалён]
[контент удалён]
[контент удалён]