From b02456978cabbb51ec246c549aaf258078db504a Mon Sep 17 00:00:00 2001 From: tomcrane Date: Tue, 9 Jun 2026 16:58:25 +0100 Subject: [PATCH 1/8] placeholder RFC for bots/metrics --- rfcs/xxx-iiif-metrics/README.md | 161 ++++++++++++++++++ rfcs/xxx-iiif-metrics/images/dlcs-metrics.png | Bin 0 -> 138153 bytes 2 files changed, 161 insertions(+) create mode 100644 rfcs/xxx-iiif-metrics/README.md create mode 100644 rfcs/xxx-iiif-metrics/images/dlcs-metrics.png diff --git a/rfcs/xxx-iiif-metrics/README.md b/rfcs/xxx-iiif-metrics/README.md new file mode 100644 index 00000000..05025ba8 --- /dev/null +++ b/rfcs/xxx-iiif-metrics/README.md @@ -0,0 +1,161 @@ +# RFC XXX: IIIF Metrics for efficiency, insight and bot defence + +blah blah + +https://docs.google.com/document/d/1bRmGMMo4gM2JiUW5Zx-MRlHLi6ZVNg-HWfxQi5Hi9tw/edit?tab=t.0 + + +**Last modified:** 2026-06-01T17:00+00:00 + +## Context + +What DLCS does now + +Outline our strategies + +Lustre problems + +bots + +insight + +Flow - decisions + +CF, Orchestrator, thumbs, specialserver, imageserver + +Special streams from S3 +for full region but maybe also for non-tile regions? + +Aim is not necessarily to provide fastest possible response to all callers +Infra costs money. We are not your cache. + +Aim is to provide a reasonable service to human and bot consumers + - for reasonable cost to Wellcome (otherwise have everything on 100TB of Lustre and infintly sclaing image servers) +And to deter bots when they start acting unreasonably, all the way up to blocking them +Our aim is not to block reasonable automated use of the Image API + + +But how do we block... what does orchestrator have access to? + +as well as auth decision, orchestrator can make a bot decision +block - throttle - allow +How do you efficiently throttle an HTTP request in Orchestrator - without overwhelming the server? +Throttled: 100ms header + +requests for different images from same source that are not thumb requests +"please use a value from the sizes array for bulk requesting" + + +## Proposal + +![DLCS Metrics Diagram](images/dlcs-metrics.png) + +### Metrics store + +What is is? Postgres? +How long does stuff stay in it? Forever? +How long do we need stuff to stay in it? +Do we archive it? + +What do we want to capture? + +Scope to image requests only + +timestamp + + +asset id + +raw path + +region + +region type: +full | calculated tile | OSD sub-tile | other +char f, t, s, o +Algorithm for computing this + - simple: Is it square, power of two or from edge if not square? + - informed: Is it a valid tile from the image's info.json? + +Store info.json in image table? +Does OSD still do this + +size + +size type: +max | tile | OSD sub tile | other +char m, t, s, o + +rotation (store null for 0?) + +quality +char d, b, g, etc + +format +char j, p, w etc + +(and/or quality.format?) + +User agent + +ip address + +Did *this* request trigger orchestration? + +How served +CF cache / thumb / resize thumb / specialserver / orchestrated img server +(is this gathered from CF) + + +Join to Images table for + - size + - location(s) (nas?) + - open/not open (affects cloudfront cache) + + +## bots + +If gathered from CF the data is post-request + +How do we identify a bot? + + - retrospectively, from metrics + - As it's happening + +What do we do if we do identiy one? + +fair use +throttle + +What general-purpose services from WAF, Cloudflare, F6 Firewalls etc help us? +What can't they do because it's specific to IIIF traffic, especially image traffic? + +IIIF Presentation + - doesn't bother us so much at Wellcome but is still a magnet for bots + +Fail-fast on requests that can't serve a response, e.g., Canvas `id`, Range `id` - don't waste resources on them (pattern match at Cloudfront?) + +## Scavenger + +Decision to evict is based on: + - performance for human users + - cost + +As the disk nears a threshold, we need to start deleting orchestrated files + +Example bad case + - a very large artwork that is viewed intermittently. But often enough that it keeps getting re-orchestrated just after it's been scavenged + +Conversely a very small jp2 that won't free up much space and is occasionally viewed + + + +## Alternatives Considered + +## Impact + +(incl risks) + +## Next Steps + +A list of next steps for implementing the proposed solution, including any dependencies or prerequisites. \ No newline at end of file diff --git a/rfcs/xxx-iiif-metrics/images/dlcs-metrics.png b/rfcs/xxx-iiif-metrics/images/dlcs-metrics.png new file mode 100644 index 0000000000000000000000000000000000000000..8a2d976f440aefe9c90f66c6e17821cdf4ffa4e0 GIT binary patch literal 138153 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%0ALA`sXVGSy)7!H$UR1Ipo_m~ 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 literal 0 HcmV?d00001 From 2a32c16da8dbfbbaf1d6006d50d877edf1999797 Mon Sep 17 00:00:00 2001 From: tomcrane Date: Tue, 9 Jun 2026 17:44:49 +0100 Subject: [PATCH 2/8] better intro to IIIF metrics RFC --- rfcs/xxx-iiif-metrics/README.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/rfcs/xxx-iiif-metrics/README.md b/rfcs/xxx-iiif-metrics/README.md index 05025ba8..103d9c3d 100644 --- a/rfcs/xxx-iiif-metrics/README.md +++ b/rfcs/xxx-iiif-metrics/README.md @@ -1,6 +1,13 @@ # RFC XXX: IIIF Metrics for efficiency, insight and bot defence -blah blah +This RFC addresses two distinct problems, but they have overlapping solutions. + +The first is better metrics for performance, cost saving, user experience. DLCS balances "hot" images in fast random access volumes, against "cold" images in S3. It augments this with various alternative approaches for _predicted_ common image size requests (e.g., thumbnails). Hot images are evicted from the fast disks by a fairly simple algorithm. + +The second is the increasing challenge of bot traffic - automated, high volume requests. Typically, organisations exposing open APIs are troubled by bulk crawling of JSON documents. In our case, IIIF Manifests. At Wellcome, this isn't so much of a problem; Manifests are pre-generated and proxied from S3. This is low-overhead, low-cost and while annoying, doesn't degrade the user experience. The real problem for the DLCS is IIIF Image API traffic: HTTP requests that return image responses. If these responses are dynamically generated by an image server, rather than simply proxied from existing images in S3, this traffic is very _computationally intensive_ and therefore expensive. High volume image crawling leads to scale-out, possible overload and sometimes too much pressure on our caching mechanisms (because there is no nice long-tail distribution to favour caching of those images that are actually popular with humans). + +To some extent, we hope that generic anti-bot technologies sitting in front of our systems will kick in and protect our services - e.g., Web Application Firewall +on AWS. But IIIF Image API traffic may not fit the patterns they are looking for. We may need our own additional custom heuristics as well. The same metrics store can, we hope, drive both use cases. https://docs.google.com/document/d/1bRmGMMo4gM2JiUW5Zx-MRlHLi6ZVNg-HWfxQi5Hi9tw/edit?tab=t.0 @@ -45,6 +52,11 @@ Throttled: 100ms header requests for different images from same source that are not thumb requests "please use a value from the sizes array for bulk requesting" +If requests get through WAF, and Orchestrator (or some monitor of the metrics database) thinks they are problematic, how do they get blocked? + - at orchestrator + - orchestrator tells WAF (???) + + ## Proposal From 45eff95fcca86eabcf2a394fd1a77e4e2dd0843b Mon Sep 17 00:00:00 2001 From: tomcrane Date: Wed, 10 Jun 2026 16:36:37 +0100 Subject: [PATCH 3/8] updates to IIIF metrics RFC --- rfcs/xxx-iiif-metrics/README.md | 118 ++++++++++++++++++++------------ 1 file changed, 74 insertions(+), 44 deletions(-) diff --git a/rfcs/xxx-iiif-metrics/README.md b/rfcs/xxx-iiif-metrics/README.md index 103d9c3d..68e98fe5 100644 --- a/rfcs/xxx-iiif-metrics/README.md +++ b/rfcs/xxx-iiif-metrics/README.md @@ -9,14 +9,11 @@ The second is the increasing challenge of bot traffic - automated, high volume r To some extent, we hope that generic anti-bot technologies sitting in front of our systems will kick in and protect our services - e.g., Web Application Firewall on AWS. But IIIF Image API traffic may not fit the patterns they are looking for. We may need our own additional custom heuristics as well. The same metrics store can, we hope, drive both use cases. -https://docs.google.com/document/d/1bRmGMMo4gM2JiUW5Zx-MRlHLi6ZVNg-HWfxQi5Hi9tw/edit?tab=t.0 - - **Last modified:** 2026-06-01T17:00+00:00 ## Context -What DLCS does now +What does DLCS do now? Outline our strategies @@ -62,67 +59,92 @@ If requests get through WAF, and Orchestrator (or some monitor of the metrics da ![DLCS Metrics Diagram](images/dlcs-metrics.png) -### Metrics store +### Gather usage stats from CloudFront -What is is? Postgres? -How long does stuff stay in it? Forever? -How long do we need stuff to stay in it? -Do we archive it? +All requests to Protagonist are via CloudFront. We already log access requests to S3, which we can query using Athena. CloudFront is already tracking usage requests - can we hook into this to get access requests? These would be stored to the Metrics Database -What do we want to capture? +#### How can we get stats from CloudFront? -Scope to image requests only +Lambda at edge? If we use origin response we will be able to determine how the image was served via x-proxy-destination header, and x-asset-id header for AssetId (do these 2 headers mean this is the preferred method?). Would/could this slow requests down as we are already using origin request lambda? -timestamp +Orchestrator can add any additional headers to the response that will be useful in populating the hypothetical table below. This means that entries arrive at the metrics store some time after the request has completed, but also that Orchestrator has no metric-recording overheads of its own. We should be carfeul not to invent new headers for Orchestrator to emit that actually cost it significant overhead to determine. +Redirect logs? To where? Firehose? Lambda? Would this go directly to postgres, or aggregate? -asset id +What are the cost / implementation effort involved? -raw path -region +### Metrics store -region type: -full | calculated tile | OSD sub-tile | other -char f, t, s, o -Algorithm for computing this - - simple: Is it square, power of two or from edge if not square? - - informed: Is it a valid tile from the image's info.json? +* What is is? Postgres? +* How long does stuff stay in it? Forever? +* How long do we need stuff to stay in it? +* Do we archive it? +* What do we want to capture? -Store info.json in image table? -Does OSD still do this +Scope to image requests only -size +Provisional schema + +| Field | Description and type | +|--------------|--------------------------------------------------------------------| +| timestamp | | +| asset_id | e.g., 2/5/b12345678_0037.jp2 | +| raw_path | e.g., 2/5/b12345678_0037.jp2/256,256,256,256/256,256/0/default.jpg | +| region | e.g., "full" or "256,256,256,256". Store as string? | +| region_type | (full / calculated tile / OSD sub-tile / other) char f, t, s, o | +| size | e.g., "max" or "256," or "256,256" Store as string? | +| size_type | (max / tile / OSD sub tile / other) char m, t, s, o | +| rotation | Store null for 0?, otherwise, numeric, float | +| quality | (default / bitonal / grayscale ... ) char d, b, g, etc | +| format | (jpg / png / ...) char j, p, w etc | +| user_agent | string | +| ip_address | string | +| orchestrated | Did *this* request trigger orchestration? | +| destination | CF / thumb / resize / specialserver / img server char ... | + +#### Notes + +1. Region type, algorithm for computing this... simple: Is it square, power of two or from edge if not square? Better: Is it a valid tile from the image's info.json? +2. OSD sub tile. OSD makes (or at least used to make) a burst of requests smaller than the specified tile size, which just waste the server's time. +3. Destination - how did we service this request? Did it even reach orchestrator? Where did orchestrator route it to? (is this coming from Cloudfront?) +4. Do we want to query on quality.format (store a specific value for default.jpg, for example?) Or is that overoptimisation? +5. The incoming metrics aggregator could obtain and cache (in memory) the info.json which is needed to compute some of the above. -size type: -max | tile | OSD sub tile | other -char m, t, s, o +Join to Images table for + - size + - location(s) (nas?) + - open/not open (affects cloudfront cache) -rotation (store null for 0?) +### Gather orchestration stats -quality -char d, b, g, etc +How do we gather stats on what has been orchestrated, and when? -format -char j, p, w etc +Orchestrator could raise events? We need to guarantee delivery, a little late is likely fine. -(and/or quality.format?) + - Write direct to postgres? + - Raise an SNS message? + - Raise CloudWatch metric? + - Header added by Orchestrator - “this request triggered orch” + - Or could we hook into something like CloudWatch Logs (we use log insights at Wellcome to determine when images has been orchestrated and its size). -User agent +What other changes would be required for Orchestrator? +Write to ImageLocation.nas location (allows multi diff locations) +No need to touch files - mtime doesn’t need to be accurate as scavenger service will track itself. -ip address +### Scavenger / Optimiser -Did *this* request trigger orchestration? +New service, responsible for looking at data entered into above PG db and making a decision on what should go. -How served -CF cache / thumb / resize thumb / specialserver / orchestrated img server -(is this gathered from CF) +What is this? (dotnet/python). Is it part of Protagonist or separate? How does it make decisions - is it the aggregator of data, or does something else aggregate and this just acts on those? Does it use LRU/LFU or some combination of both? +This needs to feed deleted events back into the PG database. Does it go in raw? Or does something manage io? Is this the master of the metrics db? (ie manages schema etc). -Join to Images table for - - size - - location(s) (nas?) - - open/not open (affects cloudfront cache) +### Lustre Alternative + +Should we consider EBS multi-attach volume? What are the pros/cons? + +Multiple volumes. The optimizer can move between (logic TBC - e.g. big artworks in one and smaller/easier churn in another). Above re: ImageLocation.s3 refers to this behaviour. ## bots @@ -170,4 +192,12 @@ Conversely a very small jp2 that won't free up much space and is occasionally vi ## Next Steps -A list of next steps for implementing the proposed solution, including any dependencies or prerequisites. \ No newline at end of file +A list of next steps for implementing the proposed solution, including any dependencies or prerequisites. + + +Links + +https://docs.google.com/document/d/1bRmGMMo4gM2JiUW5Zx-MRlHLi6ZVNg-HWfxQi5Hi9tw/edit?tab=t.0 + + +https://github.com/dlcs/protagonist/issues/272 \ No newline at end of file From f22afc1edc67669c5ba8da60a2691888b518b50d Mon Sep 17 00:00:00 2001 From: tomcrane Date: Thu, 11 Jun 2026 16:54:05 +0100 Subject: [PATCH 4/8] IIIF Metrics RFC - delayed orchestration --- rfcs/xxx-iiif-metrics/README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/rfcs/xxx-iiif-metrics/README.md b/rfcs/xxx-iiif-metrics/README.md index 68e98fe5..29bb2e8b 100644 --- a/rfcs/xxx-iiif-metrics/README.md +++ b/rfcs/xxx-iiif-metrics/README.md @@ -146,6 +146,17 @@ Should we consider EBS multi-attach volume? What are the pros/cons? Multiple volumes. The optimizer can move between (logic TBC - e.g. big artworks in one and smaller/easier churn in another). Above re: ImageLocation.s3 refers to this behaviour. +### Architectural alternative + +(This applies to JP2s) + +What if performance for _tile-serving_ - not [SpecialServer](https://github.com/dlcs/protagonist/issues/30) `/full/*/` requests - was tolerable from an S3 back-end? That is, perceived as OK by users, even if it's not super smooth and fast. Then, we don't *have* to orchestrate the image file, we can hold off and see what happens - what other traffic for the image follows. + +This would allow an orchestration decision to be based on retrospective metrics, rather than immediate need. A metrics monitor could have a candidate list of files to orchestrate as well as files to scavenge; if in the list, a subsequent request for the image would make orchestrator move it (even allowing traffic to pass through to the slower S3-direct server until the orchestration copy has been completed). + +This restores the original benefit of the orchestrated cache. In the pre-bot era, this cache represents the left-hand peak of the long-tail distribution of traffic generated by real people. If we can identify one-off, drive-by or otherwise non-human looking traffic, even for requests that today MUST be orchestrated, we can serve them through slower image servers than can still scale out if necessary. We still maintain a pool (e.g., 1TB or 2TB) of "hot" images, on fast SSDs mounted on the image server for random access. But this pool is much more stable. With bot traffic, the cache is in a constant state of churn. + +This of course still requires the ability to differentiate the types of traffic. ## bots From e455e4aa9982fce198719949808d4953c01dcb19 Mon Sep 17 00:00:00 2001 From: tomcrane Date: Tue, 16 Jun 2026 19:45:09 +0100 Subject: [PATCH 5/8] Add real metrics implementation details to IIIF metrics RFC --- rfcs/xxx-iiif-metrics/.gitignore | 1 + rfcs/xxx-iiif-metrics/README.md | 336 ++++++++++++++---- rfcs/xxx-iiif-metrics/images/dlcs-metrics.png | Bin 138153 -> 218013 bytes 3 files changed, 269 insertions(+), 68 deletions(-) create mode 100644 rfcs/xxx-iiif-metrics/.gitignore diff --git a/rfcs/xxx-iiif-metrics/.gitignore b/rfcs/xxx-iiif-metrics/.gitignore new file mode 100644 index 00000000..eb0e460a --- /dev/null +++ b/rfcs/xxx-iiif-metrics/.gitignore @@ -0,0 +1 @@ +_rough_notes.md diff --git a/rfcs/xxx-iiif-metrics/README.md b/rfcs/xxx-iiif-metrics/README.md index 29bb2e8b..e2f3b136 100644 --- a/rfcs/xxx-iiif-metrics/README.md +++ b/rfcs/xxx-iiif-metrics/README.md @@ -4,10 +4,9 @@ This RFC addresses two distinct problems, but they have overlapping solutions. The first is better metrics for performance, cost saving, user experience. DLCS balances "hot" images in fast random access volumes, against "cold" images in S3. It augments this with various alternative approaches for _predicted_ common image size requests (e.g., thumbnails). Hot images are evicted from the fast disks by a fairly simple algorithm. -The second is the increasing challenge of bot traffic - automated, high volume requests. Typically, organisations exposing open APIs are troubled by bulk crawling of JSON documents. In our case, IIIF Manifests. At Wellcome, this isn't so much of a problem; Manifests are pre-generated and proxied from S3. This is low-overhead, low-cost and while annoying, doesn't degrade the user experience. The real problem for the DLCS is IIIF Image API traffic: HTTP requests that return image responses. If these responses are dynamically generated by an image server, rather than simply proxied from existing images in S3, this traffic is very _computationally intensive_ and therefore expensive. High volume image crawling leads to scale-out, possible overload and sometimes too much pressure on our caching mechanisms (because there is no nice long-tail distribution to favour caching of those images that are actually popular with humans). +The second is the increasing challenge of bot traffic - automated, high volume requests. Typically, organisations exposing open APIs are troubled by bulk crawling of JSON documents like IIIF Manifests. At Wellcome, this isn't so much of a problem; Manifests are pre-generated and proxied from S3. Increased scraping traffic on these is still low-overhead, low-cost and while annoying for us, doesn't degrade the user experience. The real problem for the DLCS is IIIF Image API traffic: HTTP requests that return image responses. If these responses are dynamically generated by an image server, rather than simply proxied from existing images in S3, this traffic is very _computationally intensive_ and therefore expensive. High volume image crawling leads to scale-out, possible overload and sometimes too much pressure on our caching mechanisms (because the nice long-tail distribution to favour caching of those images that are actually popular with humans has been broken by automated traffic). -To some extent, we hope that generic anti-bot technologies sitting in front of our systems will kick in and protect our services - e.g., Web Application Firewall -on AWS. But IIIF Image API traffic may not fit the patterns they are looking for. We may need our own additional custom heuristics as well. The same metrics store can, we hope, drive both use cases. +To some extent, we hope that generic anti-bot technologies sitting in front of our systems will kick in and protect our services - e.g., Web Application Firewall on AWS (WAF). But IIIF Image API traffic may not fit the patterns WAF is looking for. We may need our own additional custom heuristics as well. The same metrics store can, we hope, drive both use cases. **Last modified:** 2026-06-01T17:00+00:00 @@ -15,45 +14,60 @@ on AWS. But IIIF Image API traffic may not fit the patterns they are looking for What does DLCS do now? -Outline our strategies + - We serve the fixed-size thumbs that have been created by an image's configured [`thumbs` delivery channel](https://dlcs.github.io/public-docs/api-doc/delivery-channels/#thumbs). These are proxied from S3; they are designed to service UIs that request a large number of thumbnails of known size. They do not hit an image server. Although this is called the thumbs delivery channel and the primary use case is UI that shows large numbers of thumbs at once, any size image may be a thumb, and we can store much larger images this way to drive _extremely responsive_ viewing UI [like this one](https://digirati-co-uk.github.io/st-louis-fed-exploded-viewer/?manifest=https://digirati-co-uk.github.io/st-louis-fed-exploded-viewer/b28047345.json). + - Requests for /full/{size}/ that cannot be served by a static "thumb" are routed to a configured Cantaloupe instance: [SpecialServer](https://github.com/dlcs/protagonist/issues/30). This is configured to read from S3, but it still copies the file down to a Cantaloupe-managed local storage. This scales out under load, but suffers from a number of issues that make it not-ideal. + - Other requests (typically tile requests from deep zoom clients) are forwarded to an instance or instances of Cantaloupe that have a mounted Lustre volume, which Cantaloupe (using Kakadu) can perform fast random-access reads on. If an image file is not on this volume, DLCS's Orchestrator proxy will copy it onto the volume from S3, holding up the triggering request in the process. The idea is that the Lustre volume fills up with the most-used images. But automated scraping traffic pollutes the cache: this idea, while sound until a few years ago, no longer holds. -Lustre problems +We evict files from the Lustre volume on a simple least-recently-used basis, but when under heavy load, this eviction/scavenging process can fail to keep up with pressure on the volume, leading to more drastic indiscriminate eviction. The same issue affects the SpecialServer instances; although the "support S3 backends" they still need to copy the JP2 locally; each is effectively managing its own orchestration and cache eviction. Under load, eviction can fail to keep up and the box stalls. -bots +## Principles -insight +* The aim is not necessarily to provide the fastest possible response to all callers. -Flow - decisions +* Infrastructure costs money. _We are not your cache_. -CF, Orchestrator, thumbs, specialserver, imageserver +* The aim is to provide a reasonable service to human and bot consumers, at reasonable cost to Wellcome. Otherwise, the entire collection of 60m JP2s would be on unlimited Lustre volumes, fronted by infinitely scaling image servers, and nobody would ever notice service degradation even when heavy scraping of images is happening. Such a setup would be ruinously expensive, not to mention having an appalling carbon footprint. -Special streams from S3 -for full region but maybe also for non-tile regions? +* We do not want to prevent computational consumption of the IIIF APIs, including the expensive Image API. That's (at least partly) what these APIs are for! They aren't just for humans to look at on web pages. There are all sorts of interesting applications of _Collections as Data_ that the IIIF APIs (alongside the semantic Catalogue API) enable. -Aim is not necessarily to provide fastest possible response to all callers -Infra costs money. We are not your cache. +* ...But humans looking at web pages is the priority performance area. Bot traffic should not impair the user experience for humans. -Aim is to provide a reasonable service to human and bot consumers - - for reasonable cost to Wellcome (otherwise have everything on 100TB of Lustre and infintly sclaing image servers) -And to deter bots when they start acting unreasonably, all the way up to blocking them -Our aim is not to block reasonable automated use of the Image API +* Considerate, rate-limited, self-identifying bot traffic is welcome. Evasive, high traffic, inconsiderate bot traffic is not; if we deem it inconsiderate, we will attempt to block it. Organised distributed load, that attempts to disguise its distributed nature, is very much not welcome. +## Challenges -But how do we block... what does orchestrator have access to? +But how do we block or throttle the bad traffic and allow the good? -as well as auth decision, orchestrator can make a bot decision -block - throttle - allow -How do you efficiently throttle an HTTP request in Orchestrator - without overwhelming the server? -Throttled: 100ms header +The Orchestrator component in DLCS is the "front of house" - it's a proxy to the underlying image servers, static thumbnails, transcoded AV and other resources. It enforces access control via the IIIF Authorization Flow API, it triggers file copies from S3 to the Lustre volume, it decides which downstream imaage server to route to. -requests for different images from same source that are not thumb requests -"please use a value from the sizes array for bulk requesting" +After WAF and CLoudfront, it's the "real" DLCS application and could contain arbitrarily complex throttling or blocking strategies. -If requests get through WAF, and Orchestrator (or some monitor of the metrics database) thinks they are problematic, how do they get blocked? - - at orchestrator - - orchestrator tells WAF (???) +Throttling in Orchestrator is not a good idea. Delaying a response means holding the HTTP connection, the [Kestrel](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-10.0) request slot, and any upstream resources open for the duration. Under exactly the load conditions where we would want to throttle, "tar-pitting" multiplies our concurrency problem. The cheap responses are `429 Too Many Requests` with `Retry-After`, or outright blocking. Considerate bots will honour Retry-After; inconsiderate ones get escalated to blocking anyway. +Bursts of image requests for deep zoom tiles are normal IIIF traffic, generated by humans zooming into and panning around high resolution tiled images. We mustn't mistake these for automated traffic. But some bots/scripts imitate such traffic; it's trivial to write a IIIF tile-stitcher and unleash it against a collection. [There](https://docs.rs/crate/dezoomify-rs/latest) [are](https://labs.onb.ac.at/gitlab/labs-team/iiif-image-manipulation/-/tree/master/stitching) [many](https://github.com/baurls/TileStitcher) [examples](https://labs.onb.ac.at/gitlab/labs-team/iiif-image-manipulation/-/blob/6764e673fe95cf408dc396514076b428140858d9/iiif_modifier/IIIFImageStitcher.py). +One detection method might be a burst of requests for different images from same source (IP/User agent) that are not thumb requests. But this also might be a legitimate user interface that doesn't respect the advertised preferred [`sizes`](https://iiif.io/api/image/3.0/#53-sizes) property of an image service (Wellcome Manifests publish this per-image in the Manifest too). We'd want to be able to respond politely with the image pixels, but also a message "please use a value from the sizes array for bulk requesting". + +If requests get through WAF, and Orchestrator (or some monitor of the metrics database) thinks they are problematic, how do they get blocked? Does Orchestrator do it? Or does Orchestrator tell WAF? + +The latter is possible: AWS WAF IP sets are updatable via API, and rate-based rules can be scoped to URI patterns. A DLCS _Metrics Monitor_ (or whatever watches the metrics database) pushes offending IPs/CIDRs into an IP set with a TTL; CloudFront+WAF enforces it at the edge, before traffic ever reaches Orchestrator. This is much better than blocking in Orchestrator itself, because blocked traffic costs us nothing. Orchestrator-level decisions then only need to cover the softer responses (don't-orchestrate, degrade to slower path) + + +## Other people's problems + +Within the IIIF Community, people seem to suffer from text-based crawling more than image-based crawling. Anyone who generates manifests dynamically (as Wellcome did at the beginning) will have serious problems from link-following crawlers in 2026. + +However, high-profile targets _do_ suffer from excess automated image traffic. This seems targeted more often than not; scripted, not necessarily actively malicious, but often careless. The intent is get as much image content as possible, rather than an all-out denial of service. + +## Other people's solutions + +Most of these are not really dealing with Image API traffic, and are more conventional Web Application and Web API protection solutions. + +- [Cloudflare](https://www.cloudflare.com/) - particularly [Cloudflare Turnstile](https://www.cloudflare.com/products/turnstile/) for human-initiated interactions. +- [Anubis](https://anubis.techaro.lol/) +- [Traefik](https://traefik.io/) +- [F5 Firewall](https://www.f5.com/solutions/web-app-and-api-protection) +- [Basic NGINX rate limiting](https://joshtronic.com/2025/11/09/rate-limiting-nginx/) ## Proposal @@ -61,34 +75,71 @@ If requests get through WAF, and Orchestrator (or some monitor of the metrics da ### Gather usage stats from CloudFront -All requests to Protagonist are via CloudFront. We already log access requests to S3, which we can query using Athena. CloudFront is already tracking usage requests - can we hook into this to get access requests? These would be stored to the Metrics Database +All requests to Protagonist (current DLCS version) are via CloudFront. We already log access requests to S3, which we can query using Athena. CloudFront is already tracking usage requests - can we hook into this to get access requests? Can these be stored in a _Metrics Database_ - in PostgreSQL? + +For a raw per-request table, Postgres will work at first but billions of rows of append-heavy, scan-heavy data is what *columnar* stores are for. In the diagram above, S3 recieves Cloudfront data in partitioned [Parquet](https://en.wikipedia.org/wiki/Apache_Parquet) format. This is queryable forever via Athena, and is very cheap. Then, an **Aggregator** ([Athena CTAS](https://docs.aws.amazon.com/athena/latest/ug/ctas.html) or a small batch job) writes per-asset rows to PostgreSQL. PostgreSQL is the right place for the per-asset aggregate table (~60m rows max) and for joins against the existing Images table. If we later need fast ad-hoc queries on raw events, we could use [ClickHouse](https://clickhouse.com/). But we may never need it if Athena-over-Parquet covers retrospective analysis and the aggregator covers near-real-time. #### How can we get stats from CloudFront? -Lambda at edge? If we use origin response we will be able to determine how the image was served via x-proxy-destination header, and x-asset-id header for AssetId (do these 2 headers mean this is the preferred method?). Would/could this slow requests down as we are already using origin request lambda? +Orchestrator writes custom headers into the response that are very useful for such a metrics database. These include: + + - `x-proxy-destination` - which image server / static resource / thumb the request was routed to + - `x-asset-id` - the image ID in DLCS + - `x-orchestrated` - (??) whether this particular request triggered the copy from S3 to Lustre + - `...` - (others) + +Can Cloudfront use these? Lambda at edge? If we use origin response we will be able to determine how the image was served via x-proxy-destination header, and x-asset-id header for AssetId (do these 2 headers mean this is the preferred method?). Would/could this slow requests down as we are already using origin request lambda? + +Orchestrator can add any additional headers to the response that will be useful in populating the hypothetical metrics structure below. This means that entries arrive at the metrics store _some time after the request has completed_, but also that Orchestrator has no metric-recording overheads of its own. We should be careful not to invent new headers for Orchestrator to emit that actually cost it significant overhead to determine. + +However: + +If we capture `x-proxy-destination` / `x-asset-id` via an origin-response Lambda, we only ever see requests that missed the CloudFront cache. For _cost analysis_ that's arguably the traffic we care about, but for bot detection we need the full request picture — a bot hammering a cached tile is invisible to origin-response. Viewer-response fires on every request but adds latency and cost to every request. + +CloudFront real-time logs (Kinesis-native, no Lambda@Edge at all) record every request including cache hits, with `x-edge-result-type` telling you hit/miss. **BUT** They don't carry custom origin response headers! + +How much is actually derivable from the URL path alone? Thumbs vs /full/*/ vs tile is path-shaped. The **orchestration-specific** facts (orchestrated, which backend served it) could come from Orchestrator's own event stream instead, joined on a correlation ID or just on (asset, timestamp). That avoids Lambda@Edge entirely. It can't slow requests down as it's not in the requests path. But it does mean correlating Orchestrator information with Cloudfront information. + +To repeat: + +Real-time logs let you choose from a fixed field list (URI, IP, user-agent, result-type, response bytes, edge location…). They cannot carry custom origin response headers like `x-asset-id`. For DLCS that's _mostly_ fine, because asset ID and request type are derivable from the URI by the transform Lambda. But anything only Orchestrator knows (e.g. "this request triggered orchestration") must arrive by a separate path, such as Orchestrator's own events into the same Firehose or directly into Postgres, joined later on asset + time window, or more likely, Correlation ID. _This needs more design thought_. + + +### Per request information, from logs + +_Scope to image requests only_ + +Amazon Data Firehose (formerly Kinesis Data Firehose) is a fully managed service that does one job: accept a stream of small records (in this case, Cloudfront logs), buffer them, and periodically flush the batch to a destination — S3, in this case. We don't run servers, manage consumers, or handle retries. + +The core mechanic is the buffer. It has two thresholds: + + - Buffer size — e.g. 128 MB + - Buffer interval — e.g. 300 seconds -Orchestrator can add any additional headers to the response that will be useful in populating the hypothetical table below. This means that entries arrive at the metrics store some time after the request has completed, but also that Orchestrator has no metric-recording overheads of its own. We should be carfeul not to invent new headers for Orchestrator to emit that actually cost it significant overhead to determine. +Whichever is hit first triggers a flush: Firehose writes everything it has accumulated as one object in S3. This matters enormously for our metrics workload. CloudFront real-time logs for image traffic could be thousands of records per second; written naively that's thousands of tiny S3 objects per second, which is both expensive (PUT requests cost money) and terrible to query (Athena's performance dies on millions of small files). Firehose turns a firehose of records into a steady drip of a few large, well-sized files per minute. -Redirect logs? To where? Firehose? Lambda? Would this go directly to postgres, or aggregate? +CloudFront real-time logs are natively delivered to a Kinesis Data Stream, and Firehose can read straight from that stream. So the pipeline is: -What are the cost / implementation effort involved? +CloudFront → Kinesis Data Stream → Firehose → Transform λ → S3 +"Transform λ" is a custom lambda to transform each record in flight; this is where we parse the IIIF URL into region, size, region_type etc., before it's written. -### Metrics store +#### Parquet: why not just JSON or CSV? -* What is is? Postgres? -* How long does stuff stay in it? Forever? -* How long do we need stuff to stay in it? -* Do we archive it? -* What do we want to capture? +Firehose can write the records as-is (JSON lines), but it also has built-in record format conversion to Apache Parquet. Parquet is a columnar, compressed, binary format, perfect for the high volume expected here: -Scope to image requests only +* Columnar layout. A JSON log file stores records row by row; to answer "count requests per asset_id last week", Athena must read every byte of every record — user agents, raw paths, all of it. A Parquet file stores each column's values contiguously, with metadata describing where each column lives. The same query reads only the asset_id and timestamp columns and skips the rest of the file entirely. For a wide table like the provisional schema below, this means a 10–50× reduction in data scanned. Athena charges per byte scanned ($5/TB). +* Compression. Parquet compresses each column independently. Columns full of repetitive values - which we expect (quality is almost always d, format almost always j, the same bot IP appears 50,000 times in a row) compress well, often 10–20× smaller than the equivalent JSON. A billion rows of this schema in Parquet is tens of GB in S3, costing pennies per month. +* Statistics and predicate pushdown. Each Parquet file carries min/max values per column per internal block. A query filtering on timestamp > X can skip whole blocks without decompressing them. -Provisional schema +Format conversion needs a *schema*, which Firehose reads from a Glue Data Catalog table. Firehose uses it to convert incoming JSON records to typed Parquet. Athena then queries against that same Glue table. One schema definition, used by both ends. + +#### Provisional Parquet schema | Field | Description and type | |--------------|--------------------------------------------------------------------| | timestamp | | +| correlation | correlation id | | asset_id | e.g., 2/5/b12345678_0037.jp2 | | raw_path | e.g., 2/5/b12345678_0037.jp2/256,256,256,256/256,256/0/default.jpg | | region | e.g., "full" or "256,256,256,256". Store as string? | @@ -103,42 +154,115 @@ Provisional schema | orchestrated | Did *this* request trigger orchestration? | | destination | CF / thumb / resize / specialserver / img server char ... | -#### Notes 1. Region type, algorithm for computing this... simple: Is it square, power of two or from edge if not square? Better: Is it a valid tile from the image's info.json? 2. OSD sub tile. OSD makes (or at least used to make) a burst of requests smaller than the specified tile size, which just waste the server's time. 3. Destination - how did we service this request? Did it even reach orchestrator? Where did orchestrator route it to? (is this coming from Cloudfront?) 4. Do we want to query on quality.format (store a specific value for default.jpg, for example?) Or is that overoptimisation? -5. The incoming metrics aggregator could obtain and cache (in memory) the info.json which is needed to compute some of the above. +5. The incoming metrics aggregator could obtain and cache (in memory) the info.json which is needed to compute some of the above. If we are confident that we know what the `tiles` property of an info.json will be just from its height and width (fixed tiles, ignore any individual JP2 tile settings - like IIPImage) then we can answer the question "is this a valid tile request" from an algorithm (already implemented in iiif-net). This confidence is not necessarily justified - it depends on the image server (e.g., IIPImage will always generate a fixed 256 tile set, other image servers inspect the tiles and precincts of the actual JPEG 2000 to compute the ideal tile set(s)). + + +#### Partitioning + +"Partitioned" means Firehose writes objects under a key structure like: + +``` + s3://wc-iiif-metrics/requests/year=2026/month=06/day=12/hour=14/ + wc-metrics-1-2026-06-12-14-03-22-a1b2c3d4.parquet + wc-metrics-1-2026-06-12-14-08-51-e5f6a7b8.parquet +``` + +The key=value path segments are Hive-style partition keys, and Athena understands them as virtual columns. A query with `WHERE day = '2026-06-12'` never even lists the other days' prefixes, let alone reads them. Without partitioning, every query scans the entire history; with date partitioning, a "what happened in the last hour" bot-hunting query touches a few files regardless of whether there are three months or three years of data. + +Date/hour partitioning is Firehose's default behaviour and is the right choice here, since essentially every query (cost analysis, bot forensics, scavenger input) is time-bounded. (Firehose also supports dynamic partitioning on record fields, e.g. partitioning by destination, but **this is dangerous**, because partitioning on anything high-cardinality like asset_id would recreate the millions-of-tiny-files problem. Time alone is correct for this table.) + +`ip_address` is personal data under UK GDPR. We could store a salted hash (or /24 truncation) in long-lived data and keep raw IPs only in a short-window table used for active bot response. Partitioning gives us retention and an approach to GDPR: an S3 lifecycle rule like "objects under requests/ transition to Glacier after 90 days, delete after 400". Deleting a partition prefix is how we can implement a GDPR requirement like "raw IPs only live N days." + + +#### Latency + +Records appear in S3 a few minutes after the request (buffer interval + delivery). That's fine for the scavenger/optimiser and for retrospective analysis, but it is not a real-time bot-blocking path. For sub-minute reaction, that consumer should read the Kinesis stream directly (a second consumer alongside Firehose, Kinesis supports this natively) and keep its own short-window state. Same ingest, two consumers with different latency needs; this cleanly resolves the RFC's tension between "rich forensic store" and "fast enough to act." + +#### Costs + +Firehose is priced per GB ingested (~$0.03/GB plus a little for format conversion), the Kinesis stream a few cents per hour per shard, S3 storage very little at these compressed volumes. The recurring cost that needs watching is Athena scans — which is exactly what Parquet + partitioning minimise. There's no idle cost: nothing in this pipeline incurs costs when traffic is quiet. + +#### Compared with current CF+Athena + +This is different from the standard CloudFront access logs we already query with Athena. Those are free but delayed (minutes to hours, no SLA), gzipped TSV (slow/expensive to scan), and unpartitioned by default. The real-time-logs pipeline costs a little to run but gives us minutes-fresh, typed, columnar, partitioned data with IIIF-specific fields already parsed. We can keep both: standard logs as the free belt-and-braces archive, this pipeline as the working store. + + +### Per-asset aggregated table + +This is where PostgreSQL takes over. The aggregated per-request data becomes per-asset data. Possibly the same asset can have multiple rows with different time spans. + +| Field | Description and type | +|------------------|--------------------------------------------------------------------| +| asset_id | e.g., 2/5/b12345678_0037.jp2 | +| start | When the metrics for this row were captured from | +| end | ...and to | +| requests | total individual requests of any type | +| info_json | number of info.json requests | +| tiles | number of standard deep zoom tile requests | +| other_regions | number of other non-full region requests | +| thumbs | number of thumbnail requests | +| full_non_max | number of requests for /full/(size)/ where size is not max | +| full_max | number of requests for /full/max/ (or /full/full/) | +| distinct_full | number of distinct /full/(size)/ by size | +| distinct_ip | number of distinct IP addresses | +| distinct_ua | number of distinct user agents | +| distinct_clients | number of distinct clients (how do we tell this?) | +| tile_clients | number of clients making at least one standard tile request | +| thumb_clients | number of clients making at least one thumb request | +| full_clients | number of clients making at least one /full/*/ request | +| orchestrations | number of times this file was orchestrated in the period (0..n) | +| deletions | number of times this file was deleted in the period (0..n) | +| default_jpg | number of requests for /default.jpg | +| default_png | number of requests for /default.png | +| default_webp | number of requests for /default.webp | +| default_other | number of requests for /default.* (other) | +| other_quality | number of requests where quality != default | +| sizes_??? | Some way of capturing the spread of sizes being asked for? | + +This can join to the existing DLCS Images table for: -Join to Images table for - size - location(s) (nas?) - open/not open (affects cloudfront cache) +This table will be at least at big (eventually) as the number of rows in the DLCS Images table (~60m). But depending on our start/end partitioning approach, it could be multiples of this. + +Notes + +1. distinct_clients - "how do we tell this?" We can't, reliably; (IP, user_agent) tuples are the usual approximation and are spoofable. All client identity in this system is heuristic, which is fine because the consequences (slower service, rate limits) are proportionate. +2. sizes_??? - a JSONB histogram column ({"400,": 1200, "1024,": 80}) on the aggregate row, or a separate (asset_id, period, size, count) table if we want to query across it. +3. The fixed-column aggregate table is rigid — every new question ("how many WebP requests?") becomes a schema migration and a backfill problem. If raw events live cheaply in S3/Parquet, the aggregate table becomes a rebuildable materialisation rather than the system of record, and that rigidity stops mattering. + ### Gather orchestration stats -How do we gather stats on what has been orchestrated, and when? +Given that we can only gather standard Cloudfront information, we need another way to feed and correlate Orchestrator-specific information into the store. + +TODO Orchestrator could raise events? We need to guarantee delivery, a little late is likely fine. - Write direct to postgres? - Raise an SNS message? - Raise CloudWatch metric? - - Header added by Orchestrator - “this request triggered orch” - - Or could we hook into something like CloudWatch Logs (we use log insights at Wellcome to determine when images has been orchestrated and its size). What other changes would be required for Orchestrator? + Write to ImageLocation.nas location (allows multi diff locations) + No need to touch files - mtime doesn’t need to be accurate as scavenger service will track itself. ### Scavenger / Optimiser -New service, responsible for looking at data entered into above PG db and making a decision on what should go. +This is a new service, responsible for looking at data entered into the Metrics Database and making a decision on what should go from the Lustre volume. -What is this? (dotnet/python). Is it part of Protagonist or separate? How does it make decisions - is it the aggregator of data, or does something else aggregate and this just acts on those? Does it use LRU/LFU or some combination of both? +What is this? (dotnet/python). Is it part of Protagonist or separate? How does it make decisions? Does it use LRU/LFU or some combination of both? -This needs to feed deleted events back into the PG database. Does it go in raw? Or does something manage io? Is this the master of the metrics db? (ie manages schema etc). +This needs to feed deleted events back into the Metrics Database. Does it go in raw? Or does something manage io? Is this the master of the metrics db? (ie manages schema etc). ### Lustre Alternative @@ -146,43 +270,72 @@ Should we consider EBS multi-attach volume? What are the pros/cons? Multiple volumes. The optimizer can move between (logic TBC - e.g. big artworks in one and smaller/easier churn in another). Above re: ImageLocation.s3 refers to this behaviour. -### Architectural alternative +## Architectural alternative + +The above gathers the metrics we need for analysis of traffic for costs, cache eviction (scavenger) and perhaps bot-detection (see below). But we still have the problem of _having to orchestrate_ - having to pollute our expensive cache for what might be a single drive-by request for a non-full region of an image, or a single view of a page that renders the top layer of tiles in OpenSeadragon that a user never zooms into. We have to orchestrate for these because we can only serve such requests from an image server that has the image mounted on a fast random access filesystem (not S3). If we naively use Cantaloupe with an S3 back end (because it appears to solve the problem) we will have terrible performance and no control over an optimal cache at all. (This applies to JP2s) -What if performance for _tile-serving_ - not [SpecialServer](https://github.com/dlcs/protagonist/issues/30) `/full/*/` requests - was tolerable from an S3 back-end? That is, perceived as OK by users, even if it's not super smooth and fast. Then, we don't *have* to orchestrate the image file, we can hold off and see what happens - what other traffic for the image follows. +But... + +What if performance for _tile-serving_ - not [SpecialServer](https://github.com/dlcs/protagonist/issues/30) `/full/*/` requests - was tolerable from an S3 back-end _with no local file copy_? That is, perceived as OK by users, even if it's not _as_ super smooth and fast as when served from a real disk. Then, we don't *have* to orchestrate the image file, we can hold off and *see what happens* - what other traffic for the image follows. This would allow an orchestration decision to be based on retrospective metrics, rather than immediate need. A metrics monitor could have a candidate list of files to orchestrate as well as files to scavenge; if in the list, a subsequent request for the image would make orchestrator move it (even allowing traffic to pass through to the slower S3-direct server until the orchestration copy has been completed). -This restores the original benefit of the orchestrated cache. In the pre-bot era, this cache represents the left-hand peak of the long-tail distribution of traffic generated by real people. If we can identify one-off, drive-by or otherwise non-human looking traffic, even for requests that today MUST be orchestrated, we can serve them through slower image servers than can still scale out if necessary. We still maintain a pool (e.g., 1TB or 2TB) of "hot" images, on fast SSDs mounted on the image server for random access. But this pool is much more stable. With bot traffic, the cache is in a constant state of churn. +This restores the original benefit of the orchestrated cache. In the pre-bot era, this cache represents the left-hand peak of the [long-tail distribution of traffic generated by real people](https://github.com/dlcs/protagonist/issues/47). This worked well until only a few years ago and is still the architectural core principle of the DLCS. If we can identify one-off, drive-by or otherwise non-human looking traffic, even for requests that today MUST be orchestrated, we can serve them through slower image servers than can still scale out if necessary. We can still maintain a pool (e.g., 1TB or 2TB) of "hot" images, on fast SSDs mounted on the image server for random access. But this pool is much more stable. With bot traffic, the cache is in a constant state of churn. This of course still requires the ability to differentiate the types of traffic. -## bots +> [!TIP] +> Deferred orchestration (serve first requests from a slower S3-backed image server, orchestrate only when metrics say the asset is genuinely popular) is the only proposal here that structurally fixes the cache-pollution problem rather than detecting and reacting to it. Every bot-detection heuristic will have false negatives; deferred orchestration makes undetected bots merely slow rather than cache-poisoning. It also converts the hardest requirement - real-time bot classification - into a softer one: we only need to distinguish human-ish from bot-ish traffic *eventually*, on a minutes timescale, to decide promotion into the hot pool. + +**TODO** - How do we make performance for tile-serving tolerable from an S3 back-end with no local file copy? We may have the answer... -If gathered from CF the data is post-request +## 🤖 Dealing with bots 🤖 + +If gathered from Cloudfront, the metrics data is post-request. This has benefits and weaknesses. + +Our instinct is that many examples of IIIF traffic, especially image traffic, could only be judged as "bad bot" after evaluating multiple requests. A tile-stitcher script would not be obvious from just one request. If the evaluation of traffic is happening reasonably quickly (i.e., not a once-a-month report generation), and we could decide that traffic is a bot so we can block, or at least not-orchestrate the image it's hitting. How do we identify a bot? - retrospectively, from metrics - As it's happening -What do we do if we do identiy one? +// TODO - one of the hard parts! - We now have the metrics but how do we use them to detect bots!!! + +What do we do if we do identify one? -fair use -throttle +Bot detection now influences orchestration, so a false positive doesn't just rate-limit a user, it silently degrades image performance for them. The wellcomecollection.org viewer needs to be effectively unblockable (allowlist by origin/referer plus, if possible, the signed short-lived token idea hinted at in the API Keys section. Spoofable in principle, but it raises the bar and we only need it to gate priority, not access). + +### Firewall strategies + +What *general-purpose* services from WAF, Cloudflare, F5 Firewalls etc help us? -What general-purpose services from WAF, Cloudflare, F6 Firewalls etc help us? What can't they do because it's specific to IIIF traffic, especially image traffic? -IIIF Presentation - - doesn't bother us so much at Wellcome but is still a magnet for bots +#### IIIF Presentation API + +This doesn't bother us so much at Wellcome, because Manifests are static and proxied. But is still a magnet for bots, and is problematic for dumb bots just following links in JSON. JSON-LD has a lot of links. + +We need to ensure we *fail-fast* on requests that can't serve a response, e.g., Canvas `id`, Range `id` - don't waste resources on them (pattern match at Cloudfront?) + +Discussion of current WAF rules for iiif.wellcomecollection.org + +(redacted!) + + +#### IIIF Image API + +Can WAF help us? + +What do other people do? -Fail-fast on requests that can't serve a response, e.g., Canvas `id`, Range `id` - don't waste resources on them (pattern match at Cloudfront?) ## Scavenger Decision to evict is based on: + - performance for human users - cost @@ -193,22 +346,69 @@ Example bad case Conversely a very small jp2 that won't free up much space and is occasionally viewed +### Scavenging based on retrospective metrics + +Decisions to evict is not just a LRU touched time. + +It's based on the metrics database... but if so, what is the eviction algorithm? + + +### Metrics Monitor + +Is there something watching the metrics and determining + +- what files to orchestrate *to* the hot disk(s) +- what files to evict *from* the hot disk(s) + +... and is this same watcher evaluating traffic for potential bots, and if so, what does it do when it detects one? This isn't happening at the firewall level, it's something adjacent to the normal HTTP flow. What component does it tell, and what information does it give it such that a subsequent request from that source will be blocked? + + +### API Keys + +This is a possibility, others have done this. + +This is NOT IIIF Auth, but something different. + +The APIs are open, but traffic with a known API key is not rate-limited whereas other traffic is. + +The problem with this approach is that we don't want to rate-limit human-generated traffic originating from wellcomecollection.org, and perhaps from any real viewer. But how do we identify such traffic - in a way that can't be spoofed/emulated by attackers? And how do we rate-limit traffic we think is something else? + +Anonymous traffic gets a generous-but-real rate limit; registered keys get higher limits. We don't need to identify humans perfectly. We need the default limit set above what any human viewer generates, which the metrics will tell us. + ## Alternatives Considered -## Impact +Proof of work barriers -(incl risks) + - at the web page level, edge case - and that's for Wellcome to decide + - at the API, absolutely not -## Next Steps +IIIF Auth API on everything -A list of next steps for implementing the proposed solution, including any dependencies or prerequisites. + - Too much overhead, harms interoperability in practice, even if not in principle - "everyone can just implement a IIIF Auth client right?" -Links +### Prometheus -https://docs.google.com/document/d/1bRmGMMo4gM2JiUW5Zx-MRlHLi6ZVNg-HWfxQi5Hi9tw/edit?tab=t.0 +Prometheus is built for *low-cardinality*, pre-aggregated numeric time series. Our raw table has asset_id (60m values), ip_address, and raw_path as dimensions. This is an event/analytics workload, not a metrics workload. +### PostgreSQL for per-request logging + +For the raw per-request table, Postgres will work at first but billions of rows of append-heavy, scan-heavy data is more suited to a *columnar store*. + +Firehose → S3 in partitioned Parquet (queryable forever via Athena and very cheap, can keep for very long periods). The Aggregator writes only ... *aggregates* to Postgres. + + +## Impact + +(incl risks) + +IP address is personal data under UK GDPR. There needs to be a privacy policy. We need a retention answer anyway; consider storing a salted hash (or /24 truncation) in long-lived data and keeping raw IPs only in a short-window table used for active bot response. + +Cost of the pipeline itself: "super-rich metrics may be so costly... it's not worth it" — sampling is the standard mitigation, but note the asymmetry: cache optimisation tolerates sampling well, bot detection much less so. We might sample the raw archive while keeping the short-window bot table complete. + +## Next Steps + +A list of next steps for implementing the proposed solution, including any dependencies or prerequisites. -https://github.com/dlcs/protagonist/issues/272 \ No newline at end of file diff --git a/rfcs/xxx-iiif-metrics/images/dlcs-metrics.png b/rfcs/xxx-iiif-metrics/images/dlcs-metrics.png index 8a2d976f440aefe9c90f66c6e17821cdf4ffa4e0..f58ae91096f096b4ec9012b012d48d58138954b8 100644 GIT binary patch literal 218013 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 z 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%0ALA`sXVGSy)7!H$UR1Ipo_m~ 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 From 229ba55ab2791a7f49c487b48f800c2a4691d6d5 Mon Sep 17 00:00:00 2001 From: tomcrane Date: Tue, 23 Jun 2026 16:57:22 +0100 Subject: [PATCH 6/8] typos, and reorganise to make the argument clearer --- rfcs/xxx-iiif-metrics/README.md | 91 +++++++++++++++++++++------------ 1 file changed, 57 insertions(+), 34 deletions(-) diff --git a/rfcs/xxx-iiif-metrics/README.md b/rfcs/xxx-iiif-metrics/README.md index e2f3b136..616f4dde 100644 --- a/rfcs/xxx-iiif-metrics/README.md +++ b/rfcs/xxx-iiif-metrics/README.md @@ -10,15 +10,33 @@ To some extent, we hope that generic anti-bot technologies sitting in front of o **Last modified:** 2026-06-01T17:00+00:00 +## Deferred orchestration + +This RFC introduces several concepts: + + - the metrics pipeline + - the per-asset aggregates + - the bot heuristics + +...but they exist to support one structural change: **stop orchestrating on first request, and orchestrate only when _retrospective_ metrics say an asset is genuinely popular.** + +Today, any request that can't be served from a static thumb or from S3-direct (full-region images) forces an _immediate_ copy of the JP2 onto the fast Lustre volume, holding up the triggering request while it happens. That made sense in the pre-bot era, when traffic followed a [long-tail distribution of real human interest](https://github.com/dlcs/protagonist/issues/47): the cache naturally filled with the images people actually looked at. Automated traffic breaks that assumption. A single drive-by request for a non-full region, or one OpenSeadragon page-load whose top tiles are never zoomed into, is enough to pollute the cache. Bots, automated tile-stitchers, people grabbing images wholesale ... they all generate this load at volume. The result is a cache in constant churn (see [Context](#context)). + +Deferred orchestration breaks the link between "a request arrived" and "copy the file to fast disk". If tile-serving from an S3 back-end with no local copy is _tolerable_ (perceived as OK by users, even if not as smooth as from a real disk) then we no longer _have_ to orchestrate on demand. We can serve the first requests from a slower path and _wait to see what other traffic follows_, promoting an asset into a small, stable "hot" pool only when the metrics justify it. + +This is the only proposal here that **structurally fixes** cache pollution rather than detecting and reacting to it. Every bot-detection heuristic will have false negatives; deferred orchestration makes an undetected bot merely _slow_ rather than cache-poisoning. It also converts the hardest requirement - real-time bot classification - into a softer one: we only need to distinguish human-ish from bot-ish traffic _eventually_, on a minutes timescale, to decide promotion into the hot pool. + +The mechanics, open questions, and the metrics that feed the promotion decision are detailed in [Deferred orchestration in detail](#deferred-orchestration-in-detail). The one hard prerequisite — making S3-backed tile-serving tolerable with no local copy — is called out as a **TODO** there. + ## Context What does DLCS do now? - - We serve the fixed-size thumbs that have been created by an image's configured [`thumbs` delivery channel](https://dlcs.github.io/public-docs/api-doc/delivery-channels/#thumbs). These are proxied from S3; they are designed to service UIs that request a large number of thumbnails of known size. They do not hit an image server. Although this is called the thumbs delivery channel and the primary use case is UI that shows large numbers of thumbs at once, any size image may be a thumb, and we can store much larger images this way to drive _extremely responsive_ viewing UI [like this one](https://digirati-co-uk.github.io/st-louis-fed-exploded-viewer/?manifest=https://digirati-co-uk.github.io/st-louis-fed-exploded-viewer/b28047345.json). + - We serve the fixed-size thumbs that have been created by an image's configured [`thumbs` delivery channel](https://dlcs.github.io/public-docs/api-doc/delivery-channels/#thumbs). These are proxied from S3; they are designed to service UIs that request a large number of thumbnails of known size. They do not hit an image server. Although this is called the thumbs delivery channel and the primary use case is UI that shows large numbers of thumbs at once, any size image may be a thumb, and we can store much larger images this way to drive _extremely responsive_ viewing UI [like this one](https://digirati-co-uk.github.io/st-louis-fed-exploded-viewer/?manifest=https://digirati-co-uk.github.io/st-louis-fed-exploded-viewer/b28047345.json). - Requests for /full/{size}/ that cannot be served by a static "thumb" are routed to a configured Cantaloupe instance: [SpecialServer](https://github.com/dlcs/protagonist/issues/30). This is configured to read from S3, but it still copies the file down to a Cantaloupe-managed local storage. This scales out under load, but suffers from a number of issues that make it not-ideal. - Other requests (typically tile requests from deep zoom clients) are forwarded to an instance or instances of Cantaloupe that have a mounted Lustre volume, which Cantaloupe (using Kakadu) can perform fast random-access reads on. If an image file is not on this volume, DLCS's Orchestrator proxy will copy it onto the volume from S3, holding up the triggering request in the process. The idea is that the Lustre volume fills up with the most-used images. But automated scraping traffic pollutes the cache: this idea, while sound until a few years ago, no longer holds. -We evict files from the Lustre volume on a simple least-recently-used basis, but when under heavy load, this eviction/scavenging process can fail to keep up with pressure on the volume, leading to more drastic indiscriminate eviction. The same issue affects the SpecialServer instances; although the "support S3 backends" they still need to copy the JP2 locally; each is effectively managing its own orchestration and cache eviction. Under load, eviction can fail to keep up and the box stalls. +We evict files from the Lustre volume on a simple least-recently-used basis, but when under heavy load, this eviction/scavenging process can fail to keep up with pressure on the volume, leading to more drastic indiscriminate eviction. The same issue affects the SpecialServer instances; although they "support S3 backends", they still need to copy the JP2 locally; each is effectively managing its own orchestration and cache eviction. Under load, eviction can fail to keep up and the box stalls. ## Principles @@ -38,9 +56,9 @@ We evict files from the Lustre volume on a simple least-recently-used basis, but But how do we block or throttle the bad traffic and allow the good? -The Orchestrator component in DLCS is the "front of house" - it's a proxy to the underlying image servers, static thumbnails, transcoded AV and other resources. It enforces access control via the IIIF Authorization Flow API, it triggers file copies from S3 to the Lustre volume, it decides which downstream imaage server to route to. +The Orchestrator component in DLCS is the "front of house" - it's a proxy to the underlying image servers, static thumbnails, transcoded AV and other resources. It enforces access control via the IIIF Authorization Flow API, it triggers file copies from S3 to the Lustre volume, it decides which downstream image server to route to. -After WAF and CLoudfront, it's the "real" DLCS application and could contain arbitrarily complex throttling or blocking strategies. +After WAF and CloudFront, it's the "real" DLCS application and could contain arbitrarily complex throttling or blocking strategies. Throttling in Orchestrator is not a good idea. Delaying a response means holding the HTTP connection, the [Kestrel](https://learn.microsoft.com/en-us/aspnet/core/fundamentals/servers/kestrel?view=aspnetcore-10.0) request slot, and any upstream resources open for the duration. Under exactly the load conditions where we would want to throttle, "tar-pitting" multiplies our concurrency problem. The cheap responses are `429 Too Many Requests` with `Retry-After`, or outright blocking. Considerate bots will honour Retry-After; inconsiderate ones get escalated to blocking anyway. @@ -50,7 +68,7 @@ One detection method might be a burst of requests for different images from same If requests get through WAF, and Orchestrator (or some monitor of the metrics database) thinks they are problematic, how do they get blocked? Does Orchestrator do it? Or does Orchestrator tell WAF? -The latter is possible: AWS WAF IP sets are updatable via API, and rate-based rules can be scoped to URI patterns. A DLCS _Metrics Monitor_ (or whatever watches the metrics database) pushes offending IPs/CIDRs into an IP set with a TTL; CloudFront+WAF enforces it at the edge, before traffic ever reaches Orchestrator. This is much better than blocking in Orchestrator itself, because blocked traffic costs us nothing. Orchestrator-level decisions then only need to cover the softer responses (don't-orchestrate, degrade to slower path) +The latter is possible: AWS WAF IP sets are updatable via API, and rate-based rules can be scoped to URI patterns. A DLCS _Metrics Monitor_ (or whatever watches the metrics database) pushes offending IPs/CIDRs into an IP set with a TTL; CloudFront+WAF enforces it at the edge, before traffic ever reaches Orchestrator. This is much better than blocking in Orchestrator itself, because blocked traffic costs us nothing. Orchestrator-level decisions then only need to cover the softer responses (don't-orchestrate, degrade to slower path). ## Other people's problems @@ -77,7 +95,7 @@ Most of these are not really dealing with Image API traffic, and are more conven All requests to Protagonist (current DLCS version) are via CloudFront. We already log access requests to S3, which we can query using Athena. CloudFront is already tracking usage requests - can we hook into this to get access requests? Can these be stored in a _Metrics Database_ - in PostgreSQL? -For a raw per-request table, Postgres will work at first but billions of rows of append-heavy, scan-heavy data is what *columnar* stores are for. In the diagram above, S3 recieves Cloudfront data in partitioned [Parquet](https://en.wikipedia.org/wiki/Apache_Parquet) format. This is queryable forever via Athena, and is very cheap. Then, an **Aggregator** ([Athena CTAS](https://docs.aws.amazon.com/athena/latest/ug/ctas.html) or a small batch job) writes per-asset rows to PostgreSQL. PostgreSQL is the right place for the per-asset aggregate table (~60m rows max) and for joins against the existing Images table. If we later need fast ad-hoc queries on raw events, we could use [ClickHouse](https://clickhouse.com/). But we may never need it if Athena-over-Parquet covers retrospective analysis and the aggregator covers near-real-time. +For a raw per-request table, Postgres will work at first but billions of rows of append-heavy, scan-heavy data is better handled by a *columnar* store. In the diagram above, S3 receives CloudFront data in partitioned [Parquet](https://en.wikipedia.org/wiki/Apache_Parquet) format. This is queryable forever via Athena, and is very cheap. Then, an **Aggregator** ([Athena CTAS](https://docs.aws.amazon.com/athena/latest/ug/ctas.html) or a small batch job) writes per-asset rows to PostgreSQL. PostgreSQL is the right place for the per-asset aggregate table (~60m rows max) and for joins against the existing Images table. If we later need fast ad-hoc queries on raw events, we could use [ClickHouse](https://clickhouse.com/). But we may never need it if Athena-over-Parquet covers retrospective analysis and the aggregator covers near-real-time. #### How can we get stats from CloudFront? @@ -88,35 +106,37 @@ Orchestrator writes custom headers into the response that are very useful for su - `x-orchestrated` - (??) whether this particular request triggered the copy from S3 to Lustre - `...` - (others) -Can Cloudfront use these? Lambda at edge? If we use origin response we will be able to determine how the image was served via x-proxy-destination header, and x-asset-id header for AssetId (do these 2 headers mean this is the preferred method?). Would/could this slow requests down as we are already using origin request lambda? +Can CloudFront use these? Lambda at edge? If we use origin response we will be able to determine how the image was served via x-proxy-destination header, and x-asset-id header for AssetId (do these 2 headers mean this is the preferred method?). Would/could this slow requests down as we are already using origin request lambda? Orchestrator can add any additional headers to the response that will be useful in populating the hypothetical metrics structure below. This means that entries arrive at the metrics store _some time after the request has completed_, but also that Orchestrator has no metric-recording overheads of its own. We should be careful not to invent new headers for Orchestrator to emit that actually cost it significant overhead to determine. However: -If we capture `x-proxy-destination` / `x-asset-id` via an origin-response Lambda, we only ever see requests that missed the CloudFront cache. For _cost analysis_ that's arguably the traffic we care about, but for bot detection we need the full request picture — a bot hammering a cached tile is invisible to origin-response. Viewer-response fires on every request but adds latency and cost to every request. +If we capture `x-proxy-destination` / `x-asset-id` via an origin-response Lambda, we only ever see requests that missed the CloudFront cache. For _cost analysis_ that's the traffic we care about, but for bot detection we need the full request picture — a bot hammering a cached tile is invisible to origin-response. Viewer-response fires on every request but adds latency and cost to every request. -CloudFront real-time logs (Kinesis-native, no Lambda@Edge at all) record every request including cache hits, with `x-edge-result-type` telling you hit/miss. **BUT** They don't carry custom origin response headers! +CloudFront real-time logs (Kinesis-native, no Lambda@Edge at all) record every request including cache hits, with `x-edge-result-type` telling you hit/miss. **BUT** they don't carry custom origin response headers! No `x-proxy-destination` and friends. -How much is actually derivable from the URL path alone? Thumbs vs /full/*/ vs tile is path-shaped. The **orchestration-specific** facts (orchestrated, which backend served it) could come from Orchestrator's own event stream instead, joined on a correlation ID or just on (asset, timestamp). That avoids Lambda@Edge entirely. It can't slow requests down as it's not in the requests path. But it does mean correlating Orchestrator information with Cloudfront information. +How much is actually derivable from the URL path alone? Thumbs vs /full/*/ vs tile is path-shaped. The **orchestration-specific** facts (orchestrated, which backend served it) could come from Orchestrator's own event stream instead, joined on a correlation ID or just on (asset, timestamp). That avoids Lambda@Edge entirely. It can't slow requests down as it's not in the requests path. But it does mean correlating Orchestrator information with CloudFront information. To repeat: -Real-time logs let you choose from a fixed field list (URI, IP, user-agent, result-type, response bytes, edge location…). They cannot carry custom origin response headers like `x-asset-id`. For DLCS that's _mostly_ fine, because asset ID and request type are derivable from the URI by the transform Lambda. But anything only Orchestrator knows (e.g. "this request triggered orchestration") must arrive by a separate path, such as Orchestrator's own events into the same Firehose or directly into Postgres, joined later on asset + time window, or more likely, Correlation ID. _This needs more design thought_. +Real-time logs let you choose from a **fixed field list** (URI, IP, user-agent, result-type, response bytes, edge location...). They cannot carry custom origin response headers like `x-asset-id`. For DLCS that's _mostly_ fine, because asset ID and request type are derivable from the URI by the transform Lambda. But anything only Orchestrator knows (e.g. "this request triggered orchestration") must arrive by a separate path, such as Orchestrator's own events into the same Firehose or directly into Postgres, joined later on asset + time window, or more likely, Correlation ID. + +_This needs more design thought_. ### Per request information, from logs _Scope to image requests only_ -Amazon Data Firehose (formerly Kinesis Data Firehose) is a fully managed service that does one job: accept a stream of small records (in this case, Cloudfront logs), buffer them, and periodically flush the batch to a destination — S3, in this case. We don't run servers, manage consumers, or handle retries. +Amazon Data Firehose (formerly Kinesis Data Firehose) is a fully managed service that does one job: accept a stream of small records (in this case, CloudFront logs), buffer them, and periodically flush the batch to a destination: S3, in this case. We don't run servers, manage consumers, or handle retries. The core mechanic is the buffer. It has two thresholds: - Buffer size — e.g. 128 MB - Buffer interval — e.g. 300 seconds -Whichever is hit first triggers a flush: Firehose writes everything it has accumulated as one object in S3. This matters enormously for our metrics workload. CloudFront real-time logs for image traffic could be thousands of records per second; written naively that's thousands of tiny S3 objects per second, which is both expensive (PUT requests cost money) and terrible to query (Athena's performance dies on millions of small files). Firehose turns a firehose of records into a steady drip of a few large, well-sized files per minute. +Whichever is hit first triggers a flush: Firehose writes everything it has accumulated as one object in S3. This matters enormously for our metrics workload. CloudFront real-time logs for image traffic could be thousands of records per second; written naively that's thousands of tiny S3 objects per second, which is both expensive (PUT requests cost money) and terrible to query (Athena's performance dies on millions of small files). Firehose turns a firehose of records into a steady drip of a few large, well-sized files per minute. CloudFront real-time logs are natively delivered to a Kinesis Data Stream, and Firehose can read straight from that stream. So the pipeline is: @@ -157,7 +177,7 @@ Format conversion needs a *schema*, which Firehose reads from a Glue Data Catalo 1. Region type, algorithm for computing this... simple: Is it square, power of two or from edge if not square? Better: Is it a valid tile from the image's info.json? 2. OSD sub tile. OSD makes (or at least used to make) a burst of requests smaller than the specified tile size, which just waste the server's time. -3. Destination - how did we service this request? Did it even reach orchestrator? Where did orchestrator route it to? (is this coming from Cloudfront?) +3. Destination - how did we service this request? Did it even reach orchestrator? Where did orchestrator route it to? (is this coming from CloudFront?) 4. Do we want to query on quality.format (store a specific value for default.jpg, for example?) Or is that overoptimisation? 5. The incoming metrics aggregator could obtain and cache (in memory) the info.json which is needed to compute some of the above. If we are confident that we know what the `tiles` property of an info.json will be just from its height and width (fixed tiles, ignore any individual JP2 tile settings - like IIPImage) then we can answer the question "is this a valid tile request" from an algorithm (already implemented in iiif-net). This confidence is not necessarily justified - it depends on the image server (e.g., IIPImage will always generate a fixed 256 tile set, other image servers inspect the tiles and precincts of the actual JPEG 2000 to compute the ideal tile set(s)). @@ -181,11 +201,11 @@ Date/hour partitioning is Firehose's default behaviour and is the right choice h #### Latency -Records appear in S3 a few minutes after the request (buffer interval + delivery). That's fine for the scavenger/optimiser and for retrospective analysis, but it is not a real-time bot-blocking path. For sub-minute reaction, that consumer should read the Kinesis stream directly (a second consumer alongside Firehose, Kinesis supports this natively) and keep its own short-window state. Same ingest, two consumers with different latency needs; this cleanly resolves the RFC's tension between "rich forensic store" and "fast enough to act." +Records appear in S3 a few minutes after the request (buffer interval + delivery). That's fine for the scavenger/optimiser and for retrospective analysis, but it is not a real-time bot-blocking path. For sub-minute reaction, that consumer should read the Kinesis stream directly (a second consumer alongside Firehose, Kinesis supports this natively) and keep its own short-window state. Same ingest, two consumers with different latency needs: "rich forensic store" vs "fast enough to act." #### Costs -Firehose is priced per GB ingested (~$0.03/GB plus a little for format conversion), the Kinesis stream a few cents per hour per shard, S3 storage very little at these compressed volumes. The recurring cost that needs watching is Athena scans — which is exactly what Parquet + partitioning minimise. There's no idle cost: nothing in this pipeline incurs costs when traffic is quiet. +Firehose is priced per GB ingested (~$0.03/GB plus a little for format conversion), the Kinesis stream a few cents per hour per shard, S3 storage very little at these compressed volumes. The recurring cost that can escalate is Athena scans, which is exactly what Parquet + partitioning minimise. There's no idle cost: nothing in this pipeline incurs costs when traffic is quiet. #### Compared with current CF+Athena @@ -230,7 +250,7 @@ This can join to the existing DLCS Images table for: - location(s) (nas?) - open/not open (affects cloudfront cache) -This table will be at least at big (eventually) as the number of rows in the DLCS Images table (~60m). But depending on our start/end partitioning approach, it could be multiples of this. +This table will be at least as big (eventually) as the number of rows in the DLCS Images table (~60m). But depending on our start/end partitioning approach, it could be multiples of this. Notes @@ -240,16 +260,10 @@ Notes ### Gather orchestration stats -Given that we can only gather standard Cloudfront information, we need another way to feed and correlate Orchestrator-specific information into the store. +Given that we can only gather standard CloudFront information, we need another way to feed and correlate Orchestrator-specific information into the store. TODO -Orchestrator could raise events? We need to guarantee delivery, a little late is likely fine. - - - Write direct to postgres? - - Raise an SNS message? - - Raise CloudWatch metric? - What other changes would be required for Orchestrator? Write to ImageLocation.nas location (allows multi diff locations) @@ -270,7 +284,9 @@ Should we consider EBS multi-attach volume? What are the pros/cons? Multiple volumes. The optimizer can move between (logic TBC - e.g. big artworks in one and smaller/easier churn in another). Above re: ImageLocation.s3 refers to this behaviour. -## Architectural alternative +## Deferred orchestration in detail + +> This section gives the mechanics behind [the central proposal](#the-central-proposal-deferred-orchestration) at the top of the document. The above gathers the metrics we need for analysis of traffic for costs, cache eviction (scavenger) and perhaps bot-detection (see below). But we still have the problem of _having to orchestrate_ - having to pollute our expensive cache for what might be a single drive-by request for a non-full region of an image, or a single view of a page that renders the top layer of tiles in OpenSeadragon that a user never zooms into. We have to orchestrate for these because we can only serve such requests from an image server that has the image mounted on a fast random access filesystem (not S3). If we naively use Cantaloupe with an S3 back end (because it appears to solve the problem) we will have terrible performance and no control over an optimal cache at all. @@ -284,16 +300,21 @@ This would allow an orchestration decision to be based on retrospective metrics, This restores the original benefit of the orchestrated cache. In the pre-bot era, this cache represents the left-hand peak of the [long-tail distribution of traffic generated by real people](https://github.com/dlcs/protagonist/issues/47). This worked well until only a few years ago and is still the architectural core principle of the DLCS. If we can identify one-off, drive-by or otherwise non-human looking traffic, even for requests that today MUST be orchestrated, we can serve them through slower image servers than can still scale out if necessary. We can still maintain a pool (e.g., 1TB or 2TB) of "hot" images, on fast SSDs mounted on the image server for random access. But this pool is much more stable. With bot traffic, the cache is in a constant state of churn. -This of course still requires the ability to differentiate the types of traffic. +This of course still requires the ability to differentiate the types of traffic. `/full/*/` requests can route to a better SpecialServer. Tile requests for unorchestrated files can route initially to a different server that can meet this traffic from S3. + +If the tile requests keep coming (to be defined), AND they don't look like an automated tile-stitcher (which we would hope to block), then the source image can eventually be orchestrated. -> [!TIP] -> Deferred orchestration (serve first requests from a slower S3-backed image server, orchestrate only when metrics say the asset is genuinely popular) is the only proposal here that structurally fixes the cache-pollution problem rather than detecting and reacting to it. Every bot-detection heuristic will have false negatives; deferred orchestration makes undetected bots merely slow rather than cache-poisoning. It also converts the hardest requirement - real-time bot classification - into a softer one: we only need to distinguish human-ish from bot-ish traffic *eventually*, on a minutes timescale, to decide promotion into the hot pool. +There is an interesting counter-tension here though. If an image is hugely popular - all its tiles are requested many times over - then we would expect CloudFront to kick in and cache those tile responses. But it isn't going to do that for all CDN edge locations, and for all tiles. It's popular, hundreds of people are viewing it in a deep zoom client, and many of them are zooming right in. But someone at a remote edge who zooms into the corner, triggering a request for the one tile not yet in Cloudfront at that edge - they would currently trigger an orchestration. But maybe not in future, because the smattering of "filling in the gaps" tile requests that come through for a popular image whose tiles are _mostly_ now present in CloudFront are not enough to trigger a reorchestration. -**TODO** - How do we make performance for tile-serving tolerable from an S3 back-end with no local file copy? We may have the answer... +There are many dimensions to adjust here to optimise performance, but until any form of deferred orchestration is possible, they are not available. + +**TODO** - How do we make performance for tile-serving tolerable from an S3 back-end with no local file copy? + +> We are still working on image server enhancements ## 🤖 Dealing with bots 🤖 -If gathered from Cloudfront, the metrics data is post-request. This has benefits and weaknesses. +If gathered from CloudFront, the metrics data is post-request. This has benefits and weaknesses. Our instinct is that many examples of IIIF traffic, especially image traffic, could only be judged as "bad bot" after evaluating multiple requests. A tile-stitcher script would not be obvious from just one request. If the evaluation of traffic is happening reasonably quickly (i.e., not a once-a-month report generation), and we could decide that traffic is a bot so we can block, or at least not-orchestrate the image it's hitting. @@ -304,9 +325,11 @@ How do we identify a bot? // TODO - one of the hard parts! - We now have the metrics but how do we use them to detect bots!!! -What do we do if we do identify one? +Are the metrics streams discussed so far real-time enough for orchestration decisions, but not real-time enough to stamp on a bit before it does harm? + +What do we do if we do identify a bot? -Bot detection now influences orchestration, so a false positive doesn't just rate-limit a user, it silently degrades image performance for them. The wellcomecollection.org viewer needs to be effectively unblockable (allowlist by origin/referer plus, if possible, the signed short-lived token idea hinted at in the API Keys section. Spoofable in principle, but it raises the bar and we only need it to gate priority, not access). +Bot detection now influences orchestration, so a false positive doesn't just rate-limit a user, it silently degrades image performance for them. The wellcomecollection.org viewer needs to be effectively unblockable (allowlist by origin/referer plus, if possible, the signed short-lived token idea hinted at in the API Keys section below. Spoofable in principle, but it raises the bar and we only need it to gate priority, not access). ### Firewall strategies @@ -318,7 +341,7 @@ What can't they do because it's specific to IIIF traffic, especially image traff This doesn't bother us so much at Wellcome, because Manifests are static and proxied. But is still a magnet for bots, and is problematic for dumb bots just following links in JSON. JSON-LD has a lot of links. -We need to ensure we *fail-fast* on requests that can't serve a response, e.g., Canvas `id`, Range `id` - don't waste resources on them (pattern match at Cloudfront?) +We need to ensure we *fail-fast* on requests that can't serve a response, e.g., Canvas `id`, Range `id` - don't waste resources on them (pattern match at CloudFront?) Discussion of current WAF rules for iiif.wellcomecollection.org @@ -344,7 +367,7 @@ As the disk nears a threshold, we need to start deleting orchestrated files Example bad case - a very large artwork that is viewed intermittently. But often enough that it keeps getting re-orchestrated just after it's been scavenged -Conversely a very small jp2 that won't free up much space and is occasionally viewed +Conversely a very small jp2 that won't free up much space and is occasionally viewed may be worth keeping - although again, "good-enough" non-orchestrated image server performance is going to be easier for small images. ### Scavenging based on retrospective metrics From 07481953d70cb004e3c1a79f9657b2159bc64241 Mon Sep 17 00:00:00 2001 From: tomcrane Date: Tue, 23 Jun 2026 17:20:55 +0100 Subject: [PATCH 7/8] link to private repo for bot heuristics --- rfcs/xxx-iiif-metrics/README.md | 49 +++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 17 deletions(-) diff --git a/rfcs/xxx-iiif-metrics/README.md b/rfcs/xxx-iiif-metrics/README.md index 616f4dde..a7a9a8f6 100644 --- a/rfcs/xxx-iiif-metrics/README.md +++ b/rfcs/xxx-iiif-metrics/README.md @@ -318,41 +318,56 @@ If gathered from CloudFront, the metrics data is post-request. This has benefits Our instinct is that many examples of IIIF traffic, especially image traffic, could only be judged as "bad bot" after evaluating multiple requests. A tile-stitcher script would not be obvious from just one request. If the evaluation of traffic is happening reasonably quickly (i.e., not a once-a-month report generation), and we could decide that traffic is a bot so we can block, or at least not-orchestrate the image it's hitting. -How do we identify a bot? +How do we identify a bot? On two timescales: - - retrospectively, from metrics - - As it's happening + - **retrospectively, from the aggregated metrics** - the per-asset and per-source rollups make some patterns obvious after the fact (a single source pulling every `/full/*` size of thousands of assets; a source whose requests walk an image's tile grid in order). + - **as it's happening** - the short-window Kinesis consumer (see [Latency](#latency)) keeps enough recent state to react on a minutes timescale, before a long scrape completes. -// TODO - one of the hard parts! - We now have the metrics but how do we use them to detect bots!!! +Crucially, deferred orchestration means we don't have to be fast or certain. An undetected bot is merely _slow_ (served from the S3-direct path), not cache-poisoning. So detection is mostly a _promotion filter_ - "is this traffic human-ish enough to justify moving the asset into the hot pool?" - rather than a _blocking_ decision. We only escalate to actual blocking for the inconsiderate, evasive end of the spectrum. -Are the metrics streams discussed so far real-time enough for orchestration decisions, but not real-time enough to stamp on a bit before it does harm? +### Signal categories -What do we do if we do identify a bot? +The metrics schema is designed to surface a handful of behavioural signals. The _specific thresholds, weights and signatures are deliberately not in this public document_ (see [Companion document](#companion-document-private) below); what follow are the categories. -Bot detection now influences orchestration, so a false positive doesn't just rate-limit a user, it silently degrades image performance for them. The wellcomecollection.org viewer needs to be effectively unblockable (allowlist by origin/referer plus, if possible, the signed short-lived token idea hinted at in the API Keys section below. Spoofable in principle, but it raises the bar and we only need it to gate priority, not access). + - **Volume and spread per source.** Requests per (IP, user-agent) per window, and how many _distinct_ assets they touch. A human reads a handful of items deeply; a scraper touches thousands shallowly. + - **Request-type mix.** The ratio of tile / `/full/*` / thumb / info.json requests. A bulk `/full/*` harvester and a real OpenSeadragon session have very different mixes. + - **`sizes` adherence.** Wellcome publishes preferred [`sizes`](https://iiif.io/api/image/3.0/#53-sizes) per image. Bulk requests that ignore the advertised sizes are a soft tell - and a case where we'd rather respond politely ("please use a value from the sizes array") than block. + - **Tile-grid traversal.** Tile-stitchers tend to request a complete, ordered grid for an image at one scale. Humans pan and zoom irregularly and rarely fetch every tile. + - **OSD sub-tile bursts.** Sub-tile-size region requests that just waste server time (already flagged in the schema notes). + - **Distribution shape over time.** Real traffic is bursty around human attention; scrapers are flat and relentless. -### Firewall strategies +None of these is decisive alone; the point of the metrics store is to let us _combine_ them. The combining logic is where the sensitive detail lives. -What *general-purpose* services from WAF, Cloudflare, F5 Firewalls etc help us? +What do we do once we've decided? Bot detection now influences orchestration, so a false positive doesn't just rate-limit a user, it silently degrades image performance for them. The wellcomecollection.org viewer needs to be effectively unblockable (allowlist by origin/referer plus, if possible, the signed short-lived token idea hinted at in the [API Keys](#api-keys) section below. Spoofable in principle, but it raises the bar and we only need it to gate priority, not access). -What can't they do because it's specific to IIIF traffic, especially image traffic? +The response is graduated: -#### IIIF Presentation API + - **Don't-promote** - leave the asset on the slow S3-direct path. The default, cheapest, lowest-risk response; invisible to legitimate users beyond slightly slower image delivery. + - **Soft signal** - respond with the pixels _and_ a message pointing bulk requesters at the `sizes` array. + - **Rate-limit** - `429 Too Many Requests` with `Retry-After`. Considerate bots honour it. + - **Block at the edge** - push the offending IP/CIDR into a WAF IP set with a TTL, so CloudFront drops it before it costs us anything (see [Challenges](#challenges)). Reserved for the evasive, inconsiderate end. -This doesn't bother us so much at Wellcome, because Manifests are static and proxied. But is still a magnet for bots, and is problematic for dumb bots just following links in JSON. JSON-LD has a lot of links. +### Firewall strategies -We need to ensure we *fail-fast* on requests that can't serve a response, e.g., Canvas `id`, Range `id` - don't waste resources on them (pattern match at CloudFront?) +What *general-purpose* services from WAF, Cloudflare, F5 firewalls etc. help us, and what can't they do because it's specific to IIIF image traffic? -Discussion of current WAF rules for iiif.wellcomecollection.org +General-purpose tooling is good at the things that _aren't_ IIIF-specific: blunt per-IP rate limits, geo/ASN rules, bot-reputation lists, JS/Turnstile challenges for _browser_ entry points. What it can't do is understand that a stream of perfectly well-formed, individually-cheap-looking image requests is collectively a tile-stitch of a whole work, or that they ignore the advertised `sizes`. That IIIF-semantic judgement is what our own metrics layer adds on top. -(redacted!) +#### IIIF Presentation API +This doesn't bother us so much at Wellcome, because Manifests are static and proxied. But it's still a magnet for bots, and is problematic for dumb bots just following links in JSON - JSON-LD has a lot of links. + +We need to *fail-fast* on requests that can't serve a response, e.g., Canvas `id`, Range `id` - don't waste resources on them (pattern match at CloudFront?). + +The current WAF ruleset for `iiif.wellcomecollection.org`, and any specific patterns, live in the companion document - they are operationally sensitive and out of scope for this public repo. #### IIIF Image API -Can WAF help us? +This is the hard, IIIF-specific part, and the main subject of the companion document. The public position is: the signal categories above, computed from the metrics store, feed a scoring step whose job is mostly to gate promotion into the hot pool and, at the extreme, to feed the WAF IP set. The thresholds and scoring are kept private as anti-evasion friction - but, per the deferred-orchestration argument, the design does **not** depend on their secrecy for correctness, only for efficiency. + +### Companion document (private) -What do other people do? +Concrete heuristics, thresholds, scoring and the current WAF rules are maintained outside this public repository, in the private `dlcs/private-protagonist` repo under `docs/rfcs/wellcome-bots-metrics-support`. Anything that names real source IPs / actors (personal data), or that would hand an evader a recipe, belongs there rather than here. ## Scavenger From 2bd45976899adffbc8a25d47609156f84fbabce1 Mon Sep 17 00:00:00 2001 From: tomcrane Date: Thu, 30 Jul 2026 15:00:06 +0100 Subject: [PATCH 8/8] tidy up orchestration/metrics RFC prior to sharing with Wellcome --- rfcs/xxx-iiif-metrics/README.md | 135 ++++++++++++++++++-------------- 1 file changed, 77 insertions(+), 58 deletions(-) diff --git a/rfcs/xxx-iiif-metrics/README.md b/rfcs/xxx-iiif-metrics/README.md index a7a9a8f6..a2e7ecfb 100644 --- a/rfcs/xxx-iiif-metrics/README.md +++ b/rfcs/xxx-iiif-metrics/README.md @@ -8,7 +8,7 @@ The second is the increasing challenge of bot traffic - automated, high volume r To some extent, we hope that generic anti-bot technologies sitting in front of our systems will kick in and protect our services - e.g., Web Application Firewall on AWS (WAF). But IIIF Image API traffic may not fit the patterns WAF is looking for. We may need our own additional custom heuristics as well. The same metrics store can, we hope, drive both use cases. -**Last modified:** 2026-06-01T17:00+00:00 +**Last modified:** 2026-07-30T13:56:45Z ## Deferred orchestration @@ -26,7 +26,7 @@ Deferred orchestration breaks the link between "a request arrived" and "copy the This is the only proposal here that **structurally fixes** cache pollution rather than detecting and reacting to it. Every bot-detection heuristic will have false negatives; deferred orchestration makes an undetected bot merely _slow_ rather than cache-poisoning. It also converts the hardest requirement - real-time bot classification - into a softer one: we only need to distinguish human-ish from bot-ish traffic _eventually_, on a minutes timescale, to decide promotion into the hot pool. -The mechanics, open questions, and the metrics that feed the promotion decision are detailed in [Deferred orchestration in detail](#deferred-orchestration-in-detail). The one hard prerequisite — making S3-backed tile-serving tolerable with no local copy — is called out as a **TODO** there. +The mechanics, open questions, and the metrics that feed the promotion decision are detailed in [Deferred orchestration in detail](#deferred-orchestration-in-detail). The one hard prerequisite — making S3-backed tile-serving tolerable with no local copy — is called out as a **TODO** there. If that prerequisite turns out to be unachievable, much of this RFC still stands; [If we can't defer orchestration](#if-we-cant-defer-orchestration) covers what would have to change. ## Context @@ -103,10 +103,10 @@ Orchestrator writes custom headers into the response that are very useful for su - `x-proxy-destination` - which image server / static resource / thumb the request was routed to - `x-asset-id` - the image ID in DLCS - - `x-orchestrated` - (??) whether this particular request triggered the copy from S3 to Lustre + - `x-orchestrated` - (proposed) whether this particular request triggered the copy from S3 to Lustre - `...` - (others) -Can CloudFront use these? Lambda at edge? If we use origin response we will be able to determine how the image was served via x-proxy-destination header, and x-asset-id header for AssetId (do these 2 headers mean this is the preferred method?). Would/could this slow requests down as we are already using origin request lambda? +Can CloudFront capture these, via Lambda@Edge? An origin-response Lambda could record how the image was served (`x-proxy-destination`) and which asset it was for (`x-asset-id`) - does that make it the preferred method? And would it slow requests down, given we are already using an origin-request Lambda? Orchestrator can add any additional headers to the response that will be useful in populating the hypothetical metrics structure below. This means that entries arrive at the metrics store _some time after the request has completed_, but also that Orchestrator has no metric-recording overheads of its own. We should be careful not to invent new headers for Orchestrator to emit that actually cost it significant overhead to determine. @@ -122,7 +122,7 @@ To repeat: Real-time logs let you choose from a **fixed field list** (URI, IP, user-agent, result-type, response bytes, edge location...). They cannot carry custom origin response headers like `x-asset-id`. For DLCS that's _mostly_ fine, because asset ID and request type are derivable from the URI by the transform Lambda. But anything only Orchestrator knows (e.g. "this request triggered orchestration") must arrive by a separate path, such as Orchestrator's own events into the same Firehose or directly into Postgres, joined later on asset + time window, or more likely, Correlation ID. -_This needs more design thought_. +**Open question:** exactly how Orchestrator-only facts are emitted and correlated with the CloudFront records — see [Gather orchestration stats](#gather-orchestration-stats), and step 3 of [Next Steps](#next-steps). ### Per request information, from logs @@ -260,33 +260,35 @@ Notes ### Gather orchestration stats -Given that we can only gather standard CloudFront information, we need another way to feed and correlate Orchestrator-specific information into the store. +Given that we can only gather standard CloudFront information, we need another way to feed and correlate Orchestrator-specific information into the store. As discussed [above](#how-can-we-get-stats-from-cloudfront), the likely shape is Orchestrator emitting its own events (into the same Firehose, or directly to PostgreSQL), correlated with the CloudFront records on a correlation ID - but this needs design work. -TODO +Other changes we know Orchestrator would need: -What other changes would be required for Orchestrator? + - Write the fast-disk location to `ImageLocation.Nas`, which allows an asset to live on one of multiple volumes (see [Lustre Alternative](#lustre-alternative)). + - Stop touching files to record usage: file mtime no longer needs to be accurate, because the scavenger service tracks usage itself from the metrics. -Write to ImageLocation.nas location (allows multi diff locations) - -No need to touch files - mtime doesn’t need to be accurate as scavenger service will track itself. +**Open question:** what else would Orchestrator need to change? ### Scavenger / Optimiser -This is a new service, responsible for looking at data entered into the Metrics Database and making a decision on what should go from the Lustre volume. +This is a new service, responsible for looking at data entered into the Metrics Database and deciding what should be removed from the Lustre volume - and, with [deferred orchestration](#deferred-orchestration), what should be promoted onto it. Eviction policy is discussed further in [Scavenger in detail](#scavenger-in-detail). -What is this? (dotnet/python). Is it part of Protagonist or separate? How does it make decisions? Does it use LRU/LFU or some combination of both? +Open questions: -This needs to feed deleted events back into the Metrics Database. Does it go in raw? Or does something manage io? Is this the master of the metrics db? (ie manages schema etc). + - What is it implemented in (dotnet/python)? Is it part of Protagonist or separate? + - How does it make decisions? LRU, LFU, or some combination of both? + - It needs to feed deletion events back into the Metrics Database. Does it write them directly, or does something else manage that I/O? + - Is this service the owner of the metrics database (i.e., does it manage the schema)? ### Lustre Alternative -Should we consider EBS multi-attach volume? What are the pros/cons? +Should we consider EBS multi-attach volumes instead of Lustre? What are the pros/cons? -Multiple volumes. The optimizer can move between (logic TBC - e.g. big artworks in one and smaller/easier churn in another). Above re: ImageLocation.s3 refers to this behaviour. +We could also run multiple volumes, with the optimiser moving assets between them (logic TBC - e.g., large artworks on one volume, smaller/higher-churn images on another). The `ImageLocation.Nas` change in [Gather orchestration stats](#gather-orchestration-stats) above is what makes multiple locations possible. ## Deferred orchestration in detail -> This section gives the mechanics behind [the central proposal](#the-central-proposal-deferred-orchestration) at the top of the document. +> This section gives the mechanics behind [the central proposal](#deferred-orchestration) at the top of the document. The above gathers the metrics we need for analysis of traffic for costs, cache eviction (scavenger) and perhaps bot-detection (see below). But we still have the problem of _having to orchestrate_ - having to pollute our expensive cache for what might be a single drive-by request for a non-full region of an image, or a single view of a page that renders the top layer of tiles in OpenSeadragon that a user never zooms into. We have to orchestrate for these because we can only serve such requests from an image server that has the image mounted on a fast random access filesystem (not S3). If we naively use Cantaloupe with an S3 back end (because it appears to solve the problem) we will have terrible performance and no control over an optimal cache at all. @@ -298,7 +300,7 @@ What if performance for _tile-serving_ - not [SpecialServer](https://github.com/ This would allow an orchestration decision to be based on retrospective metrics, rather than immediate need. A metrics monitor could have a candidate list of files to orchestrate as well as files to scavenge; if in the list, a subsequent request for the image would make orchestrator move it (even allowing traffic to pass through to the slower S3-direct server until the orchestration copy has been completed). -This restores the original benefit of the orchestrated cache. In the pre-bot era, this cache represents the left-hand peak of the [long-tail distribution of traffic generated by real people](https://github.com/dlcs/protagonist/issues/47). This worked well until only a few years ago and is still the architectural core principle of the DLCS. If we can identify one-off, drive-by or otherwise non-human looking traffic, even for requests that today MUST be orchestrated, we can serve them through slower image servers than can still scale out if necessary. We can still maintain a pool (e.g., 1TB or 2TB) of "hot" images, on fast SSDs mounted on the image server for random access. But this pool is much more stable. With bot traffic, the cache is in a constant state of churn. +This restores the original benefit of the orchestrated cache. In the pre-bot era, this cache represents the left-hand peak of the [long-tail distribution of traffic generated by real people](https://github.com/dlcs/protagonist/issues/47). This worked well until only a few years ago and is still the architectural core principle of the DLCS. If we can identify one-off, drive-by or otherwise non-human looking traffic, even for requests that today MUST be orchestrated, we can serve them through slower image servers that can still scale out if necessary. We can still maintain a pool (e.g., 1TB or 2TB) of "hot" images, on fast SSDs mounted on the image server for random access. But this pool is much more stable. With bot traffic, the cache is in a constant state of churn. This of course still requires the ability to differentiate the types of traffic. `/full/*/` requests can route to a better SpecialServer. Tile requests for unorchestrated files can route initially to a different server that can meet this traffic from S3. @@ -312,18 +314,39 @@ There are many dimensions to adjust here to optimise performance, but until any > We are still working on image server enhancements +## If we can't defer orchestration + +Deferred orchestration depends on one empirical result: tile-serving directly from S3, with no local copy, being tolerable to human users. The first item in [Next Steps](#next-steps) is the spike that answers this. If the answer is no - we simply can't get good enough performance - much of this RFC still stands, but some of the approach changes. + +**What is unaffected:** + + - The metrics pipeline (CloudFront real-time logs → Kinesis → Firehose → Parquet → Athena, plus the aggregator into PostgreSQL). Its value for cost analysis, retrospective forensics and scavenger input does not depend on how orchestration is triggered. + - The per-asset aggregate table and its joins to the Images table. + - The graduated bot response and the WAF IP set blocking path, and the API keys idea. + - The Scavenger - its job gets harder (see below), but metrics-driven eviction still replaces naive LRU. + +**What changes:** + + - **Bot detection reverts to being a hard, fast problem.** The softening described in [Dealing with bots](#-dealing-with-bots-) - that an undetected bot is merely _slow_ - no longer applies. Every request that reaches an image server pollutes the cache again, so detection has to act before or very shortly after orchestration. The short-window Kinesis consumer becomes load-bearing infrastructure rather than an optimisation, and the trade-off worsens in both directions: false negatives cost cache quality, and false positives now mean rate-limiting or refusing real users rather than quietly serving them from a slower path. + - **Containment replaces prevention.** We can't stop drive-by traffic entering the cache, but we can contain what it damages. New orchestrations from sources without a human-ish track record go onto a separate _probationary_ volume, scavenged first and aggressively, keeping a stable hot pool for assets whose metrics justify promotion. The multiple-volume mechanics already proposed ([Lustre Alternative](#lustre-alternative), `ImageLocation.Nas`) are exactly what this needs. It is a weaker form of the same idea: metrics still decide promotion into the stable pool, but the "waiting room" is a sacrificial disk rather than S3-direct serving. + - **The Scavenger becomes the main lever for cache quality.** Instead of a stable pool with rare evictions, we are back to managing churn. Retrospective metrics drive eviction priority - evict what bots dragged in first, weight by asset size and by human-ish traffic share. + - **Refusal moves earlier in the response ladder.** With no tolerable slow path to demote suspect traffic to, the realistic responses to suspected-bot tile requests for unorchestrated assets are rate-limiting or `429` - applied sooner, and with less certainty, than we would like. + - **Pre-generation as an alternative slow path?** Static tiles (level-0 style) served straight from S3 need no image server at all - the thumbs channel already proves the pattern. Generating a tile pyramid on first touch, asynchronously, trades compute-per-request for storage and could cover the probationary period without touching the fast volume. Whether this is affordable at 60m-asset scale (or only for some subset) is an open question. + +A partial result from the spike is perhaps more likely than a flat no: S3-direct serving might be tolerable for smaller JP2s but not the largest, or fine except under load spikes. In that case deferred orchestration applies where it is tolerable and the containment approach covers the rest. Either way, the promotion/eviction machinery (metrics monitor, multiple locations) is worth designing the same in both worlds - which is why it is in the main proposal and not gated on the spike. + ## 🤖 Dealing with bots 🤖 If gathered from CloudFront, the metrics data is post-request. This has benefits and weaknesses. -Our instinct is that many examples of IIIF traffic, especially image traffic, could only be judged as "bad bot" after evaluating multiple requests. A tile-stitcher script would not be obvious from just one request. If the evaluation of traffic is happening reasonably quickly (i.e., not a once-a-month report generation), and we could decide that traffic is a bot so we can block, or at least not-orchestrate the image it's hitting. +Our instinct is that many examples of IIIF traffic, especially image traffic, could only be judged as "bad bot" after evaluating multiple requests. A tile-stitcher script would not be obvious from just one request. But if the evaluation of traffic happens reasonably quickly (i.e., not a once-a-month report generation), we could decide that traffic is a bot in time to block it, or at least to not-orchestrate the images it's hitting. How do we identify a bot? On two timescales: - **retrospectively, from the aggregated metrics** - the per-asset and per-source rollups make some patterns obvious after the fact (a single source pulling every `/full/*` size of thousands of assets; a source whose requests walk an image's tile grid in order). - **as it's happening** - the short-window Kinesis consumer (see [Latency](#latency)) keeps enough recent state to react on a minutes timescale, before a long scrape completes. -Crucially, deferred orchestration means we don't have to be fast or certain. An undetected bot is merely _slow_ (served from the S3-direct path), not cache-poisoning. So detection is mostly a _promotion filter_ - "is this traffic human-ish enough to justify moving the asset into the hot pool?" - rather than a _blocking_ decision. We only escalate to actual blocking for the inconsiderate, evasive end of the spectrum. +Crucially, deferred orchestration means we don't have to be fast or certain. An undetected bot is merely _slow_ (served from the S3-direct path), not cache-poisoning. So detection is mostly a _promotion filter_ - "is this traffic human-ish enough to justify moving the asset into the hot pool?" - rather than a _blocking_ decision. We only escalate to actual blocking for the inconsiderate, evasive end of the spectrum. (This softening is contingent on deferred orchestration being achievable; see [If we can't defer orchestration](#if-we-cant-defer-orchestration) for what detection has to become without it.) ### Signal categories @@ -338,7 +361,7 @@ The metrics schema is designed to surface a handful of behavioural signals. The None of these is decisive alone; the point of the metrics store is to let us _combine_ them. The combining logic is where the sensitive detail lives. -What do we do once we've decided? Bot detection now influences orchestration, so a false positive doesn't just rate-limit a user, it silently degrades image performance for them. The wellcomecollection.org viewer needs to be effectively unblockable (allowlist by origin/referer plus, if possible, the signed short-lived token idea hinted at in the [API Keys](#api-keys) section below. Spoofable in principle, but it raises the bar and we only need it to gate priority, not access). +What do we do once we've decided? Bot detection now influences orchestration, so a false positive doesn't just rate-limit a user, it silently degrades image performance for them. The wellcomecollection.org viewer needs to be effectively unblockable: allowlist by origin/referer plus, if possible, a signed short-lived token (see the [API Keys](#api-keys) section below). That's spoofable in principle, but it raises the bar, and we only need it to gate priority, not access. The response is graduated: @@ -365,30 +388,37 @@ The current WAF ruleset for `iiif.wellcomecollection.org`, and any specific patt This is the hard, IIIF-specific part, and the main subject of the companion document. The public position is: the signal categories above, computed from the metrics store, feed a scoring step whose job is mostly to gate promotion into the hot pool and, at the extreme, to feed the WAF IP set. The thresholds and scoring are kept private as anti-evasion friction - but, per the deferred-orchestration argument, the design does **not** depend on their secrecy for correctness, only for efficiency. +### API Keys + +This is a possibility; others have done this. It is NOT IIIF Auth, but something different: the APIs remain open, but traffic with a known API key is not rate-limited (or has higher limits), whereas other traffic is. + +The problem with this approach is that we don't want to rate-limit human-generated traffic originating from wellcomecollection.org, and perhaps from any real viewer. But how do we identify such traffic - in a way that can't be spoofed/emulated by attackers? And how do we rate-limit traffic we think is something else? + +The conventional resolution: anonymous traffic gets a generous-but-real rate limit; registered keys get higher limits. We don't need to identify humans perfectly. We need the default limit set above what any human viewer generates, which the metrics will tell us. + ### Companion document (private) Concrete heuristics, thresholds, scoring and the current WAF rules are maintained outside this public repository, in the private `dlcs/private-protagonist` repo under `docs/rfcs/wellcome-bots-metrics-support`. Anything that names real source IPs / actors (personal data), or that would hand an evader a recipe, belongs there rather than here. -## Scavenger +## Scavenger in detail + +> This section expands on the [Scavenger / Optimiser](#scavenger--optimiser) service introduced in the Proposal. -Decision to evict is based on: +The decision to evict is based on: - performance for human users - cost -As the disk nears a threshold, we need to start deleting orchestrated files +As the disk nears a threshold, we need to start deleting orchestrated files. -Example bad case - - a very large artwork that is viewed intermittently. But often enough that it keeps getting re-orchestrated just after it's been scavenged +An example bad case: a very large artwork that is viewed intermittently - but often enough that it keeps getting re-orchestrated just after it's been scavenged. -Conversely a very small jp2 that won't free up much space and is occasionally viewed may be worth keeping - although again, "good-enough" non-orchestrated image server performance is going to be easier for small images. +Conversely, a very small JP2 that won't free up much space and is occasionally viewed may be worth keeping - although again, "good-enough" non-orchestrated image server performance is going to be easier for small images. ### Scavenging based on retrospective metrics -Decisions to evict is not just a LRU touched time. - -It's based on the metrics database... but if so, what is the eviction algorithm? +The decision to evict is not just a matter of least-recently-touched time; it's based on the metrics database. But if so, what is the eviction algorithm? ### Metrics Monitor @@ -401,31 +431,16 @@ Is there something watching the metrics and determining ... and is this same watcher evaluating traffic for potential bots, and if so, what does it do when it detects one? This isn't happening at the firewall level, it's something adjacent to the normal HTTP flow. What component does it tell, and what information does it give it such that a subsequent request from that source will be blocked? -### API Keys - -This is a possibility, others have done this. - -This is NOT IIIF Auth, but something different. - -The APIs are open, but traffic with a known API key is not rate-limited whereas other traffic is. - -The problem with this approach is that we don't want to rate-limit human-generated traffic originating from wellcomecollection.org, and perhaps from any real viewer. But how do we identify such traffic - in a way that can't be spoofed/emulated by attackers? And how do we rate-limit traffic we think is something else? - -Anonymous traffic gets a generous-but-real rate limit; registered keys get higher limits. We don't need to identify humans perfectly. We need the default limit set above what any human viewer generates, which the metrics will tell us. - - - ## Alternatives Considered -Proof of work barriers +### Proof-of-work barriers - - at the web page level, edge case - and that's for Wellcome to decide - - at the API, absolutely not + - At the web page level: an edge case, and that's for Wellcome to decide. + - At the API level: absolutely not. -IIIF Auth API on everything - - - Too much overhead, harms interoperability in practice, even if not in principle - "everyone can just implement a IIIF Auth client right?" +### IIIF Auth API on everything +Too much overhead, and it harms interoperability in practice, even if not in principle ("everyone can just implement a IIIF Auth client, right?"). ### Prometheus @@ -433,20 +448,24 @@ Prometheus is built for *low-cardinality*, pre-aggregated numeric time series. O ### PostgreSQL for per-request logging -For the raw per-request table, Postgres will work at first but billions of rows of append-heavy, scan-heavy data is more suited to a *columnar store*. - -Firehose → S3 in partitioned Parquet (queryable forever via Athena and very cheap, can keep for very long periods). The Aggregator writes only ... *aggregates* to Postgres. - +For the raw per-request table, Postgres would work at first, but billions of rows of append-heavy, scan-heavy data are better suited to a *columnar store* - hence the Firehose → S3/Parquet pipeline in the [Proposal](#proposal), with PostgreSQL keeping only the role it is good at: the per-asset aggregate table. ## Impact -(incl risks) +**Privacy.** IP addresses are personal data under UK GDPR, so this metrics store needs a privacy policy and a retention answer. Consider storing a salted hash (or /24 truncation) in long-lived data, and keeping raw IPs only in a short-window table used for active bot response; [partitioning](#partitioning) gives us the deletion mechanism. -IP address is personal data under UK GDPR. There needs to be a privacy policy. We need a retention answer anyway; consider storing a salted hash (or /24 truncation) in long-lived data and keeping raw IPs only in a short-window table used for active bot response. +**Cost of the pipeline itself.** There is a risk that super-rich metrics are so costly to collect that they're not worth it. Sampling is the standard mitigation, but note the asymmetry: cache optimisation tolerates sampling well, bot detection much less so. We might sample the raw archive while keeping the short-window bot table complete. -Cost of the pipeline itself: "super-rich metrics may be so costly... it's not worth it" — sampling is the standard mitigation, but note the asymmetry: cache optimisation tolerates sampling well, bot detection much less so. We might sample the raw archive while keeping the short-window bot table complete. +**False positives now degrade service.** Because bot detection influences orchestration, a false positive doesn't just rate-limit a user - it silently degrades image performance for them. The graduated response, and making the wellcomecollection.org viewer effectively unblockable, are the mitigations (see [Dealing with bots](#-dealing-with-bots-)). ## Next Steps -A list of next steps for implementing the proposed solution, including any dependencies or prerequisites. +Proposed order - the shape-determining question first: + +1. **Spike: S3-backed tile-serving performance.** Establish whether tile-serving direct from S3, with no local copy, can be made tolerable. This is the hard prerequisite for [deferred orchestration](#deferred-orchestration), and the whole architecture's shape depends on the answer - [If we can't defer orchestration](#if-we-cant-defer-orchestration) describes the fallback. (Image server enhancement work is already in progress.) +2. **Prototype the metrics pipeline.** CloudFront real-time logs → Kinesis → Firehose (+ transform Lambda) → partitioned Parquet in S3, queryable via Athena. This is independently useful for cost analysis even before any orchestration changes. +3. **Design the Orchestrator event path.** Decide how Orchestrator-only facts (orchestration events, routing destination) reach the store, and how they are correlated with the CloudFront records. +4. **Define the per-asset aggregate table** and the Aggregator that materialises it into PostgreSQL. +5. **Design the Scavenger / Metrics Monitor:** ownership, the eviction/promotion algorithm, and how block decisions reach the WAF IP set. +6. **Populate the companion document** with concrete heuristics, thresholds and WAF rules as they emerge from real data.