[SR-Users] Dispatcher Confusion (v3.2.0)

Daniel-Constantin Mierla miconda at gmail.com
Wed Nov 2 11:06:03 CET 2011


Hello,

can you fetch the latest master branch from git and try with:

ds_probing_mode = 2

This should keep inactive gateways in probing mode, if you set the 
probing mode when switching in trying/inactive state, until it gets back 
to active state.

Cheers,
Daniel

On 10/28/11 12:33 PM, Asgaroth wrote:
> Hi Daniel,
>
> Thanks for the explanation. I've been doing some testing and I've come
> accross the following situation:
>
> ds_probing_threshold = 1
> ds_probing_mode = 0
>
> in failure route (when timeout occurs) I do:
>
> ds_mark_dst("ip")
>
> State changes from active to inactive and mode set to probing is
> correct, then dispatcher sends 3 ping messages to destination set in
> probing state, it then recieves no response to the probe and then sets
> the destination inactive. It looks like the probing for state inactive
> also honours ds_probing_threshold.
>
> If I wanted to keep pinging the destination, while its down, how would I
> achieve that? So, for example, i have a destination in active state, the
> destination goes down for some reason, I mark the destination as
> inactive but want to keep probing it until it comes back. In this case I
> will always be sending a probe to the destination, until it comes back,
> in which case i recieve a 200 ok back and dispatcher sets state back to
> active.
>
> Currently, what happens is, the destination is active, it crashes, i set
> state&  mode to inactive probing, probe goes out to destination, it
> times out, dispatcher sets state inactive, no probing. Therefor the
> destination will never be selected unless manually set to active/trying
> via fifo command when gateway is back alive.
>
> The kamailio version I was testing with is:
>
> # ./kamailio -V
> version: kamailio 3.3.0-dev1 (i386/linux) 0b8f2e
> flags: STATS: Off, USE_IPV6, USE_TCP, USE_TLS, TLS_HOOKS, USE_RAW_SOCKS,
> DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC,
> DBG_QM_MALLOC, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE,
> USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
> ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144, MAX_LISTEN 16,
> MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 4MB
> poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
> id: 0b8f2e
> compiled on 10:24:56 Oct 28 2011 with gcc 4.1.2
>
>
>
> On 27/10/2011 17:49, Daniel-Constantin Mierla wrote:
>> Hello,
>>
>> On 10/27/11 5:30 PM, Asgaroth wrote:
>>> Hi Daniel,
>>>
>>> [...]
>>>> Since with 3.2 seemed that it was lost capability to go inactive after
>>>> a certain number of failures (ds_probing_threshold), there is a new
>>>> state 'trying' that can be used for it. Means that you can set a
>>>> destination in trying state couple of times and then it becomes
>>>> inactive. In 3.1 it was using a confusing mechanism based on probing
>>>> mode.
>>> Can you explain this trying state and "lost capability to go inactive
>>> after certain number of failures" a little more please and how it
>>> relates to the new trying->inactive states. I would like to understand
>>> how these states relate so that I can test better.
>> I was not using the feature in the past, but from the source code I
>> could see that there was a way not to go directly in probing mode
>> (which in the past meant not to select the gateway anymore), but just
>> count failure until a threshold is reached and then set probing.
>>
>> So if threshold was 3 and there were (in 3.1.x-):
>> ds_mark_dst(p) =>  state still active (no probing, gateway still selected)
>> ds_mark_dst(p) =>  state still active (no probing, gateway still selected)
>> ds_mark_dst(p) =>  state goes to probing (inactive, gateway not selected)
>>
>> Now (3.3.x+), since probing can be always on, even for active
>> destinations (to detect when they go down), you can get previous like
>> behavior with trying state:
>>
>> ds_mark_dst(t) =>  state trying (gateway still selected)
>> ds_mark_dst(t) =>  state trying (gateway still selected)
>> ds_mark_dst(t) =>  state goes to inactive (gateway not selected)
>>
>> Default failure counter threshold is 1, so goes to inactive as soon as
>> you set trying, but you can change it via ds_probing_threshold parameter.
>>
>>
>>>> So right now there are states: active, inactive, trying and disabled,
>>>> plus modes: probing, not-probing. A destination can be selected only
>>>> if it is active or trying. It will not be selected in inactive and
>>>> disabled. Probing mode specifies whether keepalives should be sent to
>>>> destinations, can be done per address or globally with the module
>>>> parameter ds_probing_mode. If a keepalive is not replied, the address
>>>> is marked as trying first and later will become inactive if keeps
>>>> being non-responsive.
>>> OK, so if I understand this above paragraph correctly, if I have
>>> ds_probing_mode = 0, then I need to set mode manually to probing for a
>>> gateway that has failed "ds_probing_threshold" times? If a server times
>>> out and I set state/mode to "ip", then I assume probing will commence.
>>> In this case the server will not responde to probe requests (as it has
>>> crashed), does this mean then that the state will change to "trying"
>>> because there was no probe response recieved from destination?
>> Probing is no longer a gw selection state, but a mode switch to send
>> keepalives or not to a gateway. So if you want these keepalives and
>> ds_probing_mode=0, you have to set 'p' in any of the states you want
>> keepalives. A matter of the reply code from keepalives, the state in
>> probing mode is changed to active if it is 200ok or a reply code
>> configured in module parameter, or to trying if it is a failure (which
>> may end up in inactive when failure threshold is met). ds_probing_mode
>> controls as well if a keepalive reply will maintain the probing mode
>> or not.
>>
>> Cheers,
>> Daniel
>>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla -- http://www.asipto.com
Kamailio Advanced Training, Dec 5-8, Berlin: http://asipto.com/u/kat
http://linkedin.com/in/miconda -- http://twitter.com/miconda




More information about the sr-users mailing list