Itnetic logo Itnetic Technologies
  • Pricing
  • Discord
Game protectionMinecraft serversBot joins, ping floods and connection attacks stopped before they reach your server. No plugin, no mod, nothing for players to install.Explore game protection →

For websites and APIs

  • DDoS ProtectionLayer-7 mitigation for attacks that look like real traffic.
  • Web CDNEdge caching on the network that filters your attacks.
  • PricingFree tier, then plans from €5/month.

How it works

  • The edge pipelineChallenge gate, behavioral signatures, WAF, rate limits and cache.
  • Logs & analyticsPer-request visibility and the exact verdict behind every block.
  • NetworkPoints of presence across Europe, North America and Asia Pacific.

Learn

  • GuidesPlain-English explainers on DDoS, WAFs, rate limiting and CDNs.
  • HTTP header checkGrade any site’s security headers in a few seconds.
  • FAQThe questions we get asked before people sign up.
  • ChangelogWhat shipped, and when.

Compare

  • vs Cloudflare
  • vs DDoS-Guard
  • vs CDN77
  • vs WEDOS
  • Status ↗
Log inUnder attack?
Game protectionDDoS ProtectionWeb CDNPricing
The edge pipelineLogs & analyticsNetwork
GuidesHTTP header checkFAQChangelogvs Cloudflarevs DDoS-Guardvs CDN77vs WEDOSStatus ↗
PricingDiscord
Log inUnder attack?

Learn · Volumetric attacks

What is a UDP flood attack?

A UDP flood is the bluntest attack on the internet: packets with no handshake, no connection and usually no honest source address, aimed at your IP faster than your uplink can carry them or your kernel can throw them away.

Updated October 12, 2026 · Itnetic team — reviewed by Petr Chlíbek, founder

Key takeaways

  • UDP is connectionless, so there is nothing to refuse. By the time any rule you wrote gets to look at a packet, it has already spent your bandwidth and a slice of your CPU.
  • Two separate resources fail, and each hides from the other’s dashboard: your uplink (big packets, measured in Gbps) and your packet-processing path (tiny packets, measured in millions of packets per second).
  • A UDP flood aimed at a port you do not even serve is worse than a no-op — Linux answers each packet with an ICMP port-unreachable, conscripting your server into an outbound flood of its own.
  • Server tuning raises the ceiling and never changes the outcome, because the bandwidth is gone before your kernel sees the packet. For an HTTP application the real win is having no reachable UDP service at all — which is what putting the origin behind an edge actually buys you.

UDP does not ask permission

TCP opens a connection by agreement. Three packets are exchanged, and a server that is unwilling or unable to talk can decline before anything is allocated. That handshake is a cost for the attacker and a decision point for you.

UDP has neither. RFC 768 is three pages long and describes an eight-byte header stapled to a payload: source port, destination port, length, checksum. No handshake, no sequence numbers, no acknowledgements, no state at either end. A sender transmits; whether anything is listening is not its problem.

That is the entire attack. A UDP flood is simply a very large number of UDP packets sent at your address. There is no protocol step to fail, no queue that fills with half-finished work, no clever abuse of a specification. The first thing your server can do about a UDP packet is receive it — and receiving it is already the damage.

This is why UDP floods remain, decades on, one of the most common attack shapes in the wild: they need no vulnerability, no reconnaissance, and nothing more sophisticated than bandwidth.

Two resources fail, and they hide from each other

"UDP flood" describes a method, not a size, and the same method breaks three different things depending on how the packets are shaped.

Flood shapeTypical packetWhat runs out firstMeasured in
Bandwidth exhaustion1,000–1,500 bytes, often padded to the MTUYour uplink, or the shared host port you sit behindGigabits per second
Packet-rate exhaustion64–128 bytesInterrupt and softirq budget, per-packet rule evaluation, connection-tracking insertsMillions of packets per second
Service exhaustionWhatever the real protocol on that port expectsThe application's receive buffer and its own parsing costRequests per second

The arithmetic is worth internalising, because a flood optimised for one of these is close to invisible on the graph you would use to spot the other. A 64-byte Ethernet frame occupies 84 bytes of wire time once the preamble and inter-frame gap are counted, so:

Packets/sec (64-byte)Wire rateWhat it typically takes out first
100,000~67 MbpsA small VM's virtual NIC; any single-core packet path
1,000,000~0.67 GbpsConnection tracking, and most software firewalls doing per-packet rule chains
5,000,000~3.4 GbpsMid-range appliances and load balancers
14,880,00010 Gbps — line rateEverything that is not line-rate filtering upstream of you

