ns3-tlt-tcp-public
所属分类:网络编程
开发工具:Python
文件大小:0KB
下载次数:0
上传日期:2021-10-12 04:58:39
上 传 者:
sh-1993
说明: 这是《走向商品数据中心网络中的无超时传输》一文的官方GitHub存储库。
(This is an official GitHub repository for the paper, "Towards timeout-less transport in commodity datacenter networks.".)
文件列表:
AUTHORS (9301, 2021-10-11)
CHANGES.html (155970, 2021-10-11)
LICENSE (17987, 2021-10-11)
Makefile (256, 2021-10-11)
RELEASE_NOTES (154525, 2021-10-11)
VERSION (5, 2021-10-11)
bindings/ (0, 2021-10-11)
bindings/python/ (0, 2021-10-11)
bindings/python/my_extra_api_definitions.py (490, 2021-10-11)
bindings/python/ns/ (0, 2021-10-11)
bindings/python/ns/_placeholder_ (0, 2021-10-11)
bindings/python/ns3/ (0, 2021-10-11)
bindings/python/ns3/_placeholder_ (0, 2021-10-11)
bindings/python/ns3__init__.py (82, 2021-10-11)
bindings/python/ns3module_helpers.cc (10406, 2021-10-11)
bindings/python/ns3modulegen-modular.py (4822, 2021-10-11)
bindings/python/ns3modulegen.py (6413, 2021-10-11)
bindings/python/ns3modulegen_core_customizations.py (19495, 2021-10-11)
bindings/python/ns3modulescan-modular.py (11927, 2021-10-11)
bindings/python/ns3modulescan.py (14039, 2021-10-11)
bindings/python/ns__init__.py (1, 2021-10-11)
bindings/python/pch/ (0, 2021-10-11)
bindings/python/pch/_placeholder_ (12, 2021-10-11)
bindings/python/rad_util.py (26015, 2021-10-11)
bindings/python/topsort.py (13288, 2021-10-11)
bindings/python/wscript (21416, 2021-10-11)
config/ (0, 2021-10-11)
config/config.txt (1255, 2021-10-11)
config/topology96.txt (3375, 2021-10-11)
contrib/ (0, 2021-10-11)
contrib/wscript (10582, 2021-10-11)
doc/ (0, 2021-10-11)
doc/build.txt (3697, 2021-10-11)
doc/codingstd.txt (116, 2021-10-11)
doc/contributing.txt (274, 2021-10-11)
doc/doxygen.conf (107258, 2021-10-11)
doc/doxygen.warnings.report.sh (10898, 2021-10-11)
doc/main.h (2596, 2021-10-11)
... ...
# NS-3 simulator for TLT
This is an official Github repository for the Eurosys '21 paper "[Towards timeout-less transport in commodity datacenter networks.](https://dl.acm.org/doi/10.1145/3447786.3456227)".
* For the VMA testbed implementation, please visit [https://github.com/kaist-ina/libvma-tlt-public](https://github.com/kaist-ina/libvma-tlt-public).
This repository provides a NS-3 simulator for TLT, based on version 3.29.
This simlator includes PFC implementation from [here](https://github.com/bobzhuyb/ns3-rdma) and custom DCTCP implementation.
If you find this repository useful in your research, please consider citing:
```
@inproceedings{10.1145/3447786.3456227,
author = {Lim, Hwijoon and Bai, Wei and Zhu, Yibo and Jung, Youngmok and Han, Dongsu},
title = {Towards Timeout-Less Transport in Commodity Datacenter Networks},
year = {2021},
isbn = {9781450383349},
publisher = {Association for Computing Machinery},
address = {New York, NY, USA},
url = {https://doi.org/10.1145/3447786.3456227},
doi = {10.1145/3447786.3456227}
}
```
### Note
This simulator implements TLT for TCP and DCTCP. This may include minor We implemented TLT for RDMA on top of the different codebase. We plan to open-source the RDMA flavored version for TLT on request.
## Guide
### 0. Prerequisites
We tested the simulator on Ubuntu 18.04, but latest versions of Ubuntu should also work.
```
sudo apt install build-essential python3 libgtk-3-0 bzip2
```
### 1. Configure
```
wget https://www.nsnam.org/releases/ns-allinone-3.29.tar.bz2
tar -xvf ns-allinone-3.29.tar.bz2
cd ns-allinone-3.29
rm -rf ns-3.29
git clone https://github.com/kaist-ina/ns3-tlt-tcp-public.git ns-3.29
cd ns-3.29
./waf configure --build-profile=optimized
```
### 2. Build and Run simulations
You can run the large-scale simulation from the paper by issuing following:
```
./waf --run 'tcp-realistic-workload-bgfg config/config.txt'
```
## Configuration
You can configure the simulator by changing `config/config.txt` file. (TBU)
## Modifications from the vanilla ns-3.29
```
.gitignore | 11 +-
README | 117 -
README.md | 171 ++
config/config.txt | 73 +
config/topology96.txt | 158 ++
examples/tutorial/examples-to-run.py | 1 +
examples/tutorial/wscript | 4 +
scratch/tcp-realistic-workload-bgfg.cc | 1188 ++++++++++
src/applications/model/flow-id-num-tag.cc | 76 +
src/applications/model/flow-id-num-tag.h | 35 +
src/applications/model/flow-stat-tag.cc | 72 +
src/applications/model/flow-stat-tag.h | 37 +
src/applications/model/packet-sink.cc | 2 +-
src/applications/model/seq-ts-header.cc | 18 +-
src/applications/model/seq-ts-header.h | 4 +
src/applications/wscript | 4 +
src/broadcom/utils/broadcom-egress-queue.cc | 776 +++++++
src/broadcom/utils/broadcom-egress-queue.h | 102 +
src/broadcom/wscript | 15 +
src/core/model/random-variable-stream.cc | 14 +-
src/internet/bindings/modulegen__gcc_ILP32.py | 2 +-
src/internet/bindings/modulegen__gcc_LP64.py | 2 +-
src/internet/helper/selective-packet-queue.cc | 318 +++
src/internet/helper/selective-packet-queue.h | 76 +
src/internet/model/ipv4-ecn-tag.cc | 58 +
src/internet/model/ipv4-ecn-tag.h | 36 +
src/internet/model/ipv4-global-routing.cc | 142 +-
src/internet/model/ipv4-global-routing.h | 8 +-
src/internet/model/rtt-estimator.cc | 2 +-
src/internet/model/tcp-congestion-ops.cc | 20 +
src/internet/model/tcp-congestion-ops.h | 46 +-
src/internet/model/tcp-dctcp.cc | 182 ++
src/internet/model/tcp-dctcp.h | 48 +
src/internet/model/tcp-l4-protocol.cc | 100 +-
src/internet/model/tcp-l4-protocol.h | 1 +
src/internet/model/tcp-option-ts.cc | 6 +-
src/internet/model/tcp-socket-base.cc | 1593 ++++++++++++-
src/internet/model/tcp-socket-base.h | 84 +-
src/internet/model/tcp-socket-state.h | 10 +
src/internet/model/tcp-socket.cc | 12 +-
src/internet/model/tcp-tx-buffer.cc | 4 +-
src/internet/model/tlt-tag.cc | 78 +
src/internet/model/tlt-tag.h | 44 +
src/internet/wscript | 8 +
src/network/model/broadcom-node.cc | 704 ++++++
src/network/model/broadcom-node.h | 211 ++
src/network/model/node.cc | 35 +-
src/network/model/node.h | 9 +
src/network/model/socket.cc | 41 +-
src/network/model/socket.h | 21 +
src/network/model/tcp-flow-id-tag.cc | 57 +
src/network/model/tcp-flow-id-tag.h | 34 +
src/network/utils/data-rate.cc | 41 +
src/network/utils/data-rate.h | 12 +
src/network/utils/pfc-experience-tag.cc | 59 +
src/network/utils/pfc-experience-tag.h | 36 +
src/network/utils/queue.cc | 2 +-
src/network/utils/queue.h | 2 +-
src/network/wscript | 6 +
src/point-to-point/helper/qbb-helper.cc | 323 +++
src/point-to-point/helper/qbb-helper.h | 188 ++
src/point-to-point/model/cn-header.cc | 170 ++
src/point-to-point/model/cn-header.h | 94 +
src/point-to-point/model/irn-header.cc | 108 +
src/point-to-point/model/irn-header.h | 64 +
src/point-to-point/model/pause-header.cc | 114 +
src/point-to-point/model/pause-header.h | 77 +
.../model/point-to-point-net-device.h | 17 +-
src/point-to-point/model/qbb-channel.cc | 164 ++
src/point-to-point/model/qbb-channel.h | 194 ++
src/point-to-point/model/qbb-header.cc | 96 +
src/point-to-point/model/qbb-header.h | 61 +
src/point-to-point/model/qbb-net-device.cc | 2401 ++++++++++++++++++++
src/point-to-point/model/qbb-net-device.h | 359 +++
src/point-to-point/model/qbb-remote-channel.cc | 80 +
src/point-to-point/model/qbb-remote-channel.h | 47 +
src/point-to-point/wscript | 19 +-
waf | 0
workloads/DCTCP_CDF.txt | 12 +
workloads/cachefollower.txt | 23 +
workloads/mining.txt | 7 +
workloads/search.txt | 12 +
workloads/webserver.txt | 13 +
83 files changed, 11429 insertions(+), 242 deletions(-)
```
- `src/internet/tcp-socket-base.cc` and `.h`, `src/internet/tlt-tag.cc` and `.h`:
Core TLT implementation.
- `scratch/tcp-realistic-workload-bgfg.cc`:
The `main()` function.
- Files in `workloads` and `config`:
Configuration for the simulation and workloads.
- Files in `src/broadcom` and `src/network`:
Implementation for a Broadcom ASIC switch model. These includes selective dropping for TLT, dynamic buffer management, PFC and ECN triggering. Refer [here](https://github.com/bobzhuyb/ns3-rdma#what-did-we-add-exactly) for details.
*Disclaimer: this module is purely based on authors' personal understanding of Broadcom ASIC. It does not reflect any official confirmation from either Microsoft or Broadcom.*
- Files in `src/internet`:
Mostly DCTCP implementation, and some for DSCP marking on TLT.
- Files mentioned [here](https://github.com/bobzhuyb/ns3-rdma#what-did-we-add-exactly).
RDMA, PFC, DCQCN implementation.
- Others
Mostly packet tag, header for the stastics purposes.
近期下载者:
相关文件:
收藏者: