BRITE integration with ns-3
The Boston university Representative Internet Topology gEnerator (BRITE) is a topology generation framework built with flexibility and extensibility in mind. By integrating this topology framework with ns-3, users will have the power to quickly and efficiently create large Internet topologies, while taking advantage of ns-3's simulation capabilities.
- The user will be able to easily leverage the power of BRITE within ns-3, in order to create and simulate large-scale Internet topologies.
- Example ns-3 scripts will be provided to show use.
- Several BRITE configuration examples will be run through ns-3's test-runner to ensure continued operation
- Code documentation, including doxygen will be provided.
- Manual section will be created to provide information on use and operation.
For modularity, the BRITE source code will be separate from the ns-3 code. Within the ns-3-allinone directory, the download.py script will take care of downloading and building the BRITE source code should the user choose to use BRITE. During the ns-3 build process, if BRITE is enabled, the BRITE code will be linked with the ns-3 code. Within the src/brite directory, the helper code, examples, test cases, and documentation will be provided.
The heart of the ns-3/BRITE integration is contained within the topology helper. By passing in a BRITE configuration file to this helper, the topology is created with BRITE. This topology is initially incompatible with ns-3; however, the helper will use this initial topology generation to create the ns-3 topology. Once topology generation is completed, the user can install applications on the nodes within this topology and run the simulation.
Two repositories exist for BRITE integration with ns-3. First is the BRITE code itself, slightly modified to work with ns-3. Second is the ns-3-brite repository where the BRITE toplogy helper, examples, and test cases will exist.
The integration is nearly complete. Users can use the ns-3 BRITE interface to generate ns-3 topologies using BRITE configuration files. An ns-3 example has been provided in src/brite/examples to show its usage. Test cases and complete modularization to align with the new ns-3 modularization model remain.
A note on BRITE seed files
BRITE accepts a seed file to seed its psuedo-random number generator. It also spits out a new seed file after every run -- overwriting your old seed file -- in case you wish to randomize subsequent runs. Finally, it saves the most recently used seed file in a file called "last_seed_file." I didn't like the way this was done, specifically the overwriting bit, so I changed it in the ns-3 interface. You still pass in a seed file, but you also pass in another file for BRITE to write the new seed file. This keeps BRITE from overwriting your seed file. I believe this makes it easier to run the exact same simulation over and over. I think this is important. Finally, if you wish to overwrite the seed file each run, randomizing each subsequent run as before, you can simply pass in the same file name for the seed file and new seed file in ns-3.