StarTrinity.com

Measuring quality

The micro-blog is written by Sergey Aleshin, lead developer and owner of startrinity.com. The blog is duplicated in LinkedIn profile - please subscribe if you are interested. Its purpose is to provide better transparency of our development and to get some feedback and ideas from users. The blog is started on 2014-06-25. Previous activity related to "SIP Tester" product is published here. Video blog with screen recordings is available on youtube.

Subscribe to updates
Email:



2023-02-09 Improved functionality of dialer campaigns in softswitch: added "Max connected minutes per day" limit

2022-09-17 Reached 10000 concurrent SIP calls with G.711a 20ms RTP. Tuned up SIP Tester and NICs at a customer's lab. Used 2 dedicated servers with 2x16x2.7GHz Xeon E5-2680 CPU and 2x4x1Gbit NICs.

2022-04-15 Integrated the SIP Tester and Softswitch software with VOSK speech recognition server (based on Kaldi). With this new feature customers are able to build voice-based IVRs with CallXML scripts.

2022-03-05 Increased freeware licensed limit: 50 concurrent calls, unlimited attempted and received calls.

2021-08-29 Developed API for UAC registrations

2021-09-11 Developed support of SIPREC: now SIP Tester is able to generate calls with 2 RTP streams and play stereo WAV files, to test SIPREC recorders.

2021-08-29 Developed API for UAC registrations

2021-05-28 New CDR fields with received RTP stream statistics: total, discarded, out of order (early, late), erroneous, duplicate packets count

2021-04-07 Improved Web UI for system logs

2021-03-22 Recompiled code with Visual Studio 2019 (latest), .NET 4.6, OpenSSL 1.1.0f.

2020-10-21 Released a new version of SIP Tester with setting "RtpClockFrequencyHz" - to simulate RTP clock skew.

2020-10-10 Released a new version of SIP Tester with "headers" attribute in "disconnect" CalXML element, it was requested by a customer to send custom SIP headers in BYE SIP request.

2020-09-16 Released a new version of SIP Tester with "minlevelvar" attribute in "measuresignal" CalXML element.

2020-07-31 Set up a SIP Tester for a new customer, with custom CallXML script to make sure that their IVR works correctly, all audio files are played in correct sequence. The customer plays few different audio files - tones with 4 different audio levels. SIP Tester measures loudness (level in dB) of the tones and saves results to CDR CSV file. If sequence is not correct, it sends an email alert. For details see documentation for measuresignal CallXML element

2020-05-03 Due to COVID-19 I see 70% increase in web visitors of our "continuous speed test". Weekly pattern of page visits shows that the speed test is used for remote work (and this sounds very good to me). People are having problems with skype, zoom, audio/video conference calls other regular speed tests report false positive results. We are going to increase efforts we put into this product (and suspend some other projects), as I see 550 visitors per day during work days, and 350 visitors per day on weekends. I have a huge list of features requested by users.

2020-01-11 SIP Tester: released new version with "headers" and "tlsversion" parameters in "sendhttprequest" CallXML element

2020-01-11 SIP Tester: released new version with "headers" and "tlsversion" parameters in "sendhttprequest" CallXML element

2019-10-11 SIP Tester: since we consider stability of the SIP Tester as our top priority (more important than adding new features), we continue with improving the stability. Now under special conditions - with playaudio or wait CallXML elements with long wait duration, above 1 hour, and with high numberof calls per second (above 50) - we see a memory leak when SIP Tester takes about 6GB of RAM. It happens because SIP Tester does not release memory of the "waiter" code, during the 1 hour, even when current call is already disposed. So fixing this issue means a refactoring to us, and we love refactoring and improving quality of codebase.

2019-10-05 SIP Tester: released new version: workaround to avoid memory leak with Windows 10, .NET 4.8

2019-09-24 We have all our binaries signed with a "code signing" certificate. My mistake was not to sign it with a "timestamp server" signature. It means that when the certificate expires (in November 2019), the Windows operating system will have no way to verify date when our software was compiled and signed.
To day we released a new version with the "timestamp server signature", so please update "StarTrinity SIP Tester" software to latest version.

2019-09-01 During previous 2 months I have been dealing with a memory leak in our StarTrinity SIP Tester. I discovered that the leak is caused by Microsoft's update of .NET Framework to 4.8. On Windows 10 they don't allow downgrading back to 4.7.2 (this is how they degrade quality of the Windows OS). So I reproduced the leak with a sample app and wanted to let them know about the memory leak. But.. I was not able to report memory leak to the Microsoft. They ask for money to accept the issue. It is not good thet they ask me to pay, even while it is an important memory leak issue, it affects many users. So this is bad thing about Microsoft.

The good thing about Microsoft is that they open sourced .NET Core under MIT license. Sooner or later I will make my own fork (to gain full control over what I use in my project dcomms.org) and it will be okay. No new versions will be able to cause troubles for me.

And another good thing is that I found a way to avoid memory leak in WPF DataGrid, to make our SIP Tester customers happy. It is a result of deep research and trying many workarounds. Developers who see leaks of .NET objects "listdictionary, weakreference, conditionalweaktable, eventhandler" - you can contact me for advice.

2019-08-14 SIP Tester: we developed new CallXML scripts to measure G.107 MOS with custom formula: see here

2019-07-23 Today I work on StarTrinity Softswitch: a customer asked to filter out calls with no RTP from caller side. It is dialer traffic, and some calls do not send RTP, it results in lower total ACD. So we will analyse RTP statistiocs after call completion, and if caller side does not send enough of RTP, we will add the RTP IP address into dynamic blacklist. We hope to increase ACD on dialer VoIP traffic.

Released new version with CallXML element "getrtpinfo"

2019-07-12 Recently I work on a new "Decentralized Routing Protocol". It is a competitor of SIP and DTLS protocols. It will be used to build truly secure messenger that works without servers (when servers are not able to track sender and receiver IDs), via P2P network. The protocol and C# implementation are open source, under MIT. Whitepaper is here (draft). People who are interested in any kind of collaboration - please contact me.

2019-07-05 SIP Tester: released new version with SRV DNS support. UAC registrations request IP address(es) of SIP server(s) via DNS SRV records, and SIP Tester implements failover behavior - switches to next server IP address when registration or call via current IP address fail.

2019-06-10 Started to work on multiple SRV DNS records in SIP Tester, few customers are waiting for it.

2019-06-05 Published an initial design of encryption procedures in our new open source secure messenger here. Is there anyone who is concerned about privacy when you use Skype or WhatsApp? Do you trust these messengers? And do you trust using gmail in browser via HTTPS?

2019-05-31 Today I got 6 spam calls to my mobile phone. These were SPAM calls from call centers. This number increases, and I have turned on anti-spam filter to silently ignore all caller ID's that are not in my contact list. Businesses are trying to penetrate my attention, and telcos allow them to do it. The telemarketing brings chaos into communications. Same thing with emails, about 6 spam emails per day. Will these numbers increase? Why not? And who will build a new communication system that will automatically block spam?

2019-05-22 Today I faced a problem of having low free disk space on my SSD drive. I need to set up a new virtual machine, and it takes about 20GB, but I had only 20GB remaining out of 250GB. My first idea was to purchase a new SSD of 512GB for virtual machines, it will be enough for sure. And I have money, price is not a problem here. But... I think about environment, and about harm we people make to our earth. Why should I consume more SSD drives?
We should stop infinite growth of consumption! My 250GB SSD drive is used only for windows and Visual Studio, software development, I have one more 1TB HDD for personal data. I clearly remember times when I was pleased with a 120GB disk, and that was enough for everything. What happened?
I found and downloaded a wonderful software tool "WinDirStat" and cleaned 66GB! No excessive consumption, I have enough space now, and I don't really need to purchase new SSD and damage the Earth. The tool clearly shows huge files on disk, and I removed page file, hibernation file, moved installer packages to another drives, removed various unused files.
What about you? Do you care about Earth and the harm we do by mindless consumption?

2019-05-19 Changed algorithm of peer-to-peer network UDP test in Internet Connection Monitor and Continuous Speed Test free and open source tools. Now target bandwidth is allocated much faster, using multiple servers that work in passive mode. The software tool tracks quality of internet conenction, reports uptime percentage and list of outages.

2019-05-08 SIP Tester: released new version and updated documentation about "Jobs" API. Please check here.
Background: many times customers asked "can I run multiple tests with different CallXML scripts at same time?". Many customers use our API to create calls in SIP tester, method "CreateCall_Post". The method "CreateCall_Post" creates only one CallXML session, and it is not good if tested/discovered bug is sporadic. Sporadic bugs need thousands or millions of test SIP calls, and they are really hard to reproduce and fix. So we decided to introduce a concept of "Job" running in StarTrinity SIP Tester, each job having its own call generator and CallXML script. So now customers will be able to run independent SIP tests via API.

2019-05-04 Yesterday I crashed a couple of wifi routers with my new UDP test tool. 4G connection is more stable. The new tool is open source, it is a botnet of interconnected UDP peers. Having multiple peer-to-peer connections to the botnet, the tool continuously measures download and upload bandwidth, packet loss and RTT. There are Windows, Linux, and Android versions. Source code is here: https://github.com/dcomms/dcomms. Do you experience problems with unstable wifi or 4G connection?

2019-04-26 SIP Tester, CallXML: passed SIP header variables into "callfailure" event handler, as per our customer's feature request

2019-04-23 SIP Tester: new parameter "scriptExecutionTimeoutS" for API method "CreateCall_Post"

2019-04-17 I see an interesting thing: many people want to be secured, but they don't want to get into technical details about the security. What about you? Do you think that HTTPS is safe transport? Do you think that SIP over TLS is secure? The questions don't contain an important details about PKI:

  • "What are root certificates installed on client side?"
  • "How does client verify server's certificate?"
  • "Are the root CA's really safe?"
  • "Does the client get notification when server's public key is modified?"
  • "Are you really sure that private keys of root CA's are in safe place and are not copied by someone else who does a MITM attack on you right now?"
  • "Do you always check what root certificate is being used when you access web over HTTPS? - see is it fiddler or antivirus or whoever?"
Someone asked me one year ago: can you record SIPS and SRTP calls being connected to mirrored port? This is good idea for VoIP recorder, but it breaks security.

2019-04-15

  • RTP multicast (radio) audio test module is released and it is being tested by a customer, to check stability of radio path between two radio stations
  • Fixed an issue in SIP Tester related to a case with 2 RTP streams with different SSRC's in a single call
  • Also working on "Continuous Speed Test" product
  • And another product is a cross-platform network of test nodes to simulate huge SIP traffic

2019-04-09 Working on an extension module in StarTrinity SIP Tester to test radios via multicast RTP: play RTP from WAV file, pass it via radios (backbox), receive audio back and compare it with reference (played) WAV file. Audio verification algorithm decodes audio from RTP and produces MOS score, displays in GUI as table, exports as CSV. Additionally, there will be a module that takes one reference WAV file and folder with input (observed) WAV files as an input and generate table with MOS scores as a result.

