I think it may be true that a classical SIP stack used to build a plain old stateless proxy server that doesn't do any work on a response other than pass it along could have most, or at least a large part of the work in the parsing of the messages and managing queues.
If however, you were building a proxy that was supposed to implement RPH in the face of the kinds of problems we are talking about, I think your assumption would not hold. For example, you can trivially parse requests from responses, and you can with a little more work find those with an RPH or a facsimile thereof. The amount of work needed for that is small compared to the entire processing time of a response. Once separating requests from responses and non priority from priority is a small part of the processing, then your subsequent arguments don't hold. In any system, the packet arrival rate ultimately limits what you can handle. I think DiffServ marking helps any form of priority system. At some rate of message arrival, the trivial parsing I'm thinking about will fail, although I suspect it will be packet handling that chews up the CPU and not the parsing and sorting. Brian > -----Original Message----- > From: Dean Willis [mailto:[EMAIL PROTECTED] > Sent: Wednesday, September 26, 2007 3:58 PM > To: Janet P Gunn > Cc: Brian Rosen; 'IETF SIP List' > Subject: Re: [Sip] What does draft-polk-sip-rph-in-responses-00 get us? > Isthat what we want? > > > 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