Under attack?
What you receive after an attack

“An attack was blocked” is not a report.

Every mitigation leaves a record: which rule fired, what threshold it crossed, what the traffic was made of, and a packet capture you can open in your own tools without taking our word for any of it. This page shows the shape of that record, and states plainly what the numbers in it can and cannot support.

A worked example

Below is an incident record in the format you receive. It is an illustrative example, not a real customer event.

Illustrative sample - these figures are not measurements. The values shown are representative of the format and of the kind of attack we see, so that you know what the deliverable looks like before you need one. They do not describe any real incident, customer or prefix. Figures quoted elsewhere on this site as measured are measured; everything on this page is an example.
Sample

Incident record - UDP amplification

Example format · addresses redacted as they would be in a real record
CW-INC-00000
Destination
203.0.113.0/24
Rule that fired
udp · dst /24 aggregate
Started
2026-06-14 21:04:37 UTC
Ended
2026-06-14 21:11:02 UTC
Duration
6 m 25 s · 3 bursts
Threshold crossed
100 000 pps
Peak rate
12 480 000 pps
Peak volume
142 Gbps
Delivered to customer
0 pps of attack traffic
Service impact
None recorded

Traffic composition at peak

UDP, source port 53 (DNS responses)58.2 %
IP fragments, no transport header41.8 %
Distinct source addresses sampled6 480
Distinct source networks (/16)1 902
Mean frame size1 392 B
TTL distributionconsistent with initial 64, 6-15 hops

Packet sample (from the capture attached to this record)

21:04:39.118204 IP 198.51.100.24.53 > 203.0.113.19.41288: UDP, length 1416
  0x0000:  4500 05a4 0000 4000 3711 ... f1e8 8380 0001 00
21:04:39.118231 IP 192.0.2.201.53  > 203.0.113.7.52104:  UDP, length 1408
21:04:39.118255 IP 198.51.100.77.53 > 203.0.113.212.9931: UDP, length 1421
  [ 41.8 % of frames in this capture are fragments and carry no port numbers ]

What the record concludes

  • Spoofed reflection, not a botnet. Every packet that carries a transport header arrives from source port 53 carrying a DNS response, to destination ports nothing asked from. The sources are open resolvers answering queries forged with the customer's addresses.
  • Aimed at the link, not the packet rate. A mean frame of 1 392 bytes is roughly twenty times the cost per packet of a minimum-sized flood. The objective was the uplink.
  • Spread across the prefix. No single address exceeded its own budget. The aggregate rule for the /24 is what fired, which is also why a per-IP threshold would have seen nothing.
  • Two fifths of it was invisible to port-based rules. Fragments after the first carry no port numbers at all, so any filter written on ports sees none of that share.

What is in every record

The same four things, whatever the vector, so records can be compared to each other and to your own monitoring.

The decision

Which rule fired, what its threshold was and by how much it was exceeded. Not a severity colour - the actual number and the actual limit, so you can tell a rule that was nearly wrong from one that was obviously right.

The composition

What the traffic consisted of: protocols, source and destination ports, packet sizes, TTL distribution, fragment share and how many distinct sources and networks were sampled. Enough to tell spoofing from a botnet without asking us.

The capture

A packet capture in ordinary pcap format, openable in Wireshark or tcpdump. We would rather you checked. An operator that shows you only its own summary is asking you to trust the summary.

The timeline

Start, end, duration and burst count, measured from when traffic crossed the threshold rather than from when somebody noticed. A pulse-wave attack that stops and returns eleven times is one incident with eleven bursts, not eleven incidents.

The counting method, and what it does not support

Read this before quoting a number from us

Rates are sampled, not counted packet by packet. Telemetry is statistical, so a figure is an estimate with an error bar that widens as the rate falls. At high rates it is tight; for a small attack the sample count is what limits it, and the record says how many samples stood behind the figure.

Bandwidth is per destination, not per vector. Byte counters are kept per destination address. When several things arrive at once, the volume figure is the destination's total - the record says what share of the packets the firing rule accounted for, and below a high share that total should not be attributed to the attack.

A peak is a peak, not a sustained rate. The headline figure is the busiest measurement window in the incident. Averaging it across the duration gives a very different and much smaller number, and both are in the record for that reason.

Some attacks are not classified. Where a vector cannot be qualified from the traffic, the record says so rather than guessing a label. An unclassified attack is still mitigated and still counted; it simply is not evidence about a vector.

We do not publish other customers' events. No prefix, no address and no customer from one account appears in another's reporting, or on this website.

How you get it

Portal

Attack history for your prefixes, with the record and the capture attached to each event.

API

The same records over REST, for pulling into your own monitoring or incident tooling.

From a person

During an incident, from the engineer on the NOC line who is already looking at it. Not a ticket queue and not an autoresponder.