OpenWRT on Ubiquity EdgeRouter Pro


Getting to the Bootloader-Prompt

  • Get a RJ45-Console-USB Cable
  • Create a USB-Stick with a single FAT32 partition (32MB will be enough)
  • Download er-initramfs-kernel.bin from http://downloads.openwrt.org/releases/18.06.2/targets/octeon/generic/ (for OpenWRT Version 18.06.02) onto the USB-Stick – the Filename will be openwrt-18.06.2-octeon-er-initramfs-kernel.bin
  • Unplug the EdgeRouter's Power Cord
  • Connect the Console-Cable
  • Start a Terminal-Client (8N1 115200 Baud), for example by running screen /dev/ttySX 115200
  • Plug in the Power Cord
  • Immediatly start hitting keys on your Terminal-Window
  • If you see Hit any key to stop autoboot: 0 and the EdgeRouter continues to boot, you have been too slow. Try again by unplugging/replugging the power cord again. I took 3 or 4 turns, because it literally waits 0 seconds before continuing to boot.
  • You should now be greeted with a Bootloader-Prompt Octeon ubnt_e200#

Booting the Install-Environment

Read the initramfs into RAM and boot it lie this:

Octeon ubnt_e200# usb start
(Re)start USB...
USB:   USB EHCI 1.00
scanning bus for devices... 2 USB Device(s) found
       scanning bus for storage devices... 1 Storage Device(s) found


Octeon ubnt_e200# usb part 0

Partition Map for USB device 0  --   Partition Type: DOS

Partition     Start Sector     Num Sectors     Type
    1                 2048          262144       b


Octeon ubnt_e200# fatload usb 0:1 0x20000000 openwrt-18.06.2-octeon-er-initramfs-kernel.bin
reading openwrt-18.06.2-octeon-er-initramfs-kernel.bin

14532752 bytes read


Octeon ubnt_e200# bootoctlinux 0 numcores=2 endbootargs mem=0

Now a minimal OpenWRT Environment boots from RAM. Wait until the Boot finishes and hit Enter. It will look similar to this, but probably some of the Bootlog will be mixed with the Prompt output.

BusyBox v1.30.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r9669-94ffb7b
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@OpenWrt:/# 

Permanent Installation

The minimal Environment already initialized the Network like most OpenWRT variants do:

1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel master br-lan state DOWN qlen 1000
    link/ether 44:d9:e7:41:9d:68 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP qlen 1000
    link/ether 44:d9:e7:41:9d:69 brd ff:ff:ff:ff:ff:ff
    inet 192.168.178.84/24 brd 192.168.178.255 scope global eth1
       valid_lft forever preferred_lft forever
    inet6 fe80::46d9:e7ff:fe41:9d69/64 scope link 
       valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 44:d9:e7:41:9d:6a brd ff:ff:ff:ff:ff:ff
5: eth3: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 44:d9:e7:41:9d:6b brd ff:ff:ff:ff:ff:ff
6: eth4: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 44:d9:e7:41:9d:6c brd ff:ff:ff:ff:ff:ff
7: eth5: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 44:d9:e7:41:9d:6d brd ff:ff:ff:ff:ff:ff
8: eth6: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 44:d9:e7:41:9d:6e brd ff:ff:ff:ff:ff:ff
9: eth7: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN qlen 1000
    link/ether 44:d9:e7:41:9d:6f brd ff:ff:ff:ff:ff:ff
10: br-lan: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN qlen 1000
    link/ether 44:d9:e7:41:9d:68 brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.1/24 brd 192.168.1.255 scope global br-lan
       valid_lft forever preferred_lft forever
    inet6 fdcf:f3c0:d385::1/60 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::46d9:e7ff:fe41:9d68/64 scope link 
       valid_lft forever preferred_lft forever

It chose eth0 as LAN-Interface in a Bridge with the 192.168.1.1 static IP and eth1 as WAN with an DHCP-Configured IP.

Connecting your Home/Work Network to eth1 should have it take an IP from there and gain Internet connectivity. Connecting yourself to eth0 and configuring an IP in the 192.168.1.1/24 Network will give you SSH-Access to the Router. This Setup-Process is identical to nearly OpenWRT Systems and not explained further here.

