docs: Add VPP inside the Cloud 26/17926/9
authorFrancesco Spinelli <francescospinelli94@live.it>
Thu, 28 Feb 2019 10:51:24 +0000 (11:51 +0100)
committerDamjan Marion <dmarion@me.com>
Thu, 25 Apr 2019 22:44:55 +0000 (22:44 +0000)
This commit updates the VPP docs, adding the  VPP deployment and configuration inside the cloud

Change-Id: I97322deb57f0dfb1aa46cca301adbc91ce4a19f6
Signed-off-by: Francesco Spinelli <francescospinelli94@live.it>
docs/_images/Connecting_VPC.svg [new file with mode: 0644]
docs/_images/vpc_scheme.svg [new file with mode: 0644]
docs/about.rst
docs/usecases/ConnectingVPC.rst [new file with mode: 0644]
docs/usecases/automatingthedeployment.rst [new file with mode: 0644]
docs/usecases/index.rst
docs/usecases/vppcloud.rst [new file with mode: 0644]
docs/usecases/vppinaws.rst [new file with mode: 0644]
docs/usecases/vppinazure.rst [new file with mode: 0644]

diff --git a/docs/_images/Connecting_VPC.svg b/docs/_images/Connecting_VPC.svg
new file mode 100644 (file)
index 0000000..4fa1bf5
--- /dev/null
@@ -0,0 +1,206 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" viewBox="2 91 1895 438" width="1895" height="438">
+  <defs>
+    <clipPath id="inner_stroke_clip_path">
+      <path d="M 97.25 196 L 465.75 196 C 472.3774 196 477.75 201.37258 477.75 208 L 477.75 434.5 C 477.75 441.1274 472.3774 446.5 465.75 446.5 L 97.25 446.5 C 90.62258 446.5 85.25 441.1274 85.25 434.5 L 85.25 208 C 85.25 201.37258 90.62258 196 97.25 196 Z"/>
+    </clipPath>
+    <font-face font-family="Helvetica Neue" font-size="46" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <clipPath id="inner_stroke_clip_path_2">
+      <path d="M 1440 196 L 1808.5 196 C 1815.1274 196 1820.5 201.37258 1820.5 208 L 1820.5 434.5 C 1820.5 441.1274 1815.1274 446.5 1808.5 446.5 L 1440 446.5 C 1433.3726 446.5 1428 441.1274 1428 434.5 L 1428 208 C 1428 201.37258 1433.3726 196 1440 196 Z"/>
+    </clipPath>
+    <font-face font-family="Helvetica Neue" font-size="24" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.10.2 
+    <dc:date>2019-04-24 15:02:40 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" fill-opacity="1" fill="none" stroke="none" stroke-opacity="1" stroke-dasharray="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="2" y="91" width="1895" height="438"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_3">
+        <path d="M 57.13459 344.37216 C -40.96875 321.25 -1.8476 126.59942 154.64914 159.8125 C 169.16858 95.0696 351.15325 105.57811 349.96353 159.8125 C 464.07346 90.44604 609.89914 228.76138 512.08716 298.12784 C 629.4567 331.7585 510.6061 512.95596 414.28125 482.6875 C 406.57235 533.1378 234.37252 550.7926 219.25822 482.6875 C 121.74974 555.4205 -81.57098 443.5895 57.13459 344.37216 Z" fill="#ccc"/>
+        <path d="M 57.13459 344.37216 C -35.259222 328.58103 -7.872267 119.14513 154.64914 159.8125 C 169.72409 94.18982 347.66384 102.68965 349.96353 159.8125 C 464.17183 93.34733 601.78195 217.07185 512.08716 298.12784 C 640.0207 335.95985 501.8011 521.1768 414.28125 482.6875 C 402.12078 533.1193 241.18727 547.38 219.25822 482.6875 C 132.80808 553.2986 -66.929324 458.54647 57.13459 344.37216 M 57.13459 344.37216 C -35.134222 328.45603 -7.747267 119.02013 154.77414 159.6875 C 169.84909 94.06482 347.78884 102.56465 350.08853 159.6875 C 464.29683 93.22233 601.90695 216.94685 512.21216 298.00284 C 640.1457 335.83485 501.9261 521.0518 414.40625 482.5625 C 402.24578 532.9943 241.31227 547.255 219.38322 482.5625 C 132.93308 553.1736 -66.804324 458.42147 57.25959 344.24716" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_10">
+        <path d="M 97.25 196 L 465.75 196 C 472.3774 196 477.75 201.37258 477.75 208 L 477.75 434.5 C 477.75 441.1274 472.3774 446.5 465.75 446.5 L 97.25 446.5 C 90.62258 446.5 85.25 441.1274 85.25 434.5 L 85.25 208 C 85.25 201.37258 90.62258 196 97.25 196 Z" fill="#ccc"/>
+        <path d="M 97.25 196 L 465.75 196 C 472.3774 196 477.75 201.37258 477.75 208 L 477.75 434.5 C 477.75 441.1274 472.3774 446.5 465.75 446.5 L 97.25 446.5 C 90.62258 446.5 85.25 441.1274 85.25 434.5 L 85.25 208 C 85.25 201.37258 90.62258 196 97.25 196 Z" stroke="black" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="8" clip-path="url(#inner_stroke_clip_path)"/>
+        <text transform="translate(90.25 201)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="46" font-weight="400" fill="black" x="291.374" y="44">VPC</tspan>
+        </text>
+      </g>
+      <g id="Graphic_26">
+        <path d="M 1392.1346 323.37216 C 1294.0312 300.25 1333.1524 105.59942 1489.6491 138.8125 C 1504.1686 74.069605 1686.1532 84.57811 1684.9635 138.8125 C 1799.0735 69.446035 1944.8991 207.76138 1847.0872 277.12784 C 1964.4567 310.7585 1845.606 491.95596 1749.2812 461.6875 C 1741.5724 512.1378 1569.3725 529.7926 1554.2582 461.6875 C 1456.7497 534.4205 1253.429 422.5895 1392.1346 323.37216 Z" fill="#ccc"/>
+        <path d="M 1392.1346 323.37216 C 1300.3143 291.5669 1326.6237 120.76594 1489.6491 138.8125 C 1501.1182 72.7553 1686.9396 84.9267 1684.9635 138.8125 C 1803.489 80.01534 1956.4176 197.29948 1847.0872 277.12784 C 1955.5053 302.52404 1852.9738 493.42634 1749.2812 461.6875 C 1737.2344 509.4491 1563.5206 530.8696 1554.2582 461.6875 C 1463.5109 540.12674 1254.8044 410.26295 1392.1346 323.37216 M 1392.1346 323.37216 C 1300.4393 291.4419 1326.7487 120.64094 1489.7741 138.6875 C 1501.2432 72.6303 1687.0646 84.8017 1685.0885 138.6875 C 1803.614 79.89034 1956.5426 197.17448 1847.2122 277.00284 C 1955.6303 302.39904 1853.0988 493.30134 1749.4062 461.5625 C 1737.3594 509.3241 1563.6456 530.7446 1554.3832 461.5625 C 1463.6359 540.00174 1254.9294 410.13795 1392.2596 323.24716" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_25">
+        <path d="M 1440 196 L 1808.5 196 C 1815.1274 196 1820.5 201.37258 1820.5 208 L 1820.5 434.5 C 1820.5 441.1274 1815.1274 446.5 1808.5 446.5 L 1440 446.5 C 1433.3726 446.5 1428 441.1274 1428 434.5 L 1428 208 C 1428 201.37258 1433.3726 196 1440 196 Z" fill="#ccc"/>
+        <path d="M 1440 196 L 1808.5 196 C 1815.1274 196 1820.5 201.37258 1820.5 208 L 1820.5 434.5 C 1820.5 441.1274 1815.1274 446.5 1808.5 446.5 L 1440 446.5 C 1433.3726 446.5 1428 441.1274 1428 434.5 L 1428 208 C 1428 201.37258 1433.3726 196 1440 196 Z" stroke="black" stroke-linecap="round" stroke-linejoin="bevel" stroke-width="8" clip-path="url(#inner_stroke_clip_path_2)"/>
+        <text transform="translate(1433 201)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="46" font-weight="400" fill="black" x="0" y="44">VPC</tspan>
+        </text>
+      </g>
+      <g id="Line_35">
+        <line x1="224.49985" y1="321.3858" x2="1700.0002" y2="325.2392" stroke="#0532ff" stroke-linecap="round" stroke-linejoin="round" stroke-width="8"/>
+      </g>
+      <g id="Graphic_32">
+        <circle cx="1527.5" cy="320.75" r="50.0000798950948" fill="#ccc"/>
+        <circle cx="1527.5" cy="320.75" r="50.0000798950948" stroke="#005c5d" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+        <text transform="translate(1492.5 306.25)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="24" font-weight="400" fill="black" x="4.112" y="23">Client</tspan>
+        </text>
+      </g>
+      <g id="Graphic_30">
+        <circle cx="1527.5" cy="321.75" r="50.0000798950948" fill="#ccc"/>
+        <circle cx="1527.5" cy="321.75" r="50.0000798950948" stroke="#ff9300" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+        <text transform="translate(1492.5 307.25)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="24" font-weight="400" fill="black" x="12.116" y="23">VPP</tspan>
+        </text>
+      </g>
+      <g id="Graphic_29">
+        <circle cx="1752" cy="325.375" r="50.0000798950948" fill="#ccc"/>
+        <circle cx="1752" cy="325.375" r="50.0000798950948" stroke="#005c5d" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+        <text transform="translate(1717 310.875)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="24" font-weight="400" fill="black" x=".344" y="23">Server</tspan>
+        </text>
+      </g>
+      <g id="Graphic_36">
+        <circle cx="934.25" cy="320.75" r="150.000239685284" fill="#3a8eed"/>
+        <circle cx="934.25" cy="320.75" r="150.000239685284" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Group_34">
+        <g id="Graphic_18">
+          <circle cx="172.5" cy="321.25" r="50.0000798950948" fill="#ccc"/>
+          <circle cx="172.5" cy="321.25" r="50.0000798950948" stroke="#005c5d" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+          <text transform="translate(137.5 306.75)" fill="black">
+            <tspan font-family="Helvetica Neue" font-size="24" font-weight="400" fill="black" x="4.112" y="23">Client</tspan>
+          </text>
+        </g>
+        <g id="Graphic_21">
+          <circle cx="390.5" cy="321.25" r="50.0000798950948" fill="#ccc"/>
+          <circle cx="390.5" cy="321.25" r="50.0000798950948" stroke="#ff9300" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+          <text transform="translate(355.5 306.75)" fill="black">
+            <tspan font-family="Helvetica Neue" font-size="24" font-weight="400" fill="black" x="12.116" y="23">VPP</tspan>
+          </text>
+        </g>
+      </g>
+      <g id="Graphic_20">
+        <path d="M 875.6629 329.3766 C 848.1875 323.5625 859.144 274.61726 902.9734 282.96875 C 907.0398 266.68903 958.0075 269.3314 957.6743 282.96875 C 989.6326 265.52643 1030.4734 300.30607 1003.0796 317.7484 C 1035.9508 326.2049 1002.6648 371.7673 975.6875 364.15625 C 973.5285 376.84207 925.3012 381.2814 921.0682 364.15625 C 893.7594 382.4451 836.8162 354.325 875.6629 329.3766 Z" fill="white"/>
+        <path d="M 875.6629 329.3766 C 848.6755 325.4818 862.4036 271.76958 902.9734 282.96875 C 906.5063 265.36393 958.2806 270.1557 957.6743 282.96875 C 988.9464 263.11376 1030.7937 301.9043 1003.0796 317.7484 C 1037.5339 325.11272 1002.8077 370.71445 975.6875 364.15625 C 973.8819 376.56356 925.424 380.3372 921.0682 364.15625 C 895.6032 380.00546 839.3298 350.10455 875.6629 329.3766 M 875.6629 329.3766 C 848.8005 325.3568 862.5286 271.64458 903.0984 282.84375 C 906.6313 265.23893 958.4056 270.0307 957.7993 282.84375 C 989.0714 262.98876 1030.9187 301.7793 1003.2046 317.6234 C 1037.6589 324.98772 1002.9327 370.58945 975.8125 364.03125 C 974.0069 376.43856 925.549 380.2122 921.1932 364.03125 C 895.7282 379.88046 839.4548 349.97955 875.7879 329.2516" stroke="gray" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_43">
+        <ellipse cx="814.25" cy="251.5625" rx="10.000015979019" ry="10.2500163784944" fill="#00fdff"/>
+        <ellipse cx="814.25" cy="251.5625" rx="10.000015979019" ry="10.2500163784944" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_45">
+        <circle cx="858.5" cy="280.375" r="5.00000798950948" fill="#00fdff"/>
+        <circle cx="858.5" cy="280.375" r="5.00000798950948" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_47">
+        <ellipse cx="934.25" cy="452.5625" rx="10.0000159790189" ry="10.2500163784944" fill="lime"/>
+        <ellipse cx="934.25" cy="452.5625" rx="10.0000159790189" ry="10.2500163784944" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_48">
+        <circle cx="844.25" cy="272.125" r="5.00000798950949" fill="#00fdff"/>
+        <circle cx="844.25" cy="272.125" r="5.00000798950949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_49">
+        <circle cx="831.75" cy="262.125" r="5.00000798950947" fill="#00fdff"/>
+        <circle cx="831.75" cy="262.125" r="5.00000798950947" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_50">
+        <circle cx="934.25" cy="262.125" r="5.00000798950949" fill="lime"/>
+        <circle cx="934.25" cy="262.125" r="5.00000798950949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_51">
+        <circle cx="934.25" cy="385" r="5.00000798950951" fill="lime"/>
+        <circle cx="934.25" cy="385" r="5.00000798950951" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_52">
+        <circle cx="934.25" cy="246.3125" r="5.0000079895095" fill="lime"/>
+        <circle cx="934.25" cy="246.3125" r="5.0000079895095" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_53">
+        <circle cx="934.25" cy="230.5" r="5.00000798950949" fill="lime"/>
+        <circle cx="934.25" cy="230.5" r="5.00000798950949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_54">
+        <circle cx="934.25" cy="212" r="5.00000798950951" fill="lime"/>
+        <circle cx="934.25" cy="212" r="5.00000798950951" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_55">
+        <circle cx="934.25" cy="416.15625" r="5.00000798950948" fill="lime"/>
+        <circle cx="934.25" cy="416.15625" r="5.00000798950948" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_56">
+        <circle cx="934.25" cy="401.3125" r="5.00000798950949" fill="lime"/>
+        <circle cx="934.25" cy="401.3125" r="5.00000798950949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_57">
+        <circle cx="934.25" cy="433.9375" r="5.00000798950952" fill="lime"/>
+        <circle cx="934.25" cy="433.9375" r="5.00000798950952" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_58">
+        <ellipse cx="934.25" cy="188.25" rx="10.0000159790189" ry="10.2500163784945" fill="lime"/>
+        <ellipse cx="934.25" cy="188.25" rx="10.0000159790189" ry="10.2500163784945" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_62">
+        <ellipse cx="1034" cy="416.15625" rx="10.0000159790189" ry="10.2500163784944" fill="#00fdff"/>
+        <ellipse cx="1034" cy="416.15625" rx="10.0000159790189" ry="10.2500163784944" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_61">
+        <circle cx="999" cy="390" r="5.00000798950949" fill="#00fdff"/>
+        <circle cx="999" cy="390" r="5.00000798950949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_60">
+        <circle cx="982.5" cy="377" r="5.00000798950946" fill="#00fdff"/>
+        <circle cx="982.5" cy="377" r="5.00000798950946" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_59">
+        <circle cx="1014.5" cy="400.8125" r="5.00000798950949" fill="#00fdff"/>
+        <circle cx="1014.5" cy="400.8125" r="5.00000798950949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_66">
+        <ellipse cx="834.5" cy="416.15625" rx="10.000015979019" ry="10.2500163784944" fill="#ff40ff"/>
+        <ellipse cx="834.5" cy="416.15625" rx="10.000015979019" ry="10.2500163784944" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_65">
+        <circle cx="886" cy="377" r="5.00000798950948" fill="#ff40ff"/>
+        <circle cx="886" cy="377" r="5.00000798950948" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_64">
+        <circle cx="869.5" cy="390" r="5.00000798950948" fill="#ff40ff"/>
+        <circle cx="869.5" cy="390" r="5.00000798950948" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_63">
+        <circle cx="854" cy="400.8125" r="5.00000798950945" fill="fuchsia"/>
+        <circle cx="854" cy="400.8125" r="5.00000798950945" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_70">
+        <ellipse cx="1034" cy="225.25" rx="10.0000159790189" ry="10.2500163784944" fill="#ff40ff"/>
+        <ellipse cx="1034" cy="225.25" rx="10.0000159790189" ry="10.2500163784944" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_69">
+        <circle cx="994" cy="272.125" r="5.00000798950946" fill="#ff40ff"/>
+        <circle cx="994" cy="272.125" r="5.00000798950946" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_68">
+        <circle cx="1006.5" cy="256.8125" r="5.00000798950949" fill="#ff40ff"/>
+        <circle cx="1006.5" cy="256.8125" r="5.00000798950949" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Graphic_67">
+        <circle cx="1019" cy="240.5" r="5.00000798950953" fill="#ff40ff"/>
+        <circle cx="1019" cy="240.5" r="5.00000798950953" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+    </g>
+  </g>
+</svg>
diff --git a/docs/_images/vpc_scheme.svg b/docs/_images/vpc_scheme.svg
new file mode 100644 (file)
index 0000000..8d71a0c
--- /dev/null
@@ -0,0 +1,152 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg version="1.1" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns="http://www.w3.org/2000/svg" xmlns:xl="http://www.w3.org/1999/xlink" viewBox="54 -6 1578 801" width="1578" height="801">
+  <defs>
+    <font-face font-family="Helvetica Neue" font-size="36" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="#ff2600">
+      <g>
+        <path d="M 3.2 0 L 0 -1.2 L 0 1.2 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_2" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="#00fdff">
+      <g>
+        <path d="M 3.2 0 L 0 -1.2 L 0 1.2 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <marker orient="auto" overflow="visible" markerUnits="strokeWidth" id="FilledArrow_Marker_3" stroke-linejoin="miter" stroke-miterlimit="10" viewBox="-1 -3 6 6" markerWidth="6" markerHeight="6" color="#00fa00">
+      <g>
+        <path d="M 3.2 0 L 0 -1.2 L 0 1.2 Z" fill="currentColor" stroke="currentColor" stroke-width="1"/>
+      </g>
+    </marker>
+    <font-face font-family="Helvetica Neue" font-size="32" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="20" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="40" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+    <font-face font-family="Helvetica Neue" font-size="50" panose-1="2 0 5 3 0 0 0 2 0 4" units-per-em="1000" underline-position="-100" underline-thickness="50" slope="0" x-height="517" cap-height="714" ascent="951.9958" descent="-212.99744" font-weight="400">
+      <font-face-src>
+        <font-face-name name="HelveticaNeue"/>
+      </font-face-src>
+    </font-face>
+  </defs>
+  <metadata> Produced by OmniGraffle 7.10.2 
+    <dc:date>2019-04-24 16:02:19 +0000</dc:date>
+  </metadata>
+  <g id="Canvas_1" fill-opacity="1" fill="none" stroke="none" stroke-opacity="1" stroke-dasharray="none">
+    <title>Canvas 1</title>
+    <rect fill="white" x="54" y="-6" width="1578" height="801"/>
+    <g id="Canvas_1: Layer 1">
+      <title>Layer 1</title>
+      <g id="Graphic_2">
+        <path d="M 177.5 187.5 L 730.5 187.5 C 758.1142 187.5 780.5 209.88576 780.5 237.5 L 780.5 530.5 C 780.5 558.11424 758.1142 580.5 730.5 580.5 L 177.5 580.5 C 149.88576 580.5 127.5 558.11424 127.5 530.5 L 127.5 237.5 C 127.5 209.88576 149.88576 187.5 177.5 187.5 Z" fill="white"/>
+        <path d="M 177.5 187.5 L 730.5 187.5 C 758.1142 187.5 780.5 209.88576 780.5 237.5 L 780.5 530.5 C 780.5 558.11424 758.1142 580.5 730.5 580.5 L 177.5 580.5 C 149.88576 580.5 127.5 558.11424 127.5 530.5 L 127.5 237.5 C 127.5 209.88576 149.88576 187.5 177.5 187.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Graphic_3">
+        <path d="M 178.5 188.5 L 731.5 188.5 C 759.1142 188.5 781.5 210.88576 781.5 238.5 L 781.5 531.5 C 781.5 559.11424 759.1142 581.5 731.5 581.5 L 178.5 581.5 C 150.88576 581.5 128.5 559.11424 128.5 531.5 L 128.5 238.5 C 128.5 210.88576 150.88576 188.5 178.5 188.5 Z" fill="white"/>
+        <path d="M 178.5 188.5 L 731.5 188.5 C 759.1142 188.5 781.5 210.88576 781.5 238.5 L 781.5 531.5 C 781.5 559.11424 759.1142 581.5 731.5 581.5 L 178.5 581.5 C 150.88576 581.5 128.5 559.11424 128.5 531.5 L 128.5 238.5 C 128.5 210.88576 150.88576 188.5 178.5 188.5 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Graphic_4">
+        <path d="M 109.5 104 L 1475 104 C 1502.6142 104 1525 126.38576 1525 154 L 1525 740 C 1525 767.6142 1502.6142 790 1475 790 L 109.5 790 C 81.88576 790 59.5 767.6142 59.5 740 L 59.5 154 C 59.5 126.38576 81.88576 104 109.5 104 Z" fill="white"/>
+        <path d="M 109.5 104 L 1475 104 C 1502.6142 104 1525 126.38576 1525 154 L 1525 740 C 1525 767.6142 1502.6142 790 1475 790 L 109.5 790 C 81.88576 790 59.5 767.6142 59.5 740 L 59.5 154 C 59.5 126.38576 81.88576 104 109.5 104 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="10"/>
+      </g>
+      <g id="Graphic_12">
+        <path d="M 237 277.5 L 699.5 277.5 C 727.1142 277.5 749.5 299.88576 749.5 327.5 L 749.5 620.5 C 749.5 648.1142 727.1142 670.5 699.5 670.5 L 237 670.5 C 209.38576 670.5 187 648.1142 187 620.5 L 187 327.5 C 187 299.88576 209.38576 277.5 237 277.5 Z" fill="white"/>
+        <path d="M 237 277.5 L 699.5 277.5 C 727.1142 277.5 749.5 299.88576 749.5 327.5 L 749.5 620.5 C 749.5 648.1142 727.1142 670.5 699.5 670.5 L 237 670.5 C 209.38576 670.5 187 648.1142 187 620.5 L 187 327.5 C 187 299.88576 209.38576 277.5 237 277.5 Z" stroke="#ff2600" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Graphic_13">
+        <path d="M 962.5 282 L 1443.5 282 C 1471.1142 282 1493.5 304.38576 1493.5 332 L 1493.5 620.5 C 1493.5 648.1142 1471.1142 670.5 1443.5 670.5 L 962.5 670.5 C 934.8858 670.5 912.5 648.1142 912.5 620.5 L 912.5 332 C 912.5 304.38576 934.8858 282 962.5 282 Z" fill="white"/>
+        <path d="M 962.5 282 L 1443.5 282 C 1471.1142 282 1493.5 304.38576 1493.5 332 L 1493.5 620.5 C 1493.5 648.1142 1471.1142 670.5 1443.5 670.5 L 962.5 670.5 C 934.8858 670.5 912.5 648.1142 912.5 620.5 L 912.5 332 C 912.5 304.38576 934.8858 282 962.5 282 Z" stroke="#00fdff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Graphic_11">
+        <path d="M 139.5 300 L 319 300 C 346.61424 300 369 322.38576 369 350 L 369 587 C 369 614.61424 346.61424 637 319 637 L 139.5 637 C 111.88576 637 89.5 614.61424 89.5 587 L 89.5 350 C 89.5 322.38576 111.88576 300 139.5 300 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+        <text transform="translate(94.5 305)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="36" font-weight="400" fill="black" x="0" y="34">   VM</tspan>
+        </text>
+      </g>
+      <g id="Graphic_14">
+        <path d="M 692.5 300 L 974.5 300 C 1002.1142 300 1024.5 322.38576 1024.5 350 L 1024.5 587 C 1024.5 614.61424 1002.1142 637 974.5 637 L 692.5 637 C 664.8858 637 642.5 614.61424 642.5 587 L 642.5 350 C 642.5 322.38576 664.8858 300 692.5 300 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+        <text transform="translate(647.5 305)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="36" font-weight="400" fill="black" x="151.674" y="34">VPP</tspan>
+        </text>
+      </g>
+      <g id="Graphic_16">
+        <path d="M 260.5 382 L 301 382 C 306.52285 382 311 386.47715 311 392 L 311 567 C 311 572.52285 306.52285 577 301 577 L 260.5 577 C 254.97715 577 250.5 572.52285 250.5 567 L 250.5 392 C 250.5 386.47715 254.97715 382 260.5 382 Z" fill="#ab7942"/>
+        <path d="M 260.5 382 L 301 382 C 306.52285 382 311 386.47715 311 392 L 311 567 C 311 572.52285 306.52285 577 301 577 L 260.5 577 C 254.97715 577 250.5 572.52285 250.5 567 L 250.5 392 C 250.5 386.47715 254.97715 382 260.5 382 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Graphic_17">
+        <path d="M 957.5 382 L 998 382 C 1003.5228 382 1008 386.47715 1008 392 L 1008 567 C 1008 572.52285 1003.5228 577 998 577 L 957.5 577 C 951.9772 577 947.5 572.52285 947.5 567 L 947.5 392 C 947.5 386.47715 951.9772 382 957.5 382 Z" fill="#ab7942"/>
+        <path d="M 957.5 382 L 998 382 C 1003.5228 382 1008 386.47715 1008 392 L 1008 567 C 1008 572.52285 1003.5228 577 998 577 L 957.5 577 C 951.9772 577 947.5 572.52285 947.5 567 L 947.5 392 C 947.5 386.47715 951.9772 382 957.5 382 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Graphic_18">
+        <path d="M 678.5 382 L 719 382 C 724.52285 382 729 386.47715 729 392 L 729 567 C 729 572.52285 724.52285 577 719 577 L 678.5 577 C 672.97715 577 668.5 572.52285 668.5 567 L 668.5 392 C 668.5 386.47715 672.97715 382 678.5 382 Z" fill="#ab7942"/>
+        <path d="M 678.5 382 L 719 382 C 724.52285 382 729 386.47715 729 392 L 729 567 C 729 572.52285 724.52285 577 719 577 L 678.5 577 C 672.97715 577 668.5 572.52285 668.5 567 L 668.5 392 C 668.5 386.47715 672.97715 382 678.5 382 Z" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Graphic_19">
+        <circle cx="1525" cy="479.5" r="75.0001198426422" fill="#ff9300"/>
+        <circle cx="1525" cy="479.5" r="75.0001198426422" stroke="black" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"/>
+      </g>
+      <g id="Line_25">
+        <line x1="313" y1="479.5" x2="647.6" y2="479.5" marker-end="url(#FilledArrow_Marker)" stroke="#ff2600" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Line_26">
+        <line x1="1010" y1="479.5" x2="1431.1" y2="479.5" marker-end="url(#FilledArrow_Marker_2)" stroke="#00fdff" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Line_27">
+        <line x1="729" y1="480.2539" x2="926.6001" y2="479.655" marker-end="url(#FilledArrow_Marker_3)" stroke="#00fa00" stroke-linecap="round" stroke-linejoin="round" stroke-width="4"/>
+      </g>
+      <g id="Graphic_28">
+        <text transform="translate(325.5 199)" fill="#ff2600">
+          <tspan font-family="Helvetica Neue" font-size="32" font-weight="400" fill="#ff2600" x="0" y="30">Subnet: 10.0.30.0/24</tspan>
+        </text>
+      </g>
+      <g id="Graphic_29">
+        <text transform="translate(964.344 173)" fill="#00fdff">
+          <tspan font-family="Helvetica Neue" font-size="32" font-weight="400" fill="#00fdff" x="8526513e-19" y="30">Subnet: 2600:1f14:135:cc00::/64,</tspan>
+          <tspan font-family="Helvetica Neue" font-size="32" font-weight="400" fill="#00fdff" x="148.816" y="67.896">10.0.20.0/24</tspan>
+        </text>
+      </g>
+      <g id="Graphic_30">
+        <text transform="translate(255.5 333.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="20" font-weight="400" fill="black" x="8668621e-19" y="19">NIC: 10.0.30.5</tspan>
+        </text>
+      </g>
+      <g id="Graphic_31">
+        <text transform="translate(979 322.44)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="20" font-weight="400" fill="black" x="0" y="19">NIC: </tspan>
+          <tspan font-family="Helvetica Neue" font-size="20" font-weight="400" fill="black" y="19">2600:1f14:135:cc00::5.128,</tspan>
+          <tspan font-family="Helvetica Neue" font-size="20" font-weight="400" fill="black" x="103.01" y="42.56">10.0.20.4</tspan>
+        </text>
+      </g>
+      <g id="Graphic_32">
+        <text transform="translate(595.42 338.5)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="20" font-weight="400" fill="black" x="8668621e-19" y="19">NIC: 10.0.30.</tspan>
+          <tspan font-family="Helvetica Neue" font-size="20" font-weight="400" fill="black" y="19">4</tspan>
+        </text>
+      </g>
+      <g id="Graphic_33">
+        <text transform="translate(1548.724 565.94)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="40" font-weight="400" fill="black" x="0" y="38">IGW</tspan>
+        </text>
+      </g>
+      <g id="Graphic_34">
+        <text transform="translate(595.675 -.6119995)" fill="black">
+          <tspan font-family="Helvetica Neue" font-size="50" font-weight="400" fill="black" x="73896445e-20" y="48">VPP scenario in AWS</tspan>
+        </text>
+      </g>
+    </g>
+  </g>
+</svg>
index b6a5918..012f651 100644 (file)
@@ -4,6 +4,6 @@
 About
 =====
 
