Switching and routing standards — campus and edge
Criteria verified as of August 2026. Re-verify on the web before committing to anything (§8).
1. Scope and triggers
Applies to designing and operating the switched and routed campus, site and edge network: sizing the
broadcast domain, STP and its real role today, loop protection, aggregation and multi-chassis
systems, the layer 2/layer 3 boundary, first-hop redundancy, IGP choice, BGP policy in
depth, global routing hygiene (RPKI, IRR, MANRS), IPv6 rollout, QoS with judgement, and
hardening of the management and control planes.
Triggers: spanning-tree, rstp/mstp, bpduguard, root guard, storm-control,
port-channel/lacp, mlag/vpc/stack, vrrp/hsrp/glbp, route-map, prefix-list,
as-path access-list, maximum-prefix, community/large-community, aggregate-address,
rpki/origin-validation, routinator, rpki-client, stayrtr, as-set, MANRS, bfd,
ttl-security, copp, dot1x, macsec, snmpv3, tacacs+, "hijack", "route leak", "DSCP".
Not applicable: each skill decides a different thing —
networking-standards (trunk, the mother skill: it decides addressing and IPAM, which VLAN exists,
BGP/OSPF fundamentals, proxies and load balancing, host overlays, MTU/MSS and NetBox as SoT; none of that
is reopened here, here we decide how the switched network converges and what exactly the BGP policy
says); network-troubleshooting-standards (decides the reactive method when something is already broken —
here the design and the proactive operation, and every structural finding of theirs comes back here);
datacenter-fabric-standards (decides the DC fabric: Clos, VXLAN/EVPN, lossless networking);
network-automation-standards (decides how a change is generated, tested and applied — here, what
the configuration must say); firewall-policy-standards (decides which flow is permitted between zones
and under what governance); iac-standards (decides Terraform and Ansible as tools);
ot-ics-security-standards (decides the plant network, and that is not a campus: its access
defaults —storm-control, bpduguard, 802.1X on every port, L3 to the access layer— break a
PROFINET/MRP ring and leave a PLC or an HMI with no supplicant off the network. Here the criteria for campus and
for the control centre; the industrial segment is designed with theirs, and there Safety rules over
availability); observability-standards (decides what is measured and at what threshold it alerts);
identity-access-management-standards (decides corporate identity; here only its consumption in device
AAA); finops-standards (transit and ports). Also boundary: dns-standards,
vpn-standards, onprem-standards (umbrella), kubernetes-standards, secrets-management-standards,
sre-practice-standards, linux-hardening-standards, vulnerability-management-standards,
offensive-security-standards (this skill is defensive), and network-vendors-standards,
wan-legacy-standards, telco-5g-standards, high-speed-interconnect-standards and
datacenter-facilities-standards.
Guiding principle: a layer 2 decision is paid for over ten years. Design so that convergence
does not depend on STP and so that no prefix leaves without explicit authorisation.
2. Default decisions
Verify status and version on the web before pinning anything (§8). The RFCs in this table are
verified one by one against the rfc-editor.org JSON API.
| Decision |
Default |
Justifiable alternative / vetoed |
| L2/L3 boundary |
Routed to the access layer: the broadcast domain dies in the closet and the IGP converges, not STP |
Centralised gateway only with a real L2 mobility requirement; never "because it was always done that way" |
| STP |
RSTP/MSTP enabled as a safety net, with primary and secondary root pinned |
❌ STP as the design's convergence mechanism; ❌ root elected by MAC; ❌ disabling it "to go faster" |
| Loop protection |
bpduguard + rootguard + portfast/edge + storm-control on every access port |
Without BPDU guard, a consumer switch under a desk reconfigures your topology |
| Aggregation |
LACP active (IEEE 802.1AX-2020) |
❌ static/on: it detects neither crossed cabling nor a half-dead member |
| Multi-chassis |
MLAG/vPC with a peer link and a dual keepalive over a different path |
Stack: one control plane ⇒ one upgrade ⇒ one failure; acceptable at the access layer, not in the core |
| First hop |
VRRPv3 — RFC 9568 (May 2024, obsoletes RFC 5798), IPv4+IPv6, explicit priorities and preempt |
HSRP/GLBP only in a single-vendor estate. With MLAG, the MLAG's own active-active gateway; VRRP on top duplicates state |
| Campus IGP |
OSPF for ubiquity and for the people who operate it |
IS-IS (ISO 10589, RFC 1195; IPv6 in RFC 5308) for address-family independence and scaling; BGP if the topology is a routed fabric. ❌ Everything in area 0 |
| Failure detection |
BFD — RFC 5880, single-hop 5881, multihop 5883, tied to the IGP and to BGP |
Relying on IGP hellos: seconds versus milliseconds |
| eBGP |
RFC 8212: with no policy, nothing is advertised and nothing is accepted. Inbound and outbound filter on every session |
❌ A session with no prefix-list/route-map in both directions, no maximum-prefix with an action, no as-path filter |
| Global hygiene |
ROV with your own validator (Routinator / rpki-client / StayRTR), invalid = reject; your own ROAs (RFC 9582 profile, obsoletes 6482); RPKI-RTR RFC 8210 |
ROV in "mark only" indefinitely. A wide maxLength: RFC 9319 (BCP) advises against it |
| Antispoofing |
BCP 38 (RFC 2827) and BCP 84 (RFC 3704); strict uRPF where the path is symmetric, RFC 8704 where it is not |
❌ An edge with no source filtering |
| Anti-leak |
RFC 9234 (BGP roles and the Only-to-Customer attribute) |
ASPA is still an Internet-Draft (§8): useful, not the sole control |
| Session protection |
GTSM (RFC 5082) on direct eBGP, plus BGP and IGP session authentication |
A session exposed to the Internet with neither GTSM nor authentication |
| IPv6 |
Dual stack from day one, with parity in filtering, logging and monitoring |
❌ "We'll do it later": the retrofit costs more, and the lack of parity is where the hole appears |
| QoS |
Trust only at the edge: mark/remark on ingress, trust towards the core. DSCP RFC 2474, AF 2597, EF 3246 |
❌ QoS as a substitute for capacity; ❌ trusting the user's DSCP |
| Management plane |
Physical OOB, centralised AAA (TACACS+ for per-command authorisation; RADIUS where it does not reach), SSH with keys, SNMPv3 authPriv |
❌ Telnet, management HTTP, SNMP v1/v2c, the public community, shared accounts |
3. Design conventions
Layer 2 and its limits
- The broadcast domain is the blast radius: a loop, a storm or a duplicate MAC
affect everything sharing the VLAN. Size by impact, not by convenience.
- STP is the safety net, not the plan. It must be enabled and correctly parameterised, but a design
whose convergence depends on STP recalculating accepts a failure of tens of seconds and a
topology nobody can draw from memory. Convergence comes from routing to the access layer, LACP and MLAG.
- MSTP when there are many VLANs and they are spread across instances; then the region (name, revision and
VLAN→instance mapping) must be identical on every switch: a mismatch splits the region
silently.
- MLAG failure modes to be decided before buying it: peer-link partition (split
brain), keepalive loss with a live peer, peer software upgrade, and state
synchronisation (MAC, ARP/ND, IGMP). They are verified in the lab, not in the brochure.
IGP choice — real criteria, not preference
- OSPF with real areas (stub/totally stubby where applicable) and boundary summarisation, which is
what bounds the reach of a flap.
- IS-IS if you want an IGP indifferent to the address family and with less surface (it does not
run over IP). Cost: fewer people know how to operate it — a legitimate design criterion.
- BGP in a campus with a routed fabric or multi-tenant with VRFs; its strength is policy, not
convergence (which is compensated with BFD).
- One IGP for topology, BGP for policy. Redistributing between them with no filters, no tags and no
metric control is the classic way to create a permanent loop.
BGP: what has to be decided explicitly
- Decision order (verify the vendor's exact one): weight →
LOCAL_PREF → locally
originated → AS_PATH → ORIGIN → MED → eBGP over iBGP → IGP cost to the next hop →
tie-break. In practice what gets touched is: LOCAL_PREF to choose the exit, AS_PATH prepending
to influence the inbound (a blunt tool), MED only with the same neighbour.
- Communities as a policy mechanism, not as a comment: the edge marks on ingress
(origin, neighbour type, geography, advertisement intent) and the rest of the policy reads those
marks. Large communities (RFC 8092) with 4-byte ASNs; the standard ones (RFC 1997) fall
short. Document the community dictionary as a contract if you do peering.
- Aggregation: advertise the aggregate and filter the specifics unless there is a written reason; deaggregating out of
habit fattens everybody's global table. Watch out for the black hole of an aggregate with no discard route.
- Outbound filtering — the lesson of the hijacks: the incidents of traffic redirection
and crypto-asset theft via BGP were not sophisticated attacks, but a prefix
advertised by someone who should not have and a neighbour who did not filter. The defence that works is boring:
an explicit outbound filter, an inbound filter by expected prefixes,
maximum-prefix with an action and
ROV with invalid=reject. Signing ROAs protects everybody else; validating is what protects you.
- IRR: still the basis for automatic filter generation in peering, but its quality
is uneven (stale objects,
as-sets with no authority that expand to thousands of prefixes, with no
ownership validation). Use it together with RPKI, preferring RIR registries and with an explicit
expansion limit.
- MANRS: alive; secretariat and operations moved from the Internet Society to the Global Cyber Alliance
(2024), with ISOC keeping funding and training. Use it as an auditable
checklist (filtering, antispoofing, coordination, validated global data), not as a badge.
IPv6 and QoS
- The IPv6 plan is done once; redoing it with firewall, DNS and monitoring already written costs a
multiple (the concrete plan belongs to
networking-standards). The real risk is not having no IPv6: it is
having it half-done — enabled by default on the systems and with no policy equivalent to IPv4.
- QoS distributes scarcity; it does not create capacity. If the link is saturated in a sustained way, it only
decides who suffers. Size first, prioritise after. It is useful for traffic sensitive to
latency and jitter and for protecting the control plane; marking end to end with no agreement across
every hop —and transit usually rewrites DSCP— is decorative.
4. Quality gates
- A routing change is tested in the lab: BGP policy and redistribution have
effects that only show up with the full topology, and their failure is global and silent. A virtual
lab with the same NOS versions (tooling in
network-automation-standards).
- A window with timed rollback and an OOB console open on every remote routing or
filtering change; abort criteria written before starting.
- Negative tests: after touching BGP policy, verify what is advertised from an external view
(looking glass or collector), not just what is received. A filter tested only through the happy path is
not tested.
- Measured convergence: bring down the primary link or node and measure the time until application
traffic recovers, not until the protocol says "up". An unexercised failover does not
count, and the way back fails more often than the way out.
- Drift detection against the SoT as a periodic gate (mechanics in
network-automation-standards).
5. Management and control plane security
- A separate, out-of-band management plane: dedicated VLAN/network, with no route from user networks,
reachable only via a bastion. It is the first target after the initial compromise, and it is also what
saves you when the change that broke the network is yours.
- Centralised AAA with named accounts: TACACS+ on network devices when you want
per-command authorisation and accounting (RADIUS does not provide it); RADIUS for 802.1X. A single local
emergency account, held in the secrets manager (
secrets-management-standards) and rotated after
each use.
- Protocols, no nuance: SSH with keys and SNMPv3 authPriv. Telnet, management HTTP
and SNMP v1/v2c are FORBIDDEN (a cleartext community = a credential on the wire; with write access = control of
the device). Unnecessary services switched off; CDP/LLDP off untrusted ports.
- 802.1X (IEEE 802.1X-2020) on wired access and WPA3-Enterprise on wireless, with dynamic VLAN,
quarantine and an explicit policy for what happens if the supplicant fails: fail-open turns the
control into theatre; fail-closed demands a plan for printers and equipment with no supplicant (MAB, which is weak
and must be a registered exception).
port-security where 802.1X does not reach; MACsec on links between
closets or buildings when the medium is not trusted.
- CoPP is not an extra: a rate policy per class towards the CPU (routing, management, ARP/ND, ICMP,
the rest). Without it, anyone with access to the segment takes down the control plane with trivial traffic and
the device stops converging exactly when it is most needed. Verify the limits in the lab: a
CoPP that is too aggressive breaks routing itself.
- Lifecycle: the vendor's CIS baseline, firmware reviewed quarterly and on an exploitable CVE
(
vulnerability-management-standards), inventory with an end-of-support date. A switch out of
support has a replacement plan or it is a hole, but it is not a deferrable decision.
6. Operation and capacity
- Signals that are always watched (platform in
observability-standards): errors and discards per
interface, utilisation by percentiles, STP topology changes (TCN), stability of IGP adjacencies
and BGP sessions, prefixes received per neighbour against maximum-prefix, ROV result, optics
and control plane CPU. A rising TCN counter is a finding, not noise: behind it there is usually
a port with no portfast/edge or a flapping link.
- Capacity with data: percentiles of sustained utilisation, action threshold around 70%, and a
horizon longer than the purchase and installation lead time. Port and transit cost in
finops-standards.
- Configuration as code: it lives in the repository and is applied from there; per-device backups
versioned and restorable (mechanics in
network-automation-standards).
- Runbooks with an owner: uplink loss, layer 2 loop, a route leak of your own or of a neighbour,
MLAG failure, control plane saturation, management certificate expiry.
7. Sustainability and prohibitions
- Cadence: NOS and firmware reviewed quarterly; nothing without vendor support unless there is a written
exit date; stable/LTS branches over the latest feature.
- Real deprecation: a retired VLAN, BGP session or rule is removed from the configuration, the SoT and the
documentation. "Just in case" is debt with compound interest.
FORBIDDEN
- ❌ Relying on STP to converge; or disabling it "because there is MLAG".
- ❌ An access port without
bpduguard, portfast/edge and storm-control.
- ❌ Extending a VLAN between buildings or sites for convenience (for DCI, see
datacenter-fabric-standards).
- ❌ Static aggregation (
on) instead of LACP.
- ❌ Deploying MLAG without lab-testing split brain, keepalive loss and peer upgrade.
- ❌ A chassis stack as the only redundancy in the core or distribution layer.
- ❌ Overlaying VRRP on an MLAG active-active gateway without understanding what each state gains.
- ❌ An entire IGP in
area 0, or redistributing with no filter, no tag and no metric control.
- ❌ An eBGP session with no inbound and outbound filter, no
maximum-prefix with an action, or trusting
the vendor's default instead of RFC 8212.
- ❌ Advertising to the Internet what was learned from the Internet (transit leak) for lack of an outbound filter.
- ❌ RPKI in "mark only" indefinitely, or publishing ROAs and not validating.
- ❌ Generating filters from an IRR
as-set with no expansion limit and no review.
- ❌ An edge with no BCP 38/84 and no uRPF.
- ❌ IPv6 without filtering, logging and monitoring parity with IPv4.
- ❌ Trusting the user's DSCP, or using QoS to paper over a badly sized link.
- ❌ Network equipment without CoPP.
- ❌ Telnet, management HTTP, SNMP v1/v2c, default communities, factory credentials, shared
accounts.
- ❌ A management interface reachable from a user network or from the Internet.
- ❌ 802.1X in permanent fail-open, or generalised MAB with no register of exceptions.
- ❌ A routing change with no prior lab, no timed rollback and no OOB console.
- ❌ Declaring that a failover "works" without having exercised and measured it with real traffic.
8. Mandatory web verification
Methodology: the RFCs in this document were verified one by one against the rfc-editor.org
JSON API (title, status, date, obsoletes/obsoleted_by), not against HTML summaries.
RFCs verified Aug 2026, with the corrections they introduced. VRRPv3 = RFC 9568 (May 2024),
which obsoletes RFC 5798 — citing 5798 today is a factual error. ROA profile = RFC 9582
(May 2024), which obsoletes RFC 6482. RPKI-RTR v1 = RFC 8210 (Sep 2017; RFC 6810 is v0,
updated by 8210). Origin validation = RFC 6811, updated by 8481 and 8893;
maxLength = RFC 9319 (BCP). BGP roles / OTC = RFC 9234 (May 2022). BGP-4 = RFC 4271
(Draft Standard), updated by twelve RFCs among them 8212 (eBGP with no policy does not propagate) and
7606. Communities = RFC 1997; large communities = RFC 8092. BFD = RFC 5880 / 5881 /
5883. GTSM = RFC 5082. BGP Ops & Security = RFC 7454 (BCP). Antispoofing = RFC 2827
(BCP 38) and RFC 3704 (BCP 84), updated by RFC 8704 (BCP). IS-IS: ISO/IEC 10589 with
RFC 1195, IPv6 in RFC 5308. QoS: 2474 / 2597 / 3246.
ASPA is NOT an RFC: draft-ietf-sidrops-aspa-profile rev -29 and …-verification rev -27, both
with activity on 3 Aug 2026. IEEE: 802.1AX-2020 (aggregation; amendment 802.1AXdz-2025,
YANG) and 802.1X-2020; RSTP (ex-802.1w) and MSTP (ex-802.1s) are no longer independent standards,
they are consolidated into 802.1Q (2022 edition plus amendments).
Declared discrepancy — RPKI ROV enforcement: the sources do not agree because they measure different
things. networking-standards records ~12.3% of ASes applying full ROV (Jun 2026); an
arXiv article from Mar 2026 gives "less than 30% of user addresses in networks that filter
invalids". Both can be true at once. Moreover, the NIST RPKI Monitor
(rpki-monitor.antd.nist.gov) explicitly warns that it does not measure which networks actually filter.
Do not cite a single "ROV deployment" figure without saying what it measures.
Declared gaps — do NOT fill them from memory:
- Current figures for ROA coverage and ROV enforcement: second-hand here; verify at
NIST RPKI Monitor, RIPE NCC and APNIC.
- MANRS participants and the status of its programmes: the handover of the secretariat from ISOC to the
Global Cyber Alliance (2024) is on record, and "more than 1,300 participants" cited at the community meeting
of 17 Jun 2026 in an article by MANRS itself; not independently verified.
- Exact order of the BGP decision process per vendor: every implementation adds steps
(
weight, MED across different ASes, multipath, deterministic bestpath). Verify in their documentation.
- MLAG behaviour under split brain, keepalive loss and peer upgrade:
specific to each implementation, not verified here. It is checked in the lab.
- Current editions of IEEE 802.1Q and its amendments: from a search, not cross-checked
against the IEEE SA catalogue.
- Version, maintenance and licence of Routinator, rpki-client and StayRTR: not verified.
- Relative reliability of each IRR and their object validation policies: not verified.
If the web contradicts this document, the web wins — flag the discrepancy.
1---2name: routing-switching-standards3description: Campus and edge switching/routing design decisions that outlive the hardware. Use when choosing between RSTP/MSTP and a routed access layer, sizing a broadcast domain, configuring BPDU guard, root guard, storm control, portfast/edge, LACP bundles, MLAG/vPC/MC-LAG or a switch stack, first-hop redundancy with VRRPv3 (RFC 9568), HSRP or GLBP and its interaction with MLAG, picking OSPF versus IS-IS versus BGP as the campus IGP, writing eBGP import/export policy, route-maps, prefix-lists, as-path filters, maximum-prefix, BGP communities and large communities (RFC 8092), aggregation and no-export, RFC 8212 default-deny eBGP, RPKI route origin validation with Routinator/rpki-client/StayRTR and invalid=reject, ROAs (RFC 9582), RPKI-RTR (RFC 8210), IRR objects and as-set expansion, MANRS conformance, prefix hijacks and route leaks (RFC 9234 OTC), BCP 38/84 and uRPF (RFC 8704), BFD (RFC 5880/5881/5883), GTSM (RFC 5082), dual-stack IPv6 rollout planning, DSCP trust boundaries and queueing policy, CoPP/control-plane poli4---56# Switching and routing standards — campus and edge78Criteria verified as of **August 2026**. Re-verify on the web before committing to anything (§8).910## 1. Scope and triggers1112Applies to **designing and operating the switched and routed campus, site and edge network**: sizing the13broadcast domain, STP and its real role today, loop protection, aggregation and multi-chassis14systems, the layer 2/layer 3 boundary, first-hop redundancy, IGP choice, **BGP policy in15depth**, global routing hygiene (RPKI, IRR, MANRS), IPv6 rollout, QoS with judgement, and16hardening of the management and control planes.1718Triggers: `spanning-tree`, `rstp`/`mstp`, `bpduguard`, `root guard`, `storm-control`,19`port-channel`/`lacp`, `mlag`/`vpc`/`stack`, `vrrp`/`hsrp`/`glbp`, `route-map`, `prefix-list`,20`as-path access-list`, `maximum-prefix`, `community`/`large-community`, `aggregate-address`,21`rpki`/`origin-validation`, `routinator`, `rpki-client`, `stayrtr`, `as-set`, `MANRS`, `bfd`,22`ttl-security`, `copp`, `dot1x`, `macsec`, `snmpv3`, `tacacs+`, "hijack", "route leak", "DSCP".2324**Not applicable**: each skill **decides** a different thing —25`networking-standards` (**trunk, the mother skill**: it decides **addressing and IPAM, which VLAN exists,26BGP/OSPF fundamentals, proxies and load balancing, host overlays, MTU/MSS and NetBox as SoT**; none of that27is reopened here, here we decide **how the switched network converges and what exactly the BGP policy28says**); `network-troubleshooting-standards` (**decides the reactive method** when something is already broken —29here the design and the proactive operation, and every structural finding of theirs comes back here);30`datacenter-fabric-standards` (**decides the DC fabric**: Clos, VXLAN/EVPN, lossless networking);31`network-automation-standards` (**decides how a change is generated, tested and applied** — here, **what32the configuration must say**); `firewall-policy-standards` (**decides which flow is permitted between zones33and under what governance**); `iac-standards` (**decides Terraform and Ansible as tools**);34`ot-ics-security-standards` (**decides the plant network, and that is not a campus**: its access35defaults —`storm-control`, `bpduguard`, 802.1X on every port, L3 to the access layer— break a36PROFINET/MRP ring and leave a PLC or an HMI with no supplicant off the network. **Here the criteria for campus and37for the control centre; the industrial segment is designed with theirs, and there *Safety* rules over38availability**); `observability-standards` (**decides what is measured and at what threshold it alerts**);39`identity-access-management-standards` (**decides corporate identity**; here only its consumption in device40AAA); `finops-standards` (transit and ports). Also boundary: `dns-standards`,41`vpn-standards`, `onprem-standards` (umbrella), `kubernetes-standards`, `secrets-management-standards`,42`sre-practice-standards`, `linux-hardening-standards`, `vulnerability-management-standards`,43`offensive-security-standards` (**this skill is defensive**), and `network-vendors-standards`,44`wan-legacy-standards`, `telco-5g-standards`, `high-speed-interconnect-standards` and45`datacenter-facilities-standards`.4647**Guiding principle**: **a layer 2 decision is paid for over ten years.** Design so that **convergence48does not depend on STP** and so that **no prefix leaves without explicit authorisation**.4950## 2. Default decisions5152> Verify status and version on the web before pinning anything (§8). The RFCs in this table are53> verified one by one against the `rfc-editor.org` JSON API.5455| Decision | Default | Justifiable alternative / vetoed |56|---|---|---|57| L2/L3 boundary | **Routed to the access layer**: the broadcast domain dies in the closet and the IGP converges, not STP | Centralised gateway **only** with a real L2 mobility requirement; never "because it was always done that way" |58| STP | **RSTP/MSTP enabled as a safety net**, with primary and secondary root pinned | ❌ STP as the design's **convergence mechanism**; ❌ root elected by MAC; ❌ disabling it "to go faster" |59| Loop protection | `bpduguard` + `rootguard` + `portfast/edge` + `storm-control` on **every** access port | Without BPDU guard, a consumer switch under a desk reconfigures your topology |60| Aggregation | **LACP active** (IEEE 802.1AX-2020) | ❌ `static`/`on`: it detects neither crossed cabling nor a half-dead member |61| Multi-chassis | **MLAG/vPC** with a peer link and a **dual** keepalive over a different path | Stack: **one control plane ⇒ one upgrade ⇒ one failure**; acceptable at the access layer, not in the core |62| First hop | **VRRPv3 — RFC 9568** (May 2024, **obsoletes RFC 5798**), IPv4+IPv6, explicit priorities and preempt | HSRP/GLBP only in a single-vendor estate. With MLAG, **the MLAG's own active-active gateway**; VRRP on top duplicates state |63| Campus IGP | **OSPF** for ubiquity and for the people who operate it | **IS-IS** (ISO 10589, RFC 1195; IPv6 in RFC 5308) for address-family independence and scaling; **BGP** if the topology is a routed fabric. ❌ Everything in `area 0` |64| Failure detection | **BFD — RFC 5880**, single-hop **5881**, multihop **5883**, tied to the IGP and to BGP | Relying on IGP hellos: seconds versus milliseconds |65| eBGP | **RFC 8212**: with no policy, nothing is advertised and nothing is accepted. Inbound **and** outbound filter on every session | ❌ A session with no `prefix-list`/`route-map` in both directions, no `maximum-prefix` with an action, no `as-path` filter |66| Global hygiene | **ROV with your own validator** (Routinator / rpki-client / StayRTR), **invalid = reject**; your own ROAs (**RFC 9582** profile, obsoletes 6482); RPKI-RTR **RFC 8210** | ROV in "mark only" indefinitely. A wide `maxLength`: **RFC 9319 (BCP)** advises against it |67| Antispoofing | **BCP 38 (RFC 2827)** and **BCP 84 (RFC 3704)**; strict uRPF where the path is symmetric, **RFC 8704** where it is not | ❌ An edge with no source filtering |68| Anti-leak | **RFC 9234** (BGP roles and the Only-to-Customer attribute) | ASPA **is still an Internet-Draft** (§8): useful, not the sole control |69| Session protection | **GTSM (RFC 5082)** on direct eBGP, plus BGP and IGP session authentication | A session exposed to the Internet with neither GTSM nor authentication |70| IPv6 | **Dual stack from day one**, with **parity** in filtering, logging and monitoring | ❌ "We'll do it later": the retrofit costs more, and the lack of parity is where the hole appears |71| QoS | **Trust only at the edge**: mark/remark on ingress, trust towards the core. DSCP **RFC 2474**, AF **2597**, EF **3246** | ❌ QoS as a substitute for capacity; ❌ trusting the user's DSCP |72| Management plane | **Physical OOB**, centralised AAA (**TACACS+** for per-command authorisation; RADIUS where it does not reach), SSH with keys, **SNMPv3 authPriv** | ❌ Telnet, management HTTP, SNMP v1/v2c, the `public` community, shared accounts |7374## 3. Design conventions7576**Layer 2 and its limits**77- **The broadcast domain is the blast radius**: a loop, a storm or a duplicate MAC78 affect everything sharing the VLAN. Size by impact, not by convenience.79- **STP is the safety net, not the plan.** It must be enabled and correctly parameterised, but a design80 whose convergence depends on STP recalculating accepts a failure of tens of seconds and a81 topology nobody can draw from memory. Convergence comes from routing to the access layer, LACP and MLAG.82- **MSTP** when there are many VLANs and they are spread across instances; then the **region (name, revision and83 VLAN→instance mapping) must be identical on every switch**: a mismatch splits the region84 silently.85- **MLAG failure modes to be decided before buying it**: peer-link partition (*split86 brain*), keepalive loss with a live peer, peer software upgrade, and state87 synchronisation (MAC, ARP/ND, IGMP). They are verified in the lab, not in the brochure.8889**IGP choice — real criteria, not preference**90- **OSPF** with real areas (stub/totally stubby where applicable) and boundary summarisation, which is91 what bounds the reach of a *flap*.92- **IS-IS** if you want an IGP indifferent to the address family and with less surface (it does not93 run over IP). Cost: fewer people know how to operate it — a legitimate design criterion.94- **BGP** in a campus with a routed fabric or multi-tenant with VRFs; its strength is **policy**, not95 convergence (which is compensated with BFD).96- **One IGP for topology, BGP for policy.** Redistributing between them with no filters, no tags and no97 metric control is the classic way to create a permanent loop.9899**BGP: what has to be decided explicitly**100- **Decision order** (verify the vendor's exact one): weight → `LOCAL_PREF` → locally101 originated → `AS_PATH` → `ORIGIN` → `MED` → eBGP over iBGP → IGP cost to the next hop →102 tie-break. **In practice what gets touched is**: `LOCAL_PREF` to choose the exit, `AS_PATH` prepending103 to influence the inbound (a blunt tool), `MED` only with the same neighbour.104- **Communities as a policy mechanism, not as a comment**: the edge **marks** on ingress105 (origin, neighbour type, geography, advertisement intent) and the rest of the policy **reads** those106 marks. **Large communities (RFC 8092)** with 4-byte ASNs; the standard ones (RFC 1997) fall107 short. Document the community dictionary as a contract if you do peering.108- **Aggregation**: advertise the aggregate and filter the specifics unless there is a written reason; deaggregating out of109 habit fattens everybody's global table. Watch out for the black hole of an aggregate with no discard route.110- **Outbound filtering — the lesson of the hijacks**: the incidents of traffic redirection111 and crypto-asset theft via BGP were not sophisticated attacks, but **a prefix112 advertised by someone who should not have and a neighbour who did not filter**. The defence that works is boring:113 an explicit outbound filter, an inbound filter by expected prefixes, `maximum-prefix` with an action and114 ROV with invalid=reject. **Signing ROAs protects everybody else; validating is what protects you.**115- **IRR**: still the basis for automatic filter generation in peering, but **its quality116 is uneven** (stale objects, `as-set`s with no authority that expand to thousands of prefixes, with no117 ownership validation). Use it **together with** RPKI, preferring RIR registries and with an explicit118 expansion limit.119- **MANRS**: alive; secretariat and operations moved from the Internet Society to the **Global Cyber Alliance**120 (2024), with ISOC keeping funding and training. Use it as an **auditable121 checklist** (filtering, antispoofing, coordination, validated global data), not as a badge.122123**IPv6 and QoS**124- The IPv6 plan is done **once**; redoing it with firewall, DNS and monitoring already written costs a125 multiple (the concrete plan belongs to `networking-standards`). **The real risk is not having no IPv6: it is126 having it half-done** — enabled by default on the systems and with no policy equivalent to IPv4.127- **QoS distributes scarcity; it does not create capacity.** If the link is saturated in a sustained way, it only128 decides who suffers. Size first, prioritise after. It is useful for traffic sensitive to129 latency and jitter and for protecting the control plane; marking end to end with no agreement across130 every hop —and transit usually rewrites DSCP— is decorative.131132## 4. Quality gates133134- **A routing change is tested in the lab**: BGP policy and redistribution have135 effects that only show up with the full topology, and their failure is global and silent. A virtual136 lab with the same NOS versions (tooling in `network-automation-standards`).137- **A window with timed rollback and an OOB console open** on every remote routing or138 filtering change; abort criteria written **before** starting.139- **Negative tests**: after touching BGP policy, verify **what is advertised** from an external view140 (looking glass or collector), not just what is received. A filter tested only through the happy path is141 not tested.142- **Measured convergence**: bring down the primary link or node and measure the time until **application143 traffic** recovers, not until the protocol says "up". An unexercised failover does not144 count, and the way back fails more often than the way out.145- **Drift detection** against the SoT as a periodic gate (mechanics in `network-automation-standards`).146147## 5. Management and control plane security148149- **A separate, out-of-band management plane**: dedicated VLAN/network, with no route from user networks,150 reachable only via a bastion. It is **the first target after the initial compromise**, and it is also what151 saves you when the change that broke the network is yours.152- **Centralised AAA with named accounts**: **TACACS+** on network devices when you want153 **per-command** authorisation and accounting (RADIUS does not provide it); RADIUS for 802.1X. A single local154 emergency account, held in the secrets manager (`secrets-management-standards`) and rotated after155 each use.156- **Protocols, no nuance**: **SSH** with keys and **SNMPv3 authPriv**. **Telnet, management HTTP157 and SNMP v1/v2c are FORBIDDEN** (a cleartext community = a credential on the wire; with write access = control of158 the device). Unnecessary services switched off; CDP/LLDP off untrusted ports.159- **802.1X (IEEE 802.1X-2020)** on wired access and WPA3-Enterprise on wireless, with dynamic VLAN,160 quarantine and an **explicit policy for what happens if the supplicant fails**: fail-open turns the161 control into theatre; fail-closed demands a plan for printers and equipment with no supplicant (MAB, which is weak162 and must be a registered exception). `port-security` where 802.1X does not reach; **MACsec** on links between163 closets or buildings when the medium is not trusted.164- **CoPP is not an extra**: a rate policy per class towards the CPU (routing, management, ARP/ND, ICMP,165 the rest). Without it, anyone with access to the segment takes down the control plane with trivial traffic and166 the device stops converging exactly when it is most needed. Verify the limits in the lab: a167 CoPP that is too aggressive breaks routing itself.168- **Lifecycle**: the vendor's CIS baseline, firmware reviewed quarterly and on an exploitable CVE169 (`vulnerability-management-standards`), inventory with an end-of-support date. A switch out of170 support has a replacement plan or it is a hole, but it is not a deferrable decision.171172## 6. Operation and capacity173174- **Signals that are always watched** (platform in `observability-standards`): errors and discards per175 interface, utilisation by percentiles, **STP topology changes (TCN)**, stability of IGP adjacencies176 and BGP sessions, prefixes received per neighbour against `maximum-prefix`, ROV result, optics177 and **control plane CPU**. A rising TCN counter is a finding, not noise: behind it there is usually178 a port with no `portfast/edge` or a flapping link.179- **Capacity with data**: percentiles of sustained utilisation, action threshold around 70%, and a180 horizon longer than the purchase and installation lead time. Port and transit cost in `finops-standards`.181- **Configuration as code**: it lives in the repository and is applied from there; per-device backups182 versioned and restorable (mechanics in `network-automation-standards`).183- **Runbooks with an owner**: uplink loss, layer 2 loop, a route leak of your own or of a neighbour,184 MLAG failure, control plane saturation, management certificate expiry.185186## 7. Sustainability and prohibitions187188- **Cadence**: NOS and firmware reviewed quarterly; nothing without vendor support unless there is a written189 exit date; stable/LTS branches over the latest feature.190- **Real deprecation**: a retired VLAN, BGP session or rule is removed from the configuration, the SoT and the191 documentation. "Just in case" is debt with compound interest.192193**FORBIDDEN**194- ❌ Relying on STP to converge; or disabling it "because there is MLAG".195- ❌ An access port without `bpduguard`, `portfast/edge` and `storm-control`.196- ❌ Extending a VLAN between buildings or sites for convenience (for DCI, see `datacenter-fabric-standards`).197- ❌ **Static** aggregation (`on`) instead of LACP.198- ❌ Deploying MLAG without lab-testing *split brain*, keepalive loss and peer upgrade.199- ❌ A chassis stack as the only redundancy in the core or distribution layer.200- ❌ Overlaying VRRP on an MLAG active-active gateway without understanding what each state gains.201- ❌ An entire IGP in `area 0`, or redistributing with no filter, no tag and no metric control.202- ❌ An eBGP session with no inbound **and** outbound filter, no `maximum-prefix` with an action, or trusting203 the vendor's default instead of RFC 8212.204- ❌ Advertising to the Internet what was learned from the Internet (transit leak) for lack of an outbound filter.205- ❌ RPKI in "mark only" indefinitely, or publishing ROAs and not validating.206- ❌ Generating filters from an IRR `as-set` with no expansion limit and no review.207- ❌ An edge with no BCP 38/84 and no uRPF.208- ❌ IPv6 without filtering, logging and monitoring parity with IPv4.209- ❌ Trusting the user's DSCP, or using QoS to paper over a badly sized link.210- ❌ Network equipment without CoPP.211- ❌ Telnet, management HTTP, SNMP v1/v2c, default communities, factory credentials, shared212 accounts.213- ❌ A management interface reachable from a user network or from the Internet.214- ❌ 802.1X in permanent fail-open, or generalised MAB with no register of exceptions.215- ❌ A routing change with no prior lab, no timed rollback and no OOB console.216- ❌ Declaring that a failover "works" without having exercised and **measured** it with real traffic.217218## 8. Mandatory web verification219220**Methodology**: the RFCs in this document were verified **one by one** against the `rfc-editor.org`221JSON API (title, status, date, `obsoletes`/`obsoleted_by`), not against HTML summaries.222223**RFCs verified Aug 2026, with the corrections they introduced**. **VRRPv3 = RFC 9568** (May 2024),224which **obsoletes RFC 5798** — citing 5798 today is a factual error. **ROA profile = RFC 9582**225(May 2024), which **obsoletes RFC 6482**. **RPKI-RTR v1 = RFC 8210** (Sep 2017; RFC 6810 is v0,226*updated by* 8210). **Origin validation = RFC 6811**, updated by **8481** and **8893**;227**`maxLength` = RFC 9319** (BCP). **BGP roles / OTC = RFC 9234** (May 2022). **BGP-4 = RFC 4271**228(*Draft Standard*), updated by twelve RFCs among them **8212** (eBGP with no policy does not propagate) and229**7606**. **Communities = RFC 1997**; **large communities = RFC 8092**. **BFD = RFC 5880 / 5881 /2305883**. **GTSM = RFC 5082**. **BGP Ops & Security = RFC 7454** (BCP). **Antispoofing = RFC 2827231(BCP 38)** and **RFC 3704 (BCP 84)**, updated by **RFC 8704** (BCP). **IS-IS**: ISO/IEC 10589 with232**RFC 1195**, IPv6 in **RFC 5308**. **QoS**: **2474 / 2597 / 3246**.233**ASPA is NOT an RFC**: `draft-ietf-sidrops-aspa-profile` rev **-29** and `…-verification` rev **-27**, both234with activity on **3 Aug 2026**. **IEEE**: **802.1AX-2020** (aggregation; amendment 802.1AXdz-2025,235YANG) and **802.1X-2020**; **RSTP (ex-802.1w) and MSTP (ex-802.1s) are no longer independent standards**,236they are consolidated into 802.1Q (2022 edition plus amendments).237238**Declared discrepancy — RPKI ROV enforcement**: the sources do not agree because **they measure different239things**. `networking-standards` records ~12.3% of **ASes** applying full ROV (Jun 2026); an240arXiv article from Mar 2026 gives "less than 30% of **user addresses** in networks that filter241invalids". Both can be true at once. Moreover, the **NIST RPKI Monitor**242(`rpki-monitor.antd.nist.gov`) **explicitly warns that it does not measure which networks actually filter**.243Do not cite a single "ROV deployment" figure without saying what it measures.244245**Declared gaps — do NOT fill them from memory**:2461. **Current figures for ROA coverage and ROV enforcement**: second-hand here; verify at247 NIST RPKI Monitor, RIPE NCC and APNIC.2482. **MANRS participants and the status of its programmes**: the handover of the secretariat from ISOC to the249 **Global Cyber Alliance** (2024) is on record, and "more than 1,300 participants" cited at the community meeting250 of **17 Jun 2026** in an article by MANRS itself; **not independently verified**.2513. **Exact order of the BGP decision process per vendor**: every implementation adds steps252 (`weight`, `MED` across different ASes, multipath, deterministic bestpath). Verify in their documentation.2534. **MLAG behaviour under split brain, keepalive loss and peer upgrade**:254 **specific to each implementation**, not verified here. It is checked in the lab.2555. **Current editions of IEEE 802.1Q and its amendments**: from a search, **not cross-checked**256 against the IEEE SA catalogue.2576. **Version, maintenance and licence of Routinator, rpki-client and StayRTR**: **not verified**.2587. **Relative reliability of each IRR** and their object validation policies: **not verified**.259260If the web contradicts this document, **the web wins** — flag the discrepancy.