- Title is now "Hands-on BGP"; the AS-path diagram is gone from the cover. - Sections: IPv6 addresses and prefixes; where AS numbers and prefixes come from (IANA, RIRs, the RIPE database, IRR vs RPKI); BGP and the bytes of an UPDATE; IP transit vs Internet exchanges (the peering LAN as an Ethernet segment, route servers); the lab (ferrix, pr01.rue, SwissIX, NL-ix, France-IX, DE-CIX, transit). - The UPDATE walked through in section 3 is a real 94-byte capture from ferrix for 2a0d:d741:1::/48. Vertical slides light up one part at a time with its decode; the generator asserted every quoted number against the capture. Session counts come from the tracked bird.conf, the route6 object from the RPSL file, SwissIX's LAN from PeeringDB. - New components: focusable bytes, decode table, prefix bits, and SVG diagrams drawn in the theme's colours. - Opening index.html straight from disk used to give a title and empty panels, because browsers block the module and the section files there. The page now explains that, and also reports a failed reveal.js load. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
4.2 KiB
Slides
A reveal.js deck structured like Matt Godbolt's newer talks (what-happens-beneath-accu-2026): no stock theme but a custom dark one, every slide on a rounded panel, IBM Plex Sans and Mono, monokai code with glowing stepped lines, 16:9 with fade transitions, and the content in one Markdown file per section.
What is ours: the palette, and the corner motif. His ring-and-thread became a chain of nodes and links, an AS path.
The talk
| Section | File |
|---|---|
| IP addresses and prefixes (IPv6) | sections/01-addresses.md |
| Where AS numbers and prefixes come from (IANA, RIPE) | sections/02-registries.md |
| BGP and the bytes of an UPDATE | sections/03-bgp-update.md |
| IP transit and Internet exchanges | sections/04-transit-and-ix.md |
| The lab: ferrix, pr01.rue and its exchanges | sections/05-lab.md |
The UPDATE in section 3 is a real one captured from ferrix. Its byte slides step through it one part at a time (press down); every number on them was checked against the capture when the slides were generated. If you replace the capture, regenerate rather than edit the hex by hand.
| File | Holds |
|---|---|
theme.css |
the look: palette, type, panels, motif, title slide |
style.css |
components used by slides: columns, boxes, bytes, notes |
index.html |
section list, reveal.js loader and options, bird highlighter |
sections/*.md |
the slides |
Make it yours
Everything brand-like is a variable at the top of theme.css. To compare
accents without editing, open ?accent=green, ?accent=amber or
?accent=magenta (blue is the default); copy the one you like into :root.
The wordmark bottom-left is the <div class="wordmark"> in index.html.
For a full-bleed title image, empty the title <section> and give it
data-background="images/title.png".
Show it
The sections are loaded over HTTP, so open the deck through a server, not by
double-clicking index.html. Opened from disk, browsers block reveal.js and
the section files, and you would see a title and empty panels; the page now
says so instead:
python3 -m http.server 8000 --directory slides
Then http://localhost:8000. Keys: arrows to move, S speaker view with
notes and a timer, O overview, F fullscreen, B blank the screen.
Offline
slides/vendor-reveal.sh
copies reveal.js into slides/reveal.js/ (ignored by git). The deck uses that
copy when present and the CDN otherwise. Do this before presenting anywhere
with uncertain Wi-Fi. IBM Plex still comes from Google Fonts; without a
network the deck falls back to Helvetica/Arial and the system monospace, so
install IBM Plex on the presenting machine if that matters.
Write slides
Edit the files in sections/; add a section by adding a file and a
<section data-markdown=...> line in index.html.
----- next slide
--- next vertical slide (detail you can skip)
Notes: speaker notes from here to the end of the slide
Apply a class to the element above with <!-- .element: class="..." -->.
| Class | Effect |
|---|---|
fragment |
appears on the next click |
fragment pop |
appears, grows and takes the accent colour |
big |
one large statement on the slide |
note |
quiet italic aside |
attribution |
small credit under an image or quote |
borders |
table with visible borders |
r-stretch |
image or iframe fills the remaining height |
blur-edges |
soft edge for photos |
Blocks: <div class="cols"> two columns, <div class="boxes"> labelled cards
(us, ok, bad), <pre class="bytes"> BGP bytes in the colours of the lab
page (add focus, and on to the spans to keep lit, to dim the rest),
<table class="decode"> for the explanation under them,
<svg class="diagram"> for diagrams drawn in the theme's colours (hot,
fabric, link, bgp, traffic). Code fences take a language and optional line steps, e.g.
```bird [1-3|5-9]; bird is a small highlighter defined in index.html.
<!-- .slide: class="bare" --> drops the panel, the motif and the wordmark
for one slide, e.g. a full-bleed image. The title slide does so by itself.
Open http://localhost:8000/?print-pdf in Chrome and print to PDF with background graphics on.