Applied Networking Research Workshop 2020 acm sigcomm NeST: Network Stack Tester Shanthanu S Rai, Narayan G, Dhanasekhar M, Leslie Monis, Mohit P. Tahiliani Wireless Information Networking Group (WiNG) Department of Computer Science and Engineering National Institute of Technology Karnataka, Surathkal, Mangalore, India July 30, 2020
Introduction 1 Network Experimentation ◮ Physical testbeds Network Namespaces ◮ Virtualize network stack ◮ Complex virtual topologies can be created ◮ Minimal system resources Existing tools ◮ Mininet ◮ Flexible Network Tester (Flent) ◮ Transperf ◮ Netesto ◮ TEACUP Applied Networking Research Workshop 2020 |
NeST: Network Stack Tester 2 ◮ Python package to simplify the process of network experimentation by using Linux network namespaces ◮ Intuitive APIs to: build a virtual network, run experiments and collect statistics ◮ Simplifies the process to reproduce network experiments ◮ Less physical resources, less error prone and less prerequisites ◮ Multiple instances of the same network topology can co-exist, and different experiments can be run in parallel on every instance ◮ Open source tool released under GPLv2 License ◮ Link: https://nitk-nest.github.io/ Applied Networking Research Workshop 2020 |
API 3 Peer to peer topology # Create two nodes n0 = Node('n0') n1 = Node('n1') # Connect nodes and get corresponding interfaces (n0_n1, n1_n0) = connect(n0, n1) # Assign addresses to the interfaces n0_n1.set_address('10.0.0.1/24') n1_n0.set_address('10.0.0.2/24') # Set link properties n0_n1.set_attributes('5mbit', '5ms') # Create an experiment named 'mytest' to run # on the built topology exp = Experiment('mytest') # Add 1 flow from n0 to n1 from time t=0s to t=10s exp.add_flow(Flow(n0, n1, n1_n0.get_address(), 0, 10, 1)) # Run the experiment exp.run() Applied Networking Research Workshop 2020 |
Architecture 4 Peer to peer topology # Create two nodes n0 = Node('n0') n1 = Node('n1') # Connect nodes and get corresponding interfaces (n0_n1, n1_n0) = connect(n0, n1) # Assign addresses to the interfaces n0_n1.set_address('10.0.0.1/24') n1_n0.set_address('10.0.0.2/24') # Set link properties n0_n1.set_attributes('5mbit', '5ms') # Create an experiment named 'mytest' to run # on the built topology exp = Experiment('mytest') # Add 1 flow from n0 to n1 from time t=0s to t=10s exp.add_flow(Flow(n0, n1, n1_n0.get_address(), 0, 10, 1)) # Run the experiment exp.run() 1. Invoke topology related 4. Invoke experiment related API API API Topology Module Experiment Module 3. Store mapping between 6. Convert NeST’s internal user given names and NeST’s names to user-given names internal names while displaying results. 5. Request Engine to run 2. Request Engine to build Topology Map networking tools to create topology with iproute2 flows and obtain results Engine Module Kernel Invoke iproute2 and networking tools Applied Networking Research Workshop 2020 |
Scope and Limitations 5 Scope ◮ Advanced traffic control ◮ TCP parameters ◮ Netperf, ss, tc ◮ Addition of new tools is easy (e.g., httperf) Limitations ◮ Effects of hardware level optimizations are not seen ◮ Lack of support for all implementations of network stacks ◮ Lack of advanced debugging functions Applied Networking Research Workshop 2020 |
Experiment 1 6 Motivation How accurate are NeST results compared to a physical testbed? Figure: Simple topology for NeST Validation ◮ 4 CUBIC TCP flows from Node0 to Node1 ◮ Two experiments run with two different qdiscs at Router: CoDel and FIFO. Applied Networking Research Workshop 2020 |
Experiment 1: Plots 7 CoDel FIFO Flow 1 Flow 2 Flow 3 Flow 4 Flow 1 Flow 2 Flow 3 Flow 4 450 140 400 cwnd (segments) cwnd (segments) 120 350 100 300 250 80 200 60 150 40 100 20 50 0 0 0 10 20 30 40 50 60 0 10 20 30 40 50 60 Time (s) Time (s) (a) cwnd : NeST (a) cwnd : NeST Flow 1 Flow 2 Flow 3 Flow 4 Flow 1 Flow 2 Flow 3 Flow 4 450 140 400 cwnd (segments) cwnd (segments) 120 350 100 300 250 80 200 60 150 40 100 20 50 0 0 0 10 20 30 40 50 60 0 10 20 30 40 50 60 Time (s) Time (s) (b) cwnd : Physical Testbed (b) cwnd : Physical Testbed Applied Networking Research Workshop 2020 |
Experiment 1: Plots 7 CoDel FIFO Flow 1 Flow 2 Flow 3 Flow 4 Flow 1 Flow 2 Flow 3 Flow 4 60 80 Throughput (Mbit/s) Throughput (Mbit/s) 70 50 60 40 50 30 40 30 20 20 10 10 0 0 0 10 20 30 40 50 60 0 10 20 30 40 50 60 Time (s) Time (s) (a) Throughput: NeST (a) Throughput: NeST Flow 1 Flow 2 Flow 3 Flow 4 Flow 1 Flow 2 Flow 3 Flow 4 60 80 Throughput (Mbit/s) Throughput (Mbit/s) 70 50 60 40 50 30 40 30 20 20 10 10 0 0 0 10 20 30 40 50 60 0 10 20 30 40 50 60 Time (s) Time (s) (b) Throughput: Physical Testbed (b) Throughput: Physical Testbed Applied Networking Research Workshop 2020 |
Experiment 1: Plots 7 CoDel FIFO 120 120 Link Utilization (Mbit/s) Link Utilization (Mbit/s) 100 100 80 80 60 60 40 40 Physical T estbed Physical T estbed 20 20 NeST NeST 0 0 0 10 20 30 40 50 60 0 10 20 30 40 50 60 Time (s) Time (s) (a) Link Utilization (a) Link Utilization Queue Backlog (Packets) Queue Backlog (Packets) 100 1400 Physical T estbed Physical T estbed 1200 80 NeST NeST 1000 60 800 600 40 400 20 200 0 0 0 10 20 30 40 50 60 0 10 20 30 40 50 60 Time (s) Time (s) (b) Queue Backlog (b) Queue Backlog Applied Networking Research Workshop 2020 |
Experiment 2 8 Motivation How does NeST perform in emulating and running experiments on a fairly complex topology? Figure: Complex topology for NeST validation Applied Networking Research Workshop 2020 |
Experiment 2: Plots 9 A(3) A(3) A(3) 40 40 40 Flow: 1 Flow: 1 Flow: 1 Round-Trip Time (ms) Throughput (Mbit/s) Flow: 2 Flow: 2 Flow: 2 cwnd (segments) Flow: 3 Flow: 3 Flow: 3 30 30 30 20 20 20 10 10 10 0 0 0 0 20 40 60 80 100 120 0 20 40 60 80 100 120 0 20 40 60 80 100 120 Time (s) Time (s) Time (s) (a) cwnd : NeST (a) Throughput: NeST (a) RTT: NeST A(3) A(3) A(3) 40 40 40 Flow: 1 Flow: 1 Round-Trip Time (ms) Flow: 1 Throughput (Mbit/s) Flow: 2 Flow: 2 Flow: 2 cwnd (segments) Flow: 3 Flow: 3 Flow: 3 30 30 30 20 20 20 10 10 10 0 0 0 0 20 40 60 80 100 120 0 20 40 60 80 100 120 0 20 40 60 80 100 120 Time (s) Time (s) Time (s) (b) cwnd : Flent (b) Throughput: Flent (b) RTT: Flent Applied Networking Research Workshop 2020 |
Experiment 2: Plots 9 Router0 Router1 Router3 100 200 200 Link Utilization (Mbit/s) Link Utilization (Mbit/s) Link Utilization (Mbit/s) 80 150 150 60 100 100 40 50 50 20 Flent Flent Flent NeST NeST NeST 0 0 0 0 20 40 60 80 100 120 0 20 40 60 80 100 120 0 20 40 60 80 100 120 Time (s) Time (s) Time (s) (a) Link Utilization: Router0 (b) Link Utilization: Router1 (c) Link Utilization: Router3 To view other plots, please check: https://gitlab.com/nitk-nest/nest-anrw20 Applied Networking Research Workshop 2020 |
Epilogue 10 ◮ NeST can be obtained from PyPI (Python Package Index) ◮ NeST is open source software. Contributions are welcome. ◮ Website: https://nitk-nest.github.io/ Contact us: Shanthanu S Rai Narayan G Dhanasekhar M Leslie Monis Mohit P. Tahiliani gnarayang shanthanu.s.rai9 sekhardhana529 lesliemonis tahiliani @gmail.com @gmail.com @gmail.com @gmail.com @nitk.edu.in Applied Networking Research Workshop 2020 |
Recommend
More recommend