Read the second column again. A packet rate that destroys most origins is a bit rate your uplink will not notice. If your monitoring plots megabits and not packets per second — which is the default nearly everywhere — a packet-rate flood looks like your server mysteriously becoming unreachable while the traffic graph stays calm. That misdiagnosis sends people restarting services for an hour.

The inverse case is the one people expect: 1,500-byte packets at the same 10 Gbps are only about 820,000 packets a second, trivial to process and completely fatal, because the link is full before any of them reach software at all.

Direct floods, reflection and amplification

The packets have to come from somewhere, and the three ways of arranging that differ in what you can do about them.

VariantWhat arrivesWhy attackers choose itWhat you can block
Direct floodUDP from the botnet's own addressesSimplest to launch; works with any rented capacityThe sources — this is the only variant where a blocklist is meaningful
Spoofed floodUDP with forged source addresses, usually random per packetThere is no attacker address to block, and every per-source counter you keep sees one packet per "client"Nothing by source; only by shape, port and protocol validity
Reflection / amplificationLarge replies from innocent public serversThe attacker spends 1 byte and you receive 50The ports the reflectors answer from — the replies are unsolicited by definition

Spoofing is possible at all because UDP never verifies the return address, and because ingress filtering (BCP 38) — the practice of networks refusing to forward packets with source addresses that cannot belong to their customers — was first recommended in 1998 and re-issued as a best current practice in 2000, and remains unevenly deployed a quarter of a century later.

Amplification is the industrial version of the same primitive, and it has its own page: DNS amplification attacks covers the reflector ecosystem, the amplification factors by protocol, and why the flood arrives from thousands of blameless servers. The distinction that matters here is that a direct UDP flood needs no reflectors, so there is no clean "unsolicited reply from source port 53" signature to filter on. The packets look like what they are: traffic to a port, from somewhere.

A third of the way between them, and increasingly common, is the subnet-spread flood: the same aggregate volume divided across every address in your /24 rather than concentrated on one host. Per-IP detection thresholds never trip, while the aggregate still saturates the upstream link everyone in that range shares.

The ICMP reply is part of the attack

Here is the detail that makes UDP floods uniquely self-reinforcing, and the one most server guides omit.

When a UDP packet arrives at a port where nothing is listening, a correctly behaving host does not stay silent — it replies with ICMP type 3, code 3: destination unreachable, port unreachable. The flood is therefore not merely ignored. Each packet costs you a reply: a new packet constructed, a route looked up, egress bandwidth consumed.

And if the source addresses were spoofed, those replies go to strangers. Your server becomes a reflector in someone else's direction — the phenomenon known as backscatter — which is how a victim ends up receiving abuse complaints during an attack on itself.

Linux rate-limits these replies (net.ipv4.icmp_ratelimit, with icmp_ratemask selecting which types are limited), which bounds the damage but does not remove the per-packet cost of deciding to suppress them. The practical consequence is a rule of thumb worth writing down: filter unwanted UDP with drop, never reject. A reject is an ICMP reply with extra steps.

The second quiet multiplier is connection tracking. Stateful firewalls track UDP "flows" by four-tuple even though UDP has no connections, and the default nf_conntrack_udp_timeout is 30 seconds. A spoofed flood with a random source address and port on every packet therefore creates a new table entry per packet, each held for half a minute. Against a default nf_conntrack_max of 262,144, a flood of one million packets per second fills the table in roughly a quarter of a second — after which the kernel drops traffic indiscriminately, including the connections carrying your real visitors. The log line is nf_conntrack: table full, dropping packet, and it is routinely misread as a server fault.

Confirming that it is a UDP flood

