freeRouter is a routerOS process.
it means freeRouter speaks routing protocols, and reencapsulates packets on interfaces.
(a huge list of encapsulation and routing test cases can be found under self-test results)
since it is an unprivilegized process, it receives and sends packets through sockets.
there are external, privileged processes that place traffic to these sockets.
(it means that internet can be used as backplane for router processes)
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)
complex self-tests: connectivity tests executed on a network of virtual routers
and these test results are compared to predefined values.