# Building a testbed for Open/R

I’ve been spending some time looking into Open/R, the distributed key/value store disguised as IP routing software developed by Facebook. If you haven’t heard about it watch Petr Lapukhov’s talk to learn about the story behind it as well as the technical details. Open/R was open sourced in November 2017, yet as of today Facebook’s own emulator is still to be released. Therefore I had to build a small lab environment to study the “live object”.

The nodes R1, R2, R3 (obviously) act as routers. The node named CMDR is the management station which has breeze, Open/R’s management binary installed.

In this Bitbucket repo you can find pre-compiled Open/R binaries along with the required libraries for Ubuntu 16.04 (all of this is based on arbitrarily chosen commit 68c20f3fefd6ad8524ecf64c7c28303705ee136b). Also included is the Vagrantfile which provisions all the VMs like in the diagram above. Open/R config is provided as command line arguments via the file /etc/rc.local.

For this to work you have to create three Host-Only networks in VirtualBox and edit the variables ($segment_a etc.) so the names fit to your local environment. Please note that I had to install the vagrant plugin vagrant-vbguest to get shared folders to work which may or may not be dependent on your OS, VirtualBox version etc.) After provisioning and launching the VMs using vagrant up --parallel enter CMDR’s shell using vagrant ssh CMDR. From there you can interact with the routers using their hostname like this vagrant@CMDR:~$ breeze --host r01 kvstore nodes
Node    V6-Loopback                        V4-Loopback
------  ---------------------------------  -------------
* R01   2001:db8:ffff:ffff::4b4a:a633/128  N/A
> R02   2001:db8:ffff:ffff::98f:76a0/128   N/A
> R03   2001:db8:ffff:ffff::4a9:6c08/128   N/A

Open/R is incredibly well documented so if you got this far you will certainly find your way around. If you try it out I’d certainly be interested in hearing about your use-cases and overall experiences with this software.