After a LONG hiatus, I’m finally starting to work on my Open Source implementation of DMVPN, again. So far, I’ve started off by taking the OpenNHRP source code and building RPM files. I made no changes to the source code itself. Heck, I don’t even consider myself a developer. I just built the RPM binaries so that a person could build a DMVPN device without needing to have developer tools installed on the device itself. It should be a little more secure that way. :)

Currently, the RPM files are being built in a CentOS 6 x86_64 environment. However, if this is something that people like, I will entertain building the RPM’s for 32 bit environment or possibly deb packages for ubuntu / debian based environments.

The binary and source RPM’s are available right now! I’m still testing them to make sure everything is working properly.  You can get the package by installing the repository:

[root@server ~]# curl -o /etc/yum.repos.d/pgn.repo
[root@server ~]# yum search opennhrp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base:
 * extras:
 * updates:
============================================================ N/S Matched: opennhrp ============================================================
opennhrp.x86_64 : OpenNHRP implements NBMA Next Hop Resolution Protocol (as defined in RFC 2332). It makes it possible to create dynamic
                : multipoint VPN Linux router using NHRP, GRE and IPsec. It aims to be Cisco DMVPN compatible.

  Name and summary matches only, use "search all" for everything.
[root@server ~]# yum install opennhrp
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base:
 * extras:
 * updates:
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package opennhrp.x86_64 0:0.13.1-1.el6 will be installed
--> Processing Dependency: for package: opennhrp-0.13.1-1.el6.x86_64
--> Running transaction check
---> Package c-ares.x86_64 0:1.7.0-6.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

 Package                           Arch                            Version                                 Repository                     Size
 opennhrp                          x86_64                          0.13.1-1.el6                            pgn                            62 k
Installing for dependencies:
 c-ares                            x86_64                          1.7.0-6.el6                             base                           53 k

Transaction Summary
Install       2 Package(s)

Total download size: 115 k
Installed size: 230 k
Is this ok [y/N]: y
Downloading Packages:
(1/2): c-ares-1.7.0-6.el6.x86_64.rpm                                                                                    |  53 kB     00:00     
(2/2): opennhrp-0.13.1-1.el6.x86_64.rpm                                                                                 |  62 kB     00:00     
Total                                                                                                          203 kB/s | 115 kB     00:00     
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Warning: RPMDB altered outside of yum.
  Installing : c-ares-1.7.0-6.el6.x86_64                                                                                                   1/2 
  Installing : opennhrp-0.13.1-1.el6.x86_64                                                                                                2/2 
  Verifying  : opennhrp-0.13.1-1.el6.x86_64                                                                                                1/2 
  Verifying  : c-ares-1.7.0-6.el6.x86_64                                                                                                   2/2 

  opennhrp.x86_64 0:0.13.1-1.el6                                                                                                               

Dependency Installed:
  c-ares.x86_64 0:1.7.0-6.el6                                                                                                                  


Have fun! I look forward to getting an open source of a DMVPN implementation up and running soon! Leave a comment if you have any comments or questions.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on RedditEmail this to someone

After reading about the open source implementation of NHRP, I decided that I would play around with it a bit to see where it’s at, development wise. I have a VMWare Session of Ubuntu 9.04 (Server Edition) that I use to geek out on stuff like this. It’s nice, because at a click of a button I can have a default install, by reverting to my default snap shot.

I’ve determined that the packages that you need to install, on a default install of Ubuntu SE are:


Gcc, make, git, git-core, pkg-config, and libc-ares-dev are the packages required to compile openNHRP from source. They can probably be uninstalled after it’s been compiled. :)

Openssh-server is just used to admin the box remotely. It’s easier to do everything over ssh, rather than through the vm window.

Quagga is the routing software. It’s not required to install opennhrp, but I figured I might as well install it. Same goes for ipsec-tools.

Iproute2, which supports the GRE implementation, is installed by default, so we don’t need to worry about it.

I wrote a quick perl script to run on Ubuntu to check to see whether the packages are installed. If they aren’t it installs them via apt-get.


@software = ('openssh-server','ipsec-tools','racoon','quagga','gcc',

foreach $pkg (@software) {
@dpkg = `dpkg -l | grep $pkg`;
if(!@dpkg) {
print "Getting: $pkg\n";
`sudo apt-get -y install $pkg`;
} else {
print "$pkg is already installed.\n";

After you run that perl script, opennhrp is ready to install. Download the latest version from, unpack the contents, then run make and make install. That’s it! Now to play with configurations.

Share on FacebookTweet about this on TwitterShare on LinkedInShare on RedditEmail this to someone