Hillock
Drop traffic before it touches your stack.
Hillock is the kernel-level firewall that lives inside every Synapse agent. Malicious traffic is filtered, rate-limited, or dropped before it ever reaches your application — no proxy in the path, no TLS termination, no latency penalty.
What Hillock is for
- Enforce in the kernel, not in userspace. Blocks run as eBPF programs attached to the interface, so a dropped packet never costs a context switch into your application.
- Drop as early as the kernel allows. The XDP path runs before routing, which is the earliest point a packet can be discarded.
- Rate limiting. Cap noisy clients in the kernel, without writing custom middleware.
- Live traffic counters. TCP, UDP, and ICMP metrics in real time, read straight from the BPF maps.
- Best available, with fallback. XDP/eBPF where the kernel allows it, then nftables, then iptables — the rule does not change, only the machinery under it.
What it enforces on
Hillock is the primitive layer. It matches on what is cheap to read in the kernel:
| Match | Notes |
|---|---|
| IP address | Source or destination, with prefix |
| Port | TCP and UDP |
| Protocol | TCP, UDP, ICMP |
| TCP-handshake fingerprint | JA4T-style, computed from SYN header fields |
| Rate | Per-source thresholds enforced in-kernel |
Entries can carry a TTL, expired by a BPF timer, so a temporary block clears itself without a userspace sweep.
Hillock has no notion of ASN, country, ML verdict or threat score — none of those are readable from a packet header. They reach it as addresses, by two different routes.
Ahead of time. Cerebellum resolves an ASN or country in your access rules into the IP ranges it covers, and ships the ranges. The agent never sees the ASN.
At the moment of decision. Amygdala evaluates its own rules on the host — ML verdicts, IDS context, live GeoIP — and when one fires, installs an IP, port, fingerprint or rate block here.
Either way the kernel only ever compares something it can read directly, which is why enforcement stays cheap no matter how elaborate the policy above it.
How it attaches
| Path | Direction | Use it for |
|---|---|---|
| XDP | Ingress, before routing | Earliest and cheapest drop on Linux |
| TC (clsact) | Ingress and egress | Egress control, rate limiting, and global metrics |
| nftables | Host firewall | Fallback where the BPF path is unavailable |
| iptables | Host firewall | Fallback again, for hosts without nftables |
The goal is one firewall platform with one rule model across Linux and Windows. The Windows firewall backend is still in development, so treat Windows enforcement as a roadmap item rather than something to build policy on today.
The XDP stage has four outcomes, and it is worth knowing which is which:
| Verdict | What it does |
|---|---|
| Pass | Let the packet continue up the stack |
| Drop | Discard it |
| Reply | Answer the sender in place, out of the arrival interface — used for SYN cookies and refusals |
| To userspace | Hand the packet to an AF_XDP socket for capture |
What it cannot do is send a packet to a different destination. There is no verdict that forwards to another host, another interface, or a scrubbing appliance — the reply path answers whoever sent the packet, and nothing else.
If your policy needs traffic moved rather than dropped or answered, that belongs upstream of Hillock.
How it fits
Hillock is the muscle in every Synapse agent. When Amygdala decides a source should be blocked, Hillock is the layer that makes the kernel do it — and Cortex and Thalamus are what feed Amygdala that decision.
Use cases
- Drop bot traffic at wire speed across thousands of servers, without taking a box out of service to do it.
- Rate-limit aggressive scrapers per source with no application changes.
- Expire a block automatically by giving it a TTL, instead of tracking cleanup yourself.
- Read live TCP/UDP/ICMP counters for cost attribution and incident review.
See also
- Synapse documentation — the agent that ships Hillock
- Amygdala — the rule engine that decides what Hillock enforces
- Cortex — ML verdicts that can end in a Hillock block
- Thalamus — signature hits that can end in a Hillock block