a positive test proves Ze does what the requirement demands and a negative one proves it refuses what the requirement forbids
RFC 8665 - OSPF Extensions for Segment Routing
Every requirement this repository extracted from RFC 8665, the tests bound to it, and what a reader has verified about them. This summary is enrolled and gated by ./le rfc check.
Overview
Positive
what Ze has
the requirement admits no counter-case, so one polarity plus a recorded reason is the whole proof available for it
one direction is tested, the other is neither tested nor excused, and nothing states which
a red was observed once under a recorded procedure, and the unit, the claim and the producer it rested on still hash to what was recorded. The break is not re-run. A test pair is not a proof until one has been observed
Neutral
measures that are neither good news nor bad
MUST-level requirements the gate HOLDS. A population, not a result: the shares beside it are what says how Ze stands
an obligation that does not bind Ze. A {not-applicable} annotation says it never bound; a {feature-declined} annotation says its condition is an optional feature Ze does not offer, and quotes the RFC sentence that makes it optional. Scope, not coverage: it stays in the denominator every share on this page is taken over
a {not-applicable} annotation says the obligation does not bind Ze, so no test is owed for it. It stays in the denominator every share here is taken over
a {lower-layer} annotation says a layer under Ze performs the behavior, on state Ze installs into that layer, and names the producer that installs it. The obligation binds Ze and is met; Ze proves none of it, because its own boundary carries no value the behavior reads
a {feature-declined} annotation says the obligation is conditional on a feature the RFC makes optional and Ze does not offer, and it quotes the sentence that makes it optional. The condition is false, so nothing is owed and nothing is missing. It stays in the denominator every share here is taken over
Negative
what Ze owes
no test carries the requirement id, whether or not a gap states why
The 7 shares marked as a part above are the whole of the 47 gated MUSTs: they add to 100%. Proven by a recorded break is a share of TAGGED UNITS, a different population, so it is not one of them.
How to read the colors
A color names what the measure MEANS, not how well Ze scores on it. Green is a good outcome at any value, red is a bad one, and neither a population nor a scope count is an outcome, so both take no color. The number under the label is what says how far Ze has got.
| Card | Tone here | Why that color |
|---|---|---|
| Gated MUSTs | neutral | no color: a population is a scale, and a larger one is neither good news nor bad. It is the accounting total |
| Out of scope | neutral | no color: an obligation that never bound Ze is neither an achievement nor a failure, and counting it either way would be a claim |
| Tested both ways | ok | green at every value: a test pair is the outcome this gate exists to produce, and the share under the label is what says how far Ze has got |
| One polarity plus reason | ok | green at every value: where no counter-case exists, one polarity IS the complete answer, and a recorded reason is what the gate demands beside it |
| One polarity, unexcused | ok | green at zero, RED above it: half a proof with no reason for the other half |
| No test at all | bad | green at zero, RED above it: a binding obligation nothing exercises is a claim with nothing behind it, whether or not a reason is stated |
| Not applicable | neutral | no color: an obligation that never bound Ze is neither an achievement nor a failure, and counting it either way would be a claim |
| Met below Ze | neutral | no color: an obligation met below Ze is neither a test Ze wrote nor work Ze owes, and the two green shares above are what says how much Ze proves itself |
| Optional feature declined | neutral | no color: an obligation whose condition Ze never meets is neither an achievement nor a failure. The absent FEATURE is disclosed on the RFC's own status row, as an implementation gap a later scope decision can revisit |
| Proven by a recorded break | ok | green at every value: an observed break is the outcome the discrimination gate exists to produce. The denominator is TAGGED UNITS, not obligations, so this share is not one of the parts above |
| Audit verdicts | warn | RED on the first weak, wrong or unimplemented verdict, amber while a verdict is no longer current or a gated MUST is unjudged, green when every one is judged sound and current |
At a glance
| Field | Value |
|---|---|
| Public status | Partial |
| Enrolment | Enrolled |
| Requirements | 82 |
| Gated MUST-level | 47 |
| Not applicable, so out of scope | 0 |
| Declared gaps | 14 |
| Gated with no test | 0 |
| Nightly-only evidence | 0 |
| Test tags | 61 |
| Tagged units | 61 |
| Recorded audit verdicts | 0 |
| Discrimination records | 0 |
| Summary | rfc/short/rfc8665.md |
| Requirement shard | rfc/requirements/rfc8665.md |
| RFC text | rfc/full/rfc8665.txt |
Enrolment
Enrolled: OSPF Extensions for Segment Routing
What the public ledger says
Status: Partial
What the ledger says is covered
- OSPFv2 Segment Routing over the RFC 7770 Router Information LSA and the RFC 7684 Extended Prefix / Extended Link Opaque LSAs: the SR-Algorithm TLV (always Algorithm 0), one SID/Label Range TLV per SRGB range and one SR Local Block TLV per SRLB range, all area-scoped, each carrying exactly one SID/Label sub-TLV
- reception enforcing Range Size greater than 0, exactly one SID/Label sub-TLV, the first-occurrence rule for a repeated SR-Algorithm or SRMS Preference TLV within one LSA, and the reserved-label hardening
- SRGB index-to-label arithmetic in advertised range order
- Prefix-SID, Adj-SID and LAN-Adj-SID sub-TLV codecs with reserved-bit and V/L validation
- the NP/M/E outgoing-label truth table applied at the penultimate hop with the next-hop router's SRGB
- algorithm-not-advertised and duplicate Prefix-SID rejection
- SRLB-allocated Adj-SIDs installed and withdrawn with the adjacency. Requirements bound per line in
rfc/short/rfc8665.mdand gated by./le rfc check.
What the ledger says remains
Fourteen MUST gaps, each annotated in rfc/short/rfc8665.md.
Multi-LSA capability resolution: RFC8665-3.1-4, 3.1-5, 3.4-2, 3.4-3 (no flooding-scope or Instance-ID tie-break across RI LSAs; the last LSA read wins, internal/plugins/ospf/sr_install.go, and the received SRMS preference is decoded but unused).
Overlapping received ranges: RFC8665-3.2-8 (concatenated with no overlap detection, internal/plugins/ospf/sr.go).
SR Mapping Server and prefix ranges: RFC8665-4-1, 4-2, 4-3, 7.1-1, 7.1-2, 7.1-3 (ze originates no IPv4 Extended Prefix Range TLV; the value encoder at internal/plugins/ospf/sr/codec.go has no ABR caller, so the IA-Flag is never set and the Range Size capacity rule is unenforced). ABR / ASBR Prefix-SID flags and inter-area propagation: RFC8665-5-8, 5-9, 7.2-1 (the IPv4 Prefix-SID builder copies the configured NP/E flags and advertises only locally configured prefixes, internal/plugins/ospf/sr.go; the equivalent rules exist only for IPv6 at internal/plugins/ospf/sr_interarea_v6.go). The feature also remains pre-production pending hardening and deployment evidence.
Coverage
| Bucket | Count | What it counts |
|---|---|---|
| Positive and negative tests | 28 | one part of the gated population |
| Annotated instead of tested | 19 | one part of the gated population |
| One polarity only | 0 | one part of the gated population |
| No test and no annotation | 0 | one part of the gated population |
| Evidence that runs nightly only | 0 | an overlay: each of these is also counted by the part it falls in |
| Gated MUST-level requirements | 47 | every gated MUST falls in exactly one bucket above |
Positive and negative tests (28): RFC8665-3.1-1, RFC8665-3.1-3, RFC8665-3.2-1, RFC8665-3.2-2, RFC8665-3.2-3, RFC8665-3.2-6, RFC8665-3.2-7, RFC8665-3.3-1, RFC8665-3.3-2, RFC8665-3.3-3, RFC8665-3.3-4, RFC8665-3.4-1, RFC8665-5-1, RFC8665-5-2, RFC8665-5-3, RFC8665-5-4, RFC8665-5-5, RFC8665-5-6, RFC8665-5-7, RFC8665-5-10, RFC8665-5-11, RFC8665-5-12, RFC8665-5-13, RFC8665-6.1-1, RFC8665-7.4.1-1, RFC8665-10-1, RFC8665-9-1, RFC8665-3.1-7
Annotated instead of tested (19): RFC8665-3.1-2, RFC8665-3.1-4, RFC8665-3.1-5, RFC8665-3.2-4, RFC8665-3.2-5, RFC8665-3.2-8, RFC8665-3.4-2, RFC8665-3.4-3, RFC8665-4-1, RFC8665-4-2, RFC8665-4-3, RFC8665-5-8, RFC8665-5-9, RFC8665-6.1-2, RFC8665-6.2-1, RFC8665-7.1-1, RFC8665-7.1-2, RFC8665-7.1-3, RFC8665-7.2-1
Requirements
| Requirement | Level | Section | Tests |
|---|---|---|---|
RFC8665-3.1-1 | If the SR-Algorithm TLV is advertised, Algorithm 0 MUST be included (§3.1) | ||
| MUST | 3.1 | ||
RFC8665-3.1-2 | Local policy at a node claiming support for Algorithm 1 MUST NOT alter the SPF paths computed by Algorithm 1 (§3.1, §8.5) | ||
| MUST NOT | 3.1 | negative
no testno negative test{single-polarity}: ze advertises the single-entry algorithm list 0 and never claims Algorithm 1 -- srBuildAlgorithm encodes that literal list, internal/plugins/ospf/sr.go:154-160 -- and the installer refuses any Prefix-SID whose algorithm is not 0, internal/plugins/ospf/sr_install.go:89-92. There is no Algorithm 1 SPF computation to alter and no violating input to reject, so only the positive direction is meaningful |
|
RFC8665-3.1-3 | When multiple SR-Algorithm TLVs are received from a router, use the first occurrence of the TLV in the RI Opaque LSA (§3.1) | ||
| MUST | 3.1 | ||
RFC8665-3.1-4 | If the SR-Algorithm TLV appears in RI Opaque LSAs with different flooding scopes, use the one in the area-scoped LSA (§3.1) | ||
| MUST | 3.1 | positive
no testno positive testnegative
no testno negative test{gap}: the SR capability read walks every RI Opaque LSA in the LSDB and assigns the per-router entry from whichever view it reaches last, with no flooding-scope comparison -- srRemoteCapabilities iterates e.lsdb.OpaqueLSAsByType at internal/plugins/ospf/sr_install.go:238-241 and its record closure assigns caps[router] and algos[router] at internal/plugins/ospf/sr_install.go:222-229 -- so an AS-scoped RI LSA can override the area-scoped one. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-3.1-5 | If the SR-Algorithm TLV appears in RI Opaque LSAs with the same flooding scope, use the one with the numerically smallest Instance ID and ignore subsequent instances (§3.1) | ||
| MUST | 3.1 | positive
no testno positive testnegative
no testno negative test{gap}: the SR capability read compares no Instance ID. The opaque view carries OpaqueID, the RFC 7770 Instance ID, but srRemoteCapabilities ignores it and the last view processed wins, internal/plugins/ospf/sr_install.go:238-241 with the assignment at internal/plugins/ospf/sr_install.go:222-229. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-3.2-1 | Range Size in the SID/Label Range TLV MUST be greater than 0 (§3.2) | ||
| MUST | 3.2 | ||
RFC8665-3.2-2 | The SID/Label Sub-TLV MUST be included in the SID/Label Range TLV (§3.2) | ||
| MUST | 3.2 | ||
RFC8665-3.2-3 | If more than one SID/Label Sub-TLV is present in the SID/Label Range TLV, the TLV MUST be ignored (§3.2) | ||
| MUST | 3.2 | ||
RFC8665-3.2-4 | When advertising multiple ranges, the originating router MUST encode each range into a different SID/Label Range TLV (§3.2) | ||
| MUST | 3.2 | negative
no testno negative test{single-polarity}: srBuildSRGB emits one packet.RITLV per configured range, internal/plugins/ospf/sr.go:167-172, so the encoder cannot express two ranges in one TLV and has no violating output to produce. The receive-side rejection of a range TLV carrying two SID/Label sub-TLVs is the RFC8665-3.2-3 negative test |
|
RFC8665-3.2-5 | The originating router MUST ensure the SID/Label Range TLV order is the same after a graceful restart (§3.2) | ||
| MUST | 3.2 | negative
no testno negative test{single-polarity}: the advertised order is a pure function of the configured SRGB slice -- srBuildSRGB walks it in slice order with no sort and no map iteration, internal/plugins/ospf/sr.go:168-172, and parseSegmentRouting rebuilds that slice in configuration document order on every start, internal/plugins/ospf/sr_config.go:27-30 -- so a restart reproduces the same order by construction and there is no reordered input to reject |
|
RFC8665-3.2-6 | The receiving router MUST adhere to the advertised range order when calculating a SID/Label from a SID index (§3.2) | ||
| MUST | 3.2 | ||
RFC8665-3.2-7 | The originating router MUST NOT advertise overlapping ranges (SID/Label Range TLV) (§3.2) | ||
| MUST NOT | 3.2 | ||
RFC8665-3.2-8 | When a router receives multiple overlapping ranges, it MUST conform to RFC 8660 (§3.2) | ||
| MUST | 3.2 | positive
no testno positive testnegative
no testno negative test{gap}: the receive path appends every decoded SID/Label Range to the originator SRGB with no overlap detection, srDecodeRemoteCapabilities internal/plugins/ospf/sr.go:337-342, and SRGB.Label maps an index by plain concatenation in advertised order, internal/plugins/ospf/sr/srgb.go:93-105, so overlapping received ranges are concatenated rather than resolved per RFC 8660. The non-overlap check covers only this router's own configured ranges, internal/plugins/ospf/sr/config.go:116-121. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-3.3-1 | Range Size in the SRLB TLV MUST be greater than 0 (§3.3) | ||
| MUST | 3.3 | ||
RFC8665-3.3-2 | The SID/Label Sub-TLV MUST be included in the SRLB TLV (§3.3) | ||
| MUST | 3.3 | ||
RFC8665-3.3-3 | If more than one SID/Label Sub-TLV is present in the SRLB TLV, the SRLB TLV MUST be ignored (§3.3) | ||
| MUST | 3.3 | ||
RFC8665-3.3-4 | The originating router MUST NOT advertise overlapping ranges (SRLB TLV) (§3.3) | ||
| MUST NOT | 3.3 | ||
RFC8665-3.4-1 | When multiple SRMS Preference TLVs are received from a router, use the first occurrence of the TLV in the RI Opaque LSA (§3.4) | ||
| MUST | 3.4 | ||
RFC8665-3.4-2 | If the SRMS Preference TLV appears in RI Opaque LSAs with different flooding scopes, use the one with the narrowest flooding scope (§3.4) | ||
| MUST | 3.4 | positive
no testno positive testnegative
no testno negative test{gap}: the received SRMS preference is decoded into srRemoteCapabilities.SRMSPref, internal/plugins/ospf/sr.go:349-358, and nothing consumes it: srRemoteCapabilities keeps only the SRGB and the algorithm list, internal/plugins/ospf/sr_install.go:222-229, so no narrowest-flooding-scope selection exists. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-3.4-3 | If the SRMS Preference TLV appears in RI Opaque LSAs with the same flooding scope, use the one with the numerically smallest Instance ID and ignore subsequent instances (§3.4) | ||
| MUST | 3.4 | positive
no testno positive testnegative
no testno negative test{gap}: the decode keeps the first SRMS Preference TLV within one LSA body, internal/plugins/ospf/sr.go:349-358, but nothing compares instances across LSAs and the preference is never consumed, internal/plugins/ospf/sr_install.go:222-229, so there is no smallest-Instance-ID tie-break. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-4-1 | All prefix ranges in a single OSPF Extended Prefix Opaque LSA MUST have the same flooding scope (§4) | ||
| MUST | 4 | positive
no testno positive testnegative
no testno negative test{gap}: ze originates no OSPF Extended Prefix Range TLV for IPv4. extPrefixOnOriginate builds one Extended Prefix Opaque LSA per advertised prefix carrying a single Extended Prefix TLV, internal/plugins/ospf/ext_prefix.go:61-80, and never populates ExtPrefixLSA.Ranges; the range value encoder exists at internal/plugins/ospf/sr/codec.go:482-494 with no caller outside tests, so no code assigns a flooding scope to a prefix range or keeps the ranges in one LSA scope-uniform. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-4-2 | An ABR advertising the OSPF Extended Prefix Range TLV between areas MUST set the IA-Flag (§4, §7.1) | ||
| MUST | 4 | positive
no testno positive testnegative
no testno negative test{gap}: EncodeExtPrefixRangeValueV4 takes an iaFlag argument and writes the IA-Flag bit, internal/plugins/ospf/sr/codec.go:482-494, but no ABR path calls it: the IPv4 Extended Prefix originator emits only Extended Prefix TLVs, internal/plugins/ospf/ext_prefix.go:61-80, and the only inter-area Prefix-SID propagation is the IPv6 one, internal/plugins/ospf/sr_interarea_v6.go:60-83, so no OSPFv2 ABR sets the IA-Flag. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-4-3 | The Range Size MUST NOT exceed the number of prefixes satisfiable by the Prefix Length without including 224.0.0.0/3 (§4) | ||
| MUST NOT | 4 | positive
no testno positive testnegative
no testno negative test{gap}: the Extended Prefix Range encoder writes the caller's Range Size verbatim with no capacity check against the Prefix Length and no 224.0.0.0/3 exclusion, EncodeExtPrefixRangeValueV4 internal/plugins/ospf/sr/codec.go:482-494, and the decoder reads it back unchecked, internal/plugins/ospf/sr/codec.go:497-523. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-5-1 | Reserved bits (other than NP/M/E/V/L) in the Prefix-SID Flags MUST be zero when sent and are ignored when received (§5) | ||
| MUST NOT | 5 | ||
RFC8665-5-2 | If the NP-Flag is set, the penultimate hop MUST NOT pop the Prefix-SID before delivering to the advertising node (§5) | ||
| MUST NOT | 5 | ||
RFC8665-5-3 | If the E-Flag is set, any upstream neighbor MUST replace the Prefix-SID with the Explicit NULL label (0 for IPv4) before forwarding (§5) | ||
| MUST | 5 | ||
RFC8665-5-4 | A router receiving a Prefix-SID with an algorithm value not advertised in the remote node's SR-Algorithm TLV MUST ignore the Prefix-SID Sub-TLV (§5) | ||
| MUST | 5 | ||
RFC8665-5-5 | Any invalid combination of V- and L-Flags in a received SID Advertisement MUST cause it to be ignored (§5) | ||
| MUST | 5 | ||
RFC8665-5-6 | If an OSPF router advertises multiple Prefix-SIDs for the same prefix, topology, and algorithm, all of them MUST be ignored (§5) | ||
| MUST | 5 | ||
RFC8665-5-7 | When calculating the outgoing label, the router MUST take into account the next-hop router's E-, NP-, and M-Flags if that router advertised the SID, regardless of whether it contributes to the best path (§5) | ||
| MUST | 5 | ||
RFC8665-5-8 | The NP-Flag MUST be set and the E-Flag MUST be clear for Prefix-SIDs allocated to inter-area prefixes originated by the ABR, unless the advertised prefix is directly attached to the ABR (§5) | ||
| MUST | 5 | positive
no testno positive testnegative
no testno negative test{gap}: the IPv4 Prefix-SID builder copies the NP and E flags straight from configuration and never forces NP set with E clear for an inter-area prefix originated by an ABR, srBuildPrefixSID internal/plugins/ospf/sr.go:197-213, which matches only on the configured prefix and ignores the ctx.RouteType it is handed. The equivalent rule exists only for IPv6, v6InterAreaPrefixSIDRule internal/plugins/ospf/sr_interarea_v6.go:35-43. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-5-9 | The NP-Flag MUST be set and the E-Flag MUST be clear for Prefix-SIDs allocated to redistributed prefixes, unless the redistributed prefix is directly attached to the ASBR (§5) | ||
| MUST | 5 | positive
no testno positive testnegative
no testno negative test{gap}: the same builder applies no NP-set / E-clear rule to a redistributed prefix, srBuildPrefixSID internal/plugins/ospf/sr.go:197-213; the AS-external Extended Prefix advertisement carries whatever flags the prefix-sid configuration sets, internal/plugins/ospf/ext_prefix.go:162-176. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-5-10 | If the NP-Flag is not set, any upstream neighbor of the Prefix-SID originator MUST pop the Prefix-SID (PHP) and the received E-Flag is ignored (§5) | ||
| MUST | 5 | ||
RFC8665-5-11 | If the NP-Flag is set and the E-Flag is not set, any upstream neighbor MUST keep the Prefix-SID on top of the stack (§5) | ||
| MUST | 5 | ||
RFC8665-5-12 | If both NP-Flag and E-Flag are set, any upstream neighbor MUST replace the Prefix-SID with an Explicit NULL label (§5) | ||
| MUST | 5 | ||
RFC8665-5-13 | When the M-Flag is set, the NP-Flag and the E-Flag MUST be ignored on reception (§5) | ||
| MUST | 5 | ||
RFC8665-6.1-1 | Reserved bits (5-7) in the Adj-SID Flags MUST be zero when sent and are ignored when received (§6.1) | ||
| MUST NOT | 6.1 | ||
RFC8665-6.1-2 | When the P-Flag is set, the Adj-SID MUST be persistent (§6.1) | ||
| MUST | 6.1 | negative
no testno negative test{single-polarity}: every Adj-SID is allocated from the SRLB when the adjacency reaches Full and freed when it drops, and it is advertised with only the V and L flags set, srAdjManager.neighborFull internal/plugins/ospf/sr_adjsid.go:62-69 with the flag encoder at internal/plugins/ospf/sr/codec.go:115-133, so ze never sets the P-Flag and the persistence obligation never binds. A negative case needs ze to advertise P without persistence, which the encoder cannot produce |
|
RFC8665-6.2-1 | When the P-Flag is set, the LAN Adjacency SID MUST be persistent (§6.2) | ||
| MUST | 6.2 | negative
no testno negative test{single-polarity}: the LAN Adjacency SID is allocated by the same code path with lan set, srAdjManager.neighborFull internal/plugins/ospf/sr_adjsid.go:62-69, so it too carries the P-Flag clear and the persistence obligation never binds |
|
RFC8665-7.1-1 | An SR Mapping Server MUST use the OSPF Extended Prefix Range TLV when advertising SIDs for prefixes (§7.1) | ||
| MUST | 7.1 | positive
no testno positive testnegative
no testno negative test{gap}: ze runs no SR Mapping Server for IPv4. Nothing originates an Extended Prefix Range TLV into an Extended Prefix Opaque LSA -- ExtPrefixLSA.Ranges is populated only by the decoder, internal/plugins/ospf/packet/ext_prefix.go:165-168, and read only by the show path, internal/plugins/ospf/ext_render.go:106 -- and the M-Flag is never set on an originated Prefix-SID, internal/plugins/ospf/sr.go:204-208. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-7.1-2 | When propagating an OSPF Extended Prefix Range TLV between areas, ABRs MUST set the IA-Flag (§7.1) | ||
| MUST | 7.1 | positive
no testno positive testnegative
no testno negative test{gap}: the IA-Flag argument of EncodeExtPrefixRangeValueV4, internal/plugins/ospf/sr/codec.go:482-494, has no ABR caller: the IPv4 Extended Prefix originator emits only Extended Prefix TLVs and propagates no prefix range between areas, internal/plugins/ospf/ext_prefix.go:61-80 and internal/plugins/ospf/ext_prefix.go:136-160. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-7.1-3 | Multiple Mapping Servers advertising Prefix-SIDs for the same prefix MUST advertise the same Prefix-SID (§7.1) | ||
| MUST | 7.1 | positive
no testno positive testnegative
no testno negative test{gap}: ze advertises no mapping-server Prefix-SIDs, so it enforces no consistency between mapping servers: the Prefix-SID builder emits only this router's own configured node SIDs with the M-Flag clear, internal/plugins/ospf/sr.go:197-213, and the receive path keeps one Prefix-SID per prefix and marks a second one duplicate whatever its source, internal/plugins/ospf/sr_install.go:274-278. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-7.2-1 | To support SR in a multiarea environment, OSPFv2 MUST propagate Prefix-SID information between areas (§7.2) | ||
| MUST | 7.2 | positive
no testno positive testnegative
no testno negative test{gap}: OSPFv2 does not propagate a learned Prefix-SID between areas. srBuildPrefixSID attaches a Prefix-SID only when the prefix matches an entry in this router's own segment-routing configuration, internal/plugins/ospf/sr.go:202-212, so the inter-area Extended Prefix TLV an ABR originates from its self Type-3 summaries, internal/plugins/ospf/ext_prefix.go:136-160, carries no Prefix-SID for a remote prefix. Inter-area propagation exists only for IPv6, v6OriginateInterAreaSR internal/plugins/ospf/sr_interarea_v6.go:60-83. Disclosed in docs/features/rfc-status.md RFC 8665 row |
|
RFC8665-7.4.1-1 | If a P2P-link adjacency transitions to a state lower than 2-Way, the Adj-SID Advertisement MUST be withdrawn from the area (§7.4.1) | ||
| MUST | 7.4.1 | ||
RFC8665-10-1 | Implementations MUST ensure malformed TLVs/sub-TLVs are detected and do not provide a crash vulnerability (§10) | ||
| MUST | 10 | ||
RFC8665-9-1 | If the length of a new TLV/sub-TLV is invalid, the LSA is considered malformed and MUST be ignored (§9) | ||
| MUST | 9 | ||
RFC8665-3.1-6 | The SR-Algorithm TLV SHOULD only be advertised once in the RI Opaque LSA (§3.1) | ||
| SHOULD | 3.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.2-9 | The Reserved field SHOULD be set to 0 on transmission (SID/Label Range, SRLB, SRMS Preference, Extended Prefix Range, Prefix-SID, Adj-SID, LAN Adj-SID) (§3.2, §3.3, §3.4, §4, §5, §6.1, §6.2) | ||
| SHOULD | 3.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.3-5 | Each time a SID from the SRLB is allocated, it SHOULD also be reported to all components (controller/applications) (§3.3) | ||
| SHOULD | 3.3 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.4-4 | For the SRMS Preference TLV, AS-scoped flooding SHOULD be used (§3.4) | ||
| SHOULD | 3.4 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-5-14 | PHP behavior SHOULD be done for Mapping-Server-advertised SIDs in the intra-area / inter-area / external downstream-neighbor cases described (§5) | ||
| SHOULD | 5 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-7.3-1 | When an SR-capable ASBR generates Type-5 LSAs, it SHOULD also originate OSPF Extended Prefix Opaque LSAs (§7.3) | ||
| SHOULD | 7.3 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-7.3-2 | When an NSSA ABR translates Type-7 LSAs into Type-5 LSAs, it SHOULD also advertise the Prefix-SID for the prefix (§7.3) | ||
| SHOULD | 7.3 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-10-2 | Stronger authentication mechanisms such as RFC 7474 SHOULD be used where attackers may have network access (§10) | ||
| SHOULD | 10 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-9-2 | Reception of malformed TLVs or sub-TLVs SHOULD be counted and/or logged for further analysis (§9, §10) | ||
| SHOULD | 9 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-9-3 | Logging of malformed TLVs and sub-TLVs SHOULD be rate limited to prevent a DoS attack (§9, §10) | ||
| SHOULD | 9 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.2-10 | Prefix-SIDs MAY be advertised in the form of an index (§3.2) | ||
| MAY | 3.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.2-11 | The SID/Label Range TLV MAY appear multiple times (§3.2) | ||
| MAY | 3.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.2-12 | Only a single SID/Label Sub-TLV MAY be advertised in the SID/Label Range TLV (§3.2) | ||
| MAY | 3.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.2-13 | Multiple occurrences of the SID/Label Range TLV MAY be advertised to advertise multiple ranges (§3.2) | ||
| MAY | 3.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.3-6 | SIDs from the SRLB MAY be used for Adjacency SIDs and by components other than OSPF (§3.3) | ||
| MAY | 3.3 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.3-7 | The SRLB TLV MAY appear multiple times in the RI Opaque LSA (§3.3) | ||
| MAY | 3.3 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.3-8 | Only a single SID/Label Sub-TLV MAY be advertised in the SRLB TLV (§3.3) | ||
| MAY | 3.3 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.3-9 | A router advertising the SRLB TLV MAY also have other label ranges outside the SRLB for local allocation (§3.3) | ||
| MAY | 3.3 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.4-5 | The SRMS Preference TLV MAY only be advertised once in the RI Opaque LSA (§3.4) | ||
| MAY | 3.4 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.4-6 | If SRMS advertisements are only used inside the server's area, area-scoped flooding MAY be used (§3.4) | ||
| MAY | 3.4 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-4-4 | Multiple OSPF Extended Prefix Range TLVs MAY be advertised in each Extended Prefix Opaque LSA (§4) | ||
| MAY | 4 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-5-15 | The Prefix-SID Sub-TLV MAY appear more than once in the parent TLV (§5) | ||
| MAY | 5 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-6.1-3 | The Adj-SID Sub-TLV MAY appear multiple times in the Extended Link TLV (§6.1) | ||
| MAY | 6.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-6.1-4 | An SR-capable router MAY allocate an Adj-SID for each of its adjacencies and set the B-Flag when eligible for FRR protection (§6.1) | ||
| MAY | 6.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-6.1-5 | An SR-capable router MAY allocate more than one Adj-SID to an adjacency (§6.1) | ||
| MAY | 6.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-6.1-6 | An SR-capable router MAY allocate the same Adj-SID to different adjacencies (§6.1) | ||
| MAY | 6.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-6.1-7 | When the G-Flag is set, the Adj-SID MAY be assigned to other adjacencies as well (§6.1) | ||
| MAY | 6.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-6.1-8 | When the P-Flag is not set, the Adj-SID MAY be persistent (§6.1) | ||
| MAY | 6.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-6.2-2 | The LAN Adj-SID Sub-TLV MAY appear multiple times in the Extended Link TLV (§6.2) | ||
| MAY | 6.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-6.2-3 | When the P-Flag is not set, the LAN Adjacency SID MAY be persistent (§6.2) | ||
| MAY | 6.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-7.1-4 | An OSPFv2 router that supports SR MAY advertise Prefix-SIDs for any prefix to which it advertises reachability (§7.1) | ||
| MAY | 7.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-7.4.1-2 | An Adj-SID MAY be advertised for any adjacency on a P2P link in neighbor state 2-Way or higher (§7.4.1) | ||
| MAY | 7.4.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-7.4.1-3 | If a P2P-link adjacency transitions from the FULL state, the Adj-SID for that adjacency MAY be removed from the area (§7.4.1) | ||
| MAY | 7.4.1 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-7.4.2-1 | Each router on a broadcast/NBMA/hybrid network MAY advertise the Adj-SID for its adjacency to the DR (§7.4.2) | ||
| MAY | 7.4.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-7.4.2-2 | SR-capable routers MAY advertise a LAN Adjacency SID for other neighbors (BDR, DR-OTHER, etc.) on broadcast/NBMA/hybrid networks (§7.4.2) | ||
| MAY | 7.4.2 | positive
no testno positive testnegative
no testno negative test |
|
RFC8665-3.1-7 | For SR-Algorithm TLV, SID/Label Range TLV, and SRLB TLV advertisement, area-scoped flooding is REQUIRED (§3.1, §3.2, §3.3) | ||
| REQUIRED | 3.1 | ||
Gaps and untested MUSTs
| Requirement | State | Reason |
|---|---|---|
RFC8665-3.1-4 If the SR-Algorithm TLV appears in RI Opaque LSAs with different flooding scopes, use the one in the area-scoped LSA (§3.1) |
{gap}, no test | the SR capability read walks every RI Opaque LSA in the LSDB and assigns the per-router entry from whichever view it reaches last, with no flooding-scope comparison -- srRemoteCapabilities iterates e.lsdb.OpaqueLSAsByType at internal/plugins/ospf/sr_install.go:238-241 and its record closure assigns caps[router] and algos[router] at internal/plugins/ospf/sr_install.go:222-229 -- so an AS-scoped RI LSA can override the area-scoped one. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-3.1-5 If the SR-Algorithm TLV appears in RI Opaque LSAs with the same flooding scope, use the one with the numerically smallest Instance ID and ignore subsequent instances (§3.1) |
{gap}, no test | the SR capability read compares no Instance ID. The opaque view carries OpaqueID, the RFC 7770 Instance ID, but srRemoteCapabilities ignores it and the last view processed wins, internal/plugins/ospf/sr_install.go:238-241 with the assignment at internal/plugins/ospf/sr_install.go:222-229. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-3.2-8 When a router receives multiple overlapping ranges, it MUST conform to RFC 8660 (§3.2) |
{gap}, no test | the receive path appends every decoded SID/Label Range to the originator SRGB with no overlap detection, srDecodeRemoteCapabilities internal/plugins/ospf/sr.go:337-342, and SRGB.Label maps an index by plain concatenation in advertised order, internal/plugins/ospf/sr/srgb.go:93-105, so overlapping received ranges are concatenated rather than resolved per RFC 8660. The non-overlap check covers only this router's own configured ranges, internal/plugins/ospf/sr/config.go:116-121. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-3.4-2 If the SRMS Preference TLV appears in RI Opaque LSAs with different flooding scopes, use the one with the narrowest flooding scope (§3.4) |
{gap}, no test | the received SRMS preference is decoded into srRemoteCapabilities.SRMSPref, internal/plugins/ospf/sr.go:349-358, and nothing consumes it: srRemoteCapabilities keeps only the SRGB and the algorithm list, internal/plugins/ospf/sr_install.go:222-229, so no narrowest-flooding-scope selection exists. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-3.4-3 If the SRMS Preference TLV appears in RI Opaque LSAs with the same flooding scope, use the one with the numerically smallest Instance ID and ignore subsequent instances (§3.4) |
{gap}, no test | the decode keeps the first SRMS Preference TLV within one LSA body, internal/plugins/ospf/sr.go:349-358, but nothing compares instances across LSAs and the preference is never consumed, internal/plugins/ospf/sr_install.go:222-229, so there is no smallest-Instance-ID tie-break. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-4-1 All prefix ranges in a single OSPF Extended Prefix Opaque LSA MUST have the same flooding scope (§4) |
{gap}, no test | ze originates no OSPF Extended Prefix Range TLV for IPv4. extPrefixOnOriginate builds one Extended Prefix Opaque LSA per advertised prefix carrying a single Extended Prefix TLV, internal/plugins/ospf/ext_prefix.go:61-80, and never populates ExtPrefixLSA.Ranges; the range value encoder exists at internal/plugins/ospf/sr/codec.go:482-494 with no caller outside tests, so no code assigns a flooding scope to a prefix range or keeps the ranges in one LSA scope-uniform. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-4-2 An ABR advertising the OSPF Extended Prefix Range TLV between areas MUST set the IA-Flag (§4, §7.1) |
{gap}, no test | EncodeExtPrefixRangeValueV4 takes an iaFlag argument and writes the IA-Flag bit, internal/plugins/ospf/sr/codec.go:482-494, but no ABR path calls it: the IPv4 Extended Prefix originator emits only Extended Prefix TLVs, internal/plugins/ospf/ext_prefix.go:61-80, and the only inter-area Prefix-SID propagation is the IPv6 one, internal/plugins/ospf/sr_interarea_v6.go:60-83, so no OSPFv2 ABR sets the IA-Flag. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-4-3 The Range Size MUST NOT exceed the number of prefixes satisfiable by the Prefix Length without including 224.0.0.0/3 (§4) |
{gap}, no test | the Extended Prefix Range encoder writes the caller's Range Size verbatim with no capacity check against the Prefix Length and no 224.0.0.0/3 exclusion, EncodeExtPrefixRangeValueV4 internal/plugins/ospf/sr/codec.go:482-494, and the decoder reads it back unchecked, internal/plugins/ospf/sr/codec.go:497-523. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-5-8 The NP-Flag MUST be set and the E-Flag MUST be clear for Prefix-SIDs allocated to inter-area prefixes originated by the ABR, unless the advertised prefix is directly attached to the ABR (§5) |
{gap}, no test | the IPv4 Prefix-SID builder copies the NP and E flags straight from configuration and never forces NP set with E clear for an inter-area prefix originated by an ABR, srBuildPrefixSID internal/plugins/ospf/sr.go:197-213, which matches only on the configured prefix and ignores the ctx.RouteType it is handed. The equivalent rule exists only for IPv6, v6InterAreaPrefixSIDRule internal/plugins/ospf/sr_interarea_v6.go:35-43. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-5-9 The NP-Flag MUST be set and the E-Flag MUST be clear for Prefix-SIDs allocated to redistributed prefixes, unless the redistributed prefix is directly attached to the ASBR (§5) |
{gap}, no test | the same builder applies no NP-set / E-clear rule to a redistributed prefix, srBuildPrefixSID internal/plugins/ospf/sr.go:197-213; the AS-external Extended Prefix advertisement carries whatever flags the prefix-sid configuration sets, internal/plugins/ospf/ext_prefix.go:162-176. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-7.1-1 An SR Mapping Server MUST use the OSPF Extended Prefix Range TLV when advertising SIDs for prefixes (§7.1) |
{gap}, no test | ze runs no SR Mapping Server for IPv4. Nothing originates an Extended Prefix Range TLV into an Extended Prefix Opaque LSA -- ExtPrefixLSA.Ranges is populated only by the decoder, internal/plugins/ospf/packet/ext_prefix.go:165-168, and read only by the show path, internal/plugins/ospf/ext_render.go:106 -- and the M-Flag is never set on an originated Prefix-SID, internal/plugins/ospf/sr.go:204-208. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-7.1-2 When propagating an OSPF Extended Prefix Range TLV between areas, ABRs MUST set the IA-Flag (§7.1) |
{gap}, no test | the IA-Flag argument of EncodeExtPrefixRangeValueV4, internal/plugins/ospf/sr/codec.go:482-494, has no ABR caller: the IPv4 Extended Prefix originator emits only Extended Prefix TLVs and propagates no prefix range between areas, internal/plugins/ospf/ext_prefix.go:61-80 and internal/plugins/ospf/ext_prefix.go:136-160. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-7.1-3 Multiple Mapping Servers advertising Prefix-SIDs for the same prefix MUST advertise the same Prefix-SID (§7.1) |
{gap}, no test | ze advertises no mapping-server Prefix-SIDs, so it enforces no consistency between mapping servers: the Prefix-SID builder emits only this router's own configured node SIDs with the M-Flag clear, internal/plugins/ospf/sr.go:197-213, and the receive path keeps one Prefix-SID per prefix and marks a second one duplicate whatever its source, internal/plugins/ospf/sr_install.go:274-278. Disclosed in docs/features/rfc-status.md RFC 8665 row |
RFC8665-7.2-1 To support SR in a multiarea environment, OSPFv2 MUST propagate Prefix-SID information between areas (§7.2) |
{gap}, no test | OSPFv2 does not propagate a learned Prefix-SID between areas. srBuildPrefixSID attaches a Prefix-SID only when the prefix matches an entry in this router's own segment-routing configuration, internal/plugins/ospf/sr.go:202-212, so the inter-area Extended Prefix TLV an ABR originates from its self Type-3 summaries, internal/plugins/ospf/ext_prefix.go:136-160, carries no Prefix-SID for a remote prefix. Inter-area propagation exists only for IPv6, v6OriginateInterAreaSR internal/plugins/ospf/sr_interarea_v6.go:60-83. Disclosed in docs/features/rfc-status.md RFC 8665 row |
Proof state
A tagged unit reads unproven where no discrimination record exists for it: nothing in this tree has been observed to break it, so the claim its tag makes is unproven.
RFC8665-3.1-1
If the SR-Algorithm TLV is advertised, Algorithm 0 MUST be included (§3.1)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665NoSRAlgorithmTLVWhenSRUnconfigured |
unit/verify | unproven |
| positive | TestRFC8665SRAlgorithmTLVAdvertisesAlgorithmZeroOnly |
unit/verify | unproven |
RFC8665-3.1-2
Local policy at a node claiming support for Algorithm 1 MUST NOT alter the SPF paths computed by Algorithm 1 (§3.1, §8.5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| positive | TestRFC8665SRAlgorithmTLVAdvertisesAlgorithmZeroOnly |
unit/verify | unproven |
RFC8665-3.1-3
When multiple SR-Algorithm TLVs are received from a router, use the first occurrence of the TLV in the RI Opaque LSA (§3.1)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665RepeatedAlgorithmAndSRMSInstancesIgnored |
unit/verify | unproven |
| positive | TestRFC8665SingleAlgorithmAndSRMSInstanceUsed |
unit/verify | unproven |
RFC8665-3.1-4
If the SR-Algorithm TLV appears in RI Opaque LSAs with different flooding scopes, use the one in the area-scoped LSA (§3.1)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-3.1-4, so no unit is bound to it.
RFC8665-3.1-5
If the SR-Algorithm TLV appears in RI Opaque LSAs with the same flooding scope, use the one with the numerically smallest Instance ID and ignore subsequent instances (§3.1)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-3.1-5, so no unit is bound to it.
RFC8665-3.2-1
Range Size in the SID/Label Range TLV MUST be greater than 0 (§3.2)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665RangeSizeZeroRejected |
unit/verify | unproven |
| positive | TestRFC8665RangeTLVRoundTrip |
unit/verify | unproven |
RFC8665-3.2-2
The SID/Label Sub-TLV MUST be included in the SID/Label Range TLV (§3.2)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665RangeWithoutSIDLabelSubTLVRejected |
unit/verify | unproven |
| positive | TestRFC8665RangeTLVRoundTrip |
unit/verify | unproven |
RFC8665-3.2-3
If more than one SID/Label Sub-TLV is present in the SID/Label Range TLV, the TLV MUST be ignored (§3.2)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665RangeWithTwoSIDLabelSubTLVsIgnored |
unit/verify | unproven |
| positive | TestRFC8665RangeWithSingleSIDLabelAccepted |
unit/verify | unproven |
RFC8665-3.2-4
When advertising multiple ranges, the originating router MUST encode each range into a different SID/Label Range TLV (§3.2)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| positive | TestRFC8665EachRangeInItsOwnTLV |
unit/verify | unproven |
RFC8665-3.2-5
The originating router MUST ensure the SID/Label Range TLV order is the same after a graceful restart (§3.2)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| positive | TestRFC8665RangeOrderStableAcrossRestart |
unit/verify | unproven |
RFC8665-3.2-6
The receiving router MUST adhere to the advertised range order when calculating a SID/Label from a SID index (§3.2)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665SRGBIndexOutOfRangeAndOrderSensitivity |
unit/verify | unproven |
| positive | TestRFC8665SRGBIndexUsesAdvertisedOrder |
unit/verify | unproven |
RFC8665-3.2-7
The originating router MUST NOT advertise overlapping ranges (SID/Label Range TLV) (§3.2)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665OverlappingRangesRejected |
unit/verify | unproven |
| positive | TestRFC8665NonOverlappingRangesAccepted |
unit/verify | unproven |
RFC8665-3.2-8
When a router receives multiple overlapping ranges, it MUST conform to RFC 8660 (§3.2)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-3.2-8, so no unit is bound to it.
RFC8665-3.3-1
Range Size in the SRLB TLV MUST be greater than 0 (§3.3)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665RangeSizeZeroRejected |
unit/verify | unproven |
| positive | TestRFC8665RangeTLVRoundTrip |
unit/verify | unproven |
RFC8665-3.3-2
The SID/Label Sub-TLV MUST be included in the SRLB TLV (§3.3)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665RangeWithoutSIDLabelSubTLVRejected |
unit/verify | unproven |
| positive | TestRFC8665RangeTLVRoundTrip |
unit/verify | unproven |
RFC8665-3.3-3
If more than one SID/Label Sub-TLV is present in the SRLB TLV, the SRLB TLV MUST be ignored (§3.3)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665RangeWithTwoSIDLabelSubTLVsIgnored |
unit/verify | unproven |
| positive | TestRFC8665RangeWithSingleSIDLabelAccepted |
unit/verify | unproven |
RFC8665-3.3-4
The originating router MUST NOT advertise overlapping ranges (SRLB TLV) (§3.3)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665OverlappingRangesRejected |
unit/verify | unproven |
| positive | TestRFC8665NonOverlappingRangesAccepted |
unit/verify | unproven |
RFC8665-3.4-1
When multiple SRMS Preference TLVs are received from a router, use the first occurrence of the TLV in the RI Opaque LSA (§3.4)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665RepeatedAlgorithmAndSRMSInstancesIgnored |
unit/verify | unproven |
| positive | TestRFC8665SingleAlgorithmAndSRMSInstanceUsed |
unit/verify | unproven |
RFC8665-3.4-2
If the SRMS Preference TLV appears in RI Opaque LSAs with different flooding scopes, use the one with the narrowest flooding scope (§3.4)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-3.4-2, so no unit is bound to it.
RFC8665-3.4-3
If the SRMS Preference TLV appears in RI Opaque LSAs with the same flooding scope, use the one with the numerically smallest Instance ID and ignore subsequent instances (§3.4)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-3.4-3, so no unit is bound to it.
RFC8665-4-1
All prefix ranges in a single OSPF Extended Prefix Opaque LSA MUST have the same flooding scope (§4)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-4-1, so no unit is bound to it.
RFC8665-4-2
An ABR advertising the OSPF Extended Prefix Range TLV between areas MUST set the IA-Flag (§4, §7.1)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-4-2, so no unit is bound to it.
RFC8665-4-3
The Range Size MUST NOT exceed the number of prefixes satisfiable by the Prefix Length without including 224.0.0.0/3 (§4)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-4-3, so no unit is bound to it.
RFC8665-5-1
Reserved bits (other than NP/M/E/V/L) in the Prefix-SID Flags MUST be zero when sent and are ignored when received (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665PrefixSIDReservedFlagBitsIgnoredOnReceive |
unit/verify | unproven |
| positive | TestRFC8665PrefixSIDReservedFlagBitsZeroOnSend |
unit/verify | unproven |
RFC8665-5-2
If the NP-Flag is set, the penultimate hop MUST NOT pop the Prefix-SID before delivering to the advertising node (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665PHPPopsWhenNoPHPFlagClear |
unit/verify | unproven |
| positive | TestRFC8665NoPHPKeepsPrefixSIDLabel |
unit/verify | unproven |
RFC8665-5-3
If the E-Flag is set, any upstream neighbor MUST replace the Prefix-SID with the Explicit NULL label (0 for IPv4) before forwarding (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665NoPHPKeepsPrefixSIDLabel |
unit/verify | unproven |
| positive | TestRFC8665ExplicitNullReplacesPrefixSID |
unit/verify | unproven |
RFC8665-5-4
A router receiving a Prefix-SID with an algorithm value not advertised in the remote node's SR-Algorithm TLV MUST ignore the Prefix-SID Sub-TLV (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665PrefixSIDIgnoredWhenAlgorithmNotAdvertised |
unit/verify | unproven |
| positive | TestRFC8665PrefixSIDInstalledWhenAlgorithmAdvertised |
unit/verify | unproven |
RFC8665-5-5
Any invalid combination of V- and L-Flags in a received SID Advertisement MUST cause it to be ignored (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665InvalidVLCombinationIgnored |
unit/verify | unproven |
| positive | TestRFC8665ValidVLCombinationsDecode |
unit/verify | unproven |
RFC8665-5-6
If an OSPF router advertises multiple Prefix-SIDs for the same prefix, topology, and algorithm, all of them MUST be ignored (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665DuplicatePrefixSIDsAllIgnored |
unit/verify | unproven |
| positive | TestRFC8665PrefixSIDInstalledWhenAlgorithmAdvertised |
unit/verify | unproven |
RFC8665-5-7
When calculating the outgoing label, the router MUST take into account the next-hop router's E-, NP-, and M-Flags if that router advertised the SID, regardless of whether it contributes to the best path (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665OriginatorFlagsNotAppliedAtTransitHop |
unit/verify | unproven |
| positive | TestRFC8665NextHopFlagsAppliedWhereSIDAdvertised |
unit/verify | unproven |
RFC8665-5-8
The NP-Flag MUST be set and the E-Flag MUST be clear for Prefix-SIDs allocated to inter-area prefixes originated by the ABR, unless the advertised prefix is directly attached to the ABR (§5)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-5-8, so no unit is bound to it.
RFC8665-5-9
The NP-Flag MUST be set and the E-Flag MUST be clear for Prefix-SIDs allocated to redistributed prefixes, unless the redistributed prefix is directly attached to the ASBR (§5)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-5-9, so no unit is bound to it.
RFC8665-5-10
If the NP-Flag is not set, any upstream neighbor of the Prefix-SID originator MUST pop the Prefix-SID (PHP) and the received E-Flag is ignored (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665NoPHPKeepsPrefixSIDLabel |
unit/verify | unproven |
| positive | TestRFC8665PHPPopsWhenNoPHPFlagClear |
unit/verify | unproven |
RFC8665-5-11
If the NP-Flag is set and the E-Flag is not set, any upstream neighbor MUST keep the Prefix-SID on top of the stack (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665ExplicitNullReplacesPrefixSID |
unit/verify | unproven |
| positive | TestRFC8665NoPHPKeepsPrefixSIDLabel |
unit/verify | unproven |
RFC8665-5-12
If both NP-Flag and E-Flag are set, any upstream neighbor MUST replace the Prefix-SID with an Explicit NULL label (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665NoPHPKeepsPrefixSIDLabel |
unit/verify | unproven |
| positive | TestRFC8665ExplicitNullReplacesPrefixSID |
unit/verify | unproven |
RFC8665-5-13
When the M-Flag is set, the NP-Flag and the E-Flag MUST be ignored on reception (§5)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665MappingServerFlagClearHonorsNPAndE |
unit/verify | unproven |
| positive | TestRFC8665MappingServerFlagIgnoresNPAndE |
unit/verify | unproven |
RFC8665-6.1-1
Reserved bits (5-7) in the Adj-SID Flags MUST be zero when sent and are ignored when received (§6.1)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665AdjSIDReservedFlagBitsIgnoredOnReceive |
unit/verify | unproven |
| positive | TestRFC8665AdjSIDReservedFlagBitsZeroOnSend |
unit/verify | unproven |
RFC8665-6.1-2
When the P-Flag is set, the Adj-SID MUST be persistent (§6.1)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| positive | TestRFC8665AdjSIDNeverClaimsPersistence |
unit/verify | unproven |
RFC8665-6.2-1
When the P-Flag is set, the LAN Adjacency SID MUST be persistent (§6.2)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| positive | TestRFC8665AdjSIDNeverClaimsPersistence |
unit/verify | unproven |
RFC8665-7.1-1
An SR Mapping Server MUST use the OSPF Extended Prefix Range TLV when advertising SIDs for prefixes (§7.1)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-7.1-1, so no unit is bound to it.
RFC8665-7.1-2
When propagating an OSPF Extended Prefix Range TLV between areas, ABRs MUST set the IA-Flag (§7.1)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-7.1-2, so no unit is bound to it.
RFC8665-7.1-3
Multiple Mapping Servers advertising Prefix-SIDs for the same prefix MUST advertise the same Prefix-SID (§7.1)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-7.1-3, so no unit is bound to it.
RFC8665-7.2-1
To support SR in a multiarea environment, OSPFv2 MUST propagate Prefix-SID information between areas (§7.2)
Audit verdict: not audited: no reader has judged these tests
No test carries RFC8665-7.2-1, so no unit is bound to it.
RFC8665-7.4.1-1
If a P2P-link adjacency transitions to a state lower than 2-Way, the Adj-SID Advertisement MUST be withdrawn from the area (§7.4.1)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665AdjSIDWithdrawKeyedByAdjacency |
unit/verify | unproven |
| positive | TestRFC8665AdjSIDWithdrawnWhenAdjacencyDrops |
unit/verify | unproven |
RFC8665-10-1
Implementations MUST ensure malformed TLVs/sub-TLVs are detected and do not provide a crash vulnerability (§10)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665TruncatedTLVsRejectedWithoutPanic |
unit/verify | unproven |
| positive | TestRFC8665WellFormedTLVsDecode |
unit/verify | unproven |
RFC8665-9-1
If the length of a new TLV/sub-TLV is invalid, the LSA is considered malformed and MUST be ignored (§9)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665TruncatedTLVsRejectedWithoutPanic |
unit/verify | unproven |
| positive | TestRFC8665WellFormedTLVsDecode |
unit/verify | unproven |
RFC8665-3.1-7
For SR-Algorithm TLV, SID/Label Range TLV, and SRLB TLV advertisement, area-scoped flooding is REQUIRED (§3.1, §3.2, §3.3)
Audit verdict: not audited: no reader has judged these tests
| Polarity | Test | Kind and tier | Proof state |
|---|---|---|---|
| negative | TestRFC8665SRCapabilityTLVsAbsentFromOtherScopes |
unit/verify | unproven |
| positive | TestRFC8665SRCapabilityTLVsAreAreaScoped |
unit/verify | unproven |
Extraction sign-off
No extraction sign-off exists for RFC 8665, so no reviewer has walked its text sentence by sentence.
Superseded
No document obsoletes RFC 8665, so its obligations are stated where they were written.