This PR builds on top of #209. Rather than communicating with CCP as a separate process (which requires building and starting a separate application at the correct time), we can now load the CCP dynamic library to spawn CCP as a thread inside mTCP. This makes it much easier for application users. This PR should probably be rebased and merged after #209 rather than instead of it.
To configure ccp, users can now add a "cc" option in their configuration file which includes both the algorithm name, and any applicable parameters in cli format. For example, to run BBR with an initial cwnd of 100:
cc = bbr --init_cwnd 100
To list the available parameters users can use the ccp utility (ccp run bbr -- --help) or specify cc = bbr --help in their configuration file and check via mtcp. Most algorithms do not need extra parameters, so this should be very easy in the average case.
All logging produced by ccp is written to ./cc.log.
Summary of changes:
readme: describe steps necessary to install ccp library
configure.ac: check for libstartccp in standard locations (default install location is /usr/lib/libstartccp.so)
config.c: add support for cc option
core.c: start a new thread and passes the cc arguments to libstartccp, which runs ccp
This PR builds on top of #209. Rather than communicating with CCP as a separate process (which requires building and starting a separate application at the correct time), we can now load the CCP dynamic library to spawn CCP as a thread inside mTCP. This makes it much easier for application users. This PR should probably be rebased and merged after #209 rather than instead of it.
To configure ccp, users can now add a "cc" option in their configuration file which includes both the algorithm name, and any applicable parameters in cli format. For example, to run BBR with an initial cwnd of 100:
To list the available parameters users can use the ccp utility (
ccp run bbr -- --help
) or specifycc = bbr --help
in their configuration file and check via mtcp. Most algorithms do not need extra parameters, so this should be very easy in the average case.All logging produced by ccp is written to
./cc.log
.Summary of changes:
cc
optioncc
arguments to libstartccp, which runs ccp