Module: kamailio
Branch: master
Commit: fefe1e63a175ce475a44ae11bb89929e5c5f67d3
URL: https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929…
Author: Stefan Mititelu <stefan.mititelu(a)1and1.ro>
Committer: Stefan Mititelu <stefan.mititelu(a)1and1.ro>
Date: 2015-11-23T12:12:27+02:00
rtpengine: Update doku for node enable/disable
This is my understanding of the current shared memory node list implementation.
Correct me if I'm wrong.
---
Modified: modules/rtpengine/doc/rtpengine_admin.xml
---
Diff: https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929…
Patch: https://github.com/kamailio/kamailio/commit/fefe1e63a175ce475a44ae11bb89929…
---
diff --git a/modules/rtpengine/doc/rtpengine_admin.xml b/modules/rtpengine/doc/rtpengine_admin.xml
index bcb1c03..2454db2 100644
--- a/modules/rtpengine/doc/rtpengine_admin.xml
+++ b/modules/rtpengine/doc/rtpengine_admin.xml
@@ -73,6 +73,38 @@
If the set was selected using setid_avp, the avp needs to be
set only once before rtpengine_offer() or rtpengine_manage() call.
</para>
+ <para>
+ From the current implementation point of view, the sets of rtpproxy nodes
+ are shared memory(shm), so all processes can see a common list of nodes.
+ There is no locking when setting the nodes enabled/disabled (to keep the
+ memory access as fast as possible). Thus, problems related to node state
+ might appear for concurent processes that might set the nodes
+ enabled/disabled(e.g. by fifo command). This robustness problems are overcomed as follows.
+ </para>
+
+ <para>
+ If the current process sees the selected node as disabled, the node is
+ <emphasis>force tested</emphasis> before the current process actually
+ takes the disabled decision. If the test succeeds, the process will set
+ the node as enabled (but other concurrent process might still see it as disabled).
+.
+ </para>
+
+ <para>
+ If the current process sees the selected node as enabled, it does no additional checks
+ and sends the command which will fail in case the machine is actually broken.
+ The process will set the node as disabled (but other concurrent process might still see it as enabled).
+ </para>
+
+ <para>
+ The 'kamctl fifo' commands (including rtpengin ones) are executed by an exclusive
+ process which operate on the same shared memory node list.
+ </para>
+
+ <para>
+ All the nodes are pinged in the beginning by all the processes,
+ even if the node list is shared memory.
+ </para>
</section>
<section>
Module: kamailio
Branch: master
Commit: fef0593a49fd6c6a08a7a1f3220e3b7f0cc030fe
URL: https://github.com/kamailio/kamailio/commit/fef0593a49fd6c6a08a7a1f3220e3b7…
Author: Stefan Mititelu <stefan.mititelu(a)1and1.ro>
Committer: Stefan Mititelu <stefan.mititelu(a)1and1.ro>
Date: 2015-11-23T12:12:27+02:00
rtpengine: hash table to keep the selected nodes
Shared memory hash table with global hashtable lock.
Add state maintaining the selected rtp node, for a given callid.
Hashtable entry expiration time configurable using hash_entry_tout modparam.
The actual deletion happens on the fly while insert/remove/lookup are called.
Updated doku.
---
Added: modules/rtpengine/rtpengine_hash.c
Added: modules/rtpengine/rtpengine_hash.h
Modified: modules/rtpengine/doc/rtpengine_admin.xml
Modified: modules/rtpengine/rtpengine.c
---
Diff: https://github.com/kamailio/kamailio/commit/fef0593a49fd6c6a08a7a1f3220e3b7…
Patch: https://github.com/kamailio/kamailio/commit/fef0593a49fd6c6a08a7a1f3220e3b7…
The commit contains pua_usrloc modifications, which simplifies the publish and regisration processes: in every REGISTER an implicit publish is built in. In this way, a device e.g. do not need to send two individual request towards kamailio (REGISTER, PUBLISH), it can be achieved in a single but extended REGISTER request.
Another small fix is that if the publication is expired (due to broken TCP e.g.), a "closed" NOTIFY should be sent to the contacts.
You can view, comment on, or merge this pull request online at:
https://github.com/kamailio/kamailio/pull/177
-- Commit Summary --
* Adding publish in registration functionality
-- File Changes --
M modules/pua_usrloc/pua_usrloc.c (4)
M modules/pua_usrloc/ul_publish.c (152)
-- Patch Links --
https://github.com/kamailio/kamailio/pull/177.patchhttps://github.com/kamailio/kamailio/pull/177.diff
---
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/pull/177
Module: kamailio
Branch: master
Commit: 31fa9c50bd6193851c53c1d66b8d517da5f67a15
URL: https://github.com/kamailio/kamailio/commit/31fa9c50bd6193851c53c1d66b8d517…
Author: Daniel-Constantin Mierla <miconda(a)gmail.com>
Committer: Daniel-Constantin Mierla <miconda(a)gmail.com>
Date: 2015-11-20T12:33:19+01:00
dmq_usrloc: documentation for batch_size and batch_usleep params
---
Modified: modules/dmq_usrloc/README
Modified: modules/dmq_usrloc/doc/dmq_usrloc_admin.xml
---
Diff: https://github.com/kamailio/kamailio/commit/31fa9c50bd6193851c53c1d66b8d517…
Patch: https://github.com/kamailio/kamailio/commit/31fa9c50bd6193851c53c1d66b8d517…
---
diff --git a/modules/dmq_usrloc/README b/modules/dmq_usrloc/README
index db19233..5325413 100644
--- a/modules/dmq_usrloc/README
+++ b/modules/dmq_usrloc/README
@@ -28,11 +28,15 @@ Andrey Rybkin
3.1. enable (int)
3.2. sync (int)
+ 3.3. batch_size (int)
+ 3.4. batch_usleep (int)
List of Examples
1.1. Set enable parameter
1.2. Set sync parameter
+ 1.3. Set batch size parameter
+ 1.4. Set batch_usleep parameter
Chapter 1. Admin Guide
@@ -47,6 +51,8 @@ Chapter 1. Admin Guide
3.1. enable (int)
3.2. sync (int)
+ 3.3. batch_size (int)
+ 3.4. batch_usleep (int)
1. Overview
@@ -67,6 +73,8 @@ Chapter 1. Admin Guide
3.1. enable (int)
3.2. sync (int)
+ 3.3. batch_size (int)
+ 3.4. batch_usleep (int)
3.1. enable (int)
@@ -95,3 +103,34 @@ modparam("dmq_usrloc", "enable", 1)
...
modparam("dmq_usrloc", "sync", 0)
...
+
+3.3. batch_size (int)
+
+ The parameter controls whetner to throttle synchronization of all
+ contacts in batches. Once a batch of SIP requests is sent out, then
+ sleep for 'batch_usleep' microseconds. The value can be:
+ * <=0 - disabled (no batching)
+ * >0 - how many records to be sent in a batch
+
+ Default value is 0.
+
+ Example 1.3. Set batch size parameter
+...
+modparam("dmq_usrloc", "batch_size", 4000)
+...
+
+3.4. batch_usleep (int)
+
+ The parameter controls whetner to throttle synchronization of all
+ contacts in batches. Once a batch of SIP requests is sent out, then
+ sleep for 'batch_usleep' microseconds. The value can be:
+ * <=0 - no sleep (it disables the batching)
+ * >0 - how many microseconds to sleep before sending out another
+ batch of usrloc records.
+
+ Default value is 0.
+
+ Example 1.4. Set batch_usleep parameter
+...
+modparam("dmq_usrloc", "batch_usleep", 1000)
+...
diff --git a/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml b/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml
index a7da61d..3c0e2b1 100644
--- a/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml
+++ b/modules/dmq_usrloc/doc/dmq_usrloc_admin.xml
@@ -108,6 +108,75 @@ modparam("dmq_usrloc", "sync", 0)
</programlisting>
</example>
</section>
+ <section id="usrloc_dmq.p.batch_size">
+ <title><varname>batch_size</varname> (int)</title>
+ <para>
+ The parameter controls whetner to throttle synchronization of
+ all contacts in batches. Once a batch of SIP requests is sent out,
+ then sleep for 'batch_usleep' microseconds.
+ The value can be:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <=0 - disabled (no batching)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ >0 - how many records to be sent in a batch
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ <emphasis>
+ Default value is 0.
+ </emphasis>
+ </para>
+ <example>
+ <title>Set <varname>batch size</varname> parameter</title>
+ <programlisting format="linespecific">
+...
+modparam("dmq_usrloc", "batch_size", 4000)
+...
+</programlisting>
+ </example>
+ </section>
+ <section id="usrloc_dmq.p.batch_usleep">
+ <title><varname>batch_usleep</varname> (int)</title>
+ <para>
+ The parameter controls whetner to throttle synchronization of
+ all contacts in batches. Once a batch of SIP requests is sent out,
+ then sleep for 'batch_usleep' microseconds.
+ The value can be:
+ <itemizedlist>
+ <listitem>
+ <para>
+ <=0 - no sleep (it disables the batching)
+ </para>
+ </listitem>
+ <listitem>
+ <para>
+ >0 - how many microseconds to sleep before sending
+ out another batch of usrloc records.
+ </para>
+ </listitem>
+ </itemizedlist>
+ </para>
+ <para>
+ <emphasis>
+ Default value is 0.
+ </emphasis>
+ </para>
+ <example>
+ <title>Set <varname>batch_usleep</varname> parameter</title>
+ <programlisting format="linespecific">
+...
+modparam("dmq_usrloc", "batch_usleep", 1000)
+...
+</programlisting>
+ </example>
+ </section>
</section>
</chapter>