Two minutes of evidence before you change anything:

  • Count packets to closed ports. nstat -az | grep -i udp or netstat -su. A climbing UdpNoPorts means packets are arriving for ports you do not serve — close to diagnostic on its own. RcvbufErrors and InErrors climbing instead means the flood is hitting a port you do serve, and the application cannot drain its socket fast enough.
  • Know what you actually listen on. ss -lun lists your real UDP listeners. Most servers are surprised by this output.
  • Compare packet rate against bit rate. sar -n DEV 1 or ip -s link. High packets with flat bandwidth means a packet-rate flood; pinned bandwidth at an ordinary packet rate means large packets or amplification.
  • Check the NIC, not just the kernel. ethtool -S eth0 | grep -iE 'drop|miss|fifo'. Rising rx_dropped or rx_missed_errors means packets died in the ring buffer before the kernel ever saw them, which no firewall rule can influence.
  • Look at 100 packets. tcpdump -ni eth0 udp -c 100 -nn. Identical payload lengths and a fixed destination port say "generator". Source ports of 53, 123, 389, 1900 or 11211 say "reflection", and send you to the amplification guide instead.
  • Read your application log — it will be empty. If you serve a website or an API, your traffic is TCP. A UDP flood produces no entries at all: no slow requests, no errors, nothing. An access log full of plausible requests during an outage means you are looking at a Layer 7 attack, which is a different problem with a different answer.

That last check is the fastest fork in the road, and getting it wrong sends people writing WAF rules while a packet flood keeps the machine off the network.

What you can do on the server, and the ceiling it hits

All of this is worth doing on any internet-facing host. None of it decides the outcome, which is the point of the next section.

Default-deny UDP, with drop. Permit the handful of ports you genuinely serve and silently discard the rest. This removes the ICMP reply cost and the backscatter at once.

Keep UDP out of connection tracking. A notrack rule for your public UDP ports — or no stateful tracking on that interface at all — takes the table off the list of things that can fail first. Raising nf_conntrack_max helps proportionally; exempting the traffic helps categorically.

Give the NIC room and more than one core. ethtool -G raises the receive ring, and RSS/RPS spreads interrupts across cores so a flood does not pin core 0 while fifteen others idle. A single-queue virtual NIC is a hard ceiling that no sysctl moves.

Size the receive buffer of the service you do run. net.core.rmem_max plus an explicit SO_RCVBUF buys a deeper queue for bursts. It buys nothing for a sustained flood; it only moves where the drop happens.

Drop in the driver, not in the stack. An eBPF program at the XDP hook discards a packet before an skb is even allocated, which is roughly an order of magnitude cheaper than an iptables rule. If you are going to filter locally, filter here.

Per-source rate limits work against a direct flood from real addresses and do essentially nothing against a spoofed one, because every packet presents a different "source".

Taken together these might raise the packet rate you survive by ten or twenty times. What none of them change is the sentence that governs every volumetric attack: once the packet is on your link, the bandwidth is already spent. Every rule you add is work you perform per attack packet, on hardware that an attacker can out-scale for a few euros an hour. This is the same ceiling described in what DDoS mitigation actually is, and UDP is where it is hit hardest.

There is one more consequence worth planning for before it happens. Most hosting providers protect their own network before they protect you: when an attack on your address threatens shared capacity, the standard response is to null-route the IP — discard all traffic to it, upstream, for an hour or several. Your server is then perfectly healthy, idle, and unreachable. That is not a provider failing; it is the documented policy of nearly every budget host, and it is why "my origin has a firewall" is not a plan.

Where a UDP flood is actually stopped

Upstream, and in a specific order — cheapest decision first, because a defense costing more per packet than the attack does is only a slower way to lose.

  1. Absorption capacity in the carrier network. The flood has to land somewhere with room for it, before the last mile that leads to you. For volumetric UDP there is no substitute for this, and no amount of cleverness replaces it.
  2. Stateless filtering at line rate. UDP to a port nothing serves, a reply from a reflector port that was never queried, a malformed length field, a fragment that cannot be reassembled: all droppable on sight, in the driver, with no state kept and no memory allocated. This is where tens of millions of packets per second are dealt with.
  3. Protocol identity per flow. A filter that knows which protocol legitimately belongs on a port can discard anything that is not that protocol in the first packet, rather than rate-limiting a port it does not understand.
  4. No exposed UDP service at all. The strongest defense is structural rather than clever. If the thing you are protecting speaks HTTP, there is no reason for any UDP port on your origin to be reachable from the internet — and a service that cannot be addressed cannot be flooded.
  5. Per-source caps and kernel drops for proven sources, which matter for unspoofed floods and are a waste of table space against spoofed ones.

And one prerequisite that sits outside the list because it silently voids all of it: your origin must be unreachable except through the protection network. If an attacker can still address packets to your server's real IP, none of the layers above are in the path — the flood goes around them. That is the most common reason protection "did not work", and the full checklist is in how to hide your origin IP address.

The QUIC exception

"Block all inbound UDP" has been safe advice for most web servers for thirty years. HTTP/3 ends that: QUIC runs over UDP, normally on port 443, so a modern web stack may genuinely need a UDP listener.

