nucleo/freerouter
Project ID: 783
Description
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) 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.
Basically freeRtr is a control plane software that natively relies on UNIX UDP socket. Concretely, you can spawn an unlimited amount of router processes on the same host, and interconnect them via UNIX UDP sockets in order to implement a topology and simulate an entire network. This is freeRtr in its simplest form running in default mode. Please note that this installation is meant to demonstrate freeRtr UNIX socket forwarding capability. If you are considering switching high traffic rate such as 10G, it is advised to run freeRtr alongside a DPDK or P4 hardware dataplane.
Programmable dataplane P4, DPDK, XDP or TCPDUMP/libpcap are possible candidates.
Installation Instructions
Install base package freerouter, optional packages freerouter-native (tools pcapInt, p4dpdk, p4xdp, p4emu and other), freerouter-doc (examples of test configurations). For some configurations dpdk-tools and socat packages should be installed.
Modify config examples rtr-hw.txt, rtr-sw.txt in /etc/freerouter/, start freerouter.service (see also freerouter-native@.service for running native tools). Run "telnet localhost 2323" to get console. Alternatively copy files rtr-hw.txt, rtr-sw.txt to rtr1-hw.txt, rtr1-sw.txt, modify them and start freerouter@rtr1.service where service name matches filenames (useful for running multiple instances).
Configuration examples
Copy demo configs "cp /usr/share/doc/freerouter/demo/*txt /etc/freerouter/", set owner "chown freerouter:freerouter /etc/freerouter/*txt", start services "systemctl start freerouter@r1 freerouter@r2 freerouter@r3 freerouter@r4", run "telnet localhost 2001" to get r1 console, change port to 2002, 2003, 2004 for r2, r3, r4 instances.
See also p4dkdk, p4emu, p4xdp, p4xsk, p4mnl, p4urng and p4udp systemd service examples in /usr/share/doc/freerouter-native.
Active Releases
The following unofficial repositories are provided as-is by owner of this project. Contact the owner directly for bugs or issues (IE: not bugzilla).
Release | Architectures | Repo Download |
---|---|---|
openEuler 24.03_LTS | aarch64 (0)*, x86_64 (0)* | openEuler 24.03_LTS (16 downloads) |
* Total number of packages downloaded in the last seven days.