2019-03-03 Added a new API method "ClearCache", it was requested by our customer. We see that more and more customers integrate with StarTrinity SIP Tester via API.

2019-01-18 In StarTrinity we work in a team, here is a bit about the collaboration in our company:

  • We work remotely, from home and don't spend time for moving between home and office (although we have our own office for other purpose)
  • I control work of a developer by looking at screenshots. I understand the code, as I am both business and technical guy
  • I don't put deadlines but I control quality of code and I analyse reasons of bugs. It is easy to control quality of work, because I understand all technical details and programming languages. And software developers like it, when CEO is software developer himself, as we have common language.
  • Database design, business logic (tables in database), structure of modules in our software system - it is 100% controlled and created by me, and I have full responsibility and control here. I outsource mostly web UI and implementation of logic that is designed by me
  • We have few TDD (test-driven-development) plans in a hierarchical list (myworkstate.startrinity.com) and we don't use any other bugtracking system besides this simple hierarchical notepad. And yet many tasks are not tracked, they are just written in skype and are remembered by a developer
  • About communication - we use skype text and voice calls wih screen sharing (teamviewer, anydesk), we have about 1-2 meetings in a week, 1-2 hours each meeting

2019-01-15 Released new version with "getdblcallscount" CallXML element. It allows to terminate junk traffic (especially test calls) to FAS IVR. A or B numbers which are dialed too often could be sent to IVR.

2019-01-11 Today we added a new module into our StarTrinity softswitch for US domestic telephone market:
"Rate deck comparison tool" - we analyse multiple rate decks (from different companies) - interstate, intrastate rates considering CDR file. It is a simple operation, but it needs high performance, so we do it in C++ code. The module is very simple, but we are going to develop it based on real customers' experience.

2019-01-05 We have finished CDR import module in StarTrinity softswitch. We analysed 3 months of some VoIP traffic (4.2M calls in CDR CSV file) in 36 seconds on an average PC with SSD drive. The result is used to build a blacklist for filter, to block unwanted calls (for the blacklisting we load the number lists directly into RAM, without any databases). This development step makes our switch ready to process CDR data and filter traffic without any external database engine, as we have our own engine.

2018-12-22 Finished recording of training sessions for SIP Tester - 6 videos: see it on youtube. The training should help new users to get general idea about SIP Tester.

2018-12-21 Some customer found out a bug in our SIP stack: we don't increment SDP origin version when we send RE-INVITE, it must be incremented accourding to RFC3264. We released new version with a fix.

2018-11-24 We have fixed an issue in our VoIP packet analyser module: now it supports compact form of SIP headers. Thanks to our customer for collaboration and providing .pcap files

2018-11-21 Published video tutorial about our VoIP readiness tests

2018-11-05 StarTrinity Softswitch: Supported RE-INVITE in 3PCC (open RTP) mode. The open RTP mode is used when you don't want to pass RTP audio via softswitch, when you need to pass RTP directly between originator (client) and terminator (provider). It improves audio quality, and removes unnecessary load from softswitch server, so it can handle 1000 channels on VPS server.

2018-10-25 We released new version. Now it runs on multiple IP addresses, and it is easy to select local IP which is used for SIP.
Why market needs this? 1) run generated (dialer) traffic from a range of IP addresses. A single IP costs much less than single server.
2) sell our StarTrinity softswitch for multiple tenants, having every tenant using his own IP. server costs about 50USD/month. one IP costs 1USD/month. One server is able to handle 20 tenants, every tenant runs 50 concurrent calls. Then we charge something like 50USD/month from every tenant, totally 1000USD/month sales per month, that is much more than expenses. Look profitable, doesn't it?
3) this is also useful with SIP Tester, many our customers have servers with multiple IP addresses and multiple network cards

2018-10-24 StarTrinity SIP Tester:
CallXML: new parameters "localSipAddress", "localSipPort" in "call", "transfer", "sendsipmessage";
new setting "LocalSipAddresses"

2018-10-23 Many GSM terminators get their SIM cards blocked due to test calls. We released new version of StarTrinity Softswitch where with an easy GUI one is able to configure IVR filter. What is "IVR filter"? - it is an advanced VoIP call processing script which asks "press 1 to continue the call" and waits for digit 1 from caller side, in early media (no FAS). The IVR filter works well in few countries and our clients get good results combining this technique with few other techniques.
A quick tutorial: in our softswitch 1) add terminator, destination set, routing group 2) add tariff, service plan, originator 3) originator details - set script type = "IVR filter" 4) make test call

2018-10-20 StarTrinity Softswitch: released new version with module "Dialer Campaigns": Dialer campaigns are VoIP call generators which send calls to terminators (providers). Every dialer campaign has 2 modes of generating A and B numbers: loading the numbers from TXT/CSV file (module "Number lists") and generating random numbers based on pattern. There are 2 script types: simplest IVR - "generate call and play an audio file to destination" and generate looped VoIP traffic - "make call to provider, cancel call or drop it immediately if it goes to another route". In "originators" module we added a setting "script type", it should be set to "receive looped traffic", to link the loop by B number (CLD).

2018-10-15 StarTrinity SIP Tester: released new version with CallXML element "setRtpTxFields", it allows you to modify timestamp, sequence and SSRC fields of transmitted RTP stream

2018-10-09 This week we work on a better UI for our call generator. Many people complain about complexity of StarTrinity GUI and we have to do something to make it easier. Don't destroy old UI but create a new UI, to make it easier for people without technical skills. This will include UI for looped traffic generation.
[my best music for this week: Alessandro Martire - Bright Sky]

2018-10-07 We have got success with our new audio verification algorithm, over G.711 PSTN network. We test full 2-way audio path, including DID number provider and Cisco routers - infrastructure used for call centers. The algorithm now works well only on G711 (not G729), and on one audio file only. But that's enough to identify calls with low audio quality.
We are developing the algorithm in partnership with someone in USA.
Our next step is to make it work on any IVR audio file, and with G729. It should be possible with neural networks.

2018-10-02 In previous week we worked on voice rates import procedure in our new OSS/BSS. I see that it takes more than 2 minutes to import 18K rates A-Z pricelist, with empty database. I don't like this result, and here I have 3 ways: 1) do nothing and accept this speed of import 2) optimize C# LINQ code to make it faster 3) develop a new C++ module to store voice rates in files, not MSSQL database. Since our business strategy does not put any deadlines to the development, we are not limited by time and we prefer to select option #3, and it makes me feel good. Performance is a very important thing in VoIP software. Choosing ways #1 and #2 means to me developing a system with high technical debt, and most probably will never get out of this debt, as I observe in many other software development companies.

UPDATE 2018-10-05:
I am not rigid, and I listen to my developer: we had a meeting and decided to keep using MSSQL for rates, but test performance with dummy data. MSSQL is much easier than CSV files, of course, but here we have less control over performance. I like the control, but dont want to be paranoic, wanting 100% control over the performance. If performance is not good with 1500 pricelists, 30K items each, we move to CSV data storage for voice rates. It is the largest table in the database; and we already store CDR data in CSV, decentralized, not in MSSQL. So now we select the option number 2.
We have achieved improvement: now import of 18K rates takes 24 seconds; but that's still on clean database and SSD disk. We will see performance on a non-SSD server with software RAID and with non-empty database.

2018-09-26 Published new chapters inn our VoIP e-book: SIP extensions, Real-time Transport Protocol (RTP), RTP streams in Wireshark;

2018-09-05 A bit of information on how I manage tasks. The task management is a very important thing, I do it using my own tool "myworkstate".

  • This is a private todo list, the text is written by me for myself, it also includes things done by my team, controlled by me
  • Number of "todo" items always grows (over 6000 now), there must be a process of ignoring/forgetting things that will never be done
  • Most effective way for me to manage myself and my team is this simplest hierarchical list
  • The well-organized hierarchy provides me a way to view all my projects/products on a single page
  • There are no deadlines for the "todo" items, priority of the items is dynamic, depends on how I feel about the projects

2018-09-05 Today improved performance of StarTrinity softswitch database procedures and added protection against overloads in database saver thread. (we use our own database based on XML)
Also, today our customer reported a bug in CDR display module: min/max datetime filter did not work correctly. We have reproduced it, fixed and released new version in 1 hour.

2018-08-31 Got a bug report from a customer: our software when it works as a B2BUA (softswitch), with "transfer" element, when a local network adapter runs on 2 IP addresses, works incorrectly. Call leg A works within subnet #1 and IP address #1; call leg B works within subnet #2 and IP #2. But the call leg A receives IP address #2 in "183 session progress" from our software. CallXML element "accept" with "localRtpAddress" = "IP#1" does not help. Why we publish this - we want to focus our own attention and your attention to core reasons of bugs, major problems happening in software products.

  • The bug is related to rare case. We have never tested B2BUA mode on 2 IPs. Core reason: not enough of testing. Core conflict: extensive testing costs money and it increases price of the product
  • When I check source code of the "accept" CallXML element, I see that it uses the "localRtpAddress" parameter ONLY when parameter "sip status code" is "200", so when we send "183 session progress" it is IGNORED. Core reason: not thinking about all code flows while coding. Core conflict: thinking about all possible code flows needs more time for development, and developing less number of new features requested by customers.
  • This is an easy bug, fixing by itself took 30 minutes. Easy because one person involved in the process - it's me - I control 100% of this code. It is much more complex when other developer(s) are involved, that's why I like clear distribution of responsibility for code between developers, and don't like open source projects
We will publish more posts on this topic, and finally we will have a list of core reasons of bugs and corresponding conflicts. Please give us some feedback if you are interested in this topic, I don't want to write useless things.
Actually the bugs in VoIP software is the reason why we have sales of our SIP Tester. I suppose, the identified core conflicts have no solution, and the bugs will not disappear, as complexity of the software increases. There will always be need in load and unit testing

2018-08-29 The error that we have found on "france3" server in our SIP Tester is actually not in RTP receiver thread, as I thought initially. It is in SIP thread, and it is caused by "robots", the robots exist in public internet and send malformed SIP packets. Here is a packet which causes the error:

INVITE sip:0048223970589@163.172.210.13:5070;transport=UDP SIP/2.0
Via: SIP/2.0/UDP 25.64.102.134:5060;branch=z9hG4bK-524287-1---iirogqrmvd1dr4rs
Max-Forwards: 70
Contact: <sip:9025@25.64.102.134:5060;transport=UDP>
To: <sip:0048223970589@163.172.210.13;transport=UDP>
From: <sip:9025@163.172.210.13;transport=UDP>;tag=yzixxlhy
Call-ID: J4at4yhUcmaLdFtrVRgBNW..
CSeq: 1 INVITE
Content-Type: application/sdp
User-Agent: Skipper PHONE
Allow-Events: presence, kpml, talk
Content-Length: 288

v=0
o=Z 0 0 IN IP4 25.64.102.134
s=Z
c=IN IP4 25.64.102.134
t=0 0
m=audio 8000 RTP/AVP 18 3 110 8 0 97 101
a=rtpmap:18 G729/8000
a=fmtp:18 annexb=no
a=rtpmap:110 speex/8000
a=rtpmap:97 iLBC/8000
a=fmtp:97 mode=30
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-16
a=sendrecv
It is easy to reproduce the INVITE and fix the error.
I find myself blogging too much, not good for my work.
UPDATE: just updating SIP Tester to latest ver. helped, this err has been fixed in prev. 2 weeks

