Skip to content

Commit db295e0

Browse files
yasukeblkclaude
andcommitted
Review fixes 6: the rest of the polish (switching, OSPF, IPv6, quiz)
- show interfaces counters / counters errors; clear counters on one interface; Last clearing as elapsed time; CDP duplex warning every minute; status columns right-aligned; Gig media type - An unanswered ARP still floods and teaches the switches - A storm names only the loop, in cabled order - OSPF show: interface areas counted, areas in order, ABR line in show ip protocols - IPv6: first echo queued, not lost; neighbours age REACH -> STALE with real ages and FE80 entries - Quiz: nine near-duplicates rewritten (old answers cleared once); #75 explanation Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
1 parent 79feae5 commit db295e0

10 files changed

Lines changed: 158 additions & 51 deletions

File tree

‎CHANGES.md‎

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,32 @@
11
# Lab4Net changes
22

3+
## Review fixes, part 6: the rest of the polish (switching, OSPF, IPv6, quiz)
4+
5+
This finishes `docs/REVIEW-FIXES.md`. Two small things the review listed as owed (`show ip ospf database`, suspending a Telnet session) are on the Still owed list.
6+
7+
**Switching**
8+
- `show interfaces counters` and `show interfaces counters errors`: the standard views for chasing a duplex problem (FCS errors and runts on the full-duplex end, late collisions on the half-duplex end).
9+
- `clear counters fa0/1` asks about "this interface"; "Last clearing" shows the time since the clear.
10+
- The CDP duplex-mismatch warning repeats every minute while the mismatch lasts.
11+
- `show interfaces status` right-aligns Duplex and Speed like IOS, and a switch's gigabit port reports 10/100/1000BaseTX.
12+
- An ARP nobody answers (pinging an unused address) still floods the VLAN; every switch learns the sender, and the trace says nobody answered.
13+
- A broadcast storm names only the switches on the loop, and the map animates the loop's real links.
14+
15+
**OSPF show commands**
16+
- Areas set with `ip ospf 1 area 0` on an interface count in `show ip ospf` and `show ip protocols`, areas are listed in number order, and `show ip protocols` says "It is an area border router" and lists the interfaces configured explicitly.
17+
18+
**IPv6**
19+
- The first IPv6 echo is no longer lost: IOS queues a packet while it resolves a neighbour (unlike ARP), so even a cold `ping` shows `!!!!!`.
20+
- `show ipv6 neighbors` shows each entry's age in minutes, REACH for 30 seconds after it was confirmed and STALE after that, and the FE80 link-local neighbours.
21+
22+
**Theory quiz**
23+
- Nine near-duplicate questions were rewritten to test something new: the TCP handshake, the BSSID, Terraform, NTP stratum 16, `logging trap warnings`, the PUT verb, unique local addresses, the management plane and NETCONF. Old answers to those nine are cleared once, so the Theory Check trophy counts them fresh.
24+
- The `ip name-server` question explains that the hang after a typo comes from `ip domain-lookup` being on with no reachable name server.
25+
26+
Tests: new checks in `switching.cjs`, `duplex.cjs`, `ospfarea.cjs`, `ping6.cjs` (now expects the queued first echo), `quiz.cjs` and `pageflows.cjs`.
27+
28+
Verification: all seventeen suites pass.
29+
330
## Review fixes, part 5: polish for exams, Telnet and the extended ping
431

532
From the Polish list of `docs/REVIEW-FIXES.md`.

‎docs/HANDOFF.md‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# Lab4Net handoff
22

3-
State as of the multi-area OSPF and wireless build on `main` (9 Oct 2026). Eleven builds landed on 9 Oct: multi-area OSPF plus the wireless-wiring lab, the campaign, the follow-ups (storms, neighbours in the MAC table, per-VLAN aging, IPv6 learning), switching realism, prompts, ping source, exam sim, theory bank and sandbox rewards, duplex/speed, live IPv6 pings, boss fights. Read this before touching anything. The lab library is being expanded phase by phase following `docs/LESSONS-SPEC.md`.
3+
State as of the review fixes on `main` (9 Oct 2026): every item in `docs/REVIEW-FIXES.md` is done or listed under Still owed. Eleven builds landed on 9 Oct: multi-area OSPF plus the wireless-wiring lab, the campaign, the follow-ups (storms, neighbours in the MAC table, per-VLAN aging, IPv6 learning), switching realism, prompts, ping source, exam sim, theory bank and sandbox rewards, duplex/speed, live IPv6 pings, boss fights. Read this before touching anything. The lab library is being expanded phase by phase following `docs/LESSONS-SPEC.md`.
44

55
## What this is
66

