You might also want to consider using a hook earlier than
TS_HTTP_SEND_REQUEST_HDR_HOOK like POST_REMAP_HOOK.

IIRC, the connection to the origin is already established by the time the
SEND_REQUEST_HDR_HOOK executes.

--Eric

On Fri, Jun 21, 2019 at 11:11 PM Dk Jack <dnj0...@gmail.com> wrote:

> Uhm! why async timers? You'd want to implement a leaky/token bucket per
> site. Check out...
>
> https://github.com/rigtorp/TokenBucket
>
> It's single header file lock free implementation for token bucket and it
> works very well...
>
>
> On Fri, Jun 21, 2019 at 7:38 PM Weixi Li (BLOOMBERG/ PRINCETON) <
> wli...@bloomberg.net> wrote:
>
> > What a great community! So many good tips in such a short time!
> >
> > Especially the atscppai, I would've never noticed it. the async examples
> > look very promising.
> >
> > It looks like the following might be necessary (let me know if I'm
> wrong):
> > * A hook to TS_HTTP_SEND_REQUEST_HDR_HOOK
> > * A map of queues (one queue per rate-limited site)
> > * A map of async timers (one timer per queue)
> >
> > I will study the ATS code more to understand the event and threading
> model
> > better.
> >
> > Thank you all.
> >
> > From: dev@trafficserver.apache.org At: 06/21/19 19:52:44To:
> > dev@trafficserver.apache.org
> > Subject: Re: Implementing Rate-limiting in forward proxy mode
> >
> > I have implemented rate-limit in my plugin using atscppapi. We are using
> > ats in
> > security context for mitigation. If the request matches certain criteria
> > (ip,
> > method, host, uri and header values) then we apply rate-limit to that ip.
> >
> > Dk.
> >
> > > On Jun 21, 2019, at 3:15 PM, Leif Hedstrom <zw...@apache.org> wrote:
> > >
> > >
> > >
> > >> On Jun 21, 2019, at 16:09, Weixi Li (BLOOMBERG/ PRINCETON)
> > <wli...@bloomberg.net> wrote:
> > >>
> > >> Hi team,
> > >>
> > >> We are experimenting with ATS in *forward* proxy mode. Our use-case
> > requires
> > a rate-limiting component that enforces rules based on the destination.
> > >>
> > >> For example:
> > >>
> > >> For all incoming requests targeting "www.cnn.com", we want to limit
> > the
> > outgoing rate to be 10 requests per minute; for "www.reddit.com", we
> want
> > the
> > rate to be 20 requests per minute; and so on. If there were more requests
> > than
> > the limit specified, the requests must be queued before they could go
> out.
> > >
> > > Seems very straight forward to implement as a plugin. For example the
> > geo_acl
> > plugin might be a good start, since it limits access based on source IP.
> > >
> > > Would be interesting to hear more about your use case too, it’s always
> > exciting to hear about different solutions that people use ATS for. Maybe
> > at
> > the next ATS summit? :-)
> > >
> > > Cheers,
> > >
> > > — Leif
> > >>
> > >> Is it possible to implement this requirement using a plugin?
> > >>
> > >> If not, we wouldn't mind forking the code and modifying whichever
> parts
> > that
> > would be necessary. But which are the potentially relevant components?
> > >>
> > >> If any experts could give us some pointers on the design, that would
> be
> > really appreciated.
> > >>
> > >> Thanks,
> > >> Weixi
> > >
> >
> >
> >
>

Reply via email to