2018-08-28 Our 2-way-audio-verification test for the StarTrinity softswitch "fast RTP proxy" operation mode continues for 6 days, we started it immediately after finishing the code. we see following confidence score chart (see the image):

  • 11.7M SIP calls passed via the tested softswitch
  • SIP Testers did not crash, softswitch did not crash, memory did not leak
  • Confidence score was good in the beginning but got worse starting from 2nd day
  • We got few RTP receiver thread errors in SIP Testers, the errors did not crash the SIP Tester
  • No error log messages in the softswitch, this audio bug is silent, does not generate error in the logs
  • We reduced call load from 1000CC down to 100CC to see what happens - we still observe audio confidence = 6% instead of 100%
  • We reduced call load down to 10CC to record pcap in Wireshark and capture logs with LogLevel=Debug
  • We clearly see in SIP Tester logs that there are no RTP collisions now, but we still get issues

update 2018-08-29: the debugging ended up with finding reason of bad audio quality: it is network between "backup5" and "france2" server. There was huge packet loss, even for 10 CC. I expected to find a bug in "fast rtp proxy" module, which would mean that this issue is something that we can fix. If it is network, only thing I can do is to change the server and its network (use another hosting provider), or set RTP TX DSCP flag = 46. Conslusion: before using a server for a serious VoIP project, test the IP network with SIP Tester, for 7 days at least. Hosting providers declare a good bandwidth but in fact they tell FALSE. What I can do - in the softswitch look at "rtp packet loss indicator" during live VoIP traffic. We continue the test with 300CC, and now quality is good again.

2018-08-28 I am going to write not only "good" things in the blog; I hate the way how other customers do the marketing - and I want to start telling the true from myself. Not everything is good. We always have bugs. We always have issues with performance. We are always busy.

A small example - our customer in Cameroon has issues with our softswitch, with status screen. It hangs. This is a temporary performance issue. We need to optimize the code.

I hope the "full" blog will be more interesting to the readers

2018-08-28 Released new version with setting "LocalSIPAddress", it allows running multiple SIP Tester instances on same server with multiple network adapters, distribute SIP load across the network adapters, this is done for a big customer in NZ.


We have regression bugs with another big customer in US, they really get dissatisfied with our software

2018-08-26 This weekend we re-design billing and rating operations in our new StarTrinity OSS/BSS (scalable softswitch + billing system). I don't want to do routing, rating and balance adjustment on one server (central billing database). I want to decentralize VoIP billing - do the AAA, balance updates, rating, CDR statistics calculations on distributed softswitch nodes, in RAM (very fast). In this way I can remove a limit of 1000 calls per second (CPS) per system, it will be about 1000 CPS per softswitch node, and I want to support more than 100 softswitch nodes in a single system.

2018-08-25 Recorded talk about VoIP QA with Zeeshan:
About VoIP Software Quality Assurance (QA), StarTrinity Softswitch, SIP Tester. SIP load testing (stress testing), audio quality tests. How we develop VoIP software and test it. How we test audio quality. What we don't like in marketing. What we don't like in Linux and C++

2018-08-22 Thanks to the audio verification, we have found a much more serious bug and vulnerability in our softswitch: it does not handle CANCEL from call leg A (UAC) after sending 200 OK. This situation creates a hang call B which is billed without any billing from A. Such situation implies a SIP attack for a VoIP wholesaler: caller side sends INVITE, waits for 200 OK, ignores the 200 OK and sends CANCEL instead of ACK in response to 200 OK.

2018-08-22 StarTrinity softswitch: we test "fast RTP proxy" mode: generate calls at SIP Tester #1, pass via the softswitch to SIP Tester #2, SIP Tester #2 plays echo back to caller side. SIP Tester #1 (caller side) plays an audio file and verifies audio which is received back (via softswitch), it verifies decoded audio content of RTP packets. We run test at 500 concurrent calls and 14 calls per second, and we see that 0.5% of calls have bad audio quality (confidence level is below 98%). Is it a good result or bad result? 99.5% of calls are OK. I am sure that if we increase call load up to 1000 concurrent calls, we would get much more calls with bad audio. As we are implementing test-driven-development (TDD) strategy this time, we concentrate of the failed calls and we don't continue development until we fix the problem. As I see from logs, it is related to RTP collision: 2 RTP streams are being sent to same destination UDP port number. It makes perfect sense, it is second time when we face the RTP collision issue during the the "fast RTP proxy mode" development. here is time chart for the measured confidence score:
StarTrinity Softswitch TDD - audio verification

With StarTrinity SIP Tester we have 601 commercial users now.

2018-08-17 Continuing work on our real time fast audio verification algorithm ("fuzzy" mode). The algorithm already works, but accuracy is not good. We have a database of IVR audio recordings to verify the algorithm, our unit test procedure runs the algorithm over the recordings and checks its accuracy. So far the accuracy is not good. What we do now is known as test driven development.

2018-08-11 Today we work on our real time fast audio verification algorithm - "fuzzy mode" in our "verifyaudio" CallXML script element. We have already designed its basic structure: few IIR filters -- power detectors -- low-pass filters -- logarithm function -- here we have vectors of features. The feature vectors are then passed to convolution operation against same feature vectors of reference file. Output of the convolution is compared to a threshold, to identify initial match. After finding initial match, the algorithm allows small shifts between reference file and observed (degraded) signal, to compensate RTP clock skew and small jitter disturbances. The difference between observed signal frame feature vector and reference signal feature vector is accumulated to produce MOS score (from 1 to 5) and "confidence" level (from 0 to 100).
Real time audio verification algorithm for VoIP (Voice over IP)
We are looking for business partners who can sell our real time audio verification algorithm; ourselves we are going to use it for FAS detection and IVR testing/monitoring.

2018-08-09 Thoughts on Microsoft monetization strategy with Skype - OTT bypass?

Today I finally got my own understanding - why Microsoft removed option to turn off anonymous incoming calls. I suspect that they are going to monetize Skype with OTT international bypass fraud. People who do not know what is "OTT international bypass" - I will not describe it here, please find explanation in google. It is a global trend in international telecommunication business.

How I see story of Skype:

  • For some reason they sold their business to Microsoft, I did not like it.
  • Microsoft released new cross-platform GUI, I did not like it. Everything worked well before Microsoft
  • The Microsoft understood the opportunity of "OTT bypass fraud" - I do not consider it as "fraud" myself if audio quality is perfect. Messangers like Whatsapp, Viber have been doing it already, why not Skype?
  • But there are few minor problems for the OTT bypass: 1) need to have phone number linked to messenger account 2) need to have ring sound always turned on. If B party does not hear the ring, the call will never get answered via the OTT bypass route
  • So Microsoft decided to always enable ring tone in skype. Also enable calls from unknown callers. Can you find these settings in the new Skype?
  • Old version of Skype stopped to work a week ago (August 2018). No way for me now to avoid unknown (and known) callers to call me at night when I am sleeping.
  • For a year I have tried to contact Microsoft to let them bring back old settings, no result.

Dear Microsoft management team, do you read this article and do you hear me now????? I have already uninstalled Skype on my main devices but I would like to have it installed and running again, without receiving anonymous calls at night.

UPDATE: (someone replied to this article and told me that "Skype does not use the telephone number to identify the user") - they really ask to link account with phone number. It is not required though:


Also, I have installed Skype back again on my android mobile phone, just turned off it in background mode (Android settings), now it does not disturb me at night.

2018-08-09 Our RTP proxy module in StarTrinity softswitch does not pass our internal audio quality tests. We generate traffic, pass via our switch to destination, destination plays back echo audio signal, caller side verifies audio and produces audio quality score. And we see that audio quality is very bad for some calls, we really hear bad quality in WAV recordings. We will fix the issue and publish results.

2018-08-04 News from our R&D: our new high-performance RTP proxy in the StarTrinity softswitch works well under 1700 G711 channels (total 3400 call legs). We have just started the load test. It is on a 30Eur/month hosted server, 1Gbit network, 4-core average CPU Intel Xeon E3-1220 @3.1GHz. The new RTP proxy will move our switch to the next level. Here is screenhot of Task Manager:

With G.729 codec the RTP proxy achieves performance of 1750 channels (3500 call legs). Why not much more channels than with G.711? A good question. It looks like packets/second limit, not bytes/second limit.

2018-08-01 Moving StarTrinity Softswitch to the next level: this week we are working on hosting cost optimization. Achieved following: 1500 G.711 channels (1500+1500 for legs A and B, 192bit 20ms RTP packets) for 30 euro/month. it means 300 euro/month for 15000 G.711 channels. We are running voice quality tests with our tester tool, RTP packet loss and jitter are acceptable under such call volume. With G.729 and/or open RTP it will be more channels.

2018-07-26 StarTrinity Softswitch new version - partially replaces ringback tone by custom wav file

2018-07-24 Started to work on advanced anti-FAS algorithms

2018-07-16 Started to work on SIP security testing suite

2018-07-14 We started to work on a new project "StarTrinity OSS/BSS". It will be a huge system including softswitch, routing, billing, CDR analyser, fraud detection/suppression modules, business operations automation module, looped traffic automation module, whitelist/blacklist automation, many other things. Maximum list of features for VoIP wholesale, retailers and terminators.

2018-07-09 Started to work on unit tests and debugging visualisation for audio verification algorithms. Customers have been waiting for this for a very long time

2018-07-07 Got positive feedback from linked-in about the book. Now I start to believe in book writing + SMM as a good marketing strategy, in addition to SEO
Added a small change into CallXML to support usage of our softswitch as IVR server.

2018-06-25 Started an e-book about VoIP troubleshooting

2018-05-19 Implemented control of transmitted DSCP field in CallXML script. Now there is a new parameter "rtpDscp" in "call" and "accept" CallXML elements

2018-05-19 Published sample CallXML script for looped traffic generation in SIP Tester. This kind of script becomes very popular in Middle East VoIP community. SIP Tester or softswitch send generated traffic to some route and receive some part of the traffic back to same IP address, same server. Calls which are terminated by some other route get terminated. Also, the script rejects incoming calls which are not generated by itself. Calls are matched by called number (CLD). There is much to be improved in this script, it has only basic functionality now.

2018-05-16 Got our first customers using the new VoIP Status product:

  • A VoIP route provider (GSM termination provider) in Africa is continuously testing his GSM gateway connection: VoIP Status periodically sends test calls to IVR menu and measures audio quality. When internet goes down, or when SIMs get blocked, the customer is immediately notified
  • A cloud IP PBX provider in Canada is continuously monitoring his customers' IP networks using cheap Cisco ATA devices: when there is high jitter or packet loss, he is immediately notified
  • VoIP services providers in US (two), Italy (one) run VoIP readiness tests to quickly diagnose capabilities of customer's IP networks. Our test nodes simulate multiple SIP phones and the test simulates real SIP calls between SIP phones and IP PBX in provider's data center
