diff options
Diffstat (limited to 'docs')
81 files changed, 4666 insertions, 382 deletions
diff --git a/docs/source/contents.rst b/docs/source/contents.rst index 5619e073..5e7fc545 100644 --- a/docs/source/contents.rst +++ b/docs/source/contents.rst @@ -51,8 +51,8 @@ Documentation .. toctree:: :maxdepth: 2 - /snmp-overview - /docs/contents + /docs/tutorial + /docs/api-reference Examples -------- diff --git a/docs/source/docs/contents.rst b/docs/source/docs/api-reference.rst index 8781df6f..8781df6f 100644 --- a/docs/source/docs/contents.rst +++ b/docs/source/docs/api-reference.rst diff --git a/docs/source/docs/mib-object-instances.svg b/docs/source/docs/mib-object-instances.svg new file mode 100644 index 00000000..c7d80fab --- /dev/null +++ b/docs/source/docs/mib-object-instances.svg @@ -0,0 +1,440 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + 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="121.76772mm" + height="61.197735mm" + viewBox="0 0 431.4604 216.84237" + id="svg20992" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="mib-object-instances.svg"> + <defs + id="defs20994"> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0" + refX="0" + id="marker33015" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path33017" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="marker32567" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path32569" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0" + refX="0" + id="marker31071" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path31073" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0" + refX="0" + id="marker30911" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path30913" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(1.1,0,0,1.1,1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11309" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker30165" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lend"> + <path + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path30167" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker29255" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lend"> + <path + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path29257" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0" + refX="0" + id="marker28879" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path28881" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker28731" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path28733" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0" + refX="0" + id="marker28589" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path28591" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker28045" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow2Lend"> + <path + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + id="path28047" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow2Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11324" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(1.1,0,0,1.1,1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="marker24132" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path24134" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker24008" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path24010" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker23908" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="matrix(-0.8,0,0,-0.8,-10,0)" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path23910" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="marker23388" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path23390" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0" + refX="0" + id="marker23312" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path23314" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.625;stroke-linejoin:round;stroke-opacity:1" + d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z" + transform="matrix(-1.1,0,0,-1.1,-1.1,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="marker23112" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path23114" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0" + refX="0" + id="Arrow1Send" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11321" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.2,0,0,-0.2,-1.2,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Sstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Sstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11318" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1" + transform="matrix(0.2,0,0,0.2,1.2,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11306" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#007e00;fill-opacity:1;fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1" + transform="matrix(0.8,0,0,0.8,10,0)" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4" + inkscape:cx="240.97024" + inkscape:cy="38.163213" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1449" + inkscape:window-height="992" + inkscape:window-x="578" + inkscape:window-y="359" + inkscape:window-maximized="0" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0" /> + <metadata + id="metadata20997"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-60.790432,-701.49908)"> + <image + y="740.06024" + x="60.790432" + id="image35515" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASgAAABaCAYAAAALmstnAAAABHNCSVQICAgIfAhkiAAAIABJREFU eJztnXd4XPWZ77+nTW/qxUVWt7CNbcAdF8AGYxMSwoIDXpbUBUxxQtvcuyFsLiGXzU0WyGYJC9kH EmK82SzNxmZDDeAAtmIT3LBHGlmS1dv0cua0+8dIg0YzGp2ptuXf53n0PKM5Z97fq9c+7/zKWyhF URTkkXA4jNbWVlAUlc9hCQRCBmi1WlRXV+f7ud1D5dNB8TwPh8MBs9kMjuPyNSyBQMiQYDAIURRR W1sLmqbzNeyevI0UCoXgcDhgsViIcyIQzjH0ej04jkNLSwskScrbuHlxUIFAAG1tbbBarWBZNh9D EgiELKPT6aDT6WC32yGKYl7GzLmD8nq9aG9vh81mA8MwuR6OQCDkEK1WC6PRCLvdDkEQcj5eTh2U y+VCV1cXbDZbPtetBAIhh2g0GpjNZrS0tIDn+ZyOlTOvMTw8jJ6eHuKcCIRpCMdxsFgsaG1tRTAY zNk4OfEcAwMDGBgYQGFhIQknIBCmKSzLwmazoa2tDX6/PydjZN1B9fb2wul0wmazZVs0gUA4y2AY BjabDR0dHfB6vVmXn1UH1dXVBa/XC6vVSmZOBMJ5AsMwKCgowOnTp+FyubIqO2tn/h0dHQiHw7BY LNkSSSAQzhEoikJBQQF6e3shyzIKCwuzIjdjB6UoCk6dOgVFUWA2m7OhE4FAOAcZc1IDAwOQJAkl JSUZy8xoiacoChwOBwDAaDRmrAyBQDj3sVqtGBkZQV9fX8ay0nZQsiyjpaUFLMvCYDBkrAiBQJge UBQFq9UKj8eDrq6ujGSl5aAkSYLdbodWq4VOp8tIAQKBMD2xWCzgeR7t7e1py0jZQQmCALvdDoPB AK1Wm/bABAJh+mM0GiFJEhwOB9IpnJKSgxqr5WQymaDRaFIejEAgnH8YjUbQNI3W1lbIspzSZ1U7 qFAohNbWVlLLiUAgpIxerwfLsimXa1HloEi5FAKBkCl6vT7lci1TOiiv14tTp07BarWScikEAiEj Ui3XktRBuVwunD59GgUFBcQ5EQiErJBKuZZJHRQpl0IgEHKF2nItCT3PWLmUgoIC4pwIBEJOUFOu Jc77jC+XQioSEAiEXDJWrqW9vR0+ny/ueoyD6unpgcfjIeVSCARC3mAYBoWFhejs7ITb7Y65Fo0Z GCuXYrVa864ggUA4vxmrhNDT0wNJkqLlWlhRFPGb3/wWh48cRTic2wLoBAKBMBUmkxnXfmkzVq9e DfYP//0S/vjmW2daJwKBQAAADA+P4N+eehomk7mAKSou/qdQKHSmdSIQCIQoiqJAEASZdTq/qCFs NBqxYf0VqKurzUnpXo/HgxMnTuLtd97FZE6xpKQYl61bh/LyMtB0JDjUYNBnXRdC+lAUdc5VshBF ET6fDx6PB909vXA4HGhvj+y7Es5OXC6Xjrrhxq8pQCQm4e+/8y2Ul5fnfOCenl488+yv4zKbS0tK cNtt3yHJyIS8IIoiTpw8icOHj8Bub0k5056QWxobG/qjp3hzGxvz4pwAoLKyAnV1tbDbW2LeX7/+ CuKcCHmDZVnMnzcP8+fNg8/nw6FDn+IvBw9lvTMJIX2iDqqkNPMC56lQWloa56BmzJiRVx0IhDFM JhPWrFmN1asvRWurAweam9HSknr9IkJ2iTqofAdmJko+1mjI7IlwZqEoCvX1daivr4PH48Ff//oZ Pjt8BIODg2datfOSSYs7HTt2FJ4sdgq1Wq24oOmCrMnLNk899RR8Ph8oisIDDzwQc625uRnvvfde 9PdE9ySio6MDO3fuBE3TqK2txfXXXx9z/cUXX4wpKp/onkS88cYbOHLkCABg48aNuPDCC2OuP/ro ozFL5UT3JOKXv/wlAoEAGIbBfffdF3Nt//79eP/996O/J7onEQ6HAy+99BIAoL6+Htddd13M9R07 dqC7uzv6e6J7ErF3714cPXoUAHDNNdfgggti/2898sgjMRv5mzZtwvz586eUOx6LxYI1a1ZjzZrV 6OvrR6vDgTZHG7p7epImuBKyx6QO6t333kVHZ0fWBqqvqz9rHdSuXbsQCATAcRxkWcbOnTtx0003 Ra9TFBXzwKudbb788svRh+TUqVNobm7GkiVLotdZlo2Rq6YY4PHjx3H8+PHo515//fU456PRaGJk qakF/dprr4Hn+agNfv/732PLli3R6xNtoLb8zquvvhr9XFtbGw4ePIiLL744ep3juJTlHjlyBJ9/ /nn0c7t27YpzUBPlplMPezzl5WUoLy/DpatWAojU5vf5fMhQLAFAOMzj/Q8+xLFjx+OukfKYAGia jj4YNE1nrYIDwzDR8qYMw2T8kACRk6fx+mWzwumYXJqms7bk5zguagOaprOypyPLcowNzkStMo7j UFBQkPdxpys3/M31cLncMbNpIMPGnecL8+bNQ2lpafT3BQsWZEXu2rVro46AZVmsXLkyK3LH61dR UYHGxsaMZc6fPz/aKVZRFCxcuDBjmQCwZs2aqOPmOA4rVqzIitzx+lVWVqKhoSErcgm5gaZprFy5 PO59MoMCcMkll6C6ujr6+8SEab1ejyuuuALDw8MAgLq6OlVyN27cGFPWdNasWTHXy8rKsHnzZoTD YWi1WlWtouvr62NmDIlmOmvXro2OVVpaqqp34bJly2L+LpvNFnPdYDBg/fr1URvU19dPKROIt8Hs 2bNjrpeXl+Oaa66BIAiqbdDQ0BAzc0w04123bl10rNLS0nMusPR8pLKiIu6989JB0ZQfWnYIQOSb u3oWUD1rfOt2EUB7zGdi7+lVNc7CeRoA49tzjYz+fMGFF3AAxvZKYsdMhJ4DChdNbDPfnuQe/+hP cuJtIMTJjb2nZ0qZQCIbDI/+THZP7JiJyNQGkqJDWMxPzB9BPYliIKe1g4p0QG4Bp+HA0DSqqqqg iHbMKN0FllHf+oYw/Rh01SAgbcGxY8fR2NiAkyftMBqNEEUBNTU1qvYhS81/gF7TClFU4PNN3QAg FRiWgtnEAQrgCq2GO3BpyjLKrTugZTohiDL8fnVdVFLWDxScgcvgCS7LqvwxJnVQeoMBZpM5awPp 9fnPp2MYBsPDw5g/fz4ONDejuroaocC7OHZ8CLf8/X7wYeKkzkeuu2YmHvsR0OX0w+P1gqIoOF0u zJ49Gx/u26dqCU/TIvSaVrzwXwK+9+CrCASyH3aw8MIG7PnDRhTYPknZQbF0AFq2E8/+VsCD//gS eD77OYdLl8zH7v+6DFb9R/l3UN/+5rdzMmA+kWUZjY0NoGkaS5dcAlEUwbIyZs1egF89fU/MvWMb tS/u3Il33ns3TpbRYMAvnngSQGpBrWNyv3f/ffB4PHHX16xejVtv+buU5I7JPHnyJH76858lvOf+ e+9F09ymtOS+sON3+NO4mKcxTCYTnvyXx1OSOV7u9nu/l7Cs67q1a3HL1r9NS9fjnx/Hzx9/POE9 D9x3P+aOHhCMl2s19QN4E5UVxVi3di38fh8aG+ohyzJWrlgBQRCmTLmiEXng/+O3R/Hkk7/A1Vdf Dbvdrkr3qTCZTKitrcXll1+Otz/w4IZrUz9RpajIkvaZ5w7iueeex6pVq+BwOLKin9lsRk1NDZYt W4YPP/bh6ityd9Y2rZd4NE2jpKQYGnYADBUE4ITepMBWVIUZdetj7q2prUEgSdmZcDiMW75+K/hQ CHtf36PqtOlAczOu2ngVtEk2qd9+5x28/c470Gm1aG87perv2v7d7fjdiy8mfYh+8thjEAQBW2++ OepYp2JOTTVCSdoAjYyMRG3wx//5I5aOi+majE8++QRXb96U1AZvvvUW3nzrLRh0OrQ52lTpeufd d+P3v/9PsEls8Oj//QkEQcDX/+5W/PxnXzhyWewA73wTWrYFVTMq0NPbD44rhqKkvpEeDgsoKyvD 5ZdfjpaWloxDHhRFgSRJeOaZZ2Cz2cDzAmL38NLTb9WqVeju7s6afjt27IDVagXPixnpNxXT2kEB gI76A8qsX3xzULQNrH5j3H1qp8CptG1O5f5wClPwsCBAluQv9tYnQZbllMqJqNUhVzZIZRkSDodV xVTJUrwNaHY2GO0KCL4XAABFBkAjA17xNghSoWodxtPR0QGNRoPKysqMnIDf70dvby86OrIXJC3L Mrq6uqDX61FeXp6Rfl6vF/39/VnVLxnT2kFxjBNlNgf+4eEjWHzxTfj6178OiikCCf8636GgsdwO Rd4KKCGsX78OTz+xANbCZoz4r8pI8vig31RQFAUGgwGCIIBhGFVdd9OBYZi0HZRerwfP82BZVnXr 8kyZ1g6KHl2H728eRm2jBhST34oNhLMbijYDMKOtPYCOzhAWFwcylplujp7P58NXvvIV2O12+Hw+ 9PX1ZaxLIgKB9P/GZcuW4dixYwiFQjnTbyJZd1CSJEGBApZhIckSFFmBLMsZeW4CYbpD0zS8Xi94 nocoitBoJt/XkSQJH3/8ccx7LMti+fL4SOxs4vV6EQ6Hp9RPEATs378/5j2NRoOlS5emPGZaDspu t8MfiMxOOJZFU9MFUedzoPkAykpLMTwyAq1GC07Dwev1oKG+MS46+WzCaDKq+lZINU+PpmkEJuma Op6Scak0U2EwGCBJIgIqYluMxokBjUnkGg0YGBiY8r5c2SCVgolGgwGiKKpaahgMBtVyzxQGgwH7 9++HKIpwu90oKytDS0tLwntlWUZzc3PMexqNJucOav/+/RAEAU6nMyb1ayKCIMTpZzQa8+OgQqEQ nv2PZ2ISX7fdfidqamoARNI3wjwPq8UCW0EBOtrbUVJcelY7JyDyH8SQwsOsFp3K+K9UHiKdTqda VzVpLmPozyUb6PU5sQHh7CJlB6XT6XDnHXdFmx4wDI05c+ZErxfYCmAwGEBRAEXRYGoYmM2mrClM IExHBEHAnDlz4HQ64fF4EsaLnWlmzJiB4eFheL1e+FXMiLNBWku88Q5pIhNLUBQVFaUzRN4JhULR Y+toOQ9FgawoYGgaythrhkFvr7pcPADRJcj4k49Er/kUWn+NjIwklE1RFGiahiRJoECBZuiUKkHy oVAkfIGKLWnyhT0AWYnsJ/blwAaptD8bS1pObgOAZpi8VsNMt6ROKBRCU1MT7HY7nE4nnE7npPfS NB1XA0zt/m66+lEUhaamJhw7dgxerzepfizLJqxRlg5Z3yT//MTnsFltGBwaRElpCbweLxrqz/5S F8FgELIkARQFcTSSWJYVSJIISqOBLMmQpEgtpvFVMKdCHD0uZlk26etgUP3DOTQ4CEVR4mTQNA2K 4yAKAiiaBkdzGOifek9pjGAwBEmWQI/agOW4SGCeKEbsMfqapij09KhLFgYm2kAEoExiA/UnYKps QFHQMAz683TiBETimNJpZSXLMlpaWuByuRAKhWAyTb7qYBgGV1xxRVr6+Xy+tEIYNBoNWlpa4PF4 EAwGk+qn0WjS1m8iKTsoURTx/G+eQ8AfOa7kNBxuvGFLdKbkdI6Aoil4vR7odfq8TQUJhLOBZA/u VHR0dEAURfj9/pwVwzOb08+v7ejoiFYSzdeeclozqPERvLKiAONShaqraxAKhVBXWw+GZRAMBaEo St6bMhAIZ4JMq6Zmo+pqMtlns36JSNlBRRp83jbp9Yry2KJTxUXFqWt1BtDrDVAAyJIEXgFYNrJM UCgaLMOCYgBJZmA0mZLmf42H41jodXooigK9Tg8hLACKAhoUGJoBRQF6nR5QAJ1OfR6YVqeD2WSG IsuAAnAshzDFg6YocAwDhePAMAyMRiMYVn3smcGgB0UBsqwACsAykX0dhaLBsmxk6ZeiXE7DQafT A4oCnVYHMSxAmcQGWq360zadTgezOd4GFChwLAtFlkHTDEwmE5gslkWO00OrQWtrK5YtW4YPPvgg pf3JydDr9aiqqsIrr7wCvb4mM/10WjgcDixduhQHDhzIin4GgyG6Ya7X57YT07SOJE+Ff33ySRw8 eBCHDh1CX18f3G43RkZGwHEcbDYbZs6cifLyclx44YW49ktfUiVz8aLF+OFDD8HhcKCzsxOtra0I BALw+/0oLSmBxWJBVVUV6uvro2EaanjkR/8He/bswYEDBzA0NIS+vj6wNA1RFFFUVBT9WblyJRYv XpyCDX6BQ4cOTWqDWbNmoby8HAsWLMCmqzepknnxRRfjhz/4ARwOB06fPj2pDRoaGlKywY8feQRv vPEGDhw4gMHBQfT39ye0wapVq1KygVrk0QTZu7ctxwP/66cIBAKw2Swx97hcHuzcuRPFxZN/ST/9 9NN4/fXXodfHfkE9+OD9WLSwCRsuK8bEIodqUJRIaMf2O1fjoX/6IYKhUIx+iqLA7fbilVdeSbos feKJJ/DOO+9Ap4vd5N6+/W4sW7oQa1bYoCB3J45pOajevl5IYiQBlKKAiorK6InPn97/E1iWRVVV FURBxMBAP0rLynC6sxNGkwk8H8LyZdmpO51NNmzYgA0bNmRd7h133JF1mdXV1bjrrruyLvfKK6/E lVdemXW527Zty7rM2tranNhALbLMIiTMxHVXd+G6qxPb7MLlu/H979+fXJAC/ODBebjv7slaYvXD E5y6asRERNmEsFiGm7/aj5u/miA5PizholV78N3vTmFDBfjxQwuw7TtNk9wwBFcwO7X0E5FWoObj T/xLzD7U+EBNmqIgCAJGRkYQ5nmUlpYiGAhgxoyZCIaCCIWCZD+KMC3o99wCmvZCQ8cfuduM7+Lw J+pm2gDgCy2Gn49vyxYWSyEjvUDTXvc3wbIusIivQ1ZoegvHmq9VLcsTXI5guDaBfuXR2WQuSCtQ 85vf+Fb0SHhstjTG4osugiAI0I3uJ/h8PpSUlEbjNBiGzlsmNIGQa2TZjJAcfzI24P4aaFZ96Igs myDL2d9xEUUbRMSfuPW5bgbNTl77ayK50m8q0hpxbuPcSa9NLBN8LuRBEQjZRoYOsnj2ptjI0EMW 81+GO1Wy7hJPn+4Ey3IYGRnGzJmzoEBBV1cXZs+eDYvZMrUAAoFAGCWtQM2XXn4J4XBkekjTNDZv uiYauOX1emGzFUBvMKB/oB+yJMFoMBLnRJh2MHQIVsOHoCj1S7lUESUL3IHVSKfIIkt7YTF8BIrK fsOEMQSxAJ7gSuSqCGTKDkqWZfT39yMYikSST6z+N5YTNdYoUaIo0jSRMC2ptD0FSQxh195uuNzq 93PUQFEUll5civkXmGDg2tDr/kYa+v07wgKP1/Z0w+vNrpOiaQorlpahscEEPdeBfs/WrMofI2UH pdFocM/d90x6vaEh8zbbZ4J7tm9Hi92O1tZWuN1uCKO5YTRNQ6fTwWqzwWg0oqGhAXdu26Yq18jt duPGLVvgHBmBx+NBb28vZFke7S7DguM4lJaWori4GEXFxXjt1VdV6frCCy/gtV27cOTwYQQCgejP WNlYrVYLvV6PRYsWYeHChXj44YdVyb3rrrvQ2toKh8OR0Aa2URvU19dj+/btWLt27ZQyXS4XtmzZ Es3S7+vrgyRJ8TYoKUFJSQleefllVbo+//zz2LN3Lz77618RDAYT2kCn1+OixYuxaNEiPPTQQ6rk qoVGCDTFY9s/DKH5YC8uuCD+BC4TJEnC9x9+E2/uuQMLm1JPdmZpJyhKwLfv6YO9ZSjrrd8FQcD3 H34T+965DXVVmQd/TgYJ1BzltV2vRfIGKQqiKIDTcDCyLCRJBKPh4PF64XQ5MTA0iHVr16pyUCft duw/EKksqNPrQTE0GIaG0WJGKBiEDAUurwd9A/0wp7AE3rV7Fz78875oBQSdXg+tEqk4wHIcgnwI ISGMfR9/FElFUmuD3bsRCAYioSKiAFbDwcixkEQRDMfC7fNixOVE/+AArrzySlUO6sSJE9jffCCq J2gaDE0ltMHElvNJdd21Cx998nFyG4R57Pv4I9UyU4GmI2E2h4+ewj//80+hKAo++ig7Y+l0Otx+ ++3YsmULjh7txcK5qUdrU1TkpPzI0TY8/fSvMTw8jL/85S9Z0c9gMGDbtm246qqrcOx4P+qqzqIw AyDyrTi+U8f4kioHmvfDYrZEl3Vd3d3gWA5LlixBa2srWJZFbW18PAWBcC5zyy23IBAIZNygVpZl +P1+MAwDiqKykjsnyzK2bt0KWZazpp/ZbB7VLyNxU5JWoOZPHns0JlDzzjvuQnV1NQCgqLAYkhxx XoIoQlEUWGyW0YRhQEF+kw0JhHzA8zwYhsHMmTPTrn0EROpc+f1+8En6E6aKoigIh8PQ6/WYNWvW lE1JkzE4OAi/359S7a5MSCtQc+tNW+Ef7Q7BcRxmzpwZvU7TFIqLyxAIBlBkMKKiogIMzeBU+ymU V1SA+CfCdCZR92g18DyPefPmQRAEGAwGuFyuLGsWwe12p/3Zuro6hEIhGI3GjOSkQlpLvIULF016 rbo6kvIycT+hvq4+naHyRqRLahigEJ1eMwrAcmzkNc1EXy9aNPnfP5HxHXWTvbZY1e9B1dTW4sM/ /zmhPIqiYl43zlV/aGGxWiInslSkEiUVmfKCZdkv7DH6esGEionJiNVTO8n7upT2oGrr6vDx/k9U 2WBu02R5ZNkn3SVZOBxGVVUVeJ6HXq+H1+vNsmYRMlkyVlVVwefzwWAw5Ey/iWR9k7y7uxscx2F4 ZHi0dTMPWZZh0OvhdLlQV1uX0RQzV9A0Ha1rFc0VpAAK8a9T0X983mGy16l0SmFHy4eokc2mUGqE 2ODModVqYbfbMTQ0FC1YN1n3XlEU8dxzz8W8p9FocOutt+ZUx7FyxFMVrAsGg/jd734X857BYMDW ramHIqT8LydJEna/vhuiGIl9oigK69dvgNUS+fYbq1UcFsLw+XwoLyvD4MAA2LJylJSUoKOzA3W1 dSkrSiBMZziOQ2dnZ7Q2e7ISKIqixDVVyGTfSy2dnZ3R0JNU9Ut35pZWJLm9xY5gMLIHxbIsLl11 adRBaXVaBIIBNM1tQnd3F0RRAstxkGUZnR0dmD27Kpn4M8bIyIiq3m2yJE95z3h8Hi9oZuqZgTOF pqZutxtej2fKQvmSJMHtUr9X4DzDNhgZVl/3yO1yqbZBuvtChDNPyg5Kq9XiwfsfnPT6+L2mugn7 Tsm6wZxpJFFS1WdNzQM8HpqhVclN5aGXJAkajTZmPycRPM9DlNRXjpAl+YzaYHzoylSIkgStVgvN FFkKfIg/J6pnBINBrFmzBh0dHeB5XlUD1XyzZMkSOBwOCIKQt045Z//iPAOU0To61XOy34ySMH3Q amhUlGsgy5lXHwiFQik52jF4nofVaoVOpwPLsknDDFiWxZYtW2LeU7t/l65+Go0GVqsVWq0WHMcl 1U+n08Xpp7Yt1kTSclBerxeB0TADjYZDQUFh9NqRo0dgNpnR09uNqtlVAEXB5XRCrzcgGAygurom byVYwmIRnJ4ZeO4pADiE4OCtoNnZ0FjuBsWobzVOmH4I/v+EEHgbFAR8uu9SBEMKXHzmpYFTbQs/ hk6nw759+xAOh6OtzyfbJKcoCpWVlXnVT5Zl7Nu3DzzPw+l0oqysLOkY6eo3kbQCNX/8k0divPDd d94TLVqn0+mgKDLKyysw4nRCCIdhsVig1WnRdsqBuXPzd+QLUPCKfwvB6wBDR4LLbIb9sLC7oTF/ K496EM4mZLELYuANDHsuAehiUGAQEudAlDKvuJHJZnUoFIIoihBFMWeb3pnqJwgCxNE+ifkgrUDN G/7mxui6nqIoVFR+0cnFYDDAZDSCYVjIxTJkSYbX64FWq8XKFavg8/lSinfJhHA4DI/HA5YtAUWV wWw2obt3P3T6YfjF2DKtmzZvAkMzOHz4MNraT8XJ4lgOmzdtgtvthk6nS9pZNfoZjsPmTZthtVrx xv+8AT5BQ8c5VVVYtHARJElUJROINGMI+APw+X348yT5X6tWrITJZMJFiy9SLXfz5k1gGBafffYZ TnW0x13XcBpsuvpquN1ucBynSq5Wp4vaYO8bexFO0DSyumoOFi5cCEmWVOt68UUXIczz8Pp8+GiS fLtLV66CwWDAokWLYuTSSi80AHhpCfr7ZJjNJrjdbmg0blAUBZPJlPJMY2xZlmkfyLEMjWyGRlAU BYZhoj33MmFsYpIvB0XdcOPXFAC4/PLLsG7tmoyECYKA3bt348SJEwgGg1GDhHgeUCJNA4uKi1FZ OSNhe+d//N/fz2ppFkEQcPDQp5g9axZaWlqwdu0ahD1PYWiwBVd++Y+QpPijT51eB04Tr4OiKPBl cBpksphBUfH/6YVwGKEUOuqOh2HZSTefA34/pDQ3h3V6PbgE37SKIsPnST9ALxc2YFkW+hRtcP2X 5+CFZ9egy3kX3nv/MyxdcgmOHDmKqqrZOHL0GK64/LKpx6UDmFHwJG78xilQtA06nS7hkmzevHlJ H+aenp64DXGWZbFixQo8//zz2PHcVqxe5kXnyOQHU4ngmEFU2n6NzTfaUVg0A7Iso7u7O+6+BQsW JN0f6urqwtDQUKxsjsPKlSvxzDPP4PWXb8VF8/3oHJmiOYQKPB4Pfvbzx6O/NzY29GfNTYuiiAcf fBCffvopAERLaowx5sWNRiNmV81B+YT+eblgrFQIoKCoqCgyfaYuxvIlHnh7b8n5+ISzl45uI6Az o7SkBH5/pEwLz4dRVloKQRCmnCGIsg4AhScfa8S//rsdLtcALmiIbQbymx0HUFdXl3Q21N7eDigj uGTxrHHvShgZ2IfHfnQZLl0WhKKk/qUtKZHOxE89Pg+/etYOjycM6zj9JEnGCzub0dTUlHS22NbW Bp3Gi0UXzhz3roihvg/wi/+3EYsXBCDLuSsdnDUHtXfvXrS3t6NpirQCnufhHBmG1WqFXp/bzXKL xYKlSy4BgOimHWtehj5PLbRsN0lcPk+RZCMofS0UBZg7mgpUVBQ56Jk1a2ayj46DxrBvI0pLPsQj D8X/n6epMOpqJAjiIIDJj+Svv7YCK5ZUYvXKWZATPI6SosWwV313mDHBzp4vAAACZElEQVRkmYUz sAEzKz/Gow/H16qSpSAaahWIck9SOVu+OhNrVrJYvmRGYv0kHYZ816Wsn1qSOqgDzQfQ2NCIru4u BINBlJSU4PTp0ygvL0dvbw/q6uqjnYQ///xzVUeJYykIPp8v5w5qMsJiMcLiudHxmHD24uMXwccn zsssNL6N7Xeq35Ae9m+An5+XLdUAAJ7gJfAEL0l4rdi4F9+9W/3MZ9i/GX4+//m0SR0URVFobz8F l9uNFcuXo63tFEpHp8A8HwbLfPHxnp6elPrdnQvBcwRCuoz412PEv/5MqzEpQ/5NgF9dd+gzSXTx Ob6+0xhFRUUICwLKy8px8OBBcBoOHR0d4DgOLBtbi1xWFNUOSpKkhOvecIJTLgKBcH4givEBpNEp UF9fX9zFmuoa1IyWTxmjtiZSDXNiwm9hYSH6E8iYiKIoEEURJmN8smF3d090T4BAIJxf+HzxJ8RR B2W3t6CjoyOmS3AqNNQ34OTJkzh+/DjC4TBkWY5mMNM0DZqmwTAMGIbBrNmzYUyQDf3W22+jtrbm rCzHQiAQcsuJk/a491iapiHLMmRZxm9f2IHVl65CfX1dyhvYkiyjtrYeBbYChEIhhMOROlBj4QUM w0BRIoGcxSWJ00wGB4fw1K+exrq1a1FZWQGGmdapgucEkiRCEMh+4XRHluVor8u8j60oON15Gh99 9HHM+zTFgLr33vuV011dZ0QxAoFAmIzLL7uslb755pvSzjQmEAiEXFBUVITrr7/+FKUoyq8OHzlS 9OEHH1a7PZ4zE5hEIBAIiIQ2lZdXuL587TUnCwsL//L/AVdEaCQ/K8OtAAAAAElFTkSuQmCC " + style="image-rendering:optimizeSpeed" + preserveAspectRatio="none" + height="131.18729" + width="431.46042" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.45763659px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow1Lstart)" + d="M 159.90972,784.83055 139.12256,728.44976" + id="path35518" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:24.13653564px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="56.400116" + y="760.88269" + id="text35548" + sodipodi:linespacing="125%" + transform="scale(1.0568475,0.9462103)"><tspan + sodipodi:role="line" + id="tspan35550" + x="56.400116" + y="760.88269" + style="font-size:25.50864029px">ifInOctets.1</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.45763659px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker30911)" + d="m 161.99204,861.87705 -18.09961,31.47754" + id="path35552" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:25.50864029px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="60.744244" + y="917.95532" + id="text35584" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan35586" + x="60.744244" + y="917.95532">ifInOctets.7</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.45763659px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker24132)" + d="m 266.3757,731.04051 -67.94275,61.07821" + id="path35672" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:25.50864029px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="244.68039" + y="721.34314" + id="text35710" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan35712" + x="244.68039" + y="721.34314">ifInOctets.2</tspan></text> + </g> +</svg> diff --git a/docs/source/docs/nms-components.svg b/docs/source/docs/nms-components.svg new file mode 100644 index 00000000..b754f303 --- /dev/null +++ b/docs/source/docs/nms-components.svg @@ -0,0 +1,1063 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + 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="148mm" + height="105mm" + id="svg5085" + version="1.1" + inkscape:version="0.91 r13725" + viewBox="0 0 524.40945 372.04724" + sodipodi:docname="nms-components.svg"> + <defs + id="defs5087"> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker16982" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path16984" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker16894" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mstart"> + <path + transform="matrix(0.4,0,0,0.4,4,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path16896" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker16762" + refX="0" + refY="0" + orient="auto" + inkscape:stockid="Arrow1Mend"> + <path + transform="matrix(-0.4,0,0,-0.4,-4,0)" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + id="path16764" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="marker16328" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path16330" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:0.97435895;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:0.97435895" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker16216" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path16218" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:0.97435895;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:0.97435895" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker16146" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path16148" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:0.97435895;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:0.97435895" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker16088" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path16090" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(0.4,0,0,0.4,4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="marker15874" + style="overflow:visible" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path15876" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="marker15822" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path15824" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(0.4,0,0,0.4,4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lend" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11309" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(-0.8,0,0,-0.8,-10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11306" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:#000000;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1" + transform="matrix(0.8,0,0,0.8,10,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mend" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mend" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11315" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:none;fill-opacity:0.46153846;fill-rule:evenodd;stroke:#000008;stroke-width:1pt;stroke-opacity:0.46153846" + transform="matrix(-0.4,0,0,-0.4,-4,0)" + inkscape:connector-curvature="0" /> + </marker> + <marker + inkscape:stockid="Arrow1Mstart" + orient="auto" + refY="0" + refX="0" + id="Arrow1Mstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11312" + d="M 0,0 5,-5 -12.5,0 5,5 0,0 Z" + style="fill:none;fill-opacity:0.46153846;fill-rule:evenodd;stroke:#000008;stroke-width:1pt;stroke-opacity:0.46153846" + transform="matrix(0.4,0,0,0.4,4,0)" + inkscape:connector-curvature="0" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1" + inkscape:cx="211.30348" + inkscape:cy="180.23526" + inkscape:current-layer="layer1" + inkscape:document-units="px" + showgrid="false" + inkscape:window-width="1144" + inkscape:window-height="659" + inkscape:window-x="960" + inkscape:window-y="220" + inkscape:window-maximized="0" + units="mm" + inkscape:snap-text-baseline="true" /> + <metadata + id="metadata5090"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + id="layer1" + inkscape:label="Layer 1" + inkscape:groupmode="layer" + transform="translate(0,-395.95275)"> + <image + y="481.86472" + x="326.19141" + id="image5204" + xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAOoAAAEfCAYAAABPvFpQAAAABHNCSVQICAgIfAhkiAAAIABJREFU eJzsvWmMJOd55/l748zIu47uqq6+KXaTTZGSZeqiDtKyJLJJSusxNAYMDwwsMLsYGzPAftlvwi4W mJ2dz7O7FmY0EpYWKVGyNbJlS8OxZiVDO5IP2qIkXmo2yW6yj+q6q/LOON/9EBnRmXVmVWVlZWbF D6juPCIzIyPjH8/xPu/zCimlJGHgKZfL/Nmf/Rnf/va3+clPfkKtVmNycpKZmRnOnTvH2bNnueee e7j33nu5cOECZ86cQdO0w97thN5wUiRCHVxqtRrf+973+Na3vsULL7xAs9kEQAjBTj+bYRicO3eO CxcuxH/33nsvFy9e5Ny5c33Y+4Qekgh10HAch7/6q7/i+eef5y/+4i+o1Wodz99zzz186lOfIpfL sbS0xPLyMnNzcywuLjI/P4/rujt+Ri6X49KlSzz00ENcunSJBx98kAceeIDTp08f1NdK2B+JUAcB 3/f58Y9/zDe+8Q2+853vsLq62vH8Pffcw+XLl/mN3/iNbcXk+z5zc3PcunWLmzdvdvzduXMH3/e3 3Y9CocADDzwQC/fBBx/kfe97H8ePH+/J90zYM4lQD5Of/exnfP3rX+db3/oWs7OzHc9NTU3xmc98 hieeeIILFy7s+7M8z+POnTtcv36dd955h2vXrsW3HcfZ9rXT09O8//3vj//e9773cf/99ycxcP9I hNpvbty4wfPPP88zzzzDlStXOp7L5XJ84hOf4Mknn+Thhx9GUZS+7NPS0hLXr1/n2rVrsYjffPNN Go3Glq/RdZ0LFy7w8MMP8973vpcHHniAD3/4w0xNTfVln48YiVD7wdLSEt/85jd57rnn+Pu///uO 5yzL4pOf/CSPP/44H/nIRwbGSgVBwO3bt3nzzTd566234r87d+5s+7ozZ87w8MMPd/wdO3asT3s9 siRCPShs2+YHP/gBzz77LN/97nc73EtFUXjwwQd58sknefzxx0mn04e4p7ujVqtx8+ZNrl+/zpUr V7hy5cqO1vfEiRMdwk0s765JhNpLpJT85Cc/4dlnn+VP//RPWVtb63j+wQcf5IknnuAzn/kMxWLx kPay9wRBwK1bt3jrrbe4cuUKv/rVr7hy5QrVanXL15w9e5YPfvCDPPzww3zsYx/jQx/60FBdsPpM ItRe8O677/LNb36Tr3zlK7z11lsdz01NTfH444/zuc99jjNnzhzSHh4OS0tLsdW9cuUKr776KqVS adNtVVXlvvvu4xOf+AQf//jHefTRR5Px3rskQt0ry8vLcdz5d3/3dx3PZbNZPv3pT3P58mXe//73 I4Q4pL0cLIIg4ObNmx1W9+rVq1u6zefPn+fjH/94/Pfe9763bwm2ASMR6m6wbZvvfe97PPvss7zw wgsdcaemaXz0ox/lySef5BOf+ASGYRzing4Pvu9z9epVXn75ZV555RVefvllFhcXN922WCzy2GOP 8elPf5pPf/rTPPDAA33e20MjEepOSCn56U9/Gsed64sRHnjgAS5fvsxnP/vZkYo7D5O5uTl++ctf xsJ9++23CYJgw3YnTpzgqaee4rd/+7f5zGc+g2mah7C3fSER6la8+eabPPfcczz33HNcu3at47np 6WkuX77Mk08+eeTizsOgVqvx6quv8vOf/5wXX3yRN954Y4Nwc7kcn/vc5/i93/s9Ll++PDDDXD0i EWo7Udz59a9/nb/927/teC6bzfKpT32KJ598kl/7tV9L4s5DpFQq8Y//+I/83d/9HT/5yU82ZNfP nj3LF7/4Rf75P//noxLTJkK1bZvvf//7fO1rX9sQd6qqykc/+lEuX77Mo48+msSdA0gQBLz88sv8 +Mc/5kc/+hELCwvxc7/7u7/L888/f4h71zOOplCllPzN3/wNzz77LH/yJ3+yIe68dOlSHHeOjY0d 0l4m7JYgCHjxxRd55pln+NWvfoXjOLz++utcunTpsHdtv5wcKUd+J7aLO6empnjiiSd48sknk/G7 IUVRFD760Y9y8eJFnn76aQBee+21URAqIy/UlZWVeLxzfdyZyWT41Kc+xeXLl/nABz4wKvHMkWds bAxVVfF9n1u3bh327vSEkRSq67q88MILPPPMM3z/+9/fEHd+5CMfiePOEU7pHzksy0LTNCqVChMT EywsLLC8vHzYu9UTRkqoL7/8Ms888wxf//rXO5IKABcvXuSpp57is5/9LOPj44e0hwkHQTqdJpvN AmFyEEKrurCwsCEjPKwMvVCXlpb4xje+wR//8R/z0ksvdTw3OTkZj3fec889h7SHCQdFNpulWCwi pYxb0ES5UcuyALasLR42hlKonufFru33vve9DtfWMAwee+wxnnrqKT784Q8nceeIIYQgm80yMTEB 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 AElFTkSuQmCC " + style="image-rendering:optimizeSpeed" + preserveAspectRatio="none" + height="79.551262" + width="60.080669" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:40.04136276px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="803.44281" + y="167.74838" + id="text5207" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan5209" + x="803.44281" + y="167.74838" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="381.82162" + y="499.66632" + id="text5211" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan5213" + x="381.82162" + y="499.66632" + style="font-size:12.5px">managed entity</tspan></text> + <ellipse + style="fill:none;stroke:#0000ff;stroke-width:0.55630255" + id="path6023" + cx="392.17786" + cy="455.15628" + rx="42.835293" + ry="24.47731" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="365.93002" + y="448.37213" + id="text6025" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan6027" + x="365.93002" + y="448.37213" + style="font-size:12.5px">agent</tspan></text> + <rect + style="fill:none;stroke:#0000ff;stroke-width:0.55630255" + id="rect6029" + width="45.630371" + height="11.800958" + x="377.73099" + y="457.8129" + ry="0.25476989" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="389.13858" + y="466.07361" + id="text6031" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan6033" + x="389.13858" + y="466.07361">data</tspan></text> + <image + y="482.97144" + x="52.276997" + id="image7126" + xlink:href="data:image/png;base64,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 " + style="image-rendering:optimizeSpeed" + preserveAspectRatio="none" + height="66.756302" + width="75.657135" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <ellipse + style="fill:none;stroke:#d40000;stroke-width:0.55630255" + id="path7129" + cx="132.38457" + cy="447.92435" + rx="50.067226" + ry="26.146217" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <rect + style="fill:none;stroke:#d40000;stroke-width:0.55630255" + id="rect7131" + width="53.405041" + height="14.463865" + x="104.5694" + y="451.81851" + ry="0.25476989" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="110.86328" + y="440.31064" + id="text7133" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan7135" + x="110.86328" + y="440.31064" + style="font-size:12.5px">manager</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="118.78645" + y="461.96695" + id="text7137" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan7139" + x="118.78645" + y="461.96695">data</tspan></text> + <image + y="659.9931" + x="49.765202" + id="image15452" + xlink:href="data:image/png;base64,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 " + style="image-rendering:optimizeSpeed" + preserveAspectRatio="none" + height="64.53109" + width="97.352936" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <path + style="fill:none;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1.66890752;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker15822);marker-end:url(#marker15874)" + d="m 142.09528,479.8245 14.56446,112.51932" + id="path15516" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.66890752;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker16088);marker-end:url(#marker16762)" + d="M 172.39433,468.04041 C 354.1291,600.21114 354.1291,600.21114 354.1291,600.21114" + id="path16754" + inkscape:connector-curvature="0" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1.66890752;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#marker16894);marker-end:url(#marker16982)" + d="m 186.5555,449.15887 c 157.34611,4.72037 157.34611,4.72037 157.34611,4.72037" + id="path16886" + inkscape:connector-curvature="0" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.26680374px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="557.31854" + y="94.739418" + id="text17082" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan17084" + x="557.31854" + y="94.739418" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:20.45664787px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="96.985565" + y="742.28381" + id="text20513" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20515" + x="96.985565" + y="742.28381" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.44152927px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="81.852913" + y="739.6134" + id="text20521" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20523" + x="81.852913" + y="739.6134" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.44152927px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="79.182449" + y="738.72321" + id="text20525" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20527" + x="79.182449" + y="738.72321" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.58870602px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="74.731674" + y="744.06421" + id="text20529" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20531" + x="74.731674" + y="744.06421" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.58870602px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="99.656036" + y="742.28381" + id="text20533" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20535" + x="99.656036" + y="742.28381"></tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.44152927px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="86.303688" + y="740.50354" + id="text20545" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20547" + x="86.303688" + y="740.50354" + style="font-size:12.5px">managed entity</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;" + x="42.68605" + y="568.70343" + id="text20549" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20551" + x="42.68605" + y="568.70343">managing entity</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.44152927px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="155.73587" + y="537.54797" + id="text20553" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20555" + x="155.73587" + y="537.54797" + style="font-size:12.5px">protocol</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.44152927px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="225.16803" + y="495.71063" + id="text20557" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20559" + x="225.16803" + y="495.71063" + style="font-size:12.5px">protocol</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.44152927px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="239.41052" + y="444.97174" + id="text20561" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20563" + x="239.41052" + y="444.97174" + style="font-size:12.5px">protocol</tspan></text> + <ellipse + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + ry="24.47731" + rx="42.835293" + cy="606.92786" + cx="404.64005" + id="ellipse20648" + style="fill:none;stroke:#0000ff;stroke-width:0.55630255" /> + <text + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + sodipodi:linespacing="125%" + id="text20650" + y="600.14368" + x="378.39221" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="600.14368" + x="378.39221" + id="tspan20652" + sodipodi:role="line" + style="font-size:12.5px">agent</tspan></text> + <rect + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + ry="0.25476989" + y="609.58447" + x="390.19318" + height="11.800958" + width="45.630371" + id="rect20654" + style="fill:none;stroke:#0000ff;stroke-width:0.55630255" /> + <text + inkscape:export-ydpi="90" + inkscape:export-xdpi="90" + sodipodi:linespacing="125%" + id="text20656" + y="617.84515" + x="401.60077" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="617.84515" + x="401.60077" + id="tspan20658" + sodipodi:role="line">data</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.44152927px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="398.30334" + y="659.49933" + id="text20660" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan20662" + x="398.30334" + y="659.49933" + style="font-size:12.5px">managed entity</tspan></text> + <image + y="636.5" + x="322" + id="image20967" + xlink:href="data:image/png;base64,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 +zanh3Q+g1gAAAABJRU5ErkJggg== +" + style="image-rendering:optimizeSpeed" + preserveAspectRatio="none" + height="81.508003" + width="71" /> + <ellipse + style="fill:none;stroke:#0000ff;stroke-width:0.55630255" + id="ellipse20980" + cx="149.64005" + cy="626.92786" + rx="42.835293" + ry="24.47731" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="123.39221" + y="620.14368" + id="text20982" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + style="font-size:12.5px" + sodipodi:role="line" + id="tspan20984" + x="123.39221" + y="620.14368">agent</tspan></text> + <rect + style="fill:none;stroke:#0000ff;stroke-width:0.55630255" + id="rect20986" + width="45.630371" + height="11.800958" + x="135.19318" + y="629.58447" + ry="0.25476989" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:9.03991508px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="146.60077" + y="637.84515" + id="text20988" + sodipodi:linespacing="125%" + inkscape:export-xdpi="90" + inkscape:export-ydpi="90"><tspan + sodipodi:role="line" + id="tspan20990" + x="146.60077" + y="637.84515">data</tspan></text> + </g> +</svg> diff --git a/docs/source/docs/oid-tree-mibs.svg b/docs/source/docs/oid-tree-mibs.svg new file mode 100644 index 00000000..e48e3cd2 --- /dev/null +++ b/docs/source/docs/oid-tree-mibs.svg @@ -0,0 +1,552 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="148mm" + height="105mm" + viewBox="0 0 524.40944 372.04724" + id="svg20992" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="oid-tree-mibs.svg"> + <defs + id="defs20994" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="292.75201" + inkscape:cy="188.97753" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1449" + inkscape:window-height="992" + inkscape:window-x="739" + inkscape:window-y="296" + inkscape:window-maximized="0" /> + <metadata + id="metadata20997"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-680.31496)"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 77.27667,743.7606 0,-40.4061 399.51533,0 0,12.12183" + id="path21006" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 278.8021,703.3545 0,67.68022" + id="path21008" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 77.781746,763.45857 c 399.010254,0 399.515334,0 399.515334,0" + id="path21010" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 476.792,762.44842 0,34.85026" + id="path21012" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 491.43921,797.29868 -438.406201,0 0,79.80205" + id="path21014" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 490.42906,797.29868 0,22.72843" + id="path21016" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 32.829958,926.59821 0,-49.49748 411.132092,0 -0.50508,48.48733" + id="path21018" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 96.469568,877.10073 c 0,79.29698 0,79.80206 0,79.80206" + id="path21020" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 360.11938,877.10073 c 0,45.96195 0,44.95179 0,44.95179" + id="path21022" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 275.77165,877.60581 c 0,44.95179 0,45.45687 0,45.45687" + id="path21024" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 176.27162,876.59566 c 0,45.96194 0,43.94163 0,43.94163" + id="path21028" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="88.893425" + y="727.59814" + id="text21049" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21051" + x="88.893425" + y="727.59814">ITU-T(0)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="211.12189" + y="728.10321" + id="text21053" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21055" + x="211.12189" + y="728.10321">ISO(1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="350.52292" + y="729.61847" + id="text21057" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21059" + x="350.52292" + y="729.61847">Joint ITU+ISO(2)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 77.781746,762.9535 c 0,16.66751 0,16.66751 0,16.66751" + id="path21061" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="86.368042" + y="783.66162" + id="text21063" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21065" + x="86.368042" + y="783.66162">standard(0)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="217.1828" + y="784.16669" + id="text21067" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21069" + x="217.1828" + y="784.16669">ISO member(1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="373.75644" + y="782.14642" + id="text21071" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21073" + x="373.75644" + y="782.14642">ISO Org (3)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="436.89099" + y="837.19971" + id="text21075" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21077" + x="436.89099" + y="837.19971">NATO (57)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="136.87567" + y="824.06775" + id="text21079" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21081" + x="136.87567" + y="824.06775">...</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="182.83762" + y="822.04742" + id="text21083" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="182.83762" + y="822.04742" + id="tspan21089">Open Software</tspan><tspan + sodipodi:role="line" + x="182.83762" + y="840.79742" + id="tspan21093">Foundation(22)</tspan><tspan + sodipodi:role="line" + x="182.83762" + y="859.54742" + id="tspan21087" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.91632" + y="824.06775" + id="text21095" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21097" + x="339.91632" + y="824.06775">...</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="394.46457" + y="823.05756" + id="text21099" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21101" + x="394.46457" + y="823.05756">...</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="59.093925" + y="821.54236" + id="text21103" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21105" + x="59.093925" + y="821.54236">DoD (6)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 237.38585,797.29868 c 0,10.10153 0,10.10153 0,10.10153" + id="path21107" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;" + x="59.598999" + y="862.45355" + id="text21109" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21111" + x="59.598999" + y="862.45355">Internet (1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="64.649765" + y="974.58044" + id="text21113" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21115" + x="64.649765" + y="974.58044" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="72.225906" + y="999.83429" + id="text21117" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21119" + x="72.225906" + y="999.83429" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="10.606602" + y="935.68958" + id="text21121" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21123" + x="10.606602" + y="935.68958">directory(1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="55.558392" + y="906.90021" + id="text21125" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21127" + x="55.558392" + y="906.90021">management(2)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="136.37059" + y="934.67944" + id="text21129" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21131" + x="136.37059" + y="934.67944">experimental(3)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="251.52798" + y="939.73016" + id="text21133" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21135" + x="251.52798" + y="939.73016">private(4)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="334.3605" + y="940.23529" + id="text21137" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21139" + x="334.3605" + y="940.23529">security(5)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="421.23361" + y="940.23529" + id="text21141" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21143" + x="421.23361" + y="940.23529">snmpv2(6)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 443.96204,876.59566 55.55839,0 0,0 c 0,53.21525 0,23.0002 0,33.33503" + id="path21145" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="74.751289" + y="947.30634" + id="text21166" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21168" + x="74.751289" + y="947.30634">MIB-2</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 24.748737,956.90278 c 485.883373,0 486.388453,0 486.388453,0" + id="path21170" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 24.748737,956.90279 c 0,28.78934 0,28.78934 0,28.78934" + id="path21172" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 66.164992,957.40786 c 0,16.66752 0,16.66752 0,16.66752" + id="path21174" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 95.964492,956.39771 c 0,28.28427 0,28.28427 0,28.28427" + id="path21176" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 126.77414,956.90279 c 0,16.66751 0,16.16244 0,16.16244" + id="path21178" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 162.12948,957.40786 c 0,26.76904 0,27.27412 0,27.27412" + id="path21180" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 197.9899,957.40786 c 0,14.14214 0,14.64721 0,14.64721" + id="path21182" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 233.85031,956.90279 c 0,26.26396 0,26.76904 0,26.76904" + id="path21186" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 270.21581,956.90279 c 0,13.63705 0,14.64721 0,14.64721" + id="path21190" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 305.57115,957.40786 c 0,25.75889 0,25.75889 0,25.75889" + id="path21192" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="3.030458" + y="998.8241" + id="text21194" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21196" + x="3.030458" + y="998.8241">system(1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="36.870571" + y="982.15662" + id="text21198" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21200" + x="36.870571" + y="982.15662">interface(2)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="76.771591" + y="995.79364" + id="text21202" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21204" + x="76.771591" + y="995.79364">address</tspan><tspan + sodipodi:role="line" + x="76.771591" + y="1008.2936" + id="tspan21206">translation</tspan><tspan + sodipodi:role="line" + x="76.771591" + y="1020.7936" + id="tspan21208">(3)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="113.64215" + y="981.65149" + id="text21210" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21212" + x="113.64215" + y="981.65149">ip(4)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="141.92644" + y="997.3089" + id="text21214" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21216" + x="141.92644" + y="997.3089">icmp(5)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="183.84778" + y="980.64142" + id="text21218" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21220" + x="183.84778" + y="980.64142">tcp(6)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="217.68788" + y="996.80383" + id="text21222" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21224" + x="217.68788" + y="996.80383">udp(7)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="255.06352" + y="980.13629" + id="text21226" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21228" + x="255.06352" + y="980.13629">egp(8)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="291.93408" + y="995.28857" + id="text21230" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21232" + x="291.93408" + y="995.28857">cmot(9)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="358.09909" + y="982.66168" + id="text21234" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21236" + x="358.09909" + y="982.66168">.....</tspan></text> + </g> +</svg> diff --git a/docs/source/docs/oid-tree.svg b/docs/source/docs/oid-tree.svg new file mode 100644 index 00000000..4eb1133d --- /dev/null +++ b/docs/source/docs/oid-tree.svg @@ -0,0 +1,373 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="148mm" + height="105mm" + viewBox="0 0 524.40944 372.04724" + id="svg20992" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="oid-tree.svg"> + <defs + id="defs20994" /> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="292.75201" + inkscape:cy="188.97753" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1449" + inkscape:window-height="992" + inkscape:window-x="739" + inkscape:window-y="296" + inkscape:window-maximized="0" /> + <metadata + id="metadata20997"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-680.31496)"> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 77.27667,743.7606 0,-40.4061 399.51533,0 0,12.12183" + id="path21006" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 278.8021,703.3545 0,67.68022" + id="path21008" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 77.781746,763.45857 c 399.010254,0 399.515334,0 399.515334,0" + id="path21010" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 476.792,762.44842 0,34.85026" + id="path21012" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 491.43921,797.29868 -438.406201,0 0,79.80205" + id="path21014" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 490.42906,797.29868 0,22.72843" + id="path21016" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 32.829958,926.59821 0,-49.49748 411.132092,0 -0.50508,48.48733" + id="path21018" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 96.469568,877.10073 c 0,79.29698 0,79.80206 0,79.80206" + id="path21020" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 360.11938,877.10073 c 0,45.96195 0,44.95179 0,44.95179" + id="path21022" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 275.77165,877.60581 c 0,44.95179 0,45.45687 0,45.45687" + id="path21024" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 176.27162,876.59566 c 0,45.96194 0,43.94163 0,43.94163" + id="path21028" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="88.893425" + y="727.59814" + id="text21049" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21051" + x="88.893425" + y="727.59814">ITU-T(0)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="211.12189" + y="728.10321" + id="text21053" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21055" + x="211.12189" + y="728.10321">ISO(1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="350.52292" + y="729.61847" + id="text21057" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21059" + x="350.52292" + y="729.61847">Joint ITU+ISO(2)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 77.781746,762.9535 c 0,16.66751 0,16.66751 0,16.66751" + id="path21061" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="86.368042" + y="783.66162" + id="text21063" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21065" + x="86.368042" + y="783.66162">standard(0)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="217.1828" + y="784.16669" + id="text21067" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21069" + x="217.1828" + y="784.16669">ISO member(1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="373.75644" + y="782.14642" + id="text21071" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21073" + x="373.75644" + y="782.14642">ISO Org (3)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="436.89099" + y="837.19971" + id="text21075" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21077" + x="436.89099" + y="837.19971">NATO (57)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="136.87567" + y="824.06775" + id="text21079" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21081" + x="136.87567" + y="824.06775">...</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="182.83762" + y="822.04742" + id="text21083" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="182.83762" + y="822.04742" + id="tspan21089">Open Software</tspan><tspan + sodipodi:role="line" + x="182.83762" + y="840.79742" + id="tspan21093">Foundation(22)</tspan><tspan + sodipodi:role="line" + x="182.83762" + y="859.54742" + id="tspan21087" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="339.91632" + y="824.06775" + id="text21095" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21097" + x="339.91632" + y="824.06775">...</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="394.46457" + y="823.05756" + id="text21099" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21101" + x="394.46457" + y="823.05756">...</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="59.093925" + y="821.54236" + id="text21103" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21105" + x="59.093925" + y="821.54236">DoD (6)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 237.38585,797.29868 c 0,10.10153 0,10.10153 0,10.10153" + id="path21107" + inkscape:connector-curvature="0" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;" + x="59.598999" + y="862.45355" + id="text21109" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21111" + x="59.598999" + y="862.45355">Internet (1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="64.649765" + y="974.58044" + id="text21113" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21115" + x="64.649765" + y="974.58044" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="72.225906" + y="999.83429" + id="text21117" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21119" + x="72.225906" + y="999.83429" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="10.606602" + y="935.68958" + id="text21121" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21123" + x="10.606602" + y="935.68958">directory(1)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="81.822357" + y="969.0246" + id="text21125" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21127" + x="81.822357" + y="969.0246">management(2)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="136.37059" + y="934.67944" + id="text21129" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21131" + x="136.37059" + y="934.67944">experimental(3)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="251.52798" + y="939.73016" + id="text21133" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21135" + x="251.52798" + y="939.73016">private(4)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="334.3605" + y="940.23529" + id="text21137" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21139" + x="334.3605" + y="940.23529">security(5)</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:10px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="421.23361" + y="940.23529" + id="text21141" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21143" + x="421.23361" + y="940.23529">snmpv2(6)</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 443.96204,876.59566 55.55839,0 0,0 c 0,53.21525 0,23.0002 0,33.33503" + id="path21145" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cccc" /> + </g> +</svg> diff --git a/docs/source/docs/pysnmp-architecture.rst b/docs/source/docs/pysnmp-architecture.rst new file mode 100644 index 00000000..4256e12c --- /dev/null +++ b/docs/source/docs/pysnmp-architecture.rst @@ -0,0 +1,99 @@ + +.. toctree:: + :maxdepth: 2 + +PySNMP architecture +=================== + +We can look at PySNMP's internal structure from the view point of +SNMP protocol evolution. SNMP was evolving for many years from +a relatively simple way to structure and retrieve data (SNMPv1/v2c) +all the way to extensible and modularized framework that supports +strong crypto out-of-the-box (SNMPv3). + +In the order from most ancient SNMP services to the most current ones, +what follows are different layers of PySNMP APIs: + +* The most basic and low-level is SNMPv1/v2c protocol scope. Here + programmer is supposed to build/parse SNMP messages and their payload -- + Protocol Data Unit (PDU), handle protocol-level errors, transport issues and + so on. Although considered rather complex to deal with, this API probably + gives best performance, memory footprint and flexibility, unless MIB access + and/or SNMPv3 support is needed. + +* SNMPv3 standards come with abstract service interfaces to SNMP engines + and its components. PySNMP implementation adopts this abstract API + to a great extent, so it can be used directly. As additional benefit, + SNMP RFCs could be referred to API semantics when programming + PySNMP at this level. User could implements his own SNMP application + using this API. + +* SNMPv3 (:RFC:`3413`) introduced a concept of core "SNMP Applications". + PySNMP implements them all (in *pysnmp.entity.rfc3413*), so user can + base his application right on top of one (or multiple) of those + SNMP core applications. + +* Finally, to make SNMP more simple for, at least, most frequent tasks, + PySNMP comes with a high-level API to core SNMP applications and some + of SNMP engine services. This API is known under the name *pysnmp.hlapi* + and should be used whenever possible. + +Another view to PySNMP internals could be from the code standpoint: +PySNMP consists of a handful of large, self-contained components +with well-defined interfaces. The following figure explains PySNMP +functional structure. + +.. image:: pysnmp-design.svg + +PySNMP inner components: + +* SNMP Engine is a central, umbrella object that controls the other + components of the SNMP system. Typical user application has a single + instance of SNMP Engine class possibly shared by many SNMP + Applications of all kinds. As the other linked-in components tend + to buildup various configuration and housekeeping information in + runtime, SNMP Engine object appears to be expensive to configure to + a usable state. + +* Transport subsystem is used for sending SNMP messages to and + accepting them from network. The I/O subsystem consists of an + abstract Dispatcher and one or more abstract Transport classes. + Concrete Dispatcher implementation is I/O method-specific, consider + BSD sockets for example. Concrete Transport classes are transport + domain-specific. SNMP frequently uses UDP Transport but others are + also possible. Transport Dispatcher interfaces are mostly used by + Message And PDU Dispatcher. However, when using the + SNMPv1/v2c-native API (the lowest-level one), these interfaces would + be invoked directly. + +* Message and PDU Dispatcher is the locus of SNMP message processing + activities. Its main responsibilities include dispatching PDUs from + SNMP Applications through various subsystems all the way down to + Transport Dispatcher, and passing SNMP messages coming from network + up to SNMP Applications. It maintains logical connection with + Management Instrumentation Controller which carries out operations + on Managed Objects, here for the purpose of LCD access. + +* Message Processing Modules handle message-level protocol operations + for present and possibly future versions of SNMP protocol. Most + importantly, these include message parsing/building and possibly + invoking security services whenever required. + +* Message Security Modules perform message authentication and/or + encryption. As of this writing, User-Based (for v3) and Community + (for v1/2c) modules are implemented in PySNMP. All Security Modules + share standard API used by Message Processing subsystem. + +* Access Control subsystem uses LCD information to authorize remote + access to Managed Objects. This is used when running in agent role. + +* A collection of MIB modules and objects that are used by SNMP engine + for keeping its configuration and operational statistics. They are + collectively called Local Configuration Datastore (LCD). + +In most cases user is expected to only deal with the high-level API to +all these PySNMP components. However implementing SNMP Agents, Proxies +and some non-trivial features of managers require using the Standard +Applications API. In those cases general understanding of SNMP +operations and SNMP Engine components would be helpful. + diff --git a/docs/source/docs/pysnmp-design.svg b/docs/source/docs/pysnmp-design.svg new file mode 100644 index 00000000..85de16d2 --- /dev/null +++ b/docs/source/docs/pysnmp-design.svg @@ -0,0 +1,884 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="148mm" + height="105mm" + viewBox="0 0 524.40944 372.04724" + id="svg20992" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="pysnmp-design.svg"> + <defs + id="defs20994"> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker33015" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path33017" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker32567" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path32569" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker31071" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path31073" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="marker30911" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path30913" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path11309" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker30165" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + id="path30167" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker29669" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path29671" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker29255" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + id="path29257" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker29033" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:collect="always"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + id="path29035" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker28879" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path28881" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker28731" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path28733" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker28589" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path28591" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker28045" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + id="path28047" /> + </marker> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11324" + style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(1,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker26281" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:collect="always"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + id="path26283" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible" + id="marker26163" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lstart" + inkscape:collect="always"> + <path + transform="scale(1.1) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + id="path26165" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker24132" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path24134" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker24008" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path24010" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker23908" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path23910" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker23470" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path23472" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker23388" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path23390" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker23312" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path23314" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker23240" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:collect="always"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + id="path23242" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path11327" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker23112" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path23114" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Send" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path11321" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.2) rotate(180) translate(6,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Sstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Sstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11318" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.2) translate(6,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11306" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.8) translate(12.5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.4" + inkscape:cx="301.76067" + inkscape:cy="172.18398" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1449" + inkscape:window-height="992" + inkscape:window-x="578" + inkscape:window-y="359" + inkscape:window-maximized="0" /> + <metadata + id="metadata20997"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-680.31496)"> + <rect + ry="0.50713533" + y="788.82922" + x="210.45312" + height="88.473907" + width="140.88399" + id="rect21265" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5.31342745;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21267" + width="120.9" + height="60.913784" + x="379.9386" + y="811.44806" + ry="0.34915981" /> + <rect + ry="0.34915981" + y="882.17633" + x="68.524635" + height="60.913784" + width="120.9" + id="rect21269" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.60030866;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21273" + width="193.02188" + height="50.064068" + x="203.09639" + y="908.88251" + ry="0.21211188" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:6.65981293;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Sstart);marker-end:url(#Arrow1Send)" + d="m 357.02466,1013.8197 45.41016,0" + id="path21279" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:19.42445374px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="418.39761" + y="1020.8805" + id="text22177" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22179" + x="418.39761" + y="1020.8805">Network</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15.26207066px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="341.73798" + y="813.61774" + id="text22622" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="341.73798" + y="813.61774" + id="tspan22626" /></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:0.79872566px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker30165)" + d="m 355.4149,843.94611 20.61103,0" + id="path23048" + inkscape:connector-curvature="0" /> + <circle + id="path23102" + style="fill:#000000;stroke:none" + cx="478.23038" + cy="873.29956" + r="1.6649532" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" + d="m 127.81855,860.61722 0,18.50043" + id="path23104" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker23240)" + d="m 279.63629,787.36039 0,-21.30352" + id="path23232" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker23470)" + d="m 235.55917,738.01035 -40.92517,0" + id="path23304" + inkscape:connector-curvature="0" /> + <rect + ry="0.34915981" + y="811.44806" + x="379.9386" + height="60.913784" + width="120.9" + id="rect25541" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect25545" + width="120.9" + height="60.913784" + x="385.49445" + y="817.00391" + ry="0.34915981" /> + <rect + ry="0.34915981" + y="822.55975" + x="391.05029" + height="60.913784" + width="120.9" + id="rect25547" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + ry="0.34915981" + y="711.94812" + x="377.41321" + height="60.913784" + width="120.9" + id="rect25549" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <circle + r="1.6649532" + cy="773.79962" + cx="475.70499" + style="fill:#000000;stroke:none" + id="circle25551" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect25553" + width="120.9" + height="60.913784" + x="377.41321" + y="711.94812" + ry="0.34915981" /> + <rect + ry="0.34915981" + y="717.50397" + x="382.96906" + height="60.913784" + width="120.9" + id="rect25555" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect25557" + width="120.9" + height="60.913784" + x="388.5249" + y="723.05981" + ry="0.34915981" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;" + x="349.51279" + y="725.07275" + id="text25559" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan25561" + x="349.51279" + y="725.07275" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="401.12952" + y="840.70551" + id="text25563" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan25565" + x="401.12952" + y="840.70551">Message</tspan><tspan + sodipodi:role="line" + x="401.12952" + y="856.33051" + id="tspan25567">Processing:</tspan><tspan + sodipodi:role="line" + x="401.12952" + y="871.95551" + id="tspan25569">v1/v2c/v3</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="396.58383" + y="739.69031" + id="text25571" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="396.58383" + y="739.69031" + id="tspan25575">Security:</tspan><tspan + sodipodi:role="line" + x="396.58383" + y="755.31531" + id="tspan25581">Community and</tspan><tspan + sodipodi:role="line" + x="396.58383" + y="770.94031" + id="tspan25577">User-based</tspan></text> + <rect + ry="0.21211188" + y="908.88251" + x="203.09639" + height="50.064068" + width="193.02188" + id="rect25583" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.60030866;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.60030866;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect25585" + width="193.02188" + height="50.064068" + x="207.73924" + y="913.52539" + ry="0.21211188" /> + <rect + ry="0.21211188" + y="917.8111" + x="211.66782" + height="50.064068" + width="193.02188" + id="rect25587" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.60030866;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="222.5" + y="938.43365" + id="text25589" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan25591" + x="222.5" + y="938.43365">Asynchronous I/O:</tspan><tspan + sodipodi:role="line" + x="222.5" + y="954.05865" + id="tspan25593">asyncore, twisted, asyncio</tspan></text> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:1.96124065;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect25775" + width="59.808678" + height="28.393888" + x="276.54752" + y="998.62128" + ry="0.1627547" /> + <rect + ry="0.1627547" + y="1001.4785" + x="279.76181" + height="28.393888" + width="59.808678" + id="rect25777" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:1.96124065;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="284.64285" + y="1019.148" + id="text25779" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan25781" + x="284.64285" + y="1019.148">IPv4/v6</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="82.426392" + y="899.79944" + id="text25783" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan25785" + x="82.426392" + y="899.79944">View-based</tspan><tspan + sodipodi:role="line" + x="82.426392" + y="915.42444" + id="tspan25787">Access Control</tspan><tspan + sodipodi:role="line" + x="82.426392" + y="931.04944" + id="tspan25789">Substsrem</tspan></text> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect25791" + width="120.9" + height="60.913784" + x="68.524643" + y="799.34381" + ry="0.34915981" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="77.880722" + y="818.98724" + id="text25801" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan25803" + x="77.880722" + y="818.98724">MIB</tspan><tspan + sodipodi:role="line" + x="77.880722" + y="834.61224" + id="tspan25805">Instrumentation</tspan><tspan + sodipodi:role="line" + x="77.880722" + y="850.23724" + id="tspan25807">Controller</tspan></text> + <rect + ry="0.27164602" + y="713.42377" + x="109.37874" + height="47.390873" + width="81.618202" + id="rect25809" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.95990133;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.13618755px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="120.91365" + y="734.06427" + id="text25811" + sodipodi:linespacing="125%" + transform="scale(1.0001196,0.99988041)"><tspan + sodipodi:role="line" + x="120.91365" + y="734.06427" + id="tspan25827">MIB</tspan><tspan + sodipodi:role="line" + x="120.91365" + y="749.2345" + id="tspan25831">Builder</tspan></text> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.04863167;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect25817" + width="84.054855" + height="48.817371" + x="237.71248" + y="713.46808" + ry="0.27982277" /> + <text + sodipodi:linespacing="125%" + id="text25819" + y="734.63953" + x="249.60666" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + xml:space="preserve"><tspan + y="734.63953" + x="249.60666" + id="tspan25821" + sodipodi:role="line">MIB View</tspan><tspan + id="tspan25823" + y="750.26453" + x="249.60666" + sodipodi:role="line">Controller</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="240.01021" + y="835.14972" + id="text25833" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan25835" + x="240.01021" + y="835.14972">SNMP Engine</tspan></text> + <path + inkscape:connector-curvature="0" + id="path26161" + d="m 307.18535,881.28782 0,24.9014" + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:0.89901799px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker26163);marker-end:url(#marker26281)" /> + <path + inkscape:connector-curvature="0" + id="path28043" + d="m 151.05206,762.63242 0,31.40357" + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.44613695px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker29033)" /> + <path + inkscape:connector-curvature="0" + id="path29667" + d="m 450.85715,808.57359 0,-21.30352" + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker29669)" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:0.89901799px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#marker30911);marker-end:url(#marker31071)" + d="m 307.89964,969.85925 0,24.9014" + id="path30909" + inkscape:connector-curvature="0" /> + <rect + ry="0.19794792" + y="714.49524" + x="13.307358" + height="34.53363" + width="64.47525" + id="rect32547" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.2457118;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.2457118;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect32551" + width="64.47525" + height="34.53363" + x="16.878786" + y="720.20953" + ry="0.19794792" /> + <rect + ry="0.19794792" + y="725.92383" + x="20.450214" + height="34.53363" + width="64.47525" + id="rect32553" + style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:2.2457118;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:12.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="35" + y="748.79077" + id="text32555" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan32557" + x="35" + y="748.79077">MIBs</tspan></text> + <path + inkscape:connector-curvature="0" + id="path32565" + d="m 107.70203,736.58178 -21.309189,0" + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:0.80093813px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker32567)" /> + </g> +</svg> diff --git a/docs/source/docs/snmp-apps.svg b/docs/source/docs/snmp-apps.svg new file mode 100644 index 00000000..e2218587 --- /dev/null +++ b/docs/source/docs/snmp-apps.svg @@ -0,0 +1,278 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="148mm" + height="105mm" + viewBox="0 0 524.40944 372.04724" + id="svg20992" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="snmp-apps.svg"> + <defs + id="defs20994"> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Send" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path11321" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.2) rotate(180) translate(6,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Sstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Sstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11318" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.2) translate(6,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11306" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) translate(12.5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="219.51595" + inkscape:cy="188.97753" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1449" + inkscape:window-height="992" + inkscape:window-x="739" + inkscape:window-y="296" + inkscape:window-maximized="0" /> + <metadata + id="metadata20997"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title /> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-680.31496)"> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.67956519;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21257" + width="108.92198" + height="54.878826" + x="44.281418" + y="695.61304" + ry="0.31456721" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="60.60915" + y="718.00171" + id="text21259" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan21261" + x="60.60915" + y="718.00171">Command</tspan><tspan + sodipodi:role="line" + x="60.60915" + y="736.75171" + id="tspan21263">Generator</tspan></text> + <rect + ry="0.31456721" + y="696.1181" + x="198.83475" + height="54.878826" + width="108.92198" + id="rect21265" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.67956519;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.67956519;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21267" + width="108.92198" + height="54.878826" + x="361.9744" + y="696.1181" + ry="0.31456721" /> + <rect + ry="0.31456721" + y="776.9303" + x="118.52763" + height="54.878826" + width="108.92198" + id="rect21269" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.67956519;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3.67956519;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21271" + width="108.92198" + height="54.878826" + x="281.1622" + y="776.9303" + ry="0.31456721" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:3;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21273" + width="173.24117" + height="74.246216" + x="169.20055" + y="857.90784" + ry="0.314567" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:6;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Sstart);marker-end:url(#Arrow1Send)" + d="m 255.5686,951.34695 0,40.9112" + id="path21279" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="214.15234" + y="718.50677" + id="text22145" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22147" + x="214.15234" + y="718.50677">Notification</tspan><tspan + sodipodi:role="line" + x="214.15234" + y="737.25677" + id="tspan22149">Receiver</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="379.31229" + y="717.49664" + id="text22151" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22153" + x="379.31229" + y="717.49664">Proxy</tspan><tspan + sodipodi:role="line" + x="379.31229" + y="736.24664" + id="tspan22155">Forwarder</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="132.83507" + y="798.30884" + id="text22157" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="132.83507" + y="798.30884" + id="tspan22161">Command</tspan><tspan + sodipodi:role="line" + x="132.83507" + y="817.05884" + id="tspan22165">Responder</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="292.94421" + y="799.31903" + id="text22167" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22169" + x="292.94421" + y="799.31903">Notification</tspan><tspan + sodipodi:role="line" + x="292.94421" + y="818.06903" + id="tspan22171">Originator</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="196.97974" + y="899.32404" + id="text22173" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22175" + x="196.97974" + y="899.32404">SNMP Engine</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:17.5px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="218.69803" + y="1026.0983" + id="text22177" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22179" + x="218.69803" + y="1026.0983">Network</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 254.55844,752.85198 c 0,101.52033 0,101.52033 0,101.52033" + id="path22183" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 99.500026,750.32659 0,97.47972 -1.010152,0.50508 155.563496,0 0.50507,-0.50508" + id="path22187" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 419.71838,751.33675 -0.50508,96.46956 -164.65486,0" + id="path22189" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 172.73609,832.65403 0,9.09137 81.31728,0" + id="path22191" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 336.3808,831.64387 0,9.59646 -82.32743,0.50507" + id="path22193" + inkscape:connector-curvature="0" + sodipodi:nodetypes="ccc" /> + </g> +</svg> diff --git a/docs/source/docs/snmp-design.rst b/docs/source/docs/snmp-design.rst new file mode 100644 index 00000000..afc61ebf --- /dev/null +++ b/docs/source/docs/snmp-design.rst @@ -0,0 +1,285 @@ + +.. toctree:: + :maxdepth: 2 + +SNMP design +=========== + +Contrary to what the name might suggest, SNMP is much more than just +a protocol for moving management data. Over time it has grown to be +more complex than its initial designers probably planned it. + +Terminology and entities +------------------------ + +The network management field has its own specific terminology for +various components of a network management architecture, and so we +adopt that terminology here. The peculiarity of this terminology is +that the word "management" is greatly overused. So bare with it. + +There are three principle components of a network management +architecture: a managing entity, the managed entity, and a network +management protocol. + +.. image:: nms-components.svg + +* The managing entity is an application running in a centralized + network management station (NMS). It is the managing entity + that controls the collection, processing, analysis, and/or display + of network management information. It is here that actions are + initiated to control network behavior and here that the human network + administrator interacts with the network devices. + +* A managed entity is typically hardware or software application that + resides on a managed network. It enumerates and formalizes some + of its properties and states, important for healthy operation, thus + making them available to the managing entity. For example, a managed + entity could be a host, router, switch, printer, or any other device. + +* The third piece of a network management system is the network + management protocol. The protocol runs between the managing entity + and the managed entity, allowing the managing entity to query the + status of managed entity and make the latter carrying out actions + via its agents. + +Structure and components +------------------------ + +SNMP consists of four parts: + +* Definitions of network management objects known as MIB objects. + Management information is represented as a collection of managed + objects that together form a virtual information store, known as + the Management Information Base (MIB). A MIB object might be a counter, + descriptive information such as software version; status + information such as whether or not a device is healthy, or + protocol-specific information such as a routing path to a destination. + MIB objects thus define the management information maintained by a + managed node. Related MIB objects are gathered into so-called MIB modules. + +* Data definition language, called SMI (Structure of Management + Information) that introduces base data types, allows for creating + their subtypes and more complex data structures. MIB objects are + expressed in this data definition language. + +* Protocol (SNMP) for conveying information and commands between a managing + and managed entities. SNMP is designed around a client-server model. + What's interesting that both managing and managed entities contain client + and server components. + +* Extensible security framework and system administration capabilities. + +The latter features were completely absent in SNMP versions prior to +SNMPv3. + +Data types +---------- + +SMI introduces eleven base data types used for representing managed +objects states. They are either pure ASN.1 types or their +specializations. Pure ASN.1 types: + +* INTEGER +* OCTET STRING +* OBJECT IDENTIFIER + +ASN.1 is a really aged and quite complex set of standards that deals +with structuring and serializing data in a portable way. + +SNMP-specific subtypes of those base ASN.1 types are: + +* Integer32/Unsigned32 - 32-bit integer +* Counter32/Counter64 - ever increasing number +* Gauge32 - positive, non-wrapping 31-bit integer +* TimeTicks - time since some event +* IPaddress - IPv4 address +* Opaque - uninterpreted ASN.1 string + +In addition to these scalar types, SNMP defines a way to collect them +into ordered arrays. From these arrays 2-d tables could be built. + +PySNMP relies on the `PyASN1 <http://pyasn1.sf.net/>`_ package for +modeling all SNMP types. With PyASN1, instances of ASN.1 types are +represented by Python objects that look like either a string or an +integer. + +We can convert PyASN1 objects into Python types and back. PyASN1 +objects can participate in basic arethmetic operations (numbers) +or in operations with strings (concatination, subscrption etc). +All SNMP base types are immutable like their Python counterparts. + +.. code-block:: python + + >>> from pyasn1.type.univ import * + >>> Integer(21) * 2 + Integer(42) + >>> Integer(-1) + Integer(1) + Integer(0) + >>> int(Integer(42)) + 42 + >>> OctetString('Hello') + ', ' + + >>> OctetString(hexValue='5079534e4d5021') + OctetString('Hello, PySNMP!') + +Users of PySNMP library may encounter PyASN1 classes and objects +when passing data to or receiving data from PySNMP. + +The one data type we will discuss in more detail shortly is the OBJECT +IDENTIFIER data type, which is used to name an object. With this +system, objects are identified in a hierarchical manner. + +Object Identifier ++++++++++++++++++ + +OIDs are widly used in computing for identifying objects. This system +can be depicted as a tree whose nodes are assigned by different +organizations, knowledge domains, types of concepts or objects, +concrete instances of objects. From human perspective, an OID is a +long sequence of numbers, coding the nodes, separated by dots. + +.. image:: oid-tree.svg + +Each 'branch' of this tree has a number and a name, and the complete +path from the top of the tree down to the point of interest forms the +name of that point. This complete path is the OID, the "identifier of +an object" respectively. Nodes near the top of the tree are of an +extremely general nature. + +Top level MIB object IDs (OIDs) belong to different standard +organizations. Vendors define private branches including managed +objects for their own products. + +At the top of the hierarchy are the International Organization for +Standardization (ISO) and the Telecommunication Standardization +Sector of the International Telecommunication Union (ITU-T), the two +main standards organizations dealing with ASN.1, as well as a brach +for joint efforts by these two organizations. + +In PyASN1 model, OID looks like an immutable sequence of numbers. +Like it is with Python tuples, PyASN1 OID objects can be concatinated +or split apart. Subscription operation returns a numeric sub-OID. + +.. code-block:: python + + >>> from pyasn1.type.univ import * + >>> internetId = ObjectIdentifier((1, 3, 6, 1)) + >>> internetId + ObjectIdentifier('1.3.6.1') + >>> internetId[2] + 6 + >>> [ x for x in internetId ] + [1, 3, 6, 1] + >>> internetId + (2,) + ObjectIdentifier('1.3.6.1.2') + >>> internetId[1:3] + ObjectIdentifier('3.6') + >>> internetId[1] + >>> = 2 + ... + TypeError: object does not support item assignment + +Collections of objects +---------------------- + +Management Information Base (MIB) can be thought of as a formal +description of a collection of relevant managed objects whose values +collectively reflect the current "state" of some subsystem at a +managed entity. These values may be queried, modified by or reported +to a managing entity by sending SNMP messages to the agent that is +executing in a managed node. + +For example, the typical objects to monitor on a printer are the +different cartridge states and maybe the number of printed files, and +on a switch the typical objects of interest are the incoming and +outgoing traffic as well as the rate of package loss or the number of +packets addressed to a broadcast address. + +Every managed device keeps a database of values for each of the +definitions written in the MIB. So, the available data is actually not +dependent on the database, but on the implementation. It is important +to realize that MIB files never contain data, they are functionally +similar to database schemas rather than datastores. + +To organize MIB modules and objects properly, all the manageable +features of all products (from each vendor) are arranged in this MIB +tree structure. Each MIB module and object is uniquely identified +by an Object Identifier. + +Both SNMP managed and managing entities could consume MIB information. + +* Managing entity + + + Looks up OID by MIB object name + + Casts value to proper type of MIB object + + Humans read comments left by other humans + +* Managed entity + + + Implements MIB objects in code + +From human perspective, MIB is a text file written in a subset of +ASN.1 language. We maintain `a collection +<http://mibs.snmmplabs.com/asn1/>`_ of 9000+ MIB modules that you can +use for your projects. + +PySNMP converts ASN.1 MIB files into Python modules, then SNMP +engine loads those modules at runtime on demand. PySNMP MIB modules +are universal -- the same module can be consumed by both managed and +managing entities. + +MIB convertion is performed automatically by PySNMP, but technically, +it is handled by PySNMP sister project called +`PySMI <http://pysmi.sf.net>`_. However you can also perform said +conversion by hand with PySMI's *mibdump.py* tool. + +Protocol operations +------------------- + +SNMP is designed around a client-server model. Both managing and +managed entities contain client and server components. Clients and +servers exchange data in a name-value form. Values are strongly +typed. + +Central to protocol entity is *SNMP engine* that coordinates workings +of all SNMP components. + +.. image:: snmp-engine.svg + +Two modes of protocol operation are defined: + +* Request-response messages +* Unsolicited messages + +Protocol carries SNMP messages. Besides header information used for +protocol operations, management information is transferred in +so-called Protocol Data Units (PDU). Seven PDU types are defined in +SNMP addressing conceptually different operations to be performed by +either managing or managed entities (Manager or Agent repectively). + +* Manager-to-agent + + + GetRequest, SetRequest, GetNextRequest, GetBulkRequest, + InformRequest + +* Manager-to-manager + + + InformRequest, Response + +* Agent-to-manager + + + SNMPv2-Trap, Response + +Core applications +----------------- + +The standard (:RFC:`3413`) identifies a few "standard" SNMP applications +that are associated with either managing or managed entities. + +.. image:: snmp-apps.svg + +PySNMP implements all these standard applications (via *Native SNMP +API*) carefully following RFCs and their abstract service +interfaces. The backside of this approach is that it's way too +detailed and verbose for most SNMP tasks. To make SNMP easy to use, +PySNMP introduces *High-level SNMP API*. + diff --git a/docs/source/docs/snmp-engine.svg b/docs/source/docs/snmp-engine.svg new file mode 100644 index 00000000..dfd3b70e --- /dev/null +++ b/docs/source/docs/snmp-engine.svg @@ -0,0 +1,506 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + 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:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + width="148mm" + height="105mm" + viewBox="0 0 524.40944 372.04724" + id="svg20992" + version="1.1" + inkscape:version="0.91 r13725" + sodipodi:docname="snmp-engine.svg"> + <defs + id="defs20994"> + <marker + inkscape:stockid="Arrow2Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11324" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker24244" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path24246" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker24132" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path24134" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker24008" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path24010" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker23908" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path23910" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker23566" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path23568" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker23470" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path23472" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker23388" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path23390" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker23312" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path23314" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#000000;stroke-opacity:1;fill:#000000;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker23240" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow2Lend" + inkscape:collect="always"> + <path + transform="scale(1.1) rotate(180) translate(1,0)" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + id="path23242" /> + </marker> + <marker + inkscape:stockid="Arrow2Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow2Lend" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path11327" + style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round;stroke:#007e00;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z " + transform="scale(1.1) rotate(180) translate(1,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="marker23112" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path23114" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;stroke-opacity:1;fill:#000000;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:isstock="true" + style="overflow:visible;" + id="marker23056" + refX="0.0" + refY="0.0" + orient="auto" + inkscape:stockid="Arrow1Lend" + inkscape:collect="always"> + <path + transform="scale(0.8) rotate(180) translate(12.5,0)" + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + id="path23058" /> + </marker> + <marker + inkscape:stockid="Arrow1Lend" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lend" + style="overflow:visible;" + inkscape:isstock="true" + inkscape:collect="always"> + <path + id="path11309" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#008000;stroke-width:1pt;stroke-opacity:1;fill:#008000;fill-opacity:1" + transform="scale(0.8) rotate(180) translate(12.5,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Send" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Send" + style="overflow:visible;" + inkscape:isstock="true"> + <path + id="path11321" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.2) rotate(180) translate(6,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Sstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Sstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11318" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.2) translate(6,0)" /> + </marker> + <marker + inkscape:stockid="Arrow1Lstart" + orient="auto" + refY="0.0" + refX="0.0" + id="Arrow1Lstart" + style="overflow:visible" + inkscape:isstock="true"> + <path + id="path11306" + d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z " + style="fill-rule:evenodd;stroke:#007e00;stroke-width:1pt;stroke-opacity:1;fill:#007e00;fill-opacity:1" + transform="scale(0.8) translate(12.5,0)" /> + </marker> + </defs> + <sodipodi:namedview + id="base" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageopacity="0.0" + inkscape:pageshadow="2" + inkscape:zoom="1.979899" + inkscape:cx="219.51595" + inkscape:cy="188.97753" + inkscape:document-units="px" + inkscape:current-layer="layer1" + showgrid="false" + inkscape:window-width="1449" + inkscape:window-height="992" + inkscape:window-x="578" + inkscape:window-y="359" + inkscape:window-maximized="0" /> + <metadata + id="metadata20997"> + <rdf:RDF> + <cc:Work + rdf:about=""> + <dc:format>image/svg+xml</dc:format> + <dc:type + rdf:resource="http://purl.org/dc/dcmitype/StillImage" /> + <dc:title></dc:title> + </cc:Work> + </rdf:RDF> + </metadata> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(0,-680.31496)"> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:5.54530191;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21257" + width="154.19728" + height="88.044258" + x="297.43558" + y="778.2851" + ry="0.50467247" /> + <rect + ry="0.34915981" + y="696.8255" + x="168.32329" + height="60.913784" + width="120.9" + id="rect21265" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21267" + width="120.9" + height="60.913784" + x="330.34216" + y="696.8255" + ry="0.34915981" /> + <rect + ry="0.34915981" + y="788.76691" + x="118.42822" + height="60.913784" + width="120.9" + id="rect21269" + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:4.08420277;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" /> + <rect + style="fill:none;fill-opacity:1;stroke:#000000;stroke-width:2.60030866;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="rect21273" + width="193.02188" + height="50.064068" + x="163.09639" + y="891.73962" + ry="0.21211188" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:6.65981293;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1;marker-start:url(#Arrow1Sstart);marker-end:url(#Arrow1Send)" + d="m 264.3726,958.25744 0,45.41016" + id="path21279" + inkscape:connector-curvature="0" + sodipodi:nodetypes="cc" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:19.42445374px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="222.3262" + y="1033.3805" + id="text22177" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22179" + x="222.3262" + y="1033.3805">Network</tspan></text> + <ellipse + style="fill:none;fill-opacity:1;stroke:#008000;stroke-width:6.65981293;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.97435895" + id="path22214" + cx="77.406197" + cy="725.32019" + rx="31.114349" + ry="19.901972" /> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.64953232px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="181.96164" + y="732.88867" + id="text22612" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22614" + x="181.96164" + y="732.88867">Dispatcher</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.64953232px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="346.7836" + y="721.11566" + id="text22616" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22618" + x="346.7836" + y="721.11566">Message</tspan><tspan + sodipodi:role="line" + x="346.7836" + y="741.92755" + id="tspan22620">Processing</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:15.26207066px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="341.73798" + y="813.61774" + id="text22622" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + x="341.73798" + y="813.61774" + id="tspan22626" /></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.64953232px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="315.94955" + y="805.20844" + id="text22630" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22632" + x="315.94955" + y="805.20844">Timeliness</tspan><tspan + sodipodi:role="line" + x="315.94955" + y="826.02032" + id="tspan22634">Authentication</tspan><tspan + sodipodi:role="line" + x="315.94955" + y="846.83228" + id="tspan22636">Encryption</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.64953232px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="172.43111" + y="921.8172" + id="text22950" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22952" + x="172.43111" + y="921.8172">Transport subsystem</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.64953232px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="147.76387" + y="812.49652" + id="text22954" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22956" + x="147.76387" + y="812.49652">Access</tspan><tspan + sodipodi:role="line" + x="147.76387" + y="833.30841" + id="tspan22958">Control</tspan></text> + <text + xml:space="preserve" + style="font-style:normal;font-weight:normal;font-size:16.64953232px;line-height:125%;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + x="59.7467" + y="731.20673" + id="text22960" + sodipodi:linespacing="125%"><tspan + sodipodi:role="line" + id="tspan22962" + x="59.7467" + y="731.20673">PDU</tspan></text> + <path + style="fill:none;fill-rule:evenodd;stroke:#008000;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow1Lend)" + d="m 109.64178,726.16119 56.62251,0" + id="path23006" + inkscape:connector-curvature="0" /> + <circle + id="path23046" + style="fill:#000000;stroke:none" + cx="289.03979" + cy="708.22137" + r="1.6649532" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker23056)" + d="m 290.16108,707.10015 39.80393,0" + id="path23048" + inkscape:connector-curvature="0" /> + <circle + id="path23102" + style="fill:#000000;stroke:none" + cx="428.63394" + cy="758.677" + r="1.6649532" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#Arrow2Lend)" + d="m 429.75518,758.11647 0,18.50043" + id="path23104" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker23240)" + d="m 361.35967,778.29875 0,-21.30352" + id="path23232" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker23470)" + d="m 329.40439,744.101 -40.92517,0" + id="path23304" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:1.10996878px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:url(#marker23566)" + d="m 264.3726,757.55585 0,131.74545" + id="path23558" + inkscape:connector-curvature="0" /> + <path + style="fill:none;fill-rule:evenodd;stroke:#007e00;stroke-width:0.89901799px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:url(#Arrow2Lstart);marker-end:url(#marker24244)" + d="m 205.56604,760.60432 0,24.9014" + id="path23828" + inkscape:connector-curvature="0" /> + </g> +</svg> diff --git a/docs/source/docs/snmp-history.rst b/docs/source/docs/snmp-history.rst new file mode 100644 index 00000000..d8434c3a --- /dev/null +++ b/docs/source/docs/snmp-history.rst @@ -0,0 +1,105 @@ + +.. toctree:: + :maxdepth: 2 + +SNMP history +============ + +In the early days of networking, when computer networks were research +artifacts rather than a critical infrastructure used by almost every +second human on Earth, "network management" was practically unknown. +Whenever one encountered a network problem, he might run a few pings +to locate the source of the problem and then modify system settings, +reboot hardware or software, or call a remote colleague to check +console at the machine room. + +An interesting discussion of the first major "crash" of the ARPAnet in +1980, long before network management tools were available, and the +efforts taken to recover from and understand the crash can be read in +:RFC:`789`. The astonishment of the engineers taking part in +post-mortem investigation could be read between the lines. As the +public Internet and private intranets have grown from small networks +into a large global infrastructure, the need to more systematically +manage the huge number of hardware and software components within +these networks has grown more important as well. + +SNMP was quickly designed and deployed by a group of university +network researchers and users at a time when the need for network +management was becoming painfully clear. + +SNMP milestones: + +* Research project, successor of SGMP +* SNMPv1 in 1988: initial revision +* SNMPv2 in 1993: improvements +* SNMPv3 in 1999: full redesign +* SNMPv3: backward compatible +* SNMPv3: full Internet standard (STD0062) + +SNMP was initially thought as an interim solution to fill the need for +network management tool while a more theoretically sound system was +being developed by the ISO. Anticipating the transition to the new +network management system, SNMP designers made SNMP modular. Although +that transition never occurred, the modularity of SNMP help it +evolving through three major versions and found widespread use and +acceptance. + +The IETF recognizes SNMP version 3 as defined by :RFC:`3411` .. +:RFC:`3418` as the current standard version of SNMP. The IETF has +designated SNMPv3 a full Internet standard, the highest maturity level +for an RFC. In practice, SNMP implementations often support multiple +versions: typically SNMPv1, SNMPv2c, and SNMPv3 + +Is it still relevant? +--------------------- + +Considering how old SNMP is you might be wondering why it is still in +use and is there a more modern alternative? Apparently, SNMP is still +the primary way to do performance and fault management. SNMP is +universally supported by all networking hardware manufactures and +network management applications. + +Perhaps one reason for SNMP being so tenacious is that, considering +SNNP's wide deployment, it takes too much effort to migrate to +anything else. But the other reason is that no significant drawbacks +have been found in SNMP at least in the areas of fault and performance +management. + +Additionally, SNMP is free and not controlled by any particular +vendor. No copyright or licensing fees are required, so anyone can use +it or build SNMP products on it. + +Despite significant efforts made by technology companies and standards +bodies over all these years, no other network monitoring standard +was adopted so far. The most prominent open alternative is probably +NETCONF (:RFC:`6241`). However it mostly targets configuration +management tasks rather than fault or performance monitoring. +Additionally, NETCONF is significantly more resource intensive than +SNMP is. + +It is obviously possible to for everybody to come up with its own +ad-hoc management system. That can be done very easily on top of +HTTPS/JSON, for example. However that would only work with your +application. Also, SSL engine might be heavier on resources. + +Current and future uses +----------------------- + +As for current SNMP deployment, its virtually impossible to estimate +how many SNMP-enabled devices run on the modern Internet. One can +possibly argue that SNMP monitors the all the Internet nowdays. + +You may found SNMP useful for your home network monitoring or +management needs. For instance you could easily setup an open source +network monitoring application to watch, collect and graph bandwidth +utilization at your Wi-Fi router for you home network (that helps +spotting bottlenecks). + +A significant innovation might be coming in the following years. And that +is Internet of Things. All those small and low-power gadgets need to +be monitored and managed. And that may bring new life to the SNMP +technology. Almost three decades ago SNMP was designed for heavily +resource-constrained computers of that time. Later on the computers +grew in power and resources. But now we are back to building a massive +amount of low-power computers for "things" and original SNMP lightweightness +can serve us again! diff --git a/docs/source/docs/tutorial.rst b/docs/source/docs/tutorial.rst new file mode 100644 index 00000000..f6548818 --- /dev/null +++ b/docs/source/docs/tutorial.rst @@ -0,0 +1,12 @@ + +Documentation +============= + +.. toctree:: + :maxdepth: 2 + + /docs/snmp-history + /docs/snmp-design + /docs/pysnmp-architecture + /docs/pysnmp-hlapi-tutorial + diff --git a/docs/source/examples/contents.rst b/docs/source/examples/contents.rst index 87a5696b..63c7a6f8 100644 --- a/docs/source/examples/contents.rst +++ b/docs/source/examples/contents.rst @@ -165,4 +165,4 @@ specific flags are: * app For more details on PySNMP programming model and interfaces, please -refer to :doc:`library documentation</docs/contents>`. +refer to :doc:`library documentation</docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncio/agent/ntforg/advanced-topics.rst b/docs/source/examples/hlapi/asyncio/agent/ntforg/advanced-topics.rst index e19cb070..e1a14dea 100644 --- a/docs/source/examples/hlapi/asyncio/agent/ntforg/advanced-topics.rst +++ b/docs/source/examples/hlapi/asyncio/agent/ntforg/advanced-topics.rst @@ -14,4 +14,4 @@ Advanced Notification Originator :download:`Download</../../examples/hlapi/asyncio/agent/ntforg/multiple-notifications-at-once.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncio/agent/ntforg/common-notifications.rst b/docs/source/examples/hlapi/asyncio/agent/ntforg/common-notifications.rst index 3a62c80f..1dbf13c1 100644 --- a/docs/source/examples/hlapi/asyncio/agent/ntforg/common-notifications.rst +++ b/docs/source/examples/hlapi/asyncio/agent/ntforg/common-notifications.rst @@ -14,4 +14,4 @@ Common notifications :download:`Download</../../examples/hlapi/asyncio/agent/ntforg/default-v1-trap.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncio/manager/cmdgen/advanced-topics.rst b/docs/source/examples/hlapi/asyncio/manager/cmdgen/advanced-topics.rst index 4549661e..79824d3c 100644 --- a/docs/source/examples/hlapi/asyncio/manager/cmdgen/advanced-topics.rst +++ b/docs/source/examples/hlapi/asyncio/manager/cmdgen/advanced-topics.rst @@ -26,4 +26,4 @@ Advanced Command Generator :download:`Download</../../examples/hlapi/asyncio/manager/cmdgen/multiple-sequential-queries.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncio/manager/cmdgen/snmp-versions.rst b/docs/source/examples/hlapi/asyncio/manager/cmdgen/snmp-versions.rst index 0efcacec..20d34606 100644 --- a/docs/source/examples/hlapi/asyncio/manager/cmdgen/snmp-versions.rst +++ b/docs/source/examples/hlapi/asyncio/manager/cmdgen/snmp-versions.rst @@ -26,4 +26,4 @@ Various SNMP versions :download:`Download</../../examples/hlapi/asyncio/manager/cmdgen/getbulk-to-eom.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncio/manager/cmdgen/walking-operations.rst b/docs/source/examples/hlapi/asyncio/manager/cmdgen/walking-operations.rst index aabb71a7..3a588cad 100644 --- a/docs/source/examples/hlapi/asyncio/manager/cmdgen/walking-operations.rst +++ b/docs/source/examples/hlapi/asyncio/manager/cmdgen/walking-operations.rst @@ -14,4 +14,4 @@ Walking operations :download:`Download</../../examples/hlapi/asyncio/manager/cmdgen/getbulk-to-eom.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/agent/ntforg/advanced-topics.rst b/docs/source/examples/hlapi/asyncore/agent/ntforg/advanced-topics.rst index ac77b64c..e87cd833 100644 --- a/docs/source/examples/hlapi/asyncore/agent/ntforg/advanced-topics.rst +++ b/docs/source/examples/hlapi/asyncore/agent/ntforg/advanced-topics.rst @@ -37,4 +37,4 @@ Advanced Notification Originator :download:`Download</../../examples/hlapi/asyncore/agent/ntforg/running-multiple-snmp-engines-at-once.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/agent/ntforg/common-notifications.rst b/docs/source/examples/hlapi/asyncore/agent/ntforg/common-notifications.rst index 5393abbd..3f615bd3 100644 --- a/docs/source/examples/hlapi/asyncore/agent/ntforg/common-notifications.rst +++ b/docs/source/examples/hlapi/asyncore/agent/ntforg/common-notifications.rst @@ -14,4 +14,4 @@ Common notifications :download:`Download</../../examples/hlapi/asyncore/agent/ntforg/default-v1-trap.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/manager/cmdgen/advanced-topics.rst b/docs/source/examples/hlapi/asyncore/manager/cmdgen/advanced-topics.rst index e5fa2814..7ff9dfd2 100644 --- a/docs/source/examples/hlapi/asyncore/manager/cmdgen/advanced-topics.rst +++ b/docs/source/examples/hlapi/asyncore/manager/cmdgen/advanced-topics.rst @@ -37,4 +37,4 @@ Advanced Command Generator :download:`Download</../../examples/hlapi/asyncore/manager/cmdgen/multiple-concurrent-queries.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/manager/cmdgen/snmp-versions.rst b/docs/source/examples/hlapi/asyncore/manager/cmdgen/snmp-versions.rst index 5dac83cd..b5c3bdea 100644 --- a/docs/source/examples/hlapi/asyncore/manager/cmdgen/snmp-versions.rst +++ b/docs/source/examples/hlapi/asyncore/manager/cmdgen/snmp-versions.rst @@ -26,4 +26,4 @@ Various SNMP versions :download:`Download</../../examples/hlapi/asyncore/manager/cmdgen/pull-whole-mib.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/manager/cmdgen/walking-operations.rst b/docs/source/examples/hlapi/asyncore/manager/cmdgen/walking-operations.rst index f8fd26ab..3cc19a07 100644 --- a/docs/source/examples/hlapi/asyncore/manager/cmdgen/walking-operations.rst +++ b/docs/source/examples/hlapi/asyncore/manager/cmdgen/walking-operations.rst @@ -15,4 +15,4 @@ Walking operations :download:`Download</../../examples/hlapi/asyncore/manager/cmdgen/pull-whole-mib.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/advanced-topics.rst b/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/advanced-topics.rst index bcc6cf4f..2163690d 100644 --- a/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/advanced-topics.rst +++ b/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/advanced-topics.rst @@ -25,4 +25,4 @@ Advanced Notification Originator :download:`Download</../../examples/hlapi/asyncore/sync/agent/ntforg/custom-contextengineid.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/common-notifications.rst b/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/common-notifications.rst index 3fb4bb95..d32b5bfa 100644 --- a/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/common-notifications.rst +++ b/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/common-notifications.rst @@ -58,4 +58,4 @@ Common notifications :download:`Download</../../examples/hlapi/asyncore/sync/agent/ntforg/v3-trap.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/evaluating-notification-type.rst b/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/evaluating-notification-type.rst index a89c9db1..a71204e0 100644 --- a/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/evaluating-notification-type.rst +++ b/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/evaluating-notification-type.rst @@ -26,4 +26,4 @@ Evaluating NOTIFICATION-TYPE :download:`Download</../../examples/hlapi/asyncore/sync/agent/ntforg/send-notification-with-additional-varbinds.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/snmp-v1-trap-variants.rst b/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/snmp-v1-trap-variants.rst index 39245ce4..68a01e9c 100644 --- a/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/snmp-v1-trap-variants.rst +++ b/docs/source/examples/hlapi/asyncore/sync/agent/ntforg/snmp-v1-trap-variants.rst @@ -26,4 +26,4 @@ SNMPv1 TRAP variants :download:`Download</../../examples/hlapi/asyncore/sync/agent/ntforg/default-v1-trap.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/advanced-topics.rst b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/advanced-topics.rst index d730a7a6..34971dd4 100644 --- a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/advanced-topics.rst +++ b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/advanced-topics.rst @@ -81,4 +81,4 @@ Advanced Command Generator :download:`Download</../../examples/hlapi/asyncore/sync/manager/cmdgen/query-agents-from-multuple-threads.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/mib-tweaks.rst b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/mib-tweaks.rst index 48704e6b..d1ea7ff8 100644 --- a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/mib-tweaks.rst +++ b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/mib-tweaks.rst @@ -45,4 +45,4 @@ MIB tweaks :download:`Download</../../examples/hlapi/asyncore/sync/manager/cmdgen/custom-pysnmp-mibs-search-path.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/modifying-variables.rst b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/modifying-variables.rst index 6c20907c..95ee0451 100644 --- a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/modifying-variables.rst +++ b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/modifying-variables.rst @@ -27,4 +27,4 @@ Modifying variables :download:`Download</../../examples/hlapi/asyncore/sync/manager/cmdgen/set-multiple-scalar-values.py>` script. -See also: :doc:`library-reference </docs/contents>`. +See also: :doc:`library-reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/snmp-versions.rst b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/snmp-versions.rst index 2a7c2119..d1fee8dc 100644 --- a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/snmp-versions.rst +++ b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/snmp-versions.rst @@ -69,4 +69,4 @@ SNMP versions :download:`Download</../../examples/hlapi/asyncore/sync/manager/cmdgen/usm-sha-aes128.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/table-operations.rst b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/table-operations.rst index 1cd2ce26..4f14e06e 100644 --- a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/table-operations.rst +++ b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/table-operations.rst @@ -47,4 +47,4 @@ Table operations :download:`Download</../../examples/hlapi/asyncore/sync/manager/cmdgen/pull-whole-snmp-table.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/transport-tweaks.rst b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/transport-tweaks.rst index 680d91f5..e3309f6b 100644 --- a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/transport-tweaks.rst +++ b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/transport-tweaks.rst @@ -26,4 +26,4 @@ Transport tweaks :download:`Download</../../examples/hlapi/asyncore/sync/manager/cmdgen/fetch-variables-over-ipv6.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/walking-operations.rst b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/walking-operations.rst index 99f89f89..fa7ed380 100644 --- a/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/walking-operations.rst +++ b/docs/source/examples/hlapi/asyncore/sync/manager/cmdgen/walking-operations.rst @@ -15,4 +15,4 @@ Walking operations :download:`Download</../../examples/hlapi/asyncore/sync/manager/cmdgen/pull-whole-mib.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/trollius/agent/ntforg/common-notifications.rst b/docs/source/examples/hlapi/trollius/agent/ntforg/common-notifications.rst index 36406789..c0b78924 100644 --- a/docs/source/examples/hlapi/trollius/agent/ntforg/common-notifications.rst +++ b/docs/source/examples/hlapi/trollius/agent/ntforg/common-notifications.rst @@ -14,4 +14,4 @@ Common notifications :download:`Download</../../examples/hlapi/trollius/agent/ntforg/default-v1-trap.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/trollius/manager/cmdgen/snmp-versions.rst b/docs/source/examples/hlapi/trollius/manager/cmdgen/snmp-versions.rst index 021f1ead..769bd7a0 100644 --- a/docs/source/examples/hlapi/trollius/manager/cmdgen/snmp-versions.rst +++ b/docs/source/examples/hlapi/trollius/manager/cmdgen/snmp-versions.rst @@ -26,4 +26,4 @@ Various SNMP versions :download:`Download</../../examples/hlapi/trollius/manager/cmdgen/getbulk-to-eom.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/trollius/manager/cmdgen/walking-operations.rst b/docs/source/examples/hlapi/trollius/manager/cmdgen/walking-operations.rst index d9b022ee..dcc7672a 100644 --- a/docs/source/examples/hlapi/trollius/manager/cmdgen/walking-operations.rst +++ b/docs/source/examples/hlapi/trollius/manager/cmdgen/walking-operations.rst @@ -14,4 +14,4 @@ Walking operations :download:`Download</../../examples/hlapi/trollius/manager/cmdgen/getbulk-to-eom.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/twisted/agent/ntforg/advanced-topics.rst b/docs/source/examples/hlapi/twisted/agent/ntforg/advanced-topics.rst index b1c0aa2a..8be4effa 100644 --- a/docs/source/examples/hlapi/twisted/agent/ntforg/advanced-topics.rst +++ b/docs/source/examples/hlapi/twisted/agent/ntforg/advanced-topics.rst @@ -14,4 +14,4 @@ Advanced Notification Originator :download:`Download</../../examples/hlapi/twisted/agent/ntforg/multiple-notifications-at-once.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/twisted/agent/ntforg/common-notifications.rst b/docs/source/examples/hlapi/twisted/agent/ntforg/common-notifications.rst index 40e3f91d..efbc2d37 100644 --- a/docs/source/examples/hlapi/twisted/agent/ntforg/common-notifications.rst +++ b/docs/source/examples/hlapi/twisted/agent/ntforg/common-notifications.rst @@ -14,4 +14,4 @@ Common notifications :download:`Download</../../examples/hlapi/twisted/agent/ntforg/default-v1-trap.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/twisted/manager/cmdgen/advanced-topics.rst b/docs/source/examples/hlapi/twisted/manager/cmdgen/advanced-topics.rst index 0b01ee50..135ab533 100644 --- a/docs/source/examples/hlapi/twisted/manager/cmdgen/advanced-topics.rst +++ b/docs/source/examples/hlapi/twisted/manager/cmdgen/advanced-topics.rst @@ -26,4 +26,4 @@ Advanced Command Generator :download:`Download</../../examples/hlapi/twisted/manager/cmdgen/pull-mibs-from-multiple-agents-at-once.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/twisted/manager/cmdgen/snmp-versions.rst b/docs/source/examples/hlapi/twisted/manager/cmdgen/snmp-versions.rst index 84c5130b..b2d94b09 100644 --- a/docs/source/examples/hlapi/twisted/manager/cmdgen/snmp-versions.rst +++ b/docs/source/examples/hlapi/twisted/manager/cmdgen/snmp-versions.rst @@ -26,4 +26,4 @@ Various SNMP versions :download:`Download</../../examples/hlapi/twisted/manager/cmdgen/getbulk-to-eom.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/twisted/manager/cmdgen/transport-tweaks.rst b/docs/source/examples/hlapi/twisted/manager/cmdgen/transport-tweaks.rst index 3e3312c1..bddd96c9 100644 --- a/docs/source/examples/hlapi/twisted/manager/cmdgen/transport-tweaks.rst +++ b/docs/source/examples/hlapi/twisted/manager/cmdgen/transport-tweaks.rst @@ -14,4 +14,4 @@ Transport tweaks :download:`Download</../../examples/hlapi/twisted/manager/cmdgen/custom-timeout-and-retries.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/hlapi/twisted/manager/cmdgen/walking-operations.rst b/docs/source/examples/hlapi/twisted/manager/cmdgen/walking-operations.rst index c1d9c6fa..71058bb9 100644 --- a/docs/source/examples/hlapi/twisted/manager/cmdgen/walking-operations.rst +++ b/docs/source/examples/hlapi/twisted/manager/cmdgen/walking-operations.rst @@ -24,4 +24,4 @@ Walking operations :download:`Download</../../examples/hlapi/twisted/manager/cmdgen/pull-whole-mib.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v1arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.rst b/docs/source/examples/v1arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.rst index 87314bd1..e3f50c7a 100644 --- a/docs/source/examples/v1arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.rst +++ b/docs/source/examples/v1arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.rst @@ -15,4 +15,4 @@ Agent-side MIB implementations :download:`Download</../../examples/v1arch/asyncore/agent/cmdrsp/implementing-scalar-mib-objects.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v1arch/asyncore/agent/ntforg/transport-tweaks.rst b/docs/source/examples/v1arch/asyncore/agent/ntforg/transport-tweaks.rst index dd6ecf23..9417a81e 100644 --- a/docs/source/examples/v1arch/asyncore/agent/ntforg/transport-tweaks.rst +++ b/docs/source/examples/v1arch/asyncore/agent/ntforg/transport-tweaks.rst @@ -26,4 +26,4 @@ Transport tweaks :download:`Download</../../examples/v1arch/asyncore/agent/ntforg/send-inform-over-ipv4-and-ipv6.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v1arch/asyncore/manager/cmdgen/fetching-variables.rst b/docs/source/examples/v1arch/asyncore/manager/cmdgen/fetching-variables.rst index 2bcee2c6..2e6eb3b3 100644 --- a/docs/source/examples/v1arch/asyncore/manager/cmdgen/fetching-variables.rst +++ b/docs/source/examples/v1arch/asyncore/manager/cmdgen/fetching-variables.rst @@ -15,4 +15,4 @@ Fetching variables :download:`Download</../../examples/v1arch/asyncore/manager/cmdgen/fetch-scalar-value.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v1arch/asyncore/manager/cmdgen/modifying-variables.rst b/docs/source/examples/v1arch/asyncore/manager/cmdgen/modifying-variables.rst index c2b84f18..b16a29bd 100644 --- a/docs/source/examples/v1arch/asyncore/manager/cmdgen/modifying-variables.rst +++ b/docs/source/examples/v1arch/asyncore/manager/cmdgen/modifying-variables.rst @@ -15,4 +15,4 @@ Modifying variables :download:`Download</../../examples/v1arch/asyncore/manager/cmdgen/v2c-set.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v1arch/asyncore/manager/cmdgen/transport-tweaks.rst b/docs/source/examples/v1arch/asyncore/manager/cmdgen/transport-tweaks.rst index cac5de9e..c48b9768 100644 --- a/docs/source/examples/v1arch/asyncore/manager/cmdgen/transport-tweaks.rst +++ b/docs/source/examples/v1arch/asyncore/manager/cmdgen/transport-tweaks.rst @@ -26,4 +26,4 @@ Transport tweaks :download:`Download</../../examples/v1arch/asyncore/manager/cmdgen/broadcast-agent-discovery.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v1arch/asyncore/manager/cmdgen/walking-operations.rst b/docs/source/examples/v1arch/asyncore/manager/cmdgen/walking-operations.rst index 99d57faf..1d38ac51 100644 --- a/docs/source/examples/v1arch/asyncore/manager/cmdgen/walking-operations.rst +++ b/docs/source/examples/v1arch/asyncore/manager/cmdgen/walking-operations.rst @@ -26,4 +26,4 @@ MIB walking operations :download:`Download</../../examples/v1arch/asyncore/manager/cmdgen/getbulk-pull-whole-mib.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v1arch/asyncore/manager/ntfrcv/transport-tweaks.rst b/docs/source/examples/v1arch/asyncore/manager/ntfrcv/transport-tweaks.rst index 290f5227..665049dc 100644 --- a/docs/source/examples/v1arch/asyncore/manager/ntfrcv/transport-tweaks.rst +++ b/docs/source/examples/v1arch/asyncore/manager/ntfrcv/transport-tweaks.rst @@ -15,4 +15,4 @@ Transport tweaks :download:`Download</../../examples/v1arch/asyncore/manager/ntfrcv/listen-on-ipv4-and-ipv6-interfaces.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncio/agent/cmdrsp/snmp-versions.rst b/docs/source/examples/v3arch/asyncio/agent/cmdrsp/snmp-versions.rst index b84cb7e0..ccb655de 100644 --- a/docs/source/examples/v3arch/asyncio/agent/cmdrsp/snmp-versions.rst +++ b/docs/source/examples/v3arch/asyncio/agent/cmdrsp/snmp-versions.rst @@ -14,4 +14,4 @@ Various SNMP versions :download:`Download</../../examples/v3arch/asyncio/agent/cmdrsp/multiple-usm-users.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncio/manager/ntfrcv/transport-tweaks.rst b/docs/source/examples/v3arch/asyncio/manager/ntfrcv/transport-tweaks.rst index 98f152b6..72250d8d 100644 --- a/docs/source/examples/v3arch/asyncio/manager/ntfrcv/transport-tweaks.rst +++ b/docs/source/examples/v3arch/asyncio/manager/ntfrcv/transport-tweaks.rst @@ -15,4 +15,4 @@ Transport tweaks :download:`Download</../../examples/v3arch/asyncio/manager/ntfrcv/multiple-interfaces.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/cmdrsp/advanced-topics.rst b/docs/source/examples/v3arch/asyncore/agent/cmdrsp/advanced-topics.rst index 5803a503..3b1d95db 100644 --- a/docs/source/examples/v3arch/asyncore/agent/cmdrsp/advanced-topics.rst +++ b/docs/source/examples/v3arch/asyncore/agent/cmdrsp/advanced-topics.rst @@ -37,4 +37,4 @@ Advanced topics :download:`Download</../../examples/v3arch/asyncore/agent/cmdrsp/multiple-snmp-engines.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.rst b/docs/source/examples/v3arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.rst index 1d955d91..67911331 100644 --- a/docs/source/examples/v3arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.rst +++ b/docs/source/examples/v3arch/asyncore/agent/cmdrsp/agent-side-mib-implementations.rst @@ -48,4 +48,4 @@ Agent-side MIB implementations :download:`Download</../../examples/v3arch/asyncore/agent/cmdrsp/custom-mib-controller.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/cmdrsp/snmp-versions.rst b/docs/source/examples/v3arch/asyncore/agent/cmdrsp/snmp-versions.rst index 9571f777..003a6bf4 100644 --- a/docs/source/examples/v3arch/asyncore/agent/cmdrsp/snmp-versions.rst +++ b/docs/source/examples/v3arch/asyncore/agent/cmdrsp/snmp-versions.rst @@ -26,4 +26,4 @@ Various SNMP versions :download:`Download</../../examples/v3arch/asyncore/agent/cmdrsp/multiple-snmp-communities.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/cmdrsp/transport-tweaks.rst b/docs/source/examples/v3arch/asyncore/agent/cmdrsp/transport-tweaks.rst index 23a3b60f..fa90f01d 100644 --- a/docs/source/examples/v3arch/asyncore/agent/cmdrsp/transport-tweaks.rst +++ b/docs/source/examples/v3arch/asyncore/agent/cmdrsp/transport-tweaks.rst @@ -37,4 +37,4 @@ Transport tweaks :download:`Download</../../examples/v3arch/asyncore/agent/cmdrsp/listening-on-virtual-network-interface.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/ntforg/advanced-topics.rst b/docs/source/examples/v3arch/asyncore/agent/ntforg/advanced-topics.rst index 4724b3ad..219e1b17 100644 --- a/docs/source/examples/v3arch/asyncore/agent/ntforg/advanced-topics.rst +++ b/docs/source/examples/v3arch/asyncore/agent/ntforg/advanced-topics.rst @@ -15,4 +15,4 @@ Advanced topic :download:`Download</../../examples/v3arch/asyncore/agent/ntforg/send-custom-pdu.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/ntforg/common-notifications.rst b/docs/source/examples/v3arch/asyncore/agent/ntforg/common-notifications.rst index fc31852e..4b4bba32 100644 --- a/docs/source/examples/v3arch/asyncore/agent/ntforg/common-notifications.rst +++ b/docs/source/examples/v3arch/asyncore/agent/ntforg/common-notifications.rst @@ -34,4 +34,4 @@ Common notifications :download:`Download</../../examples/v3arch/asyncore/agent/ntforg/v2c-inform.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/ntforg/evaluating-notification-type.rst b/docs/source/examples/v3arch/asyncore/agent/ntforg/evaluating-notification-type.rst index 72a3469f..b7308775 100644 --- a/docs/source/examples/v3arch/asyncore/agent/ntforg/evaluating-notification-type.rst +++ b/docs/source/examples/v3arch/asyncore/agent/ntforg/evaluating-notification-type.rst @@ -24,4 +24,4 @@ class. :download:`Download</../../examples/v3arch/asyncore/agent/ntforg/v2c-trap-via-notification-type.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/ntforg/multiple-managers-operations.rst b/docs/source/examples/v3arch/asyncore/agent/ntforg/multiple-managers-operations.rst index 4fe6b976..04388d52 100644 --- a/docs/source/examples/v3arch/asyncore/agent/ntforg/multiple-managers-operations.rst +++ b/docs/source/examples/v3arch/asyncore/agent/ntforg/multiple-managers-operations.rst @@ -41,4 +41,4 @@ The following few examples use this facility. :download:`Download</../../examples/v3arch/asyncore/agent/ntforg/multiple-different-notifications-at-once.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/ntforg/snmp-versions.rst b/docs/source/examples/v3arch/asyncore/agent/ntforg/snmp-versions.rst index bcc51e70..cc6bc01a 100644 --- a/docs/source/examples/v3arch/asyncore/agent/ntforg/snmp-versions.rst +++ b/docs/source/examples/v3arch/asyncore/agent/ntforg/snmp-versions.rst @@ -48,4 +48,4 @@ Various SNMP versions :download:`Download</../../examples/v3arch/asyncore/agent/ntforg/usm-md5-none.py>` script. -See also: :doc:`library-reference </docs/contents>`. +See also: :doc:`library-reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/agent/ntforg/transport-tweaks.rst b/docs/source/examples/v3arch/asyncore/agent/ntforg/transport-tweaks.rst index a387896c..6ad5e72a 100644 --- a/docs/source/examples/v3arch/asyncore/agent/ntforg/transport-tweaks.rst +++ b/docs/source/examples/v3arch/asyncore/agent/ntforg/transport-tweaks.rst @@ -26,4 +26,4 @@ Transport tweaks :download:`Download</../../examples/v3arch/asyncore/agent/ntforg/send-packet-from-specific-address.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/cmdgen/advanced-topics.rst b/docs/source/examples/v3arch/asyncore/manager/cmdgen/advanced-topics.rst index 3b24a2b5..6ad87e0a 100644 --- a/docs/source/examples/v3arch/asyncore/manager/cmdgen/advanced-topics.rst +++ b/docs/source/examples/v3arch/asyncore/manager/cmdgen/advanced-topics.rst @@ -26,4 +26,4 @@ Advanced topics :download:`Download</../../examples/v3arch/asyncore/manager/cmdgen/observe-request-processing.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/cmdgen/mib-tweaks.rst b/docs/source/examples/v3arch/asyncore/manager/cmdgen/mib-tweaks.rst index 68d4b3e0..4945365f 100644 --- a/docs/source/examples/v3arch/asyncore/manager/cmdgen/mib-tweaks.rst +++ b/docs/source/examples/v3arch/asyncore/manager/cmdgen/mib-tweaks.rst @@ -15,4 +15,4 @@ MIB tweaks :download:`Download</../../examples/v3arch/asyncore/manager/cmdgen/getnext-multiple-oids-and-resolve-with-mib.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/cmdgen/modifying-variables.rst b/docs/source/examples/v3arch/asyncore/manager/cmdgen/modifying-variables.rst index b28d08f9..943a1615 100644 --- a/docs/source/examples/v3arch/asyncore/manager/cmdgen/modifying-variables.rst +++ b/docs/source/examples/v3arch/asyncore/manager/cmdgen/modifying-variables.rst @@ -16,4 +16,4 @@ Modifying values :download:`Download</../../examples/v3arch/asyncore/manager/cmdgen/set-multiple-scalar-values.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/cmdgen/snmp-versions.rst b/docs/source/examples/v3arch/asyncore/manager/cmdgen/snmp-versions.rst index 357cbfb6..3546786b 100644 --- a/docs/source/examples/v3arch/asyncore/manager/cmdgen/snmp-versions.rst +++ b/docs/source/examples/v3arch/asyncore/manager/cmdgen/snmp-versions.rst @@ -48,4 +48,4 @@ Various SNMP versions :download:`Download</../../examples/v3arch/asyncore/manager/cmdgen/usm-sha-none.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/cmdgen/table-operations.rst b/docs/source/examples/v3arch/asyncore/manager/cmdgen/table-operations.rst index 84b64e6c..01bf8eb4 100644 --- a/docs/source/examples/v3arch/asyncore/manager/cmdgen/table-operations.rst +++ b/docs/source/examples/v3arch/asyncore/manager/cmdgen/table-operations.rst @@ -25,4 +25,4 @@ Table operations :download:`Download</../../examples/v3arch/asyncore/manager/cmdgen/pull-subtree.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/cmdgen/transport-tweaks.rst b/docs/source/examples/v3arch/asyncore/manager/cmdgen/transport-tweaks.rst index 39f12afe..475bae99 100644 --- a/docs/source/examples/v3arch/asyncore/manager/cmdgen/transport-tweaks.rst +++ b/docs/source/examples/v3arch/asyncore/manager/cmdgen/transport-tweaks.rst @@ -48,4 +48,4 @@ Transport tweaks :download:`Download</../../examples/v3arch/asyncore/manager/cmdgen/fetch-variables-over-ipv6.py>` script. -See also: :doc:`library-reference </docs/contents>`. +See also: :doc:`library-reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/cmdgen/walking-operations.rst b/docs/source/examples/v3arch/asyncore/manager/cmdgen/walking-operations.rst index f4454c6e..f3870939 100644 --- a/docs/source/examples/v3arch/asyncore/manager/cmdgen/walking-operations.rst +++ b/docs/source/examples/v3arch/asyncore/manager/cmdgen/walking-operations.rst @@ -26,4 +26,4 @@ Walking operations :download:`Download</../../examples/v3arch/asyncore/manager/cmdgen/getnext-multiple-oids-to-eom.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/ntfrcv/advanced-topics.rst b/docs/source/examples/v3arch/asyncore/manager/ntfrcv/advanced-topics.rst index 08f41696..34e279bc 100644 --- a/docs/source/examples/v3arch/asyncore/manager/ntfrcv/advanced-topics.rst +++ b/docs/source/examples/v3arch/asyncore/manager/ntfrcv/advanced-topics.rst @@ -26,4 +26,4 @@ Advanced topics :download:`Download</../../examples/v3arch/asyncore/manager/ntfrcv/regexp-community-name.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/ntfrcv/snmp-versions.rst b/docs/source/examples/v3arch/asyncore/manager/ntfrcv/snmp-versions.rst index d3cb1236..efbb1360 100644 --- a/docs/source/examples/v3arch/asyncore/manager/ntfrcv/snmp-versions.rst +++ b/docs/source/examples/v3arch/asyncore/manager/ntfrcv/snmp-versions.rst @@ -26,4 +26,4 @@ Various SNMP versions :download:`Download</../../examples/v3arch/asyncore/manager/ntfrcv/multiple-usm-users.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/manager/ntfrcv/transport-tweaks.rst b/docs/source/examples/v3arch/asyncore/manager/ntfrcv/transport-tweaks.rst index 4885243c..37f55d8e 100644 --- a/docs/source/examples/v3arch/asyncore/manager/ntfrcv/transport-tweaks.rst +++ b/docs/source/examples/v3arch/asyncore/manager/ntfrcv/transport-tweaks.rst @@ -37,4 +37,4 @@ Transport tweaks :download:`Download</../../examples/v3arch/asyncore/manager/ntfrcv/determine-peer-network-address.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/proxy/command/protocol-conversion.rst b/docs/source/examples/v3arch/asyncore/proxy/command/protocol-conversion.rst index a39e233b..8a7945ed 100644 --- a/docs/source/examples/v3arch/asyncore/proxy/command/protocol-conversion.rst +++ b/docs/source/examples/v3arch/asyncore/proxy/command/protocol-conversion.rst @@ -37,4 +37,4 @@ Protocol conversion :download:`Download</../../examples/v3arch/asyncore/proxy/command/v3-to-v2c-conversion.py>` script. -See also: :doc:`library-reference </docs/contents>`. +See also: :doc:`library-reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/asyncore/proxy/command/transport-conversion.rst b/docs/source/examples/v3arch/asyncore/proxy/command/transport-conversion.rst index 7a5a7155..7bd23812 100644 --- a/docs/source/examples/v3arch/asyncore/proxy/command/transport-conversion.rst +++ b/docs/source/examples/v3arch/asyncore/proxy/command/transport-conversion.rst @@ -15,4 +15,4 @@ Transport conversion :download:`Download</../../examples/v3arch/asyncore/proxy/command/udp6-to-udp4-conversion.py>` script. -See also: :doc:`library-reference </docs/contents>`. +See also: :doc:`library-reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/twisted/agent/cmdrsp/agent-side-mib-implementations.rst b/docs/source/examples/v3arch/twisted/agent/cmdrsp/agent-side-mib-implementations.rst index 1597b424..16b42967 100644 --- a/docs/source/examples/v3arch/twisted/agent/cmdrsp/agent-side-mib-implementations.rst +++ b/docs/source/examples/v3arch/twisted/agent/cmdrsp/agent-side-mib-implementations.rst @@ -15,4 +15,4 @@ Agent-side MIB implementations :download:`Download</../../examples/v3arch/twisted/agent/cmdrsp/implementing-scalar-mib-objects.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/twisted/agent/cmdrsp/snmp-versions.rst b/docs/source/examples/v3arch/twisted/agent/cmdrsp/snmp-versions.rst index 5373ffd2..a644fc3b 100644 --- a/docs/source/examples/v3arch/twisted/agent/cmdrsp/snmp-versions.rst +++ b/docs/source/examples/v3arch/twisted/agent/cmdrsp/snmp-versions.rst @@ -26,4 +26,4 @@ Various SNMP versions :download:`Download</../../examples/v3arch/twisted/agent/cmdrsp/multiple-usm-users.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/twisted/agent/cmdrsp/transport-tweaks.rst b/docs/source/examples/v3arch/twisted/agent/cmdrsp/transport-tweaks.rst index c211aeba..33ae70f7 100644 --- a/docs/source/examples/v3arch/twisted/agent/cmdrsp/transport-tweaks.rst +++ b/docs/source/examples/v3arch/twisted/agent/cmdrsp/transport-tweaks.rst @@ -15,4 +15,4 @@ Transport tweaks :download:`Download</../../examples/v3arch/twisted/agent/cmdrsp/multiple-interfaces.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/twisted/manager/ntfrcv/snmp-versions.rst b/docs/source/examples/v3arch/twisted/manager/ntfrcv/snmp-versions.rst index 324b5796..69540566 100644 --- a/docs/source/examples/v3arch/twisted/manager/ntfrcv/snmp-versions.rst +++ b/docs/source/examples/v3arch/twisted/manager/ntfrcv/snmp-versions.rst @@ -15,4 +15,4 @@ Various SNMP versions :download:`Download</../../examples/v3arch/twisted/manager/ntfrcv/multiple-usm-users.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/examples/v3arch/twisted/manager/ntfrcv/transport-tweaks.rst b/docs/source/examples/v3arch/twisted/manager/ntfrcv/transport-tweaks.rst index 8560e99c..dae51eda 100644 --- a/docs/source/examples/v3arch/twisted/manager/ntfrcv/transport-tweaks.rst +++ b/docs/source/examples/v3arch/twisted/manager/ntfrcv/transport-tweaks.rst @@ -14,4 +14,4 @@ Transport tweaks :download:`Download</../../examples/v3arch/twisted/manager/ntfrcv/multiple-interfaces.py>` script. -See also: :doc:`library reference </docs/contents>`. +See also: :doc:`library reference </docs/api-reference>`. diff --git a/docs/source/snmp-overview.rst b/docs/source/snmp-overview.rst deleted file mode 100644 index 985cd799..00000000 --- a/docs/source/snmp-overview.rst +++ /dev/null @@ -1,313 +0,0 @@ - -.. toctree:: - :maxdepth: 2 - -SNMP overview -============= - -As networks become more complex, in terms of device population, topology -and distances, it has been getting more and more important for network -administrators to have some easy and convenient way for controlling all -pieces of the whole network. - -Basic features of a network management system include device information -retrieval and device remote control. Former often takes shape of gathering -device operation statistics, while latter can be seen in device remote -configuration facilities. - -For any information to be exchanged between entities, some agreement on -information format and transmission procedure needs to be settled -beforehand. This is what is conventionally called a Protocol. - -Large networks nowdays, may host thousands of different devices. To benefit -network manager's interoperability and simplicity, any device on the -network should carry out most common and important management operations in -a well known, unified way. Therefore, an important feature of a network -management system would be a Convention on management information naming -and presentation. - -Sometimes, management operations should be performed on large number of -managed devices. For a network manager to complete such a management round -in a reasonably short period of time, an important feature of a network -management software would be Performance. - -Some of network devices may run on severely limited resources what invokes -another property of a proper network management facility: Low resource -consumption. - -In practice, the latter requirement translates into low CPU cycles and -memory footprint for management software aboard device being managed. - -As networking becomes a more crucial part of our daily lives, security -issues have become more apparent. As a side note, even Internet -technologies, having military roots, did not pay much attention to security -initially. So, the last key feature of network management appears to be -Security. - -Data passed back and forth through the course of management operations -should be at least authentic and sometimes hidden from possible observers. - -All these problems were approached many times through about three decades -of networking history. Some solutions collapsed over time for one reason or -another, while others, such as Simple Network Management Protocol (SNMP), -evolve into an industry standard. - -SNMP management architecture ----------------------------- - -The SNMP management model includes three distinct entities -- Agent, -Manager and Proxy talking to each other over network. - -Agent entity is basically a software running somewhere in a networked -device and having the following distinguishing properties: - -* SNMP protocol support -* Access to managed device's internals - -The latter feature is a source of management information for Agent, as well -as a target for remote control operations. - -Modern SNMP standards suggest splitting Agent functionality on two parts. -Such Agents may run SNMP for local processes called Subagents, which -interface with managed devices internals. Communication between Master -Agent and its Subagents is performed using a simplified version of original -SNMP protocol, known as AgentX, which is designed to run only within a -single host. - -Manager entity is usually an application used by humans (or daemons) for -performing various network management tasks, such as device statistics -retrieval or remote control. - -Sometimes, Agents and Managers may run peer-to-peer within a single entity -that is called Proxy. Proxies can often be seen in application-level -firewalling or may serve as SNMP protocol translators between otherwise -SNMP version-incompatible Managers and Agents. - -For Manager to request Agent for an operation on a particular part of -managed device, some convention on device's components naming is needed. -Once some components are identified, Manager and Agent would have to agree -upon possible components' states and their semantics. - -SNMP approach to both problems is to represent each component of a device -as a named object, similar to named variables seen in programming -languages, and state of a component maps to a value associated with this -imaginary variable. These are called Managed Objects in SNMP. - -For representing a group of similar components of a device, such as network -interfaces, Managed Objects can be organized into a so-called conceptual -table. - -Manager talks to Agent by sending it messages of several types. Message -type implies certain action to be taken. For example, GET message instructs -Agent to report back values of Managed Objects whose names are indicated in -message. - -There's also a way for Agent to notify Manager of an event occurred to -Agent. This is done through so-called Trap messages. Trap message also -carries Managed Objects and possibly Values, but besides that it has an ID -of event in form of integer number or a Managed Object. - -For naming Managed Objects, SNMP uses the concept of Object Identifier. As -an example of Managed Object, -.iso.org.dod.internet.mgmt.mib-2.system.sysName.0 represents human-readable -name of a device where Agent is running. - -Managed Objects values are always instances of ASN.1 types (such as -Integer) or SNMP-specific subtypes (such as IpAddress). As in programming -languages, type has an effect of restricting possible set of states Managed -Object may ever enter. - -Whenever SNMP entities talk to each other, they refer to Managed Objects -whose semantics (and value type) must be known in advance by both parties. -SNMP Agent may be seen as a primary source of information on Managed -Objects, as they are implemented by Agent. In this model, Manager should -have a map of Managed Objects contained within each Agent to talk to. - -SNMP standard introduces a set of ASN.1 language constructs (such as ASN.1 -subtypes and MACROs) which is called Structure of Management Information -(SMI). Collections of related Managed Objects described in terms of SMI -comprise Management Information Base (MIB) modules. - -Commonly used Managed Objects form core MIBs that become part of SNMP -standard. The rest of MIBs are normally created by vendors who build SNMP -Agents into their products. - -More often then not, Manager implementations could parse MIB files and use -Managed Objects information for names resolution, value type determination, -pretty printing and so on. This feature is known as MIB parser support. - -The history of SNMP -------------------- - -First SNMP version dates back to 1988 when a set of IETF RFC's were first -published (`RFC1065 <http://www.ietf.org/rfc/rfc1065.txt>`_ , -`RFC1066 <http://www.ietf.org/rfc/rfc1066.txt>`_ , -`RFC1067 <http://www.ietf.org/rfc/rfc1067.txt>`_ ). -These documents describe protocol operations (in terms of message syntax -and semantics), SMI and a few core MIBs. The first version appears to -be lightweight and easy to implement. -Although, its poor security became notorious over years *(Security? -Not My Problem!)*, because cleartext password used for authentication (AKA -Community String) is extremely easy to eavesdrop and replay, even after -almost 20 years, slightly refined standard ( -`RFC1155 <http://www.ietf.org/rfc/rfc1155.txt>`_ , -`RFC1157 <http://www.ietf.org/rfc/rfc1157.txt>`_ , -`RFC1212 <http://www.ietf.org/rfc/rfc1212.txt>`_ ) -still seems to be the most frequent encounter in modern SNMP devices. - -In effort to fix security issues of SNMPv1 and to make protocol faster for -operations on large number of Managed Objects, SNMP Working Group at IETF -came up with SNMPv2. This new protocol offers bulk transfers of Managed -Objects information (by means of new, GETBULK message payload), improved -security and re-worked SMI. But its new party-based security system turned -out to be too complicated. In the end, security part of SNMPv2 has been -dropped in favor of community-based authentication system used in SNMPv1. -The result of this compromise is known as SNMPv2c (where "c" stands for -community) and is still widely supported without being a standard ( -`RFC1902 <http://www.ietf.org/rfc/rfc1902.txt>`_, -`RFC1903 <http://www.ietf.org/rfc/rfc1903.txt>`_, -`RFC1904 <http://www.ietf.org/rfc/rfc1904.txt>`_, -`RFC1905 <http://www.ietf.org/rfc/rfc1905.txt>`_, -`RFC1906 <http://www.ietf.org/rfc/rfc1906.txt>`_, -`RFC1907 <http://www.ietf.org/rfc/rfc1907.txt>`_, -`RFC1908 <http://www.ietf.org/rfc/rfc1908.txt>`_ ). - -The other compromise targeted at offering greater security than SNMPv1, -without falling into complexities of SNMPv2, has been attempted by -replacing SNMPv2 party-based security system with newly developed -user-based security model. This variant of protocol is known as SNMPv2u. -Although neither widely implemented nor standardized, User Based Security -Model (USM) of SNMPv2u got eventually adopted as one of possibly many -SNMPv3 security models. - -As of this writing, SNMPv3 is current standard for SNMP. Although it's -based heavily on previous SNMP specifications, SNMPv3 offers many -innovations but also brings significant complexity. Additions to version 3 -are mostly about protocol operations. SMI part of standard is inherited -intact from SNMPv2. - -SNMPv3 system is designed as a framework that consists of a core, known as -Message and PDU Dispatcher, and several abstract subsystems: Message -Processing Subsystem (MP), responsible for SNMP message handling, Transport -Dispatcher, used for carrying over messages, and Security Subsystem, which -deals with message authentication and encryption issues. The framework -defines subsystems interfaces to let feature-specific modules to be plugged -into SNMPv3 core thus forming particular feature-set of SNMP system. -Typical use of this modularity feature could be seen in multiprotocol -systems -- legacy SNMP protocols are implemented as version-specific MP and -security modules. Native SNMPv3 functionality relies upon v3 message -processing and User-Based Security modules. - -Besides highly detailed SNMP system specification, SNMPv3 standard also -defines a typical set of SNMP applications and their behavior. These -applications are Manager, Agent and Proxy ( -`RFC3411 <http://www.ietf.org/rfc/rfc3411.txt>`_, -`RFC3412 <http://www.ietf.org/rfc/rfc3412.txt>`_, -`RFC3413 <http://www.ietf.org/rfc/rfc3413.txt>`_, -`RFC3414 <http://www.ietf.org/rfc/rfc3414.txt>`_, -`RFC3415 <http://www.ietf.org/rfc/rfc3415.txt>`_, -`RFC3416 <http://www.ietf.org/rfc/rfc3416.txt>`_, -`RFC3417 <http://www.ietf.org/rfc/rfc3417.txt>`_, -`RFC3418 <http://www.ietf.org/rfc/rfc3418.txt>`_ ). - -PySNMP architecture -------------------- - -PySNMP is a pure-Python SNMP engine implementation. This software deals -with the darkest corners of SNMP specifications all in Python programming -language. - -This paper is dedicated to PySNMP revisions 4.2.3 and up. Since PySNMP -API's evolve over time, older revisions may provide slightly different -interfaces than those described in this tutorial. Please refer to -release-specific documentation for a more precise information. - -From Programmer's point of view, the layout of PySNMP software reflects -SNMP protocol evolution. It has been written from ground up, from trivial -SNMPv1 up to fully featured SNMPv3. Therefore, several levels of API to -SNMP functionality are available: - -* The most ancient and low-level is SNMPv1/v2c protocol scope. Here - programmer is supposed to build/parse SNMP messages and their payload -- - Protocol Data Unit (PDU), handle protocol-level errors, transport issues - and so on. - - Although considered rather complex to deal with, this API probably gives - best performance, memory footprint and flexibility, unless MIB access - and/or SNMPv3 support is needed. - -* Parts of SNMPv3 standard is expressed in terms of some abstract API to SNMP - engine and its components. PySNMP implementation adopts this abstract API - to a great extent, so it's available at Programmer's disposal. As a side - effect, SNMP RFCs could be referenced for API semantics when programming - PySNMP at this level. - - This API is much more higher-level than previous; here Programmer would - have to manage two major issues: setting up Local Configuration Datastore - (LCD) of SNMP engine and build/parse PDUs. PySNMP system is shipped - multi-lingual, thus at this level all SNMPv1, SNMPv2c and SNMPv3 features - are available. - -* At last, the highest-level API to SNMP functionality is available through - the use of standard SNMPv3 applications. These applications cover the most - frequent needs. That's why this API is expected to be the first to start - with. - - The Applications API further simplifies Programmer's job by hiding LCD - management issues (contrary to SNMPv3 engine level). This API could be - exploited in a oneliner fashion, for quick and simple prototyping. - -As for its internal structure, PySNMP consists of a handful of large, -dedicated components. They normally take shape of classes which turn into -linked objects at runtime. So here are the main components: - -* SNMP Engine is an object holding references to all other components of the - SNMP system. Typical user application has a single instance of SNMP Engine - class possibly shared by many SNMP Applications of all kinds. As the other - linked-in components tend to buildup various configuration and housekeeping - information in runtime, SNMP Engine object appears to be expensive to - configure to a usable state. - -* Transport subsystem is used for sending SNMP messages to and accepting them - from network. The I/O subsystem consists of an abstract Dispatcher and one - or more abstract Transport classes. Concrete Dispatcher implementation is - I/O method-specific, consider BSD sockets for example. Concrete Transport - classes are transport domain-specific. SNMP frequently uses UDP Transport - but others are also possible. Transport Dispatcher interfaces are mostly - used by Message And PDU Dispatcher. However, when using the - SNMPv1/v2c-native API (the lowest-level one), these interfaces would be - invoked directly. - -* Message And PDU Dispatcher is a heart of SNMP system. Its main - responsibilities include dispatching PDUs from SNMP Applications through - various subsystems all the way down to Transport Dispatcher, and passing - SNMP messages coming from network up to SNMP Applications. It maintains - logical connection with Management Instrumentation Controller which carries - out operations on Managed Objects, here for the purpose of LCD access. - -* Message Processing Modules handle message-level protocol operations for - present and possibly future versions of SNMP protocol. Most importantly, - these include message parsing/building and possibly invoking security - services whenever required. All MP Modules share standard API used by - Message And PDU Dispatcher. - -* Message Security Modules perform message authentication and/or encryption. - As of this writing, User-Based (for v3) and Community (for v1/2c) modules - are implemented in PySNMP. All Security Modules share standard API used by - Message Processing subsystem. - -* Access Control subsystem uses LCD information to authorize remote access to - Managed Objects. This is used when serving Agent Applications or Trap - receiver in Manager Applications. - -* A collection of dedicated Managed Objects Instances are used by PySNMP for - its internal purposes. They are collectively called Local Configuration - Datastore (LCD). In PySNMP, all SNMP engine configuration and statistics is - kept in LCD. LCD Configurator is a wrapper aimed at simplifying LCD - operations. - -In most cases user is expected to only deal with the high-level -API to all these PySNMP components. However implementing SNMP Agents, -Proxies and some other fine features of Managers require using the Standard -Applications API. In those cases general understanding of SNMP operations -and SNMP Engine components would be helpful. |