On Sep 26, 2007, at 2:19 PM, Janet P Gunn wrote:

> Perhaps. But if you have to receive, enqueue, and parse the messages
> to find out they have high priority or not, and if that's a
> substantial part of the workload, and NOT forwarding the low- priority
> responses is going to dramatically increase your workload (due to
> cascade), then you gain nothing and lose much by using RPH to
> prioritize responses. This needs to be tied to some lower-layer
> mechanism (like a diffserv marking) that can allow for discard
> without so much parsing.
>
I would like to hear more on this approach.


Well, I'm no expert on diffserv . . .

But it seems to me that if we diffserv-marked SIP messages in a manner that correlates to the RPH value, then a SIP forwarding element (aka proxy) could discard or defer those messages based on an examination of the diffserv marking (which is in a relatively fixed location in the packet) without having to text-parse the whole SIP message. Since the main threat of the cascade is the increased CPU load for parsing the retransmitted lower-priority messages, we could ostensibly gain a large (several orders of magnitude, IMHO) increase in performance.

This would seem to only work for SIP over connectionless datagram transports. If multiple priority levels were to be muxed on a single TCP connection, then it wouldn't work.

I believe others have suggested using different ports or different shared connections for each priority level as a means to work around this limitation.

Let's go back to the basic mechanics of cascade failure:

1) It takes a reasonably large amount of time to parse a SIP message and decide what to do with it.

2) Discarding messages (as opposed to pushing back on the sender) cause the requests to be retransmitted. And we can only push back on requests, not responses.

3) If the message arrival rate is such that the processor cannot parse its way through the queue to reach a high-priority message before the timers on that high-priority message expire, then the transaction that created that high-priority message will time out and re-send the message, moving it to the back of the queue. Consequently, the high-priority transaction will never complete.

4) Once we hit this sort of stage, we're gridlocked and NO transactions will complete until the message arrival rate drops. If the pool of participants is constant, then SIP's backoff timers will eventually reduce the arrival rate. However, large-scale crises tend to induce a ramping-up of the participant pool, thereby continually increasing message arrival rates. Failure of communication tends to induce even more attempts at communication, until the back-off timers in the human psyche kick in, and they're pretty darned slow. We could stay gridlocked for hours or days.

Consequently, I'd argue that it is not effective to discard responses UNLESS there is also a mechanism to push back against further requests AND a mechanism for discarding new requests (first and second level overload controls), and that discarding responses can only be effective if this discard can be done without the penalty of parsing the request. Once the response has been parsed, discarding it is likely do more harm to the system load level than processing it will, because each discard of a response (absent a pushback on new requests) simply assures that a new request will be sent.

--
Dean


_______________________________________________
Sip mailing list  https://www1.ietf.org/mailman/listinfo/sip
This list is for NEW development of the core SIP Protocol
Use [EMAIL PROTECTED] for questions on current sip
Use [EMAIL PROTECTED] for new developments on the application of sip

Reply via email to