We offer free trial now, welcome everyone who is interested to run the VoIP tests and improve VoIP quality based on test results

2018-05-12 Improved our Continuous Internet Test (internet connection monitor): we use 4 redundant servers now to avoid false alarm reports when one of servers temporarily goes offline

2018-04-28 CallXML: supported accessing audio files by URL. Now CallXML scripts can reference audio files from your web server, it is useful when you have many instances of SIP Tester and centralised storage for CallXML and audio files

2018-04-12 VoIP Status: published tutorial

2018-04-06 VoIP Status: we have published it. Everyone who wants to try - please sign up

2018-03-31 SIP Tester: new CDR fields with RTP stream IP ToS (DSCP) field values (requested by someone from US). Recorded video of the coding process

2018-03-31 Published Cisco CUCM configuration manual with StarTrinity SIP Tester, thanks to our partner

2018-03-27 Recorded 2 videos with demo presentations of the StarTrinity softswitch: #1 and #2

2018-03-17 Published screen recording of coding process (our new StarTrinity VoIP Status product): #1, #2.

2018-03-17 We are announcing new software products based on SIP Tester: StarTrinity VoIP Status and "SIP Testers cluster manager". The "VoIP Status" will be a web-based SaaS with SIP Tester-based client and server. We are going to develop much easier web UI to be used by wider audience. More details later. Development videos will be published on youtube.

2018-03-17 Observing some progress in SEO process for our HTTP Test Tool: 17th place in google for keywords HTTP Test Tool, REST client. The continuous speed test has #1 position in google now, and about 100 visitors from google daily. These plain HTTP Test products are very easy to develop, but monetisation is still vague. The HTTP tools still need more development from our side, as we have pending requests from users.

2018-03-16 Published screen recordings of coding process: StarTrinity CRM, StarTrinity VoIP Status.

2018-03-08 Published result of our international VoIP market research. Many people today totally don't understand key components of the market

2018-03-08 Started to offer few more products/services: termination of international generated VoIP traffic and CDR analysis tool

2018-03-07 Recorded development of Click-To-Call HTML button, published to youtube. I make cross-domain HTTP AJAX call to our StarTrinity Softswitch / SIP Tester web API.

2018-03-03 Released HTTP test tool software product to test API's

2018-02-28 After facing with the market, StarTrinity Education System has been turned into "Partner Searching System". We will not educate software developers, instead we will have 50/50 partnership with self-educated developers.

2018-02-24 We have started new project - StarTrinity Education System to raise software developers, hire them or make new projects in partnership

2018-01-09 In 2018 we are going to invest time and efforts in psychological education services. We (me with my wife) will consult people via skype and teamviewer for some USD/hour talking with them about very important things. We will address the problem of poor emotional intelligence, poor psychological and business skills, it is necessary to be happy. This is natural development for our projects BeautifulSoul.ru (psychological education leads to individual psychotherapy), SoftwareBusinessBook.com (the book must be written based on real conversations with future entrepreneurs), MyWorkState (the tool needs some marketing and live users except myself for development). Anyone who is interested in skype consultation for 30USD/hour - please contact me by skype - asv128.

2017-12-24 Softswitch: more and more people use the softswitch and SIP Tester to generate looped VoIP traffic. We have published sample scripts for this.

2017-12-24 CallXML: released new version with CallXML element "getrtpmeasurements" to access RTP measurements in CallXML scripts to make decision about call processing

2017-12-23 SIP Tester: "confidence score" is more reliable than PESQ MOS for unit tests with audio verification

2017-12-22 SIP Tester: The BYE issue should be fixed now in SIP Tester. Next issue is unreliable PESQ audio verification algorithm, it must be 100% reliable especially in unit tests

2017-12-21 SIP Tester: A little piece of information about our internal bugfixing process (we have used not to publish much information about the bugs). One of our SIP Tester customers has found a bug: the SIP Tester does not handle 401/407 response to BYE for incoming calls. It means that when SIP Tester receives a call to incoming CallXML script from registrar server, and if registrar server requests digest authentication for ending of call (BYE), the SIP Tester does not use any user name and password for the BYE request. We need to fix it urgently.

2017-12-21 SIP Tester: we don't understand real reason, but many customers have been asking us for "loop" tests with SIP Tester (looped generated traffic): SIP Tester makes calls to some route, part of calls is delivered back to SIP Tester. Part of calls goes to other termination providers. SIP Tester aborts the call if it gets terminated by another provider (not by SIP Tester itself). We will publish sample CallXML scripts for this setup.

2017-12-17 Softswitch: many people keep telling us that Dbltek GoIP gateways are not good. In response to that we can tell that we are successfully terminating live wholesale VoIP traffic with 15x 16-channel GoIP16 GSM gateways, and we get ASR = 11..35%, ACD = 1.6..4.5 minutes.
One key advantage of GoIP gateways is possibility to have the gateways running behind NAT, with dynamic IP address. There is a way to access gateway's web UI via our softswitch: the softswitch delivers gateway's web UI from internal LAN to public IP address.

2017-12-16 Softswitch: one of our users has finished deployment of multiple GoIP1 gateways connected to the switch in SIM management mode in eastern Europe. It works well so far under small live trafic

2017-12-05 Softswitch: published results of performance test on a cheap dedicated server. Now we have a team of 2 independent technical support technicians: one for GSM Termination, another one for CallXML scripts. In addition to that many users help us with testing. There are few contracts for paid development of the softswitch.

2017-10-29 Softswitch: making one more research on live traffic: effect of TCG (generated traffic) filter on SIM barring/blocking

2017-09-01 Softswitch: successfully passed first live traffic to GoIP GSM gateway in SIM management mode. Works well in some African country. Our next step is to integrate with top-up service to recharge SIM cards automatically.

2017-08-15 SIP Tester: new Web API method "SetScriptForIncomingCalls"

2017-08-11 SIP Tester: new Web API method "StartScript" for better integration into unit test frameworks

2017-08-10 We have started to receive real SEO traffic from google by keywords "voip providers list", "voip route providers list", "NCLI routes". The visitors do send messages to the listed providers. So the VoIP market place has started to work.

2017-08-05 Regarding the softswitch we have decided to implement SIM management features (in competition to GoAntiFraud). Many people say that they charge big money and they are not good, so we will do it better and cheaper. We have a partner in Nigeria to support us with GoIP GSM gateways and SIM banks hardware. Actually too many people are asking about it, because everybody wants to protect SIM cards from blocking.

2017-07-26 SIP Tester: got performance of 2000 channels and 100 calls per second on a VMWare virtual machine by splitting RTP traffic into 3 virtual network adapters. Published CallXML scripts here

2017-07-17 SIP Tester: created new web API methods "StartCreatingCallsOnTimer", "StopCreatingCallsOnTimer", "Cdr/ClearMemory", "ResetCounters" for a customer in Germany

2017-07-09 Started a new project "VoIP marketplace". We are going to publish list of VoIP providers where they will offer NCLI and CLI VoIP routes. There will be anonymous messaging functionality, CDR statistics with ASR, ACD and capacity. We will verify the VoIP termination providers to avoid scam. There will be no way to get into the list unless we invite you; we will invite trusted users of our softswitch and few other trusted termination partners.

2017-06-22 We have got a client who uses the StarTrinity Softswitch for retail VoIP origination and DID forwarding. Working with him on optimization: today we have implemented free calls between originators (softphones). Later we will develop our own cross-platform whitelabel SIP dialer with encrypted signaling and media, audio and video calls

2017-06-16 The softswitch gives me a real and true picture of what is happening in VoIP world. Today I have observed a new type of originator-side fraud in VoIP wholesale business: caller side receives 200 OK (connection signal) but they pretend that the packet is lost in internet. From this time the call is really connected but not confirmed by caller side. Called side (SIP UAS) keeps retransmitting the "200 OK" for a timeout of 45 seconds (default), and during this time the call is not billed for leg A. The caller sends CANCEL after some time if they no longer need to keep the call connected. Or they send a delayed confirmation of the connect signal ("ACK" to "200 OK"). In this way they are able to get free calls which have a short duration. This is a kind of hacking of SIP protocol. Modern revenue assurance subsystems must be able to handle this type of fraud, and we are going to protect our softswitch against it.

Other types of fraud that we regularly see are:

  • GSM termination (NCLI grey routes). This is a fraud for destination telecom operator; for wholesalers, grey termination guys and originators it is a business
  • Blending of CLI routes and NCLI routes
  • FAS based on adding small durations after connection
  • Unintended FAS caused by SIM card blocking
  • FAS made by blending of auto-answer IVR into grey route
  • Schedule-based FAS
  • Overselling of capacity
All the fraud can be detected, at least manually. And we are working on optimization of the ant-fraud detection

2017-05-25 Supported audio+video calls, released new version of SIP Tester. Now it is able to play any video codec from pcap file. We have recorded pcap files for H.264, H.263+, VP8

2017-05-23 Successfully completed first audio+video encrypted call: G711A and H.264 codecs, SRTP. We have used MicroSIP as a test softphone to check compatibility. The SIP Tester is now able to play any video codec directly from pcap file.

2017-05-01 Optimized CDR query procedures: moved CDR lookup code to C/C++ module. There is still much space for optimization

2017-04-30 As we hear from users, VOS3000 has been hacked. We are taking opportunity to replace it with StarTrinity softswitch

2017-04-17 Softswitch: new API methods to get/add originator's balance

2017-04-09 Softswitch: implemented advanced logic for missed call routes

2017-04-02 Got 2 new customers for softswitch: VoIP retail origination in UK and WoIP wholesale in US. Now working with the new customers to optimize the softswitch for their needs, according to road map

2017-03-24 New API method "/API/MainViewModel/Originators/CreateOriginator" to integrate softswitch with VoIP originator's signup webpage

2017-03-20 We are hiring a person to establish and manage relations with GSM gateway owners in various countries. Budget is 30K USD/year for 100 countries. Also we are looking for GSM gateway owners to connect with us - send incoming test calls from GSM gateways to our server - for 50..100 USD / month. More details here

2017-03-18 We have published first version of our VoIP routes test system (CLI testing) here. You are welcome to test your CLI routes with our new system

2017-03-15 Having our website on 3rd position in Google for keywords "continuous speed test". CTR is good, also usage statistics looks promising

2017-03-13 We have got our softswitch running in at least 3 countries. It is live NCLI (GSM termination) traffic. We continue development of the VoIP softswitch according to feature requests from customers

2017-03-11 Published price for commercial license of VoIP readiness test system: 240USD/year initially. The price includes technical support.

2017-03-09 For VoIP wholesale carriers who need to test new CLI routes: we are working on a service similar to www.i-test.net (our competitor), and we invite you to make free test calls with our beta version of the caller ID delivery testing service. Please contact us for details

2017-03-06 CallXML: saving multiple SDP attributes with same name into separate CallXML variables (it is useful to access "fmtp" SDP attributes)