After Setting up your SSH-Connection to the Router, download er-squashfs-sysupgrade.tar from http://downloads.openwrt.org/releases/18.06.2/targets/octeon/generic/ to your Computer and SCP it to the Router. The Filename will be openwrt-octeon-er-squashfs-sysupgrade.tar The minimal Environment does not support TLS and cannot install Packages, which is why we cannot download the File directly. Another option would be to transfer that File to the Router via the USB-Stick.

Now you can flash the downloaded Image to the Router by calling sysupgrade:

root@OpenWrt:/# sysupgrade openwrt-octeon-er-squashfs-sysupgrade.tar
Image not in /tmp, copying...
Image metadata not found
Cannot save config while running from ramdisk.
Commencing upgrade. Closing all shell sessions.
Watchdog handover: fd=3
- watchdog -
killall: telnetd: no process killed
Sending TERM to remaining processes ... udhcpc odhcp6c ntpd ubusd logd dnsmasq netifd odhcpd
Sending KILL to remaining processes ...
Performing system upgrade...
flashing kernel to /dev/mmcblk0p1
flashing rootfs to /dev/mmcblk0p2
464+1 records in
464+1 records out
Upgrade completed
Rebooting system...
umount: can't unmount /dev: Resource busy
umount: can't unmount /tmp: Resource busy
umount: can't unmount /: Invalid argument
[  576.687220] sd 0:0:0:0: [sda] Synchronizing SCSI cache
[  576.694589] reboot: Restarting system
Jumping to start of image at address 0xbfca0000

The System now starts a Reboot into the newly flashed OpenWRT System.

Bootlog

Here's the Bootlog of the freshly flashed OpenWRT System:

U-Boot 2012.04.01 (UBNT Build Version: e200_001_1e4df) (Jul 27 2018 - 04:38:45)

Skipping PCIe port 0 BIST, in EP mode, can't tell if clocked.
Skipping PCIe port 1 BIST, reset not done. (port not configured)
BIST check passed.
UBNT_E200 r1:0, r2:17, serial #: 44D9E7419D68
MPR 13-00317-17
Core clock: 1000 MHz, IO clock: 600 MHz, DDR clock: 533 MHz (1066 Mhz DDR)
Base DRAM address used by u-boot: 0x8f800000, size: 0x800000
DRAM: 2 GiB
Clearing DRAM...... done
Flash: 8 MiB
Net:   octeth0, octeth1, octeth2, octeth3, octeth4, octeth5, octeth6, octeth7
MMC:   Octeon MMC/SD0: 0
USB:   USB EHCI 1.00
scanning bus for devices... 2 USB Device(s) found
Type the command 'usb start' to scan for USB storage devices.

Hit any key to stop autoboot:  0
reading vmlinux.64


