The main objective of [RARE / FreeRouter 101] series is to help you getting started with FreeRouter from scratch without any prior knowledge.
Requirement
Basic Linux/Unix knowledge
Basic networking knowledge
Overview
freeRouter is a free, open source router control plane software. For nostalgic and networkers from prehistoric era (like me), freeRouter besides Ethernet, is able to handle HDLC, X25, frame-relay, ATM encapsulation. Since it handles packets itself at the socket layer, it is independent of underlying Operation System capabilities. We will see in the next articles how freeRouter subtlety leverage this inherently independence to connect different data-plane such as OpenFlow, P4 and other possible data-plane that would appear in the near future.
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
Article objective
This article is meant to simply deploy 2 instances of freeRouter on the same fresh linux installed linux box. We are voluntary using freeRouter (freerouter.nop.hu) "raw" official repository in order to get familiar with the deployment manual process. Even if the deployment process is straightforward, it is not self explanatory for people non familiar with java/linux.
In order to simplify the deployment we have automated freeRouter daily builds on:
But let's get our "hand dirty" and follow the simple manual installation.
Diagram
[ #001 ] - Cookbook
In our example we will use a genuine debian stable image (buster) installed as a VirtualBox VM.
Start & connect your VM as root
Update your VM
apt-get update
apt-get upgrade
In this example, we won't recompile freeRouter so installing headless java runtime is enough. This set up is recommended for production environment in order to ensure minimal software footprint
Initiate IPv4 telnet from R1 -> R2 (inside freeRouter scope)
r1#telnet 1.1.1.2 23 /vrf v1
- connecting to 1.1.1.2 23
welcome
line ready
r2#
Initiate IPv6 telnet from R2 -> R1 (inside freeRouter scope)
r2#telnet 1234::1 /vrf v1
- connecting to 1234::1 23
welcome
line ready
r1#
Conclusion
In this article you:
had a brief introduction of freeRouter networking Swiss army knife
learn how to deploy 2 instances of freeRouter and interconnect them via 2 UNIX sockets on a VM guest running on VirtualBox
this setup is ideal, for network simulation encompassing hundreds of nodes, self contained in the same VM without interaction with the external world. (protocol experimentation, convergence test etc.)
[ #001 ] RARE/FreeRouter-101 - key take-away
FreeRouter is using UNIX socket in order to forward packet.
This is a key feature that will be leveraged to connect freeRouter control plane to any type of data-plane
In FreeRouter everything is in a VRF (so there is no global VRF)
This design choice has very positive consequences like: No VRF awareness questions,have multiple bgp processes for the same freeRouter instance (each bound to a different VRF)