2017-03-02 Softswitch: flag 'enabled' for routes and tariff rates, it can be used for blacklisting - block calls to specified prefix or call center number

2017-02-24 Started a new product based on StarTrinity softswitch: VoIP routes tester. Target users: VoIP wholesale carriers, tier1 operators. Functions: CLI verification, audio quality testing (MOS, RTT), FAS detection, bypass (blending) detection

2017-02-21 CallXML: implemented "getcdrcallscount" element for advanced TCG logic

2017-02-10 Implemented "floor()", "ceil()", "round()" expressions in CallXML element "assign", attribute "mathvalue"

2017-02-06 Implemented "routing and billing" log in VoIP softswitch, it allows easy troubleshooting from CDR web interface

2017-02-02 Implemented saving SIP trace as TXT files, splitted for every SIP call: settings SaveSipPacketsToDiskAsTxt, SaveSipPacketsToDiskAsTxt_PathPattern (was requested by a customer)

2017-01-11 Cleaned code for routing in StarTrinity VoIP softswitch. Performed minor refactoring

2017-01-10 Added CallXML variable "callNumberInBurst" for advanced testing of conference servers

2016-12-25 Added parameter "sipCallId" into web API method "GetCallsJSON"

2016-12-22 Started to get fairly good traffic from google by keywords "continuous speed test", "continuous bandwidth test", "speed test HTML5". This could mean a new business direction for us

2016-12-20 Adding more features into VoIP readiness testing system for a new customer from US, NV. Testing internet connection stability of few local (Russian) mobile internet providers: there are downtimes, bandwidth is not stable for all providers even if mobile phone is in static position near window with strong signal

2016-12-18 New web API method: /API/MainViewModel/Cdr/GetCallsJSON

2016-12-11 Published a continuous speed test to generate additional network load when running a VoIP test

2016-12-08 Added new setting "EnableRtcpXr" to turn off RTCP-XR reports, because some SIP servers don't support RTCP-XR

2016-12-04 Published an online internet connectivity test to quickly check stability of internet connection before running a SIP test

2016-12-02 Supported SSL v.2, SSL v.3, TLS v.1.2 for SIPS transport

2016-11-30 New API methods: GetCurrentCallsCount, GetVersion

2016-11-28 Supported SRV DNS records (for customers in US and Canada)

2016-11-21 Published an example of integrating VoIP readiness test into a website

2016-11-17 Implemented limit of REGISTER requests per second to avoid overloads of tested PBX

2016-11-12 Published VoIP readiness testing manual with StarTrinity Network Tester

2016-11-06 Improving performance of StarTrinity softswitch, as we got complaint from a customer

2016-10-31 CallXML: implemented "considerThisCall" parameter for "ifcallexists" element

2016-10-28 Implemented HTML-based chart for packet loss, jitter and MOS in StarTrinity Network Tester

2016-10-20 Implemented G.107 MOS measurements in StarTrinity Network Tester

2016-09-22 Improved VoIP recording algorithm in case of VAD and RTP clock skew

2016-09-14 Developed web user interface to manage audio files (for SIP Tester and softswitch IVR systems)

2016-09-07 Developed a CallXML script which checks audio quality and DTMF in 2 ways (for someone in UK)

2016-09-03 Set up demo access to our softswitch with sample configurations

2016-08-18 Using SIP Tester as a test call generator (TCG) to fight with over-the-top (OTT) (Viber) bypass fraud. The Viber international VoIP bypass becomes a bigger problem for telcos in EU

2016-08-09 Minor improvements in CDR and status web UI

2016-08-01 Added CDR field "CalledIP" (requested by some telco)

2016-07-05 Extended web API method "CreateCall_Post", added new method "DestroyCall"

2016-07-05 Loading SIP trace from previously saved PCAP file, if displayed call is loaded from CDR data file after restarting the software
WebUI for passive mode: showing UAC and UAS SIP messages in different colors

2016-07-03 Added setting "CdrDisplaySource" to automatically load calls from CSV CDR files

2016-06-21 Added setting "NatList" to explicitly handle NAT when linking captured RTP streams to SIP call

2016-06-20 Published Web API documentation for SIP Tester and Softswitch; added new method "CreateCall_Post" for someone in Germany

2016-06-17 Implemented basic routing in softswitch

2016-06-16 Fixed a memory leak in VoIP recorder (it is being used by a telecom operator in Turkey)

2016-06-11 Softswitch: implemented call transfer mode "suppressAnswerBeforeRbt", parameters "disconnectOnSilenceLevel" and "disconnectOnSilenceTimeout"

2016-06-07 Implemented multi-tenancy for the softswitch (usage of single server by multiple independent VoIP business owners, shared hosting)

2016-06-02 Successfully tested SIP Tester as VoIP recorder: 420 concurrent G.729 calls, 1.6M totally; 1700 concurrent G711A calls, 1M totally
Added setting "UseSipsInRequestLineUriForTls" to enable "sip:" request-line URI with TLS transport

2016-05-29 SIP Tester as VoIP recorder: new setting "SaveRtpPacketsToMixedWav", requested by someone from Turkey

2016-05-22 Softswitch: implemented AAA and billing, tested

2016-05-21 Softswitch: defined and implemented entities "Terminator" and "Originator"

2016-05-08 UAC registrations: new field "Use for calls only" = "Don't send REGISTER"

2016-05-06 CallXML: added element "disableuacregistration" for someone in US

2016-05-04 Improved RTP stream lookup procedure for passive-mode monitoring, when port is changed by NAT (for a major telco in Brasil)

2016-04-28 CallXML: added "contactHeaderFormat" into "register" element
Added "LocalIpAddress" field into "UAC registrations"
CallXML: "maxansweredtime" parameter for "transfer", "maxansweredtime" event

2016-04-27 CLI: 'infinite' TotalCalls parameter value, to allow continuous generation of calls from command line

2016-04-22 WebUI: call details web page with CDR fields and SIP trace

2016-04-18 CallXML: added "var" attribute into "call" element (requested by customer)

2016-04-17 CallXML: added "from" and "to" attributes into "switch" - "case" elements

2016-04-16 Improved software update procedure

2016-04-12 Extended settings SaveSipPacketsToDisk_PathPattern and SaveSipAndRtpPacketsToDisk_PathPattern settings: now it can contain different patterns for different calls (e.g. incoming and outgoing calls)

2016-04-11 Added a command-line parameter "NumberOfCallsPerBurst" (was requested by customer)

2016-04-10 Published a report of 2-week test between SIPP and StarTrinity SIP Tester

2016-04-07 Recorded a screencast of 8000-channel testing for someone in Japan:

2016-04-07 Sending 200 OK response for PUBLISH and other SIP requests

2016-03-29 Opened public free access to the task management system that I use to get high efficiency - MyWorkState.com. With the MyWorkState I can work work 5..20 hours per week, develop StarTrinity SIP Tester and other products without hiring employees, provide technical support. New users are welcome.

2016-03-26 CallXML: extended "setcallgeneratorparams" for random interval between calls (for someone in Beirut)

2016-03-23 RFC2833 DTMF generation in WinPCAP RTP sender mode
Added CDR field "RTP packets count"

2016-03-22 Testing stability of SIP Tester in WinPCAP RTP sender mode with WAV audio playback: 100CPS, 8000 G711 channels, random call duration: 13M calls are OK with no crashes, no memory leaks, no errors

2016-03-21 Manual aborting (hangup) of current calls in GUI

2016-03-20 Improved performance: got 8000 G711 and 9000 G729 channels with RTP WAV audio playback. Using an Intel 4-port 1Gbit NIC card.

2016-03-08 CallXML: "expires" parameter for "register" element

2016-03-07 Supported SIP URIs like "sip:xxxx@domain;user=phone" for outgoing calls

2016-03-06 UAC REGISTER performance improvements: simulated 100K extensions without CPU overload

2016-03-01 Continuing development of softswitch for France-based telephony application developer. Added a setting "WebApiTrustedIpAddresses" to make it easier for applications to use the Web API

2016-02-28 Implemented change of current audio codec in "reinvite" CallXML element

2016-02-27 "Manual tests" window for individual SIP calls: connect to sound device, send DTMF
Setting "CdrPath"

2016-02-26 "Expires" field for adding batch of UAC registrations

2016-02-24 Sound card module: audio connection to current SIP calls for manual real-time testing and demonstration

2016-02-22 Added "Require100rel" setting to test PRACK (RFC3262) SIP call flows
CallXML: extended "setcallgeneratorparams"
CallXML: "setinterval" element needed for timers

2016-02-21 Extended web API framework to support invoking methods. Added an API "/API/MainViewModel/CurrentCallExists" for integration between 2 instances of SIP Tester (for someone in US)
API method "/API/MainViewModel/Creat-eCall" to integrate StarTrinity softswitch with a web application (for someone in France)
"POST" method for "sendhttprequest" - needed for integration with 3rd party APIs

2016-02-18 Increased prices for SIP Tester

2016-02-13 CallXML: "sendhttprequest" element to integrate with third party APIs

2016-02-09 Packet loss concealment (PLC) for G.711 codec, needed to avoid skew in recorded WAV files when getting lost frames in jitter buffer. It is necessary for PESQ audio verification

2016-02-04 Added setting "DontPrintPortInRequestUri" (requires restart of software)

2016-02-04 I've done a research of sales data: Tuesday is the most profitable day, however most of licenses are sold on Wednesday:

Day of weekAmountLicenses sold
Monday13.96%16.38%
Tuesday32.19%18.36%
Wednesday16.81%22.59%
Thursday17.12%18.36%
Friday16.14%18.07%
Saturday1.37%2.54%
Sunday2.36%3.67%

2016-02-03 "Host for calls" and "port for calls" fields in "UAC registrations", used to set different Request URI for REGISTER and INVITE

2016-02-01 CallXML: "disableRtp" parameter for "call" and "accept", requested by someone from Russia

2016-01-30 Custom "Contact" SIP header format for UAC REGISTER (for someone in Israel)

2016-01-25 US market is the best in the world for our company. 49.2% of sales are from the US:
StarTrinity sales by country

2016-01-18 SIP Tester GUI: "repeatCount" parameter to read destinations from CSV

2016-01-14 Tested SRTP compatibility with MicroSIP softphone. Released new version with SRTP

2016-01-13 Tested SIPS and SRTP with 3M calls, 300 concurrent G.711 calls (SIP Tester -> SIP Tester)

2016-01-12 CallXML: "sipCallId" attribute for "call" element to set custom Call-ID header in INVITE (requested by someone from US)

2016-01-11 Got a successful SRTP call between 2 instances of SIP Tester. Running a stress test now to check stability of both SIPS and SRTP stacks

2015-12-29 Tested SIP calls between 2 SIP Testers over TLS transport: 45 million calls, 500 calls per second, 400 concurrent calls

2015-12-23 Supported SIPS (SIP over TLS transport). Included sample certificate files into installer

2015-12-15 Working on SIPS (SIP over TLS) and SRTP, it has been requested by many people

2015-12-12 Setting "ReuseExistingTcpSocketToTheSameDestination" (for someone in US, Silicon Valley)

