[reSIProcate] DnsResult blacklistLast,greylistLast question.
Byron Campen
docfaraday at gmail.com
Mon Dec 30 17:21:04 CST 2013
On 12/30/13 10:24 AM, Sergey Pavlov wrote:
> On 28 December 2013 01:11, Byron Campen <docfaraday at gmail.com
> <mailto:docfaraday at gmail.com>> wrote:
>
> On 12/27/13 3:48 AM, Sergey Pavlov wrote:
>> Am I understand correctly that in such case UDP transport will
>> not be grey-listed in case of failure a transaction failure? I.e.
>> failed transaction will not influence on other signaling with
>> corresponding IP.
> It would be greylisted if there is a timeout, but because there
> are no alternatives, it would continue to be used.
>
>
> In such case it is ok. BTW I am not sure about exact scenario but as I
> know currently the stack generates '480 Transport failure: no
> transports left to try' in case when there are no alternatives.
>
That happens when stuff is blacklisted only, I think.
>
>> In our case we will be satisfied even with second option.
>> Indeed, greylisting can be really useful for results obtained
>> from DNS lookup. But I think that ability to disable greylisting
>> completely (or according to some predefined list) still should
>> provided. In fact we have two conditions which may cause
>> unanswered requests on UAS side:
>> 1) bug in SIP stack implementation which is triggered by some
>> specific requests;
>> 2) remote UA overloaded, completely down or unreachable because
>> of hardware or network malfunction.
>>
>> Greylisting is good strategy for case (2) but can be real pain
>> for case (1) even with results of real DNS lookups. Just imagine
>> the case when all DNS records points to devices with the same SIP
>> stack implementation thus all of them can be greylisted by
>> specific SIP request. Since there is no efficient method to
>> distinguish (1) and (2) from UAC point of view it would be good
>> to provide some means to control greylisting strategy for
>> resipprocate stack user.
> I am ok with allowing greylisting to be disabled entirely. It
> is already a last-ditch measure; if you're observing actual
> timeouts in the field, things are pretty bad. One thing that might
> make sense to do is to only greylist after the tuple fails to
> respond to a stand-alone OPTIONS request (ie; we see a transaction
> timeout, and then send a quick OPTIONS request to test whether
> this was a problem specific to the transaction/dialog; if that
> OPTIONS request times out too, we greylist, or maybe even blacklist).
>
>
> Yep, it makes sense but it seems this part with additional checking is
> completely up to you. My main goal was to understand - is there
> something wrong from our side (e.g. incorrect resiprocate usage) or we
> just faced with the issue when the existing mechanism (greylisting)
> simply doesn't work well. Anyway, things are looks pretty clear
> now.The question is - can you develop required functionality? We may
> try to do it by ourselves but I doubt that our knowledge of stack
> internals is good enough for proper implementation.
>
For making greylisting configurable, it should be really easy I
think; just wrap the greylistLast() call (and add the appropriate
configuration call) and you should be good to go. Controlling the
handling of sip:<bar-ip-address> should not be too hard, primarily
finding where to add the check I think. I can look into it tonight.
Best regards,
Byron Campen
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://list.resiprocate.org/pipermail/resiprocate-devel/attachments/20131230/0a1b8a99/attachment.htm>
More information about the resiprocate-devel
mailing list