you have reached the official homepage of freeRouter. it is mostly yet another
routing/forwarding stack made by some network/electrical-engineers for you all.
freeRouter is a free, open source router os process.
it speaks routing protocols, and (re)encapsulates packets on interfaces.
(a huge list of encapsulation and routing test cases can be found under self-test page)
since it handles packets itself, it is independent of underlaying os capabilities.
(it can export forwarding tables to xdp, dpdk or hardware switches via openflow or p4lang)
these different forwarders could be stacked and the backplane protocol is mpls and the outer
mpls label selects the stack member and the inner label selects the service of the packet. it means that every regular port could be configured to be a stack port or a user port and the
stack could be arbitrary long without the need to do any packet rewrite as the packet travelses
the stack members. similar idea seen these days in the mpls segment routing in the telco scene.
since it is an unprivilegized process, it receives and sends packets through udp sockets.
(it means that internet can be used as backplane for router processes)
there are external, privileged processes that place traffic to these udp sockets.
the command line tries to mimic the industry standards with one exception:
no global routing table: every routed interface must be in a virtual routing table.
positive side effect: there are no vrf-awareness questions.
connectivity tests executed on a network of virtual routers
and these test results are compared to predefined values.
when a feature introduced, test cases are created for it.
before releasing a version, all the test cases have to pass.
these also serve as a guide about how to configure features.
summary of features
forwarding: ipv4, ipv6, ipx, mpls, nsh, layer2, irb, atom, eompls, vpls, evpn
routing protocols: ospf, isis, bgp, rip, eigrp, rift, babel, olsr, pim, msdp
lsp support: p2p, p2mp, mp2mp built by bgp, ldp, rsvp-te, sr, sr-te, bier, polka
crypto: macsec, ipsec, ikev1, ikev2, tls, dtls, ssh, openvpn, wireguard, sgt
tunnel: gre, ipip, l2tp, pptp, lisp, geneve, nvgre, vxlan, etherip, amt
encapsulation: ethernet, vlan, ppp, framerelay, pwether, virtppp, hairpin
misc: acl, qos, nat, pbr, srv6, vrrp, hsrp, inspect, 6to4, rpl, tunnel, vpdn, pcep
read papers or usage tips
browse source view signature
contact author read greetings
read design testing or releasing
view some screenshots, the sw, ovs or p4api
tests used to compare various dataplanes,
tests against ios-xe, ios-xr, junos, frrouting.
may look at pvrp lsrp sdwan community demo captures rfcs
rare docs blog youtube reddit twitter email chat github
try online or offline demo
download binary or source
get ova vmdk qcow2 gns3a or
iso for x86-64 i686 arm32 arm64 ppc64 mips64 risc64
last but not least the portable hotspot (serial console, virtio nic, 1vcpu, 1gb ram)
one-line installer to a fresh debian sid:
wget freertr.org/install.sh ; sudo bash install.sh
activate external forwarding:
test hwext path /rtr/rtr- dataplane p4emu
(just press y)
(there were 2 predecessor projects called BugOS with similar ideas
under the hood, nowadays these runs fine on any freeRTR installation)