An inline IPS blocks intruder traffic into a plant zone - how do silent drop and reject differ for a device that never retries?
answer
- silence versus an answer
- one hangs, one fails fast
- the polite answer is also reconnaissance
- reset both ends or leave half-open state
- many stacks ignore ICMP unreachable
basics
~20 sDrop discards silently, so a device that never retries hangs and the fault looks like broken equipment. Reject answers with a TCP reset or ICMP unreachable - fast, legible failure, but it confirms to the intruder that something is filtering.
solid answer
~50 sDrop discards the matched packet and emits nothing. The sender waits out its own timeout, and industrial or clinical equipment that does not retry simply stops working with no error that names a cause, so the fault is chased at the device for hours before anyone looks at the boundary. Reject answers: a TCP reset for TCP, typically an ICMP destination-unreachable for the rest. The failure is immediate and the application surfaces something an operator can act on. The costs invert: reject tells the intruder which flows are filtered and where the filter sits, and on an established session the reset has to reach both ends or you leave half-open state. Reject is also not always available - many industrial protocols run over UDP, and plenty of embedded stacks ignore ICMP unreachable entirely, so reject degrades into a drop for exactly the devices you were trying to be kind to.
go deeper
Know that drop discards silently while reject sends back a TCP reset or an ICMP unreachable, and that the sender therefore hangs in one case and fails immediately in the other.
Explain the mechanics: retransmission timeouts under drop, resetting both ends of an established session, packet-only versus flow teardown, and stacks that ignore ICMP so reject degrades to a drop.
Choose per population and justify it - legible failures where your own operators must diagnose, silence where an adversary is probing - and record the choice so the next person debugging a hung device knows which behaviour they face.
Frame the failure posture as something the operations owner is agreeing to, since the cost of an opaque hang lands on their engineers, and make sure the estate has one documented answer rather than per-device folklore.
## Two ways to say no When an inline sensor decides a flow may not pass, it has two families of action. **Drop** discards the packet silently. Nothing is emitted toward either endpoint. From the sender's point of view the network simply lost the packet, which is a normal event that the sender's transport is expected to handle. **Reject** answers actively. For TCP that means a reset; for other traffic it usually means an ICMP destination-unreachable, of which the administratively-prohibited flavour is the honest one. The endpoint gets an immediate, explicit refusal. On a general-purpose network the choice is close to cosmetic, because clients retry and stacks surface errors. On a plant floor or a ward it is not, because a large part of the population does neither. ## What each does to equipment that never retries A lot of embedded equipment opens a connection once at start-up, or sends into a session it assumes stays up, and has no recovery path beyond a power cycle or an engineer walking to it. - **Under drop**, that device waits. Depending on the stack it blocks for a retransmission sequence measured in tens of seconds, or waits forever. The application above it reports nothing useful - at best a timeout with no cause. The operator sees the line, the study transfer or the monitoring feed stop, and nothing on the device points at a security control. The mean time to diagnose is the real bill, and it is usually paid by people who do not know the control exists. - **Under reject**, the device gets a reset or an unreachable immediately. If its stack honours it, the failure is fast and specific and can surface as a connection-refused rather than a hang, which is a much cheaper failure to chase. If its stack ignores ICMP - very common - the reject was a drop all along. This is the asymmetry worth carrying into an interview: reject is kinder to *diagnosis*, and it is only kinder to the *device* if the device listens. ## What each tells the adversary A reset or an administratively-prohibited message is a positive statement that a control exists, and often where in the path it sits. Someone probing a boundary can map exactly which protocols, ports and directions are filtered, cheaply, without succeeding once. A drop leaks less, though not nothing - the timing difference between a drop and an unreachable host is itself observable. The honest formulation: drop buys quiet against a probing adversary and pays for it in operational opacity; reject buys legibility for your own operators and pays for it in reconnaissance value handed away. ## Details that separate a middle from a junior answer - **Both ends, or half-open state.** Terminating an established TCP session from a device in the middle requires resetting toward both endpoints. Reset one side only and the other holds state until its own timeout, which reproduces exactly the hang you were trying to avoid. - **Packet versus flow.** Some engines drop only the matched packet and let the rest of the session through; others tear the flow down. On a protocol carrying a multi-part command this is the difference between a clean failure and a half-applied instruction, which on a physical process is the worse of the two. - **Mid-transfer.** A reset in the middle of a long transfer - a study, a batch of recipe data - usually means the whole transfer restarts rather than resumes. The correct claim is that the transfer fails and must be repeated, not that the equipment stops doing its bedside or on-line job; most such devices keep performing their local function and what you actually severed was reporting, monitoring or transfer. - **No reject for UDP-based control traffic in practice.** Where the protocol is UDP and the stack ignores ICMP, there is no polite failure available at all, and the design question becomes whether that flow should ever be in the enforced rule class. ## The judgment There is no universal answer, and an interviewer is listening for whether you pick per population rather than globally. A common resolution is reject toward flows whose endpoints are your own managed systems and whose operators need a legible failure, and drop toward the segment where an adversary probes and where the equipment ignores your courtesy anyway - with the choice recorded, because the next person to debug a hung controller needs to know which of the two they are living with.
- Why can rejecting only the client side of an established TCP session make things worse?Because the other endpoint keeps its half of the connection until its own timeout. You get the operational damage of a torn session plus the hang you were trying to avoid, and the server-side device may refuse a new connection while it believes the old one is live. An inline teardown has to reset toward both ends to actually clear the state.
- When is reject not actually available as a choice?When the traffic is not TCP and the endpoint ignores ICMP. Plenty of industrial and embedded stacks discard ICMP destination-unreachable entirely, so the configured reject behaves as a silent drop for exactly the population you wanted to fail gracefully. If a flow is in that category, decide whether it belongs in the enforced rule class at all rather than assuming the courtesy landed.
saying these in an interview costs you the question
- Says reject is always the friendlier choice
- Forgets a mid-path teardown needs both ends reset
- Assumes every stack acts on ICMP unreachable
- Ignores that reject confirms a control exists
- Claims a severed flow stops the device's local function