@@ -265,6 +265,7 @@ For anything visual, open the page in a real browser and look at it. Earlier in
265265
- Syslog messages appear on the console of the device where the command was typed; other devices only log them (show logging, syslog server). The NTP clock stays synchronised as long as its server is configured. Log timestamps use the browser's clock.
266266
- show access-lists lists standard entries in sequence order; real IOS may list host entries first.
267267
- Ping and traceroute use ICMP for every probe (real IOS traceroute uses UDP), so an extended ACL that permits only some ICMP or UDP can disagree slightly with real gear. Unreachables are sent only for no-route and ACL drops; a failed next-hop ARP on a router gives timeouts. Extended ping has `repeat` and `size` but not `source`, and there is no interactive extended ping. Playback runs at 40% of real time (`PACE_SCALE`), at Yasuke's request.
268+
- IPv6 neighbours age REACH (30 s) then STALE, with no DELAY or PROBE states; the first echo is queued, not lost.
268269
- No wireless. IPv6 has static routing only: no OSPFv3, no DHCPv6, no IPv6 ACLs. Only the Layer 3 switch model (a 3560) routes; 2960s reject ip routing and static routes.
269270
- HSRP has no object tracking and fails over at once rather than after the 10-second hold time. The DHCP snooping rate limit is stored and shown but not enforced. DAI has no ARP ACLs or extra validation options.
270271
- Incidents are fixed scenarios; randomised faults live in the exam sim's sabotage mode. Sandbox device models are fixed (3 or 5 port routers, 10 or 26 port switches).
@@ -279,8 +280,8 @@ For anything visual, open the page in a real browser and look at it. Earlier in
279280

280281
Carry this list forward and keep it in every summary.
281282

