skip to content

A RADIUS request goes unanswered and the access device tries its secondary server - what must change?

level: seniorimportance: should knowfreq 38%

answer

  1. same server, or a different one?
  2. duplicate versus first attempt
  3. the fields are scoped to a pair
  4. new Identifier, new Request Authenticator
  5. silence is ambiguous - probe it

basics

~20 s

Failing over is a new request, not a retransmission: it needs a new Identifier and a new Request Authenticator. Only an identical retry to the same server reuses both, so that the server can recognise it as a duplicate rather than a second attempt.

solid answer

~50 s

The two cases have opposite rules. **Re-sending to the same server** is a retransmission: the access device sends the identical packet, keeping the same `Identifier` and the same `Request Authenticator`, so a server that already received the first copy can recognise this as a duplicate of work it may still be doing. **Failing over to a different server** is a new request: it needs a fresh `Identifier` and a fresh `Request Authenticator`, because both are scoped to one access-device-and-server pair and the secondary knows nothing about the exchange with the first. Silence is the underlying problem - it can mean a lost request, a lost reply, an overloaded server, or a server with no client entry for this access device - which is why `Status-Server (Code 12)` exists as an explicit liveness probe rather than inferring health from an absence.

code

pseudocode · 13 lines
pseudocode
on no reply from the server this request went to:

    if trying the same server again:
        send the identical packet
        keep the same Identifier
        keep the same Request Authenticator
        # the receiver should see a duplicate, not a second attempt

    else if failing over to another configured server:
        build a new Access-Request (Code 1)
        choose a new Identifier
        generate a new Request Authenticator
        # this is a new request; the secondary knows nothing of the first

go deeper

for a junior

Know that a device can be configured with more than one server and will try another when the first does not answer. The detail of what changes in the packet is a level up.

for a middle

Separate the two cases cleanly: an identical retransmission to the same server, versus a fresh request to a different one, and say which fields each keeps or replaces.

for a senior

Explain why the fields are scoped to a pair, list what silence can actually mean, and say why a liveness probe beats inferring health from failed logins on an estate you operate.

for a principal

The bet is how much independence you buy with a second server, given that both sides of the failover are configured on every access device in the field and you will not get a flag day to change them.

## Two things that look the same on the wire An access device sent an `Access-Request (Code 1)` and nothing came back. It has two moves, and they are governed by opposite rules: - **Retransmit to the same server.** Send the identical packet again - same `Identifier`, same `Request Authenticator`. Nothing about it changes. - **Fail over to another configured server.** Build a **new** request - new `Identifier`, new `Request Authenticator` - even though the user, the credential and the circumstances are unchanged. Candidates reliably get the second one wrong, because from the operator's point of view it feels like the same login being tried somewhere else. ## Why a retry must be identical The `Identifier` is how a server recognises that it is looking at a copy of something it already has. If the first request arrived and the reply was lost, an identical retransmission lets the server answer from what it already did rather than treating it as a fresh login attempt. Change the fields and that recognition is gone: the server sees two separate attempts from the same access device, does the work twice, and any counting it does of attempts for that identity counts two. ## Why failover is a new request Both fields are scoped to one **client-and-server pair**: - the `Identifier` matches a reply to a pending request **on that pair**, and the access device may already have that value outstanding toward the secondary for something else; - the `Request Authenticator` is generated per request toward a particular server, and the verification of the answer that comes back is computed against it. The secondary has no knowledge of the exchange with the primary, so nothing is gained by carrying the old values across, and reusing them can collide with the access device's own outstanding state on that second pair. | | identical retry, same server | failover, different server | |---|---|---| | `Identifier` | reused | new | | `Request Authenticator` | reused | new | | what the receiver should see | a duplicate | a first attempt | | risk of getting it wrong | the login is counted twice | a collision with outstanding state | ## Silence is ambiguous, so probe instead of guessing No reply is not a diagnosis. It is consistent with at least four different faults: 1. the request never arrived; 2. it arrived and the reply was lost on the way back; 3. the server is alive but too busy to answer in time; 4. the server has no client entry for this access device, so it dropped the packet without answering - the classic symptom of a newly installed device that was never enrolled. The last of these is why an estate cannot infer server health from its own login traffic: a perfectly healthy server looks dead to a device it does not know. `Status-Server (Code 12)` closes that gap. It is an explicit liveness probe: a request whose only purpose is to find out whether the server is there and answering, independent of whether any user is trying to log in. An answer means the server is alive and reachable and willing to talk to this access device. No answer, repeatedly, is a much stronger signal than a user's failed login. ## What this looks like on a temporary site A showground network's access devices are configured with a primary and a secondary home server for each visiting organisation. On the first busy morning, one home server slows down under load rather than failing outright: - devices retransmit identically, which is correct, and the server can still tell those copies apart from new attempts; - once they give up on it, they compose fresh requests toward the secondary, which sees them as first attempts; - if the fields were carried across instead, the secondary's view of attempt counts and outstanding state would be wrong from the first packet. The separate question of how long a device should wait before deciding a server is dead is a device-configuration matter and an estate-wide risk decision, and it is not settled by this rule. What this rule settles is what the packet must look like once that decision has been taken.

  • Why not simply reuse the Identifier when failing over, since the login is the same login?
    Because the value is scoped to one access-device-and-server pair and means nothing on another. The secondary has no pending request to match it against, and the access device may already have that same value outstanding toward the secondary for a different login, so carrying it across can collide with its own state while gaining nothing.
  • What can silence from a RADIUS server mean?
    At least four things: the request was lost, the reply was lost, the server is alive but too busy to answer in time, or the server has no client entry for this access device and dropped the packet. One symptom, four faults - which is precisely why `Status-Server (Code 12)` exists as an explicit probe rather than an inference.
  • What goes wrong if an access device treats every retry as a new request?
    The server loses its ability to recognise a duplicate. It sees several separate attempts for one login, repeats work it has already done, and any per-identity attempt counting it performs counts each copy. A lossy path then looks like a user hammering the network rather than a single request being re-sent.

saying these in an interview costs you the question

  • Failing over means sending the same packet to another address
  • An Identifier is unique across every server in the estate
  • A retry to the same server should use a fresh Identifier
  • No reply always means the server is down
  • Status-Server (Code 12) reports on a user's session