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