Data-informed Network Simulation Profiles
The iBox (Internet in a Box) project is an ongoing effort at 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 and in our HotNets'20 paper [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.
We currently use the packet traces available from the Pantheon project [2] at Stanford to generate the iBoxNet network profiles.
The JSON files corresponding to each iBoxNet network profile mainly contain the following:
- Basic network parameters
bottleneck_bandwidth
(in kbps)buffer_size_bytes
(in bytes)buffer_size_packets
(in MTU sized packets)propagation_delay
(in milliseconds)
- Cross traffic estimate
cross_traffic_pattern
: a 30s long timeseries with each entry in kbps
- Metadata
measurement_node
: endpoint A of the flowpeer_cloud_server
: endpoint B of the flowdata_flow_direction
: direction of the data flowlink_type
: type of network link in the experimentdata_source_url
: static url to the source of the data used for generating this iBoxNet network profile
- 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 cti kbps at time i. - 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) are populated using default values (not learned from data).
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:
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.
If you have any questions, please feel free to open an issue and describe your query.
If you'd like to cite our paper, please use this doi: 10.1145/3422604.3425935 and if you'd like to cite our network profiles, please use this GitHub link.
[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