https://github.com/microsoft/internet-in-a-box
Enabling data-informed network simulation
https://github.com/microsoft/internet-in-a-box
machine-learning network-measurement network-simulation
Last synced: about 1 month ago
JSON representation
Enabling data-informed network simulation
- Host: GitHub
- URL: https://github.com/microsoft/internet-in-a-box
- Owner: microsoft
- License: mit
- Created: 2020-11-02T18:50:49.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-06-02T17:07:48.000Z (about 3 years ago)
- Last Synced: 2026-04-18T00:21:02.484Z (about 2 months ago)
- Topics: machine-learning, network-measurement, network-simulation
- Language: Tcl
- Homepage: https://www.microsoft.com/en-us/research/project/ibox/
- Size: 128 KB
- Stars: 15
- Watchers: 4
- Forks: 5
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Security: SECURITY.md
Awesome Lists containing this project
README
# iBox: Internet in a Box
*Data-informed Network Simulation Profiles*
## About iBox
The **iBox** (Internet in a Box) project is an ongoing effort at [Microsoft Research India](https://www.microsoft.com/en-us/research/lab/microsoft-research-india/) on enabling data-informed network simulation. Currently, we use data in the form of per-packet traces gathered at senders and receivers of networked applications to learn network parameters and configure a network simulator accordingly.
You can find more details of the work on the [project website](http://aka.ms/ibox) and in our [HotNets'20 paper](https://www.microsoft.com/en-us/research/uploads/prod/2020/09/iBox-HotNets2020.pdf) [[1]](#1).
The purpose of this repo is to make **iBox** network configurations available to the research community. Specifically, we focus here on **iBoxNet**, which is a network model based variant of **iBox**.
## About generated **iBoxNet** network profiles
### Data source
We currently use the packet traces available from the [Pantheon project](https://pantheon.stanford.edu/) [[2]](#2) at Stanford to generate the **iBoxNet** network profiles.
### Format of the **iBoxNet** network profiles
The JSON files corresponding to each **iBoxNet** network profile mainly contain the following:
1. **Basic network parameters**
1. **`bottleneck_bandwidth`** (in kbps)
2. **`buffer_size_bytes`** (in bytes)
3. **`buffer_size_packets`** (in MTU sized packets)
4. **`propagation_delay`** (in milliseconds)
2. **Cross traffic estimate**
1. **`cross_traffic_pattern`**: a 30s long timeseries with each entry in kbps
3. **Metadata**
1. **`measurement_node`**: endpoint A of the flow
2. **`peer_cloud_server`**: endpoint B of the flow
3. **`data_flow_direction`**: direction of the data flow
4. **`link_type`**: type of network link in the experiment
5. **`data_source_url`**: static url to the source of the data used for generating this **iBoxNet** network profile
### Notes
1. The **`cross_traffic_pattern`** is a timeseries *ct* and it is used in the simulation\emulation experiment by configuring a UDP sender to set its sending rate to *ct**i* kbps at time *i*.
2. The network parameters corresponding to the Pantheon traces are learned only for one direction (as indicated by the **`link_type`** for which the data is collected) while the reverse direction's parameters (for example, the parameters of the downlink in this [network profile](https://github.com/microsoft/internet-in-a-box/blob/main/network-profiles/colombia/cellular/network-profile-1.json)) are populated using default values (not learned from data).
## Quick Start
To get started on running ns-2 simulations using the profiles, some sample ns-2 scripts have been provided in the src/sample-code directory.
Please install ns-2, tcl, and tcllib and run the following command:
```bash
ns src/sample-code/single-link-with-cross-traffic.tcl arg1 arg2
```
where `arg1` is the path to the **iBoxNet** network profile and `arg2` is the directory you want to save your experiment trace file in.
The sample script sets up the network topology corresponding to the **iBoxNet** network profile in addition to configuring the cross traffic sender to send traffic into the network appropriately. Further, the script runs a TCP Cubic file transfer for 30s on this network and saves the trace file corresponding to this simulation.
## Questions?
If you have any questions, please feel free to [open an issue](https://github.com/microsoft/internet-in-a-box/issues/new) and describe your query.
## Citations
If you'd like to cite our paper, please use this doi: [10.1145/3422604.3425935](https://doi.org/10.1145/3422604.3425935) and if you'd like to cite our network profiles, please use this [GitHub link](https://github.com/microsoft/internet-in-a-box).
## References
[1] S. Ashok, S. S. Duvvuri, N. Natarajan, V. N. Padmanabhan, S. Sellamanickam, and J. Gehrke. "iBox: Internet in a Box". In Proceedings of the 19th ACM Workshop on Hot Topics in Networks, HotNets ’20, page 23–29, New York, NY, USA, 2020. Association for Computing Machinery.
[2] F. Y. Yan, J. Ma, G. D. Hill, D. Raghavan, R. S. Wahby, P. Levis, and K. Winstein. Pantheon: the training ground for internet congestion-control research. In 2018 USENIX Annual Technical Conference (USENIX ATC 18), pages 731–743, 2018