Thanks Aleksandar for the help! I did look up some examples for setting 503 - but all of them (as you've indicated) seem based on src ip or src header. I'm guessing this is more suitable for a DOS/DDOS attack? In our deployment, the likelihood of getting one request from multiple clients is more than multiple requests from a single client. As an update the rate-limit directive has helped. However, the only problem is that the client does not know that the server is busy and *could* time out. It would be great if it were possible to somehow send a 503 out , so the clients could retry after a random time.
With respect to the update - we are evaluating this and have run into some issues since we need to host 2 different certificates on the port (served based on the cipher). We should be able to fix this on our own though. On Fri, May 11, 2018 at 11:41 AM, Aleksandar Lazic <[email protected]> wrote: > Hi Mihir. > > Am 11.05.2018 um 05:57 schrieb Mihir Shirali: > > Hi Aleksandar, > > > > Why do you add http header for a tftp service? > > Do you really mean https://de.wikipedia.org/wiki/Trivial_File_Transfer_ > Protocol > > <https://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol> > > [Mihir]>>This TFTP is a custom application written by us. The http > headers also > > have custom attributes which are used by the backend application. > > > > haproxy version is > > HA-Proxy version 1.5.11 2015/01/31 > > Could you try to update at least to the latest 1.5 or better to 1.8? > https://www.haproxy.org/bugs/bugs-1.5.11.html > > > https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4.2-rate- > limit%20sessions > > <https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4.2-rate- > limit%20sessions> > > > > [Mihir]>>I believe this only queues the packets right? Is there a way we > could > > tell the client to back off and retry after a bit (like a 503). This > decision > > based on the high number of requests. > > Yes it's possible but I haven't done it before. > I would try this, but I hope that someone with more experience in this > topic > step forward and show us a working solution. > > https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4.2-http- > request > https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#7.3.3-src_ > conn_rate > > http-request connection track-sc0 src > http-request deny deny_status 503 if { src_conn_rate gt 10 } > > This lines are shameless copied from the examples in > https://cbonte.github.io/haproxy-dconv/1.8/configuration.html#4.2-tcp- > request%20connection > > Regards > Aleks > > > On Fri, May 11, 2018 at 1:58 AM, Aleksandar Lazic <[email protected] > > <mailto:[email protected]>> wrote: > > > > Am 10.05.2018 um 18:27 schrieb Mihir Shirali: > > > Hi Team, > > > > > > We have haproxy installed on a server which is being used > primarily for front > > > ending TLS. After session establishment it sets certain headers in > the http > > > request and forwards it to the application in the backend. The > back end > > > application is a tftp server and hence it can receive requests > from a large > > > number of clients. > > > > Why do you add http header for a tftp service? > > Do you really mean > > https://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol > > <https://de.wikipedia.org/wiki/Trivial_File_Transfer_Protocol> > > > > > What we observe on our server is that when we have large number of > clients > > > haproxy gets quite busy and the CPU clocks pretty high. Since both > haproxy and > > > our backend application run on the same server - this combined CPU > can get close > > > to the limit. > > > What we’d like to know is if there is a way to throttle the number > of requests > > > per second. All the searches so far - seem to indicate that we > could rate limit > > > based on src ip or http header. However, since our client ips will > be different > > > in the real world we wont be able to use that (less recurrence) > > > Could you please help? Is this possible? > > > > What's the output of haproxy -vv ? > > There was some issues about high CPU Usage so maybe you will need to > update. > > > > Could this be a option? > > https://cbonte.github.io/haproxy-dconv/1.8/ > configuration.html#4.2-rate-limit%20sessions > > <https://cbonte.github.io/haproxy-dconv/1.8/ > configuration.html#4.2-rate-limit%20sessions> > > https://cbonte.github.io/haproxy-dconv/1.8/ > configuration.html#7.3.3-src_updt_conn_cnt > > <https://cbonte.github.io/haproxy-dconv/1.8/ > configuration.html#7.3.3-src_updt_conn_cnt> > > > > What's 'less recurrence' , hours, days? > > > > Regards > > Aleks > > > > > > > > > > -- > > Regards, > > Mihir > > -- Regards, Mihir