-**VPP Version:** 19.04-rc0~276-g3bce8eb
+**VPP Version:** 19.04-rc0~295-ga28d6fb
 
-**Built on:** Tue Feb 26 14:00:03 GMT 2019
+**Built on:** Thu Apr 25 16:22:14 GMT 2019
diff --git a/docs/usecases/ConnectingVPC.rst b/docs/usecases/ConnectingVPC.rst
new file mode 100644 (file)
index 0000000..8ecb790
--- /dev/null
@@ -0,0 +1,109 @@
+.. _ConnectingVPC:
+
+.. toctree::
+
+Interconnecting VPCs with Segment Routing & Performance Evaluation
+____________________________________________________________________
+
+Before reading this part, you should have a minimum understading of AWS, especially on `VPC concepts <https://docs.aws.amazon.com/vpc/latest/userguide/what-is-amazon-vpc.html>`_.
+
+
+
+.. figure:: /_images/Connecting_VPC.svg
+
+Figure 1:  Simplified view of our final configuration.
+
+
+In this section we will set VPP as Gateway of our VPC and, thanks to its support to Segment Routing per IPV6, we will interconnect several VPCs together. Figure 1 shows what will be our final configuration. We are interested in interconnecting several VPCs together since we could perform Service Chaining inside AWS.
+
+Now we focus on the basic elements you should deploy inside the VPC in order to make  this configuration works. Here you can find some scripts `to automate the deployment of these resources <https://github.com/francescospinelli94/Automating-Deployment-VPP>`_.
+In our VPC we will have two instances: one, in which we will install VPP and the other one which will be our Client/Server machine. We suggest you to create 3 subnets inside your VPC: one associated with IPv4 addresses, for reaching your VMs through SSH. The second one, also with IPV4 addresses, that allows connectivity between the Client/Server machine and the VPP machine. Finally you need a third one, with both IPv4 and IPv6 address, to connect VPP with the Amazon IGW and we will use IPv6 addresses to implement Segment Routing. Moreover you have to attach to the Client/Server machine one additional NIC, while instead to the VPP machine you have to attach 2 different NIC. One will be used inside the IPv6 subnet while the other one will allow communications with the other VM. you can find an example in Figure 2
+
+
+.. figure:: /_images/vpc_scheme.svg
+
+Figure 2: Example of the resourses present inside our VPC
+
+
+Notice that the following example works with two VPCs, where in each of them there are a VM with VPP and a VM. Hence,  you will have to execute the same commands also in the other VPC to make the connection between the two VPC possibile.
+
+
+Now, create a new VM instance (you can use same setting as before (Ubuntu Server 16.04 and m5 type)) and attach a NIC. Remember that the two Client/Server machine's NICs should stay in two different IPv4 Subnet. Afterwards, on the VM's terminal execute these commands:
+
+.. code-block:: console
+
+ $ sudo /sbin/ip -4 addr add 10.1.2.113/24 dev ens6
+ $ sudo ifconfig ens6 up
+ $ sudo /sbin/ip -4 route add 10.2.0.0/16 via 10.1.4.117
+
+Basically you are setting up the interface which you will use to reach VPP and telling that all the traffic belonging to the subnet 10.2.0.0/16, which in our case is the one of the other VPC, should go through VPP's interface. Remember also to do the same thing in the route table menu of the Amazon Console Management.
+
+Now go to the terminal of VPP, enter in the VPP CLI and type these commands to  set up the two virtual interfaces. To see how to bind the NICs to VPP, see here (Link AWS in VPP).
+
+.. code-block:: console
+
+ vpp# set int state VirtualFunctionEthernet0/6/0 up
+ vpp# set int state VirtualFunctionEthernet0/7/0 up
+
+Here instead you are assigning the IP addresses to the network interfaces.
+
+.. code-block:: console
+
+ vpp# set int ip address VirtualFunctionEthernet0/6/0 10.1.4.117/24
+ vpp# set int ip address VirtualFunctionEthernet0/7/0 2600:1f14:e0e:7f00:f672:1039:4e41:e68/64
+
+Afterwards, you should use the Segment Routing's functionalities. Note that for the localsid address we are using a different IPv6 address (you can generate another one through the Amazon console)
+
+
+.. code-block:: console
+
+ vpp# set sr encaps source addr 2600:1f14:e0e:7f00:f672:1039:4e41:e68
+ vpp# sr localsid address 2600:1f14:e0e:7f00:8da1:c8fa:5301:1d1f behavior end.dx4      VirtualFunctionEthernet0/6/0 10.1.4.117
+ vpp# sr policy add bsid c:1::999:1  next 2600:1f14:135:cc00:43c1:e860:7ce9:e94a encap
+ vpp# sr steer l3 10.2.5.0/24 via  bsid c:1::999:1
+
+Finally, you are setting the ip6 discovery, telling which is the next hop (the IGW). Notice that the MAC address is the MAC address of the IGW.
+
+.. code-block:: console
+
+
+ vpp# set ip6 neighbor VirtualFunctionEthernet0/7/0 fe80::84f:3fff:fe2a:aaf0 0a:4f:3f:2a:aa:f0
+ vpp# ip route add ::/0 via fe80::84f:3fff:fe2a:aaf0 VirtualFunctionEthernet0/7/0
+
+
+Now go in the other VM instance in the other VPC, which could be located in another Amazon Region, and do the same commands. First in the VM:
+
+.. code-block:: console
+
+ vpp# sudo /sbin/ip -4 addr add 10.2.5.190/24 dev ens6
+ vpp# sudo ifconfig ens6 up
+ vpp# sudo /sbin/ip -4 route add 10.2.0.0/16 via 10.2.5.21
+
+Then, in VPP:
+
+.. code-block:: console
+
+ vpp# set int state VirtualFunctionEthernet0/6/0 up
+ vpp# set int state VirtualFunctionEthernet0/7/0 up
+ vpp# set int ip address VirtualFunctionEthernet0/6/0 10.2.5.21/24
+ vpp# set int ip address VirtualFunctionEthernet0/7/0 2600:1f14:135:cc00:13b9:ff74:348d:7642/64
+ vpp# set sr encaps source addr 2600:1f14:135:cc00:13b9:ff74:348d:7642
+ vpp# sr policy add bsid c:3::999:1  next 2600:1f14:e0e:7f00:8da1:c8fa:5301:1d1f encap
+ vpp# sr steer l3 10.1.4.0/24 via bsid c:3::999:1
+ vpp# set ip6 neighbor VirtualFunctionEthernet0/7/0 fe80::86a:b7ff:fe5d:73c0 0a:4c:fd:b8:c1:3e
+ vpp# ip route add ::/0 via fe80::86a:b7ff:fe5d:73c0 VirtualFunctionEthernet0/7/0
+
+Now if you try ping your Server machine from your Client Machine you should be able to reach it.
+
+If you are interested in Performance evaluation inside this scenario, we will present a poster at INFOCOM'19, in which will be present our performance evaluation of Segment routing inside AWS:
+
+*Francesco  Spinelli,  Luigi  Iannone,  and  Jerome  Tollet. “Chaining  your  Virtual  Private  Clouds  with  Segment Routing”. In:2019 IEEE INFOCOM Poster (INFOCOM2019 Poster). Paris, France, Apr. 2019*
+
+
+**Troubleshooting**
+
+* Remember to disable source/dest check on the VPP and VMs Network Card interfaces. You can do it through the Amazon Console.
+
+* The commands work with VPP version 18.07. If you're using a different version, probably the syntax of some VPP commands will be slightly different.
+
+* Be careful: if you stop your VM with VPP you will need to attach again the two NICs to VPP.
diff --git a/docs/usecases/automatingthedeployment.rst b/docs/usecases/automatingthedeployment.rst
new file mode 100644 (file)
index 0000000..6772b18
--- /dev/null
@@ -0,0 +1,12 @@
+.. _automatingthedeployment:
+
+.. toctree::
+
+Automating VPP deployment
+__________________________
+
+
+
+In order to make the VPP deployment easier inside AWS and Azure, we have created two different Terraform scripts, compatibles with both Public Cloud Provider. These scripts allow to automate the deployment of the resources. `Here you can find the scripts anf further informations <https://github.com/francescospinelli94/Automating-Deployment-VPP>`_.
+
+
index 614f002..94135ea 100644 (file)
@@ -1,18 +1,19 @@
 .. _usecases:
 
 
