specs: Add "Testing" section to High Priority Datapath spec
[ovsnfv.git] / docs / design / specs / High-Priority-Traffic-Path.rst
1 ..
2  This work is licensed under a Creative Commons Attribution 3.0 Unported
3  License.
4
5  http://creativecommons.org/licenses/by/3.0/legalcode
6
7 ==========================================
8 High Priority Traffic Path
9 ==========================================
10
11 https://wiki.opnfv.org/display/ovsnfv/OVSFV+Requirement+-+High+Priority+Traffic+Path
12
13 Problem description
14 ===================
15
16 A network design may need to adequately accommodate multiple classes of traffic, each
17 class requiring different levels of service in critical network elements.
18
19 As a concrete example, a network element managed by a service provider may be
20 handling voice and elastic data traffic. Voice traffic requires that the end-to-end
21 latency and jitter is bounded to some numerical limit (in msec) accuracy in order to ensure
22 sufficient quality-of-service (QoS) for the participants in the voice call.
23 Elastic data traffic does not impose the same demanding requirements on the network
24 (there will be essentially no requirement on jitter. For example, when downloading a
25 large file across the Internet, although the bandwidth requirements may be high there
26 is usually no requirement that the file arrives within a bounded time interval.
27
28 Depending on the scheduling algorithms running on the network element,
29 frames belonging to the data traffic may get transmitted before frames
30 belonging to the voice traffic introducing unwanted latency or jitter.
31 Therefore, in order to ensure deterministic latency and jitter characteristics
32 end-to-end, each network element through which the voice traffic traverses
33 must ensure that voice traffic is handled deterministically.
34
35 Hardware switches have typically been designed to ensure certain classes
36 of traffic can be scheduled ahead of other classes and are also
37 over-provisioned which further ensures deterministic behavior when
38 handling high priority traffic. However, software switches (which includes
39 virtual switches such as Open vSwitch) may require modification in order
40 to achieve this deterministic behavior.
41
42 Use Cases
43 ---------
44
45 1. Program classes of service
46
47 The End User specifies a number of classes of service. Each class of service
48 will be represented by the value of a particular field in a frame. The class
49 of service determines the priority treatment which flows in the class will
50 receive, while maintaining a relative level of priority for other classes and
51 a default level of treatment for the lowest priority class of service. As
52 such, each class of service will be associated with a priority. The End User
53 will associate classes of service and priorities to ingress ports with the
54 expectation that frames that arrive on these ingress ports will get
55 scheduled following the specified priorities.
56
57 Note: Priority treatment of the classes of service cannot cause any one of
58 the classes (even the default class) from being transferred at all. In other
59 words, a strict priority treatment would likely not be successful for serving
60 all classes eventually, and this is a key consideration.
61
62 2. Forward high priority network traffic
63
64 A remote network element sends traffic to Open vSwitch. The remote network
65 element, indicates the class of service to which this flow of traffic belongs
66 to by modifying a pre-determined but arbitrary field in the frame as specified
67 in Use Case 1. Some examples include the Differentiated Services Code Point
68 (DSCP) in an IP packet or the Priority Code Point (PCP) in an Ethernet frame.
69 The relative priority treatment that frames get processed by Open vSwitch can be guaranteed by the
70 values populated in these fields when the fields are different. If the fields
71 are the same, ordering is not deterministic.
72
73 For example: Packet A is sent with a DSCP value of 0 and packet B is sent
74 with a value of 46; 0 has a lower priority than 46. Packet A arrives
75 before packet B. If Open vSwitch has been configured as such, Packet
76 B will be transmitted before Packet A.
77
78 Proposed change
79 ===============
80
81 TBD
82
83 Alternatives
84 ------------
85
86 TBD
87
88 OVSDB schema impact
89 -------------------
90
91 TBD
92
93 User interface impact
94 ---------------------
95
96 TBD
97
98 Security impact
99 ---------------
100
101 TBD
102
103 Other end user impact
104 ---------------------
105
106 TBD
107
108 Performance Impact
109 ------------------
110
111 TBD
112
113 Other deployer impact
114 ---------------------
115
116 TBD
117
118 Developer impact
119 ----------------
120
121 TBD
122
123 Implementation
124 ==============
125
126 Assignee(s)
127 -----------
128
129 Who is leading the writing of the code? Or is this a blueprint where you're
130 throwing it out there to see who picks it up?
131
132 If more than one person is working on the implementation, please designate the
133 primary author and contact.
134
135 Primary assignee:
136   <email address>
137
138 Other contributors:
139   <email address>
140
141 Work Items
142 ----------
143
144 TBD
145
146 Dependencies
147 ============
148
149 TBD
150
151 Testing
152 =======
153
154 In order to test how effectively the virtual switch handles high priority traffic
155 types, the following scheme is suggested.::
156
157                    +---------------------------+         Ingress Traffic Parameters
158                    |                           |         +-------------------------------------------+
159                    |                           |
160                    |                           |         Packet Size: The size of the Ethernet frames
161                    |                           |
162                    |                           |         Tmax: RFC2544 Max. Throughput for traffic of
163                    |                    PHY0   <-------+ "Packet Size"
164                    |                           |
165                    |                           |         Total Offered Rate: The offered rate of both
166                    |                           |         traffic classes combined expressed as a % of
167                    |                           |         Tmax
168                    |                           |
169                    |                           |         Ingress Rates are expressed as a percentage
170                    |                           |         of Total Offered Rate.
171                    |                           |
172                    |                           |         Class A:
173                    |             OVS           |         Ethernet PCP = 0 (Background)
174                    |            (BR0)          |         Ingress Rate      : rate_ingress_a(n) Mfps
175                    |                           |
176                    |                           |         Class B:
177                    |                           |         Ethernet PCP = 7 (Highest)
178                    |                           |         Ingress Rate      : rate_ingress_b(n) Mfps
179                    |                           |
180                    |                           |         Egress Traffic Measurements
181                    |                           |         +-------------------------------------------+
182                    |                           |         Class A:
183                    |                           |         Egress Throughput : rate_egress_a(n) Mfps
184                    |                           |         Egress Latency    : max_lat_egrees_a(n) ms
185                    |                           |         Egress Jitter     : max_jit_egress_a(n) ms
186                    |                    PHY1   +------->
187                    |                           |         Class B:
188                    |                           |         Egress Throughput : rate_egress_b(n) Mfps
189                    |                           |         Egress Latency    : max_lat_egrees_b(n) ms
190                    +---------------------------+         Egress Jitter     : max_jit_egress_b(n) ms
191
192
193 Open vSwitch is configured to forward traffic between two ports agnostic to the
194 traffic type. For example, using the following command:
195
196 ovs-ofctl add-flow br0 in_port=0,actions=output:1
197
198 The test will be carried out with the functionality to enable high-priority
199 traffic enabled and disabled in order to guage the change in performance for
200 both cases.
201
202 Two classes of traffic will be generated by a traffic generator. In the example
203 above, the classes are differentiated using the Ethernet PCP field. However,
204 another means for differentiating traffic could be used, depending the
205 prioritization scheme that is developed.
206
207 Tests should be performed for each combination of:
208
209 * Packet Sizes in (64, 512)
210 * Total Offered Rate in (80, 120, 150) 
211 * rate_ingress_b(n) / rate_ingress_a(n) in (0.1, 0.2, 0.5)
212
213 For each set, the following metrics should be collected for each traffic
214 class over a specified time period:
215
216 Egress Throughput (Mfps)
217 Maximum Egress Latency (ms)
218 Maximum Egress Jitter (ms)
219
220 Documentation Impact
221 ====================
222
223 TBD
224
225 References
226 ==========
227
228 Please add any useful references here. You are not required to have any
229 reference. Moreover, this specification should still make sense when your
230 references are unavailable. Examples of what you could include are:
231
232 * Links to mailing list or IRC discussions
233
234 - http://lists.opnfv.org/pipermail/opnfv-tech-discuss/2015-December/007193.html
235 - http://ircbot.wl.linuxfoundation.org/meetings/opnfv-ovsnfv/2016/opnfv-ovsnfv.2016-03-07-13.01.html
236
237 * Links to relevant research, if appropriate
238
239 - https://wiki.opnfv.org/download/attachments/5046510/qos_mechanisms.pdf?version=1&modificationDate=1459187636000&api=v2
240
241 * Related specifications as appropriate
242
243 * Anything else you feel it is worthwhile to refer to
244
245
246 History
247 =======
248
249 Optional section intended to be used each time the spec
250 is updated to describe new design, API or any database schema
251 updated. Useful to let reader understand what's happened along the
252 time.
253
254 .. list-table:: Revisions
255    :header-rows: 1
256
257    * - Release Name
258      - Description
259    * - Colorado
260      - Introduced