As presented. The palette is light on request of the reviewer; code blocks and byte dumps keep a dark ground so the byte colours still work. The OPEN walk lights the hovered bytes as an inverted block and its table cells are dark text on a tint of their group colour. build.py inlines reveal.js, the stylesheets, scripts and Markdown sections into slides/dist/hands-on-bgp.html for uploading. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
91 lines
4.0 KiB
Markdown
91 lines
4.0 KiB
Markdown
# The lab
|
|
|
|
### <a href="https://bgplab.rayhaan.net">bgplab.rayhaan.net</a>
|
|
|
|
Notes:
|
|
Section 5. What the students are about to touch, and what stands between a
|
|
typo and the Internet.
|
|
|
|
---
|
|
|
|
## What you are connected to
|
|
|
|
<svg class="diagram" viewBox="0 0 1000 430" role="img" aria-label="Browser to the lab BGP speaker to the BIRD router pr01.rue, which peers at four exchanges and buys transit">
|
|
<rect x="20" y="170" width="150" height="80" rx="8"/><text x="95" y="205">you</text><text x="95" y="228" class="small">a browser</text>
|
|
<g class="hot"><rect x="230" y="170" width="200" height="80" rx="8"/></g><text x="330" y="202" class="accent">lab speaker</text><text x="330" y="226" class="small">AS4200000001</text>
|
|
<rect x="490" y="170" width="200" height="80" rx="8"/><text x="590" y="202">pr01.rue (BIRD)</text><text x="590" y="226" class="small">AS210036</text>
|
|
<line class="link" x1="170" y1="210" x2="230" y2="210"/><text x="200" y="160" class="small">HTTPS</text>
|
|
<line class="bgp" x1="430" y1="210" x2="490" y2="210"/><text x="460" y="160" class="small accent">BGP</text>
|
|
<text x="330" y="280" class="small">web page + BGP speaker</text><text x="590" y="280" class="small">filters, then decides where</text>
|
|
<rect x="780" y="20" width="200" height="56" rx="8"/><text x="880" y="54">SwissIX</text>
|
|
<rect x="780" y="98" width="200" height="56" rx="8"/><text x="880" y="132">NL-ix</text>
|
|
<rect x="780" y="176" width="200" height="56" rx="8"/><text x="880" y="210">France-IX</text>
|
|
<rect x="780" y="254" width="200" height="56" rx="8"/><text x="880" y="288">DE-CIX</text>
|
|
<rect x="780" y="352" width="200" height="56" rx="8"/><text x="880" y="386">transit</text>
|
|
<path class="bgp" d="M 690 195 C 740 195, 730 48, 780 48"/><path class="bgp" d="M 690 203 C 740 203, 735 126, 780 126"/>
|
|
<path class="bgp" d="M 690 210 L 780 204"/><path class="bgp" d="M 690 217 C 740 217, 735 282, 780 282"/>
|
|
<path class="bgp" d="M 690 225 C 740 225, 730 380, 780 380"/>
|
|
</svg>
|
|
|
|
Notes:
|
|
The lab speaker is a small BGP daemon written for this course; it runs on
|
|
the same machine as the router. Both dashed hops are real BGP sessions. Everything to
|
|
the right of pr01 is the actual Internet.
|
|
|
|
---
|
|
|
|
## Your prefix
|
|
|
|
`2a0d:d741:<n>::/48`
|
|
|
|
- `<n>` is your number **in hex**: student 10 is `2a0d:d741:a::/48`
|
|
- Put your name in _owner_: only the owner can withdraw a route
|
|
- One prefix each
|
|
|
|
Notes:
|
|
Put the URL and the class password on the board. The page is a snapshot by
|
|
default; turn on auto-refresh at the top right to watch things change.
|
|
|
|
---
|
|
|
|
## What happens when you press _Announce_
|
|
|
|
1. The lab speaker builds an UPDATE. Click _bytes_ to see it, hover to decode it
|
|
2. pr01 checks it against its import filter
|
|
3. pr01 decides, per neighbour, whether to pass it on
|
|
4. Your announcement propagates throughout the whole internet!
|
|
5. `ping 2a0d:d741:<n>::1` answers, from anywhere
|
|
|
|
Notes:
|
|
Step 5: pr01 answers for every address in the lab space, so reachability of
|
|
your prefix depends only on whether your announcement got out.
|
|
|
|
---
|
|
|
|
## Steering your route
|
|
|
|
| You add | Who acts | Effect |
|
|
| ----------------------------- | -------- | --------------------------------- |
|
|
| nothing | | announced everywhere |
|
|
| `210036:0:0` | pr01 | announced nowhere |
|
|
| `210036:0:0` `210036:1:42476` | pr01 | only to the SwissIX route servers |
|
|
| + `42476:0:0` `42476:1:559` | SwissIX | …and from there only to SWITCH |
|
|
| `NO_EXPORT` | pr01 | accepted, never passed on |
|
|
|
|
Same idea at two hops: _never there_, _only there_, _nowhere_.
|
|
|
|
<!-- .element: class="note" -->
|
|
|
|
Notes:
|
|
210036:0:<as> never to that AS, 210036:1:<as> to that AS, 210036:2/3:<n> the
|
|
same by exchange (1 SwissIX, 2 NL-ix, 3 France-IX, 4 DE-CIX). A "never" always
|
|
wins. The preset menu next to the field has all of these.
|
|
|
|
---
|
|
|
|
## Handout Part 2 & 3
|
|
|
|
Notes:
|
|
Looking glasses: bgp.tools, RIPEstat, and the exchange's own. Global
|
|
visibility takes a minute or two to settle after each change.
|