# my comments are biased by the viewpoint of heavy user of
DCE, so please deduct a bit as I'm not discouraging your
At Thu, 28 Jun 2012 17:24:06 -0700,
Daniel Howell wrote:
> Hello, my name is Daniel Howell and I'm interning over the summer at the
> Lawrence Livermore National Laboratory working on network simulations
> under Peter Barnes.
> My project is implementing BGP in ns-3 simulations with the goal being
> to run large-scale simulations of 10k+ nodes. I've looked into the
> recent DCE implementation of Quagga, but from what I saw, it installs
> individual Quagga processes on each node that runs BGP on it. For a
> large scale simulation, this would run too slowly. We also want to be
> able to run our code on any machine ns-3 can normally run on without
> having to worry about DCE compatibility between computers.
If you meant "individual Quagga processes" as the processes
"zebra" and "bgpd", it's not mandatory: you can skip the
"zebra" process to install if you don't need route (FIB)
information in the simulation.
# you can add some method like "DisableZebra" in
QuaggaHelper class for that purpose.
Only the dependencies from bgpd to zebra is automatic
router-id assignment, although current QuaggaHelper uses
static router id instead (thus no issues are found to
disable zebra at this moment).
> I'm currently looking into extending Ipv4RoutingProtocol to implement
> BGP at the moment, using the OLSRRoutingProtocol that is built-in as an
> example. This BGPRoutingProtocol class would call upon the Quagga source
> code for BGP to run. A few spots of challenge would be making sure the C
> code compiles in the C++ compiler, running ns-3's simulation time
> instead of real time on Quagga, and having the sockets communicate
> between ns-3 and Quagga.
for the synchronized clock between ns-3 and real-timed
processes, you can take a look at SliceTime.
> I started learning ns-3 just recently for this internship, so I'm not
> well-versed on the ns-3 data structures. Does this approach make sense
> or am I misunderstanding/overlooking something? If anyone has the older
> Quagga Porting code, knows of a similar resource, or can offer any
> advice or an opinion on this, that'd be very helpful!
I understand the compatibility issues on DCE that you're
worried about: it still needs a lot of effort to DCE in
order to provide "generalized solution" for your purpose
(reuse the existing code in simulations).
# We're working hard on the improvements.
As Tom also mentioned, you may keep tracking the
compatibility layer between ns-3 and quagga bgpd if Quagga
has new release in the future. That is almost endless and
makes my motivation on DCE.