2015-12-10 Developed a free cloud-based testing system: managed multi-protocol test agents, web-based test management and reporting.
Currently implemented tests:

  • UDP stream, bidirectional: jitter and packet loss measurement
  • VoIP readiness: SIP ALG presence detection
Planned tests:
  • TCP throughput (max bandwidth)
  • UDP throughput (max bandwidth)
  • Trace route
  • HTTP
  • ICMP
  • SNMP

2015-12-06 Enabled using of ODBC drivers in "requestdb" CallXML element

2015-12-06 Loading CDR data from database (via ODBC driver), selecting previous test ID(s) to load

2015-12-05 Added new fields into CDR database and CSV file: "100 delay" and "Test ID"

2015-11-28 Generation of "multipart/mixed" SIP packet body

2015-11-20 CDR field and statistics for "SDP negotiation - RTP delay" (for someone in Canada)

2015-11-17 CallXML: "readdb" element to use list of numbers from MySQL, MSSQL, PostgreSQL and other databases

2015-11-13 Setting "WinpcapRtpSenderDscpField"

2015-11-11 WebUI: added "Abort all calls" button

2015-11-10 Achieved RTP jitter less than 1ms with new setting "MediaClockUseSpinWait"
CallXML: "dynamicblacklist" element to implement fast RAM-based dynamic blacklists

2015-11-08 Supported SIP headers with same name in SIP messages

2015-10-28 Setting "RecordedWavFilesAudioCodec" for some client who uses SIP Tester as SIPREC recorder
"Max CPS" parameter to control stepwise testing

2015-10-17 Added fields "RTP_Called_MinDelta" and "RTP_Caller_MinDelta" into CDR

2015-10-13 CallXML: "$timeMs();" syntax element to calculate delays in script.

2015-10-02 Settings to set CPU affinity masks for media, SIP threads, and for entire process

2015-10-01 UAC registrations: "expiration interval" setting

2015-09-30 Added a default CallXML variable "answerDelay".
Added new setting "StartCallGeneratorOnStartup".

2015-09-30 Setting "MediaClockPeriodMs" to minimize transmitted RTP jitter when ptime=20ms (requested by someone from Netherlands)

2015-09-25 Implemented pre-caching of audio files

2015-09-22 SIP Tester now is able to run as windows service - start automatically when windows starts

2015-09-19 CallXML: waitForRingbackToneAbsence, requested by client

2015-09-14 Processing Ctrl+C in command-line mode

2015-09-08 Filter for "reports/statistics", allowing to view stats for subset of calls. Added CDR field "Caller IP address"

2015-08-25 Released new version with syntax interpreter for CDR filter and CallXML "test" function

2015-08-23 Developing syntax interpreter for CDR filter and CallXML "test" function. Using test driven development (TDD) method for this particular task, as it can be effective now. Usually I manage quality of code without unit tests, as they are not very effective

2015-08-20 Loading previously saved CDRs from CSV files to view result of tests

2015-08-19 CallXML: "randfile" syntax to play random file from directory (for someone in US, FL)

2015-08-16 Refactoring CSV CDR code to develop reading of CSV CDR files into memory

2015-08-12 UAC registrations: import/export from/to CSV files

2015-08-10 Added option to filter displayed configuration settings by name and description to optimize UX of configuration

2015-08-09 Published settings documentation on the website

2015-08-05 CallXML: $randdigits(number_of_digits); syntax for random CLI generation

2015-07-30 Added option of saving SIP trace as TXT file and saving to clipboard

2015-07-27 CallXML: implemented "less or equal" and "greater or equal" syntax for "if" and "block"

2015-07-27 CallXML: implemented "enabled" attribute to temporarily turn off execution of CallXML elements

2015-07-23 We have just reached stable performance of 8000 concurrent G.711 calls. RTP packets are parsed for 5% of calls. Total RTP bandwidth is 743Mbps in one direction, splitted into 4 ethernet adapters (Intel I350-4) on 4-core i7 machine.

2015-07-19 Setting "DisableRtpPacketAnalysisOnIpAddresses" to turn off RTP packet processing on selected interfaces

2015-07-19 Tested the SIP Tester with 44 million SIP calls (4 days). 4 NICs were used in WinPCAP RTP sender mode, 1 NIC was used for SIP signaling. No crashes, no memory leaks.

2015-07-19 Network Tester: added CSV and GUI history of packet jitter and loss

2015-07-17 Optimized SIP thread: now reaching 1000 calls per second with i7-3770 in "WinPCAP RTP sender" operation mode.
Tested with 16M during 4.5 hours, no memory leaks detected. Peak memory usage was 3.5GB

2015-07-16 Embedded Visual CallXML script editor into SIP Tester desktop GUI

2015-07-13 WebUI: Fixed compatibility of visual CallXML editor with Internet Explorer and Firefox

2015-07-10 Released new version of UDP Network Tester

2015-07-04 WebUI: Visual CallXML editor

2015-06-24 CallXML: "localRtpAddress" and "sendSdp" parameters for "reinvite"

2015-06-20 The unlimited license for the SIP Tester is free for medical organizations (hospitals, research institutes), charity, and nature protection organizations

2015-06-18 CallXML: "waitforringbacktone" element to test SIP trunks and GSM gateways

2015-06-10 Tested and released new media processing mode: "WinPCAP RTP sender". Now bottleneck is in the RTP packet analyser module

2015-06-08 Running the first stress test with our newest WinPCAP-based RTP stack. With ARP cache performance is better than in "lightweight media processing" mode

2015-06-03 Added a "settimeout" CallXML element custom handling of RE-INVITEs (requested by someone in Finland)
Supported partial-RTP-frame delays in real-time audio verification algorithm (for someone in Denmark). The customer has a PSTN network on the way from SIP Tester to IVR server, and it caused uneven delays (not multiple of 10ms RTP frames)

2015-06-02 Added a "reinvite" event for custom handling of RE-INVITEs (requested by someone in Finland)

2015-06-01 Added "localRtpAddress" parameter to "call" and "accept" to handle multiple network interfaces

2015-05-30 Refactoring Packet Analyser to optimize the code and to make it usable by the new RTP sender module

2015-05-28 Design for new module "WinPCAP RTP sender" is ready. It will contain implementation of RTP, UDP, IP and Ethernet (L3) protocols, optimized for periodic RTP transmission with incrementing RTP.sequence and RTP.timestamp fields, leaving all other fields unchanged.

2015-05-24 Added new CDR columns "EarlyMediaPeakSignalLevelDb", "ActiveMediaPeakSignalLevelDb"

2015-05-22 Tested performance of 2 network adapters: TP-link TG-3269 vs. Intel EXPI9301CT. OS: Windows Server 2012 R2. Packets: RTP G.711A, 20ms. CPU: Intel i7-3770. Max bandwidth for both of these cards: 4000 channels, approximately 350Mbps. I expected to see some difference between these NIC's performance, but seems like bottleneck is in Windows or drivers.

2015-05-19 New feature: automatic re-register on failure. Was requested by a customer from US

2015-05-18 Could not achieve good performance with pcap_sendpacket(). Max bandwidth was 12.5Mbps. Extra packets were dropped without CPU load.
pcap_sendqueue_queue() provides much better bandwidth: 330Mbps per adapter. CPU is not a bottleneck for both of these functions.
We are going to develop a new module for faster RTP media transmission, estimated time of development is 1 month.

2015-05-15 CDR database schema verification: automatic creation of table and/or missing columns

2015-05-08 Implemented ringback tone detector. Added CDR field "Latest RBT Delay" which can be used to detect FAS

2015-04-29 CallXML: "on" event handlers now can be located inside current element. For example <call ... > <on event="answer"> .... </on> </call>

2015-04-22 CLI parameter "IncomingCallsExitTimeoutSec"

2015-04-20 Getting CSV delimiter from system regional settings

2015-04-18 Extended "sendsipmessage": added "maxtime", "var", "delayvar". It is helpful for checking availability of SIP servers with "OPTIONS" SIP request

2015-04-17 Implemented DC offset removing in signal detector. It is useful for G711 codec

2015-04-11 CallXML: "graceful" mode for "exitcli" element

2015-04-10 Optimized GUI in SIP Tester: display of current SIP calls

2015-04-06 Supported Google Speech API v2, so it is possible to build speech IVRs with our softswitch

2015-04-04 Added a parameter "debugRecordingThreshold" to "verifyaudio" to debug low confidence scores

2015-04-03 Working on in-memory recording. It is needed to debug low confidence issues in audio verification and to collect data before recognizing voice with Google Speech API v.2

2015-03-30 CallXML: "waitforsilence" element for IVR test scripts

2015-03-26 Optimized real-time audio verification algorithm

2015-03-22 UAC registrations: "add batch" - now you can easily add thousand of extensions

2015-03-21 Added setting "LocalSIPPortRange" - now the software can use a range of local SIP ports. Was requested to register multiple extensions at Cisco Unified Call Manager

2015-03-21 Packet analyzer: implemented TCP packets processing

2015-03-20 Packet analyzer: supported VLAN headers (requested for parsing PCAP files)

2015-03-20 Updated web documentation: published architecture diagram

2015-03-15 Real-time mode for audio verification. In this mode time of verification is calculated automatically

2015-03-13 Improved audio verification algorithm. Now it is faster and more accurate. It can search for a known ("reference") phrase in middle of a long IVR prompt.

2015-03-10 CallXML: "exitcli" element

2015-03-09 Updated web documentation

2015-03-03 Re-designed navigation on the website

2015-03-01 Added settings to configure SMTP server port number and SSL mode
Command line parameter "RetryToOpenLocalSipPort" to avoid hanging of CLI when another program already uses local SIP port

2015-02-28 Updated technical documentation: main tutorial

2015-02-23 CallXML: recordcall parameter "mode" - "rx", "tx", "mix"

2015-02-20 CallXML: Implemented dynamic referencing of variables: "$prefix$indexVar;;" and "$prefix[$indexVar;];". It is also useful for a global cache: "$global.someCache[$cacheEntry;];"

2015-02-19 CallXML: "exec" element, similar to "eval" in JavaScript

2015-02-18 Setting "OverwriteCsvCdrFilesAfterRestart" to create new CSV CDR files after every test, and discard old results
Sending 200 OK response for OPTIONS SIP request, it is used to ping SIP servers

2015-02-17 CallXML: "recordmessage", "searchfile" elements

2015-02-15 CallXML: "eofMode", "rowIndex" parameters for "readcsv"
"$env.x;" syntax to use Windows environment variables in scripts

2015-02-12 CallXML: "enqueue", "dequeue" elements. Needed for a customer to implement advanced ("random") conference VoIP application

2015-02-11 CallXML: "getaudiofilelength" element

2015-02-10 Developed a new fast algorithm for audio verification. Tested with 1200 concurrent G.711 calls on 4x3.4GHz i7 CPU. Old algorithm is replaced by new one.
Defined syntax for default parameter values of functions

