Bifrost is an experimental system that integrates multiple Qos methods, and use to conduct point-to-point/multi-point weak network confrontation experiments. For the convenience of operation, we have simplified the difficulty of parameter adjustment and provided detailed information for each link. This project will include common bandwidth estimation algorithms, compensation methods such as FEC, Nack, and Red in WebRTC, and provide more room for expansion for basic multi-stream competition experiments.It also supports the use of NS3 as a proxy for network simulation, and supports interaction with NS3 simulation networks in physical networks to achieve algorithm validation. If you want to learn more about NS3 related content, please check it out: worker/src/bifrost/experiment_manager/ns3-interface/README.md
Just support MacOS/Linux now!
Clion idea is recommended.
git clone https://github.com/qw225967/Bifrost.git
Need add the libuv.a to CMakeLists.txt — target_link_libraries(worker libuv.a)
cd Bifrost/worker/third_party/libuv/
mkdir -p build
# generate project with tests
cd build && cmake .. -DBUILD_TESTING=ON
cd ..
# add `-j <n>` with cmake >= 3.12
cmake --build build
Clion must use lldb.
You can use the Bifrost/worker/build.sh or build anything by yourself.
sh build.sh
or
cd Bifrost/worker
mkdir -p build
cd build && cmake ..
make
Bifrost requires the use of two terminals for end-to-end testing, and if only one machine is used, weak network restrictions cannot be achieved through the network.
Please refer to worker/conf/README.md for usage and Configuration
This demo uses grafana-based data display, using the CSV file path as the data source.
Mac install grafana
brew update
brew install grafana
grafana service operate
# start grafana service
brew services start grafana
# stop grafana service
brew services stop grafana
# restart grafana service
brew services restart grafana
Add this option to grafana/grafana.ini Use ps -ef | grep grafana command to view the default startup configuration
[plugin.marcusolsson-csv-datasource]
allow_local_mode = true
Please refer to worker/conf/README.md for usage
The figure below shows the trend of the slope in the trend line module of the GCC algorithm during the transmission process.
The figure below shows the target code rate and sending code rate of the GCC algorithm during transmission.
This project also provides the ability to use NS3 simulation for network simulation. It provides the ability to convert physical and virtual networks, and provides an interface for developing network topology.
For details, please refer to worker/src/bifrost/experiment_manager/ns3-interface/README.md.