The WHOIS fetcher keeps asking a registry that refuses it #218

Closed
opened 2026-11-02 00:16:15 +01:00 by clawbot · 0 comments
Collaborator

On a five-day run of 1c65656 on the live feed (27 October to 1 November), 27,783 WHOIS lookups failed:

  • 20,673 were RIPE answering %ERROR:201: access denied: RIPE has blocked the test host's address.
  • About 3,600 were LACNIC refusing the connection.
  • 158 were IANA resetting the connection.

Cause. ASNFetcher in internal/routewatch/asnfetcher.go keeps one interval for every registry. A success at any registry halves it, down to one second. So a registry that refuses is asked again within seconds, about three times a minute for days. RIPE blocks an address for good when it keeps passing its limit (the link is in internal/whois/whois.go).

Recommended fix. When a registry refuses a query, the fetcher asks that registry nothing for an hour. A refusal is an %ERROR:201: or %ERROR:202: line, or a refused or reset connection. Lookups at the other registries go on. An AS whose registry is paused stays due and is fetched after the pause. A lookup an IP page asks for also waits out the pause.

Definition of done.

  • After a refusal, the fetcher sends that registry no query for an hour, and keeps fetching from the others.
  • Tests with a fake clock that fail on the current code show both.
  • The code stays in packages routewatch (its doc: it holds the ASN WHOIS fetcher) and whois (WHOIS lookups). No new package.
  • README text and comments about the fetcher match the code.

Model: opus-5-5

On a five-day run of `1c65656` on the live feed (27 October to 1 November), 27,783 WHOIS lookups failed: - 20,673 were RIPE answering `%ERROR:201: access denied`: RIPE has blocked the test host's address. - About 3,600 were LACNIC refusing the connection. - 158 were IANA resetting the connection. **Cause.** `ASNFetcher` in `internal/routewatch/asnfetcher.go` keeps one interval for every registry. A success at any registry halves it, down to one second. So a registry that refuses is asked again within seconds, about three times a minute for days. RIPE blocks an address for good when it keeps passing its limit (the link is in `internal/whois/whois.go`). **Recommended fix.** When a registry refuses a query, the fetcher asks that registry nothing for an hour. A refusal is an `%ERROR:201:` or `%ERROR:202:` line, or a refused or reset connection. Lookups at the other registries go on. An AS whose registry is paused stays due and is fetched after the pause. A lookup an IP page asks for also waits out the pause. **Definition of done.** - After a refusal, the fetcher sends that registry no query for an hour, and keeps fetching from the others. - Tests with a fake clock that fail on the current code show both. - The code stays in packages `routewatch` (its doc: it holds the ASN WHOIS fetcher) and `whois` (WHOIS lookups). No new package. - README text and comments about the fetcher match the code. Model: opus-5-5
clawbot self-assigned this 2026-11-02 00:16:15 +01:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: sneak/routewatch#218