Phase 5 of the teaching demo plus two fixes found while exercising the dialer on the status page. - Adj-RIB-In: routes learned from a peer are removed when its session ends (RFC 4271 §8.2.2), emitting a Withdrawn event per prefix before the session Down event. Previously stale routes from dead sessions stayed in the received table. - statusz: poll the peers table every 5 s so dial state (Connecting / Backoff and its retry countdown) stays current; those changes carry no event. - docs/lab: docker-compose topology with ferrix (AS65000) and two FRR routers. r2 accepts nothing directly from ferrix so student prefixes only reach it via r1, then come back with AS path 65002 65001 65000. r1 applies community-driven policy: NO_EXPORT stops forwarding, 65001:100 prepends, BLACKHOLE drops. Dockerfile for the daemon. - docs/lab/HANDOUT.md: student exercises walking through announcement, reading the bytes, prepending, NO_EXPORT, action communities, blackholing and withdrawal. The container files have not been executed (no runtime available here); docs/lab/README.md lists what is most likely to need adjusting. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
26 lines
575 B
Protocol Buffer Text Format
26 lines
575 B
Protocol Buffer Text Format
router_id: "10.200.0.1"
|
|
local_asn: 65000
|
|
listen_endpoints { address: "0.0.0.0" port: 179 }
|
|
|
|
peers {
|
|
name: "r1"
|
|
endpoint { address: "10.200.0.2" port: 179 }
|
|
remote_asn: 65001
|
|
hold_time_seconds: 30
|
|
}
|
|
peers {
|
|
name: "r2"
|
|
endpoint { address: "10.200.0.3" port: 179 }
|
|
remote_asn: 65002
|
|
hold_time_seconds: 30
|
|
}
|
|
connect_retry_seconds: 5
|
|
|
|
# Students may only announce out of 10.100.0.0/16; one /24 each is plenty.
|
|
local_route_policy {
|
|
allowed_prefixes: "10.100.0.0/16"
|
|
max_routes_per_owner: 4
|
|
}
|
|
|
|
http_endpoint { address: "0.0.0.0" port: 8080 }
|