7540880 bytes read
argv[2]: numcores=2
argv[3]: endbootargs
Allocating memory for ELF segment: addr: 0xffffffff81100000 (adjusted to: 0x1100000), size 0x1879ab0
## Loading big-endian Linux kernel with entry point: 0xffffffff8163cd80 ...
Bootloader: Done loading app on coremask: 0x3
Starting cores 0x3
[    0.000000] Linux version 4.14.106 (buildbot@slashdirt-03) (gcc version 7.4.0 (OpenWrt GCC 7.4.0 r9669-94ffb7b)) #0 SMP Thu Mar 21 16:07:52 2019
[    0.000000] Skipping L2 locking due to reduced L2 cache size
[    0.000000] CVMSEG size: 2 cache lines (256 bytes)
[    0.000000] bootconsole [early0] enabled
[    0.000000] CPU0 revision is: 000d9301 (Cavium Octeon II)
[    0.000000] Checking for the multiply/shift bug... no.
[    0.000000] Checking for the daddiu bug... no.
[    0.000000] Determined physical RAM map:
[    0.000000]  memory: 000000000c400000 @ 0000000002a00000 (usable)
[    0.000000]  memory: 0000000000c00000 @ 000000000f200000 (usable)
[    0.000000]  memory: 000000006f800000 @ 0000000020000000 (usable)
[    0.000000]  memory: 0000000001879ab0 @ 0000000001100000 (usable)
[    0.000000] Wasting 243712 bytes for tracking 4352 unused pages
[    0.000000] Initrd not found or empty - disabling initrd
[    0.000000] Using passed Device Tree.
[    0.000000] software IO TLB: mapped [mem 0x02a1f000-0x02a5f000] (0MB)
[    0.000000] Primary instruction cache 37kB, virtually tagged, 37 way, 8 sets, linesize 128 bytes.
[    0.000000] Primary data cache 32kB, 32-way, 8 sets, linesize 128 bytes.
[    0.000000] Zone ranges:
[    0.000000]   DMA32    [mem 0x0000000000000000-0x00000000efffffff]
[    0.000000]   Normal   empty
[    0.000000] Movable zone start for each node
[    0.000000] Early memory node ranges
[    0.000000]   node   0: [mem 0x0000000000000000-0x0000000002978fff]
[    0.000000]   node   0: [mem 0x0000000002a00000-0x000000000edfffff]
[    0.000000]   node   0: [mem 0x000000000f200000-0x000000000fdfffff]
[    0.000000]   node   0: [mem 0x0000000020000000-0x000000008f7fffff]
[    0.000000] Initmem setup node 0 [mem 0x0000000000000000-0x000000008f7fffff]
[    0.000000] random: get_random_bytes called from start_kernel+0x90/0x504 with crng_init=0
[    0.000000] percpu: Embedded 19 pages/cpu @8000000002a6c000 s39600 r8192 d30032 u77824
[    0.000000] Built 1 zonelists, mobility grouping on.  Total pages: 513451
[    0.000000] Kernel command line: mtdparts=phys_mapped_flash:640k(boot0)ro,640k(boot1)ro,64k(eeprom)ro root=/dev/mmcblk0p2 rootfstype=squashfs,ext4 rootwait  console=ttyS0,115200
[    0.000000] PID hash table entries: 4096 (order: 3, 32768 bytes)
[    0.000000] Dentry cache hash table entries: 262144 (order: 9, 2097152 bytes)
[    0.000000] Inode-cache hash table entries: 131072 (order: 8, 1048576 bytes)
[    0.000000] Memory: 2007504K/2082276K available (5395K kernel code, 361K rwdata, 1308K rodata, 1300K init, 16678K bss, 74772K reserved, 0K cma-reserved)
[    0.000000] SLUB: HWalign=128, Order=0-3, MinObjects=0, CPUs=2, Nodes=1
[    0.000000] Hierarchical RCU implementation.
[    0.000000]  CONFIG_RCU_FANOUT set to non-default value of 32
[    0.000000]  RCU restricting CPUs from NR_CPUS=16 to nr_cpu_ids=2.
[    0.000000] RCU: Adjusting geometry for rcu_fanout_leaf=16, nr_cpu_ids=2
[    0.000000] NR_IRQS: 127
[    5.036146] clocksource: OCTEON_CVMCOUNT: mask: 0xffffffffffffffff max_cycles: 0x1cd42e4dffb, max_idle_ns: 881590591483 ns
[    5.047070] Calibrating delay loop (skipped) preset value.. 2000.00 BogoMIPS (lpj=4000000)
[    5.055314] pid_max: default: 32768 minimum: 301
[    5.059981] Mount-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    5.066608] Mountpoint-cache hash table entries: 4096 (order: 3, 32768 bytes)
[    5.074089] Checking for the daddi bug... no.
[    5.078709] Hierarchical SRCU implementation.
[    5.083250] smp: Bringing up secondary CPUs ...
[    5.087894] SMP: Booting CPU01 (CoreId  1)...
[    5.092164] CPU1 revision is: 000d9301 (Cavium Octeon II)
[    5.092253] smp: Brought up 1 node, 2 CPUs
[    5.103770] clocksource: jiffies: mask: 0xffffffff max_cycles: 0xffffffff, max_idle_ns: 7645041785100000 ns
[    5.113377] futex hash table entries: 512 (order: 4, 65536 bytes)
[    5.119788] NET: Registered protocol family 16
[    5.130878] PCIe: Port 0 in endpoint mode, skipping.
[    5.135698] PCIe: Initializing port 1
[    5.150333] PCIe: Port 1 stuck in reset, skipping.
[    5.160818] SCSI subsystem initialized
[    5.164588] usbcore: registered new interface driver usbfs
[    5.169975] usbcore: registered new interface driver hub
[    5.175262] usbcore: registered new device driver usb
[    5.180412] PCI host bridge to bus 0000:00
[    5.184357] pci_bus 0000:00: root bus resource [mem 0x1000000000000]
[    5.190695] pci_bus 0000:00: root bus resource [io  0x0000]
[    5.196262] pci_bus 0000:00: root bus resource [??? 0x00000000 flags 0x0]
[    5.203040] pci_bus 0000:00: No busn resource found for root bus, will use [bus 00-ff]
[    5.211546] clocksource: Switched to clocksource OCTEON_CVMCOUNT
[    5.217892] NET: Registered protocol family 2
[    5.222595] TCP established hash table entries: 16384 (order: 5, 131072 bytes)
[    5.229827] TCP bind hash table entries: 16384 (order: 7, 524288 bytes)
[    5.236601] TCP: Hash tables configured (established 16384 bind 16384)
[    5.243053] UDP hash table entries: 1024 (order: 4, 98304 bytes)
[    5.249035] UDP-Lite hash table entries: 1024 (order: 4, 98304 bytes)
[    5.255584] NET: Registered protocol family 1
[    5.260603] Crashlog allocated RAM at address 0x3f00000
[    5.266018] workingset: timestamp_bits=62 max_order=19 bucket_order=0
[    5.276365] squashfs: version 4.0 (2009/01/31) Phillip Lougher
[    5.282182] jffs2: version 2.2 (NAND) (SUMMARY) (LZMA) (RTIME) (CMODE_PRIORITY) (c) 2001-2006 Red Hat, Inc.
[    5.293399] io scheduler noop registered
[    5.297180] io scheduler deadline registered (default)
[    5.302667] octeon_gpio 1070000000800.gpio-controller: OCTEON GPIO driver probed.
[    5.310189] Serial: 8250/16550 driver, 16 ports, IRQ sharing enabled
[    5.317698] console [ttyS0] disabled
[    5.321146] 1180000000800.serial: ttyS0 at MMIO 0x1180000000800 (irq = 34, base_baud = 37500000) is a OCTEON
[    5.327535] random: fast init done
[    5.334337] console [ttyS0] enabled
[    5.334337] console [ttyS0] enabled
[    5.341302] bootconsole [early0] disabled
[    5.341302] bootconsole [early0] disabled
[    5.349524] 1180000000c00.serial: ttyS1 at MMIO 0x1180000000c00 (irq = 35, base_baud = 37500000) is a OCTEON
[    5.359632] octeon_rng octeon_rng: Octeon Random Number Generator
[    5.365842] cacheinfo: Failed to find cpu0 device node
[    5.371012] cacheinfo: Unable to detect cache hierarchy for CPU 0
[    5.379401] loop: module loaded
[    5.382915] of-flash 1f400000.nor: Can't get bank width from device tree
[    5.389795] libphy: mdio_octeon: probed
[    5.395047] mdio_octeon 1180000001800.mdio: Probed
[    5.399962] libphy: mdio_octeon: probed
[    5.404286] mdio_octeon 1180000001900.mdio: Probed
[    5.409286] libphy: Fixed MDIO Bus: probed
[    5.413492] ehci_hcd: USB 2.0 'Enhanced' Host Controller (EHCI) Driver
[    5.420046] ehci-pci: EHCI PCI platform driver
[    5.424544] ehci-platform: EHCI generic platform driver
[    5.429911] ehci-platform 16f0000000000.ehci: EHCI Host Controller
[    5.436136] ehci-platform 16f0000000000.ehci: new USB bus registered, assigned bus number 1
[    5.444585] ehci-platform 16f0000000000.ehci: irq 56, io mem 0x16f0000000000
[    5.467560] ehci-platform 16f0000000000.ehci: USB 2.0 started, EHCI 1.00
[    5.474678] hub 1-0:1.0: USB hub found
[    5.478478] hub 1-0:1.0: 2 ports detected
[    5.482782] ohci_hcd: USB 1.1 'Open' Host Controller (OHCI) Driver
[    5.489002] ohci-platform: OHCI generic platform driver
[    5.494351] ohci-platform 16f0000000400.ohci: Generic Platform OHCI controller
[    5.501614] ohci-platform 16f0000000400.ohci: new USB bus registered, assigned bus number 2
[    5.510041] ohci-platform 16f0000000400.ohci: irq 56, io mem 0x16f0000000400
[    5.579907] hub 2-0:1.0: USB hub found
[    5.583759] hub 2-0:1.0: 2 ports detected
[    5.588155] usbcore: registered new interface driver usb-storage
[    5.594216] octeon_wdt: Initial granularity 5 Sec
[    5.640913] Interface 0 has 4 ports (SGMII)
[    5.645172] Interface 1 has 4 ports (SGMII)
[    5.652668] NET: Registered protocol family 10
[    5.658544] Segment Routing with IPv6
[    5.662286] NET: Registered protocol family 17
[    5.666782] bridge: filtering via arp/ip/ip6tables is no longer available by default. Update your scripts to load br_netfilter if you need this.
[    5.679769] 8021q: 802.1Q VLAN Support v1.8
[    5.684120] Bootbus flash: Setting flash for 8MB flash at 0x1f400000
[    5.815553] usb 1-1: new high-speed USB device number 2 using ehci-platform
[    5.978304] usb-storage 1-1:1.0: USB Mass Storage device detected
[    5.984609] scsi host0: usb-storage 1-1:1.0
[    7.193508] scsi 0:0:0:0: Direct-Access     Intenso  Micro Line       1100 PQ: 0 ANSI: 4
[    7.203486] sd 0:0:0:0: [sda] 30533632 512-byte logical blocks: (15.6 GB/14.6 GiB)
[    7.212226] sd 0:0:0:0: [sda] Write Protect is off
[    7.218227] sd 0:0:0:0: [sda] Write cache: enabled, read cache: enabled, doesn't support DPO or FUA
[    7.235868]  sda: sda1 sda2
[    7.242976] sd 0:0:0:0: [sda] Attached SCSI removable disk
[    7.359000] phys_mapped_flash: Found 1 x16 devices at 0x0 in 8-bit bank. Manufacturer ID 0x0000c2 Chip ID 0x0000c9
[    7.369383] Amd/Fujitsu Extended Query Table at 0x0040
[    7.374559]   Amd/Fujitsu Extended Query version 1.1.
[    7.379632] phys_mapped_flash: Swapping erase regions for top-boot CFI table.
[    7.386790] number of CFI chips: 1
[    7.390221] 3 cmdlinepart partitions found on MTD device phys_mapped_flash
[    7.397119] Creating 3 MTD partitions on "phys_mapped_flash":
[    7.402888] 0x000000000000-0x0000000a0000 : "boot0"
[    7.408165] 0x0000000a0000-0x000000140000 : "boot1"
[    7.413429] 0x000000140000-0x000000150000 : "eeprom"
[    7.421255] OF: fdt: not creating '/sys/firmware/fdt': CRC check failed
[    7.428103] Waiting for root device /dev/mmcblk0p2...
[   15.111273] mmc0: new DDR MMC card at address 0001
[   15.116292] mmcblk0: mmc0:0001 SEM04G 3.69 GiB
[   15.120936] mmcblk0boot0: mmc0:0001 SEM04G partition 1 2.00 MiB
[   15.126977] mmcblk0boot1: mmc0:0001 SEM04G partition 2 2.00 MiB
[   15.133021] mmcblk0rpmb: mmc0:0001 SEM04G partition 3 2.00 MiB
[   15.139476]  mmcblk0: p1 p2
[   15.149487] VFS: Mounted root (squashfs filesystem) readonly on device 179:2.
[   15.157153] Freeing unused kernel memory: 1300K
[   15.161720] This architecture does not have kernel memory protection.
[   15.539155] init: Console is alive
[   15.542731] init: - watchdog -
[   15.720440] kmodloader: loading kernel modules from /etc/modules-boot.d/*
[   15.727372] kmodloader: done loading kernel modules from /etc/modules-boot.d/*
[   15.737426] init: - preinit -
[   16.161731] random: jshn: uninitialized urandom read (4 bytes read)
[   16.186479] random: jshn: uninitialized urandom read (4 bytes read)
[   16.205444] random: jshn: uninitialized urandom read (4 bytes read)
[   16.223782] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
Press the [f] key and hit [enter] to enter failsafe mode
Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
[   19.360223] mount_root: rootdisk overlay filesystem has not been formatted yet
[   19.508660] urandom_read: 1 callbacks suppressed
[   19.508665] random: mkfs.f2fs: uninitialized urandom read (16 bytes read)
[   19.520247] print_req_error: I/O error, dev loop0, sector 0
[   19.750560] random: crng init done
[   34.616942] F2FS-fs (loop0): Found nat_bits in checkpoint
[   34.689450] F2FS-fs (loop0): Mounted with checkpoint version = 3e14b327
[   34.696455] mount_root: overlay filesystem has not been fully initialized yet
[   34.703855] mount_root: switching to f2fs overlay
[   34.723355] urandom-seed: Seed file not found (/etc/urandom.seed)
[   34.776316] procd: - early -
[   34.779248] procd: - watchdog -
[   35.367618] procd: - watchdog -
[   35.370951] procd: - ubus -
[   35.443967] procd: - init -
Please press Enter to activate this console.
[   35.553184] kmodloader: loading kernel modules from /etc/modules.d/*
[   35.564121] ip6_tables: (C) 2000-2006 Netfilter Core Team
[   35.586627] nf_conntrack version 0.5.0 (16384 buckets, 65536 max)
[   35.610821] xt_time: kernel timezone is -0000
[   35.617987] PPP generic driver version 2.4.2
[   35.622748] NET: Registered protocol family 24
[   35.628404] kmodloader: done loading kernel modules from /etc/modules.d/*
[   38.977110] br-lan: port 1(eth0) entered blocking state
[   38.982370] br-lan: port 1(eth0) entered disabled state
[   38.987772] device eth0 entered promiscuous mode
[   39.036357] IPv6: ADDRCONF(NETDEV_UP): br-lan: link is not ready
[   39.066700] eth1: 1000 Mbps Full duplex, port 17, queue 17
[   39.072405] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready
[   40.091742] IPv6: ADDRCONF(NETDEV_CHANGE): eth1: link becomes ready


BusyBox v1.30.1 () built-in shell (ash)

  _______                     ________        __
 |       |.-----.-----.-----.|  |  |  |.----.|  |_
 |   -   ||  _  |  -__|     ||  |  |  ||   _||   _|
 |_______||   __|_____|__|__||________||__|  |____|
          |__| W I R E L E S S   F R E E D O M
 -----------------------------------------------------
 OpenWrt SNAPSHOT, r9669-94ffb7b
 -----------------------------------------------------
=== WARNING! =====================================
There is no root password defined on this device!
Use the[   35.575839] ip_tables: (C) 2000-2006 Netfilter Core Team
 "passwd" command to set up a new password
in order to prevent unauthorized SSH logins.
--------------------------------------------------
root@(none):/# 

Routing/NAT Performance

I testing with mono-directional iperf, Routing with Masquerading, from eth0 to eth1 with IPv4 IPs while having a ping running to the iperf Target from the same Machine.

In the default configuration I got - 0.4ms ping under idle-load - 600 MBit/s throughput - 25ms ping under max network-load

After enableing "Software Flow Offloading" in the LUCI GUI, the performance incresed: - 0.4ms ping under idle-load - 930 MBit/s throughput - 1.8ms ping under max network-load

Background

When a company scales, it's network and IT stack has to scale with it. A friend of mine is in the process of scaling his (blue collar) company from \~5 employees with only him doing office work up, probably having someone else doing office work too, storing lots and lots of pictures and documentation and maintaining separation between his private and his work networks.

Up until now his network basicly consisted of a single Fritz!Box providing a single network combined for private/work, a separate guest-network and some switches and WLAN-APs to distribute that.

While building his new Office he asked me for a better Solution. He wanted at least 3 separate networks: Work, Home and Guest. He wanted to have a GUI in his native Tounge (German) just to look at and maybe configure the one or the other thing. In the end, I'm just a friend and probably not available all the time.

I naturally suggested an OpenWRT router, probably a TP-Link Archer C7. It would probably be a little ugly in the 19" Rack we're planning, so I searched around for alternatives. Becaus I really like the Ubiquity UniFi Series I decided to give the EdgeRouter a try.

They have a really nice Form Factor, the Case is robust and nice to work and look at. Unfortunatly the Software is unintuitive and not really nice to use – neither for me but especially not for him. Flasing OpenWRT on the EdgeRouter gives me a System with 8 real Ethernet-Ports that can easily to whereever his company evolves with a nice GUI and complete userland.

Everyone is happy.