new home router
I’ve been using a Soekris 4801 as a router for several years now, but it’s time for an upgrade. There are a couple projects I’ve wanted to play with that require more cpu, and it appears that my internet connection will exceed 100Mbps. I looked at the new soekris models, but the 6501-50 starts at $360, plus power supply and mounting hardware. I decided to take a risk on the OEM Production 2550L2D-Mx from newegg.com. Yes, that really is the manufacturer’s name. It appears I bought the last one. It’s out of stock now (and has two bad reviews it didn’t have when I ordered it three days ago). Atom processor, fairly regular PC motherboard, but with two Broadcom gigabit chips. Perfect for a router I suppose. For $129? Done.
hardware
The good news is I got a working one. Installed a hard drive from an old macbook and the factory RAM from my T430s, and we’re set. All the cables are included, and the hard drive mounting tray is easy to use. Two screws to remove the top cover, two screws to remove the tray, four screws to attach the hard drive, then all back into the case. Cables are just the right length to connect. There’s the world’s smallest PCIe slot which has a punchout on the back that looks like a serial port, but there’s no way a regular card is going to fit. There’s also a serial header on the MB.
It’s low power and quiet. Even burning all the cpu and disk I could, couldn’t get power draw at the wall to exceed 20W. Idles around 15W. The included 60W power supply is clearly overkill. There’s a tiny fan on the cpu which is audible, but not loud. From more than about three feet away it’s hard to hear, and not noticeable above background noise. Always spins at a constant 4000 rpm. It can be unplugged, in which case I got the CPU temp up to 70C, which is within spec but a little warm. In the end, the super cheap fan started to annoy me, so I unplugged it, got a silent case fan, and jury rigged it outside (no room inside) with some twist ties. Now the CPU is cooler than ever; the internal fan didn’t do much to push air through the case.
It’s not really meant as a router machine, except for the two gigabit ports. The only console is vga (or HDMI), and it includes tons of usb ports, including two usb 3, along with audio and even two PS/2 ports. That said, the nics appear to work fine, and unlike the soekris it’s replacing, it can be repurposed as another type of machine some day.
Fun fact: the hardware uuid is 00020003-0004-0005-0006-000700080009. Something tells me that’s somewhat less than universally unique.
openbsd
Runs openbsd fine. I think. It’s early, but all the hardware devices I care about work. The video is not the normal Intel chipset, but the powervr thing for which there’s no driver. X works with the vesa driver. dmesg at the bottom. I started by installing i386, but then went with amd64. Despite installing 4GB of RAM, openbsd (i386) only sees 3GB, because the last 1GB is remapped above the 4GB line to make room for PCI devices. Hence, the amd64 reinstall. I netbooted it, which requires changing an option in the bios to enable the option rom, but after that things went off without a hitch.
If I’m ever feeling nostalgic, hw.setperf is capable of scaling the cpu down to 266Mhz for that old time soekris experience. The first time I ran md5 -t, I thought I’d run md5 -tt by mistake. It really is 10x slower. Doesn’t appear to draw any less power at that setting, so it’ll be running full tilt in my setup. On amd64, hw.setperf is present, but doesn’t affect the cpu speed in any way. The processor is hyperthreaded, so openbsd sees four cpus but isn’t always so bright about scheduling them.
The upgrade went fairly smoothly. Set it up as a client on the current network, serving an internal internal network for testing. Then moving it into production just involved swapping the IP address range on the inside. Copied over my zone files, pf.conf, and some other things, but forgot about dhcpd.leases so when everything came up they had names, but not the right names. Oops, had to start over with blank zone files.
preliminary benchmarks
i386 md5 -t: 0.408 seconds. amd64 md5 -t: 0.399 seconds.
Tested i386 using tcpbench between two thinkpads, no special settings.
Direct connect: 952 Mbps udp, 936 Mbps tcp
NAT through the MX: 885 Mbps udp, 565 Mbps tcp
For comparison, some soekris 4801 numbers. md5 -t: 4.9 seconds. NAT: udp 95 Mbps, 15 Mbps tcp.
dmesg
OpenBSD 5.2-current (GENERIC.MP) #8: Tue Sep 4 02:25:25 MDT 2012
deraadt@i386.openbsd.org:/usr/src/sys/arch/i386/compile/GENERIC.MP
cpu0: Intel(R) Atom(TM) CPU D2550 @ 1.86GHz ("GenuineIntel" 686-class) 1.87 GHz
cpu0: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,
CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,
NXE,LONG,SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,LAHF
real mem = 3209125888 (3060MB)
avail mem = 3145781248 (3000MB)
mainbus0 at root
bios0 at mainbus0: AT/286+ BIOS, date 03/15/11, SMBIOS rev. 2.7 @ 0xe9380 (51 entries)
bios0: vendor American Megatrends Inc. version "4.6.5" date 05/30/2012
bios0: OEM 2550L2D-MX
acpi0 at bios0: rev 2
acpi0: sleep states S0 S1 S3 S4 S5
acpi0: tables DSDT FACP APIC MCFG HPET SSDT SSDT SSDT
acpi0: wakeup devices P0P8(S4) PS2K(S3) PS2M(S3) PXSX(S4) RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) USB0(S4) USB1(S4) USB2(S4) USB3(S4) USB7(S4) PWRB(S3)
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: apic clock running at 133MHz
cpu1 at mainbus0: apid 1 (application processor)
cpu1: Intel(R) Atom(TM) CPU D2550 @ 1.86GHz ("GenuineIntel" 686-class) 1.87 GHz
cpu1: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,
CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,
NXE,LONG,SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,LAHF
cpu2 at mainbus0: apid 2 (application processor)
cpu2: Intel(R) Atom(TM) CPU D2550 @ 1.86GHz ("GenuineIntel" 686-class) 1.87 GHz
cpu2: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,
CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,
NXE,LONG,SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,LAHF
cpu3 at mainbus0: apid 3 (application processor)
cpu3: Intel(R) Atom(TM) CPU D2550 @ 1.86GHz ("GenuineIntel" 686-class) 1.87 GHz
cpu3: FPU,V86,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,
CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,
NXE,LONG,SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,LAHF
ioapic0 at mainbus0: apid 4 pa 0xfec00000, version 20, 24 pins
acpimcfg0 at acpi0 addr 0xe0000000, bus 0-255
acpihpet0 at acpi0: 14318179 Hz
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 1 (RP01)
acpiprt2 at acpi0: bus -1 (RP02)
acpiprt3 at acpi0: bus 2 (RP03)
acpiprt4 at acpi0: bus 3 (RP04)
acpiec0 at acpi0: Failed to read resource settings
acpicpu0 at acpi0: C1
acpicpu1 at acpi0: C1
acpicpu2 at acpi0: C1
acpicpu3 at acpi0: C1
acpipwrres0 at acpi0: FN00
acpitz0 at acpi0: critical temperature is 100 degC
acpibat0 at acpi0: BAT0 not present
acpibat1 at acpi0: BAT1 not present
acpibtn0 at acpi0: PWRB
acpiac0 at acpi0: AC unit offline
acpibtn1 at acpi0: SLPB
acpibtn2 at acpi0: LID0
acpivideo0 at acpi0: GFX0
acpivout0 at acpivideo0: DD02
bios0: ROM list: 0xc0000/0x10000!
pci0 at mainbus0 bus 0: configuration mode 1 (bios)
pchb0 at pci0 dev 0 function 0 vendor "Intel", unknown product 0x0bf3 rev 0x03
vga1 at pci0 dev 2 function 0 vendor "Intel", unknown product 0x0be2 rev 0x09
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
intagp at vga1 not configured
azalia0 at pci0 dev 27 function 0 "Intel 82801GB HD Audio" rev 0x02: msi
azalia0: codecs: Realtek ALC662, Intel/0x2880, using Realtek ALC662
audio0 at azalia0
ppb0 at pci0 dev 28 function 0 "Intel 82801GB PCIE" rev 0x02: apic 4 int 16
pci1 at ppb0 bus 1
bge0 at pci1 dev 0 function 0 "Broadcom BCM57788" rev 0x01, BCM57780 A1 (0x57780001): apic 4 int 16, address 00:e0:b6:15:9a:f4
brgphy0 at bge0 phy 1: BCM57780 10/100/1000baseT PHY, rev. 1
ppb1 at pci0 dev 28 function 2 "Intel 82801GB PCIE" rev 0x02: apic 4 int 18
pci2 at ppb1 bus 2
bge1 at pci2 dev 0 function 0 "Broadcom BCM57788" rev 0x01, BCM57780 A1 (0x57780001): apic 4 int 18, address 00:e0:b6:15:9a:f5
brgphy1 at bge1 phy 1: BCM57780 10/100/1000baseT PHY, rev. 1
ppb2 at pci0 dev 28 function 3 "Intel 82801GB PCIE" rev 0x02: apic 4 int 19
pci3 at ppb2 bus 3
vendor "Renesas", unknown product 0x0015 (class serial bus subclass USB, rev 0x02) at pci3 dev 0 function 0 not configured
uhci0 at pci0 dev 29 function 0 "Intel 82801GB USB" rev 0x02: apic 4 int 23
uhci1 at pci0 dev 29 function 1 "Intel 82801GB USB" rev 0x02: apic 4 int 19
uhci2 at pci0 dev 29 function 2 "Intel 82801GB USB" rev 0x02: apic 4 int 18
uhci3 at pci0 dev 29 function 3 "Intel 82801GB USB" rev 0x02: apic 4 int 16
ehci0 at pci0 dev 29 function 7 "Intel 82801GB USB" rev 0x02: apic 4 int 23
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
ppb3 at pci0 dev 30 function 0 "Intel 82801BAM Hub-to-PCI" rev 0xe2
pci4 at ppb3 bus 4
pcib0 at pci0 dev 31 function 0 "Intel NM10 LPC" rev 0x02
ahci0 at pci0 dev 31 function 2 "Intel 82801GR AHCI" rev 0x02: msi, AHCI 1.1
scsibus0 at ahci0: 32 targets
sd0 at scsibus0 targ 0 lun 0: <ATA, Hitachi HTS54251, BBCA> SCSI3 0/direct fixed naa.5000cca531e7ba7c
sd0: 152627MB, 512 bytes/sector, 312581808 sectors
ichiic0 at pci0 dev 31 function 3 "Intel 82801GB SMBus" rev 0x02: apic 4 int 19
iic0 at ichiic0
spdmem0 at iic0 addr 0x51: 4GB DDR3 SDRAM PC3-12800 SO-DIMM
usb1 at uhci0: USB revision 1.0
uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb2 at uhci1: USB revision 1.0
uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb3 at uhci2: USB revision 1.0
uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb4 at uhci3: USB revision 1.0
uhub4 at usb4 "Intel UHCI root hub" rev 1.00/1.00 addr 1
isa0 at pcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
lpt0 at isa0 port 0x378/4 irq 7
wbsio0 at isa0 port 0x2e/2: W83627DHG-P rev 0x73
lm1 at wbsio0 port 0xa00/8: W83627DHG
npx0 at isa0 port 0xf0/16: reported by CPUID; using exception 16
mtrr: Pentium Pro MTRR support
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
root on sd0a (db8f609501e00b0c.a) swap on sd0b dump on sd0b
OpenBSD 5.2-current (GENERIC.MP) #10: Tue Sep 4 02:08:04 MDT 2012
deraadt@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP
real mem = 4282286080 (4083MB)
avail mem = 4145868800 (3953MB)
mainbus0 at root
bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xe9380 (51 entries)
bios0: vendor American Megatrends Inc. version "4.6.5" date 05/30/2012
bios0: OEM 2550L2D-MX
acpi0 at bios0: rev 2
acpi0: sleep states S0 S1 S3 S4 S5
acpi0: tables DSDT FACP APIC MCFG HPET SSDT SSDT SSDT
acpi0: wakeup devices P0P8(S4) PS2K(S3) PS2M(S3) PXSX(S4) RP01(S4) PXSX(S4) RP02(S4) PXSX(S4) RP03(S4) PXSX(S4) RP04(S4) USB0(S4) USB1(S4) USB2(S4) USB3(S4) USB7(S4) PWRB(S3)
acpitimer0 at acpi0: 3579545 Hz, 24 bits
acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat
cpu0 at mainbus0: apid 0 (boot processor)
cpu0: Intel(R) Atom(TM) CPU D2550 @ 1.86GHz, 1862.29 MHz
cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,
CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,
SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,NXE,LONG,LAHF
cpu0: 512KB 64b/line 8-way L2 cache
cpu0: apic clock running at 133MHz
cpu1 at mainbus0: apid 1 (application processor)
cpu1: Intel(R) Atom(TM) CPU D2550 @ 1.86GHz, 1862.00 MHz
cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,
CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,
SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,NXE,LONG,LAHF
cpu1: 512KB 64b/line 8-way L2 cache
cpu2 at mainbus0: apid 2 (application processor)
cpu2: Intel(R) Atom(TM) CPU D2550 @ 1.86GHz, 1862.00 MHz
cpu2: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,
CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,
SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,NXE,LONG,LAHF
cpu2: 512KB 64b/line 8-way L2 cache
cpu3 at mainbus0: apid 3 (application processor)
cpu3: Intel(R) Atom(TM) CPU D2550 @ 1.86GHz, 1862.00 MHz
cpu3: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,
CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,
SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,NXE,LONG,LAHF
cpu3: 512KB 64b/line 8-way L2 cache
ioapic0 at mainbus0: apid 4 pa 0xfec00000, version 20, 24 pins
acpimcfg0 at acpi0 addr 0xe0000000, bus 0-255
acpihpet0 at acpi0: 14318179 Hz
acpiprt0 at acpi0: bus 0 (PCI0)
acpiprt1 at acpi0: bus 1 (RP01)
acpiprt2 at acpi0: bus -1 (RP02)
acpiprt3 at acpi0: bus 2 (RP03)
acpiprt4 at acpi0: bus 3 (RP04)
acpiec0 at acpi0: Failed to read resource settings
acpicpu0 at acpi0: C1
acpicpu1 at acpi0: C1
acpicpu2 at acpi0: C1
acpicpu3 at acpi0: C1
acpipwrres0 at acpi0: FN00
acpitz0 at acpi0: critical temperature is 100 degC
acpibat0 at acpi0: BAT0 not present
acpibat1 at acpi0: BAT1 not present
acpibtn0 at acpi0: PWRB
acpiac0 at acpi0: AC unit offline
acpibtn1 at acpi0: SLPB
acpibtn2 at acpi0: LID0
acpivideo0 at acpi0: GFX0
acpivout0 at acpivideo0: DD02
pci0 at mainbus0 bus 0
pchb0 at pci0 dev 0 function 0 vendor "Intel", unknown product 0x0bf3 rev 0x03
vga1 at pci0 dev 2 function 0 vendor "Intel", unknown product 0x0be2 rev 0x09
wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation)
wsdisplay0: screen 1-5 added (80x25, vt100 emulation)
intagp at vga1 not configured
azalia0 at pci0 dev 27 function 0 "Intel 82801GB HD Audio" rev 0x02: msi
azalia0: codecs: Realtek ALC662, Intel/0x2880, using Realtek ALC662
audio0 at azalia0
ppb0 at pci0 dev 28 function 0 "Intel 82801GB PCIE" rev 0x02: msi
pci1 at ppb0 bus 1
bge0 at pci1 dev 0 function 0 "Broadcom BCM57788" rev 0x01, BCM57780 A1 (0x57780001): apic 4 int 16, address 00:e0:b6:15:9a:f4
brgphy0 at bge0 phy 1: BCM57780 10/100/1000baseT PHY, rev. 1
ppb1 at pci0 dev 28 function 2 "Intel 82801GB PCIE" rev 0x02: msi
pci2 at ppb1 bus 2
bge1 at pci2 dev 0 function 0 "Broadcom BCM57788" rev 0x01, BCM57780 A1 (0x57780001): apic 4 int 18, address 00:e0:b6:15:9a:f5
brgphy1 at bge1 phy 1: BCM57780 10/100/1000baseT PHY, rev. 1
ppb2 at pci0 dev 28 function 3 "Intel 82801GB PCIE" rev 0x02: msi
pci3 at ppb2 bus 3
vendor "Renesas", unknown product 0x0015 (class serial bus subclass USB, rev 0x02) at pci3 dev 0 function 0 not configured
uhci0 at pci0 dev 29 function 0 "Intel 82801GB USB" rev 0x02: apic 4 int 23
uhci1 at pci0 dev 29 function 1 "Intel 82801GB USB" rev 0x02: apic 4 int 19
uhci2 at pci0 dev 29 function 2 "Intel 82801GB USB" rev 0x02: apic 4 int 18
uhci3 at pci0 dev 29 function 3 "Intel 82801GB USB" rev 0x02: apic 4 int 16
ehci0 at pci0 dev 29 function 7 "Intel 82801GB USB" rev 0x02: apic 4 int 23
usb0 at ehci0: USB revision 2.0
uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1
ppb3 at pci0 dev 30 function 0 "Intel 82801BAM Hub-to-PCI" rev 0xe2
pci4 at ppb3 bus 4
pcib0 at pci0 dev 31 function 0 "Intel NM10 LPC" rev 0x02
ahci0 at pci0 dev 31 function 2 "Intel 82801GR AHCI" rev 0x02: msi, AHCI 1.1
scsibus0 at ahci0: 32 targets
sd0 at scsibus0 targ 0 lun 0: <ATA, Hitachi HTS54251, BBCA> SCSI3 0/direct fixed naa.5000cca531e7ba7c
sd0: 152627MB, 512 bytes/sector, 312581808 sectors
ichiic0 at pci0 dev 31 function 3 "Intel 82801GB SMBus" rev 0x02: apic 4 int 19
iic0 at ichiic0
spdmem0 at iic0 addr 0x50: 4GB DDR3 SDRAM PC3-12800 SO-DIMM
usb1 at uhci0: USB revision 1.0
uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb2 at uhci1: USB revision 1.0
uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb3 at uhci2: USB revision 1.0
uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1
usb4 at uhci3: USB revision 1.0
uhub4 at usb4 "Intel UHCI root hub" rev 1.00/1.00 addr 1
isa0 at pcib0
isadma0 at isa0
com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo
pckbc0 at isa0 port 0x60/5
pckbd0 at pckbc0 (kbd slot)
pckbc0: using irq 1 for kbd slot
wskbd0 at pckbd0: console keyboard, using wsdisplay0
pcppi0 at isa0 port 0x61
spkr0 at pcppi0
lpt0 at isa0 port 0x378/4 irq 7
wbsio0 at isa0 port 0x2e/2: W83627DHG-P rev 0x73
lm1 at wbsio0 port 0xa00/8: W83627DHG
mtrr: Pentium Pro MTRR support
vscsi0 at root
scsibus1 at vscsi0: 256 targets
softraid0 at root
scsibus2 at softraid0: 256 targets
root on sd0a (db8f609501e00b0c.a) swap on sd0b dump on sd0b