-Use Cases 
+Use Cases
 ==========
 
 This chapter contains a sample of the many ways FD.io VPP can be used. It is by no means an
 extensive list, but should give a sampling of the many features contained in FD.io VPP.
 
 .. toctree::
-  
+
    containers
    simpleperf/index.rst
    vhost/index.rst
    vmxnet3
+   vppcloud
    homegateway
    contiv/index.rst
    networksim
diff --git a/docs/usecases/vppcloud.rst b/docs/usecases/vppcloud.rst
new file mode 100644 (file)
index 0000000..22bb984
--- /dev/null
@@ -0,0 +1,14 @@
+.. _vppcloud:
+
+VPP inside the Cloud
+====================
+
+This section will cover the VPP deployment inside two different Public Cloud Provider: Amazon AWS and Microsoft Azure. Furthermore, we describe how to interconnect several  Public Cloud Regions together with Segment Routing per IPv6 and we show some Performance Evaluation. Finally, we make our Terraform scripts available to the community, which could help in automating the VPP deployment inside the Cloud.
+
+
+.. toctree::
+
+   vppinaws
+   ConnectingVPC
+   vppinazure
+   automatingthedeployment
diff --git a/docs/usecases/vppinaws.rst b/docs/usecases/vppinaws.rst
new file mode 100644 (file)
index 0000000..468915a
--- /dev/null
@@ -0,0 +1,147 @@
+.. _vppinaws:
+
+.. toctree::
+
+VPP in AWS
+___________________
+
+Warning: before starting this guide you should have a minimum knowledge on how `AWS works <https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html>`_!
+
+First of all, you should log into your Virtual Machine inside AWS (we suggest to create an instance with Ubuntu 16.04 on a m5 type) and download some useful packages to make VPP installation as smooth as possible: 
+
+.. code-block:: console
+
+ $ sudo apt-get update
+ $ sudo apt-get upgrade
+ $ sudo apt-get install build-essential
+ $ sudo apt-get install python-pip
+ $ sudo apt-get install libnuma-dev
+ $ sudo apt-get install make
+ $ sudo apt install libelf-dev
+
+
+
+Afterwards, types the following commands to install VPP:
+
+.. code-block:: console
+
+ $ curl -s https://packagecloud.io/install/repositories/fdio/1807/script.deb.sh | sudo bash
+
+
+
+
+In this case we downloaded VPP version 18.07 but actually you can use any VPP version available. Then, you can install VPP with all of its plugins: 
+
+
+.. code-block:: console
+
+ $ sudo apt-get update
+ $ sudo apt-get install vpp
+ $ sudo apt-get install vpp-plugins vpp-dbg vpp-dev vpp-api-java vpp-api-python vpp-api-lua
+
+
+
+Now, you need to bind the NICs (Network Card Interface) to VPP. Firstly you have the retrieve the PCI addresses of the NICs you want to bind:
+
+.. code-block:: console
+
+ $ sudo lshw -class network -businfo
+
+
+
+
+The PCI addresses have a format similar to this: 0000:00:0X.0. Once you retrieve them, you should copy them inside the startup file of VPP:
+
+.. code-block:: console
+
+ $ sudo nano /etc/vpp/startup.conf
+
+
+
+Here, inside the dpdk block, copy the PCI addresses of the NIC you want to bind to VPP.
+
+
+.. code-block:: console
+
+  dev 0000:00:0X.0
+
+
+
+
+Now you should install DPDK package. This will allow to bind the NICs to VPP through a script available inside the DPDK package:
+
+.. code-block:: console
+
+ $  wget https://fast.dpdk.org/rel/dpdk-18.08.tar.xz
+ $  tar -xvf dpdk-18.08.tar.xz
+ $  cd ~/dpdk-18.08/usertools/
+
+
+
+and open the script:
+
+.. code-block:: console
+
+ $ ./dpdk-setup.sh
+
+
+
+When the script is running, you should be able to execute several options. For the moment, just  install  T=x86_64-native-linuxapp-gcc and then close the script. Now go inside:
+
+.. code-block:: console
+
+ $ cd ~/dpdk-18.08/x86_64-native-linuxapp-gcc/
+
+
+
+and type:
+
+.. code-block:: console
+
+ $ sudo modprobe uio
+ $ sudo insmod kmod/igb_uio.ko
+
+
+In this way, the PCIs  addresses should appear inside the setup file of DPDK and therefore you  can bind them:
+
+.. code-block:: console
+
+ $ ./dpdk-setup.sh
+
+
+
+Inside the script, bind the NICs using the option 24.
+
+Finally restart VPP and the NICs should appear inside VPP CLI:
+
+.. code-block:: console
+
+ $ sudo service vpp stop
+ $ sudo service vpp start
+ $ sudo vppctl show int
+
+
+
+
+Notice that if you stop the VM, you need to bind again the NICs.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docs/usecases/vppinazure.rst b/docs/usecases/vppinazure.rst
new file mode 100644 (file)
index 0000000..b2839a1
--- /dev/null
@@ -0,0 +1,160 @@
+.. _vppinazure:
+
+.. toctree::
+
+VPP in Azure
+___________________
+
+
+
+
+Before starting, a few notes:
+
+* in our configuration we use only DPDK 18.02, since with the newer versions, such as DPDK 18.05, we obtained several problems during VPP installation (mostly related with MLX4 PMD Drivers). 
+
+* Some of the commands are taken from `Azure’s DPDK page <https://docs.microsoft.com/en-us/azure/virtual-network/setup-dpdk>`_.
+
+To bring DPDK inside Azure, we perform the following procedure:
+
+Firstly, we install the DPDK dependencies:
+
+.. code-block:: console
+
+ $ sudo add-apt-repository ppa:canonical-server/dpdk-azure –y
+ $ sudo apt-get update
+ $ sudo apt-get install -y librdmacm-dev librdmacm1 build-essential libnuma-dev libmnl-dev
+
+Then, we download DPDK 18.02:
+
+.. code-block:: console
+
+ $ sudo wget https://fast.dpdk.org/rel/dpdk-18.02.2.tar.xz
+ $ tar -xvf dpdk-18.02.2.tar.xz
+
+Finally, we build DPDK, modifying first its configuration files in order to make VPP compatible with MLX4 drivers:
+
+Inside config/common_base, modify:
+
+.. code-block:: console
+
+  CONFIG_RTE_BUILD_SHARED_LIB=n
+  CONFIG_RTE_LIBRTE_MLX4_PMD=y
+  CONFIG_RTE_LIBRTE_MLX4_DLOPEN_DEPS=y
+  CONFIG_RTE_LIBRTE_TAP_PMD=y
+  CONFIG_RTE_LIBRTE_FAILSAFE_PMD=y
+
+and then:
+
+.. code-block:: console
+
+ $ make config T=x86_64-native-linuxapp-gcc
+ $ sed -ri 's,(MLX._PMD=)n,\1y,' build/.config
+ $ make
+
+Finally we build DPDK:
+
+.. code-block:: console
+
+ $ make install T=x86_64-native-linuxapp-gcc DESTDIR=/home/ciscotest/test EXTRA_CFLAGS='-fPIC -pie'
+
+And we reboot the instance:
+
+.. code-block:: console
+
+ $ reboot istance
+
+After the reboot, we type these commands:
+
+.. code-block:: console
+
+ $ echo 1024 | sudo tee /sys/devices/system/node/node*/hugepages/hugepages-2048kB/nr_hugepages
+ $ mkdir /mnt/huge
+ $ sudo mount -t hugetlbfs nodev /mnt/huge
+ $ grep Huge /proc/meminfo
+ $ modprobe -a ib_uverbs
+ $ cd x86_64-native-linuxapp-gcc/
+ $ ls
+ $ cd lib/
+ $ ls
+ $ sudo cp librte_pmd_mlx4_glue.so.18.02.0 /usr/lib
+
+**Now we focus on VPP installation:**
+
+In our configuration we use VPP 18.07.
+
+We perform this procedure in order to install VPP 18.07 with an external DPDK configuration inside Azure.
+
+Firstly, we download VPP
+
+.. code-block:: console
+
+ $ git clone https://gerrit.fd.io/r/vpp
+ $ git checkout v18.07
+
+Then, we build VPP, using the external DPDK configuration we previously made:
+
+We modify the path inside the vpp.mk file:
+
+.. code-block:: console
+
+ $ build-data/platforms/vpp.mk
+ $ vpp_uses_external_dpdk = yes
+ $ vpp_dpdk_inc_dir = <PATH_TO_DESTDIR_NAME_FROM_ABOVE>/include/dpdk/
+ $ vpp_dpdk_lib_dir =<PATH_TO_DESTDIR_NAME_FROM_ABOVE>/lib
+
+<PATH_TO_DESTDIR_NAME_FROM_ABOVE> is whatever the path used when compiling DPDK above. These paths have to be absolute path in order for it to work.
+
+we modify build-data/platforms/vpp.mk to use
+
+.. code-block:: console
+
+ vpp_uses_dpdk_mlx4_pmd = yes
+
+.. code-block:: console
+
+ $ make build
+ $ cd build-root/
+ $ make V=0 PLATFORM=vpp TAG=vpp install-deb
+ $ sudo dpkg -i *.deb
+
+Finally, we modify the startup.conf file:
+
+.. code-block:: console
+
+ $ cd /etc/vpp
+ $ sudo nano startup.conf
+
+Inside the DPDK block, the following commands:
+
+.. code-block:: console
+
+
+ ## Whitelist specific interface by specifying PCI address
+ dev 000X:00:0X.0
+ dev 000X:00:0X.0
+ # Running failsafe
+ vdev net_vdev_netvsc0,iface=eth1
+ vdev net_vdev_netvsc1,iface=eth2
+
+*Please refer to Azure DPDK document to pick the right iface to use for failsafe vdev.*
+
+
+and finally:
+
+.. code-block:: console
+
+ $ sudo service vpp stop
+ $ sudo service vpp start
+ $ sudo service vpp status
+ $ sudo vppctl
+
+Now VPP will work inside Azure!
+
+
+
+
+
+
+
+