pathflow will determine the optimum set of packets to send via a collection of paths with known characteristics:
- Throughput (packets/s)
- Latency
- Loss rate
- Packets enqueued
The problem is defined in the problem.txt file, in the following format:
N: <number of paths>
K: <number of packets in payload>
Ps: <probability of success from 0.0 to 1.0>
Followed by N lines in the format:
<packets/s> <latency> <loss rate> <packets in queue>
To build the project, simply run make.
This will generate the pathflow CLI executable and a libpathflow.a static library for use in your own applications.
You can verify the algorithms are working correctly by running make test.
The CLI uses the exact greedy minimax solver by default. Set
PATHFLOW_SOLVER to de, sa, pso, ga, aco, or ts to exercise one
of the stochastic solvers.
You can watch the algorithm react to simulated network conditions in real-time by running the interactive ncurses dashboard:
make demo
./demoThe simulator creates a Markov "weather" model where links occasionally experience catastrophic drops or miraculous recoveries. The algorithm uses an EWMA filter to smooth out continuous random jitter and seamlessly redirects packet allocations on the fly. Press q to quit the dashboard.