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>
106 lines
4.0 KiB
Markdown
106 lines
4.0 KiB
Markdown
# Transit and exchanges
|
|
|
|
Notes:
|
|
Section 4. Two very different ways of getting routes, and what an Internet
|
|
exchange physically is.
|
|
|
|
---
|
|
|
|
## Two ways to reach other networks
|
|
|
|
<div class="cols">
|
|
<div>
|
|
|
|
### IP transit
|
|
|
|
- You **pay** a provider
|
|
- They give you routes to _everyone_
|
|
- They announce you to _everyone_
|
|
|
|
</div>
|
|
<div>
|
|
|
|
### Peering
|
|
|
|
- Usually **free**, by mutual benefit
|
|
- You exchange _your own_ routes, and your customers'
|
|
- Traffic between the locally connected parties only
|
|
|
|
</div>
|
|
</div>
|
|
|
|
Notes:
|
|
Transit is a customer-provider relationship; peering is between equals. A peer
|
|
does not carry your traffic to third parties. Most networks have both: transit
|
|
as the fallback, peering to keep traffic cheap and close.
|
|
|
|
---
|
|
|
|
## An exchange is a big Ethernet switch
|
|
|
|
<svg class="diagram" viewBox="0 0 1000 400" role="img" aria-label="Members attached to a shared Ethernet peering LAN, with a route server">
|
|
<g class="fabric"><rect x="60" y="175" width="880" height="56" rx="10"/></g>
|
|
<text x="500" y="200" class="accent">peering LAN: one Ethernet segment, one subnet</text>
|
|
<text x="500" y="220" class="small">SwissIX 2001:7f8:24::/64</text>
|
|
<g class="hot"><rect x="70" y="40" width="180" height="70" rx="8"/></g>
|
|
<text x="160" y="70">AS210036</text><text x="160" y="92" class="small">::c9</text>
|
|
<rect x="300" y="40" width="180" height="70" rx="8"/><text x="390" y="70">AS559 SWITCH</text><text x="390" y="92" class="small">::35</text>
|
|
<rect x="530" y="40" width="180" height="70" rx="8"/><text x="620" y="70">AS2906 Netflix</text><text x="620" y="92" class="small">::55</text>
|
|
<rect x="760" y="40" width="180" height="70" rx="8"/><text x="850" y="70">AS13335 Cloudflare</text><text x="850" y="92" class="small">::c0</text>
|
|
<line class="link" x1="160" y1="110" x2="160" y2="175"/><line class="link" x1="390" y1="110" x2="390" y2="175"/>
|
|
<line class="link" x1="620" y1="110" x2="620" y2="175"/><line class="link" x1="850" y1="110" x2="850" y2="175"/>
|
|
<rect x="385" y="300" width="230" height="70" rx="8"/><text x="500" y="330">route servers</text><text x="500" y="352" class="small">AS42476 ::a5ec:a:1</text>
|
|
<line class="link" x1="500" y1="231" x2="500" y2="300"/>
|
|
<path class="bgp" d="M 140 110 C 140 290, 300 335, 385 335"/>
|
|
<path class="bgp" d="M 410 110 C 410 250, 440 270, 470 300"/>
|
|
<path class="traffic" d="M 180 110 C 180 165, 370 165, 370 110"/>
|
|
<text x="275" y="138" class="small" style="fill:#4fd98a">traffic</text>
|
|
<text x="215" y="300" class="small accent">BGP</text>
|
|
</svg>
|
|
|
|
Notes:
|
|
Every member plugs one router port into the same layer-2 network and gets one
|
|
address in a shared subnet. No routing inside the exchange: just Ethernet.
|
|
Dashed blue is a BGP session, green is where the packets actually go.
|
|
|
|
---
|
|
|
|
## What that implies
|
|
|
|
- Peering participants in an exchange are all one hop away, found by neighbour discovery
|
|
- A route's next hop is the peer's LAN address, so traffic goes **directly** member to member
|
|
- The exchange is a simple layer 2 switch, allowing for a large capacity at low cost
|
|
- Strict(ish) rules on what traffic is allowed on the peering lan (e.g. no DHCP or broadcast packets)
|
|
|
|
Notes:
|
|
|
|
- IPv6 neighbour discovery and ARP are used to discover the MAC addresses of peers
|
|
- after which traffic can flow directly
|
|
|
|
---
|
|
|
|
## Route servers
|
|
|
|
Are a piece of shared infrastructure that simplifies peering.
|
|
|
|
- Most participants peer with the route server and annouce their prefixes there
|
|
- The route server can then distribute these routes to every other participant
|
|
- Simplifes from `n²` to `n` sessions
|
|
- Not in the traffic path and does not add its own AS into the path
|
|
- Allows controlling behaviour with communities, e.g. `42476:0:<as>` "not to `<as>`", `42476:1:<as>` "only to `<as>`"
|
|
|
|
Notes:
|
|
A route server is a BGP speaker that only redistributes. Because it is
|
|
transparent, the AS path looks exactly as if you peered with each member
|
|
directly. We will use those communities in the lab.
|
|
|
|
---
|
|
|
|
## Looking glasses
|
|
|
|
Are a useful tool to inspect the state of another network or internet exchange
|
|
|
|
- SwissIX https://lg.swissix.ch/
|
|
- NL-ix https://lg.nl-ix.net/
|
|
- BGP tools https://bgp.tools/
|