Files
ferrix/slides/sections/05-lab.md
T
Rayhaan JaufeerallyandClaude Fable 5.1 2910a2a800 slides: light theme, final edits, single-file bundle
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>
2026-10-01 20:40:55 +02:00

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.