1203 lines
39 KiB
HTML
1203 lines
39 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
|
|
<head><script src="/livereload.js?mindelay=10&v=2&port=2010&path=livereload" data-no-instant defer></script>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<meta name="description" content="Network Design">
|
|
|
|
<title>Network Design | burble.dn42</title>
|
|
|
|
<link rel="icon" href="/favicon/favicon-32x32.png" type="image/x-icon">
|
|
|
|
<link rel="preload" as="font" href="/fonts/Metropolis.woff2" type="font/woff2" crossorigin="anonymous">
|
|
<link rel="preload" as="font" href="/fonts/LiberationSans.woff2" type="font/woff2" crossorigin="anonymous">
|
|
<link rel="preload" as="font" href="/fonts/LiberationSans-Bold.woff2" type="font/woff2" crossorigin="anonymous">
|
|
<link rel="preload" as="font" href="/fonts/LiberationSans-BoldItalic.woff2" type="font/woff2" crossorigin="anonymous">
|
|
<link rel="preload" as="font" href="/fonts/LiberationSans-Italic.woff2" type="font/woff2" crossorigin="anonymous">
|
|
<link rel="preload" as="font" href="/fonts/LiberationMono.woff2" type="font/woff2" crossorigin="anonymous">
|
|
<link rel="preload" as="font" href="/fonts/DroidSans.woff2" type="font/woff2" crossorigin="anonymous">
|
|
<link rel="preload" as="font" href="/fonts/GeekdocIcons.woff2" type="font/woff2" crossorigin="anonymous">
|
|
|
|
<link rel="preload" href="/main-7a8a8dd1df.min.css" as="style">
|
|
<link rel="stylesheet" href="/main-7a8a8dd1df.min.css" media="all">
|
|
|
|
<link rel="preload" href="/mobile-2eb10ce87d.min.css" as="style">
|
|
<link rel="stylesheet" href="/mobile-2eb10ce87d.min.css" media="screen and (max-width: 45rem)">
|
|
|
|
<link rel="preload" href="/print-16259ad7b8.min.css" as="style">
|
|
<link rel="stylesheet" href="/print-16259ad7b8.min.css" media="print">
|
|
|
|
<link rel="preload" href="/custom.css" as="style">
|
|
<link rel="stylesheet" href="/custom.css" media="all">
|
|
|
|
<!-- Made with Geekdoc theme https://github.com/thegeeklab/hugo-geekdoc -->
|
|
|
|
</head>
|
|
|
|
<body>
|
|
<svg style="position: absolute; width: 0; height: 0; overflow: hidden;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><symbol viewBox="-2.29 -2.29 28.57 28.57" id="arrow_back" xmlns="http://www.w3.org/2000/svg"><path d="M24 10.526v2.947H5.755l8.351 8.421-2.105 2.105-12-12 12-12 2.105 2.105-8.351 8.421H24z"/></symbol><symbol viewBox="-2.29 -2.29 28.57 28.57" id="arrow_left_alt" xmlns="http://www.w3.org/2000/svg"><path d="M5.965 10.526V6.035L0 12l5.965 5.965v-4.491H24v-2.947H5.965z"/></symbol><symbol viewBox="-2.29 -2.29 28.57 28.57" id="arrow_right_alt" xmlns="http://www.w3.org/2000/svg"><path d="M18.035 10.526V6.035L24 12l-5.965 5.965v-4.491H0v-2.947h18.035z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="bitbucket" xmlns="http://www.w3.org/2000/svg"><path d="M15.905 13.355c.189 1.444-1.564 2.578-2.784 1.839-1.375-.602-1.375-2.784-.034-3.403 1.151-.705 2.818.223 2.818 1.564zm1.907-.361c-.309-2.44-3.076-4.056-5.328-3.042-1.426.636-2.389 2.148-2.32 3.747.086 2.097 2.08 3.815 4.176 3.626s3.729-2.234 3.472-4.331zm4.108-9.315c-.756-.997-2.045-1.169-3.179-1.358-3.214-.516-6.513-.533-9.727.034-1.066.172-2.269.361-2.939 1.323 1.1 1.031 2.664 1.186 4.073 1.358 2.544.327 5.156.344 7.699.017 1.426-.172 3.008-.309 4.073-1.375zm.979 17.788c-.481 1.684-.206 3.953-1.994 4.932-3.076 1.701-6.806 1.89-10.191 1.289-1.787-.327-3.884-.894-4.864-2.578-.43-1.65-.705-3.334-.98-5.018l.103-.275.309-.155c5.121 3.386 12.288 3.386 17.427 0 .808.241.206 1.22.189 1.805zM26.01 4.951c-.584 3.764-1.255 7.51-1.908 11.257-.189 1.1-1.255 1.719-2.148 2.183-3.214 1.615-6.96 1.89-10.483 1.512-2.389-.258-4.829-.894-6.771-2.389-.911-.705-.911-1.908-1.083-2.922-.602-3.523-1.289-7.046-1.719-10.604.206-1.547 1.942-2.217 3.231-2.698C6.848.654 8.686.362 10.508.19c3.884-.378 7.854-.241 11.618.859 1.341.395 2.784.945 3.695 2.097.412.533.275 1.203.189 1.805z"/></symbol><symbol viewBox="-2.29 -2.29 28.57 28.57" id="bookmark" xmlns="http://www.w3.org/2000/svg"><path d="M15.268 4.392q.868 0 1.532.638t.664 1.506v17.463l-7.659-3.268-7.608 3.268V6.536q0-.868.664-1.506t1.532-.638h10.876zm4.34 14.144V4.392q0-.868-.638-1.532t-1.506-.664H6.537q0-.868.664-1.532T8.733 0h10.876q.868 0 1.532.664t.664 1.532v17.412z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="code" xmlns="http://www.w3.org/2000/svg"><path d="M9.917 24.5a1.75 1.75 0 10-3.501.001 1.75 1.75 0 003.501-.001zm0-21a1.75 1.75 0 10-3.501.001A1.75 1.75 0 009.917 3.5zm11.666 2.333a1.75 1.75 0 10-3.501.001 1.75 1.75 0 003.501-.001zm1.75 0a3.502 3.502 0 01-1.75 3.026c-.055 6.581-4.721 8.039-7.82 9.023-2.898.911-3.846 1.349-3.846 3.117v.474a3.502 3.502 0 011.75 3.026c0 1.932-1.568 3.5-3.5 3.5s-3.5-1.568-3.5-3.5c0-1.294.711-2.424 1.75-3.026V6.526A3.502 3.502 0 014.667 3.5c0-1.932 1.568-3.5 3.5-3.5s3.5 1.568 3.5 3.5a3.502 3.502 0 01-1.75 3.026v9.06c.93-.456 1.914-.766 2.807-1.039 3.391-1.075 5.323-1.878 5.359-5.687a3.502 3.502 0 01-1.75-3.026c0-1.932 1.568-3.5 3.5-3.5s3.5 1.568 3.5 3.5z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="date" xmlns="http://www.w3.org/2000/svg"><path d="M27.192 28.844V11.192H4.808v17.652h22.384zm0-25.689q1.277 0 2.253.976t.976 2.253v22.459q0 1.277-.976 2.216t-2.253.939H4.808q-1.352 0-2.291-.901t-.939-2.253V6.385q0-1.277.939-2.253t2.291-.976h1.577V.001h3.23v3.155h12.769V.001h3.23v3.155h1.577zm-3.155 11.267v3.155h-3.23v-3.155h3.23zm-6.46 0v3.155h-3.155v-3.155h3.155zm-6.384 0v3.155h-3.23v-3.155h3.23z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="download" xmlns="http://www.w3.org/2000/svg"><path d="M2.866 28.209h26.269v3.79H2.866v-3.79zm26.268-16.925L16 24.418 2.866 11.284h7.493V.001h11.283v11.283h7.493z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="email" xmlns="http://www.w3.org/2000/svg"><path d="M28.845 9.615v-3.23L16 14.422 3.155 6.385v3.23L16 17.577zm0-6.46q1.277 0 2.216.977T32 6.385v19.23q0 1.277-.939 2.253t-2.216.977H3.155q-1.277 0-2.216-.977T0 25.615V6.385q0-1.277.939-2.253t2.216-.977h25.69z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="git" xmlns="http://www.w3.org/2000/svg"><path d="M27.472 12.753L15.247.529a1.803 1.803 0 00-2.55 0l-2.84 2.84 2.137 2.137a2.625 2.625 0 013.501 3.501l3.499 3.499a2.625 2.625 0 11-1.237 1.237l-3.499-3.499c-.083.04-.169.075-.257.106v7.3a2.626 2.626 0 11-1.75 0v-7.3a2.626 2.626 0 01-1.494-3.607L8.62 4.606l-8.09 8.09a1.805 1.805 0 000 2.551l12.225 12.224a1.803 1.803 0 002.55 0l12.168-12.168a1.805 1.805 0 000-2.551z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="github" xmlns="http://www.w3.org/2000/svg"><path d="M16 .394c8.833 0 15.999 7.166 15.999 15.999 0 7.062-4.583 13.062-10.937 15.187-.813.146-1.104-.354-1.104-.771 0-.521.021-2.25.021-4.396 0-1.5-.5-2.458-1.083-2.958 3.562-.396 7.312-1.75 7.312-7.896 0-1.75-.625-3.167-1.646-4.291.167-.417.708-2.042-.167-4.25-1.333-.417-4.396 1.646-4.396 1.646a15.032 15.032 0 00-8 0S8.937 6.602 7.603 7.018c-.875 2.208-.333 3.833-.167 4.25-1.021 1.125-1.646 2.542-1.646 4.291 0 6.125 3.729 7.5 7.291 7.896-.458.417-.875 1.125-1.021 2.146-.917.417-3.25 1.125-4.646-1.333-.875-1.521-2.458-1.646-2.458-1.646-1.562-.021-.104.979-.104.979 1.042.479 1.771 2.333 1.771 2.333.938 2.854 5.396 1.896 5.396 1.896 0 1.333.021 2.583.021 2.979 0 .417-.292.917-1.104.771C4.582 29.455-.001 23.455-.001 16.393-.001 7.56 7.165.394 15.998.394zM6.063 23.372c.042-.083-.021-.187-.146-.25-.125-.042-.229-.021-.271.042-.042.083.021.187.146.25.104.062.229.042.271-.042zm.646.709c.083-.062.062-.208-.042-.333-.104-.104-.25-.146-.333-.062-.083.062-.062.208.042.333.104.104.25.146.333.062zm.625.937c.104-.083.104-.25 0-.396-.083-.146-.25-.208-.354-.125-.104.062-.104.229 0 .375s.271.208.354.146zm.875.875c.083-.083.042-.271-.083-.396-.146-.146-.333-.167-.417-.062-.104.083-.062.271.083.396.146.146.333.167.417.062zm1.187.521c.042-.125-.083-.271-.271-.333-.167-.042-.354.021-.396.146s.083.271.271.312c.167.062.354 0 .396-.125zm1.313.104c0-.146-.167-.25-.354-.229-.187 0-.333.104-.333.229 0 .146.146.25.354.229.187 0 .333-.104.333-.229zm1.208-.208c-.021-.125-.187-.208-.375-.187-.187.042-.312.167-.292.312.021.125.187.208.375.167s.312-.167.292-.292z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="gitlab" xmlns="http://www.w3.org/2000/svg"><path d="M1.629 11.034L14 26.888.442 17.048a1.09 1.09 0 01-.39-1.203l1.578-4.811zm7.217 0h10.309l-5.154 15.854zM5.753 1.475l3.093 9.559H1.63l3.093-9.559a.548.548 0 011.031 0zm20.618 9.559l1.578 4.811c.141.437-.016.922-.39 1.203l-13.558 9.84 12.371-15.854zm0 0h-7.216l3.093-9.559a.548.548 0 011.031 0z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="heart" xmlns="http://www.w3.org/2000/svg"><path d="M16 29.714a1.11 1.11 0 01-.786-.321L4.072 18.643c-.143-.125-4.071-3.714-4.071-8 0-5.232 3.196-8.357 8.535-8.357 3.125 0 6.053 2.464 7.464 3.857 1.411-1.393 4.339-3.857 7.464-3.857 5.339 0 8.535 3.125 8.535 8.357 0 4.286-3.928 7.875-4.089 8.035L16.785 29.392c-.214.214-.5.321-.786.321z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="keyborad_arrow_down" xmlns="http://www.w3.org/2000/svg"><path d="M3.281 5.36L14 16.079 24.719 5.36 28 8.641l-14 14-14-14z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="keyborad_arrow_left" xmlns="http://www.w3.org/2000/svg"><path d="M25.875 28.25L22.125 32 6.126 16.001 22.125.002l3.75 3.75-12.25 12.25z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="keyborad_arrow_right" xmlns="http://www.w3.org/2000/svg"><path d="M6.125 28.25L18.375 16 6.125 3.75 9.875 0l15.999 15.999L9.875 31.998z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="link" xmlns="http://www.w3.org/2000/svg"><path d="M24.037 7.963q3.305 0 5.634 2.366T32 16t-2.329 5.671-5.634 2.366h-6.46v-3.08h6.46q2.028 0 3.493-1.465t1.465-3.493-1.465-3.493-3.493-1.465h-6.46v-3.08h6.46zM9.615 17.578v-3.155h12.77v3.155H9.615zM3.005 16q0 2.028 1.465 3.493t3.493 1.465h6.46v3.08h-6.46q-3.305 0-5.634-2.366T0 16.001t2.329-5.671 5.634-2.366h6.46v3.08h-6.46q-2.028 0-3.493 1.465t-1.465 3.493z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="menu" xmlns="http://www.w3.org/2000/svg"><path d="M.001 5.334h31.998v3.583H.001V5.334zm0 12.416v-3.5h31.998v3.5H.001zm0 8.916v-3.583h31.998v3.583H.001z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="notification" xmlns="http://www.w3.org/2000/svg"><path d="M22.615 19.384l2.894 2.894v1.413H2.49v-1.413l2.894-2.894V12.25q0-3.365 1.716-5.856t4.745-3.231v-1.01q0-.875.606-1.514T13.999 0t1.548.639.606 1.514v1.01q3.029.74 4.745 3.231t1.716 5.856v7.134zM14 27.999q-1.211 0-2.053-.808t-.841-2.019h5.788q0 1.144-.875 1.986T14 27.999z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="path" xmlns="http://www.w3.org/2000/svg"><path d="M28 12.62h-9.793V8.414h-2.826v11.173h2.826v-4.206H28V26.62h-9.793v-4.206H12.62v-14H9.794v4.206H.001V1.381h9.793v4.206h8.413V1.381H28V12.62z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="person" xmlns="http://www.w3.org/2000/svg"><path d="M16 20.023q5.052 0 10.526 2.199t5.473 5.754v4.023H0v-4.023q0-3.555 5.473-5.754t10.526-2.199zM16 16q-3.275 0-5.614-2.339T8.047 8.047t2.339-5.661T16 0t5.614 2.386 2.339 5.661-2.339 5.614T16 16z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="search" xmlns="http://www.w3.org/2000/svg"><path d="M11.925 20.161q3.432 0 5.834-2.402t2.402-5.834-2.402-5.834-5.834-2.402-5.834 2.402-2.402 5.834 2.402 5.834 5.834 2.402zm10.981 0L32 29.255 29.255 32l-9.094-9.094v-1.458l-.515-.515q-3.26 2.831-7.721 2.831-4.976 0-8.45-3.432T.001 11.925t3.474-8.45 8.45-3.474 8.407 3.474 3.432 8.45q0 1.802-.858 4.075t-1.973 3.646l.515.515h1.458z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="shield" xmlns="http://www.w3.org/2000/svg"><path d="M22.167 15.166V3.5h-8.166v20.726c.93-.492 2.424-1.349 3.883-2.497 1.95-1.531 4.284-3.919 4.284-6.562zm3.499-13.999v14c0 7.674-10.737 12.523-11.192 12.724-.146.073-.31.109-.474.109s-.328-.036-.474-.109c-.456-.201-11.192-5.049-11.192-12.724v-14C2.334.529 2.863 0 3.501 0H24.5c.638 0 1.167.529 1.167 1.167z"/></symbol><symbol viewBox="-2.29 -2.29 32.57 32.57" id="tags" xmlns="http://www.w3.org/2000/svg"><path d="M6.606 7.549c0-1.047-.84-1.887-1.887-1.887s-1.887.84-1.887 1.887.84 1.887 1.887 1.887 1.887-.84 1.887-1.887zm15.732 8.493c0 .501-.206.988-.546 1.327l-7.239 7.254c-.354.339-.84.546-1.342.546s-.988-.206-1.327-.546L1.342 14.066C.59 13.329 0 11.899 0 10.852V4.718a1.9 1.9 0 011.887-1.887h6.134c1.047 0 2.477.59 3.229 1.342L21.792 14.7c.339.354.546.84.546 1.342zm5.661 0c0 .501-.206.988-.546 1.327l-7.239 7.254c-.354.339-.84.546-1.342.546-.767 0-1.15-.354-1.651-.87l6.93-6.93c.339-.339.546-.826.546-1.327s-.206-.988-.546-1.342L13.609 4.173c-.752-.752-2.182-1.342-3.229-1.342h3.303c1.047 0 2.477.59 3.229 1.342L27.454 14.7c.339.354.546.84.546 1.342z"/></symbol><symbol viewBox="-2.29 -2.29 36.57 36.57" id="telescope" xmlns="http://www.w3.org/2000/svg"><path d="M25.026 3.335a.466.466 0 00-.646-.238L13.362 8.91a.463.463 0 00-.216.575l.227.593-6.36 3.488a.462.462 0 00-.205.583l.211.508-6.755 3.228a.463.463 0 00-.228.595l1.386 3.341a.463.463 0 00.583.259l7.056-2.5.211.508a.462.462 0 00.557.267l6.733-1.941.202.527a.46.46 0 00.566.277l12.03-3.702a.46.46 0 00.293-.613L25.026 3.335zM2.109 21.061l-1.049-2.53 6.314-3.018 1.332 3.211-6.596 2.337zm7.857-1.708l-.22-.531-1.706-4.113-.22-.53 5.863-3.216 2.197 5.676.347.908-6.261 1.806zm7.505-1.146l-.188-.491c-.003-.01-.001-.022-.006-.032l-.572-1.478-2.549-6.668 10.201-5.381 4.249 10.624-11.136 3.428zm8.943-16.723a.463.463 0 00-.86.344l5.552 13.881a.464.464 0 00.602.258.464.464 0 00.258-.602L26.413 1.484zM16.268 20.627h-2.776c-1.055 0-1.851.796-1.851 1.851v1.217l-5.44 6.347a.462.462 0 10.702.602l5.415-6.316h2.101v6.015a.463.463 0 00.926 0v-6.015h2.101l5.414 6.316a.462.462 0 10.703-.602l-5.44-6.347v-1.148c0-1.076-.813-1.92-1.851-1.92zm.925 2.777h-4.627v-.925c0-.545.38-.925.925-.925h2.776c.527 0 .925.428.925.995v.856z"/></symbol></svg>
|
|
|
|
<div class="wrapper">
|
|
<input type="checkbox" class="hidden" id="menu-control" />
|
|
<header class="gdoc-header">
|
|
<div class="container flex align-center justify-between">
|
|
|
|
<label for="menu-control" class="gdoc-nav__control">
|
|
<svg class="icon menu"><use xlink:href="#menu"></use></svg>
|
|
<svg class="icon arrow-back"><use xlink:href="#arrow_back"></use></svg>
|
|
</label>
|
|
|
|
<a class="gdoc-header__link" href="http://localhost:2010/">
|
|
<span class="gdoc-brand flex align-center">
|
|
<img class="gdoc-brand__img" src="/burble-dn42-64.png" alt="" width=359 height=64>
|
|
</span>
|
|
</a>
|
|
</div>
|
|
</header>
|
|
|
|
|
|
<main class="container flex flex-even">
|
|
<aside class="gdoc-nav">
|
|
<nav>
|
|
|
|
<div class="gdoc-search">
|
|
<svg class="icon search"><use xlink:href="#search"></use></svg>
|
|
<input type="text" id="gdoc-search-input" class="gdoc-search__input" placeholder="Search..."
|
|
aria-label="Search" maxlength="64" />
|
|
<div class="gdoc-search__spinner spinner hidden"></div>
|
|
<ul id="gdoc-search-results" class="gdoc-search__list"></ul>
|
|
</div>
|
|
|
|
|
|
|
|
<section class="gdoc-nav--main">
|
|
<h2>Navigation</h2>
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="gdoc-nav__list">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/" class="gdoc-nav__entry ">
|
|
Network
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="gdoc-nav__list">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/design/" class="gdoc-nav__entry is-active">
|
|
Network Design
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/peering/" class="gdoc-nav__entry ">
|
|
Peering with burble.dn42
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/nodes/" class="gdoc-nav__entry ">
|
|
Node Information
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/IPAM/" class="gdoc-nav__entry ">
|
|
IPAM
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/routing-policy/" class="gdoc-nav__entry ">
|
|
Routing Policy
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/communities/" class="gdoc-nav__entry ">
|
|
BGP Communities
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/status/" class="gdoc-nav__entry ">
|
|
Realtime Status
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/network/abuse/" class="gdoc-nav__entry ">
|
|
Abuse Policy
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/" class="gdoc-nav__entry ">
|
|
Services
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="gdoc-nav__list">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/dn42/" class="gdoc-nav__entry ">
|
|
DN42
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/public/" class="gdoc-nav__entry ">
|
|
Public Services
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/internal/" class="gdoc-nav__entry ">
|
|
Internal Services
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/dns/" class="gdoc-nav__entry ">
|
|
DNS
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/acme/" class="gdoc-nav__entry ">
|
|
ACME
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/shell/" class="gdoc-nav__entry ">
|
|
Shell Accounts
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/minio/" class="gdoc-nav__entry ">
|
|
S3 Object Storage
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/ca/" class="gdoc-nav__entry ">
|
|
Certificate Authority
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/services/ping/" class="gdoc-nav__entry ">
|
|
Ping Challenge
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/retro/" class="gdoc-nav__entry ">
|
|
Retro42
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="gdoc-nav__list">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/retro/modem/" class="gdoc-nav__entry ">
|
|
Dialup Service
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/retro/fake/" class="gdoc-nav__entry ">
|
|
Modem Emulator
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/additional/" class="gdoc-nav__entry ">
|
|
Additional Info
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="gdoc-nav__list">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
<input type="checkbox" id="navtree-fe66c08a" class="gdoc-nav__toggle" >
|
|
<label for="navtree-fe66c08a" class="flex justify-between">
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/additional/maintlog/" class="gdoc-nav__entry ">
|
|
Maint. Log Archive
|
|
</a>
|
|
</span>
|
|
|
|
|
|
<svg class="icon keyborad_arrow_left"><use xlink:href="#keyborad_arrow_left"></use></svg>
|
|
<svg class="icon keyborad_arrow_down hidden"><use xlink:href="#keyborad_arrow_down"></use></svg>
|
|
</label>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="gdoc-nav__list">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/additional/maintlog/2020/" class="gdoc-nav__entry ">
|
|
2020
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/additional/maintlog/2019/" class="gdoc-nav__entry ">
|
|
2019
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/additional/maintlog/2018/" class="gdoc-nav__entry ">
|
|
2018
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/additional/other-stuff/" class="gdoc-nav__entry ">
|
|
Other stuff
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
<span class="flex">
|
|
<a href="/additional/things-to-do/" class="gdoc-nav__entry ">
|
|
Things to do in DN42
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</section>
|
|
|
|
<section class="gdoc-nav--more">
|
|
|
|
<h2>More</h2>
|
|
|
|
|
|
|
|
|
|
|
|
<ul class="gdoc-nav__list">
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="flex">
|
|
<svg class="icon bookmark"><use xlink:href="#bookmark"></use></svg>
|
|
<a href="https://dn42.dev"
|
|
class="gdoc-nav__entry ">
|
|
DN42 Wiki
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="flex">
|
|
<svg class="icon git"><use xlink:href="#git"></use></svg>
|
|
<a href="https://git.dn42.dev"
|
|
class="gdoc-nav__entry ">
|
|
DN42 Registry
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
|
|
|
|
|
|
<li>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<span class="flex">
|
|
<svg class="icon git"><use xlink:href="#git"></use></svg>
|
|
<a href="https://git.burble.com"
|
|
class="gdoc-nav__entry ">
|
|
View Source
|
|
</a>
|
|
</span>
|
|
|
|
|
|
|
|
|
|
</li>
|
|
|
|
|
|
</ul>
|
|
|
|
|
|
|
|
|
|
|
|
</section>
|
|
</nav>
|
|
|
|
</aside>
|
|
|
|
<div class="gdoc-page">
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="gdoc-page__header flex flex-wrap justify-between hidden-mobile" itemscope itemtype="http://data-vocabulary.org/Breadcrumb">
|
|
<span>
|
|
|
|
<span class="breadcrumb">
|
|
<svg class="icon path"><use xlink:href="#path"></use></svg>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<a href='/'>burble.dn42</a> / <a href='/network/'>Network</a> / Network Design
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</span>
|
|
|
|
</span>
|
|
<span>
|
|
|
|
</span>
|
|
</div>
|
|
|
|
|
|
<article class="gdoc-markdown">
|
|
<h1>Network Design</h1>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<blockquote class="gdoc-hint warning">
|
|
This page documents a previous iteration of the burble.dn42 network and
|
|
is currently out of date.
|
|
</blockquote>
|
|
|
|
<div class="gdoc-page__anchorwrap"><h2 id="tunnel-mesh">Tunnel Mesh<a data-clipboard-text="http://localhost:2010/network/design/#tunnel-mesh" class="gdoc-page__anchor gdoc-page__anchor--right clip" aria-label="Anchor Tunnel Mesh" href="#tunnel-mesh"><svg class="icon link"><use xlink:href="#link"></use></svg></a></h2></div>
|
|
<figure><img src="/design/DN42-Tunnels.svg" width="80%">
|
|
</figure>
|
|
|
|
<p>Hosts within the burble.dn42 network are joined using an Wireguard/L2TP mesh.
|
|
Static, unmanaged, L2TP tunnels operate at the IP level and are configured
|
|
to create a full mesh between nodes. Wireguard is used to provide encryption
|
|
and encapsulate L2TP traffic in plain UDP such that it hides fragmentation
|
|
and allows packets to be processed within intermediate routers’ fast path.</p>
|
|
<p>Using L2TP allows for a large, virtual MTU of 4310 between nodes; this is
|
|
chosen to spread the encapsulation costs of higher layers across packets.
|
|
L2TP also allows for multiple tunnels between hosts and this can also be used
|
|
to separate low level traffic without incurring the additional overheads
|
|
of VXLANs (e.g. for NFS cross mounting).</p>
|
|
<p>Network configuration on hosts is managed by systemd-networkd and applied
|
|
with Ansible.</p>
|
|
<blockquote class="gdoc-hint info">
|
|
<p><b>Real Life Networks and Fragmentation.</b></p>
|
|
<p>Earlier designs for the burble.dn42 relied on passing fragmented packets
|
|
directly down to the clearnet layer (e.g. via ESP IPsec fragementation, or
|
|
UDP fragmentation with wireguard). In practice it was observed that
|
|
clearnet ISPs could struggle with uncommon packet types, with packet
|
|
loss seen particularly in the
|
|
<a href="https://blog.apnic.net/2021/04/23/ipv6-fragmentation-loss-in-2021/">IPv6 case</a>.
|
|
It seems likely that some providers’ anti-DDOS and load balancing platforms
|
|
had a particular impact at magnifying this problem.</p>
|
|
<p>To resolve this, the network was re-designed to ensure fragmentation took
|
|
place at the L2TP layer such that all traffic gets encapsulated in to standard
|
|
sized UDP packets. This design ensures all traffic is ’normal’ and can
|
|
remain within intermediate routers'
|
|
<a href="https://en.wikipedia.org/wiki/Fast_path">fast path</a>.</p>
|
|
|
|
</blockquote>
|
|
|
|
<blockquote class="gdoc-hint info">
|
|
<p><b>ISP Rate Limiting</b></p>
|
|
<p>The burble.dn42 network uses jumbo sized packets that are fragemented by
|
|
L2TP before being encapsulated by wireguard. This means a single packet in
|
|
the overlay layers can generate multiple wireguard UDP packets in quick
|
|
succession, appearing to be a high bandwidth, burst of traffic on the
|
|
outgoing clearnet interface. It’s vital that all these packets arrive
|
|
at the destination, or the entire overlay packet will be corrupted.
|
|
For most networks this is not a problem and generally the approach
|
|
works very well.</p>
|
|
<p>However, if you have bandwidth limits with your ISP (e.g. a 100mbit bandwidth
|
|
allowance provided on a 1gbit port) packets may be generated at a high bit
|
|
rate and then decimated by the ISP to match the bandwidth allowance.
|
|
This would normally be fine, but if a fragmented packet is sent, the
|
|
burst of smaller packets is highly likely to exceed the bandwidth
|
|
allowance and the impact on upper layer traffic is brutal, causing
|
|
nearly all packets to get dropped.</p>
|
|
<p>The burble.dn42 network manages this issue by implementing traffic shaping
|
|
on the outgoing traffic using linux tc (via
|
|
<a href="https://firehol.org/tutorial/fireqos-new-user/">FireQOS</a>). This allows
|
|
outgoing packets to be queued at the correct rate, rather than being
|
|
arbitrarily decimated by the ISP.</p>
|
|
|
|
</blockquote>
|
|
|
|
<div class="gdoc-page__anchorwrap"><h2 id="bgp-evpn">BGP EVPN<a data-clipboard-text="http://localhost:2010/network/design/#bgp-evpn" class="gdoc-page__anchor gdoc-page__anchor--right clip" aria-label="Anchor BGP EVPN" href="#bgp-evpn"><svg class="icon link"><use xlink:href="#link"></use></svg></a></h2></div>
|
|
<p><img src="/design/DN42-EVPN.svg" alt="EVPN diagram"></p>
|
|
<p>Overlaying the Wireguard/L2TP mesh is a set of VXLANs managed by a BGP EVPN.</p>
|
|
<p>The VXLANs are primarily designed to tag and isolate transit traffic, making
|
|
their use similar to MPLS.</p>
|
|
<p>The Babel routing protocol is used to discover loopback addresses between nodes;
|
|
Babel is configured to operate across the point to point L2TP tunnels and with a
|
|
static, latency based metric that is applied during deployment.</p>
|
|
<p>The BGP EVPN uses <a href="https://frrouting.org/">FRR</a> with two global route reflectors
|
|
located on different continents, for redundency. Once overheads are taken in to account
|
|
the MTU within each VXLAN is 4260.</p>
|
|
<div class="gdoc-page__anchorwrap"><h2 id="dn42-core-routing">dn42 Core Routing<a data-clipboard-text="http://localhost:2010/network/design/#dn42-core-routing" class="gdoc-page__anchor gdoc-page__anchor--right clip" aria-label="Anchor dn42 Core Routing" href="#dn42-core-routing"><svg class="icon link"><use xlink:href="#link"></use></svg></a></h2></div>
|
|
<p><img src="/design/DN42-Core.svg" alt="EVPN diagram"></p>
|
|
<p>Each host in the network runs an unprivileged LXD container that acts as a dn42 router
|
|
for that host. The container uses <a href="https://bird.network.cz/">Bird2</a> and routes between
|
|
dn42 peer tunnels, local services on the same node and transit to the rest of the
|
|
burble.dn42 network via a single dn42 core VXLAN.</p>
|
|
<p>Local services and peer networks are fully dual stack IPv4/IPv6 however the transit
|
|
VXLAN uses purely IPv6 link-local addressing, making use of BGP multiprotocol and
|
|
extended next hop capabilities for IPv4.</p>
|
|
<p>The transit VXLAN and burble.dn42 services networks use an MTU of 4260, however the
|
|
dn42 BGP configuration includes internal communities to distribute destination MTU across
|
|
the network for per-route MTUs. This helps ensure path mtu discovery
|
|
takes place as early and efficiently as possible.</p>
|
|
<p>Local services on each host are provided by <a href="https://linuxcontainers.org/lxd/introduction/">LXD</a>
|
|
containers or VMs connecting to internal network bridges.<br>
|
|
These vary across hosts but typically include:</p>
|
|
<ul>
|
|
<li><strong>tier1</strong> - used for publically avialable services (DNS, web proxy, etc)</li>
|
|
<li><strong>tier2</strong> - used for internal services, with access restricted to burble.dn42 networks</li>
|
|
</ul>
|
|
<p>Other networks might include:</p>
|
|
<ul>
|
|
<li><strong>dmz</strong> - used for hosting untrusted services (e.g. the shell servers)</li>
|
|
<li><strong>dn42 services</strong> - for other networks, such as the registry services</li>
|
|
</ul>
|
|
<p>dn42 peer tunnels are created directly on the host and then injected in to the
|
|
container using a small script, allowing the router container itself to remain unprivileged.</p>
|
|
<p>The routers also run nftables for managing access to each of the networks,
|
|
<a href="https://github.com/czerwonk/bird_exporter">bird_exporter</a> for metrics and the
|
|
<a href="https://github.com/xddxdd/bird-lg-go">bird-lg-go</a> proxy for the
|
|
burble.dn42 <a href="https://lg.burble.com">looking glass</a>.</p>
|
|
<div class="gdoc-page__anchorwrap"><h2 id="host-configuration">Host Configuration<a data-clipboard-text="http://localhost:2010/network/design/#host-configuration" class="gdoc-page__anchor gdoc-page__anchor--right clip" aria-label="Anchor Host Configuration" href="#host-configuration"><svg class="icon link"><use xlink:href="#link"></use></svg></a></h2></div>
|
|
<p><img src="/design/DN42-Host.svg" alt="EVPN diagram"></p>
|
|
<p>burble.dn42 nodes are designed to have the minimum functionality at the host level,
|
|
with all major services being delivered via virtual networks, containers and VMs.</p>
|
|
<p>Hosts have three main functions:</p>
|
|
<ul>
|
|
<li>connecting in to the burble.dn42 Wireguard/L2TP mesh and BGP EVPN</li>
|
|
<li>providing internal bridges for virtual networks</li>
|
|
<li>hosting <a href="https://linuxcontainers.org/lxd/introduction/">LXD</a> containers and VMs</li>
|
|
</ul>
|
|
<p>Together these three capabilities allow for arbitary, isolated networks and services
|
|
to be created and hosted within the network.</p>
|
|
<p>The hosts also provide a few ancillary services:</p>
|
|
<ul>
|
|
<li>delivering clearnet access for internal containers/VMs using an internal bridge.
|
|
The host manages addressing and routing for the bridge to allow clearnet access independent
|
|
of the host capabilities (e.g. proxied vs routed IPv6 connectivity)</li>
|
|
<li>creating dn42 peer tunnels and injecting them in to the dn42 router container</li>
|
|
<li>monitoring via <a href="https://www.netdata.cloud/">netdata</a></li>
|
|
<li>backup using <a href="https://borgbackup.readthedocs.io/en/stable/">borg</a></li>
|
|
</ul>
|
|
|
|
|
|
</article>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<div class="gdoc-page__footer flex flex-wrap justify-between">
|
|
|
|
|
|
</div>
|
|
|
|
</div>
|
|
</main>
|
|
|
|
<footer class="gdoc-footer">
|
|
<div class="container flex flex-wrap">
|
|
<span class="gdoc-footer__item">
|
|
Built with <a href="https://gohugo.io/" class="gdoc-footer__link">Hugo</a> and
|
|
<svg class="icon heart"><use xlink:href="#heart"></use></svg>
|
|
</span>
|
|
|
|
|
|
<span class="gdoc-footer__item">
|
|
<a href="/privacy" class="gdoc-footer__link">Privacy Policy</a>
|
|
</span>
|
|
|
|
</div>
|
|
</footer>
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
<script defer src="/js/en.search.min.e007d2b2d3ce91fd1d3bd3c2acbc3420f9defed62096fea23225713d0269f5bc.js"></script>
|
|
|
|
|
|
|
|
<script defer src="/js/clipboard-af8ab36589.min.js"></script>
|
|
<script>
|
|
document.addEventListener("DOMContentLoaded", function(event) {
|
|
var clipboard = new ClipboardJS('.clip');
|
|
});
|
|
</script>
|
|
|
|
|
|
</body>
|
|
</html>
|