-
-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.html
107 lines (98 loc) · 5.13 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
---
layout: default
title: Valinor framework home
---
<h2>Motivation</h2>
<p>
♦ <b>What</b> causes the network traffic to emerge from hosts in <b>bursts?</b> <br><br>
♦ Is burstiness an <b>scale-invariant</b> property of traffic? (Does the traffic retain its burstiness across a wide range of timescales, or do the
microbursts become smooth at coarse timescales?) <br><br>
♦ Are canonical burst <b>countermeasures</b> such as TCP pacing and packet scheduling effective in curtailing bursts?
</p>
<p>
Our study attempts to find an answer for above questions.
</p>
<hr/>
<h2>System</h2>
<p>
<b>Valinor</b> framework offers visibility into traffic burstiness over a wide span of timescales (nanosecond- to second-scale) at multiple vantage points by capturing timestamp and metadata information for incoming/outgoing packets in the network.
<br><br>
Valinor consists of four components:
<ol class="val-list-parent">
<li class="val-list"><b>Valinor-N:</b> Valinor's programmable data plane based on Tofino architecture. Valinor generates timestamp packets for every incoming packet and sends them to a user-defined port for offline/online analysis.</li>
<li class="val-list"><b>Valinor-H:</b> Valinor's eBPF program that connects to tc hook in Linux operating system. Valinor-H uses a userspace control plane to retrieve the timestamps for egress packets and stores the entries in a Redis database.</li>
<li class="val-list"><b>Valinor-C:</b> Is a DPDK-based packet processing software that is the endpoint for Valinor-N's timestamp packets. Valinor-C also uses Redis to store the collected timestamp entries for packets</li>
<li class="val-list"><b>Valinor-O:</b> Consists of various scripts for processing timestamp entries.</li>
</ol>
<p>Example deployment scenario: </p>
<img src="valinor_setup.png" class="design-figure" alt="Deployment scenario">
</p>
<hr/>
<h2>Results</h2>
<h3>Congestion Control Variants</h3>
<p>
TCP congestion control variants use different signals to detect congestion in the network. This results in significantly different buffer utilization patterns. Valinor-N can capture the dynamics of switch buffer utilization
at microsecond granularity. <br><br>
<img src="8_a_w.png" class="result-figure">
</p>
<h3>Linux qdiscs in the presense of NIC offloading and scheduling</h3>
<p>
Linux offers a modular platform for implementing various packet scheduling paradigms, called queueing disciplines or in short, <em>qdiscs</em>.
However, are these software elements effecting in shaping the traffic when NIC segmentation offloading and lulti-ring scheduling functions are active?
<br><br>
We compare two Linux qdiscs, <em>fq</em> and <em>pfifo_fast</em> under four configurations. Our results suggest that low layers of the network stack compromise the traffic shaping efforts of the software packet schedulers:
<br><br>
<div class="row">
<div class="column">
<img src="9_a_w.png" alt="no TSO - single ring" style="width:100%">
</div>
<div class="column">
<img src="9_c_w.png" alt="TSO - single ring" style="width:100%">
</div>
</div>
<div class="row">
<div class="column">
<img src="9_d_w.png" alt="no TSO - multi ring" style="width:100%">
</div>
<div class="column">
<img src="9_b_w.png" alt="TSO - multi ring" style="width:100%">
</div>
</div>
<!-- <img src="9_a_w.png" class="result-figure">
<img src="9_a_w.png" class="result-figure">
<img src="9_a_w.png" class="result-figure">
<img src="9_a_w.png" class="result-figure"> -->
</p>
<p>
More interesting results on impact of TCP pacing, Linux qdiscs, and process scheduling on packet bursts can be found in our published paper.
</p>
<hr/>
<h2>Artifacts and Further Reading</h2>
<p>
The publication can be access at <a href="https://www.usenix.org/conference/nsdi23/presentation/sharafzadeh">NSDI '23 website</a>. <br><br>
The super repository containing Valinor artifacts can be found <a href="https://github.com/hopnets/valinor-artifacts">here!</a>. <br><br>
Please email the authors with your questions and ideas on improving Valinor.
</p>
<!-- <div class="pagination">
{% if site.owner.linkedin %}
<a href="{{ site.owner.linkedin }}" class="social-media-icons"><i class="fa fa-2x fa-linkedin-square" aria-hidden="true"></i></a>
{% endif %}
{% if site.owner.email %}
<a href="mailto:{{ site.owner.email }}" class="social-media-icons"><i class="fa fa-2x fa-envelope-square" aria-hidden="true"></i></a>
{% endif %}
{% if site.owner.twitter %}
<a href="https://twitter.com/{{ site.owner.twitter }}" class="social-media-icons"><i class="fa fa-2x fa-twitter-square" aria-hidden="true"></i></a>
{% endif %}
{% if site.owner.github %}
<a href="{{ site.owner.github }}" class="social-media-icons"><i class="fa fa-2x fa-github-square" aria-hidden="true"></i></a>
{% endif %}
</div> -->
<div class="listing">
{% for post in paginator.posts %}
<div class="post other link">
<h2></span> <a href="{{site.url}}{{post.url}}">{{ post.title }}</a></h2>
<p class="post-date">{{ post.date | date_to_string }}</p>
{{ post.excerpt }}
</div>
{% endfor %}
</div>