QUIC was designed with this in mind — an endpoint must validate the client's address before sending much, via a Retry packet, and RFC 9000 caps what a server may send to an unvalidated address at three times what it received, which bounds reflection by specification. What it does not bound is the per-packet cost on your side: a QUIC endpoint performs real cryptographic work early in a connection, so a flood of plausible initial packets is a CPU attack as much as a bandwidth one. If you serve HTTP/3 from your own hardware, that UDP port deserves the same upstream treatment as everything else on this page.

How Itnetic handles UDP floods

Worth being precise here, because UDP is the place where it is easiest for a vendor to imply more than it does.

LayerWhat it does
Upstream absorptionVolumetric L3/L4 floods are soaked up before our edge, let alone yours: Frankfurt sits behind X4B, a network with 500 Gbps of mitigation capacity; Prague runs on Eternyx behind its own network-level protection; Toronto and Singapore run on Linode (Akamai) behind Linode's network-level protection. The current list is on the network page
No UDP surface to floodItnetic's edge serves HTTP and HTTPS — websites, APIs and WebSocket traffic. Visitors arrive at the point of presence nearest them; your origin is then firewalled to accept only the protection network. The published address is one with absorption capacity behind it, and your origin has no internet-facing UDP service left to attack
Packet filtering in the driverAn eBPF filter at the XDP hook enforces protocol identity per flow and drops packet floods before a socket is allocated, so an attacker's packets cost us far less than they cost them
Kernel drops for proven sourcesRepeat offenders are held in an nftables set and cost nothing per packet from then on
EvidenceA packet flood generates no requests, so the honest artifact is the absence: the attack timeline shows origin health flat through the window, next to the Layer 7 wave that so often arrives with it — because multi-vector attacks are the norm, not the exception

Two commercial details matter as much as the packet path. Scrubbed attack traffic is never metered against your bandwidth quota, on any plan including the free one, so a week-long flood does not arrive as an invoice. And every feature is on every plan — WAF, custom rules, rate limiting, waiting room, per-request logs — so an incident never turns into an upgrade decision. Going live is two DNS records at your existing provider: no nameserver move, about five minutes, one hostname at a time if you want to watch it first. Itnetic's DDoS protection has the rest of the mechanics, and pricing has the tier lines, such as they are.

And the limitation, stated plainly. If the thing you need online speaks UDP directly to the internet — a Minecraft Bedrock server on RakNet, a Source-engine game server, a voice server, a QUIC endpoint on your own hardware — then an HTTP reverse proxy is the wrong shape of product, ours included. Itnetic's game protection is a filtering proxy for Minecraft Java Edition, which is TCP; Bedrock is not supported today. For arbitrary UDP services you want a provider that will announce your prefix over BGP or give you a UDP forwarding path, and you should discount anyone who tells you otherwise. If what you are protecting is a Minecraft Java server, start with Minecraft server DDoS protection and ping floods and server queues instead.

A seven-point checklist

  1. Run ss -lun and write down every UDP port you actually serve. Default-deny the rest with drop, never reject.
  2. Put packets per second on a dashboard next to bandwidth, and alert on both. You cannot respond to the metric you do not plot.
  3. Add UdpNoPorts and RcvbufErrors from nstat to that dashboard — they tell you which of the two floods you are in.
  4. Exempt your public UDP ports from connection tracking, or verify nf_conntrack_max against a flood rate rather than a traffic rate.
  5. Check ethtool -S for ring-buffer drops, raise the receive ring, and confirm interrupts are spread across more than one core.
  6. Firewall the origin to accept traffic only from your protection network — otherwise every upstream layer is optional from the attacker's point of view.
  7. Read your host's DDoS policy today and find out how long they null-route an attacked address. Knowing that number before an incident changes what you build.

If you are in the middle of one right now, stop reading and work through how to stop a DDoS attack; it is written for the incident rather than for the reading list. When the wave has passed, how to test your DDoS protection covers how to confirm — safely and legally — that the next one lands somewhere other than your uplink.

FAQ

Quick answers

What is a UDP flood attack in simple terms?

It is an attack that sends a very large number of UDP packets at your server. UDP is connectionless: there is no handshake and no agreement to talk, so your server cannot refuse the packets — it can only receive them and then decide what to do. The damage happens before that decision, because the packets have already consumed your bandwidth and your server’s packet-processing capacity. Either your link fills up or your kernel runs out of budget to discard them, and in both cases real visitors stop getting through.

