Netwerk-chaostesten op Windows
Chaostesten betekent iets met opzet kapotmaken, terwijl je toekijkt, om te ontdekken wat je software eraan doet. Op netwerkniveau is dat precies wat deze tool is: een manier om een storing in één applicatie te injecteren en te zien of die het overleeft.
De fouten die je kunt injecteren
| Fout | Wat het nabootst |
|---|---|
| Verlies, beschadiging, duplicatie | Een verslechterd pad. Pakketten verdwijnen, komen beschadigd aan of komen twee keer aan. |
| Latentie, jitter, uitschieters | Een traag of instabiel pad, inclusief de stilstand van enkele seconden die timeouts breekt. |
| Verbindingsresets | Een firewall of load balancer die verbindingen midden in de overdracht doodt. |
| Uitval van de verbinding | Het pad dat verdwijnt en terugkomt, in een cyclus. |
| Geblokkeerd adres of poort | Eén afhankelijkheid onbereikbaar terwijl al het andere werkt. |
| Internet weg, LAN in leven | De vorm van een captive portal: lokaal werkt, de wereld niet. |
Wat chaos van ruis scheidt: herhaalbaarheid
Een willekeurige fout die niet kan worden teruggespeeld levert een verhaal op, geen bugrapport. Elke willekeurige beslissing hier komt uit een seed, dus dezelfde opdracht reproduceert dezelfde run: dezelfde verloren pakketten, dezelfde jitter, in dezelfde volgorde:
BeanNetworkTester.exe --loss 15 --rst-prob 5 --seed 42 --target myapp.exe --duration 120
Dat is het verschil tussen “vorige dinsdag ging het één keer mis” en een falende test die iemand anders kan draaien.
In een pipeline
De opdrachtregel meldt via afsluitcodes, dus een build kan “de applicatie faalde” onderscheiden van “de tool kon niet starten”, en de sessie eindigt vanzelf, dus er is geen opruimstap om te vergeten:
BeanNetworkTester.exe --loss 10 --rst-prob 5 --target myapp.exe --duration 90 --format json > chaos.ndjson
Een reeks fouten in plaats van één is een scenariobestand, en die zijn ook herhaalbaar. Zie scenario’s in de tijd en netwerktests in CI voor de afsluitcodes en de runner die ervoor nodig is.
Waar het effect ophoudt
Twee grenzen, en beide zijn bewust. De verstoring bereikt één proces, PID, adres of poort als je erop richt, dus de computer waarop je werkt blijft werken. En het is één machine: dit is foutinjectie voor een client en zijn verbinding, niet voor een cluster. Als je chaos zoekt over diensten en nodes heen, is dat een ander soort tool, en deze is het onderdeel dat het netwerk onder één Windows-applicatie breekt.
Alles is ter plekke terug te draaien. STOP herstelt het netwerk, een tijdslimiet doet hetzelfde, en een watchdog in de tool zet het onderscheppen stop als de tool zelf sterft: een fout die je hebt geïnjecteerd mag nooit langer leven dan de run die haar injecteerde.