2015-02-08 CallXML: "getfilenamefrompath" element.
New functionality for offline .PCAP files debugging and RTP media analysis:
- New CDR field: "audio signal level (dB)" for both entire call duration and early media.
- G.729 and G.711 RTP media streams decoding and exporting into WAV files

2015-02-07 Changed "Total calls per second" calculation: now it uses time between first and last call instead of total measurement time
Developed CallXML "includefunctions" element to build complex IVR tests for one of our clients

2015-02-05 CallXML: added "cache" parameter to "include" element to disable caching when it is not needed

2015-02-03 New feature: import of pcap files with SIP and RTP into SIP Tester. It is useful for offline debugging. SIP Tester parses the files, analyses VoIP quality, builds CDRs and reports

2015-01-27 Created a button to create burst of SIP calls manually.
Having an issue with current "fast" audio verification algorithm. It does not work in case of jitter and/or RTP clock skew. Following example demonstrates it.
Audio verification algorithm illustration
So I am going to develop a better and faster algorithm for IVR audio verification.

2015-01-24 Tested StarTrinity softswitch in B2BUA mode with G.729 pass-through RTP traffic, 800+800 concurrent calls. Results are good. Published report here.
Now working on SIP Tester's documentation. It needs to be updated.

2015-01-22 CallXML: "getstringlength" to operate with length of dialed numbers or any other strings

2015-01-21 CallXML: option to start calls from the middle of CSV file - extended $seq_sip_uri_from_csv() parameters

2015-01-19 SIP Tester command line: added parameters "LogLevel", "OperationMode", "SaveSipPacketsToDisk", "SaveSipAndRtpPacketsToDisk". It is needed to help a customer to run SIP Tester in passive mode (like wireshark) but without GUI to minimize CPU load.

2015-01-16 I started to work in field of GSM SIP box detectors, and anti-detectors. Solution to problem of international VoIP fraud can give profit.

2015-01-15 CallXML: developed "switch", "case", "default" syntax elements for better routing and unit tests

2015-01-11 Optimized DTMF parsing code and some other code in SIP thread.
Re-tested performance of StarTrinity SIP Softswitch. It handles 1750 G.729 channels, 1300 G.711 channels with no problem.

2015-01-10 I see that domain name "startrinity.net" is taken by one of my past prospects. It is very strange, and I don't know his reason for doing it. If you are reading this, please remember that it is startrinity dot com, not startrinity dot net.

2015-01-10 UAS registrations page: added "SIP Trace" button for debugging

2015-01-09 I hear many people telling me about low quality of GUI: there are too many details, there is need to have non-technical-targeted website. I already have in plans to build a wizard-style GUI for SIP Tester. There will be also a GUI framework for editing CallXML scripts.

2015-01-08 Developed "setcallgeneratorparams" CallXML element and "$timeOfDayInHours();" keyword to simulate variable call load. For example, it could be a sinusoid with interval = 24 hours:

<assign var="numberOfConcurrentCalls" mathvalue="120 + 100 * sin(($timeOfDayInHours(); - 10) / 24 * 360)" />
<setcallgeneratorparams maxconcurrentcalls="$numberOfConcurrentCalls;" />

2015-01-08 Set up a default "callerIpAddress" variable, it is needed to restrict SIP calls from unauthorized IP addresses/
StarTrinity SIP Tester is successfully deployed as a softswitch in one more place (Western Asia)

2015-01-07 Fixed issue with MSI installer "auto-healing" which reverted settings

2015-01-03 Developed "UAS registration and authorization" page. This functionality previously existed in the SIP platform, now just added MVVM-level logic, API and UI

2014-12-26 Developed "CDR" web page. A little bit about code and framework:
Client-side code is simple:

<s3table data='MainViewModel/Cdr/DisplayedCalls' width='1000px' height='500px' />
This code is an extension of HTML with special tags: s3Button, s3EditNumber, s3EditText, s3Text, s3Table. Data binding goes directly from HTML extension to server-side C# view-models which are already used for desktop WPF GUI. CDR data is delivered to browser using AJAX XMLHttpRequest; it is generated by server-side viewmodel via an interface IDataElementForHtmlTable:
 interface IDataElementForHtmlTable
 {
  string HtmlTableHeader { get; }
  string HtmlTableRow { get; }
 }

2014-12-25 Developed CDR filter

2014-12-24 Implemented SIP trace view for passive mode in SIP Tester

2014-12-15 Working on CDR filters:
StarTrinity SIP Tester coding - CDR

2014-12-15 Improved performance of CDR datagrid. Added option to hide unnecessary columns

2014-12-13 Made a research of MVVM/C#/XAML -> HTML5/JS web frameworks, but could not any suitable one.

2014-12-10 I am developing a proprietary "StarTrinity Web UI framework". I personally dislike frameworks like ASP.NET MVC, Kendo UI, or WebForms, so building something different on my own.

2014-12-09 Developed CallXML elements to make a pause in test if destination server fails: "startCallGenerator", "movingAveragePut", "movingAverageGet", "movingAverageReset". The feature was requested by a customer from Canada. I am happy to get it done in a short time. Here is a sample script.
3 more customers are waiting for some other features.

2014-12-05 Developed new RTCP VoIP quality CDR fields, history charts. Updated CDR table schema. RTCP fields are calculated in RTP media threads, independently from winpcap threads

2014-11-29 CallXML: added "localRtpPort" parameter to "call" and "accept" for explicit RTP port number assignment

2014-11-26 Added settings "UseAsCaller" and "UseAsCalled" for UAC registrations

2014-11-25 Created a web interface in addition to desktop-based GUI. Web server is hosted inside the process, no IIS setup is needed

2014-11-21 I am working on something new, and I'm not comfortable to publish all the new ideas here before they come alive. Besides that, the SIP Tester got few new RTCP fields in CDR. The RTCP fields should be really useful, because they provide information about VoIP quality which is measured by remote SIP-UA, not only by SIP Tester.

2014-11-20 Added CallXML event "audioSignal" for "call" and "transfer" elements
Implemented sending of RTCP and RTCP-XR reports to third party destination for analysis and monitoring. It is configured with settings "RemoteRtcpMonitorAddress" and "RemoteRtcpMonitorPort"

2014-11-18 Added CDR field "ReleasedBy": "caller" or "called". It identifies which party aborted the call: UAC (caller) or UAS (called)

2014-11-17 Implemented recording of SIP and RTP packets to .pcap files for further debugging. It was requested by many customers.

2014-11-14 Added SIP proxy setting for UAC REGISTER

2014-11-08 Made a research of SIP Tester's performance on virtual machines. Published results here.
Added settings:

  • "DefaultSignalDetectorThresholdDb" to change the threshold which is used for "SignalDelay" CDR field
  • "RecordSilenceWithoutRtp" to put silence into recorded WAV files when no RTP is received yet

2014-11-07 Fixed an issue related to RTCP and NAT. The RTCP packets were sent to incorrect port

2014-11-05 Got an issue of a difference (offset) between system clock and NIC timestamps on a customer's virtual machine. Difference is few minutes, restart of the VM does not help. NIC clock is wrong, system clock is right. To handle this situation I created a setting "UseNicTimestampsForCdr" (default 1) which allows to use system clock instead of NIC's clock.

2014-11-04 Enabled RTCP XR reports. They still contain uninitialized G.107 MOS and R-factor fields.

2014-11-01 Added CDR fields: RTP_Caller_Delay, RTP_Called_Delay - time between INVITE and first RTP packet

2014-10-30 Compiled DLLs for both 64 and 32 bit modes

2014-10-27 Finally moved to .NET 4

2014-10-23 Supported "audio/telephone-event" content type for SIP INFO DTMF packets

2014-10-22

  • Implemented system error notifications by email. Put a limit of 1 email per minute, hard-coded for now
  • CallXML: implemented "repeat" parameter for "inputdigits". It could be useful to play audio prompt in a loop

2014-10-21 Added an option to generate multiple SIP calls in a burst. Developed and tested in an airplane when returning back home

2014-10-19 Added a button to make a pause when generating calls in SIP Tester. This button does not reset CSV file readers. [was requested by a customer]

2014-10-18 Today I was thinking about future development of CallXML. There should be a relatively cheap VoIP platform with many custom apps running on it. The apps will be written in CallXML, they will be maintained and suported by developers. CallXML will be extended to provide web interface for VoIP apps.

2014-10-12 Improved startup time of SIP Tester. Now it takes 5 seconds. Previously it was busy with pre-encoding 20 seconds G.729 silent audio data, now it is only 1 second. Should be enough

2014-10-11 Added "Created" and "Answered" fields to "Current calls SIP info" screen. Previously the fields were only in "Calls History". It was suggested by someone anonymously via a "Feedback"

2014-10-10 Now SIP Tester saves results of testing (CDR records) to a database using ODBC driver. It could be MSSQL, MySQL, MariaDB or any other database with ODBC drivers. Having CDRs in database is useful for many purposes: e.g. if you want to show call quality reports in your own GUI, or if you want to access information about calls in "requestdb" SPs

2014-10-07 The SIP Tester is going to have a web interface soon. It will have an option of running as a windows service

2014-10-06 Supported standard codecs with dynamic payload type (pt <= 96)

2014-10-03 Separated CallXML and system logs in SIP Tester's GUI

2014-09-30 Developed some logic elements for monitoring and restarting a generic Windows SIP Server if it stops to accept SIP calls

2014-09-28 Added an option of sending email reports at specific time of day, with optional reset of statistics after sending email. The email reports are useful to control status of SIP Tester.
Enhanced "block" test condition logic: added "OR" and "AND" syntax elements
Added "if" and "else" syntax elements

2014-09-26 Added jitter and answer delay indicators into status panel, so they are always visible for control [the feature was suggested by someone from Australia]

2014-09-22 Removed a ":" in default User-Agent field, because it conflicts with Zultys IP-PBX

2014-09-22 I made a research of hardware IDs. Here is a list of non-unique (duplicate) MAC addresses:

  • 20:41:53:59:4E:FF
  • 00:50:56:C0:00:08
  • 00:50:56:C0:00:01
  • 50:50:54:50:30:30
  • 33:50:6F:45:30:30
  • 53:4E:57:00:00:00
  • 02:00:4C:4F:4F:50
  • 00:09:0F:FE:00:01
  • 02:00:54:55:4E:01
  • 00:00:00:00:00:00
  • 02:50:41:00:00:01
  • 00:05:9A:3C:78:00
  • 44:45:53:54:4F:53
Actually, none of hardware IDs is 100% reliable for licensing, especially if customers are using virtual machines.

2014-09-21 I am working on a licensing module. There is something to improve in it. It is the time when I should not be fast in design, because I have to maintain backwards compatibility for license keys. There is much of hardware ID statistics collected from clients to analyse.

2014-09-19 Added lower threshold into email alerting module: now it sends email also when call quality becomes normal again

2014-09-18 Developed "measuresignal" CallXML element to analyse received RTP stream

2014-09-17 I got an interesting observation related to G.729 codec: after encoding silence and decoding it, it produces a small defect of -36dB:
A defect of G.729 codec when transcoding silence

