Hello,
I want to announce the availability of sipexer v1.0.0 - a sip cli tool that can facilitate testing and monitoring of SIP signalling systems. It tries to have a modern approach, with a flexible templating system, supporting both IPv4 and IPv6 with all the common transport layers, respectively UDP, TCP, TLS and WebSocket (for WebRTC).
The project can be found at:
* https://github.com/miconda/sipexer
It is written in Go language for better portability, binaries for Linux, MacOS and Windows are made available for download in the release page:
* https://github.com/miconda/sipexer/releases/tag/v1.0.0
Among its features:
* send OPTIONS request (quick SIP ping to check if server is alive) * do registration and un-registration with customized expires value and contact URI * authentication with plain or HA1 passwords * set custom SIP headers * template system for building SIP requests * fields in the templates can be set via command line parameters or a JSON file * variables for setting field values (e.g., random number, data, time, environment variables, uuid, random string, …) * simulate SIP calls at signalling layer (INVITE-wait-BYE) * respond to requests coming during SIP calls (e.g., OPTIONS keepalives) * send instant messages with SIP MESSAGE requests * color output mode for easier troubleshooting * support for many transport layers: IPv4 and IPv6, UDP, TCP, TLS and WebSocket (for WebRTC) * send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Cheers, Daniel
Hello Daniel,
Very nice tool! Thank you for sharing!
-ovidiu
On Mon, Feb 14, 2022 at 09:02 Daniel-Constantin Mierla daniel@asipto.com wrote:
Hello,
I want to announce the availability of sipexer v1.0.0 - a sip cli tool that can facilitate testing and monitoring of SIP signalling systems. It tries to have a modern approach, with a flexible templating system, supporting both IPv4 and IPv6 with all the common transport layers, respectively UDP, TCP, TLS and WebSocket (for WebRTC).
The project can be found at:
It is written in Go language for better portability, binaries for Linux, MacOS and Windows are made available for download in the release page:
Among its features:
- send OPTIONS request (quick SIP ping to check if server is alive)
- do registration and un-registration with customized expires value
and contact URI
- authentication with plain or HA1 passwords
- set custom SIP headers
- template system for building SIP requests
- fields in the templates can be set via command line parameters or a
JSON file
- variables for setting field values (e.g., random number, data,
time, environment variables, uuid, random string, …)
- simulate SIP calls at signalling layer (INVITE-wait-BYE)
- respond to requests coming during SIP calls (e.g., OPTIONS keepalives)
- send instant messages with SIP MESSAGE requests
- color output mode for easier troubleshooting
- support for many transport layers: IPv4 and IPv6, UDP, TCP, TLS and
WebSocket (for WebRTC)
- send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Cheers, Daniel
-- Daniel-Constantin Mierla http://www.asipto.com
Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
Daniel-Constantin Mierla writes:
WebSocket (for WebRTC) * send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Thanks for the tool. Regarding SIP over WebSocket, baresip supports WebSocket transport in all platforms.
-- Juha
I haven’t had a chance to dig into it just yet, but this is an incredibly exciting development, and fills a very dire gap in open-source testing tools.
SIPp was the only real game in town and, despite some very creative efforts over the years, fundamentally is not composable: it doesn’t lend itself to headless automation or embedding in CI pipelines, and isn’t terribly useful for monitoring. The remainder is a miscellany of relatively unsophisticated or quirky tools, none of which have the flexibility you are providing here.
Very grateful that you wrote this, and excited to try it! Thank you so much for this work!
— Alex
On Feb 14, 2022, at 1:23 PM, Juha Heinanen jh@tutpro.com wrote:
Daniel-Constantin Mierla writes:
WebSocket (for WebRTC)
- send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Thanks for the tool. Regarding SIP over WebSocket, baresip supports WebSocket transport in all platforms.
-- Juha
Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
Probably it requires some hammering to make it compatible with various CI pipelines, I tried to make a mode for nagious plugin, but coding in golang should make it easy to adapt/enhance.
I plan to add a few more common scenarios for session testing. Right now can do register-wait-unregister and invite/200ok-ack-wait-bye.
One that is my to-do is to register two users and make a call between them. Another one would be to register and wait for calls, so another sipexer instance can be used for register and initiate calls.
Writing the sip traffic in a pcap file is something that I would like to add as well.
Cheers, Daniel
On 14.02.22 19:27, Alex Balashov wrote:
I haven’t had a chance to dig into it just yet, but this is an incredibly exciting development, and fills a very dire gap in open-source testing tools.
SIPp was the only real game in town and, despite some very creative efforts over the years, fundamentally is not composable: it doesn’t lend itself to headless automation or embedding in CI pipelines, and isn’t terribly useful for monitoring. The remainder is a miscellany of relatively unsophisticated or quirky tools, none of which have the flexibility you are providing here.
Very grateful that you wrote this, and excited to try it! Thank you so much for this work!
— Alex
On Feb 14, 2022, at 1:23 PM, Juha Heinanen jh@tutpro.com wrote:
Daniel-Constantin Mierla writes:
WebSocket (for WebRTC)
- send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Thanks for the tool. Regarding SIP over WebSocket, baresip supports WebSocket transport in all platforms.
-- Juha
Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
-- Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free) Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
Certainly, but 90% of the various use-cases are covered by the invite scenario. Extensive compatibility with various CI tooling isn’t really required in my mind; as long as it can return positive or negative values depending on the outcome of the SIP request, it’s perfect.
The real value is in the fact that it’s a true CLI tool, and the ability to formulate misshapen requests using Go templates. That’s beautiful!
Another great thing is that you appear to have exposed your ad hoc SIP parser as a module, which means it could potentially be imported and used in other tools.
— Sent from mobile, with due apologies for brevity and errors.
On Feb 14, 2022, at 1:51 PM, Daniel-Constantin Mierla miconda@gmail.com wrote:
Probably it requires some hammering to make it compatible with various CI pipelines, I tried to make a mode for nagious plugin, but coding in golang should make it easy to adapt/enhance.
I plan to add a few more common scenarios for session testing. Right now can do register-wait-unregister and invite/200ok-ack-wait-bye.
One that is my to-do is to register two users and make a call between them. Another one would be to register and wait for calls, so another sipexer instance can be used for register and initiate calls.
Writing the sip traffic in a pcap file is something that I would like to add as well.
Cheers, Daniel
On 14.02.22 19:27, Alex Balashov wrote: I haven’t had a chance to dig into it just yet, but this is an incredibly exciting development, and fills a very dire gap in open-source testing tools.
SIPp was the only real game in town and, despite some very creative efforts over the years, fundamentally is not composable: it doesn’t lend itself to headless automation or embedding in CI pipelines, and isn’t terribly useful for monitoring. The remainder is a miscellany of relatively unsophisticated or quirky tools, none of which have the flexibility you are providing here.
Very grateful that you wrote this, and excited to try it! Thank you so much for this work!
— Alex
On Feb 14, 2022, at 1:23 PM, Juha Heinanen jh@tutpro.com wrote:
Daniel-Constantin Mierla writes:
WebSocket (for WebRTC)
- send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Thanks for the tool. Regarding SIP over WebSocket, baresip supports WebSocket transport in all platforms.
-- Juha
Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
-- Alex Balashov | Principal | Evariste Systems LLC
Tel: +1-706-510-6800 / +1-800-250-5920 (toll-free) Web: http://www.evaristesys.com/, http://www.csrpswitch.com/
Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev
-- Daniel-Constantin Mierla -- www.asipto.com www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio Advanced Training - Online Feb 21-24, 2022 (America Timezone)
Another great thing is that you appear to have exposed your ad hoc SIP parser as a module, which means it could potentially be imported and used in other tools.
There didn't seem to be many SIP parsers when I looked when I chose C instead of Go to use libosip2 which is very, very mature.
Looking forward to trying this in my GitHub Actions as I was about to plumb in SIPp scenarios:
https://github.com/SentryPeer/SentryPeer/actions
I also looked at Rust SIP crates, not many either...
Nice work.
Thanks, Gavin.
On 14.02.22 19:23, Juha Heinanen wrote:
Daniel-Constantin Mierla writes:
WebSocket (for WebRTC) * send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Thanks for the tool. Regarding SIP over WebSocket, baresip supports WebSocket transport in all platforms.
baresip is more like a proper SIP phone (which is great and I use it for such purpose), but I don't think it has the option to "forge" any kind of SIP request. The sipexer is a result of not having enough time to (fully understand and then) code C/C++ for sipsak to add websocket support (plus a few other like IPv6, more TLS flexibility).
I wrote a couple of years ago wsctl to be able to do testing over websocket from cli, I don't think baresip had support for websocket at that time, anyhow my need was mainly to be able to reproduce by sending SIP traffic from a previous capture) and a few months ago I decided to start a more sip-oriented tool written in golang, considering is faster development due to embedded tls support and easier websocket integration (also hoping that contributions will be easier in golang than c/c++ nowadays from the new generation).
sipexer has to be seen as a sip cli tool, not as a sip softphone, there is no media/audio support.
Cheers, Daniel
Glorious!!!!!
Thanks a lot Daniel, very very very much appreciated!!!
-giovanni
On Mon, Feb 14, 2022 at 7:42 PM Daniel-Constantin Mierla miconda@gmail.com wrote:
On 14.02.22 19:23, Juha Heinanen wrote:
Daniel-Constantin Mierla writes:
WebSocket (for WebRTC)
- send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Thanks for the tool. Regarding SIP over WebSocket, baresip supports WebSocket transport in all platforms.
baresip is more like a proper SIP phone (which is great and I use it for such purpose), but I don't think it has the option to "forge" any kind of SIP request. The sipexer is a result of not having enough time to (fully understand and then) code C/C++ for sipsak to add websocket support (plus a few other like IPv6, more TLS flexibility).
I wrote a couple of years ago wsctl to be able to do testing over websocket from cli, I don't think baresip had support for websocket at that time, anyhow my need was mainly to be able to reproduce by sending SIP traffic from a previous capture) and a few months ago I decided to start a more sip-oriented tool written in golang, considering is faster development due to embedded tls support and easier websocket integration (also hoping that contributions will be easier in golang than c/c++ nowadays from the new generation).
sipexer has to be seen as a sip cli tool, not as a sip softphone, there is no media/audio support.
Cheers, Daniel
-- Daniel-Constantin Mierla -- www.asipto.com www.twitter.com/miconda -- www.linkedin.com/in/miconda Kamailio Advanced Training - Online Feb 21-24, 2022 (America Timezone)
Kamailio - Users Mailing List - Non Commercial Discussions
- sr-users@lists.kamailio.org
Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
Very cool Daniel, thank you!
Federico
On Mon, Feb 14, 2022 at 3:02 PM Daniel-Constantin Mierla daniel@asipto.com wrote:
Hello,
I want to announce the availability of sipexer v1.0.0 - a sip cli tool that can facilitate testing and monitoring of SIP signalling systems. It tries to have a modern approach, with a flexible templating system, supporting both IPv4 and IPv6 with all the common transport layers, respectively UDP, TCP, TLS and WebSocket (for WebRTC).
The project can be found at:
It is written in Go language for better portability, binaries for Linux, MacOS and Windows are made available for download in the release page:
Among its features:
- send OPTIONS request (quick SIP ping to check if server is alive)
- do registration and un-registration with customized expires value
and contact URI
- authentication with plain or HA1 passwords
- set custom SIP headers
- template system for building SIP requests
- fields in the templates can be set via command line parameters or a
JSON file
- variables for setting field values (e.g., random number, data,
time, environment variables, uuid, random string, …)
- simulate SIP calls at signalling layer (INVITE-wait-BYE)
- respond to requests coming during SIP calls (e.g., OPTIONS keepalives)
- send instant messages with SIP MESSAGE requests
- color output mode for easier troubleshooting
- support for many transport layers: IPv4 and IPv6, UDP, TCP, TLS and
WebSocket (for WebRTC)
- send SIP requests of any type (e.g., INFO, SUBSCRIBE, NOTIFY, …)
One usage example that could ease the testing of Kamailio is initiating registrations or simulating calls over WebSocket without the need of having a JavaScript soft phone application running in a web browser.
Cheers, Daniel
-- Daniel-Constantin Mierla http://www.asipto.com
Kamailio (SER) - Development Mailing List sr-dev@lists.kamailio.org https://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-dev