BGP++ FAQs

What is BGP++?

BGP++ is a C++ implementation of Border Gateway Protocol for ns-2. BGP++ is build from GNU Zebra BGP daemon. GNU Zebra is routing software that supports BGPv4 as well as other routing protocols. Zebra project began in 1996 and its a pretty popular routing software. BGP++ instead of implementing BGP from scratch, integrated Zebra BGP daemon with ns-2 simulator.  

How was Zebra software modified?

The basic modifications are:
     1) Turn C code to C++.
     2) Interleave ns-2 scheduler with Zebra bgpd scheduler.
     3) Replace BSD sockets with ns-2 FullTcp implementation.
     4) Replace real time functions with simulation time functions.
     5) Several small modifications.
More details on how Zebra software was modified can be found here [ppt, ps].

Which are BGP++ limitations?

Even if BGP++ is based on a Zebra routing software, there are some features available in Zebra and other routing daemons that are not supported by BGP++.  BGP++ does not support IPv6 BGP extensions and MPLS VPN BGP extensions. You can get a good idea of what BGP++ can do by looking the supported commands. Also, BGP++ was primarily developed for studying BGP issues, as a result ns-2 packet forwarding mechanism isn't modified to use routing tables constructed by BGP.         

Which ns-2 versions are supported?

BGP++ has been tested with ns-2.26 version.

From which Zebra version ns-2 is built?

BGP++ is built from Zebra 0.92a. 

Caveats?

BGP++ was recently released and has seen limited testing.