Request-Disposition
Request-Disposition
Defines services desired from proxy servers
Feature values |
Meaning |
---|---|
Proxy redirect |
whether to proxy or redirect |
cancel no-cancel |
whether to return just the first 200-class response, or all 2xx responses |
fork no-fork |
whether to fork or not (i.e., proxy to only a single address) |
recurse no-recurse |
whether a proxy server upon receiving a 3xx-class response should recurse (i.e., send requests to the addresses listed in the response) or not (i.e., simply forward the list of addresses upstream towards the caller) |
Parallel sequential |
For a forking proxy server, should it send the request to all known addresses at once (parallel), or go through them sequentially, i.e., contacting the next address only after receiving a non-2xx or non-6xx final response. |
queue no-queue |
If called party is temporarily unreachable, caller can indicate that it wants to enqueue rather than be rejected immediately. Pending call be terminated by a SIP CANCEL or BYE request. |
Based on a list of keywords
- example: Request-Disposition: fork, parallel
Transcript
[slide350] In addition, we can specify a whole bunch of different features via the proxy. So we can ask our proxy to proxy, or simply redirect it. Why would you want to redirect? Well, perhaps the person worked here previously, but they no longer work here. So what do you do? You refer the call to the person who's replaced them in that particular function. Do we fork or not fork? What's forking about with respect to SIP? Well, we saw in the figure yesterday that when the invite arrived at a proxy, the proxy could decide, do I iteratively try each of the possible user agents, or do I send an invite to all of them, forking it? So basically, all of their devices, chirp, beep, ring, whatever. What's the disadvantage of forking? What's the advantage of forking? What do you gain from forking? [student answers: You don't have to wait.] You don't have to do it sequentially. You do it all at once. That's right. You get the same advantage as flooding, right? Whichever is the first one that answers, that's the one you'll take. So it has the advantage that it's short in time. What's the disadvantage of forking? [Student answers: They could answer by several devices, and you send invites to all of these different user agents.] That means when they answer from one of them, what do you need to do? You need to send cancels on all of the others, right? Because there's no reason that they should keep chirping, beeping, ringing, whatever. You can also specify, do I want to do it recursively, so I could do it in an iterative fashion? Do I do it in parallel or sequentially, and do I queue? So if the party's not available because they're busy in another call right now, I might want to enqueue, saying as soon as they're available, they'll take the next party in the queue. Right? Probably you've called various services where you hear, ah, you're number 472 in the queue, you know, your call's important to us, we'll get to you. What's the disadvantage of queuing? [student answers: Well, this will make the time of response longer.] Right, so we wait longer for the response. What else? [student answers: Maybe someone would cancel after waiting for some time.] Right, so many people give up after waiting in the queue. What else? Where do we manage the queue? Right, because the problem is, we could have forked this, we could have started all of these things, we're waiting there, we had a set of specifications in, and let's say I wanted to talk to the person during office hours, time has passed, I finally make it to the front of the queue, but oops, it's past the office hours. Right? So it's very difficult, because it really becomes a scheduling problem. So this seemingly simple problem of matching between the caller and the colleague's preferences, aha, this is what I can do, as soon as we start to add things like queuing, it gets really complex. Because ideally you'd want to schedule them, rather than having a simple queue. In a FIFO sense. Right, so this is my most important customer, of course I want to process their request earlier.