2014-09-17 Added "level" parameter to "waitforsignal" to configure threshold of measured signal

2014-09-16 Developed "substring" element for CallXML scripts

2014-09-15 Added CPU load display to the main screen in SIP Tester

2014-09-12 Developed "function" and "runfunction" elements. CallXML is becoming more powerful.

2014-09-11 I have a customer who is extensively using CallXML, developing new features for him:

  • Added "stopaudio" CallXML element to stop audio player which was started asynchronously
  • Added "ifconferenceexists" CallXML element

2014-09-09 Added "getstatistics", "resetstatistics" CallXML elements to access statistics programmatically. It was requested by a customer to build an intelligent router in CallXML

2014-09-08

  • Added "mathvalue" attribute for "assign" CallXML element. It processes numerical expressions like "(6+8)/5+sqrt(4)*9"
  • Implemented $randchoice(option1,option2,option3,...) substitution for scripts
  • Implemented call rate (CPS) threshold for email alerting

2014-09-07 Implemented "less than" and "greater than" conditions for "block" and "goto" CallXML elements

2014-09-07 Added 'syncDestroy' mode for 'conference' CallXML element

2014-09-02 Refactored GUI, added split panels: simulation and results

2014-08-31 Got our 100th customer today, on Sunday. This customer received a license for 2x more concurrent calls as a bonus. New development still takes most of the time, because our efficiency is good enough to support 100 customers.

2014-08-31 'readcsv' now reads CSV file from disk when repeating lines. Previously the lines were not updated in case if file was modified.

2014-08-28 I have an idea of a new and better GUI for SIP Tester. Many customers have requested a possibility of viewing both stress parameters and reports on the same screen.
Prototype of new GUI for SIP Tester

2014-08-26 A customer reported problem with 'writecdr'. This was because of weak code of storing custom CDR fields. I refactored the code, now it works

2014-08-24 Added re-register button

2014-08-23 Implemented automatic backup of settings and CallXML scripts

2014-08-21 Developed GUI for codec settings and RTP playback. Previously it was possible to configure these settings only by editing CallXML script

2014-08-20 Now SIP Tester makes backup of current DLL and EXE files before upgrading its version

2014-08-19 SIP Tester supports Opus at 48kHz, SILK at 12/16/24 kHz, AMR-WB at 8kHz. Checked it with Blink and microsip softphones.

2014-08-18 Working on RTP module to support sample rate other than 8000Hz. It is needed for wideband audio codecs like Opus and Silk. I use "Blink" softphone for interoperability tests, it suports opus@48kHz.

2014-08-18 Installed Ubuntu 14, Asterisk PBX 11.7.0 for performance and stability tests. It crashed after few minutes of 150-channel call load. FreeSWITCH was muc more stable compared to this version of Asterisk. I should write an article about Asterisk vs. FreeSWITCH performance and stability.

2014-08-16 Writing unit tests for CDR reporter, CSV file reader.

2014-08-13 Writing unit tests for SIP Tester's scheduler. I am not using any unit testing framewroks, because they contain almost no logic inside, and because I need some special features which are missing. It is easier to write and maintain own unit testing framework.

2014-08-13 Found an issue related to transition from silent G.723 and G.729 audio frames to non-silent frames. Changed behaviour of RTP module: now G.729 and G.723 silent packets are not transmitted during <wait /> CallXML element

2014-08-12 Still fighting with memory leak of 18 bytes per call, it leaks in a non-basic operation mode.

2014-08-09 Added more features which were requested by for customers: CDR filter by SIP status code and uniform probability distribution of interval between generated SIP calls.

2014-08-07 It looks like I completely fixed memory leaks in SIP Tester. Reason was in BSTR's and SysAllocString. I had to turn off OLE string cache. I will have to do more tests in different modes with at least 20M calls to check it, but now I see that .NET memory is not leaking and that native memory is not leaking. Heaps' sizes are stable during the test so far.

2014-08-04 Added option of custom domain name in "From" SIP header [requested by a customer]

2014-08-01 Defined status code 1408 (NoResponse) for case when aborting SIP call before geting any response from destination

2014-07-28 Added feature of stopping outgoing calls on schedule with manual start [was requested by a customer]. Optimizing code of SIP Tester with VS profiler

2014-07-26 Optimized media processing module: now WSASendTo() takes 71% of CPU time for 2800 G.711 channels, ptime=20ms, 64 media threads, lightweight media processing mode, 25CPS.

2014-07-25 Measured call load capacity of 54Mbps 802.11g WLAN: 24 G.711 channels = 2.1Mbps, it is much less than theoretical 54MBps (3.9%).

2014-07-24 Disabled watchdog timer by default because it takes extra CPU resources and because usually there are no deadlocks in SIP Tester

2014-07-24 Measured RTP round-trip delay over 802.11g wifi network for 2 different distances between endpoints: 1 meter and 3 meters with wall, results are very interesting: connection was better, almost perfect in case of 3 meters. It is all very complicated, requires long-duration tests.

2014-07-22 Measured RTT over LAN, RTT over internet, now measuring RTT over local wireless LAN.
Fixed a bug in call scheduling which was reported by someone in Lebanon.

2014-07-22 Successfully tested FreeSWITCH with 2200 G711 channels. It showed good performance: RTP jitter was fairly low. Reported here

2014-07-21 Observed FreeSWITCH crash again after 2.89 million simulated SIP calls @5.4CPS, 500 pass-through G.711 channels. There was a memory leak of 303MB (from 397MB to 700MB), i.e. 104 bytes per pair of SIP calls (incoming + outgoing).

2014-07-21 Developed "getwg67info" CallXML element to save RX RTP extension data in WG-67 format and to measure round-trip delay from NIC timestamps

2014-07-20 Implemented WG67 PTT-type RTP loopback connections to measure round-trip RTP audio delay. This delay is controlled during ED-137 performance testing of air traffic management (ATM) VoIP networks in airports.

2014-07-19 Added settings for recorded WAV file names: "RecordedWavFileNamePattern" and "DebugMediaFileNamePattern". It was requested by a customer.
..FreeSWITCH passed 1.42 million calls, RTP jitter is OK. Answer delay is not OK: it was up to 21 second. Memory has increased from 380MB to 508MB - probably there are memory leaks in FreeSWITCH.
In next few months I am going to carry out massive load tests with FreeSWITCH, Asterisk, FPBX, Kamailio and some other software

2014-07-18 Added "contentType" attribute to "sendsipinfo" CallXML element. Example: <sendsipinfo value="the text" contentType="text/plain" />
FreeSwitch is still alive with 500 G.711 pass-through channels, 1.14 million SIP calls

2014-07-18 Removed option of license without link to machine ID because I noticed unauthorized usage of SIP Tester by some third parties who did not purchase any licenses.

2014-07-17 Oops, FreeSwitch crashed! It could pass only 1063151 SIP calls.
FreeSwitch crash with more than million SIP calls
I could investigate reason of crashing with Visual Studio debugging, but I have no time for this right now. Exception code is 0xc0000005 - access violation.
I am continuing test with 500 G.711 channels, 9 calls per second. It is a basic test with passthrough codec.. I wonder how often it will crash with more complicated logic - IVR, recording, media transcoding

2014-07-16 Now SIP Tester passes remote SDP attributes into CallXML variables. It is needed for ED-137 tests

2014-07-16 Testing FreeSwitch 1.5.12-64bit with 800 G.711A channels, 14 calls per second, passthru mode, Windows Server 2012. 1 million calls - still no crashes, no memory leaks. FreeSwitchConsole.exe takes 640MB. Will continue the test.

2014-07-15 Fixed mode "Make calls via least busy UAC registration" - now it does not make calls with same 'From' and 'To' SIP headers

2014-07-13 Successfully generated a SIP call with Speex codec, 8kHz (dynamic payload type)

2014-07-11 'setrtpextension' CallXML element is ready, released new version. Next steps of development are: 1) pass SDP attributes to CalLXML variables 2) implement PTT-SQU loop 3) measure PTT-SQU response delay based on NIC timestamps

2014-07-09 Working on 'setrtpextension' CallXML element. It will turn on/off RTP extension data in transmitted RTP stream. The element will be used to simulate SIP UAC and UAS endpoints for EUROCAE WG67 ED-137 VoIP software testing.

2014-07-07 A customer had a problem with memory leaks on his server, and he suspected that it was SIP Tester. In fact, SIP Tester consumed only 160MB for 4000 calls during 2 days of operation. Reason was in svchost.exe, which took all the memory.

2014-07-07 Passed test with 834K GSM calls (70 channels, 4 days 4 hours, 2.3 calls per second) - no crashes, 229 MB memory consumed at end of the test. Performance of playing .pcap files should be improved.

2014-07-03 SIP Tester successfully played .pcap file with GSM RTP codec (payload type = 3)

2014-07-01 Tested new version with 14 million SIP calls at 144CPS during 1 day and 3 hours. No crashes.

2014-06-30 Added settings DeclareG711AInSDP, DeclareG711UInSDP, DeclareG723InSDP, DeclareG729InSDP. Started to work on playing audio RTP from .pcap files, hereby supporting any audio/video codec

2014-06-30 Finished test: there is still a memory leak of 46 bytes per 1 SIP call. Tested @100CPS, 9M calls.

2014-06-29 Fixed RFC4028 implementation. Added option of exporting/importing setings from/to XML file. Added 2 modes of current calls limit: "outgoing+incoming" (default), "outgoing only".

2014-06-28 Thanks to Frequentis AG, they helped me to find an issue in implementation of RFC 4028 (Session Timers). Fixing it now.

2014-06-27 Discovered memory leak of 547 bytes and 2.5 packets per SIP call. It is related to new feature of saving packets to memory. ... Fixed this leak, it was in C++ code, linkedlist.hpp. C# destructors seem to be reliable, they cause no leaks. Will run more tests at night.

2014-06-27 Improved GUI for incoming CallXML script: made delay before answering optional. It can be turned off now. [this was requested by Frequentis AG, Austria]

2014-06-26 Exported first .pcap file with SIP and RTP packets

2014-06-25 Today I've started to work on saving packets into memory and later into .pcap file. The new feature will be disabled by default, it will be turned on using settings: "[bool] save SIP packets to memory" "[bool] save RTP packets to memory", "[bool] save to file [from memory]", "[bool] save to file [from memory]"

2014-06-20 I discovered an interesting ratio in my business analytics system's report: 54% of SIP Tester customers use CallXML scripts instead of GUI. This could mean 2 things: 1 - default scripts which are represented by GUI are very limited; 2 - CallXML is easy to use. In 2009, when I started to implement CallXML, I could not even imagine that customers would be able to use it directly without GUI.

2014-05-24 I performed several tests with same hardware and 3 different operating systems: Windows 7, Windows Server 2008 R2, Windows Server 2012. Different networking operations were tested: receiving, sending packets using winsockets, and sniffing packets using winpcap. It turned out that IP stack of Windows 7 is not able to operate with more than 50MBps of UDP traffic without packet losses (drops).

Copyright 2011-2024 StarTrinity.com | Blog | Contact lead developer via LinkedIn |