These forums are CLOSED. Please visit the new forums HERE
llHTTPRequest...what are the possibilities? |
|
HeatherDawn Cohen
Who Me?!?!
![]() Join date: 9 Aug 2004
Posts: 397
|
04-14-2006 18:49
What can we use this for? I'm just curious...
|
Torley Linden
Enlightenment!
![]() Join date: 15 Sep 2004
Posts: 16,530
|
04-14-2006 18:55
Me too, I don't know what it's capable of but I heard some Resis very excited about it on the Preview Grid, so great things I hope.
![]() _____________________
|
Damanios Thetan
looking in
![]() Join date: 6 Mar 2004
Posts: 992
|
04-14-2006 19:10
it seems this is the famed 'outbound communications' option, other than email.
It basically allows a page request or a form post, as a browser can. It can be used for: - faster communication initiation. Instead of an email to trigger a communication session with an external server (clunky), a simple outbound request can now trigger inbound xml-rpc requests, allowing for quick and easy bidirectional communication. - Info requests. Also from sites which aren't 'built for SL'. Think info scraping of existing websites etc. What does this mean: - much simpler webshop comms. - easier secure communication (public key exchange) - scraping of news/quotes/weather/blogs/l$ rates/search results etc. from websites. - fast bidirectional communication for: navigation tools, name2key functions, delivery requests from 'personal vendors', infohub systems, fast external processing for in world games, intelligent robots etc. I probably only touched the surface here. Oh... and massive (D)DOS attacks from the grid to external servers. But i assume LL probably throttled/prohibited this ![]() _____________________
![]() |
Torley Linden
Enlightenment!
![]() Join date: 15 Sep 2004
Posts: 16,530
|
04-14-2006 19:14
Thank you Damani!
_____________________
|
Strife Onizuka
Moonchild
![]() Join date: 3 Mar 2004
Posts: 5,887
|
04-14-2006 19:22
On the docs on the script wiki (that Babbage posted), it says they are throttled by user.
_____________________
Truth is a river that is always splitting up into arms that reunite. Islanded between the arms, the inhabitants argue for a lifetime as to which is the main river. - Cyril Connolly Without the political will to find common ground, the continual friction of tactic and counter tactic, only creates suspicion and hatred and vengeance, and perpetuates the cycle of violence. - James Nachtwey |
Damanios Thetan
looking in
![]() Join date: 6 Mar 2004
Posts: 992
|
04-14-2006 19:26
On the docs on the script wiki (that Babbage posted), it says they are throttled by user. Ah, well, that's crystal clear then. ![]() (Edit: it said throttled per owner, which i get. ![]() _____________________
![]() |
Rob Demar
Registered User
Join date: 23 Mar 2006
Posts: 3
|
04-14-2006 22:36
Hmm, the problem with limiting per owner is this.
Say I want to attack example.com I could create a cool object, and hide in it my attack script. I then hand it out for free and make it copyable. It spreads from person to person and soon we have a huge hit against example.com |
MC Seattle
Registered User
Join date: 3 Apr 2006
Posts: 63
|
04-15-2006 00:10
Hmm, the problem with limiting per owner is this. Say I want to attack example.com I could create a cool object, and hide in it my attack script. I then hand it out for free and make it copyable. It spreads from person to person and soon we have a huge hit against example.com How can one company, Linden Labs, cause a distributed denial of service attack? At worst example.com might have to block connections from the SL server farm and report the problem, at which point LL can take a look at what script(s) are making outbound connections to example.com and take the appropriate actions. |
Rob Demar
Registered User
Join date: 23 Mar 2006
Posts: 3
|
04-15-2006 00:14
I made no claim that it was distributed, though Im sure that LL has quite a cunk of bandwidth that you could throw around.
|
Alondria LeFay
Registered User
![]() Join date: 2 May 2003
Posts: 725
|
04-15-2006 09:13
Anyone know what the throatled rate is? It would be nice to allow "whitelisted" servers that can be proved to be owned by a person to be able to break this rate.
|
Kelly Linden
Linden Developer
Join date: 29 Mar 2004
Posts: 896
|
04-15-2006 12:05
The throttle rate is also for simulator performance reasons, which would not be helped by a whitelist.
I am not sure the throttle rate. I believe the general formula is X requests in T seconds will block all requests for 2xT seconds. This formula is used to allow burst data transmission, and is on a per sim per object owner basis. I had asked and was told the actual numbers were 100 requests in 100 seconds. However, I did some testing on my own and blocked myself on the 21st request in less than a second. It is possible there is more than 1 throttle limit in place. Because the request gives feedback on the blocking - returns a NULL_KEY if the request was not made - it should be pretty easy to figure out the actual throttle rates. _____________________
- Kelly Linden
|
MSo Lambert
Registered User
Join date: 16 Aug 2004
Posts: 101
|
04-16-2006 06:26
I did some quick & dirty tests on SIVA to test how many requests I can make (and how fast) before my requests get blocked. Here are the results:
CODE
Which means, no matter if you send 20 requests as fast as you can, or send a request every 9 seconds, you will get blocked when trying to send the 21st request. When I tried sending a request once every 10 seconds, I didn't get blocked at all, even after approx. 10 minutes, so in my experience, you can send up to 20 requests in 200 seconds... go faster and you'll get blocked. I couldn't figure out for how long the subsequent requests are blocked, but it seems that failed requests also prolong your blocked time, if done too frequently - meaning, if you'll try to send a request every 5 seconds just to check if you're still blocked, you might not get unblocked at all. When I tried checking every 30 seconds, I usually got unblocked after 300 - 360 seconds. Hope this helps, did anyone do any similar tests? What did you find out? _____________________
MSo
|
AngelOD McGann
Registered User
Join date: 9 Nov 2005
Posts: 8
|
04-16-2006 12:23
This sounds very promising, but perhaps a bit more information about the throttling could be useful? I mean, say someone makes a vendor that uses this capability, and then distributes this vendor, making sure it only sends data every 10th second, by storing data, and then sending it as one request (since there's no mentioning of a limitation in the length of "Body"
![]() If this vendor becomes popular and used by several people, like the SLBoutique vendors, then if the throttling is solely based on the owner of the script, then it won't be long until a lot of vendors starts spewing out errors into the debug window. I've so far seen two Lindens express themselves about these functions, yet neither of them seem to really know anything about it (I assume their areas are somewhat different), but would it perhaps be possible to get a comment from one of the implementors? ![]() |
MSo Lambert
Registered User
Join date: 16 Aug 2004
Posts: 101
|
04-16-2006 12:54
AngelOD, if I understand correctly, throttling is implemented per object owner (not creator, as you might have misunderstood) and per region, which means your requests can be blocked in one region and not in the other.
_____________________
MSo
|
AngelOD McGann
Registered User
Join date: 9 Nov 2005
Posts: 8
|
04-16-2006 13:49
AngelOD, if I understand correctly, throttling is implemented per object owner (not creator, as you might have misunderstood) and per region, which means your requests can be blocked in one region and not in the other. That's all good and fine, but it's still just speculation (and some testing). It would still be nice to have some facts from one of the involved developers, and even if it's script owner (I didn't misunderstand that one, it was just a brainfart, as I thought of the owner remaining the same when the script was inside a non-modifiable object, but that's not the case, so yeah.. Heh..), it's still likely to cause problems for people who have more than one vendor, if these are of the same type. Like, say, one of the larger shops. I can think of things like clothes/AV shops that might get a problem with this. |
MSo Lambert
Registered User
Join date: 16 Aug 2004
Posts: 101
|
04-16-2006 14:35
That's all good and fine, but it's still just speculation (and some testing). It would still be nice to have some facts from one of the involved developers... Agreed. I can think of things like clothes/AV shops that might get a problem with this. I'm aware the current throttling scheme is preview only, and things might change, but yes - I do see a huge problem also, with the way throttling is done at the moment. Because its owner (as opposed to script) based, it means one poorly written object might break all my other objects that use llHTTPRequest (and thats not just speculation ![]() _____________________
MSo
|
AngelOD McGann
Registered User
Join date: 9 Nov 2005
Posts: 8
|
04-16-2006 14:50
How will I explain to a newbie that my super cool & overpriced gadget doesn't work, because his necklasse is talking to google.com every 5 seconds? My point exactly! I understand the need for throttling, since there are always people who will try to ruin it for the rest, but like you, I think there's got to be a better way. I haven't given much thought to how I would do it, but delaying the scripts (as with other functions) would be a given. It wouldn't prevent abuse (just as it doesn't with other functions, like llEmail), but that's where sensible logging features could come in. Having it log all requests to domains, perhaps including a small excerpt of the request, so an external logparser could run through it, and notify someone of a possible abuse. Of course, it's far easier said than done, and the logging might affect the system negatively, which wouldn't be good, so I dunno.. It's a bit of a fickle. |
Sky Honey
Coder
![]() Join date: 16 May 2005
Posts: 105
|
04-16-2006 19:45
My point exactly! I understand the need for throttling, since there are always people who will try to ruin it for the rest, but like you, I think there's got to be a better way. I haven't given much thought to how I would do it, but delaying the scripts (as with other functions) would be a given. It wouldn't prevent abuse (just as it doesn't with other functions, like llEmail), but that's where sensible logging features could come in. Having it log all requests to domains, perhaps including a small excerpt of the request, so an external logparser could run through it, and notify someone of a possible abuse. Of course, it's far easier said than done, and the logging might affect the system negatively, which wouldn't be good, so I dunno.. It's a bit of a fickle. Nooooooooooooo!!!!! Please, no delay!! A delay just means I have to make multiple scripts, each taking its 16k and bogging down the sim even more. Delays mean unneeded complexity in scripts and worse performance for the sim. I *love* it that llHTTPRequest has no delay. _____________________
|
AngelOD McGann
Registered User
Join date: 9 Nov 2005
Posts: 8
|
04-16-2006 23:36
Nooooooooooooo!!!!! Please, no delay!! A delay just means I have to make multiple scripts, each taking its 16k and bogging down the sim even more. Delays mean unneeded complexity in scripts and worse performance for the sim. I *love* it that llHTTPRequest has no delay. Uh-huh.. Riiight.. How would you solve the aforementioned throttle-problem then, if not by delay? The current method is likely to cause trouble for the reasons also stated in earlier posts.. |
Haravikk Mistral
Registered User
Join date: 8 Oct 2005
Posts: 2,482
|
04-17-2006 05:42
As I suggested in the main thread for this feature. I think the best solution would maybe to replace the 'blocking' with an exponential delay. Basically, if you play nice then the delay will be nothing at all or neglibable (a small fraction of a second), but if your script is churning out requests, then a the delay after each request grows rapidly.
So if you make 20 requests in one second, then do nothing for 9 seconds, the throttle won't be hit so no delay is incurred. If you make a 21st request, a delay of 0.1 second is incurred on all subsequent requests to force the script to slow-down, if it's still churning them out then it starts getting higher until the script(s) are FORCED to make no more than the throttled number of requests, as they'll become so slow that they simply can't send requests fast enough until the delay starts to drop (if the number of requests slows down). So in essence, instead of blocking the requests, it introduces script lag/delays, but ONLY if your requests are hitting the throttle limit. |
Sky Honey
Coder
![]() Join date: 16 May 2005
Posts: 105
|
04-17-2006 06:50
Uh-huh.. Riiight.. How would you solve the aforementioned throttle-problem then, if not by delay? The current method is likely to cause trouble for the reasons also stated in earlier posts.. Having the throttle dependant on owner is a good idea, in my opinion, because it puts the burden on the user who has all kinds of gizmos all running at the same time. This is better than the way things work now, where I can walk into a club with fantastic prim hair and a complex torus dress and detectors and HUDs and bling out the wazoo (figuratively speaking) and it affects everyone there. Haravikk's progressive delay sounds like it might be a good compromise. _____________________
|
Sky Honey
Coder
![]() Join date: 16 May 2005
Posts: 105
|
04-17-2006 07:00
There's been some suggestions that people will use llHTTPRequest for a vendor that sends a notification of each sale. I think that's a bad idea, and I don't plan to change my vendor scripts that currently use email for this. The great thing about email is that my host can be down for any reason, but that email is still safely stored on the email server until my site is back up. llHTTPRequest should certainly replace many of the email-to-xmlrpc and email-to-email designs we have now, where the SL object needs a response, but it's my view that fire-and-forget designs should still use email.
_____________________
|
Gigs Taggart
The Invisible Hand
Join date: 12 Feb 2006
Posts: 406
|
04-18-2006 10:31
How will I explain to a newbie that my super cool & overpriced gadget doesn't work, because his necklasse is talking to google.com every 5 seconds? Heh, nevermind about the previous post, I see what you are saying. |
Burke Prefect
Cafe Owner, Superhero
Join date: 29 Oct 2004
Posts: 2,785
|
04-18-2006 12:40
But it'll be better for some 'realtime' applications such as plotting positions, ordering airstrikes, keeping a running Shoot To Kill and Don't Maim Too Much lists for all my security systems across the grid.
|
Russell Hansen
Texi pets are here!
Join date: 11 Apr 2006
Posts: 107
|
04-18-2006 17:23
Well, I'm still very new to SL (first post on SL forums :]), so may be a little off target, but my immediate thought when I saw this feature was "In game version of RL web shop". People browing throuhg a web shop catalogue may certainly be sending many requests in a short period. Some form on script caching to send chunks of data may help alleviate the problem, but with a low rate of 20 request in 200 seconds, it certainly seems to limit this functionality.
The idea of exponential delays sounds like a better idea to me as well. |