10.04.2015

Тестирование максимальной пропускной способности A2Billing.

1. Абонента А – Opensips – Media2 – Абонент B (600)

Тестирование проводится командой sipp. Необходимо поправит скрипт, для того, чтобы sipp работал c opensips. Заставить работать ту версию, что поставке – никак не смог.

/sipp   -default_behaviors abortunexp -s 600 -sf uac_pcap.xml sip.fiberpipe.in -r 10 -trace_err

 

Первая Проблема была традиционной: ограничение на кол-во открытых файлов в системе.

Вторая проблема касалась того, что Mysql для таких систем должен стоять либо в памяти либо на SSD.

Третья проблема касалась ограничения кол-ва поключений к Mysql.

Вытекающие проблемы: надо делать для Mysql репликацию из памяти на HDD.

После решения первых трех проблем кол-во вызовов в системе возразло , критическую нагрузку нет возможность поверить не позволили возможности абонента А. Дошли до 300.

 

Сценарий для sipp:

<?xml version=”1.0″ encoding=”ISO-8859-1″ ?>
<!DOCTYPE scenario SYSTEM “sipp.dtd”>

<!– This program is free software; you can redistribute it and/or –>
<!– modify it under the terms of the GNU General Public License as –>
<!– published by the Free Software Foundation; either version 2 of the –>
<!– License, or (at your option) any later version. –>
<!– –>
<!– This program is distributed in the hope that it will be useful, –>
<!– but WITHOUT ANY WARRANTY; without even the implied warranty of –>
<!– MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the –>
<!– GNU General Public License for more details. –>
<!– –>
<!– You should have received a copy of the GNU General Public License –>
<!– along with this program; if not, write to the –>
<!– Free Software Foundation, Inc., –>
<!– 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA –>
<!– –>
<!– Sipp ‘uac’ scenario with pcap (rtp) play –>
<!– –>

<scenario name=”UAC with media”>
<!– In client mode (sipp placing calls), the Call-ID MUST be –>
<!– generated by sipp. To do so, use [call_id] keyword. –>
<send retrans=”500″ >
<![CDATA[

INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: 9415601662 <sip:9415601662@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Type: application/sdp
Content-Length: [len]

v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [auto_media_port] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16

]]>
</send>

<recv response=”100″ optional=”true”>
</recv>

<recv response=”180″ optional=”true”>
</recv>

<!– By adding rrs=”true” (Record Route Sets), the route sets –>
<!– are saved and used for following messages sent. Useful to test –>
<!– against stateful SIP proxies/B2BUAs. –>
<recv response=”200″ rrs=”true” rtd=”true” crlf=”true”>
</recv>

<!– Packet lost can be simulated in any send/recv message by –>
<!– by adding the ‘lost = “10”‘. Value can be [1-100] percent. –>
<send>
<![CDATA[

ACK [next_url] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: 9415601662 <sip:9415601662@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 1 ACK
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0

]]>
</send>

<!– Play a pre-recorded PCAP file (RTP stream) –>
<nop>
<action>
<exec play_pcap_audio=”pcap/g711a.pcap”/>
</action>
</nop>

<!– Pause 8 seconds, which is approximately the duration of the –>
<!– PCAP file –>
<pause milliseconds=”12000″/>

<!– The ‘crlf’ option inserts a blank line in the statistics report. –>
<send retrans=”500″>
<![CDATA[

BYE [next_url] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
[routes]
From: 9415601662 <sip:9415601662@[local_ip]:[local_port]>;tag=[call_number]
To: sut <sip:[service]@[remote_ip]:[remote_port]>[peer_tag_param]
Call-ID: [call_id]
CSeq: 2 BYE
Contact: sip:sipp@[local_ip]:[local_port]
Max-Forwards: 70
Subject: Performance Test
Content-Length: 0

]]>
</send>

<recv response=”200″ crlf=”true”>
</recv>

<!– definition of the response time repartition table (unit is ms) –>
<ResponseTimeRepartition value=”10, 20, 30, 40, 50, 100, 150, 200″/>

<!– definition of the call length repartition table (unit is ms) –>
<CallLengthRepartition value=”10, 50, 100, 500, 1000, 5000, 10000″/>

</scenario>

7.04.2015

Проблемы с виртуальной машиной. Opensips. KVM.

http://opensips-open-sip-server.1449251.n2.nabble.com/fr-timer-not-working-properly-td7588092.html

Вот здесь описывается случай с процессором AMD Opteron(tm) Processor 6344 (on KVM).

 

1.04.2015

Opensips. NAT. Port. Asterisk.

Почти день потратил на то чтобы понять почему при исходящем звонке нет звука.

Система такая:

Client A ( local IP) —> Router(TP-Link) —-> Opensips (NAT_HELPER) —-> Asterisk (1.8) (A2Billing) —–> Carrier

По SIP trace все гладко, порты, IP адреса, все подменяется просто отлично но аудио нет. Не слышно абонента.

Оказывается при выходе с TP-link media отправлялось не с 8000 порта, а с 1024. Чертов роутер меняет его по свему усмотрению, при это в SIP сообщение он не залезает, потому, что я отключил все “умные” функции связанные с SIP сообщениями на роутере, для чего? Для того, чтобы быть уверенным в том, что SIP сообщение отправленное мной, не претерпевает изменений.

Так вот, а Астериск получая медиа-трафик с порта 1024 слал его на 8000, т.к. в сообщении указан именно он. TP-Link разводил руками, че это мне на 8000 порт приходит трафик, я шлю только с 1024.  В общем, в астериске есть настройка nat в sip.conf значение comedia означает, что астериск будет слать трафик на фактический адрес, с которого приходит медиа. Это решает такие проблемы.