summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJasvinder Singh <jasvinder.singh@intel.com>2019-11-26 14:28:29 +0000
committerThomas Monjalon <thomas@monjalon.net>2019-11-26 16:13:14 +0100
commit694fd2cb8d10be0deb8bd7d41dee73601f31d415 (patch)
tree39d45e61fb1c395d41f3f81002006f5107c65600
parent4f8c7b4fcf44a2f220e464762a4042d4643d604f (diff)
downloaddpdk-694fd2cb8d10be0deb8bd7d41dee73601f31d415.zip
dpdk-694fd2cb8d10be0deb8bd7d41dee73601f31d415.tar.gz
dpdk-694fd2cb8d10be0deb8bd7d41dee73601f31d415.tar.xz
doc: update QoS scheduler guides
Updates documentation to reflect the changes in the QoS scheduler library and example. Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com> Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
-rw-r--r--doc/guides/prog_guide/img/sched_hier_per_port.pngbin58973 -> 0 bytes
-rw-r--r--doc/guides/prog_guide/img/sched_hier_per_port.svg492
-rw-r--r--doc/guides/prog_guide/qos_framework.rst110
-rw-r--r--doc/guides/sample_app_ug/ip_pipeline.rst24
-rw-r--r--doc/guides/sample_app_ug/qos_scheduler.rst92
5 files changed, 678 insertions, 40 deletions
diff --git a/doc/guides/prog_guide/img/sched_hier_per_port.png b/doc/guides/prog_guide/img/sched_hier_per_port.png
deleted file mode 100644
index 462e88a..0000000
--- a/doc/guides/prog_guide/img/sched_hier_per_port.png
+++ /dev/null
Binary files differ
diff --git a/doc/guides/prog_guide/img/sched_hier_per_port.svg b/doc/guides/prog_guide/img/sched_hier_per_port.svg
new file mode 100644
index 0000000..759dead
--- /dev/null
+++ b/doc/guides/prog_guide/img/sched_hier_per_port.svg
@@ -0,0 +1,492 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<!-- Generated by Microsoft Visio, SVG Export sched_hier_per_port.svg Page-1 -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:ev="http://www.w3.org/2001/xml-events"
+ xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" width="6.25057in" height="7.26839in"
+ viewBox="0 0 450.041 523.324" xml:space="preserve" color-interpolation-filters="sRGB" class="st8">
+ <v:documentProperties v:langID="2057" v:metric="true" v:viewMarkup="false"/>
+
+ <style type="text/css">
+ <![CDATA[
+ .st1 {fill:#0070c0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st2 {marker-end:url(#mrkr13-71);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
+ .st3 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.37313432835821}
+ .st4 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5}
+ .st5 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75}
+ .st6 {fill:#000000;font-family:Calibri;font-size:1.16666em}
+ .st7 {font-size:1em}
+ .st8 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3}
+ ]]>
+ </style>
+
+ <defs id="Markers">
+ <g id="lend13">
+ <path d="M 3 1 L 0 0 L 3 -1 L 3 1 " style="stroke:none"/>
+ </g>
+ <marker id="mrkr13-71" class="st3" v:arrowType="13" v:arrowSize="2" v:setback="8.04" refX="-8.04" orient="auto"
+ markerUnits="strokeWidth" overflow="visible">
+ <use xlink:href="#lend13" transform="scale(-2.68,-2.68) "/>
+ </marker>
+ </defs>
+ <g v:mID="0" v:index="1" v:groupContext="foregroundPage">
+ <title>Page-1</title>
+ <v:pageProperties v:drawingScale="0.0393701" v:pageScale="0.0393701" v:drawingUnits="24" v:shadowOffsetX="8.50394"
+ v:shadowOffsetY="-8.50394"/>
+ <v:layer v:name="Connector" v:index="0"/>
+ <g id="group234-1" transform="translate(0.375,-12.7124)" v:mID="234" v:groupContext="group">
+ <title>Sheet.234</title>
+ <g id="shape1-2" v:mID="1" v:groupContext="shape" transform="translate(265.039,-113.796)">
+ <title>Sheet.1</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape2-4" v:mID="2" v:groupContext="shape" transform="translate(265.039,-98.3577)">
+ <title>Sheet.2</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape3-6" v:mID="3" v:groupContext="shape" transform="translate(265.039,-82.9192)">
+ <title>Sheet.3</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape4-8" v:mID="4" v:groupContext="shape" transform="translate(265.039,-67.4807)">
+ <title>Sheet.4</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape6-10" v:mID="6" v:groupContext="shape" transform="translate(288.197,-113.796)">
+ <title>Sheet.6</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape7-12" v:mID="7" v:groupContext="shape" transform="translate(288.197,-98.3577)">
+ <title>Sheet.7</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape8-14" v:mID="8" v:groupContext="shape" transform="translate(288.197,-82.9192)">
+ <title>Sheet.8</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape9-16" v:mID="9" v:groupContext="shape" transform="translate(288.197,-67.4807)">
+ <title>Sheet.9</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape10-18" v:mID="10" v:groupContext="shape" transform="translate(311.355,-113.796)">
+ <title>Sheet.10</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape11-20" v:mID="11" v:groupContext="shape" transform="translate(311.355,-98.3577)">
+ <title>Sheet.11</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape12-22" v:mID="12" v:groupContext="shape" transform="translate(311.355,-82.9192)">
+ <title>Sheet.12</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape13-24" v:mID="13" v:groupContext="shape" transform="translate(311.355,-67.4807)">
+ <title>Sheet.13</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape14-26" v:mID="14" v:groupContext="shape" transform="translate(334.513,-113.796)">
+ <title>Sheet.14</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape15-28" v:mID="15" v:groupContext="shape" transform="translate(334.513,-98.3577)">
+ <title>Sheet.15</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape16-30" v:mID="16" v:groupContext="shape" transform="translate(334.513,-82.9192)">
+ <title>Sheet.16</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape17-32" v:mID="17" v:groupContext="shape" transform="translate(334.513,-67.4807)">
+ <title>Sheet.17</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape26-34" v:mID="26" v:groupContext="shape" transform="translate(199.484,-113.968)">
+ <title>Sheet.26</title>
+ <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/>
+ </g>
+ <g id="shape27-36" v:mID="27" v:groupContext="shape" transform="translate(199.484,-98.3577)">
+ <title>Sheet.27</title>
+ <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/>
+ </g>
+ <g id="shape28-38" v:mID="28" v:groupContext="shape" transform="translate(199.484,-82.7471)">
+ <title>Sheet.28</title>
+ <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/>
+ </g>
+ <g id="shape29-40" v:mID="29" v:groupContext="shape" transform="translate(199.484,-67.1365)">
+ <title>Sheet.29</title>
+ <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/>
+ </g>
+ <g id="shape30-42" v:mID="30" v:groupContext="shape" transform="translate(68.9749,-115.97)">
+ <title>Sheet.30</title>
+ <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/>
+ </g>
+ <g id="shape31-44" v:mID="31" v:groupContext="shape" transform="translate(68.9749,-100.65)">
+ <title>Sheet.31</title>
+ <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/>
+ </g>
+ <g id="shape32-46" v:mID="32" v:groupContext="shape" transform="translate(68.9749,-85.3307)">
+ <title>Sheet.32</title>
+ <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/>
+ </g>
+ <g id="shape33-48" v:mID="33" v:groupContext="shape" transform="translate(68.9749,-70.0112)">
+ <title>Sheet.33</title>
+ <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/>
+ </g>
+ <g id="shape40-50" v:mID="40" v:groupContext="shape" transform="translate(67.8551,-198.425)">
+ <title>Sheet.40</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape42-52" v:mID="42" v:groupContext="shape" transform="translate(198.153,-205.871)">
+ <title>Sheet.42</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape44-54" v:mID="44" v:groupContext="shape" transform="translate(297.427,-205.871)">
+ <title>Sheet.44</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape46-56" v:mID="46" v:groupContext="shape" transform="translate(170.852,-306.005)">
+ <title>Sheet.46</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape47-58" v:mID="47" v:groupContext="shape" transform="translate(255.236,-388.69)">
+ <title>Sheet.47</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape48-60" v:mID="48" v:groupContext="shape" transform="translate(341.169,-317.821)">
+ <title>Sheet.48</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape49-62" v:mID="49" v:groupContext="shape" transform="translate(344.583,-470.722)">
+ <title>Sheet.49</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape50-64" v:mID="50" v:groupContext="shape" transform="translate(426.955,-399.855)">
+ <title>Sheet.50</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape51-66" v:mID="51" v:groupContext="shape" v:layerMember="0" transform="translate(86.747,-217.661)">
+ <title>Dynamic connector</title>
+ <path d="M0 523.32 L79.21 440.59" class="st2"/>
+ </g>
+ <g id="shape52-72" v:mID="52" v:groupContext="shape" v:layerMember="0" transform="translate(71.6902,-131.289)">
+ <title>Dynamic connector.52</title>
+ <path d="M6.9 523.32 L7.21 468.25" class="st2"/>
+ </g>
+ <g id="shape157-77" v:mID="157" v:groupContext="shape" v:layerMember="0" transform="translate(202.193,-129.579)">
+ <title>Dynamic connector.157</title>
+ <path d="M7.05 523.32 L7.11 459.09" class="st2"/>
+ </g>
+ <g id="shape158-82" v:mID="158" v:groupContext="shape" v:layerMember="0" transform="translate(206.384,-227.814)">
+ <title>Dynamic connector.158</title>
+ <path d="M0 523.32 L-18.25 456.38" class="st2"/>
+ </g>
+ <g id="shape159-87" v:mID="159" v:groupContext="shape" v:layerMember="0" transform="translate(299.837,-223.969)">
+ <title>Dynamic connector.159</title>
+ <path d="M0 523.32 L-99.6 444.53" class="st2"/>
+ </g>
+ <g id="shape160-92" v:mID="160" v:groupContext="shape" v:layerMember="0" transform="translate(295.944,-129.235)">
+ <title>Dynamic connector.160</title>
+ <path d="M2.77 523.32 L10.05 458.6" class="st2"/>
+ </g>
+ <g id="shape161-97" v:mID="161" v:groupContext="shape" v:layerMember="0" transform="translate(277.428,-129.235)">
+ <title>Dynamic connector.161</title>
+ <path d="M0 523.32 L23.4 457.41" class="st2"/>
+ </g>
+ <g id="shape162-102" v:mID="162" v:groupContext="shape" v:layerMember="0" transform="translate(322.104,-129.235)">
+ <title>Dynamic connector.162</title>
+ <path d="M-2.1 523.32 L-10.52 458.55" class="st2"/>
+ </g>
+ <g id="shape163-107" v:mID="163" v:groupContext="shape" v:layerMember="0" transform="translate(341.288,-129.235)">
+ <title>Dynamic connector.163</title>
+ <path d="M0 523.32 L-24.59 457.29" class="st2"/>
+ </g>
+ <g id="shape164-112" v:mID="164" v:groupContext="shape" v:layerMember="0" transform="translate(111.288,-84.3465)">
+ <title>Dynamic connector.164</title>
+ <path d="M0 516.63 L69.49 515.85" class="st4"/>
+ </g>
+ <g id="shape165-115" v:mID="165" v:groupContext="shape" v:layerMember="0" transform="translate(189.998,-324.99)">
+ <title>Dynamic connector.165</title>
+ <path d="M0 523.32 L59.82 464.71" class="st2"/>
+ </g>
+ <g id="shape166-120" v:mID="166" v:groupContext="shape" v:layerMember="0" transform="translate(343.721,-336.095)">
+ <title>Dynamic connector.166</title>
+ <path d="M0 523.32 L-59.4 474.34" class="st2"/>
+ </g>
+ <g id="shape167-125" v:mID="167" v:groupContext="shape" v:layerMember="0" transform="translate(274.631,-407.412)">
+ <title>Dynamic connector.167</title>
+ <path d="M0 523.32 L64.01 464.55" class="st2"/>
+ </g>
+ <g id="shape168-130" v:mID="168" v:groupContext="shape" v:layerMember="0" transform="translate(429.657,-418.308)">
+ <title>Dynamic connector.168</title>
+ <path d="M0 523.32 L-56.3 474.89" class="st2"/>
+ </g>
+ <g id="shape170-135" v:mID="170" v:groupContext="shape" v:layerMember="0" transform="translate(70.9299,-2.87469)">
+ <title>Dynamic connector.170</title>
+ <path d="M6.65 523.32 L7.36 468.25" class="st2"/>
+ </g>
+ <g id="shape171-140" v:mID="171" v:groupContext="shape" v:layerMember="0" transform="translate(201.964,1.13687E-13)">
+ <title>Dynamic connector.171</title>
+ <path d="M6.93 523.32 L7.19 468.25" class="st2"/>
+ </g>
+ <g id="shape172-145" v:mID="172" v:groupContext="shape" v:layerMember="0" transform="translate(267.581,-0.34415)">
+ <title>Dynamic connector.172</title>
+ <path d="M7.07 523.32 L7.1 468.25" class="st2"/>
+ </g>
+ <g id="shape173-150" v:mID="173" v:groupContext="shape" v:layerMember="0" transform="translate(290.626,-0.34415)">
+ <title>Dynamic connector.173</title>
+ <path d="M6.98 523.32 L7.16 468.25" class="st2"/>
+ </g>
+ <g id="shape174-155" v:mID="174" v:groupContext="shape" v:layerMember="0" transform="translate(328.373,-0.34415)">
+ <title>Dynamic connector.174</title>
+ <path d="M-6.86 523.32 L-7.23 468.25" class="st2"/>
+ </g>
+ <g id="shape175-160" v:mID="175" v:groupContext="shape" v:layerMember="0" transform="translate(336.683,-0.344153)">
+ <title>Dynamic connector.175</title>
+ <path d="M6.77 523.32 L7.29 468.25" class="st2"/>
+ </g>
+ <g id="shape176-165" v:mID="176" v:groupContext="shape" transform="translate(3.59712E-14,-85.0395)">
+ <title>Sheet.176</title>
+ <desc>Queue</desc>
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+ <v:textRect cx="26.2205" cy="502.064" width="52.45" height="42.5197"/>
+ <rect x="0" y="480.804" width="52.4409" height="42.5197" class="st5"/>
+ <text x="7.19" y="506.26" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Queue</text> </g>
+ <g id="shape177-168" v:mID="177" v:groupContext="shape" transform="translate(265.039,-113.796)">
+ <title>Sheet.177</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape178-170" v:mID="178" v:groupContext="shape" transform="translate(265.039,-98.3577)">
+ <title>Sheet.178</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape179-172" v:mID="179" v:groupContext="shape" transform="translate(265.039,-82.9192)">
+ <title>Sheet.179</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape180-174" v:mID="180" v:groupContext="shape" transform="translate(265.039,-67.4807)">
+ <title>Sheet.180</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape181-176" v:mID="181" v:groupContext="shape" transform="translate(288.197,-113.796)">
+ <title>Sheet.181</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape182-178" v:mID="182" v:groupContext="shape" transform="translate(288.197,-98.3577)">
+ <title>Sheet.182</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape183-180" v:mID="183" v:groupContext="shape" transform="translate(288.197,-82.9192)">
+ <title>Sheet.183</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape184-182" v:mID="184" v:groupContext="shape" transform="translate(288.197,-67.4807)">
+ <title>Sheet.184</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape185-184" v:mID="185" v:groupContext="shape" transform="translate(311.355,-113.796)">
+ <title>Sheet.185</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape186-186" v:mID="186" v:groupContext="shape" transform="translate(311.355,-98.3577)">
+ <title>Sheet.186</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape187-188" v:mID="187" v:groupContext="shape" transform="translate(311.355,-82.9192)">
+ <title>Sheet.187</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape188-190" v:mID="188" v:groupContext="shape" transform="translate(311.355,-67.4807)">
+ <title>Sheet.188</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape189-192" v:mID="189" v:groupContext="shape" transform="translate(334.513,-113.796)">
+ <title>Sheet.189</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape190-194" v:mID="190" v:groupContext="shape" transform="translate(334.513,-98.3577)">
+ <title>Sheet.190</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape191-196" v:mID="191" v:groupContext="shape" transform="translate(334.513,-82.9192)">
+ <title>Sheet.191</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape192-198" v:mID="192" v:groupContext="shape" transform="translate(334.513,-67.4807)">
+ <title>Sheet.192</title>
+ <rect x="0" y="507.885" width="19.2981" height="15.4385" class="st1"/>
+ </g>
+ <g id="shape193-200" v:mID="193" v:groupContext="shape" transform="translate(199.484,-113.968)">
+ <title>Sheet.193</title>
+ <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/>
+ </g>
+ <g id="shape194-202" v:mID="194" v:groupContext="shape" transform="translate(199.484,-98.3577)">
+ <title>Sheet.194</title>
+ <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/>
+ </g>
+ <g id="shape195-204" v:mID="195" v:groupContext="shape" transform="translate(199.484,-82.7471)">
+ <title>Sheet.195</title>
+ <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/>
+ </g>
+ <g id="shape196-206" v:mID="196" v:groupContext="shape" transform="translate(199.484,-67.1365)">
+ <title>Sheet.196</title>
+ <rect x="0" y="507.713" width="19.5132" height="15.6106" class="st1"/>
+ </g>
+ <g id="shape197-208" v:mID="197" v:groupContext="shape" transform="translate(68.9749,-115.97)">
+ <title>Sheet.197</title>
+ <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/>
+ </g>
+ <g id="shape198-210" v:mID="198" v:groupContext="shape" transform="translate(68.9749,-100.65)">
+ <title>Sheet.198</title>
+ <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/>
+ </g>
+ <g id="shape199-212" v:mID="199" v:groupContext="shape" transform="translate(68.9749,-85.3307)">
+ <title>Sheet.199</title>
+ <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/>
+ </g>
+ <g id="shape200-214" v:mID="200" v:groupContext="shape" transform="translate(68.9749,-70.0112)">
+ <title>Sheet.200</title>
+ <rect x="0" y="508.004" width="19.1493" height="15.3195" class="st1"/>
+ </g>
+ <g id="shape201-216" v:mID="201" v:groupContext="shape" transform="translate(67.8551,-198.425)">
+ <title>Sheet.201</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape202-218" v:mID="202" v:groupContext="shape" transform="translate(198.153,-205.871)">
+ <title>Sheet.202</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape203-220" v:mID="203" v:groupContext="shape" transform="translate(297.427,-205.871)">
+ <title>Sheet.203</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape204-222" v:mID="204" v:groupContext="shape" transform="translate(170.852,-306.005)">
+ <title>Sheet.204</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape205-224" v:mID="205" v:groupContext="shape" transform="translate(255.236,-388.69)">
+ <title>Sheet.205</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape206-226" v:mID="206" v:groupContext="shape" transform="translate(341.169,-317.821)">
+ <title>Sheet.206</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape207-228" v:mID="207" v:groupContext="shape" transform="translate(344.583,-470.722)">
+ <title>Sheet.207</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape208-230" v:mID="208" v:groupContext="shape" transform="translate(426.955,-399.855)">
+ <title>Sheet.208</title>
+ <ellipse cx="11.1684" cy="512.155" rx="11.1684" ry="11.1684" class="st1"/>
+ </g>
+ <g id="shape209-232" v:mID="209" v:groupContext="shape" v:layerMember="0" transform="translate(86.747,-217.661)">
+ <title>Dynamic connector.209</title>
+ <path d="M0 523.32 L79.21 440.59" class="st2"/>
+ </g>
+ <g id="shape210-237" v:mID="210" v:groupContext="shape" v:layerMember="0" transform="translate(71.6902,-131.289)">
+ <title>Dynamic connector.210</title>
+ <path d="M6.9 523.32 L7.21 468.25" class="st2"/>
+ </g>
+ <g id="shape211-242" v:mID="211" v:groupContext="shape" v:layerMember="0" transform="translate(202.193,-129.579)">
+ <title>Dynamic connector.211</title>
+ <path d="M7.05 523.32 L7.11 459.09" class="st2"/>
+ </g>
+ <g id="shape212-247" v:mID="212" v:groupContext="shape" v:layerMember="0" transform="translate(206.384,-227.814)">
+ <title>Dynamic connector.212</title>
+ <path d="M0 523.32 L-18.25 456.38" class="st2"/>
+ </g>
+ <g id="shape213-252" v:mID="213" v:groupContext="shape" v:layerMember="0" transform="translate(299.837,-223.969)">
+ <title>Dynamic connector.213</title>
+ <path d="M0 523.32 L-99.6 444.53" class="st2"/>
+ </g>
+ <g id="shape214-257" v:mID="214" v:groupContext="shape" v:layerMember="0" transform="translate(295.944,-129.235)">
+ <title>Dynamic connector.214</title>
+ <path d="M2.77 523.32 L10.05 458.6" class="st2"/>
+ </g>
+ <g id="shape215-262" v:mID="215" v:groupContext="shape" v:layerMember="0" transform="translate(277.428,-129.235)">
+ <title>Dynamic connector.215</title>
+ <path d="M0 523.32 L23.4 457.41" class="st2"/>
+ </g>
+ <g id="shape216-267" v:mID="216" v:groupContext="shape" v:layerMember="0" transform="translate(322.104,-129.235)">
+ <title>Dynamic connector.216</title>
+ <path d="M-2.1 523.32 L-10.52 458.55" class="st2"/>
+ </g>
+ <g id="shape217-272" v:mID="217" v:groupContext="shape" v:layerMember="0" transform="translate(341.288,-129.235)">
+ <title>Dynamic connector.217</title>
+ <path d="M0 523.32 L-24.59 457.29" class="st2"/>
+ </g>
+ <g id="shape218-277" v:mID="218" v:groupContext="shape" v:layerMember="0" transform="translate(111.288,-84.3465)">
+ <title>Dynamic connector.218</title>
+ <path d="M0 516.63 L69.49 515.85" class="st4"/>
+ </g>
+ <g id="shape219-280" v:mID="219" v:groupContext="shape" v:layerMember="0" transform="translate(189.998,-324.99)">
+ <title>Dynamic connector.219</title>
+ <path d="M0 523.32 L59.82 464.71" class="st2"/>
+ </g>
+ <g id="shape220-285" v:mID="220" v:groupContext="shape" v:layerMember="0" transform="translate(343.721,-336.095)">
+ <title>Dynamic connector.220</title>
+ <path d="M0 523.32 L-59.4 474.34" class="st2"/>
+ </g>
+ <g id="shape221-290" v:mID="221" v:groupContext="shape" v:layerMember="0" transform="translate(274.631,-407.412)">
+ <title>Dynamic connector.221</title>
+ <path d="M0 523.32 L64.01 464.55" class="st2"/>
+ </g>
+ <g id="shape222-295" v:mID="222" v:groupContext="shape" v:layerMember="0" transform="translate(429.657,-418.308)">
+ <title>Dynamic connector.222</title>
+ <path d="M0 523.32 L-56.3 474.89" class="st2"/>
+ </g>
+ <g id="shape223-300" v:mID="223" v:groupContext="shape" v:layerMember="0" transform="translate(70.9299,-2.87469)">
+ <title>Dynamic connector.223</title>
+ <path d="M6.65 523.32 L7.36 468.25" class="st2"/>
+ </g>
+ <g id="shape224-305" v:mID="224" v:groupContext="shape" v:layerMember="0" transform="translate(201.964,1.13687E-13)">
+ <title>Dynamic connector.224</title>
+ <path d="M6.93 523.32 L7.19 468.25" class="st2"/>
+ </g>
+ <g id="shape225-310" v:mID="225" v:groupContext="shape" v:layerMember="0" transform="translate(267.581,-0.34415)">
+ <title>Dynamic connector.225</title>
+ <path d="M7.07 523.32 L7.1 468.25" class="st2"/>
+ </g>
+ <g id="shape226-315" v:mID="226" v:groupContext="shape" v:layerMember="0" transform="translate(290.626,-0.34415)">
+ <title>Dynamic connector.226</title>
+ <path d="M6.98 523.32 L7.16 468.25" class="st2"/>
+ </g>
+ <g id="shape227-320" v:mID="227" v:groupContext="shape" v:layerMember="0" transform="translate(328.373,-0.34415)">
+ <title>Dynamic connector.227</title>
+ <path d="M-6.86 523.32 L-7.23 468.25" class="st2"/>
+ </g>
+ <g id="shape228-325" v:mID="228" v:groupContext="shape" v:layerMember="0" transform="translate(336.683,-0.344153)">
+ <title>Dynamic connector.228</title>
+ <path d="M6.77 523.32 L7.29 468.25" class="st2"/>
+ </g>
+ <g id="shape230-330" v:mID="230" v:groupContext="shape" transform="translate(9.92126,-185.273)">
+ <title>Sheet.230</title>
+ <desc>Traffic Class</desc>
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+ <v:textRect cx="26.2205" cy="499.003" width="52.45" height="48.6423"/>
+ <rect x="0" y="474.681" width="52.4409" height="48.6423" class="st5"/>
+ <text x="8.18" y="494.8" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Traffic<v:newlineChar/><tspan
+ x="12.05" dy="1.2em" class="st7">Class</tspan></text> </g>
+ <g id="shape231-334" v:mID="231" v:groupContext="shape" transform="translate(113.386,-297.638)">
+ <title>Sheet.231</title>
+ <desc>Pipe</desc>
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+ <v:textRect cx="26.2205" cy="499.003" width="52.45" height="48.6423"/>
+ <rect x="0" y="474.681" width="52.4409" height="48.6423" class="st5"/>
+ <text x="13.84" y="503.2" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Pipe</text> </g>
+ <g id="shape232-337" v:mID="232" v:groupContext="shape" transform="translate(185.669,-382.677)">
+ <title>Sheet.232</title>
+ <desc>Subport</desc>
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+ <v:textRect cx="32.5984" cy="499.003" width="65.2" height="48.6423"/>
+ <rect x="0" y="474.681" width="65.1969" height="48.6423" class="st5"/>
+ <text x="9.87" y="503.2" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Subport</text> </g>
+ <g id="shape233-340" v:mID="233" v:groupContext="shape" transform="translate(284.882,-461.594)">
+ <title>Sheet.233</title>
+ <desc>Port</desc>
+ <v:textBlock v:margins="rect(4,4,4,4)" v:tabSpace="42.5197"/>
+ <v:textRect cx="32.5984" cy="499.003" width="65.2" height="48.6423"/>
+ <rect x="0" y="474.681" width="65.1969" height="48.6423" class="st5"/>
+ <text x="20.51" y="503.2" class="st6" v:langID="2057"><v:paragraph v:horizAlign="1"/><v:tabList/>Port</text> </g>
+ </g>
+ </g>
+</svg>
diff --git a/doc/guides/prog_guide/qos_framework.rst b/doc/guides/prog_guide/qos_framework.rst
index a7527b2..a159709 100644
--- a/doc/guides/prog_guide/qos_framework.rst
+++ b/doc/guides/prog_guide/qos_framework.rst
@@ -171,7 +171,7 @@ The functionality of each hierarchical level is detailed in the following table.
| | | | token bucket per pipe. |
| | | | |
+---+--------------------+----------------------------+---------------------------------------------------------------+
- | 4 | Traffic Class (TC) | 4 | #. TCs of the same pipe handled in strict priority order. |
+ | 4 | Traffic Class (TC) | 13 | #. TCs of the same pipe handled in strict priority order. |
| | | | |
| | | | #. Upper limit enforced per TC at the pipe level. |
| | | | |
@@ -183,8 +183,13 @@ The functionality of each hierarchical level is detailed in the following table.
| | | | adjusted value that is shared by all the subport pipes. |
| | | | |
+---+--------------------+----------------------------+---------------------------------------------------------------+
- | 5 | Queue | 4 | #. Queues of the same TC are serviced using Weighted Round |
- | | | | Robin (WRR) according to predefined weights. |
+ | 5 | Queue | High priority TCs: 1, | #. All the high priority TCs (TC0, TC1, ...,TC11) have |
+ | | | Lowest priority TC: 4 | exactly 1 queue, while the lowest priority TC (TC12), |
+ | | | | called Best Effort (BE), has 4 queues. |
+ | | | | |
+ | | | | #. Queues of the lowest priority TC (BE) are serviced using |
+ | | | | Weighted Round Robin (WRR) according to predefined weights|
+ | | | | weights. |
| | | | |
+---+--------------------+----------------------------+---------------------------------------------------------------+
@@ -730,10 +735,10 @@ Implementation of Strict Priority Scheduling
Strict priority scheduling of traffic classes within the same pipe is implemented by the pipe dequeue state machine,
which selects the queues in ascending order.
-Therefore, queues 0..3 (associated with TC 0, highest priority TC) are handled before
-queues 4..7 (TC 1, lower priority than TC 0),
-which are handled before queues 8..11 (TC 2),
-which are handled before queues 12..15 (TC 3, lowest priority TC).
+Therefore, queue 0 (associated with TC 0, highest priority TC) is handled before
+queue 1 (TC 1, lower priority than TC 0),
+which is handled before queue 2 (TC 2, lower priority than TC 1) and it conitnues until queues of all TCs except the
+lowest priority TC are handled. At last, queues 12..15 (best effort TC, lowest priority TC) are handled.
Upper Limit Enforcement
'''''''''''''''''''''''
@@ -753,14 +758,14 @@ as described in :numref:`table_qos_10` and :numref:`table_qos_11`.
| # | Subport or pipe field | Unit | Description |
| | | | |
+===+=======================+=======+=======================================================================+
- | 1 | tc_time | Bytes | Time of the next update (upper limit refill) for the 4 TCs of the |
+ | 1 | tc_time | Bytes | Time of the next update (upper limit refill) for the TCs of the |
| | | | current subport / pipe. |
| | | | |
| | | | See Section `Internal Time Reference`_ for the |
| | | | explanation of why the time is maintained in byte units. |
| | | | |
+---+-----------------------+-------+-----------------------------------------------------------------------+
- | 2 | tc_period | Bytes | Time between two consecutive updates for the 4 TCs of the current |
+ | 2 | tc_period | Bytes | Time between two consecutive updates for the all TCs of the current |
| | | | subport / pipe. This is expected to be many times bigger than the |
| | | | typical value of the token bucket tb_period. |
| | | | |
@@ -815,7 +820,7 @@ as described in :numref:`table_qos_10` and :numref:`table_qos_11`.
Weighted Round Robin (WRR)
""""""""""""""""""""""""""
-The evolution of the WRR design solution from simple to complex is shown in :numref:`table_qos_12`.
+The evolution of the WRR design solution for the lowest priority traffic class (best effort TC) from simple to complex is shown in :numref:`table_qos_12`.
.. _table_qos_12:
@@ -977,33 +982,33 @@ with the third approach selected for implementation.
| | | |
+-----+---------------------------+-------------------------------------------------------------------------+
-Typically, the subport TC oversubscription feature is enabled only for the lowest priority traffic class (TC 3),
+Typically, the subport TC oversubscription feature is enabled only for the lowest priority traffic class,
which is typically used for best effort traffic,
with the management plane preventing this condition from occurring for the other (higher priority) traffic classes.
-To ease implementation, it is also assumed that the upper limit for subport TC 3 is set to 100% of the subport rate,
-and that the upper limit for pipe TC 3 is set to 100% of pipe rate for all subport member pipes.
+To ease implementation, it is also assumed that the upper limit for subport best effort TC is set to 100% of the subport rate,
+and that the upper limit for pipe best effort TC is set to 100% of pipe rate for all subport member pipes.
Implementation Overview
'''''''''''''''''''''''
The algorithm computes a watermark, which is periodically updated based on the current demand experienced by the subport member pipes,
-whose purpose is to limit the amount of traffic that each pipe is allowed to send for TC 3.
+whose purpose is to limit the amount of traffic that each pipe is allowed to send for best effort TC.
The watermark is computed at the subport level at the beginning of each traffic class upper limit enforcement period and
the same value is used by all the subport member pipes throughout the current enforcement period.
illustrates how the watermark computed as subport level at the beginning of each period is propagated to all subport member pipes.
At the beginning of the current enforcement period (which coincides with the end of the previous enforcement period),
-the value of the watermark is adjusted based on the amount of bandwidth allocated to TC 3 at the beginning of the previous period that
+the value of the watermark is adjusted based on the amount of bandwidth allocated to best effort TC at the beginning of the previous period that
was not left unused by the subport member pipes at the end of the previous period.
-If there was subport TC 3 bandwidth left unused,
+If there was subport best effort TC bandwidth left unused,
the value of the watermark for the current period is increased to encourage the subport member pipes to consume more bandwidth.
-Otherwise, the value of the watermark is decreased to enforce equality of bandwidth consumption among subport member pipes for TC 3.
+Otherwise, the value of the watermark is decreased to enforce equality of bandwidth consumption among subport member pipes for best effort TC.
The increase or decrease in the watermark value is done in small increments,
so several enforcement periods might be required to reach the equilibrium state.
-This state can change at any moment due to variations in the demand experienced by the subport member pipes for TC 3, for example,
+This state can change at any moment due to variations in the demand experienced by the subport member pipes for best effort TC, for example,
as a result of demand increase (when the watermark needs to be lowered) or demand decrease (when the watermark needs to be increased).
When demand is low, the watermark is set high to prevent it from impeding the subport member pipes from consuming more bandwidth.
@@ -1084,10 +1089,27 @@ The highest value for the watermark is picked as the highest rate configured for
| | | |
| | | tc3_cons = subport_tc3_credits_per_period - subport_tc3_credits; |
| | | |
- | | | tc3_cons_max = subport_tc3_credits_per_period - (tc0_cons + tc1_cons + |
- | | | tc2_cons); |
+ | | | tc4_cons = subport_tc4_credits_per_period - subport_tc4_credits; |
+ | | | |
+ | | | tc5_cons = subport_tc5_credits_per_period - subport_tc5_credits; |
+ | | | |
+ | | | tc6_cons = subport_tc6_credits_per_period - subport_tc6_credits; |
+ | | | |
+ | | | tc7_cons = subport_tc7_credits_per_period - subport_tc7_credits; |
+ | | | |
+ | | | tc8_cons = subport_tc8_credits_per_period - subport_tc8_credits; |
| | | |
- | | | if(tc3_consumption > (tc3_consumption_max - MTU)){ |
+ | | | tc9_cons = subport_tc9_credits_per_period - subport_tc9_credits; |
+ | | | |
+ | | | tc10_cons = subport_tc10_credits_per_period - subport_tc10_credits; |
+ | | | |
+ | | | tc11_cons = subport_tc11_credits_per_period - subport_tc11_credits; |
+ | | | |
+ | | | tc_be_cons_max = subport_tc_be_credits_per_period - (tc0_cons + tc1_cons + |
+ | | | tc2_cons + tc3_cons + tc4_cons + tc5_cons + tc6_cons + tc7_cons + tc8_cons + |
+ | | | tc9_cons + tc10_cons + tc11_cons); |
+ | | | |
+ | | | if(tc_be_consumption > (tc_be_consumption_max - MTU)){ |
| | | |
| | | wm -= wm >> 7; |
| | | |
@@ -1555,6 +1577,52 @@ A sample RED configuration is shown below. In this example, the queue size is 64
tc 3 wred inv prob = 10 10 10
tc 3 wred weight = 9 9 9
+ tc 4 wred min = 28 22 16
+ tc 4 wred max = 32 32 32
+ tc 4 wred inv prob = 10 10 10
+ tc 4 wred weight = 9 9 9
+
+ tc 5 wred min = 28 22 16
+ tc 5 wred max = 32 32 32
+ tc 5 wred inv prob = 10 10 10
+ tc 5 wred weight = 9 9 9
+
+ tc 6 wred min = 28 22 16
+ tc 6 wred max = 32 32 32
+ tc 6 wred inv prob = 10 10 10
+ tc 6 wred weight = 9 9 9
+
+ tc 7 wred min = 28 22 16
+ tc 7 wred max = 32 32 32
+ tc 7 wred inv prob = 10 10 10
+ tc 7 wred weight = 9 9 9
+
+ tc 8 wred min = 28 22 16
+ tc 8 wred max = 32 32 32
+ tc 8 wred inv prob = 10 10 10
+ tc 8 wred weight = 9 9 9
+
+ tc 9 wred min = 28 22 16
+ tc 9 wred max = 32 32 32
+ tc 9 wred inv prob = 10 10 10
+ tc 9 wred weight = 9 9 9
+
+
+ tc 10 wred min = 28 22 16
+ tc 10 wred max = 32 32 32
+ tc 10 wred inv prob = 10 10 10
+ tc 10 wred weight = 9 9 9
+
+ tc 11 wred min = 28 22 16
+ tc 11 wred max = 32 32 32
+ tc 11 wred inv prob = 10 10 10
+ tc 11 wred weight = 9 9 9
+
+ tc 12 wred min = 28 22 16
+ tc 12 wred max = 32 32 32
+ tc 12 wred inv prob = 10 10 10
+ tc 12 wred weight = 9 9 9
+
With this configuration file, the RED configuration that applies to green,
yellow and red packets in traffic class 0 is shown in :numref:`table_qos_18`.
diff --git a/doc/guides/sample_app_ug/ip_pipeline.rst b/doc/guides/sample_app_ug/ip_pipeline.rst
index 4da0fcf..56014be 100644
--- a/doc/guides/sample_app_ug/ip_pipeline.rst
+++ b/doc/guides/sample_app_ug/ip_pipeline.rst
@@ -249,27 +249,35 @@ Traffic manager
tmgr subport profile
<tb_rate> <tb_size>
- <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>
+ <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate>
+ <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate>
+ <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate>
<tc_period>
-
+ pps <n_pipes_per_subport>
+ qsize <qsize_tc0> <qsize_tc1> <qsize_tc2>
+ <qsize_tc3> <qsize_tc4> <qsize_tc5> <qsize_tc6>
+ <qsize_tc7> <qsize_tc8> <qsize_tc9> <qsize_tc10>
+ <qsize_tc11> <qsize_tc12>
Add traffic manager pipe profile ::
tmgr pipe profile
<tb_rate> <tb_size>
- <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate>
+ <tc0_rate> <tc1_rate> <tc2_rate> <tc3_rate> <tc4_rate>
+ <tc5_rate> <tc6_rate> <tc7_rate> <tc8_rate>
+ <tc9_rate> <tc10_rate> <tc11_rate> <tc12_rate>
<tc_period>
- <tc_ov_weight> <wrr_weight0..15>
+ <tc_ov_weight>
+ <wrr_weight0..3>
Create traffic manager port ::
tmgr <tmgr_name>
rate <rate>
spp <n_subports_per_port>
- pps <n_pipes_per_subport>
- qsize <qsize_tc0>
- <qsize_tc1> <qsize_tc2> <qsize_tc3>
- fo <frame_overhead> mtu <mtu> cpu <cpu_id>
+ fo <frame_overhead>
+ mtu <mtu>
+ cpu <cpu_id>
Configure traffic manager subport ::
diff --git a/doc/guides/sample_app_ug/qos_scheduler.rst b/doc/guides/sample_app_ug/qos_scheduler.rst
index cdd29d9..b501065 100644
--- a/doc/guides/sample_app_ug/qos_scheduler.rst
+++ b/doc/guides/sample_app_ug/qos_scheduler.rst
@@ -22,7 +22,7 @@ There are two flavors of the runtime execution for this application,
with two or three threads per each packet flow configuration being used.
The RX thread reads packets from the RX port,
classifies the packets based on the double VLAN (outer and inner) and
-the lower two bytes of the IP destination address and puts them into the ring queue.
+the lower byte of the IP destination address and puts them into the ring queue.
The worker thread dequeues the packets from the ring and calls the QoS scheduler enqueue/dequeue functions.
If a separate TX core is used, these are sent to the TX ring.
Otherwise, they are sent directly to the TX port.
@@ -129,18 +129,28 @@ The profile file has the following format:
frame overhead = 24
number of subports per port = 1
- number of pipes per subport = 4096
- queue sizes = 64 64 64 64
; Subport configuration
[subport 0]
+ number of pipes per subport = 4096
+ queue sizes = 64 64 64 64 64 64 64 64 64 64 64 64 64
tb rate = 1250000000; Bytes per second
tb size = 1000000; Bytes
tc 0 rate = 1250000000; Bytes per second
tc 1 rate = 1250000000; Bytes per second
tc 2 rate = 1250000000; Bytes per second
tc 3 rate = 1250000000; Bytes per second
+ tc 4 rate = 1250000000; Bytes per second
+ tc 5 rate = 1250000000; Bytes per second
+ tc 6 rate = 1250000000; Bytes per second
+ tc 7 rate = 1250000000; Bytes per second
+ tc 8 rate = 1250000000; Bytes per second
+ tc 9 rate = 1250000000; Bytes per second
+ tc 10 rate = 1250000000; Bytes per second
+ tc 11 rate = 1250000000; Bytes per second
+ tc 12 rate = 1250000000; Bytes per second
+
tc period = 10; Milliseconds
tc oversubscription period = 10; Milliseconds
@@ -156,17 +166,32 @@ The profile file has the following format:
tc 1 rate = 305175; Bytes per second
tc 2 rate = 305175; Bytes per second
tc 3 rate = 305175; Bytes per second
+ tc 4 rate = 305175; Bytes per second
+ tc 5 rate = 305175; Bytes per second
+ tc 6 rate = 305175; Bytes per second
+ tc 7 rate = 305175; Bytes per second
+ tc 8 rate = 305175; Bytes per second
+ tc 9 rate = 305175; Bytes per second
+ tc 10 rate = 305175; Bytes per second
+ tc 11 rate = 305175; Bytes per second
+ tc 12 rate = 305175; Bytes per second
tc period = 40; Milliseconds
tc 0 oversubscription weight = 1
tc 1 oversubscription weight = 1
tc 2 oversubscription weight = 1
tc 3 oversubscription weight = 1
-
- tc 0 wrr weights = 1 1 1 1
- tc 1 wrr weights = 1 1 1 1
- tc 2 wrr weights = 1 1 1 1
- tc 3 wrr weights = 1 1 1 1
+ tc 4 oversubscription weight = 1
+ tc 5 oversubscription weight = 1
+ tc 6 oversubscription weight = 1
+ tc 7 oversubscription weight = 1
+ tc 8 oversubscription weight = 1
+ tc 9 oversubscription weight = 1
+ tc 10 oversubscription weight = 1
+ tc 11 oversubscription weight = 1
+ tc 12 oversubscription weight = 1
+
+ tc 12 wrr weights = 1 1 1 1
; RED params per traffic class and color (Green / Yellow / Red)
@@ -191,6 +216,51 @@ The profile file has the following format:
tc 3 wred inv prob = 10 10 10
tc 3 wred weight = 9 9 9
+ tc 4 wred min = 48 40 32
+ tc 4 wred max = 64 64 64
+ tc 4 wred inv prob = 10 10 10
+ tc 4 wred weight = 9 9 9
+
+ tc 5 wred min = 48 40 32
+ tc 5 wred max = 64 64 64
+ tc 5 wred inv prob = 10 10 10
+ tc 5 wred weight = 9 9 9
+
+ tc 6 wred min = 48 40 32
+ tc 6 wred max = 64 64 64
+ tc 6 wred inv prob = 10 10 10
+ tc 6 wred weight = 9 9 9
+
+ tc 7 wred min = 48 40 32
+ tc 7 wred max = 64 64 64
+ tc 7 wred inv prob = 10 10 10
+ tc 7 wred weight = 9 9 9
+
+ tc 8 wred min = 48 40 32
+ tc 8 wred max = 64 64 64
+ tc 8 wred inv prob = 10 10 10
+ tc 8 wred weight = 9 9 9
+
+ tc 9 wred min = 48 40 32
+ tc 9 wred max = 64 64 64
+ tc 9 wred inv prob = 10 10 10
+ tc 9 wred weight = 9 9 9
+
+ tc 10 wred min = 48 40 32
+ tc 10 wred max = 64 64 64
+ tc 10 wred inv prob = 10 10 10
+ tc 10 wred weight = 9 9 9
+
+ tc 11 wred min = 48 40 32
+ tc 11 wred max = 64 64 64
+ tc 11 wred inv prob = 10 10 10
+ tc 11 wred weight = 9 9 9
+
+ tc 12 wred min = 48 40 32
+ tc 12 wred max = 64 64 64
+ tc 12 wred inv prob = 10 10 10
+ tc 12 wred weight = 9 9 9
+
Interactive mode
~~~~~~~~~~~~~~~~
@@ -295,11 +365,11 @@ This application classifies based on the QinQ double VLAN tags and the IP destin
| Pipe | Config (4k) | Traffic shaped (token bucket) | Inner VLAN tag |
| | | | |
+----------------+-------------------------+--------------------------------------------------+----------------------------------+
- | Traffic Class | 4 | TCs of the same pipe services in strict priority | Destination IP address (0.0.X.0) |
+ | Traffic Class | 13 | TCs of the same pipe services in strict priority | Destination IP address (0.0.0.X) |
| | | | |
+----------------+-------------------------+--------------------------------------------------+----------------------------------+
- | Queue | 4 | Queue of the same TC serviced in WRR | Destination IP address (0.0.0.X) |
- | | | | |
+ | Queue | High Priority TC: 1, | Queue of lowest priority traffic | Destination IP address (0.0.0.X) |
+ | | Lowest Priority TC: 4 | class (Best effort) serviced in WRR | |
+----------------+-------------------------+--------------------------------------------------+----------------------------------+
Please refer to the "QoS Scheduler" chapter in the *DPDK Programmer's Guide* for more information about these parameters.