282-
- The rest of the Polish list in `docs/REVIEW-FIXES.md` (switching, OSPF show commands, IPv6, quiz duplicates), in progress on 9 Oct.
283+
- `show ip ospf database` (from the review's Polish list; not built yet).
283284
- Suspending a Telnet/SSH session: Ctrl+Shift+6 then x, `show sessions`, `resume`, `disconnect` (from the review's Polish list).
284-
- Nothing. Yasuke decided on 9 Oct 2026 to keep "test it yourself" (at least one show, ping, traceroute, telnet, ssh, ipconfig or arp during the run) as a requirement for an S rank. Do not remove it.
285+
Standing decision (not owed): Yasuke decided on 9 Oct 2026 to keep "test it yourself" (at least one show, ping, traceroute, telnet, ssh, ipconfig or arp during the run) as a requirement for an S rank. Do not remove it.
285286

286-
His most recent direction (9 Oct 2026): build freely in milestones, accuracy first, keep the arcade design, keep every test green, and keep this list current. Done on 9 Oct: the console realism fixes, the guide window, switching realism, prompts (passwords, Telnet/SSH sessions, reload), ping/traceroute with a source and the interactive dialogs, the exam sim (seeded sabotage faults, daily challenge, boss fights), the 110-question theory bank, sandbox rewards, duplex/speed mismatch effects, live IPv6 pings, boss fights, the switching follow-ups (storms, neighbour rows, per-VLAN aging, IPv6 learning) the campaign, multi-area OSPF and the wireless-wiring lab. Nothing is owed; ideas for later: more IPv6 (an OSPFv3 engine would be the big one), a second campaign once the first is cleared.
287+
His most recent direction (9 Oct 2026): build freely in milestones, accuracy first, keep the arcade design, keep every test green, and keep this list current. Done on 9 Oct: the console realism fixes, the guide window, switching realism, prompts (passwords, Telnet/SSH sessions, reload), ping/traceroute with a source and the interactive dialogs, the exam sim (seeded sabotage faults, daily challenge, boss fights), the 110-question theory bank, sandbox rewards, duplex/speed mismatch effects, live IPv6 pings, boss fights, the switching follow-ups (storms, neighbour rows, per-VLAN aging, IPv6 learning) the campaign, multi-area OSPF and the wireless-wiring lab, then every item of the review in `docs/REVIEW-FIXES.md`. Owed: the two items above; ideas for later: more IPv6 (an OSPFv3 engine would be the big one), a second campaign once the first is cleared.

‎docs/REVIEW-FIXES.md‎

Lines changed: 15 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -137,24 +137,24 @@ Rules from docs/HANDOFF.md still apply: accuracy first, never weaken a test, ful
137137
- `copy run start` ignores a typed destination filename **Done (milestone 5).** Another name saves a copy in NVRAM ("… bytes copied") and leaves the startup-config alone. Test: `prompts.cjs`.
138138
- extended ping: answering "Sweep range of sizes" with `y` skips the min/max/interval questions, and the DF-bit and timeout answers are ignored **Done (milestone 5).** The sweep asks min, max and interval and pings every size; DF set on a packet over the 1500-byte MTU answers `M` (could not fragment); the timeout sets how long each `.` takes. Test: `prompts.cjs`.
139139
- **Switching:**
140-
- `show interfaces counters` and `show interfaces counters errors` are missing; they're the standard duplex-troubleshooting views
141-
- `clear counters fa0/1` should ask "Clear "show interface" counters on this interface [confirm]"
142-
- "Last clearing" shows the clock time instead of time elapsed
143-
- the CDP mismatch warning should repeat every 60 s
144-
- `show interfaces status` should right-align Duplex and Speed
145-
- Gig ports say "media type is 10/100BaseTX"
146-
- an ARP that gets no reply should still flood the VLAN and teach switches the sender's MAC
147-
- the storm description names switches that aren't in the loop, and the map animates a link that doesn't exist
140+
- `show interfaces counters` and `show interfaces counters errors` are missing; they're the standard duplex-troubleshooting views **Done (milestone 6).** Test: `duplex.cjs`.
141+
- `clear counters fa0/1` should ask "Clear "show interface" counters on this interface [confirm]" **Done (milestone 6).** Test: `duplex.cjs`.
142+
- "Last clearing" shows the clock time instead of time elapsed **Done (milestone 6).** hh:mm:ss since the clear, on the engine clock. Test: `duplex.cjs`.
143+
- the CDP mismatch warning should repeat every 60 s **Done (milestone 6).** Test: `duplex.cjs` (on a router-to-router link; a PC NIC sends no CDP).
144+
- `show interfaces status` should right-align Duplex and Speed **Done (milestone 6).** Test: `switching.cjs`.
145+
- Gig ports say "media type is 10/100BaseTX" **Done (milestone 6).** A switch Gig port is 10/100/1000BaseTX (routers stay RJ45). Test: `switching.cjs`.
146+
- an ARP that gets no reply should still flood the VLAN and teach switches the sender's MAC **Done (milestone 6).** The trace shows the flood and "nobody answered". Test: `switching.cjs`.
147+
- the storm description names switches that aren't in the loop, and the map animates a link that doesn't exist **Done (milestone 6).** The storm is the loop itself, from where the two paths of the broadcast split, in cabled order. Test: `switching.cjs`.
148148
- **OSPF show commands:**
149-
- `show ip ospf` / `show ip protocols` count areas from `network` statements only, missing `ip ospf 1 area 0`
150-
- areas should be listed in number order
151-
- `show ip protocols` should say "It is an area border router"
152-
- `show ip ospf database` is missing (Still owed)
153-
- **IPv6:** neighbours are always REACH with age 0 (no STALE/DELAY/PROBE, no FE80 entries). IOS usually holds the first IPv6 echo while it resolves the neighbour, so `!!!!!` is often seen first time. Check before changing; if unsure, leave it and note it.
149+
- `show ip ospf` / `show ip protocols` count areas from `network` statements only, missing `ip ospf 1 area 0` **Done (milestone 6).** Interface areas count too, and `show ip protocols` lists them under "Routing on Interfaces Configured Explicitly". Test: `ospfarea.cjs`.
150+
- areas should be listed in number order **Done (milestone 6).** Test: `ospfarea.cjs`.
151+
- `show ip protocols` should say "It is an area border router" **Done (milestone 6).** Test: `ospfarea.cjs`.
152+
- `show ip ospf database` is missing (Still owed) **Done (milestone 6).** Not built; on the Still owed list in HANDOFF.md.
153+
- **IPv6:** neighbours are always REACH with age 0 (no STALE/DELAY/PROBE, no FE80 entries). IOS usually holds the first IPv6 echo while it resolves the neighbour, so `!!!!!` is often seen first time. **Done (milestone 6).** Checked: IOS queues packets awaiting neighbour resolution (the `ipv6 nd resolution data limit` command sets that queue), so the first IPv6 echo is no longer lost. Entries keep the time they were confirmed: Age in minutes, REACH for 30 seconds (the reachable time), then STALE; each end also learns the other's FE80 link-local address. DELAY and PROBE are not modelled. Test: `ping6.cjs`.Check before changing; if unsure, leave it and note it.
154154
- **Exam faults:** the `gw` fault uses the gateway +1 without checking that address is free. **Done (milestone 5).** It now picks a free address in the switch's subnet. Test: `exam.cjs`.
155155
- **Quiz:**
156-
- near-duplicate question pairs to merge or vary: 13/29, 4/90, 17/98, 7/69, 8/70, 16/97, 11/104, 3/99, 2/18/101
157-
- #75's explanation should say the hang comes from `ip domain-lookup` being on (the default) with no reachable name server
156+
- near-duplicate question pairs to merge or vary: 13/29, 4/90, 17/98, 7/69, 8/70, 16/97, 11/104, 3/99, 2/18/101 **Done (milestone 6).** The later question of each pair was rewritten to test something else (TCP handshake, BSSID, Terraform, NTP stratum 16, logging trap warnings, PUT, unique local addresses, the management plane, NETCONF as a southbound protocol); indices kept, and old saved answers to those nine are cleared once on load. Test: `quiz.cjs` (each pair has different answers), `pageflows.cjs` (the one-time clear).
157+
- #75's explanation should say the hang comes from `ip domain-lookup` being on (the default) with no reachable name server **Done (milestone 6).** Test: `quiz.cjs`.
158158
- **Speed:** the Exam sim dialog builds the daily challenge (~240 ms) every time it opens; cache it per day. **Done (milestone 5).** Built once per day.
159159

160160
---

0 commit comments

Comments
 (0)