Theoretical foundations and architecture

The acceptance test plan (ATP) is the stage before a network enters commercial service: a reproducible series of tests T01-T12 with expectations and numeric thresholds written in advance; each result is recorded as Pass or Fail together with evidence (command output, generator files, syslog). The project core is IS-IS + SR-MPLS + TI-LFA; RSVP FRR is not used. The main tests: 1. Link failure PE1-P1 (T03): with a 10 000 pps flow at most 500 packets are lost (50 ms) thanks to TI-LFA; the failure method is stated explicitly (loss of carrier, not an administrative shutdown) and detection through BFD is a separate item with a threshold of about 350 ms. 2. Node failure P1 (T04): traffic uses the second plane and converges within 1 s; sessions to RR1 (behind P1) drop while those to RR2 stay. 3. RR1 failure (T05): RR2 keeps the sessions and existing flows are not lost. 4. BNG (T11): 5000 PPPoE logins in 60 s, at least 99.9% successful, AAA response under 1 s. 5. MTU (T02): a 1500 ping with DF in VRF A, B and EVI 300 and a 1600 ping over the links. 6. Isolation (T06): probes A -> B, A -> SUBS and C -> A find no foreign prefixes. A leak between customers (T06) and an unverified rollback (T12) block acceptance regardless of the other results.

What acceptance is and how it differs from "everything pings"

Acceptance (ATP) is a reproducible series of tests with expected results and numeric thresholds recorded in advance. It proves that the network meets the requirements from sp-design, not that it "works right now". Entry conditions: all phases of sp-build-plan are built, the gates are passed, clocks are synchronised over NTP, and the baseline outputs and configurations are saved. Each test has an ID (T01-T12), a method of fault injection, an expected result and a KPI; the result is recorded as Pass or Fail together with evidence (command outputs, traffic generator graphs, syslog timestamps).

Test matrix

IDTestFault injection methodExpected resultKPI
T01Baseline connectivity and labelsping and ping mpls between all loopbacksthe label to each SID = 16000 + index on all nodes56 pairs, 0 mismatches, 0 loss
T02MTUping 1500 with DF in VRF A, B and EVI 300; 1600 over the linkspackets pass without fragmentation100%
T03PE1-P1 link failurephysical disconnection under a 10 000 pps flowTI-LFA switches to P2, then the IGP convergesat most 500 lost packets (50 ms)
T04P1 node failurepower off P1traffic goes through plane 2; sessions with RR1 go down (RR1 is behind P1), sessions with RR2 stayconvergence at most 1 s; services alive
T05RR1 failurestop BGP or reboot RR1RR2 keeps the sessions, routes are not withdrawn0 loss for existing flows
T06Customer isolationprobes A -> B, A -> SUBS, C -> Ano foreign prefixes in VRFs and EVI100% blocking, 0 packets
T07Inter-AS customer Breset the ASBR1 eBGP, exceed maximum-prefixB routes return, foreign RTs are droppedat most 120 s to recover
T08EVPN-MPLS of customer Cmove a MAC from PE2 to PE3Type 2 with a new sequence number, traffic goes to PE3at most 3 s
T09QoS under load148 Mbit/s into a 100 Mbit/s channel (voice 8, video 30, data 50, bulk 60)voice is not lost0% voice loss, delay variation at most 10 ms
T10SR policy color 100trace and disconnect P2traffic follows the segment list through P2; rebuilds on failurethe path matches the plan, loss at most 50 ms
T11BNG under load5000 PPPoE logins in 60 s (about 83 per second)subscribers get an address and a profile from RADIUSat least 99.9% successful, AAA answer under 1 s
T12Rollback and automationcommit confirmed / configure replace, Ansible --checkthe configuration returns, no differencesat most 5 minutes, empty diff

How to measure convergence time

Loss is measured with a traffic generator, not with the ping command: ICMP once a second does not see an event of 50 ms. A 10 000 pps flow gives a resolution of 0.1 ms; the outage duration = the number of lost packets divided by the rate (500 packets at 10 000 pps = 50 ms). The measurement is repeated at least three times, and the worst result goes into the report, not the average. Both ends of the flow are synchronised over NTP, and the event marks are taken from syslog with milliseconds.

It is important to separate detection from repair. TI-LFA performs the switch locally as soon as the node has seen the failure. On loss of carrier (a physical break, LOS) this happens within a few milliseconds, and the total outage fits into 50 ms. If the failure is not visible physically (intermediate L2 equipment), it is detected by BFD with 100 ms x 3 timers: the outage is then about 300-350 ms. That is why T03 states the failure method explicitly: an administrative shutdown on one side is not equal to a fibre break, and the BFD check is recorded as a separate item T03b with a 350 ms threshold. After the switch the normal IGP convergence follows; with micro-loop protection enabled there must be no repeated loss, and this is checked too.

Label consistency

T01 checks the main SR property: for each of the eight SIDs on every node the outgoing label equals the SRGB base of the next node plus the index. With a single SRGB 16000-23999 this is simply 16000 + index, for example 16002 for PE2 on all nodes. There are 8 x 7 = 56 such pairs; any mismatch means a wrong SRGB, a duplicate index or an LFIB that did not update. For the end-to-end check ping mpls and traceroute mpls to the loopback of every PE are used: they check exactly the path by labels, not only the routing.