This is not a proper HowTo, more of a “note to self” after having created a setup to test pimd issue #57. For these notes the following virtual topology, running on Ubuntu 15.10 with Linux 4.2 and Qemu 2.3.0, is used:

    .--------. net1 .----. net2 .----. net3 .----------.
    | Sender |------| R2 |------| R3 |------| Receiver |
    '--------'      '----'      '----'      '----------'

The networks between the boxes are actually Linux bridge devices (br), on which you may have to disable IGMP/MLD snooping to get pimd to run smoothly. Only R2 and R3 run FreeBSD v10.2, 64-bit. The net1, between sender and R2, and net3, between R3 and the receiver, are both setup using simple DHCP client. The Linux bridges have a DHCP server running. Only net2 between the two routers is static, using

FreeBSD Setup

You need a few things set up in FreeBSD before starting pimd.

In /boot/loader.conf add the following line to load the MROUTING kernel module:


If you want to serial console access to your FreeBSD, or run FreeBSD in Qemu (virt-manager), you may want to add the following lines as well to /boot/loader.conf:


In /etc/rc.conf there are several lines that need to be added, both to enable router/gateway mode and to enable RIP to resolve the unicast forwarding table. The Sender and Recieiver nodes, which run Ubuntu 14.04, employ Quagga ripd for this, but on FreeBSD we employ the god ‘ol routed :-)


Notice how we change the routed_flags from quiet mode! Now, for interop with the rest of the network we enable RIP v2 mode by adding the following line to /etc/gateways:


Download pimd

Next we need to download and build pimd. It is available on GitHub if you want the latest bleeding edge stuff, or use the latest tarball:

    tar xfz pimd-2.3.2.tar.gz
    cd pimd-2.3.2/

Running pimd

Now we can start pimd on both routers:

    ./pimd -c pimd.conf

After a while you should be able to see some interesting output in both

    ./pimd -r


    netstat -rn

See the OpenBSD HowTo for example output and troubleshooting.