How is a UDP flood different from a DNS amplification attack?

Amplification is one way of producing a UDP flood, not a separate category. In a direct UDP flood the packets come from machines the attacker controls, so the total volume is limited by the bandwidth they have rented or compromised. In an amplification attack they spoof your address toward public servers — DNS, NTP, memcached — which send much larger replies to you, multiplying their bandwidth many times over. The practical difference is the signature: amplification arrives as unsolicited replies from recognisable source ports and can be filtered on that basis, while a direct flood just looks like traffic to a port.

Can a firewall stop a UDP flood?

A firewall on your own server stops the packets from reaching your application, which is not the same as stopping the attack. The packets still cross your uplink, still consume bandwidth you are paying for, and still cost CPU for every rule evaluation — and a stateful firewall is often the first thing to fail, because tracking a flood of spoofed UDP flows fills its connection table in seconds. A firewall upstream of your link, with capacity to absorb the volume and the ability to drop packets at line rate, is a different proposition and is what actually works.

Why does blocking the attacking IP addresses not work?

Because in most UDP floods the addresses are forged. UDP never verifies the source address of a packet, so an attacker can put a different random address on every packet. A blocklist then grows without limit while blocking nothing, and per-source rate limits see one packet per apparent client. Source-based blocking only helps for a direct flood from real addresses, which is the minority case — and even then the packets have already arrived before you can act on them.

Does a UDP flood affect a website that only serves HTTPS?

Yes, and that is the counter-intuitive part. HTTPS is TCP, so a UDP flood never reaches your web server as a request and leaves your access log completely empty. It takes the site down anyway, by filling the link the web server shares or by exhausting the kernel’s packet path, so nothing can get in or out. This is exactly why an exposed origin is the real vulnerability: once the origin only accepts traffic from a protection network, there is no reachable UDP service to flood in the first place.

Will my hosting provider null-route me during a UDP flood?

Very likely, and you should assume it. When an attack on one address threatens shared network capacity, the standard operational response is to blackhole that IP upstream for a fixed period — commonly an hour, sometimes longer. Your server stays healthy and completely unreachable, which is an outage by policy rather than by failure. Find the relevant clause in your provider’s terms before you need it; it is usually the strongest argument for keeping the origin address private and publishing one with absorption capacity behind it.

Keep reading

01

What is the best DDoS protection?

Every provider claims to be the best DDoS protection. The claim is unfalsifiable on its own — but the properties that decide whether a service keeps you online are short, concrete and easy to check before you buy.

02

What is a DDoS attack?

A distributed denial-of-service (DDoS) attack overwhelms a website or API with traffic from many machines at once, until real visitors can no longer get through.

03

What is a Layer 7 DDoS attack?

Layer 7 (application-layer) DDoS attacks imitate legitimate visitors instead of flooding the network — which is exactly why traditional defenses miss them.

04

What is a multi-vector DDoS attack?

A multi-vector DDoS attack uses two or more different attack techniques against the same target — usually across different network layers — and switches between them during the incident. The goal is not raw volume. It is to find the one layer where your defense is thin.

05

What is a DNS amplification attack?

A DNS amplification attack forges your IP address on small DNS queries so that thousands of innocent servers answer with far larger replies — all of them aimed at you.

06

What is a SYN flood attack?

A SYN flood does not try to fill your pipe. It opens thousands of TCP connections a second and never finishes them, until the queue that tracks half-open connections is full and the next real visitor is simply never let in.

Protect my website freeHow our protection works
Itnetic logo Itnetic Technologies

DDoS protection that keeps your customers online. Attacks filtered at the edge in every region, real visitors served straight through.

Find us on GoogleAdd as preferred source

Product

  • Under attack?
  • DDoS Mitigation
  • Web CDN
  • Game Protection
  • Network
  • Pricing

Resources

  • Learn
  • HTTP header check
  • Changelog
  • FAQ
  • Status
  • Discord

Legal

  • Acceptable Use
  • SLA
  • Security
  • Abuse
  • Sub-processors
  • Data Retention
  • Incident Response

Company

  • Founder
  • Contact
Petr ChlíbekIČO: 21210756Neplátce DPH
© 2026 Itnetic Technologies. All rights reserved.
Terms of ServicePrivacy PolicyCookie PolicyDPAIP geolocation by DB-IP (CC BY 4.0)