123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546 |
- <?xml version="1.0" encoding='ISO-8859-1'?>
- <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.4//EN"
- "http://www.oasis-open.org/docbook/xml/4.4/docbookx.dtd" [
- <!-- Include general documentation entities -->
- <!ENTITY % docentities SYSTEM "../../../docbook/entities.xml">
- %docentities;
- ]>
- <!-- Module User's Guide -->
- <chapter>
-
- <title>&adminguide;</title>
-
- <section>
- <title>Overview</title>
- <para>
- The sipcapture module stores incoming/outgoing SIP messages in database.
- </para>
- <para>
- Kamailio can capture SIP messages in three modes
- <itemizedlist>
- <listitem>
- <para>
- IPIP encapsulation. (ETHHDR+IPHDR+IPHDR+UDPHDR).
- </para>
- </listitem>
- <listitem>
- <para>
- Monitoring/mirroring port.
- </para>
- </listitem>
- <listitem>
- <para>
- Homer encapsulation protocol mode (HEP v1, v2, v3).
- </para>
- </listitem>
- </itemizedlist>
- </para>
- <para>
- The capturing can be turned on/off using mi or rpc commands. Example:
- </para>
- <para>
- &ctltool; fifo sip_capture on
- </para>
- <para>
- &ctltool; fifo sip_capture off
- </para>
- </section>
- <section>
- <title>Dependencies</title>
- <section>
- <title>&kamailio; Modules</title>
- <para>
- The following modules must be loaded before this module:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>database module</emphasis> - mysql, postrgress,
- dbtext, unixodbc...
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- <section>
- <title>External Libraries or Applications</title>
- <para>
- The following libraries or applications must be installed before running
- &kamailio; with this module loaded:
- <itemizedlist>
- <listitem>
- <para>
- <emphasis>None</emphasis>.
- </para>
- </listitem>
- </itemizedlist>
- </para>
- </section>
- </section>
- <section>
- <title>Parameters</title>
- <section id="sipcapture.p.db_url">
- <title><varname>db_url</varname> (str)</title>
- <para>
- Database URL.
- </para>
- <para>
- <emphasis>
- Default value is "".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>db_url</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "db_url", "mysql://user:passwd@host/dbname")
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.table_name">
- <title><varname>table_name</varname> (str)</title>
- <para>
- Name of the table's name used to store the SIP messages. Can contain multiple tables, separated by "|".
- </para>
- <para>
- <emphasis>
- Default value is "sip_capture".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>sip_capture</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "table_name", "homer_capture")
- ...
- modparam("sipcapture", "table_name", "homer_capture1|homer_capture2");
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.mt_mode">
- <title><varname>mt_mode</varname> (str)</title>
- <para>
- Name of the mode used for storing data in multiple tables. Modes can be "rand" (random), "round_robin" (use a round_robin algorithm) or "hash" (use hashing to determine the table to store). These modes are only triggered if there is more than one table specified in table_name parameter, separated by "|".
- </para>
- <para>
- <emphasis>
- Default value is "rand".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>mt_mode</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "mt_mode", "hash")
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.hash_source">
- <title><varname>hash_source</varname> (str)</title>
- <para>
- The field of the SIP message used for hashing, when mt_mode is set to "hash". The value can be "call_id", "to_user" or "from_user".
- </para>
- <para>
- <emphasis>
- Default value is "call_id".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>mt_mode</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "hash_source", "to_user")
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.db_insert_mode">
- <title><varname>db_insert_mode</varname> (integer)</title>
- <para>
- If set to 1, use INSERT DELAYED to store sip message into capture table
- when the DB driver has support for it. If no INSERT DELAYED support
- is offered by DB driver, then standard INSERT is used.
- </para>
- <para>
- Default value is 0 (no INSERT DELAYED).
- </para>
- <example>
- <title>db_insert_mode example</title>
- <programlisting format="linespecific">
- modparam("sipcapture", "db_insert_mode", 1)
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.capture_on">
- <title><varname>capture_on</varname> (integer)</title>
- <para>
- Parameter to enable/disable capture globaly (on(1)/off(0))
- </para>
- <para>
- <emphasis>
- Default value is "0".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>capture_on</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "capture_on", 1)
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.capture_mode">
- <title><varname>capture_mode</varname> (integer)</title>
- <para>
- This parameter can be used for defining a capture mode which can be used in
- the sip_capture calls as a parameter. A capture mode has a name and some parameters.
- It must be defined in the format: name=>param1=val1;param2=val2;...
- The parameters are db_url, table_name, mt_mode and hash_source (optional).
- Multiple capture modes can be defined by using this parameter multiple times.
- After this, the capture modes can be used like:
- sip_capture ("", "CAPTURE_MODE");
- </para>
- <example>
- <title>capture_mode example</title>
- <programlisting format="linespecific">
- modparam("sipcapture", "capture_mode", "mode1=>db_url=mysql://user:passwd@host/dbname1;table_name=homer_capture1|homer_capture2;mt_mode=hash;hash_source=call_id;")
- modparam("sipcapture", "capture_mode", "mode2=>db_url=mysql://user:passwd@host/dbname2;table_name=homer_capture3|homer_capture4;mt_mode=rand;")
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.hep_capture_on">
- <title><varname>hep_capture_on</varname> (integer)</title>
- <para>
- Parameter to enable/disable capture of HEP (on(1)/off(0))
- </para>
- <para>
- <emphasis>
- Default value is "0".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>hep_capture_on</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "hep_capture_on", 1)
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.raw_ipip_capture_on">
- <title><varname>raw_ipip_capture_on</varname> (integer)</title>
- <para>
- Parameter to enable/disable IPIP capturing (on(1)/off(0))
- </para>
- <para>
- <emphasis>
- Default value is "0".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>raw_ipip_capture_on</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "raw_ipip_capture_on", 1)
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.raw_moni_capture_on">
- <title><varname>raw_moni_capture_on</varname> (integer)</title>
- <para>
- Parameter to enable/disable monitoring/mirroring port capturing (on(1)/off(0))
- Only one mode on raw socket can be enabled! Monitoring port capturing currently
- supported only on Linux.
- </para>
- <para>
- <emphasis>
- Default value is "0".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>raw_moni_capture_on</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "raw_moni_capture_on", 1)
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.raw_socket_listen">
- <title><varname>raw_socket_listen</varname> (string)</title>
- <para>
- Parameter indicate an listen IP address of RAW socket for IPIP capturing.
- You can also define a port/portrange for IPIP/Mirroring mode, to capture
- SIP messages in specific ports:
- <para>
- "10.0.0.1:5060" - the source/destination port of the SIP message must be equal 5060
- </para>
- <para>
- "10.0.0.1:5060-5090" - the source/destination port of the SIP message must be
- equal or be between 5060 and 5090.
- </para>
- <para>
- The port/portrange must be defined if you are planning to
- use mirroring capture! In this case, the part with IP address will be
- ignored, but to make parser happy, use i.e. 10.0.0.0
- </para>
- </para>
- <para>
- <emphasis>
- Default value is "".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>raw_socket_listen</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "raw_socket_listen", "10.0.0.1:5060-5090")
- ...
- modparam("sipcapture", "raw_socket_listen", "10.0.0.1:5060")
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.raw_interface">
- <title><varname>raw_interface</varname> (string)</title>
- <para>
- Name of the interface to bind on the raw socket.
- </para>
- <para>
- <emphasis>
- Default value is "".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>raw_interface</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "raw_interface", "eth0")
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.raw_sock_children">
- <title><varname>raw_sock_children</varname> (integer)</title>
- <para>
- Parameter define how many children that must be created to listen the raw socket.
- </para>
- <para>
- <emphasis>
- Default value is "1".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>raw_sock_children</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "raw_sock_children", 6)
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.promiscuous_on">
- <title><varname>promiscuous_on</varname> (integer)</title>
- <para>
- Parameter to enable/disable promiscuous mode on the raw socket.
- Linux only.
- </para>
- <para>
- <emphasis>
- Default value is "0".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>promiscous_on</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "promiscuous_on", 1)
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.raw_moni_bpf_on">
- <title><varname>raw_moni_bpf_on</varname> (integer)</title>
- <para>
- Activate Linux Socket Filter (LSF based on BPF) on the mirroring interface.
- The structure is defined in linux/filter.h. The default LSF accept a port/portrange
- from the raw_socket_listen param. Currently LSF supported only on Linux.
- </para>
- <para>
- <emphasis>
- Default value is "0".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>raw_moni_bpf_on</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "raw_moni_bpf_on", 1)
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.capture_node">
- <title><varname>capture_node</varname> (str)</title>
- <para>
- Name of the capture node.
- </para>
- <para>
- <emphasis>
- Default value is "homer01".
- </emphasis>
- </para>
- <example>
- <title>Set <varname>capture_node</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "capture_node", "homer03")
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.insert_retries">
- <title><varname>insert_retries</varname> (integer)</title>
- <para>
- The number of times Kamailio should retry to write to the Homer database in case
- the first attempt failed. The retry is also limited timewise by the
- insert_retry_timeout parameter. Values allowed range from 0 to 500.
- </para>
- <para>
- <emphasis>
- Default value is 0 (no retries).
- </emphasis>
- </para>
- <example>
- <title>Set <varname>insert_retries</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "insert_retries", 5)
- ...
- </programlisting>
- </example>
- </section>
- <section id="sipcapture.p.insert_retry_timeout">
- <title><varname>insert_retry_timeout</varname> (integer)</title>
- <para>
- The time limit in seconds Kamailio retries to write to the Homer database in case
- the first attempt failed. This parameter is only used together with the insert_retries
- parameter. Values allowed range from 0 to 300.
- </para>
- <para>
- <emphasis>
- Default value is 60 seconds.
- </emphasis>
- </para>
- <example>
- <title>Set <varname>insert_retry_timeout</varname> parameter</title>
- <programlisting format="linespecific">
- ...
- modparam("sipcapture", "insert_retry_timeout", 10)
- ...
- </programlisting>
- </example>
- </section>
- </section>
- <section>
- <title>MI Commands</title>
- <section id="sipcapture.m.sip_capture">
- <title>
- <function moreinfo="none">sip_capture</function>
- </title>
- <para>
- </para>
- <para>
- Name: <emphasis>sip_capture</emphasis>
- </para>
- <para>Parameters: </para>
- <itemizedlist>
- <listitem><para>capture_mode : turns on/off SIP message capturing.
- Possible values are:</para>
- <itemizedlist>
- <listitem><para> on </para></listitem>
- <listitem><para> off </para></listitem>
- </itemizedlist>
- <para>The parameter is optional - if missing, the command will
- return the status of the SIP message capturing (as string
- <quote>on</quote> or <quote>off</quote> ) without changing
- anything.</para>
- </listitem>
- </itemizedlist>
- <para>
- MI FIFO Command Format:
- </para>
- <programlisting format="linespecific">
- :sip_capture:_reply_fifo_file_
- capture_mode
- _empty_line_
- </programlisting>
- </section>
- </section><!-- MI commands -->
- <section>
- <title>RPC Commands</title>
- <section id="sipcapture.r.sipcapture.status">
- <title>
- <function moreinfo="none">sipcapture.status param</function>
- </title>
- <para>
- </para>
- <para>
- Name: <emphasis>sipcapture.status</emphasis>
- </para>
- <para>Parameters: </para>
- <itemizedlist>
- <listitem><para>on or off: turns on/off SIP message capturing.
- Possible values are:</para>
- <itemizedlist>
- <listitem><para>on</para></listitem>
- <listitem><para>off</para></listitem>
- </itemizedlist>
- </listitem>
- <listitem><para><quote>check</quote> does not change
- sipcapture status, just reports the current status.</para>
- </listitem>
- </itemizedlist>
- </section>
- </section><!-- RPC commands -->
-
- <section>
- <title>Database setup</title>
- <para>
- Before running &kamailio; with the sipcapture module, you have to setup the database
- tables where the module will store the data. For that, if the table were not
- created by the installation script or you choose to install everything by
- yourself you can use the sipcapture_create.sql, <acronym>SQL</acronym> script
- in the sql folder of sipcapture module as template. You can also find the
- complete database documentation on the project webpage, &kamailiodbdocslink;.
- </para>
- </section>
- <section>
- <title>Limitations</title>
- <itemizedlist>
- <listitem>
- 1. Only one capturing mode on RAW socket is supported: IPIP or monitoring/mirroring port.
- Don't activate both at the same time.
- </listitem><listitem>
- 2. By default MySQL doesn't support INSERT DELAYED for partitioning table. You can patch MySQL
- (http://bugs.mysql.com/bug.php?id=50393)
- </listitem><listitem>
- 3. Mirroring port capturing works only on Linux.
- </listitem>
- </itemizedlist>
- </section>
- </chapter>
|