Adds documentation for the Toeplitz hash library Signed-off-by: Vladimir Medvedkin <vladimir.medved...@intel.com> Reviewed-by: Konstantin Ananyev <konstantin.anan...@intel.com> Reviewed-by: John McNamara <john.mcnam...@intel.com> --- doc/guides/prog_guide/img/predictable_snat_1.svg | 1444 +++++++++++++++++++++ doc/guides/prog_guide/img/predictable_snat_2.svg | 1444 +++++++++++++++++++++ doc/guides/prog_guide/img/rss_queue_assign.svg | 1454 ++++++++++++++++++++++ doc/guides/prog_guide/index.rst | 1 + doc/guides/prog_guide/toeplitz_hash_lib.rst | 289 +++++ doc/guides/rel_notes/release_21_05.rst | 6 + 6 files changed, 4638 insertions(+) create mode 100644 doc/guides/prog_guide/img/predictable_snat_1.svg create mode 100644 doc/guides/prog_guide/img/predictable_snat_2.svg create mode 100644 doc/guides/prog_guide/img/rss_queue_assign.svg create mode 100644 doc/guides/prog_guide/toeplitz_hash_lib.rst
diff --git a/doc/guides/prog_guide/img/predictable_snat_1.svg b/doc/guides/prog_guide/img/predictable_snat_1.svg new file mode 100644 index 0000000..5f97ccb --- /dev/null +++ b/doc/guides/prog_guide/img/predictable_snat_1.svg @@ -0,0 +1,1444 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generated by Microsoft Visio, SVG Export predictable_snat_1.svg Page-4 --> + +<svg + xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="7.8211055in" + height="1.8973334in" + viewBox="0 0 563.12017 136.6082" + xml:space="preserve" + class="st14" + version="1.1" + id="svg1495" + sodipodi:docname="predictable_snat_1.svg" + style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-rule:evenodd;stroke-linecap:square;stroke-miterlimit:3" + inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata + id="metadata1499"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1640" + inkscape:window-height="878" + id="namedview1497" + showgrid="false" + inkscape:zoom="0.75544421" + inkscape:cx="638.25085" + inkscape:cy="70.081592" + inkscape:window-x="52" + inkscape:window-y="52" + inkscape:window-maximized="0" + inkscape:current-layer="svg1495" /> + <v:documentProperties + v:langID="6153" + v:metric="true" + v:viewMarkup="false"> + <v:userDefs> + <v:ud + v:nameU="msvNoAutoConnect" + v:val="VT0(1):26" /> + </v:userDefs> + </v:documentProperties> + + <style + type="text/css" + id="style1158"> + <![CDATA[ + .st1 {fill:#ff00ff;fill-opacity:0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0;stroke-width:0.72} + .st2 {fill:url(#grad0-7);stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st3 {fill:#ff0000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st4 {fill:url(#grad0-19);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st5 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st6 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24;visibility:hidden} + .st7 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st8 {fill:#000000;font-family:Calibri;font-size:0.666664em} + .st9 {marker-end:url(#mrkr4-70);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.239976} + .st10 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.086948582161584} + .st11 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st12 {fill:#000000;font-family:Calibri;font-size:1.00001em} + .st13 {font-size:1em} + .st14 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs + id="Patterns_And_Gradients"> + <linearGradient + id="grad0-7" + x1="-0.2804561" + y1="1048.661" + x2="32.190596" + y2="1048.661" + gradientTransform="scale(1.2836234,0.7790447)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0" + stop-color="#ffffff" + stop-opacity="1" + id="stop1160" /> + <stop + offset="1" + stop-color="#dfdfdf" + stop-opacity="1" + id="stop1162" /> + </linearGradient> + <linearGradient + id="grad0-19" + x1="-0.30286968" + y1="967.01808" + x2="34.733349" + y2="967.01808" + gradientTransform="scale(1.1896436,0.84058789)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0.01" + stop-color="#c0c0c0" + stop-opacity="1" + id="stop1165" /> + <stop + offset="0.5" + stop-color="#ffffff" + stop-opacity="1" + id="stop1167" /> + <stop + offset="1" + stop-color="#c0c0c0" + stop-opacity="1" + id="stop1169" /> + </linearGradient> + </defs> + <defs + id="Markers"> + <g + id="lend4"> + <path + d="M 2,1 0,0 2,-1 v 2" + style="stroke:none" + id="path1173" + inkscape:connector-curvature="0" /> + </g> + <marker + id="mrkr4-70" + class="st10" + v:arrowType="4" + v:arrowSize="2" + v:setback="23.0021" + refX="-23.0021" + orient="auto" + markerUnits="strokeWidth" + overflow="visible" + style="overflow:visible;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.08694858;stroke-opacity:1"> + <use + xlink:href="#lend4" + transform="scale(-11.50105)" + id="use1176" + x="0" + y="0" + width="100%" + height="100%" /> + </marker> + </defs> + <g + v:mID="8" + v:index="4" + v:groupContext="foregroundPage" + id="g1493" + transform="translate(-98.5864,-336.89801)"> + <title + id="title1180">Page-4</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="group1001-1" + transform="translate(275.811,-396.85)" + v:mID="1001" + v:groupContext="group"> + <v:custProps> + <v:cp + v:nameU="ShapeClass" + v:lbl="ShapeClass" + v:type="0" + v:invis="true" + v:ask="false" + v:langID="1033" + v:val="VT4(Equipment)" /> + <v:cp + v:nameU="ShapeType" + v:lbl="ShapeType" + v:type="0" + v:invis="true" + v:ask="false" + v:langID="1033" + v:val="VT4(Device)" /> + <v:cp + v:nameU="SubShapeType" + v:lbl="SubShapeType" + v:type="0" + v:invis="true" + v:ask="false" + v:langID="1033" + v:val="VT4(Switch)" /> + <v:cp + v:nameU="Manufacturer" + v:lbl="Manufacturer" + v:type="0" + v:sortKey="Equipment" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="ProductNumber" + v:lbl="Product Number" + v:type="0" + v:sortKey="Equipment" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="PartNumber" + v:lbl="Part Number" + v:type="0" + v:sortKey="Equipment" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="ProductDescription" + v:lbl="Product Description" + v:type="0" + v:sortKey="Equipment" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="AssetNumber" + v:lbl="Asset Number" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="SerialNumber" + v:lbl="Serial Number" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="Location" + v:lbl="Location" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="Building" + v:lbl="Building" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="Room" + v:lbl="Room" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="NetworkName" + v:lbl="Network Name" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="IPAddress" + v:lbl="IP Address" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="SubnetMask" + v:lbl="Subnet Mask" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="AdminInterface" + v:lbl="Administrative Interface" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="NumberOfPorts" + v:lbl="Number of Ports" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="MACAddress" + v:lbl="MAC Address" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="CommunityString" + v:lbl="Community String" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="NetworkDescription" + v:lbl="Network Description" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + </v:custProps> + <v:userDefs> + <v:ud + v:nameU="HasText" + v:val="VT0(0):5" /> + <v:ud + v:nameU="ShapeClass" + v:val="VT0(5):26" /> + <v:ud + v:nameU="ShapeType" + v:val="VT0(8):26" /> + <v:ud + v:nameU="SubShapeType" + v:val="VT0(66):26" /> + <v:ud + v:nameU="visLegendShape" + v:val="VT0(2):26" /> + <v:ud + v:nameU="SolSH" + v:val="VT15({BF0433D9-CD73-4EB5-8390-8653BE590246}):41" /> + <v:ud + v:nameU="visVersion" + v:prompt="" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title1182">Router.1001</title> + <g + id="shape1002-2" + v:mID="1002" + v:groupContext="shape"> + <title + id="title1184">Sheet.1002</title> + <path + d="m 40.96,813.22 a 20.4803,12.2882 -180 1 0 -40.96,0 v 16.38 a 20.4803,12.2882 -180 1 0 40.96,0 z" + class="st1" + id="path1186" + inkscape:connector-curvature="0" + style="fill:#ff00ff;fill-opacity:0;stroke:#000000;stroke-width:0.72000003;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" /> + </g> + <g + id="shape1003-4" + v:mID="1003" + v:groupContext="shape" + transform="translate(0,-16.3843)"> + <title + id="title1189">Sheet.1003</title> + <ellipse + cx="20.480301" + cy="829.60199" + rx="20.480301" + ry="12.2882" + class="st2" + id="ellipse1191" + style="fill:url(#grad0-7);stroke:#ffffff;stroke-width:0.72000003;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1004-8" + v:mID="1004" + v:groupContext="shape" + transform="matrix(-1,0,0,1,34.4921,-28.6724)"> + <title + id="title1194">Sheet.1004</title> + <path + d="m 0,839.53 v -5.73 h 9.93 l -4.08,2.36 8.16,4.71 -1.77,1.02 -8.16,-4.71 z" + class="st3" + id="path1196" + inkscape:connector-curvature="0" + style="fill:#ff0000;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1005-10" + v:mID="1005" + v:groupContext="shape" + transform="translate(5.58168,-28.6724)"> + <title + id="title1199">Sheet.1005</title> + <path + d="m 14.9,836.16 -0.89,5.22 -9.04,0.51 4.08,-2.36 -9.05,-5.22 1.77,-1.02 9.05,5.22 z" + class="st3" + id="path1201" + inkscape:connector-curvature="0" + style="fill:#ff0000;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1006-12" + v:mID="1006" + v:groupContext="shape" + transform="translate(20.4803,-20.0707)"> + <title + id="title1204">Sheet.1006</title> + <path + d="m 0,839.02 0.89,-5.22 9.04,-0.51 -4.08,2.35 9.05,5.23 -1.78,1.02 -9.04,-5.22 z" + class="st3" + id="path1206" + inkscape:connector-curvature="0" + style="fill:#ff0000;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1007-14" + v:mID="1007" + v:groupContext="shape" + transform="matrix(1,0,0,-1,6.4685,1655.11)"> + <title + id="title1209">Sheet.1007</title> + <path + d="m 0,839.53 v -5.73 h 9.93 l -4.08,2.36 8.16,4.71 -1.77,1.02 -8.16,-4.71 z" + class="st3" + id="path1211" + inkscape:connector-curvature="0" + style="fill:#ff0000;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1008-16" + v:mID="1008" + v:groupContext="shape"> + <title + id="title1214">Sheet.1008</title> + <path + d="m 0,813.22 v 16.38 a 20.4803,12.2882 -180 1 0 40.96,0 v -16.38 a 20.4803,12.2882 0 1 1 -40.96,0 z" + class="st4" + id="path1216" + inkscape:connector-curvature="0" + style="fill:url(#grad0-19);stroke:#000000;stroke-width:0.72000003;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1009-20" + v:mID="1009" + v:groupContext="shape"> + <title + id="title1219">Sheet.1009</title> + <path + d="m 40.96,813.22 a 20.4803,12.2882 -180 1 0 -40.96,0 v 16.38 a 20.4803,12.2882 -180 1 0 40.96,0 v -16.38" + class="st5" + id="path1221" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round" /> + </g> + </g> + <g + id="group1011-23" + transform="translate(101.657,-458.787)" + v:mID="1011" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title1225">Array.1011</title> + <g + id="shape1012-24" + v:mID="1012" + v:groupContext="shape" + transform="translate(297.638)"> + <title + id="title1227">Sheet.1012</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1229" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1013-26" + v:mID="1013" + v:groupContext="shape" + transform="translate(255.118)"> + <title + id="title1232">Sheet.1013</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1234" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1014-28" + v:mID="1014" + v:groupContext="shape" + transform="translate(212.598)"> + <title + id="title1237">Sheet.1014</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1239" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1015-30" + v:mID="1015" + v:groupContext="shape" + transform="translate(170.079)"> + <title + id="title1242">Sheet.1015</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1244" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1016-32" + v:mID="1016" + v:groupContext="shape" + transform="translate(127.559)"> + <title + id="title1247">Sheet.1016</title> + <desc + id="desc1249">443</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1251" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="15.18" + y="837.20001" + class="st8" + v:langID="6153" + id="text1253" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />443</text> + </g> + <g + id="shape1017-35" + v:mID="1017" + v:groupContext="shape" + transform="translate(85.0394)"> + <title + id="title1256">Sheet.1017</title> + <desc + id="desc1258">10000</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1260" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.12" + y="837.20001" + class="st8" + v:langID="6153" + id="text1262" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />10000</text> + </g> + <g + id="shape1018-38" + v:mID="1018" + v:groupContext="shape" + transform="translate(42.5197)"> + <title + id="title1265">Sheet.1018</title> + <desc + id="desc1267">192.0.2.100</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1269" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text1271" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />192.0.2.100</text> + </g> + <g + id="shape1019-41" + v:mID="1019" + v:groupContext="shape"> + <title + id="title1274">Sheet.1019</title> + <desc + id="desc1276">10.10.10.10</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1278" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text1280" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />10.10.10.10</text> + </g> + </g> + <g + id="group1020-44" + transform="translate(321.429,-458.787)" + v:mID="1020" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title1284">Array.1020</title> + <g + id="shape1021-45" + v:mID="1021" + v:groupContext="shape" + transform="translate(297.638)"> + <title + id="title1286">Sheet.1021</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1288" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1022-47" + v:mID="1022" + v:groupContext="shape" + transform="translate(255.118)"> + <title + id="title1291">Sheet.1022</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1293" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1023-49" + v:mID="1023" + v:groupContext="shape" + transform="translate(212.598)"> + <title + id="title1296">Sheet.1023</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1298" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1024-51" + v:mID="1024" + v:groupContext="shape" + transform="translate(170.079)"> + <title + id="title1301">Sheet.1024</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1303" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1025-53" + v:mID="1025" + v:groupContext="shape" + transform="translate(127.559)"> + <title + id="title1306">Sheet.1025</title> + <desc + id="desc1308">443</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1310" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="15.18" + y="837.20001" + class="st8" + v:langID="6153" + id="text1312" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />443</text> + </g> + <g + id="shape1026-56" + v:mID="1026" + v:groupContext="shape" + transform="translate(85.0394)"> + <title + id="title1315">Sheet.1026</title> + <desc + id="desc1317">12345</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1319" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.12" + y="837.20001" + class="st8" + v:langID="6153" + id="text1321" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />12345</text> + </g> + <g + id="shape1027-59" + v:mID="1027" + v:groupContext="shape" + transform="translate(42.5197)"> + <title + id="title1324">Sheet.1027</title> + <desc + id="desc1326">192.0.2.100</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1328" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text1330" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />192.0.2.100</text> + </g> + <g + id="shape1028-62" + v:mID="1028" + v:groupContext="shape"> + <title + id="title1333">Sheet.1028</title> + <desc + id="desc1335">172.16.0.20</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1337" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text1339" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />172.16.0.20</text> + </g> + </g> + <g + id="shape1029-65" + v:mID="1029" + v:groupContext="shape" + v:layerMember="0" + transform="translate(271.736,-458.787)"> + <title + id="title1343">Dynamic connector.1029</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <path + d="M 0,834.8 H 44.17" + class="st9" + id="path1345" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:0.239976;stroke-linecap:round;stroke-linejoin:round;marker-end:url(#mrkr4-70)" /> + </g> + <g + id="group1030-71" + transform="translate(321.403,-368.504)" + v:mID="1030" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title1348">Array.1030</title> + <g + id="shape1031-72" + v:mID="1031" + v:groupContext="shape" + transform="translate(297.638)"> + <title + id="title1350">Sheet.1031</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1352" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1032-74" + v:mID="1032" + v:groupContext="shape" + transform="translate(255.118)"> + <title + id="title1355">Sheet.1032</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1357" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1033-76" + v:mID="1033" + v:groupContext="shape" + transform="translate(212.598)"> + <title + id="title1360">Sheet.1033</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1362" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1034-78" + v:mID="1034" + v:groupContext="shape" + transform="translate(170.079)"> + <title + id="title1365">Sheet.1034</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1367" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1035-80" + v:mID="1035" + v:groupContext="shape" + transform="translate(127.559)"> + <title + id="title1370">Sheet.1035</title> + <desc + id="desc1372">12345</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1374" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.12" + y="837.20001" + class="st8" + v:langID="6153" + id="text1376" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />12345</text> + </g> + <g + id="shape1036-83" + v:mID="1036" + v:groupContext="shape" + transform="translate(85.0394)"> + <title + id="title1379">Sheet.1036</title> + <desc + id="desc1381">443</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1383" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="15.18" + y="837.20001" + class="st8" + v:langID="6153" + id="text1385" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />443</text> + </g> + <g + id="shape1037-86" + v:mID="1037" + v:groupContext="shape" + transform="translate(42.5197)"> + <title + id="title1388">Sheet.1037</title> + <desc + id="desc1390">172.16.0.20</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1392" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text1394" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />172.16.0.20</text> + </g> + <g + id="shape1038-89" + v:mID="1038" + v:groupContext="shape"> + <title + id="title1397">Sheet.1038</title> + <desc + id="desc1399">192.0.2.100</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1401" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text1403" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />192.0.2.100</text> + </g> + </g> + <g + id="group1039-92" + transform="translate(98.7064,-368.504)" + v:mID="1039" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title1407">Array.1039</title> + <g + id="shape1040-93" + v:mID="1040" + v:groupContext="shape" + transform="translate(297.638)"> + <title + id="title1409">Sheet.1040</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1411" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1041-95" + v:mID="1041" + v:groupContext="shape" + transform="translate(255.118)"> + <title + id="title1414">Sheet.1041</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1416" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1042-97" + v:mID="1042" + v:groupContext="shape" + transform="translate(212.598)"> + <title + id="title1419">Sheet.1042</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1421" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1043-99" + v:mID="1043" + v:groupContext="shape" + transform="translate(170.079)"> + <title + id="title1424">Sheet.1043</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect1426" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1044-101" + v:mID="1044" + v:groupContext="shape" + transform="translate(127.559)"> + <title + id="title1429">Sheet.1044</title> + <desc + id="desc1431">10000</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1433" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.12" + y="837.20001" + class="st8" + v:langID="6153" + id="text1435" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />10000</text> + </g> + <g + id="shape1045-104" + v:mID="1045" + v:groupContext="shape" + transform="translate(85.0394)"> + <title + id="title1438">Sheet.1045</title> + <desc + id="desc1440">443</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1442" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="15.18" + y="837.20001" + class="st8" + v:langID="6153" + id="text1444" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />443</text> + </g> + <g + id="shape1046-107" + v:mID="1046" + v:groupContext="shape" + transform="translate(42.5197)"> + <title + id="title1447">Sheet.1046</title> + <desc + id="desc1449">10.10.10.10</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1451" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text1453" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />10.10.10.10</text> + </g> + <g + id="shape1047-110" + v:mID="1047" + v:groupContext="shape"> + <title + id="title1456">Sheet.1047</title> + <desc + id="desc1458">192.0.2.100</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect1460" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text1462" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />192.0.2.100</text> + </g> + </g> + <g + id="shape1048-113" + v:mID="1048" + v:groupContext="shape" + v:layerMember="0" + transform="translate(321.403,-368.504)"> + <title + id="title1466">Dynamic connector.1048</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <path + d="M 0,834.8 H -47.1" + class="st9" + id="path1468" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:0.239976;stroke-linecap:round;stroke-linejoin:round;marker-end:url(#mrkr4-70)" /> + </g> + <g + id="shape1049-118" + v:mID="1049" + v:groupContext="shape" + transform="translate(101.657,-480.047)"> + <title + id="title1471">Sheet.1049</title> + <desc + id="desc1473">RSS hash value 0xdeadbeef Packet assigned to queue 15</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="89.1142" + cy="829.417" + width="178.23" + height="24.9449" /> + <rect + x="0" + y="816.94501" + width="178.228" + height="24.944901" + class="st11" + id="rect1475" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="22.889999" + y="825.82001" + class="st12" + v:langID="6153" + id="text1479" + style="font-size:12.00012016px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />RSS hash value 0xdeadbeef<v:newlineChar /><tspan + x="19.709999" + dy="1.2em" + class="st13" + id="tspan1477" + style="font-size:12.00012016px">Packet assigned to queue 15</tspan></text> + </g> + <g + id="shape1051-122" + v:mID="1051" + v:groupContext="shape" + transform="translate(318.331,-386.079)"> + <title + id="title1482">Sheet.1051</title> + <desc + id="desc1484">RSS hash value 0xbadcab1e Packet assigned to queue 14</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="89.1142" + cy="829.417" + width="178.23" + height="24.9449" /> + <rect + x="0" + y="816.94501" + width="178.228" + height="24.944901" + class="st11" + id="rect1486" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="22.24" + y="825.82001" + class="st12" + v:langID="6153" + id="text1490" + style="font-size:12.00012016px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />RSS hash value 0xbadcab1e<v:newlineChar /><tspan + x="19.709999" + dy="1.2em" + class="st13" + id="tspan1488" + style="font-size:12.00012016px">Packet assigned to queue 14</tspan></text> + </g> + </g> +</svg> \ No newline at end of file diff --git a/doc/guides/prog_guide/img/predictable_snat_2.svg b/doc/guides/prog_guide/img/predictable_snat_2.svg new file mode 100644 index 0000000..8525459 --- /dev/null +++ b/doc/guides/prog_guide/img/predictable_snat_2.svg @@ -0,0 +1,1444 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generated by Microsoft Visio, SVG Export predictable_snat_2.svg Page-5 --> + +<svg + xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="7.8211055in" + height="1.8973334in" + viewBox="0 0 563.12017 136.6082" + xml:space="preserve" + class="st14" + version="1.1" + id="svg7179" + sodipodi:docname="predictable_snat_2.svg" + style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-rule:evenodd;stroke-linecap:square;stroke-miterlimit:3" + inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata + id="metadata7183"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1296" + inkscape:window-height="757" + id="namedview7181" + showgrid="false" + inkscape:zoom="0.3689753" + inkscape:cx="598.10007" + inkscape:cy="151.8361" + inkscape:window-x="356" + inkscape:window-y="113" + inkscape:window-maximized="0" + inkscape:current-layer="svg7179" /> + <v:documentProperties + v:langID="6153" + v:metric="true" + v:viewMarkup="false"> + <v:userDefs> + <v:ud + v:nameU="msvNoAutoConnect" + v:val="VT0(1):26" /> + </v:userDefs> + </v:documentProperties> + + <style + type="text/css" + id="style6842"> + <![CDATA[ + .st1 {fill:#ff00ff;fill-opacity:0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0;stroke-width:0.72} + .st2 {fill:url(#grad0-7);stroke:#ffffff;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st3 {fill:#ff0000;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st4 {fill:url(#grad0-19);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.72} + .st5 {stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:1.5} + .st6 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24;visibility:hidden} + .st7 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st8 {fill:#000000;font-family:Calibri;font-size:0.666664em} + .st9 {marker-end:url(#mrkr4-70);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.239976} + .st10 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.086948582161584} + .st11 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st12 {fill:#000000;font-family:Calibri;font-size:1.00001em} + .st13 {font-size:1em} + .st14 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs + id="Patterns_And_Gradients"> + <linearGradient + id="grad0-7" + x1="-0.2804561" + y1="1048.661" + x2="32.190596" + y2="1048.661" + gradientTransform="scale(1.2836234,0.7790447)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0" + stop-color="#ffffff" + stop-opacity="1" + id="stop6844" /> + <stop + offset="1" + stop-color="#dfdfdf" + stop-opacity="1" + id="stop6846" /> + </linearGradient> + <linearGradient + id="grad0-19" + x1="-0.30286968" + y1="967.01808" + x2="34.733349" + y2="967.01808" + gradientTransform="scale(1.1896436,0.84058789)" + gradientUnits="userSpaceOnUse"> + <stop + offset="0.01" + stop-color="#c0c0c0" + stop-opacity="1" + id="stop6849" /> + <stop + offset="0.5" + stop-color="#ffffff" + stop-opacity="1" + id="stop6851" /> + <stop + offset="1" + stop-color="#c0c0c0" + stop-opacity="1" + id="stop6853" /> + </linearGradient> + </defs> + <defs + id="Markers"> + <g + id="lend4"> + <path + d="M 2,1 0,0 2,-1 v 2" + style="stroke:none" + id="path6857" + inkscape:connector-curvature="0" /> + </g> + <marker + id="mrkr4-70" + class="st10" + v:arrowType="4" + v:arrowSize="2" + v:setback="23.0021" + refX="-23.0021" + orient="auto" + markerUnits="strokeWidth" + overflow="visible" + style="overflow:visible;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.08694858;stroke-opacity:1"> + <use + xlink:href="#lend4" + transform="scale(-11.50105)" + id="use6860" + x="0" + y="0" + width="100%" + height="100%" /> + </marker> + </defs> + <g + v:mID="9" + v:index="5" + v:groupContext="foregroundPage" + id="g7177" + transform="translate(-98.5864,-336.89801)"> + <title + id="title6864">Page-5</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="group1001-1" + transform="translate(275.811,-396.85)" + v:mID="1001" + v:groupContext="group"> + <v:custProps> + <v:cp + v:nameU="ShapeClass" + v:lbl="ShapeClass" + v:type="0" + v:invis="true" + v:ask="false" + v:langID="1033" + v:val="VT4(Equipment)" /> + <v:cp + v:nameU="ShapeType" + v:lbl="ShapeType" + v:type="0" + v:invis="true" + v:ask="false" + v:langID="1033" + v:val="VT4(Device)" /> + <v:cp + v:nameU="SubShapeType" + v:lbl="SubShapeType" + v:type="0" + v:invis="true" + v:ask="false" + v:langID="1033" + v:val="VT4(Switch)" /> + <v:cp + v:nameU="Manufacturer" + v:lbl="Manufacturer" + v:type="0" + v:sortKey="Equipment" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="ProductNumber" + v:lbl="Product Number" + v:type="0" + v:sortKey="Equipment" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="PartNumber" + v:lbl="Part Number" + v:type="0" + v:sortKey="Equipment" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="ProductDescription" + v:lbl="Product Description" + v:type="0" + v:sortKey="Equipment" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="AssetNumber" + v:lbl="Asset Number" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="SerialNumber" + v:lbl="Serial Number" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="Location" + v:lbl="Location" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="Building" + v:lbl="Building" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="Room" + v:lbl="Room" + v:type="0" + v:sortKey="Asset" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="NetworkName" + v:lbl="Network Name" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="IPAddress" + v:lbl="IP Address" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="SubnetMask" + v:lbl="Subnet Mask" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="AdminInterface" + v:lbl="Administrative Interface" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="NumberOfPorts" + v:lbl="Number of Ports" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="MACAddress" + v:lbl="MAC Address" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="CommunityString" + v:lbl="Community String" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + <v:cp + v:nameU="NetworkDescription" + v:lbl="Network Description" + v:type="0" + v:sortKey="Network" + v:invis="false" + v:ask="false" + v:langID="1033" /> + </v:custProps> + <v:userDefs> + <v:ud + v:nameU="HasText" + v:val="VT0(0):5" /> + <v:ud + v:nameU="ShapeClass" + v:val="VT0(5):26" /> + <v:ud + v:nameU="ShapeType" + v:val="VT0(8):26" /> + <v:ud + v:nameU="SubShapeType" + v:val="VT0(66):26" /> + <v:ud + v:nameU="visLegendShape" + v:val="VT0(2):26" /> + <v:ud + v:nameU="SolSH" + v:val="VT15({BF0433D9-CD73-4EB5-8390-8653BE590246}):41" /> + <v:ud + v:nameU="visVersion" + v:prompt="" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title6866">Router.1001</title> + <g + id="shape1002-2" + v:mID="1002" + v:groupContext="shape"> + <title + id="title6868">Sheet.1002</title> + <path + d="m 40.96,813.22 a 20.4803,12.2882 -180 1 0 -40.96,0 v 16.38 a 20.4803,12.2882 -180 1 0 40.96,0 z" + class="st1" + id="path6870" + inkscape:connector-curvature="0" + style="fill:#ff00ff;fill-opacity:0;stroke:#000000;stroke-width:0.72000003;stroke-linecap:round;stroke-linejoin:round;stroke-opacity:0" /> + </g> + <g + id="shape1003-4" + v:mID="1003" + v:groupContext="shape" + transform="translate(0,-16.3843)"> + <title + id="title6873">Sheet.1003</title> + <ellipse + cx="20.480301" + cy="829.60199" + rx="20.480301" + ry="12.2882" + class="st2" + id="ellipse6875" + style="fill:url(#grad0-7);stroke:#ffffff;stroke-width:0.72000003;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1004-8" + v:mID="1004" + v:groupContext="shape" + transform="matrix(-1,0,0,1,34.4921,-28.6724)"> + <title + id="title6878">Sheet.1004</title> + <path + d="m 0,839.53 v -5.73 h 9.93 l -4.08,2.36 8.16,4.71 -1.77,1.02 -8.16,-4.71 z" + class="st3" + id="path6880" + inkscape:connector-curvature="0" + style="fill:#ff0000;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1005-10" + v:mID="1005" + v:groupContext="shape" + transform="translate(5.58168,-28.6724)"> + <title + id="title6883">Sheet.1005</title> + <path + d="m 14.9,836.16 -0.89,5.22 -9.04,0.51 4.08,-2.36 -9.05,-5.22 1.77,-1.02 9.05,5.22 z" + class="st3" + id="path6885" + inkscape:connector-curvature="0" + style="fill:#ff0000;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1006-12" + v:mID="1006" + v:groupContext="shape" + transform="translate(20.4803,-20.0707)"> + <title + id="title6888">Sheet.1006</title> + <path + d="m 0,839.02 0.89,-5.22 9.04,-0.51 -4.08,2.35 9.05,5.23 -1.78,1.02 -9.04,-5.22 z" + class="st3" + id="path6890" + inkscape:connector-curvature="0" + style="fill:#ff0000;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1007-14" + v:mID="1007" + v:groupContext="shape" + transform="matrix(1,0,0,-1,6.4685,1655.11)"> + <title + id="title6893">Sheet.1007</title> + <path + d="m 0,839.53 v -5.73 h 9.93 l -4.08,2.36 8.16,4.71 -1.77,1.02 -8.16,-4.71 z" + class="st3" + id="path6895" + inkscape:connector-curvature="0" + style="fill:#ff0000;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1008-16" + v:mID="1008" + v:groupContext="shape"> + <title + id="title6898">Sheet.1008</title> + <path + d="m 0,813.22 v 16.38 a 20.4803,12.2882 -180 1 0 40.96,0 v -16.38 a 20.4803,12.2882 0 1 1 -40.96,0 z" + class="st4" + id="path6900" + inkscape:connector-curvature="0" + style="fill:url(#grad0-19);stroke:#000000;stroke-width:0.72000003;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1009-20" + v:mID="1009" + v:groupContext="shape"> + <title + id="title6903">Sheet.1009</title> + <path + d="m 40.96,813.22 a 20.4803,12.2882 -180 1 0 -40.96,0 v 16.38 a 20.4803,12.2882 -180 1 0 40.96,0 v -16.38" + class="st5" + id="path6905" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round" /> + </g> + </g> + <g + id="group1011-23" + transform="translate(101.657,-458.787)" + v:mID="1011" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title6909">Array.1011</title> + <g + id="shape1012-24" + v:mID="1012" + v:groupContext="shape" + transform="translate(297.638)"> + <title + id="title6911">Sheet.1012</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect6913" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1013-26" + v:mID="1013" + v:groupContext="shape" + transform="translate(255.118)"> + <title + id="title6916">Sheet.1013</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect6918" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1014-28" + v:mID="1014" + v:groupContext="shape" + transform="translate(212.598)"> + <title + id="title6921">Sheet.1014</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect6923" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1015-30" + v:mID="1015" + v:groupContext="shape" + transform="translate(170.079)"> + <title + id="title6926">Sheet.1015</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect6928" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1016-32" + v:mID="1016" + v:groupContext="shape" + transform="translate(127.559)"> + <title + id="title6931">Sheet.1016</title> + <desc + id="desc6933">443</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect6935" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="15.18" + y="837.20001" + class="st8" + v:langID="6153" + id="text6937" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />443</text> + </g> + <g + id="shape1017-35" + v:mID="1017" + v:groupContext="shape" + transform="translate(85.0394)"> + <title + id="title6940">Sheet.1017</title> + <desc + id="desc6942">10000</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect6944" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.12" + y="837.20001" + class="st8" + v:langID="6153" + id="text6946" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />10000</text> + </g> + <g + id="shape1018-38" + v:mID="1018" + v:groupContext="shape" + transform="translate(42.5197)"> + <title + id="title6949">Sheet.1018</title> + <desc + id="desc6951">192.0.2.100</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect6953" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text6955" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />192.0.2.100</text> + </g> + <g + id="shape1019-41" + v:mID="1019" + v:groupContext="shape"> + <title + id="title6958">Sheet.1019</title> + <desc + id="desc6960">10.10.10.10</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect6962" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text6964" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />10.10.10.10</text> + </g> + </g> + <g + id="group1020-44" + transform="translate(321.429,-458.787)" + v:mID="1020" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title6968">Array.1020</title> + <g + id="shape1021-45" + v:mID="1021" + v:groupContext="shape" + transform="translate(297.638)"> + <title + id="title6970">Sheet.1021</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect6972" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1022-47" + v:mID="1022" + v:groupContext="shape" + transform="translate(255.118)"> + <title + id="title6975">Sheet.1022</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect6977" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1023-49" + v:mID="1023" + v:groupContext="shape" + transform="translate(212.598)"> + <title + id="title6980">Sheet.1023</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect6982" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1024-51" + v:mID="1024" + v:groupContext="shape" + transform="translate(170.079)"> + <title + id="title6985">Sheet.1024</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect6987" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1025-53" + v:mID="1025" + v:groupContext="shape" + transform="translate(127.559)"> + <title + id="title6990">Sheet.1025</title> + <desc + id="desc6992">443</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect6994" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="15.18" + y="837.20001" + class="st8" + v:langID="6153" + id="text6996" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />443</text> + </g> + <g + id="shape1026-56" + v:mID="1026" + v:groupContext="shape" + transform="translate(85.0394)"> + <title + id="title6999">Sheet.1026</title> + <desc + id="desc7001">23456</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7003" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.12" + y="837.20001" + class="st8" + v:langID="6153" + id="text7005" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />23456</text> + </g> + <g + id="shape1027-59" + v:mID="1027" + v:groupContext="shape" + transform="translate(42.5197)"> + <title + id="title7008">Sheet.1027</title> + <desc + id="desc7010">192.0.2.100</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7012" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text7014" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />192.0.2.100</text> + </g> + <g + id="shape1028-62" + v:mID="1028" + v:groupContext="shape"> + <title + id="title7017">Sheet.1028</title> + <desc + id="desc7019">172.16.0.20</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7021" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text7023" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />172.16.0.20</text> + </g> + </g> + <g + id="shape1029-65" + v:mID="1029" + v:groupContext="shape" + v:layerMember="0" + transform="translate(271.736,-458.787)"> + <title + id="title7027">Dynamic connector.1029</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <path + d="M 0,834.8 H 44.17" + class="st9" + id="path7029" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:0.239976;stroke-linecap:round;stroke-linejoin:round;marker-end:url(#mrkr4-70)" /> + </g> + <g + id="group1030-71" + transform="translate(321.403,-368.504)" + v:mID="1030" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title7032">Array.1030</title> + <g + id="shape1031-72" + v:mID="1031" + v:groupContext="shape" + transform="translate(297.638)"> + <title + id="title7034">Sheet.1031</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect7036" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1032-74" + v:mID="1032" + v:groupContext="shape" + transform="translate(255.118)"> + <title + id="title7039">Sheet.1032</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect7041" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1033-76" + v:mID="1033" + v:groupContext="shape" + transform="translate(212.598)"> + <title + id="title7044">Sheet.1033</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect7046" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1034-78" + v:mID="1034" + v:groupContext="shape" + transform="translate(170.079)"> + <title + id="title7049">Sheet.1034</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect7051" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1035-80" + v:mID="1035" + v:groupContext="shape" + transform="translate(127.559)"> + <title + id="title7054">Sheet.1035</title> + <desc + id="desc7056">23456</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7058" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.12" + y="837.20001" + class="st8" + v:langID="6153" + id="text7060" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />23456</text> + </g> + <g + id="shape1036-83" + v:mID="1036" + v:groupContext="shape" + transform="translate(85.0394)"> + <title + id="title7063">Sheet.1036</title> + <desc + id="desc7065">443</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7067" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="15.18" + y="837.20001" + class="st8" + v:langID="6153" + id="text7069" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />443</text> + </g> + <g + id="shape1037-86" + v:mID="1037" + v:groupContext="shape" + transform="translate(42.5197)"> + <title + id="title7072">Sheet.1037</title> + <desc + id="desc7074">172.16.0.20</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7076" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text7078" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />172.16.0.20</text> + </g> + <g + id="shape1038-89" + v:mID="1038" + v:groupContext="shape"> + <title + id="title7081">Sheet.1038</title> + <desc + id="desc7083">192.0.2.100</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7085" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text7087" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />192.0.2.100</text> + </g> + </g> + <g + id="group1039-92" + transform="translate(98.7064,-368.504)" + v:mID="1039" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title7091">Array.1039</title> + <g + id="shape1040-93" + v:mID="1040" + v:groupContext="shape" + transform="translate(297.638)"> + <title + id="title7093">Sheet.1040</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect7095" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1041-95" + v:mID="1041" + v:groupContext="shape" + transform="translate(255.118)"> + <title + id="title7098">Sheet.1041</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect7100" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1042-97" + v:mID="1042" + v:groupContext="shape" + transform="translate(212.598)"> + <title + id="title7103">Sheet.1042</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect7105" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1043-99" + v:mID="1043" + v:groupContext="shape" + transform="translate(170.079)"> + <title + id="title7108">Sheet.1043</title> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st6" + id="rect7110" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1044-101" + v:mID="1044" + v:groupContext="shape" + transform="translate(127.559)"> + <title + id="title7113">Sheet.1044</title> + <desc + id="desc7115">10000</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7117" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.12" + y="837.20001" + class="st8" + v:langID="6153" + id="text7119" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />10000</text> + </g> + <g + id="shape1045-104" + v:mID="1045" + v:groupContext="shape" + transform="translate(85.0394)"> + <title + id="title7122">Sheet.1045</title> + <desc + id="desc7124">443</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7126" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="15.18" + y="837.20001" + class="st8" + v:langID="6153" + id="text7128" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />443</text> + </g> + <g + id="shape1046-107" + v:mID="1046" + v:groupContext="shape" + transform="translate(42.5197)"> + <title + id="title7131">Sheet.1046</title> + <desc + id="desc7133">10.10.10.10</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7135" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text7137" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />10.10.10.10</text> + </g> + <g + id="shape1047-110" + v:mID="1047" + v:groupContext="shape"> + <title + id="title7140">Sheet.1047</title> + <desc + id="desc7142">192.0.2.100</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="21.2598" + cy="834.803" + width="42.52" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="42.519699" + height="14.1732" + class="st7" + id="rect7144" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.01" + y="837.20001" + class="st8" + v:langID="6153" + id="text7146" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />192.0.2.100</text> + </g> + </g> + <g + id="shape1048-113" + v:mID="1048" + v:groupContext="shape" + v:layerMember="0" + transform="translate(321.403,-368.504)"> + <title + id="title7150">Dynamic connector.1048</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <path + d="M 0,834.8 H -47.1" + class="st9" + id="path7152" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:0.239976;stroke-linecap:round;stroke-linejoin:round;marker-end:url(#mrkr4-70)" /> + </g> + <g + id="shape1049-118" + v:mID="1049" + v:groupContext="shape" + transform="translate(101.657,-480.047)"> + <title + id="title7155">Sheet.1049</title> + <desc + id="desc7157">RSS hash value 0xdeadbeef Packet assigned to queue 15</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="89.1142" + cy="829.417" + width="178.23" + height="24.9449" /> + <rect + x="0" + y="816.94501" + width="178.228" + height="24.944901" + class="st11" + id="rect7159" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="22.889999" + y="825.82001" + class="st12" + v:langID="6153" + id="text7163" + style="font-size:12.00012016px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />RSS hash value 0xdeadbeef<v:newlineChar /><tspan + x="19.709999" + dy="1.2em" + class="st13" + id="tspan7161" + style="font-size:12.00012016px">Packet assigned to queue 15</tspan></text> + </g> + <g + id="shape1051-122" + v:mID="1051" + v:groupContext="shape" + transform="translate(318.331,-386.079)"> + <title + id="title7166">Sheet.1051</title> + <desc + id="desc7168">RSS hash value 0xf00d1eaf Packet assigned to queue 15</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="89.1142" + cy="829.417" + width="178.23" + height="24.9449" /> + <rect + x="0" + y="816.94501" + width="178.228" + height="24.944901" + class="st11" + id="rect7170" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="24.209999" + y="825.82001" + class="st12" + v:langID="6153" + id="text7174" + style="font-size:12.00012016px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />RSS hash value 0xf00d1eaf<v:newlineChar /><tspan + x="19.709999" + dy="1.2em" + class="st13" + id="tspan7172" + style="font-size:12.00012016px">Packet assigned to queue 15</tspan></text> + </g> + </g> +</svg> \ No newline at end of file diff --git a/doc/guides/prog_guide/img/rss_queue_assign.svg b/doc/guides/prog_guide/img/rss_queue_assign.svg new file mode 100644 index 0000000..d0eef8c --- /dev/null +++ b/doc/guides/prog_guide/img/rss_queue_assign.svg @@ -0,0 +1,1454 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Generated by Microsoft Visio, SVG Export rss_queue_assign.svg Page-6 --> + +<svg + xmlns:v="http://schemas.microsoft.com/visio/2003/SVGExtensions/" + xmlns:dc="http://purl.org/dc/elements/1.1/" + xmlns:cc="http://creativecommons.org/ns#" + xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" + xmlns:svg="http://www.w3.org/2000/svg" + xmlns="http://www.w3.org/2000/svg" + xmlns:xlink="http://www.w3.org/1999/xlink" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="5.377346in" + height="5.1358395in" + viewBox="0 0 387.16901 369.78098" + xml:space="preserve" + class="st11" + version="1.1" + id="svg5938" + sodipodi:docname="rss_queue_assign.svg" + style="font-size:12px;overflow:visible;color-interpolation-filters:sRGB;fill:none;fill-rule:evenodd;stroke-linecap:square;stroke-miterlimit:3" + inkscape:version="0.92.3 (2405546, 2018-03-11)"><metadata + id="metadata5942"><rdf:RDF><cc:Work + rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /></cc:Work></rdf:RDF></metadata><sodipodi:namedview + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1" + objecttolerance="10" + gridtolerance="10" + guidetolerance="10" + inkscape:pageopacity="0" + inkscape:pageshadow="2" + inkscape:window-width="1920" + inkscape:window-height="1017" + id="namedview5940" + showgrid="false" + inkscape:zoom="0.4204831" + inkscape:cx="684.49886" + inkscape:cy="109.29466" + inkscape:window-x="-8" + inkscape:window-y="-8" + inkscape:window-maximized="1" + inkscape:current-layer="svg5938" /> + <v:documentProperties + v:langID="6153" + v:metric="true" + v:viewMarkup="false"> + <v:userDefs> + <v:ud + v:nameU="msvNoAutoConnect" + v:val="VT0(1):26" /> + </v:userDefs> + </v:documentProperties> + + <style + type="text/css" + id="style5574"> + <![CDATA[ + .st1 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24;visibility:hidden} + .st2 {fill:#ffffff;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st3 {fill:#000000;font-family:Calibri;font-size:0.666664em} + .st4 {fill:#c0c0c0;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st5 {fill:none;stroke:none;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.75} + .st6 {font-size:1em} + .st7 {fill:#000000;font-family:Calibri;font-size:0.833336em} + .st8 {fill:#bfbfbf;stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.24} + .st9 {marker-end:url(#mrkr4-123);stroke:#000000;stroke-linecap:round;stroke-linejoin:round;stroke-width:0.239976} + .st10 {fill:#000000;fill-opacity:1;stroke:#000000;stroke-opacity:1;stroke-width:0.086948582161584} + .st11 {fill:none;fill-rule:evenodd;font-size:12px;overflow:visible;stroke-linecap:square;stroke-miterlimit:3} + ]]> + </style> + + <defs + id="Markers"> + <g + id="lend4"> + <path + d="M 2,1 0,0 2,-1 v 2" + style="stroke:none" + id="path5576" + inkscape:connector-curvature="0" /> + </g> + <marker + id="mrkr4-123" + class="st10" + v:arrowType="4" + v:arrowSize="2" + v:setback="23.0021" + refX="-23.0021" + orient="auto" + markerUnits="strokeWidth" + overflow="visible" + style="overflow:visible;fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:0.08694858;stroke-opacity:1"> + <use + xlink:href="#lend4" + transform="scale(-11.50105)" + id="use5579" + x="0" + y="0" + width="100%" + height="100%" /> + </marker> + </defs> + <g + v:mID="10" + v:index="6" + v:groupContext="foregroundPage" + id="g5936" + transform="translate(-58.840987,-97.651017)"> + <title + id="title5583">Page-6</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="group1000-1" + transform="translate(58.9606,-616.535)" + v:mID="1000" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title5585">Array.1000</title> + <g + id="shape1001-2" + v:mID="1001" + v:groupContext="shape" + transform="translate(326.161)"> + <title + id="title5587">Sheet.1001</title> + <rect + x="0" + y="827.71698" + width="46.594501" + height="14.1732" + class="st1" + id="rect5589" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1002-4" + v:mID="1002" + v:groupContext="shape" + transform="translate(279.567)"> + <title + id="title5592">Sheet.1002</title> + <rect + x="0" + y="827.71698" + width="46.594501" + height="14.1732" + class="st1" + id="rect5594" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1003-6" + v:mID="1003" + v:groupContext="shape" + transform="translate(232.972)"> + <title + id="title5597">Sheet.1003</title> + <rect + x="0" + y="827.71698" + width="46.594501" + height="14.1732" + class="st1" + id="rect5599" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1004-8" + v:mID="1004" + v:groupContext="shape" + transform="translate(186.378)"> + <title + id="title5602">Sheet.1004</title> + <rect + x="0" + y="827.71698" + width="46.594501" + height="14.1732" + class="st1" + id="rect5604" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1005-10" + v:mID="1005" + v:groupContext="shape" + transform="translate(139.783)"> + <title + id="title5607">Sheet.1005</title> + <rect + x="0" + y="827.71698" + width="46.594501" + height="14.1732" + class="st1" + id="rect5609" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1006-12" + v:mID="1006" + v:groupContext="shape" + transform="translate(93.189)"> + <title + id="title5612">Sheet.1006</title> + <desc + id="desc5614">Src/Dst ports</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="23.2972" + cy="834.803" + width="46.6" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="46.594501" + height="14.1732" + class="st2" + id="rect5616" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="2.05" + y="837.20001" + class="st3" + v:langID="6153" + id="text5618" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Src/Dst ports</text> + </g> + <g + id="shape1007-15" + v:mID="1007" + v:groupContext="shape" + transform="translate(46.5945)"> + <title + id="title5621">Sheet.1007</title> + <desc + id="desc5623">Dst_ip</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="23.2972" + cy="834.803" + width="46.6" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="46.594501" + height="14.1732" + class="st2" + id="rect5625" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="12.92" + y="837.20001" + class="st3" + v:langID="6153" + id="text5627" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Dst_ip</text> + </g> + <g + id="shape1008-18" + v:mID="1008" + v:groupContext="shape"> + <title + id="title5630">Sheet.1008</title> + <desc + id="desc5632">Src_ip</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="23.2972" + cy="834.803" + width="46.6" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="46.594501" + height="14.1732" + class="st2" + id="rect5634" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="13.36" + y="837.20001" + class="st3" + v:langID="6153" + id="text5636" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Src_ip</text> + </g> + </g> + <g + id="group1009-21" + transform="translate(58.9606,-704.359)" + v:mID="1009" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title5640">Data block.1009</title> + <desc + id="desc5642">Received Packet Data</desc> + <g + id="shape1010-22" + v:mID="1010" + v:groupContext="shape" + transform="translate(263.622)"> + <title + id="title5644">Sheet.1010</title> + <path + d="M 0,841.89 11.41,830.48 V 802.13 L 0,813.54 Z" + class="st4" + id="path5646" + inkscape:connector-curvature="0" + style="fill:#c0c0c0;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1011-24" + v:mID="1011" + v:groupContext="shape" + transform="translate(0,-28.3465)"> + <title + id="title5649">Sheet.1011</title> + <path + d="m 0,841.89 h 263.62 l 11.41,-11.41 H 11.41 Z" + class="st4" + id="path5651" + inkscape:connector-curvature="0" + style="fill:#c0c0c0;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1012-26" + v:mID="1012" + v:groupContext="shape"> + <title + id="title5654">Sheet.1012</title> + <rect + x="0" + y="813.54303" + width="263.62201" + height="28.3465" + class="st2" + id="rect5656" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1009-28" + v:mID="1009" + v:groupContext="groupContent"> + <v:textBlock + v:margins="rect(0,0,0,0)" + v:tabSpace="42.5197" /> + <v:textRect + cx="131.811" + cy="827.717" + width="263.63" + height="28.3465" /> + <text + x="96.889999" + y="830.12" + class="st3" + v:langID="6153" + id="text5659" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Received Packet Data</text> + </g> + </g> + <g + id="shape1013-30" + v:mID="1013" + v:groupContext="shape" + transform="rotate(-89.8898,-254.59128,465.04725)"> + <title + id="title5663">Simple Arrow.1013</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + <v:ud + v:nameU="ArrowType" + v:prompt="" + v:val="VT0(2):26" /> + </v:userDefs> + <path + d="m 0,841.89 12.6,-4.25 v 2.12 h 61.1 v 2.13 2.12 H 12.6 v 2.13 z" + class="st2" + id="path5665" + inkscape:connector-curvature="0" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1014-32" + v:mID="1014" + v:groupContext="shape" + transform="translate(67.829,-663.024)"> + <title + id="title5668">Sheet.1014</title> + <desc + id="desc5670">Parser extracts required fields</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="28.3465" + cy="838.772" + width="56.7" + height="6.23622" /> + <rect + x="0" + y="835.65399" + width="56.692902" + height="6.2362199" + class="st5" + id="rect5672" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="4.1500001" + y="836.37" + class="st3" + v:langID="6153" + id="text5676" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Parser extracts <tspan + x="4.7399998" + dy="1.2em" + class="st6" + id="tspan5674" + style="font-size:7.99996805px">required fields</tspan></text> + </g> + <g + id="shape1015-36" + v:mID="1015" + v:groupContext="shape" + transform="translate(58.9606,-600.945)"> + <title + id="title5679">Sheet.1015</title> + <desc + id="desc5681">tuple</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="20.2835" + cy="834.803" + width="40.57" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="40.566898" + height="14.1732" + class="st5" + id="rect5683" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="11.83" + y="837.20001" + class="st3" + v:langID="6153" + id="text5685" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />tuple</text> + </g> + <g + id="shape1016-39" + v:mID="1016" + v:groupContext="shape" + transform="rotate(-89.8898,-210.64069,509.05539)"> + <title + id="title5688">Simple Arrow.1016</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + <v:ud + v:nameU="ArrowType" + v:prompt="" + v:val="VT0(2):26" /> + </v:userDefs> + <path + d="m 0,841.89 12.6,-4.25 v 2.12 h 61.1 v 2.13 2.12 H 12.6 v 2.13 z" + class="st2" + id="path5690" + inkscape:connector-curvature="0" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1017-41" + v:mID="1017" + v:groupContext="shape" + transform="translate(77.3858,-518.74)"> + <title + id="title5693">Rectangle.1017</title> + <desc + id="desc5695">Toeplitz hash function</desc> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="45.3543" + cy="830.551" + width="90.71" + height="22.6772" /> + <rect + x="0" + y="819.21301" + width="90.708702" + height="22.6772" + class="st2" + id="rect5697" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="18.49" + y="827.54999" + class="st7" + v:langID="6153" + id="text5701" + style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Toeplitz hash <tspan + x="28.370001" + dy="1.2em" + class="st6" + id="tspan5699" + style="font-size:10.00003242px">function</tspan></text> + </g> + <g + id="shape1018-45" + v:mID="1018" + v:groupContext="shape" + transform="rotate(-89.8898,-161.64905,557.95289)"> + <title + id="title5704">Simple Arrow.1018</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + <v:ud + v:nameU="ArrowType" + v:prompt="" + v:val="VT0(2):26" /> + </v:userDefs> + <path + d="m 0,841.89 12.6,-4.25 v 2.12 h 61.1 v 2.13 2.12 H 12.6 v 2.13 z" + class="st2" + id="path5706" + inkscape:connector-curvature="0" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1019-47" + v:mID="1019" + v:groupContext="shape" + transform="translate(83.0551,-430.866)"> + <title + id="title5709">Byte or variable.1019</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <rect + x="0" + y="827.71698" + width="90.708702" + height="14.1732" + class="st2" + id="rect5711" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1020-49" + v:mID="1020" + v:groupContext="shape" + transform="translate(145.417,-430.866)"> + <title + id="title5714">Byte or variable.1020</title> + <desc + id="desc5716">LSB</desc> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="14.1732" + cy="834.803" + width="28.35" + height="14.1732" /> + <rect + x="0" + y="827.71698" + width="28.3465" + height="14.1732" + class="st8" + id="rect5718" + style="fill:#bfbfbf;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="8.4799995" + y="837.20001" + class="st3" + v:langID="6153" + id="text5720" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />LSB</text> + </g> + <g + id="shape1021-52" + v:mID="1021" + v:groupContext="shape" + transform="translate(92.6929,-419.528)"> + <title + id="title5723">Sheet.1021</title> + <desc + id="desc5725">32-bit hash value</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.7165" + cy="837.638" + width="71.44" + height="8.50394" /> + <rect + x="0" + y="833.38599" + width="71.433098" + height="8.5039396" + class="st5" + id="rect5727" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="7.8499999" + y="840.03998" + class="st3" + v:langID="6153" + id="text5729" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />32-bit hash value</text> + </g> + <g + id="shape1022-55" + v:mID="1022" + v:groupContext="shape" + transform="rotate(179.653,118.72832,623.08024)"> + <title + id="title5732">Simple Arrow.1022</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + <v:ud + v:nameU="ArrowType" + v:prompt="" + v:val="VT0(2):26" /> + </v:userDefs> + <path + d="m 0,841.89 12.6,-4.25 v 2.12 h 49.76 v 2.13 2.12 H 12.6 v 2.13 z" + class="st2" + id="path5734" + inkscape:connector-curvature="0" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="group1023-57" + transform="translate(240.378,-374.578)" + v:mID="1023" + v:groupContext="group"> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <title + id="title5737">Stack or heap.1023</title> + <g + id="shape1024-58" + v:mID="1024" + v:groupContext="shape" + transform="translate(0,-270)"> + <title + id="title5739">Sheet.1024</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5741" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1025-60" + v:mID="1025" + v:groupContext="shape" + transform="translate(0,-252)"> + <title + id="title5744">Sheet.1025</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5746" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1026-62" + v:mID="1026" + v:groupContext="shape" + transform="translate(0,-234)"> + <title + id="title5749">Sheet.1026</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5751" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1027-64" + v:mID="1027" + v:groupContext="shape" + transform="translate(0,-216)"> + <title + id="title5754">Sheet.1027</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5756" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1028-66" + v:mID="1028" + v:groupContext="shape" + transform="translate(0,-198)"> + <title + id="title5759">Sheet.1028</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5761" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1029-68" + v:mID="1029" + v:groupContext="shape" + transform="translate(0,-180)"> + <title + id="title5764">Sheet.1029</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5766" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1030-70" + v:mID="1030" + v:groupContext="shape" + transform="translate(0,-162)"> + <title + id="title5769">Sheet.1030</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5771" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1031-72" + v:mID="1031" + v:groupContext="shape" + transform="translate(0,-144)"> + <title + id="title5774">Sheet.1031</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5776" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1032-74" + v:mID="1032" + v:groupContext="shape" + transform="translate(0,-126)"> + <title + id="title5779">Sheet.1032</title> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st1" + id="rect5781" + style="visibility:hidden;fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + <g + id="shape1033-76" + v:mID="1033" + v:groupContext="shape" + transform="translate(0,-108)"> + <title + id="title5784">Sheet.1033</title> + <desc + id="desc5786">Q_idx_0</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="832.89" + width="70.87" + height="18" /> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st2" + id="rect5788" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="21.98" + y="835.28998" + class="st3" + v:langID="6153" + id="text5790" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Q_idx_0</text> + </g> + <g + id="shape1034-79" + v:mID="1034" + v:groupContext="shape" + transform="translate(0,-90)"> + <title + id="title5793">Sheet.1034</title> + <desc + id="desc5795">Q_idx_1</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="832.89" + width="70.87" + height="18" /> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st2" + id="rect5797" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="21.98" + y="835.28998" + class="st3" + v:langID="6153" + id="text5799" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Q_idx_1</text> + </g> + <g + id="shape1035-82" + v:mID="1035" + v:groupContext="shape" + transform="translate(0,-72)"> + <title + id="title5802">Sheet.1035</title> + <desc + id="desc5804">Q_idx_2</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="832.89" + width="70.87" + height="18" /> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st2" + id="rect5806" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="21.98" + y="835.28998" + class="st3" + v:langID="6153" + id="text5808" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Q_idx_2</text> + </g> + <g + id="shape1036-85" + v:mID="1036" + v:groupContext="shape" + transform="translate(0,-54)"> + <title + id="title5811">Sheet.1036</title> + <desc + id="desc5813">Q_idx_3</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="832.89" + width="70.87" + height="18" /> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st2" + id="rect5815" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="21.98" + y="835.28998" + class="st3" + v:langID="6153" + id="text5817" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Q_idx_3</text> + </g> + <g + id="shape1037-88" + v:mID="1037" + v:groupContext="shape" + transform="translate(0,-36)"> + <title + id="title5820">Sheet.1037</title> + <desc + id="desc5822">...</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="832.89" + width="70.87" + height="18" /> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st2" + id="rect5824" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="32.400002" + y="835.28998" + class="st3" + v:langID="6153" + id="text5826" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />...</text> + </g> + <g + id="shape1038-91" + v:mID="1038" + v:groupContext="shape" + transform="translate(0,-18)"> + <title + id="title5829">Sheet.1038</title> + <desc + id="desc5831">...</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="832.89" + width="70.87" + height="18" /> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st2" + id="rect5833" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="32.400002" + y="835.28998" + class="st3" + v:langID="6153" + id="text5835" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />...</text> + </g> + <g + id="shape1039-94" + v:mID="1039" + v:groupContext="shape"> + <title + id="title5838">Sheet.1039</title> + <desc + id="desc5840">Q_idx_n</desc> + <v:textBlock + v:margins="rect(1,1,1,1)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="832.89" + width="70.87" + height="18" /> + <rect + x="0" + y="823.89001" + width="70.866096" + height="18" + class="st2" + id="rect5842" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="21.9" + y="835.28998" + class="st3" + v:langID="6153" + id="text5844" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Q_idx_n</text> + </g> + </g> + <g + id="shape1040-97" + v:mID="1040" + v:groupContext="shape" + transform="translate(240.378,-504.668)"> + <title + id="title5848">Sheet.1040</title> + <desc + id="desc5850">RSS Redirection Table</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="830.551" + width="70.87" + height="22.6772" /> + <rect + x="0" + y="819.21301" + width="70.866096" + height="22.6772" + class="st5" + id="rect5852" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="9.9499998" + y="828.15002" + class="st3" + v:langID="6153" + id="text5856" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />RSS Redirection <tspan + x="26.559999" + dy="1.2em" + class="st6" + id="tspan5854" + style="font-size:7.99996805px">Table</tspan></text> + </g> + <g + id="shape1041-101" + v:mID="1041" + v:groupContext="shape" + transform="translate(173.98,-445.189)"> + <title + id="title5859">Sheet.1041</title> + <desc + id="desc5861">Hash LSB’s are used as an index in table</desc> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="28.2716" + cy="833.536" + width="56.55" + height="16.7079" /> + <rect + x="0" + y="825.18201" + width="56.543201" + height="16.707899" + class="st5" + id="rect5863" + style="fill:none;stroke:none;stroke-width:0.75;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="4.8299999" + y="826.34003" + class="st3" + v:langID="6153" + id="text5869" + style="font-size:7.99996805px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />Hash LSB’s are <tspan + x="11.21" + dy="1.2em" + class="st6" + id="tspan5865" + style="font-size:7.99996805px">used as an </tspan><tspan + x="6.3299999" + dy="1.2em" + class="st6" + id="tspan5867" + style="font-size:7.99996805px">index in table</tspan></text> + </g> + <g + id="shape1043-106" + v:mID="1043" + v:groupContext="shape" + transform="translate(375.024,-707.826)"> + <title + id="title5872">Rectangle.1043</title> + <desc + id="desc5874">CPU 0</desc> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="824.965" + width="70.87" + height="33.8487" /> + <rect + x="0" + y="808.04102" + width="70.866096" + height="33.848701" + class="st2" + id="rect5876" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="23.309999" + y="827.96997" + class="st7" + v:langID="6153" + id="text5878" + style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />CPU 0</text> + </g> + <g + id="shape1044-109" + v:mID="1044" + v:groupContext="shape" + transform="translate(375.024,-659.804)"> + <title + id="title5881">Rectangle.1044</title> + <desc + id="desc5883">CPU 1</desc> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="824.965" + width="70.87" + height="33.8487" /> + <rect + x="0" + y="808.04102" + width="70.866096" + height="33.848701" + class="st2" + id="rect5885" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="23.309999" + y="827.96997" + class="st7" + v:langID="6153" + id="text5887" + style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />CPU 1</text> + </g> + <g + id="shape1045-112" + v:mID="1045" + v:groupContext="shape" + transform="translate(375.024,-604.696)"> + <title + id="title5890">Rectangle.1045</title> + <desc + id="desc5892">CPU 2</desc> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="824.965" + width="70.87" + height="33.8487" /> + <rect + x="0" + y="808.04102" + width="70.866096" + height="33.848701" + class="st2" + id="rect5894" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="23.309999" + y="827.96997" + class="st7" + v:langID="6153" + id="text5896" + style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />CPU 2</text> + </g> + <g + id="shape1046-115" + v:mID="1046" + v:groupContext="shape" + transform="translate(375.024,-549.587)"> + <title + id="title5899">Rectangle.1046</title> + <desc + id="desc5901">CPU 3</desc> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="824.965" + width="70.87" + height="33.8487" /> + <rect + x="0" + y="808.04102" + width="70.866096" + height="33.848701" + class="st2" + id="rect5903" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="23.309999" + y="827.96997" + class="st7" + v:langID="6153" + id="text5905" + style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />CPU 3</text> + </g> + <g + id="shape1047-118" + v:mID="1047" + v:groupContext="shape" + v:layerMember="0" + transform="translate(311.244,-437.578)"> + <title + id="title5908">Dynamic connector.1047</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <path + d="M 0,841.89 H 41.06 V 712.96 h 17.2" + class="st9" + id="path5910" + inkscape:connector-curvature="0" + style="stroke:#000000;stroke-width:0.239976;stroke-linecap:round;stroke-linejoin:round;marker-end:url(#mrkr4-123)" /> + </g> + <g + id="shape1048-124" + v:mID="1048" + v:groupContext="shape" + transform="translate(375.024,-494.479)"> + <title + id="title5913">Rectangle.1048</title> + <desc + id="desc5915">CPU 4</desc> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="824.965" + width="70.87" + height="33.8487" /> + <rect + x="0" + y="808.04102" + width="70.866096" + height="33.848701" + class="st2" + id="rect5917" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="23.309999" + y="827.96997" + class="st7" + v:langID="6153" + id="text5919" + style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />CPU 4</text> + </g> + <g + id="shape1049-127" + v:mID="1049" + v:groupContext="shape" + transform="translate(375.024,-439.37)"> + <title + id="title5922">Rectangle.1049</title> + <desc + id="desc5924">CPU 5</desc> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + </v:userDefs> + <v:textBlock + v:margins="rect(4,4,4,4)" + v:tabSpace="42.5197" /> + <v:textRect + cx="35.4331" + cy="824.965" + width="70.87" + height="33.8487" /> + <rect + x="0" + y="808.04102" + width="70.866096" + height="33.848701" + class="st2" + id="rect5926" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + <text + x="23.309999" + y="827.96997" + class="st7" + v:langID="6153" + id="text5928" + style="font-size:10.00003242px;font-family:Calibri;fill:#000000"><v:paragraph + v:horizAlign="1" /><v:tabList />CPU 5</text> + </g> + <g + id="shape1050-130" + v:mID="1050" + v:groupContext="shape" + transform="rotate(-130.647,57.370743,472.48224)"> + <title + id="title5931">Simple Arrow.1050</title> + <v:userDefs> + <v:ud + v:nameU="visVersion" + v:val="VT0(15):26" /> + <v:ud + v:nameU="ArrowType" + v:prompt="" + v:val="VT0(2):26" /> + </v:userDefs> + <path + d="m 0,841.89 12.6,-4.25 v 2.12 h 169.08 v 2.13 2.12 H 12.6 v 2.13 z" + class="st2" + id="path5933" + inkscape:connector-curvature="0" + style="fill:#ffffff;stroke:#000000;stroke-width:0.23999999;stroke-linecap:round;stroke-linejoin:round" /> + </g> + </g> +</svg> \ No newline at end of file diff --git a/doc/guides/prog_guide/index.rst b/doc/guides/prog_guide/index.rst index 45c7dec..2dce507 100644 --- a/doc/guides/prog_guide/index.rst +++ b/doc/guides/prog_guide/index.rst @@ -32,6 +32,7 @@ Programmer's Guide link_bonding_poll_mode_drv_lib timer_lib hash_lib + toeplitz_hash_lib efd_lib member_lib lpm_lib diff --git a/doc/guides/prog_guide/toeplitz_hash_lib.rst b/doc/guides/prog_guide/toeplitz_hash_lib.rst new file mode 100644 index 0000000..fcaab6b --- /dev/null +++ b/doc/guides/prog_guide/toeplitz_hash_lib.rst @@ -0,0 +1,289 @@ +.. SPDX-License-Identifier: BSD-3-Clause + Copyright(c) 2021 Intel Corporation. + +.. _Thash_Library: + +Toeplitz Hash Library +===================== + +DPDK provides a Toeplitz Hash Library to calculate the Toeplitz hash function +and to use its properties. The Toeplitz hash function is commonly used in a +wide range of NICs to calculate the RSS hash sum to spread the traffic among +the queues. + +.. _figure_rss_queue_assign: + +.. figure:: img/rss_queue_assign.* + + RSS queue assignment example + + +Toeplitz hash function API +-------------------------- + +There are two functions that provide calculation of the Toeplitz hash sum: + +* rte_softrss() + +* rte_softrss_be() + +Both of these functions take the parameters: + +* A pointer to the tuple, containing fields extracted from the packet. + +* A length of this tuple counted in double words. + +* A pointer to the RSS hash key corresponding to the one installed on the NIC. + +Both functions expect the tuple to be in "host" byte order and a multiple of 4 +bytes in length. The ``rte_softrss()`` function expects the ``rss_key`` to be +exactly the same as the one installed on the NIC. The ``rte_softrss_be`` +function is a faster implementation, but it expects ``rss_key`` to be +converted to the host byte order. + +Predictable RSS +--------------- + +In some usecases it is useful to have a way to find partial collisions of the +Toeplitz hash function. In figure :numref:`figure_rss_queue_assign` only a few +of the least significant bits (LSB) of the hash value are used to indicate an +entry in the RSS Redirection Table (ReTa) and thus the index of the queue. So, +in this case it would be useful to find another tuple whose hash has the same +LSB's as the hash from the original tuple. + +For example: + +- In the case of SNAT (Source Network Address Translation) it is possible to + find a special source port number on translation so that the hash of + returning packets, of the given connection, will have desired LSB's. +- In the case of MPLS (Multiprotocol Label Switching), if the MPLS tag is used + in the hash calculation, the Label Switching router can allocate a special + MPLS tag to bind an LSP (Label Switching Path) to a given queue. This method + can be used with the allocation of IPSec SPI, VXLan VNI, etc., to bind the + tunnel to the desired queue. +- In the case of a TCP stack, a special source port could be chosen for + outgoing connections, such that the response packets will be assigned to the + desired queue. + +This functionality is provided by the API shown below. The API consists of 3 +parts: + +* Create the thash context. + +* Create the thash helper, associated with a context. + +* Use the helper run time to calculate the adjustable bits of the tuple to + ensure a collision. + +Thash context +~~~~~~~~~~~~~ + +The function ``rte_thash_init_ctx()`` initializes the context struct +associated with a particular NIC or a set of NICs + +It expects: + +* The log2 value of the size of the RSS redirection table for the + corresponding NIC. It reflects the number of least significant bits of the + hash value to produce a collision for. + +* A predefined RSS hash key. This is optional, if ``NULL`` then a random key + will be initialized. + +* The length of the RSS hash key. This value is usually hardware/driver + specific and can be found in the NIC datasheet. + +* Optional flags, as shown below. + +Supported flags: + +* ``RTE_THASH_IGNORE_PERIOD_OVERFLOW`` - By default, and for security reasons, + the library prohibits generating a repeatable sequence in the hash key. This + flag disables such checking. The flag is mainly used for testing in the lab + to generate an RSS hash key with a uniform hash distribution, if the input + traffic also has a uniform distribution. + +* ``RTE_THASH_MINIMAL_SEQ`` - By default, the library generates a special bit + sequence in the hash key for all the bits of the subtuple. However, the + collision generation task requires only the ``log2(RETA_SZ)`` bits in the + subtuple. This flag forces the minimum bit sequence in the hash key to be + generated for the required ``log2(RETA_SZ)`` least significant bits of the + subtuple. The flag can be used in the case of a relatively large number of + helpers that may overlap with their corresponding bit sequences of RSS hash + keys. + + +Thash helper +~~~~~~~~~~~~ + +The function ``rte_thash_add_helper()`` initializes the helper struct +associated with a given context and a part of a target tuple of interest which +could be altered to produce a hash collision. On success it writes a specially +calculated bit sequence into the RSS hash key which is stored in the context +and calculates a table with values to be XORed with a subtuple. + +It expects: + +* A pointer to the Thash context to be associated with. + +* A length of the subtuple to be modified. The length is counted in bits. + +* An offset of the subtuple to be modified from the beginning of the tuple. It + is also counted in bits. + +.. note:: + + Adding a helper changes the key stored in the corresponding context. So the + updated RSS hash key must be uploaded into the NIC after creating all the + required helpers. + + +Calculation of the complementary bits to adjust the subtuple +~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + +The ``rte_thash_get_complement()`` function returns a special bit sequence +with length ``N = log2(rss_reta_sz)`` (for the ``rss_reta_sz`` provided at +context initialization) to be xored with N least significant bits of the +subtuple. + +It expects: + +* A corresponding helper created for a given subtuple of the tuple. + +* A hash value of the tuple we want to alter. + +* The desired LSB's of the hash value the user expects to have. + +After the returned bit sequence has been XORed with the subtuple, the resulted +LSB's of the new hash value, calculated from the altered tuple, will be the +same as in ``desired_hash``. + + +Adjust tuple API +~~~~~~~~~~~~~~~~~ + +The ``rte_thash_get_complement()`` function is a user-friendly wrapper around +a number of other functions. It alters a passed tuple to meet the above +mentioned requirements around the desired hash LSB's. + +It expects: + +* A Thash context and helper. + +* A pointer to the tuple to be changed. + +* The length of the tuple. + +* A callback function and its userdata to check the tuple after it has been + changed. + +* The number of attempts to change the tuple. Basically, it makes sense if + there is a callback and a limit on the number of attempts to change the + tuple, if the callback function returns an error. + + +Usecase example +--------------- + +There could be a number of different usecases, such as NAT, TCP stack, MPLS +tag allocation, etc. In the following we will consider a SNAT application. + +Packets of a single bidirectional flow belonging to different directions can +end up being assigned to different queues and thus processed by different +lcores, as shown in :numref:`figure_predictable_snat_1`: + +.. _figure_predictable_snat_1: + +.. figure:: img/predictable_snat_1.* + + Bidirectional flow packets distribution in general + +That leads to a situation where the same packet flow can be shared between two +cores. Such a situation is not ideal from a performance perspective and +requires extra synchronization efforts that might lead to various performance +penalties, for example: + +* The connections table is global so locking/RCU on the flow insertion/removal + is required. + +* Connection metadata must be protected to avoid race conditions. + +* More cache pressure if a single connection metadata is kept in different + L1/L2 caches of a different CPU core. + +* Cache pressure/less cache locality on packet handover to the different cores. + +We can avoid all these penalties if it can be guaranteed that packets +belonging to one bidirectional flow will be assigned to the same queue, as +shown in :numref:`figure_predictable_snat_2`: + +.. _figure_predictable_snat_2: + +.. figure:: img/predictable_snat_2.* + + Bidirectional flow packets distribution with predictable RSS + + +To achieve this in a SNAT scenario it is possible to choose a source port not +randomly, but using the predictable RSS library to produce a partial hash +collision. This is shown in the code below. + +.. code-block:: c + + int key_len = 40; /* The default Niantic RSS key length. */ + + /** The default Niantic RSS reta size = 2^7 entries, LSBs of hash value are + * used as an indexes in RSS ReTa. */ + int reta_sz = 7; + int ret; + struct rte_thash_ctx *ctx; + + uint8_t initial_key[key_len] = {0}; /* Default empty key. */ + + /* Create and initialize a new thash context. */ + ctx = rte_thash_init_ctx("SNAT", key_len, reta_sz, initial_key, 0); + + /** Add a helper and specify the variable tuple part and its length. In the + * SNAT case we want to choose a new source port on SNAT translation in a + * way that the reverse tuple will have the same LSBs as the original + * direction tuple so that the selected source port will be the + * destination port on reply. + */ + ret = rte_thash_add_helper(ctx, "snat", sizeof(uint16_t) * 8, + offsetof(union rte_thash_tuple, v4.dport) * 8); + + if (ret != 0) + return ret; + + /* Get handler of the required helper. */ + struct rte_thash_subtuple_helper *h = rte_thash_get_helper(ctx, "snat"); + + /** After calling rte_thash_add_helper() the initial_key passed on ctx + * creation has been changed so we get the new one. + */ + uint8_t *new_key = rte_thash_get_key(ctx); + + union rte_thash_tuple tuple, rev_tuple; + + /* A complete tuple from the packet. */ + complete_tuple(mbuf, &tuple); + + /* Calculate the RSS hash or get it from mbuf->hash.rss. */ + uint32_t orig_hash = rte_softrss((uint32_t *)&tuple, RTE_THASH_V4_L4_LEN, new_key); + + /** Complete the reverse tuple by translating the SRC address and swapping + * src and dst addresses and ports. + */ + get_rev_tuple(&rev_tuple, &tuple, new_ip); + + /* Calculate the expected rss hash for the reverse tuple. */ + uint32_t rev_hash = rte_softrss((uint32_t *)&rev_tuple, RTE_THASH_V4_L4_LEN, new_key); + + /* Get the adjustment bits for the src port to get a new port. */ + uint32_t adj = rte_thash_get_compliment(h, rev_hash, orig_hash); + + /* Adjust the source port bits. */ + uint16_t new_sport = tuple.v4.sport ^ adj; + + /* Make an actual packet translation. */ + do_snat(mbuf, new_ip, new_sport); diff --git a/doc/guides/rel_notes/release_21_05.rst b/doc/guides/rel_notes/release_21_05.rst index 1c2e093..3b14822 100644 --- a/doc/guides/rel_notes/release_21_05.rst +++ b/doc/guides/rel_notes/release_21_05.rst @@ -203,6 +203,12 @@ New Features the events across multiple stages. * This also reduced the scheduling overhead on a event device. +* **Added Predictable RSS functionality to the Toeplitz hash library.** + + This feature provides functionality for finding collisions of the Toeplitz + hash function - the hash function used in NIC's to spread the traffic + among the queues. It can be used to get predictable mapping of the flows. + * **Updated testpmd.** * Added a command line option to configure forced speed for Ethernet port. -- 2.7.4