mirror of
https://github.com/20kaushik02/TCP-RL.git
synced 2025-12-06 05:24:07 +00:00
Update README.md
This commit is contained in:
parent
127abf68e9
commit
2d77152b5d
38
README.md
38
README.md
@ -1,2 +1,40 @@
|
||||
# TCP-RL
|
||||
TCP congestion control using reinforcement learning
|
||||
|
||||
## Tools
|
||||
The following RL and networking toolsets are used for the implementation of the project.
|
||||
|
||||
### ns-3
|
||||
ns-3 is a discrete-event network simulator for networking systems, primarily used for research and education. It became a standard in networking research in recent years as the results obtained are accepted by the science community. In this project, we used NS-3 to generate traffic and also simulate our environment.
|
||||
See: https://www.nsnam.org
|
||||
|
||||
### Gym
|
||||
Gym is an open source Python library, developed by OpenAI, for developing and comparing reinforcement learning algorithms by providing a standard API to communicate between learning algorithms and environments, as well as a standard set of environments compliant with that API. Since its release, Gym's API has become the field standard for doing this.
|
||||
See: https://gym.openai.com/
|
||||
|
||||
### ns3-gym
|
||||
ns3-gym is a framework that integrates both OpenAI's Gym and ns-3 in order to encourage usage of reinforcement learning in networking research. ns3-gym works as a proxy between the ns-3 environment simulator, coded in C++, and the RL agent, coded in Python.
|
||||
See: https://github.com/tkn-tub/ns3-gym
|
||||
|
||||
## Agent
|
||||
The agent interacts with the network environment and keeps exploring the optimal policy by taking various actions such as increasing or decreasing congestion window size. The environment setup consists of a combination of the ns-3 network simulator, ns3-gym proxy, and a Python based RL agent. Our mapping approach is as follows:
|
||||
|
||||
* State: The state space is the profile of the networking simulation that is provided by the ns-3 simulator. It includes attributes such as congestion window size, segment size, segments acknowledged, average round trip time (RTT), and other such connection parameters.
|
||||
* Action: The actions are configured to increase, decrease or maintain the congestion window size and slow start threshold by certain degrees based on fine-tuning.
|
||||
* Reward: The reward is a utility function that considers the average RTT of each step as the defining parameter. It allocates the reward depending on the trend in the parameter.
|
||||
|
||||
## Installation and testing
|
||||
|
||||
* Install Python
|
||||
* Install and build ns3-gym (this includes ns-3 and dependencies)
|
||||
* Install Tensorflow and other agent dependencies
|
||||
* Build the project
|
||||
|
||||
Then, in two terminals, run:
|
||||
```
|
||||
# Terminal 1:
|
||||
./waf --run "TCP-RL --transport_prot=TcpRlTimeBased"
|
||||
|
||||
# Terminal 2:
|
||||
./TCP-RL-Agent.py --start=0
|
||||
```
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user