Why Soft Router

There are a great many of choices for family users to buy a router, or family gateway. Most family gateways integrates router, switch and access point functions into one devices. They're also easy to setup within several clicks, and works well for most target users. So under this circumstances, why do we need soft router?
For one thing common is performance. Consumption-level routers are often equipped with 8~16 MiB flash ROM and 16~256 MiB RAM. It is a common and sufficient combination for running eCOS, vxWorks and embedded Linux on proper SoCs (which usually over MIPS architect). If you run LEDE, OpenWRT or most open-source systems on them, however, things are getting different.

Hardware Choice and Soft Router Build

I have tried OPNSense(a community fork of pfSense), basically it is a very powerful and flexible router-oriented system. Yet, LEDE or OpenWRT is more simple, familiar with, and it sufficient for personal or home use, and even for small enterprise. So, I finally choose to build LEDE for x86/64 environment[1] and use it as my soft router system. For running the system, since I've got an ESXi server, I just need to run LEDE in an new VM, and assign ports into it.
Besides, most of the upper-mentioned system supports wired connections better than wireless connections. This is normal, and you could find that professional routers are mostly wired only. For wireless solutions, access points (AP) are commonly used, which are often designed to work under the control of access point controllers (AC). For example, at home I used TP-Link AC-200 along with 5 TL-AP1200I-PoE in-wall APs for wireless access, and an HP ProCurve 2910-al-24G-PoE+ swtich for switching and PoE power source. But this time, I'm demonstring with a regular homeuse gateway running in AP/switch mode to provide Wi-Fi access. Most homeuse-oriented gateway and routers can be set to AP mode via Web GUI, or simply plug the wire into a LAN port instead of the WAN port.

Network Topology

Let me show my network topology on my homelab server first.


  1. My LEDE build is named Sakuragawa Comm, whose name is identical to it's parent project Sakuragawa Comm or Sakuragawa Net ↩︎