Andrea Campanella | 4dfe932 | 2022-05-10 12:40:10 +0200 | [diff] [blame] | 1 | <?xml version="1.0" encoding="utf-8" ?> |
| 2 | <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> |
| 3 | <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> |
| 4 | <head> |
| 5 | <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> |
| 6 | <meta name="generator" content="Docutils 0.16: http://docutils.sourceforge.net/" /> |
| 7 | <title>Operator workflows</title> |
| 8 | <style type="text/css"> |
| 9 | |
| 10 | /* |
| 11 | :Author: David Goodger (goodger@python.org) |
| 12 | :Id: $Id: html4css1.css 7952 2016-07-26 18:15:59Z milde $ |
| 13 | :Copyright: This stylesheet has been placed in the public domain. |
| 14 | |
| 15 | Default cascading style sheet for the HTML output of Docutils. |
| 16 | |
| 17 | See http://docutils.sf.net/docs/howto/html-stylesheets.html for how to |
| 18 | customize this style sheet. |
| 19 | */ |
| 20 | |
| 21 | /* used to remove borders from tables and images */ |
| 22 | .borderless, table.borderless td, table.borderless th { |
| 23 | border: 0 } |
| 24 | |
| 25 | table.borderless td, table.borderless th { |
| 26 | /* Override padding for "table.docutils td" with "! important". |
| 27 | The right padding separates the table cells. */ |
| 28 | padding: 0 0.5em 0 0 ! important } |
| 29 | |
| 30 | .first { |
| 31 | /* Override more specific margin styles with "! important". */ |
| 32 | margin-top: 0 ! important } |
| 33 | |
| 34 | .last, .with-subtitle { |
| 35 | margin-bottom: 0 ! important } |
| 36 | |
| 37 | .hidden { |
| 38 | display: none } |
| 39 | |
| 40 | .subscript { |
| 41 | vertical-align: sub; |
| 42 | font-size: smaller } |
| 43 | |
| 44 | .superscript { |
| 45 | vertical-align: super; |
| 46 | font-size: smaller } |
| 47 | |
| 48 | a.toc-backref { |
| 49 | text-decoration: none ; |
| 50 | color: black } |
| 51 | |
| 52 | blockquote.epigraph { |
| 53 | margin: 2em 5em ; } |
| 54 | |
| 55 | dl.docutils dd { |
| 56 | margin-bottom: 0.5em } |
| 57 | |
| 58 | object[type="image/svg+xml"], object[type="application/x-shockwave-flash"] { |
| 59 | overflow: hidden; |
| 60 | } |
| 61 | |
| 62 | /* Uncomment (and remove this text!) to get bold-faced definition list terms |
| 63 | dl.docutils dt { |
| 64 | font-weight: bold } |
| 65 | */ |
| 66 | |
| 67 | div.abstract { |
| 68 | margin: 2em 5em } |
| 69 | |
| 70 | div.abstract p.topic-title { |
| 71 | font-weight: bold ; |
| 72 | text-align: center } |
| 73 | |
| 74 | div.admonition, div.attention, div.caution, div.danger, div.error, |
| 75 | div.hint, div.important, div.note, div.tip, div.warning { |
| 76 | margin: 2em ; |
| 77 | border: medium outset ; |
| 78 | padding: 1em } |
| 79 | |
| 80 | div.admonition p.admonition-title, div.hint p.admonition-title, |
| 81 | div.important p.admonition-title, div.note p.admonition-title, |
| 82 | div.tip p.admonition-title { |
| 83 | font-weight: bold ; |
| 84 | font-family: sans-serif } |
| 85 | |
| 86 | div.attention p.admonition-title, div.caution p.admonition-title, |
| 87 | div.danger p.admonition-title, div.error p.admonition-title, |
| 88 | div.warning p.admonition-title, .code .error { |
| 89 | color: red ; |
| 90 | font-weight: bold ; |
| 91 | font-family: sans-serif } |
| 92 | |
| 93 | /* Uncomment (and remove this text!) to get reduced vertical space in |
| 94 | compound paragraphs. |
| 95 | div.compound .compound-first, div.compound .compound-middle { |
| 96 | margin-bottom: 0.5em } |
| 97 | |
| 98 | div.compound .compound-last, div.compound .compound-middle { |
| 99 | margin-top: 0.5em } |
| 100 | */ |
| 101 | |
| 102 | div.dedication { |
| 103 | margin: 2em 5em ; |
| 104 | text-align: center ; |
| 105 | font-style: italic } |
| 106 | |
| 107 | div.dedication p.topic-title { |
| 108 | font-weight: bold ; |
| 109 | font-style: normal } |
| 110 | |
| 111 | div.figure { |
| 112 | margin-left: 2em ; |
| 113 | margin-right: 2em } |
| 114 | |
| 115 | div.footer, div.header { |
| 116 | clear: both; |
| 117 | font-size: smaller } |
| 118 | |
| 119 | div.line-block { |
| 120 | display: block ; |
| 121 | margin-top: 1em ; |
| 122 | margin-bottom: 1em } |
| 123 | |
| 124 | div.line-block div.line-block { |
| 125 | margin-top: 0 ; |
| 126 | margin-bottom: 0 ; |
| 127 | margin-left: 1.5em } |
| 128 | |
| 129 | div.sidebar { |
| 130 | margin: 0 0 0.5em 1em ; |
| 131 | border: medium outset ; |
| 132 | padding: 1em ; |
| 133 | background-color: #ffffee ; |
| 134 | width: 40% ; |
| 135 | float: right ; |
| 136 | clear: right } |
| 137 | |
| 138 | div.sidebar p.rubric { |
| 139 | font-family: sans-serif ; |
| 140 | font-size: medium } |
| 141 | |
| 142 | div.system-messages { |
| 143 | margin: 5em } |
| 144 | |
| 145 | div.system-messages h1 { |
| 146 | color: red } |
| 147 | |
| 148 | div.system-message { |
| 149 | border: medium outset ; |
| 150 | padding: 1em } |
| 151 | |
| 152 | div.system-message p.system-message-title { |
| 153 | color: red ; |
| 154 | font-weight: bold } |
| 155 | |
| 156 | div.topic { |
| 157 | margin: 2em } |
| 158 | |
| 159 | h1.section-subtitle, h2.section-subtitle, h3.section-subtitle, |
| 160 | h4.section-subtitle, h5.section-subtitle, h6.section-subtitle { |
| 161 | margin-top: 0.4em } |
| 162 | |
| 163 | h1.title { |
| 164 | text-align: center } |
| 165 | |
| 166 | h2.subtitle { |
| 167 | text-align: center } |
| 168 | |
| 169 | hr.docutils { |
| 170 | width: 75% } |
| 171 | |
| 172 | img.align-left, .figure.align-left, object.align-left, table.align-left { |
| 173 | clear: left ; |
| 174 | float: left ; |
| 175 | margin-right: 1em } |
| 176 | |
| 177 | img.align-right, .figure.align-right, object.align-right, table.align-right { |
| 178 | clear: right ; |
| 179 | float: right ; |
| 180 | margin-left: 1em } |
| 181 | |
| 182 | img.align-center, .figure.align-center, object.align-center { |
| 183 | display: block; |
| 184 | margin-left: auto; |
| 185 | margin-right: auto; |
| 186 | } |
| 187 | |
| 188 | table.align-center { |
| 189 | margin-left: auto; |
| 190 | margin-right: auto; |
| 191 | } |
| 192 | |
| 193 | .align-left { |
| 194 | text-align: left } |
| 195 | |
| 196 | .align-center { |
| 197 | clear: both ; |
| 198 | text-align: center } |
| 199 | |
| 200 | .align-right { |
| 201 | text-align: right } |
| 202 | |
| 203 | /* reset inner alignment in figures */ |
| 204 | div.align-right { |
| 205 | text-align: inherit } |
| 206 | |
| 207 | /* div.align-center * { */ |
| 208 | /* text-align: left } */ |
| 209 | |
| 210 | .align-top { |
| 211 | vertical-align: top } |
| 212 | |
| 213 | .align-middle { |
| 214 | vertical-align: middle } |
| 215 | |
| 216 | .align-bottom { |
| 217 | vertical-align: bottom } |
| 218 | |
| 219 | ol.simple, ul.simple { |
| 220 | margin-bottom: 1em } |
| 221 | |
| 222 | ol.arabic { |
| 223 | list-style: decimal } |
| 224 | |
| 225 | ol.loweralpha { |
| 226 | list-style: lower-alpha } |
| 227 | |
| 228 | ol.upperalpha { |
| 229 | list-style: upper-alpha } |
| 230 | |
| 231 | ol.lowerroman { |
| 232 | list-style: lower-roman } |
| 233 | |
| 234 | ol.upperroman { |
| 235 | list-style: upper-roman } |
| 236 | |
| 237 | p.attribution { |
| 238 | text-align: right ; |
| 239 | margin-left: 50% } |
| 240 | |
| 241 | p.caption { |
| 242 | font-style: italic } |
| 243 | |
| 244 | p.credits { |
| 245 | font-style: italic ; |
| 246 | font-size: smaller } |
| 247 | |
| 248 | p.label { |
| 249 | white-space: nowrap } |
| 250 | |
| 251 | p.rubric { |
| 252 | font-weight: bold ; |
| 253 | font-size: larger ; |
| 254 | color: maroon ; |
| 255 | text-align: center } |
| 256 | |
| 257 | p.sidebar-title { |
| 258 | font-family: sans-serif ; |
| 259 | font-weight: bold ; |
| 260 | font-size: larger } |
| 261 | |
| 262 | p.sidebar-subtitle { |
| 263 | font-family: sans-serif ; |
| 264 | font-weight: bold } |
| 265 | |
| 266 | p.topic-title { |
| 267 | font-weight: bold } |
| 268 | |
| 269 | pre.address { |
| 270 | margin-bottom: 0 ; |
| 271 | margin-top: 0 ; |
| 272 | font: inherit } |
| 273 | |
| 274 | pre.literal-block, pre.doctest-block, pre.math, pre.code { |
| 275 | margin-left: 2em ; |
| 276 | margin-right: 2em } |
| 277 | |
| 278 | pre.code .ln { color: grey; } /* line numbers */ |
| 279 | pre.code, code { background-color: #eeeeee } |
| 280 | pre.code .comment, code .comment { color: #5C6576 } |
| 281 | pre.code .keyword, code .keyword { color: #3B0D06; font-weight: bold } |
| 282 | pre.code .literal.string, code .literal.string { color: #0C5404 } |
| 283 | pre.code .name.builtin, code .name.builtin { color: #352B84 } |
| 284 | pre.code .deleted, code .deleted { background-color: #DEB0A1} |
| 285 | pre.code .inserted, code .inserted { background-color: #A3D289} |
| 286 | |
| 287 | span.classifier { |
| 288 | font-family: sans-serif ; |
| 289 | font-style: oblique } |
| 290 | |
| 291 | span.classifier-delimiter { |
| 292 | font-family: sans-serif ; |
| 293 | font-weight: bold } |
| 294 | |
| 295 | span.interpreted { |
| 296 | font-family: sans-serif } |
| 297 | |
| 298 | span.option { |
| 299 | white-space: nowrap } |
| 300 | |
| 301 | span.pre { |
| 302 | white-space: pre } |
| 303 | |
| 304 | span.problematic { |
| 305 | color: red } |
| 306 | |
| 307 | span.section-subtitle { |
| 308 | /* font-size relative to parent (h1..h6 element) */ |
| 309 | font-size: 80% } |
| 310 | |
| 311 | table.citation { |
| 312 | border-left: solid 1px gray; |
| 313 | margin-left: 1px } |
| 314 | |
| 315 | table.docinfo { |
| 316 | margin: 2em 4em } |
| 317 | |
| 318 | table.docutils { |
| 319 | margin-top: 0.5em ; |
| 320 | margin-bottom: 0.5em } |
| 321 | |
| 322 | table.footnote { |
| 323 | border-left: solid 1px black; |
| 324 | margin-left: 1px } |
| 325 | |
| 326 | table.docutils td, table.docutils th, |
| 327 | table.docinfo td, table.docinfo th { |
| 328 | padding-left: 0.5em ; |
| 329 | padding-right: 0.5em ; |
| 330 | vertical-align: top } |
| 331 | |
| 332 | table.docutils th.field-name, table.docinfo th.docinfo-name { |
| 333 | font-weight: bold ; |
| 334 | text-align: left ; |
| 335 | white-space: nowrap ; |
| 336 | padding-left: 0 } |
| 337 | |
| 338 | /* "booktabs" style (no vertical lines) */ |
| 339 | table.docutils.booktabs { |
| 340 | border: 0px; |
| 341 | border-top: 2px solid; |
| 342 | border-bottom: 2px solid; |
| 343 | border-collapse: collapse; |
| 344 | } |
| 345 | table.docutils.booktabs * { |
| 346 | border: 0px; |
| 347 | } |
| 348 | table.docutils.booktabs th { |
| 349 | border-bottom: thin solid; |
| 350 | text-align: left; |
| 351 | } |
| 352 | |
| 353 | h1 tt.docutils, h2 tt.docutils, h3 tt.docutils, |
| 354 | h4 tt.docutils, h5 tt.docutils, h6 tt.docutils { |
| 355 | font-size: 100% } |
| 356 | |
| 357 | ul.auto-toc { |
| 358 | list-style-type: none } |
| 359 | |
| 360 | </style> |
| 361 | </head> |
| 362 | <body> |
| 363 | <div class="document" id="operator-workflows"> |
| 364 | <span id="workflows"></span> |
| 365 | <h1 class="title">Operator workflows</h1> |
| 366 | |
| 367 | <p><tt class="docutils literal">Workflow</tt> is a term that spilled from the SEBA Reference Design (RD) into VOLTHA.</p> |
| 368 | <p>In SEBA a workflow is a collection of subscriber management items like identification, location, |
| 369 | and bandwidth profile. In addition each workflows maps to a service type which translates to a technology profile, |
| 370 | and an operator desired flow of operations (i.e state-machine). |
| 371 | The workflow is implemented by a selection of ONOS apps, XOS services (in SEBA) |
| 372 | and a set of configurations (sadis, etcd, netcfg). Those apps paired with the configuration specified by the |
| 373 | workflow (e.g. need EAPOL) in turn create low level flows, groups, meters, schedulers, queues etc. |
| 374 | A workflow is then triggered by a particular set of APIs, for example the request to add a subscriber.</p> |
| 375 | <p>A full description of the different operator's workflows can be |
| 376 | <a class="reference external" href="https://drive.google.com/drive/folders/1MfxwoDSvAR_rgFHt6n9Sai7IuiJPrHxF">found here</a>.</p> |
| 377 | <p>A big part of the workflow in SEBA is defined within NEM (Network Edge Mediator). |
| 378 | Given that NEM is not available in a plain VOLTHA deployment the user has to ensure proper config in the right places, |
| 379 | and then triggering of api's themselves.</p> |
| 380 | <p>To deploy a specific workflow follow the steps under <cite>deploying-a-different-workflow</cite> in the <a class="reference external" href="../voltha-helm-charts/README.md">voltha-helm-charts |
| 381 | README</a>.</p> |
| 382 | <p>A workflow in VOLTHA entails different elements: Customer tag allocation, Technology profile, Bandwidth profile, |
| 383 | Flow and Group Management</p> |
| 384 | <div class="section" id="customer-tag-allocation"> |
| 385 | <h1>Customer tag allocation</h1> |
| 386 | <p>The vlan tags for a particular subscriber are defined in the <tt class="docutils literal">sadis</tt> configuration. |
| 387 | <a class="reference external" href="https://github.com/opencord/sadis">Sadis</a> stands for <cite>Subscriber and Device Information Service</cite> |
| 388 | and is the ONOS application responsible to store and distribute Subscriber information.</p> |
| 389 | <p>Information on different <tt class="docutils literal">sadis</tt> configurations can be found here: |
| 390 | <a class="reference external" href="https://docs.google.com/document/d/1JLQ51CZg4jsXsBQcrJn-fc2kVvXH6lw0PYoyIclwmBs">https://docs.google.com/document/d/1JLQ51CZg4jsXsBQcrJn-fc2kVvXH6lw0PYoyIclwmBs</a></p> |
| 391 | </div> |
| 392 | <div class="section" id="technology-profile"> |
| 393 | <h1>Technology profile</h1> |
| 394 | <p>Technology profiles describes technology specific attributes required to implement |
| 395 | Subscriber Services on an OpenFlow managed Logical Switch overlaid upon an OLT |
| 396 | or other technology specific platform.</p> |
| 397 | <p>More information on Technology profiles can be found here: |
| 398 | <a class="reference external" href="https://youtu.be/L0JBJ3R1Mag">2018/03/22 VOLTHA TST on Technology profile</a> |
| 399 | <a class="reference external" href="https://wiki-archive.opencord.org/attachments/4981667/4981671.docx">VOLTHA technical notes on Technology profile</a> |
| 400 | <a class="reference external" href="https://wiki-archive.opencord.org/attachments/4981667/4981670.docx">VOLTHA Implementation of Technology profiles</a> |
| 401 | <a class="reference external" href="https://wiki-archive.opencord.org/Technology-Profile-Instance_4982088.html">Technology profile instance example</a></p> |
| 402 | <p>Technology profiles in VOLTHA are stored in ETCD. If you want to load a custom |
| 403 | Technology profile in your stack you can do so by:</p> |
| 404 | <pre class="code bash literal-block"> |
| 405 | <span class="name variable">ETCD_POD</span><span class="operator">=</span><span class="keyword">$(</span>kubectl get pods <span class="punctuation">|</span> grep etcd <span class="punctuation">|</span> awk <span class="literal string single">'NR==1{print \$1}'</span><span class="keyword">)</span> |
| 406 | kubectl cp <my-tech-profile>.json <span class="name variable">$ETCD_POD</span>:/tmp/tp.json |
| 407 | kubectl <span class="name builtin">exec</span> -it <span class="name variable">$ETCD_POD</span> -- /bin/sh -c <span class="literal string single">'cat /tmp/tp.json | ETCDCTL_API=3 etcdctl put service/voltha/technology_profiles/XGS-PON/64'</span> |
| 408 | </pre> |
| 409 | <p><em>Note that `XGS-PON` represents the technology of your OLT device and `64` is |
| 410 | the default id of the technology profile. If you want to use a technology profile |
| 411 | that is not the default for a particular subscriber that needs to be configured |
| 412 | in `sadis`.</em></p> |
| 413 | </div> |
| 414 | <div class="section" id="bandwidth-profile"> |
| 415 | <h1>Bandwidth profile</h1> |
| 416 | <p>Bandwidth profiles control the allocation Bandwidth for a particular subscriber. |
| 417 | They are defined in the <cite>sadis</cite> application. |
| 418 | VOLTHA supports both the MEF and IETF definition of Bandwidth Profile. |
| 419 | More information on the different definitions can be found on the <a class="reference external" href="https://wiki.mef.net/display/CESG/Bandwidth+Profile">MEF wiki</a>.</p> |
| 420 | <p>MEF:</p> |
| 421 | <pre class="code json literal-block"> |
| 422 | <span class="punctuation">{</span><span class="whitespace"> |
| 423 | </span><span class="name tag">"id"</span><span class="whitespace"> </span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal string double">"Default"</span><span class="punctuation">,</span><span class="whitespace"> |
| 424 | </span><span class="name tag">"cir"</span><span class="whitespace"> </span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">1000000</span><span class="punctuation">,</span><span class="whitespace"> |
| 425 | </span><span class="name tag">"cbs"</span><span class="whitespace"> </span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">1001</span><span class="punctuation">,</span><span class="whitespace"> |
| 426 | </span><span class="name tag">"eir"</span><span class="whitespace"> </span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">1002</span><span class="punctuation">,</span><span class="whitespace"> |
| 427 | </span><span class="name tag">"ebs"</span><span class="whitespace"> </span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">1003</span><span class="punctuation">,</span><span class="whitespace"> |
| 428 | </span><span class="name tag">"air"</span><span class="whitespace"> </span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">1004</span><span class="whitespace"> |
| 429 | </span><span class="punctuation">}</span> |
| 430 | </pre> |
| 431 | <p>IETF:</p> |
| 432 | <pre class="code json literal-block"> |
| 433 | <span class="punctuation">{</span><span class="whitespace"> |
| 434 | </span><span class="name tag">"id"</span><span class="whitespace"> </span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal string double">"Default"</span><span class="punctuation">,</span><span class="whitespace"> |
| 435 | </span><span class="name tag">"pir"</span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">1168192</span><span class="punctuation">,</span><span class="whitespace"> |
| 436 | </span><span class="name tag">"pbs"</span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">0</span><span class="punctuation">,</span><span class="whitespace"> |
| 437 | </span><span class="name tag">"cir"</span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">0</span><span class="punctuation">,</span><span class="whitespace"> |
| 438 | </span><span class="name tag">"cbs"</span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">0</span><span class="punctuation">,</span><span class="whitespace"> |
| 439 | </span><span class="name tag">"gir"</span><span class="punctuation">:</span><span class="whitespace"> </span><span class="literal number integer">0</span><span class="whitespace"> |
| 440 | </span><span class="punctuation">}</span> |
| 441 | </pre> |
| 442 | <p>Each bandwidth profile is then translated into an OpenFlow Meter for configuration on the OLT.</p> |
| 443 | <p>Each OpenFlow Meter is then translated to a different TCONT type in the <cite>openolt-adapter</cite>. |
| 444 | VOLTHA supports all 5 TCONT types.</p> |
| 445 | <p>The translation of Bandwidth profile parameters to TCONT types happens as follows:</p> |
| 446 | <ul> |
| 447 | <li><div class="first line-block"> |
| 448 | <div class="line"><cite>Type-1</cite>: If CIR > 0, CIR = PIR, additional_bw_eligibility = none --> set guaranteed_bw = maximum_bw = CBR_RT_BW</div> |
| 449 | <div class="line">(or CBR_NRT_BW) = CIR and alloc_type=none. (alloc_type is inferred from the other parameters)</div> |
| 450 | </div> |
| 451 | </li> |
| 452 | <li><div class="first line-block"> |
| 453 | <div class="line"><cite>Type-2</cite>: If CIR = 0, GIR or AIR > 0, GIR or AIR = PIR, additional_bw_eligibility = none --> set guaranteed_bw =</div> |
| 454 | <div class="line">maximum_bw = AIR, CBR_RT_BW = 0 and CBR_NRT_BW = 0 and alloc_type = NSR (alloc_type is set to NSR by default)</div> |
| 455 | </div> |
| 456 | </li> |
| 457 | <li><div class="first line-block"> |
| 458 | <div class="line"><cite>Type-3</cite>: If CIR = 0, GIR or AIR > 0, PIR > GIR or AIR, additional_bw_eligibility = non_assured --></div> |
| 459 | <div class="line">guaranteed_bw = AIR, maximum_bw = PIR, CBR_RT_BW = 0 and CBR_NRT_BW = 0 and alloc_type = NSR and send</div> |
| 460 | <div class="line">these parameters to BAL. (alloc_type is set to NSR by default)</div> |
| 461 | </div> |
| 462 | </li> |
| 463 | <li><div class="first line-block"> |
| 464 | <div class="line"><cite>Type-4</cite>: if CIR = 0, GIR or AIR = 0, PIR > 0, additional_bw_eligibility = best_effort --> set</div> |
| 465 | <div class="line">guaranteed_bw = 0, maximum_bw = PIR, CBR_RT_BW = 0 and CBR_NRT_BW = 0 and alloc_type = NSR and send</div> |
| 466 | <div class="line">(alloc_type is set to NSR by default)</div> |
| 467 | </div> |
| 468 | </li> |
| 469 | <li><div class="first line-block"> |
| 470 | <div class="line"><cite>Type-5</cite>: if CIR > 0, PIR >= CIR + GIR or AIR, additional_bw_eligibility = non_assured or</div> |
| 471 | <div class="line">best_effort --> set guaranteed_bw = CIR+AIR, maximum_bw = PIR, CBR_RT_BW = 0 (or CBR_NRT_BW) = CIR</div> |
| 472 | <div class="line">and alloc_type = NSR. (alloc_type is set to NSR by default)</div> |
| 473 | </div> |
| 474 | </li> |
| 475 | </ul> |
| 476 | <p>Further implementation details can be found in <a class="reference external" href="https://docs.google.com/document/d/1HipmsHD5LEQlOc-Y2tYV7DHD1fn7-_1lehBgp79sRwU/edit#">this document</a>.</p> |
| 477 | </div> |
| 478 | <div class="section" id="flow-management"> |
| 479 | <h1>Flow management</h1> |
| 480 | <p>Flows are managed in ONOS by the <cite>olt</cite> application. Through the configuration of |
| 481 | this application you can define whether your setup will create:</p> |
| 482 | <ul class="simple"> |
| 483 | <li>An <cite>EAPOL</cite> trap flow</li> |
| 484 | <li>A <cite>DHCP</cite> trap flow</li> |
| 485 | <li>An <cite>IGMP</cite> trap flow</li> |
| 486 | </ul> |
| 487 | <p>in addition to the default data plane flows.</p> |
| 488 | </div> |
| 489 | <div class="section" id="group-management"> |
| 490 | <h1>Group management</h1> |
| 491 | <p>Groups are managed in ONOS by the <cite>mcast</cite> application. Through the configuration of |
| 492 | this application you can achieve multicast for services such as IpTV.</p> |
| 493 | </div> |
| 494 | </div> |
| 495 | </body> |
| 496 | </html> |