SlideShare a Scribd company logo
1 of 65
Download to read offline
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Load Testing of SIP and WebRTC Infrastructures
Lorenzo Miniero
@elminiero
Kamailio World
8th May 2017,
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Outline
1 A brief introduction
2 Load Testing of SIP Infrastructures
SIPp: a SIP protocol test tool
3 Bringing WebRTC into the picture
The problem: getting SIP and WebRTC to like each other
Testing the “pane e puparuoli” way: tabs tabs tabs!
A cluster of browsers: SeleniumHQ
Native solutions: a look at Jattack
Can WebRTC compliant servers help?
4 Questions/Comments
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
You may remember me from last year!
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What’s Meetecho?
• A company born in 2009 as an academic spin-off
• University research efforts brought to the market
• Proudly brewed in sunny Napoli, Italy
• Focus on real-time multimedia applications
• Web conferencing only, at first
• Then widened the scope to multimedia in general
• Strong perspective on standardization and open source
• WebRTC rulez!
• Several activities
• Consulting services
• Commercial support & licenses
• Streaming of live events (e.g., IETF, ACM SIGCOMM, ...)
• Products (conferencing, webinar, ...)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What’s Meetecho?
• A company born in 2009 as an academic spin-off
• University research efforts brought to the market
• Proudly brewed in sunny Napoli, Italy
• Focus on real-time multimedia applications
• Web conferencing only, at first
• Then widened the scope to multimedia in general
• Strong perspective on standardization and open source
• WebRTC rulez!
• Several activities
• Consulting services
• Commercial support & licenses
• Streaming of live events (e.g., IETF, ACM SIGCOMM, ...)
• Products (conferencing, webinar, ...)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What’s Meetecho?
• A company born in 2009 as an academic spin-off
• University research efforts brought to the market
• Proudly brewed in sunny Napoli, Italy
• Focus on real-time multimedia applications
• Web conferencing only, at first
• Then widened the scope to multimedia in general
• Strong perspective on standardization and open source
• WebRTC rulez!
• Several activities
• Consulting services
• Commercial support & licenses
• Streaming of live events (e.g., IETF, ACM SIGCOMM, ...)
• Products (conferencing, webinar, ...)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
(*
Napoli looks a bit like this...)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Load Testing of SIP Infrastructures
• Typically, a few different objectives
• How many SIP sessions can my service handle?
• How many calls per second, and how many concurrent calls?
• Does the number change when media is involved?
• Programmable and customizable are important requirements
• Not all the calls are the same
• Different applications, different scenarios
• Custom headers/fields may be involved
• Several popular tools available for the purpose
• SIPp: a SIP protocol test tool
• https://github.com/SIPp/sipp
• Seagull: an Open Source Multi-protocol traffic generator
• http://gull.sourceforge.net/
• Many other solutions (often proprietary though)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Load Testing of SIP Infrastructures
• Typically, a few different objectives
• How many SIP sessions can my service handle?
• How many calls per second, and how many concurrent calls?
• Does the number change when media is involved?
• Programmable and customizable are important requirements
• Not all the calls are the same
• Different applications, different scenarios
• Custom headers/fields may be involved
• Several popular tools available for the purpose
• SIPp: a SIP protocol test tool
• https://github.com/SIPp/sipp
• Seagull: an Open Source Multi-protocol traffic generator
• http://gull.sourceforge.net/
• Many other solutions (often proprietary though)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Load Testing of SIP Infrastructures
• Typically, a few different objectives
• How many SIP sessions can my service handle?
• How many calls per second, and how many concurrent calls?
• Does the number change when media is involved?
• Programmable and customizable are important requirements
• Not all the calls are the same
• Different applications, different scenarios
• Custom headers/fields may be involved
• Several popular tools available for the purpose
• SIPp: a SIP protocol test tool
• https://github.com/SIPp/sipp
• Seagull: an Open Source Multi-protocol traffic generator
• http://gull.sourceforge.net/
• Many other solutions (often proprietary though)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SIPp: a SIP protocol test tool
• Open source SIP traffic generator
• https://github.com/SIPp/sipp
• De-facto standard tool for generating SIP traffic, with or without media
• XML files to design testing session
• Expected sequence of SIP messages, and how to react
• Variables for custom fields (e.g., addresses, usernames, etc.)
• Tool comes with some pre-compiled scenarios (e.g., UAC vs. UAS)
• Several options to customize session, even in real-time
• Call rate, period, overall number of calls, etc.
• Media can be sent as well
• Replay of pre-captured pcap files (e.g., RTP content)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SIPp: a SIP protocol test tool
• Open source SIP traffic generator
• https://github.com/SIPp/sipp
• De-facto standard tool for generating SIP traffic, with or without media
• XML files to design testing session
• Expected sequence of SIP messages, and how to react
• Variables for custom fields (e.g., addresses, usernames, etc.)
• Tool comes with some pre-compiled scenarios (e.g., UAC vs. UAS)
• Several options to customize session, even in real-time
• Call rate, period, overall number of calls, etc.
• Media can be sent as well
• Replay of pre-captured pcap files (e.g., RTP content)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SIPp: a SIP protocol test tool
• Open source SIP traffic generator
• https://github.com/SIPp/sipp
• De-facto standard tool for generating SIP traffic, with or without media
• XML files to design testing session
• Expected sequence of SIP messages, and how to react
• Variables for custom fields (e.g., addresses, usernames, etc.)
• Tool comes with some pre-compiled scenarios (e.g., UAC vs. UAS)
• Several options to customize session, even in real-time
• Call rate, period, overall number of calls, etc.
• Media can be sent as well
• Replay of pre-captured pcap files (e.g., RTP content)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SIPp: a SIP protocol test tool
• Open source SIP traffic generator
• https://github.com/SIPp/sipp
• De-facto standard tool for generating SIP traffic, with or without media
• XML files to design testing session
• Expected sequence of SIP messages, and how to react
• Variables for custom fields (e.g., addresses, usernames, etc.)
• Tool comes with some pre-compiled scenarios (e.g., UAC vs. UAS)
• Several options to customize session, even in real-time
• Call rate, period, overall number of calls, etc.
• Media can be sent as well
• Replay of pre-captured pcap files (e.g., RTP content)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SIPp: a SIP protocol test tool
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SIPp XML example: a UAC
<?xml version="1.0" encoding="ISO-8859-1" ?>
<!DOCTYPE scenario SYSTEM "sipp.dtd">
<scenario name="UAC with media">
<send retrans="500">
[..INVITE..]
</send>
<recv response="100" optional="true">
</recv>
<recv response="180" optional="true">
</recv>
<recv response="200" rtd="true" crlf="true">
</recv>
<send>
[..ACK..]
</send>
<pause milliseconds="30000"/>
<send retrans="500">
[..BYE..]
</send>
<recv response="200" crlf="true">
</recv>
</scenario>
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SIPp XML example: a UAC
<send retrans="500">
<![CDATA[
INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0
Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch]
From: pippozzo <sip:pippozzo@[local_ip]:[local_port]>;tag=[call_number]
To: [service] <sip:[service]@[remote_ip]:[remote_port]>
X-Custom-Header-ID: xyz
Call-ID: [call_id]
CSeq: 1 INVITE
Contact: sip:pippozzo@[local_ip]:[local_port]
Max-Forwards: 70
Subject: AudioConf Test
Content-Type: application/sdp
Content-Length: [len]
v=0
o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip]
s=-
c=IN IP[local_ip_type] [local_ip]
t=0 0
m=audio [auto_media_port] RTP/AVP 8
a=rtpmap:8 PCMA/8000
a=rtpmap:101 telephone-event/8000
a=fmtp:101 0-11,16
]]>
</send>
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SIPp XML example: a UAC
<!-- Pause 8 seconds, which is approximately the -->
<!-- duration of the PCAP file -->
<pause milliseconds="8000"/>
<!-- Play a pre-recorded PCAP file (RTP stream) -->
<nop>
<action>
<exec play_pcap_audio="/usr/share/sipp/pcap/g711a.pcap"/>
</action>
</nop>
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Making things easier with SIPp
• SIPp is very powerful
• ... but designing XML files can be a drag!
• A couple of tools can help with that
• Sippy Cup
• SIPp helper tool, written in Ruby
• Can generate SIPp load test profiles and the corresponding pcap media
• http://mojolingo.github.io/sippy_cup/
• What about a web frontend?
• http://sipp.sourceforge.net/web_frontend/
• https://github.com/mojolingo/SIPTreadmill (Sippy Cup authors)
• https://github.com/SIPp/pysipp ("SIPp for Humans" )
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Making things easier with SIPp
• SIPp is very powerful
• ... but designing XML files can be a drag!
• A couple of tools can help with that
• Sippy Cup
• SIPp helper tool, written in Ruby
• Can generate SIPp load test profiles and the corresponding pcap media
• http://mojolingo.github.io/sippy_cup/
• What about a web frontend?
• http://sipp.sourceforge.net/web_frontend/
• https://github.com/mojolingo/SIPTreadmill (Sippy Cup authors)
• https://github.com/SIPp/pysipp ("SIPp for Humans" )
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Making things easier with SIPp
• SIPp is very powerful
• ... but designing XML files can be a drag!
• A couple of tools can help with that
• Sippy Cup
• SIPp helper tool, written in Ruby
• Can generate SIPp load test profiles and the corresponding pcap media
• http://mojolingo.github.io/sippy_cup/
• What about a web frontend?
• http://sipp.sourceforge.net/web_frontend/
• https://github.com/mojolingo/SIPTreadmill (Sippy Cup authors)
• https://github.com/SIPp/pysipp ("SIPp for Humans" )
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Web frontend example: SIP Treadmill
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
The problem: getting SIP and WebRTC to like each other
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
The problem: getting SIP and WebRTC to like each other
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Bridging the gap: the WebRTC protocol suite
• Signalling (well, sort of) and Negotiation
• Javascript Session Establishment Protocol (JSEP)
• Session Description Protocol (SDP) adaptation
• Connection Establishment and NAT Traversal
• Session Traversal Utilities for NAT (STUN)
• Traversal Using Relay NAT (TURN)
• Interactive Connectivity Establishment (ICE)
• Media Transport and Control
• Real-time Transport (and Control) Protocol (RTP/RTCP)
• Secure Extensions to RTP (SRTP)
• Datagram Transport Layer Security (DTLS)
• Multimedia codecs
• Opus audio codec (MTI, Mandatory-to-implement)
• VP8 and H.264 video codecs (MTI, Mandatory-to-implement)
• Generic Data
• WebRTC Data Channels (SCTP)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Bridging the gap: the WebRTC protocol suite
• Signalling (well, sort of) and Negotiation
• Javascript Session Establishment Protocol (JSEP)
• Session Description Protocol (SDP) adaptation
• Connection Establishment and NAT Traversal
• Session Traversal Utilities for NAT (STUN)
• Traversal Using Relay NAT (TURN)
• Interactive Connectivity Establishment (ICE)
• Media Transport and Control
• Real-time Transport (and Control) Protocol (RTP/RTCP)
• Secure Extensions to RTP (SRTP)
• Datagram Transport Layer Security (DTLS)
• Multimedia codecs
• Opus audio codec (MTI, Mandatory-to-implement)
• VP8 and H.264 video codecs (MTI, Mandatory-to-implement)
• Generic Data
• WebRTC Data Channels (SCTP)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What makes SIP+WebRTC testing harder?
• First of all, simulating users is not trivial...
• ... they’re not just web users
• ... they’re not “regular” SIP clients either
• Approaches like SIPp wouldn’t work
• They might work for the signalling part...
• ... but pcap files would NOT mix well with ICE/DTLS/SRTP
• WebRTC too dynamic in nature to just replay traffic
• Stressing tools for HTTP/WS exist, but they don’t account for WebRTC
• JMeter, Siege, HTTPerf etc. very good at generating HTTP traffic
• ... but then how do you create PeerConnections and/or exchange media?
• PhantomJS could handle dynamic application, but not the WebRTC part
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What makes SIP+WebRTC testing harder?
• First of all, simulating users is not trivial...
• ... they’re not just web users
• ... they’re not “regular” SIP clients either
• Approaches like SIPp wouldn’t work
• They might work for the signalling part...
• ... but pcap files would NOT mix well with ICE/DTLS/SRTP
• WebRTC too dynamic in nature to just replay traffic
• Stressing tools for HTTP/WS exist, but they don’t account for WebRTC
• JMeter, Siege, HTTPerf etc. very good at generating HTTP traffic
• ... but then how do you create PeerConnections and/or exchange media?
• PhantomJS could handle dynamic application, but not the WebRTC part
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What makes SIP+WebRTC testing harder?
• First of all, simulating users is not trivial...
• ... they’re not just web users
• ... they’re not “regular” SIP clients either
• Approaches like SIPp wouldn’t work
• They might work for the signalling part...
• ... but pcap files would NOT mix well with ICE/DTLS/SRTP
• WebRTC too dynamic in nature to just replay traffic
• Stressing tools for HTTP/WS exist, but they don’t account for WebRTC
• JMeter, Siege, HTTPerf etc. very good at generating HTTP traffic
• ... but then how do you create PeerConnections and/or exchange media?
• PhantomJS could handle dynamic application, but not the WebRTC part
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Testing the “pane e puparuoli” way
• The first approach that comes to mind: just open multiple tabs!
• WebRTC applications are web applications
• Unlike softphones, quite easy to open more tabs for more “calls”
• Besides, JavaScript allows for easy programmability
• e.g., custom page that generates multiple calls
• As it is, not very scalable of course...
• You can only open so many tabs yourself
• Local resources and/or browser connection limits may be exhausted
• Fake devices can help, here, but only up to a point
• Friends can help, but how many can you bother?
• Sounds very silly and naive (and it probably is)
• ... but as we’ll see in a minute, not that much!
• (what if this could be automated and “remotized”?)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Testing the “pane e puparuoli” way
• The first approach that comes to mind: just open multiple tabs!
• WebRTC applications are web applications
• Unlike softphones, quite easy to open more tabs for more “calls”
• Besides, JavaScript allows for easy programmability
• e.g., custom page that generates multiple calls
• As it is, not very scalable of course...
• You can only open so many tabs yourself
• Local resources and/or browser connection limits may be exhausted
• Fake devices can help, here, but only up to a point
• Friends can help, but how many can you bother?
• Sounds very silly and naive (and it probably is)
• ... but as we’ll see in a minute, not that much!
• (what if this could be automated and “remotized”?)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Testing the “pane e puparuoli” way
• The first approach that comes to mind: just open multiple tabs!
• WebRTC applications are web applications
• Unlike softphones, quite easy to open more tabs for more “calls”
• Besides, JavaScript allows for easy programmability
• e.g., custom page that generates multiple calls
• As it is, not very scalable of course...
• You can only open so many tabs yourself
• Local resources and/or browser connection limits may be exhausted
• Fake devices can help, here, but only up to a point
• Friends can help, but how many can you bother?
• Sounds very silly and naive (and it probably is)
• ... but as we’ll see in a minute, not that much!
• (what if this could be automated and “remotized”?)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SeleniumHQ – Web Browser Automation
• Opening tons of browsers/tabs locally and manually doesn’t scale well...
SeleniumHQ
• http://www.seleniumhq.org/
• Tool for browser automation
• Web applications are scriptable by definition (and can collect stats)
• Remotely controlled browser instances to open those
• Scenario can be programmed in different languages (e.g., Java, Python, etc.)
• Uses WebDrivers for different browsers
• Fake devices help automate media capture (and permissions)
• Tricks exist to start browsers “headless” too (e.g., Xvfb)
• Side note: will Headless Chromium help even more here?
• Foundation for some commercial services too (e.g., testRTC)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SeleniumHQ – Web Browser Automation
• Opening tons of browsers/tabs locally and manually doesn’t scale well...
SeleniumHQ
• http://www.seleniumhq.org/
• Tool for browser automation
• Web applications are scriptable by definition (and can collect stats)
• Remotely controlled browser instances to open those
• Scenario can be programmed in different languages (e.g., Java, Python, etc.)
• Uses WebDrivers for different browsers
• Fake devices help automate media capture (and permissions)
• Tricks exist to start browsers “headless” too (e.g., Xvfb)
• Side note: will Headless Chromium help even more here?
• Foundation for some commercial services too (e.g., testRTC)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SeleniumHQ – Web Browser Automation
• Opening tons of browsers/tabs locally and manually doesn’t scale well...
SeleniumHQ
• http://www.seleniumhq.org/
• Tool for browser automation
• Web applications are scriptable by definition (and can collect stats)
• Remotely controlled browser instances to open those
• Scenario can be programmed in different languages (e.g., Java, Python, etc.)
• Uses WebDrivers for different browsers
• Fake devices help automate media capture (and permissions)
• Tricks exist to start browsers “headless” too (e.g., Xvfb)
• Side note: will Headless Chromium help even more here?
• Foundation for some commercial services too (e.g., testRTC)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SeleniumHQ – Web Browser Automation
• Opening tons of browsers/tabs locally and manually doesn’t scale well...
SeleniumHQ
• http://www.seleniumhq.org/
• Tool for browser automation
• Web applications are scriptable by definition (and can collect stats)
• Remotely controlled browser instances to open those
• Scenario can be programmed in different languages (e.g., Java, Python, etc.)
• Uses WebDrivers for different browsers
• Fake devices help automate media capture (and permissions)
• Tricks exist to start browsers “headless” too (e.g., Xvfb)
• Side note: will Headless Chromium help even more here?
• Foundation for some commercial services too (e.g., testRTC)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SeleniumHQ – Web Browser Automation
• Opening tons of browsers/tabs locally and manually doesn’t scale well...
SeleniumHQ
• http://www.seleniumhq.org/
• Tool for browser automation
• Web applications are scriptable by definition (and can collect stats)
• Remotely controlled browser instances to open those
• Scenario can be programmed in different languages (e.g., Java, Python, etc.)
• Uses WebDrivers for different browsers
• Fake devices help automate media capture (and permissions)
• Tricks exist to start browsers “headless” too (e.g., Xvfb)
• Side note: will Headless Chromium help even more here?
• Foundation for some commercial services too (e.g., testRTC)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SeleniumHQ: a sample orchetrator in JavaScript
var webdriver = require(’selenium-webdriver’),
By = webdriver.By,
until = webdriver.until;
var chrome = require(’selenium-webdriver/chrome’);
var options = new chrome.Options();
options.addArguments(’--use-fake-device-for-media-stream’, ’--use-fake-ui-for-media-stream’);
var driver = new webdriver.Builder()
.forBrowser(’chrome’)
.withCapabilities(options.toCapabilities())
.build();
driver.get(’http://localhost:8000/siptest.html’);
driver.findElement(By.id(’start’)).click();
driver.findElement(By.id(’username’)).sendKeys(’sip:janususer@localhost’);
driver.findElement(By.id(’password’)).sendKeys(’januspwd’);
driver.findElement(By.id(’registerset’)).click();
driver.findElement(By.id(’secret’)).click();
driver.wait(until.elementLocated(By.className(’bootbox’)), 10000);
driver.findElement(By.css(’button[data-bb-handler=’ok’]’)).click();
driver.findElement(By.id(’register’)).click();
driver.wait(until.elementLocated(By.className(’bootbox’)), 10000);
driver.findElement(By.css(’button[data-bb-handler=’confirm’]’)).click();
driver.findElement(By.id(’peer’)).sendKeys(’sip:600@localhost’);
driver.findElement(By.id(’call’)).click();
driver.sleep(10000); // Wait 10s and then hangup
driver.findElement(By.id(’call’)).click();
driver.quit();
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
SeleniumHQ: grid of controlled browsers
https://github.com/SeleniumHQ/selenium/wiki/Grid2
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
A SeleniumHQ story: testing the Janus SIP plugin
“Performance analysis of the Janus WebRTC gateway” (AWeS ’15)
http://dl.acm.org/citation.cfm?doid=2749215.2749223
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
A SeleniumHQ story: testing the Janus SIP plugin
“Performance analysis of the Janus WebRTC gateway” (AWeS ’15)
http://dl.acm.org/citation.cfm?doid=2749215.2749223
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
A SeleniumHQ story: testing the Janus SIP plugin
“Performance analysis of the Janus WebRTC gateway” (AWeS ’15)
http://dl.acm.org/citation.cfm?doid=2749215.2749223
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
A SeleniumHQ story: testing the Janus SIP plugin
“Performance analysis of the Janus WebRTC gateway” (AWeS ’15)
http://dl.acm.org/citation.cfm?doid=2749215.2749223
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What about native tools?
• While a great improvement over “manual” testing, Selenium is still heavy...
• Even “headless”, a complete browser adds a lot of overhead
• Limit on number of instances a single server can handle
• Less scalability if number of servers is limited
• If UI doesn’t matter, a “native” tool would be much more efficient
• Something focused on PeerConnections, and not the rest
• Should be controllable and programmable
• ... and should be able to send/receive media as well!
• While some tools exist, most are very specific to target applications
• e.g., Jitsi-Hammer, a nice traffic generator for Jitsi Videobridge
• In theory, Chrome WebRTC stack could be used for general purpose tool
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What about native tools?
• While a great improvement over “manual” testing, Selenium is still heavy...
• Even “headless”, a complete browser adds a lot of overhead
• Limit on number of instances a single server can handle
• Less scalability if number of servers is limited
• If UI doesn’t matter, a “native” tool would be much more efficient
• Something focused on PeerConnections, and not the rest
• Should be controllable and programmable
• ... and should be able to send/receive media as well!
• While some tools exist, most are very specific to target applications
• e.g., Jitsi-Hammer, a nice traffic generator for Jitsi Videobridge
• In theory, Chrome WebRTC stack could be used for general purpose tool
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What about native tools?
• While a great improvement over “manual” testing, Selenium is still heavy...
• Even “headless”, a complete browser adds a lot of overhead
• Limit on number of instances a single server can handle
• Less scalability if number of servers is limited
• If UI doesn’t matter, a “native” tool would be much more efficient
• Something focused on PeerConnections, and not the rest
• Should be controllable and programmable
• ... and should be able to send/receive media as well!
• While some tools exist, most are very specific to target applications
• e.g., Jitsi-Hammer, a nice traffic generator for Jitsi Videobridge
• In theory, Chrome WebRTC stack could be used for general purpose tool
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
How we solved this for our needs: Jattack
• Jattack = Janus Attack (or J’attaque )
• Controllable (via WebSockets) WebRTC client stack
• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still improving it, but already in a usable state
• Can receive (and optionally record) media
• Can also send media, if you provide an RTP source yourself
• Live events on anything that happens
• Originally conceived as a homemade tool for stressing Janus
• Might actually be used with other services as well
• All the logic (signalling included) is in the controller
• Presented at IPTComm in Chicago just a few months ago
• https://prezi.com/krg1esxoa6ug/jattack/
• https://www.youtube.com/watch?v=UwNq8p0m1js
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
How we solved this for our needs: Jattack
• Jattack = Janus Attack (or J’attaque )
• Controllable (via WebSockets) WebRTC client stack
• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still improving it, but already in a usable state
• Can receive (and optionally record) media
• Can also send media, if you provide an RTP source yourself
• Live events on anything that happens
• Originally conceived as a homemade tool for stressing Janus
• Might actually be used with other services as well
• All the logic (signalling included) is in the controller
• Presented at IPTComm in Chicago just a few months ago
• https://prezi.com/krg1esxoa6ug/jattack/
• https://www.youtube.com/watch?v=UwNq8p0m1js
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
How we solved this for our needs: Jattack
• Jattack = Janus Attack (or J’attaque )
• Controllable (via WebSockets) WebRTC client stack
• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still improving it, but already in a usable state
• Can receive (and optionally record) media
• Can also send media, if you provide an RTP source yourself
• Live events on anything that happens
• Originally conceived as a homemade tool for stressing Janus
• Might actually be used with other services as well
• All the logic (signalling included) is in the controller
• Presented at IPTComm in Chicago just a few months ago
• https://prezi.com/krg1esxoa6ug/jattack/
• https://www.youtube.com/watch?v=UwNq8p0m1js
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
How we solved this for our needs: Jattack
• Jattack = Janus Attack (or J’attaque )
• Controllable (via WebSockets) WebRTC client stack
• Allows dynamic creation/monitoring of tons of WebRTC PeerConnections
• Still improving it, but already in a usable state
• Can receive (and optionally record) media
• Can also send media, if you provide an RTP source yourself
• Live events on anything that happens
• Originally conceived as a homemade tool for stressing Janus
• Might actually be used with other services as well
• All the logic (signalling included) is in the controller
• Presented at IPTComm in Chicago just a few months ago
• https://prezi.com/krg1esxoa6ug/jattack/
• https://www.youtube.com/watch?v=UwNq8p0m1js
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
The Jattack architecture
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
The Jattack architecture
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Using Jattack with SIP/WebRTC Infrastructures
• A bit more complicated than Selenium...
• You can’t simply “re-use” web pages
• Signalling needs to be implemented in a “Controller”
• ... but way lighter!
• Based on the WebRTC core of Janus itself
• Only does WebSockets communication and PeerConnections
• A single machine can simulate many more users
• Most of the burden is designing the controller
• Accept connections from one or more Jattack instances
• Implementing the signalling (e.g., SIP over WS, Janus API, etc.)
• Bridging SDP and candidates between server and Jattack
• Intercepting events and handling them (e.g., dump to DB)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Using Jattack with SIP/WebRTC Infrastructures
• A bit more complicated than Selenium...
• You can’t simply “re-use” web pages
• Signalling needs to be implemented in a “Controller”
• ... but way lighter!
• Based on the WebRTC core of Janus itself
• Only does WebSockets communication and PeerConnections
• A single machine can simulate many more users
• Most of the burden is designing the controller
• Accept connections from one or more Jattack instances
• Implementing the signalling (e.g., SIP over WS, Janus API, etc.)
• Bridging SDP and candidates between server and Jattack
• Intercepting events and handling them (e.g., dump to DB)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Using Jattack with SIP/WebRTC Infrastructures
• A bit more complicated than Selenium...
• You can’t simply “re-use” web pages
• Signalling needs to be implemented in a “Controller”
• ... but way lighter!
• Based on the WebRTC core of Janus itself
• Only does WebSockets communication and PeerConnections
• A single machine can simulate many more users
• Most of the burden is designing the controller
• Accept connections from one or more Jattack instances
• Implementing the signalling (e.g., SIP over WS, Janus API, etc.)
• Bridging SDP and candidates between server and Jattack
• Intercepting events and handling them (e.g., dump to DB)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Jattack: a sample sequence diagram (“repeat N times”)
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What about other native tools?
• Unfortunately, Jattack isn’t currently open source
• Anyway, as we said, Chrome WebRTC stack could be used for this
• Library would provide WebRTC stack, custom control on top
• A couple of projects to keep track of
• https://github.com/js-platform/node-webrtc
• https://github.com/vmolsa/webrtc-native
• Looks like they could be a good candidate
• Both aim at providing WebRTC stack controllable by a node.js application
• Not sure what the status for them is, though?
• Once available, the same steps described for Jattack could apply
• e.g., Sequence Diagram or Scenario Topology
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What about other native tools?
• Unfortunately, Jattack isn’t currently open source
• Anyway, as we said, Chrome WebRTC stack could be used for this
• Library would provide WebRTC stack, custom control on top
• A couple of projects to keep track of
• https://github.com/js-platform/node-webrtc
• https://github.com/vmolsa/webrtc-native
• Looks like they could be a good candidate
• Both aim at providing WebRTC stack controllable by a node.js application
• Not sure what the status for them is, though?
• Once available, the same steps described for Jattack could apply
• e.g., Sequence Diagram or Scenario Topology
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What about other native tools?
• Unfortunately, Jattack isn’t currently open source
• Anyway, as we said, Chrome WebRTC stack could be used for this
• Library would provide WebRTC stack, custom control on top
• A couple of projects to keep track of
• https://github.com/js-platform/node-webrtc
• https://github.com/vmolsa/webrtc-native
• Looks like they could be a good candidate
• Both aim at providing WebRTC stack controllable by a node.js application
• Not sure what the status for them is, though?
• Once available, the same steps described for Jattack could apply
• e.g., Sequence Diagram or Scenario Topology
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
What about other native tools?
• Unfortunately, Jattack isn’t currently open source
• Anyway, as we said, Chrome WebRTC stack could be used for this
• Library would provide WebRTC stack, custom control on top
• A couple of projects to keep track of
• https://github.com/js-platform/node-webrtc
• https://github.com/vmolsa/webrtc-native
• Looks like they could be a good candidate
• Both aim at providing WebRTC stack controllable by a node.js application
• Not sure what the status for them is, though?
• Once available, the same steps described for Jattack could apply
• e.g., Sequence Diagram or Scenario Topology
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
A final consideration: can servers instead help here?
• We’ve talked about clients so far, but what about servers?
• Asterisk, Freeswitch, RTC:engine, Janus, etc., all support WebRTC
• What if we used those to “stress” other servers?
• Approach could be hybrid, e.g.:
1 Have Asterisk #1 generate a call via AMI, and get the WebRTC SDP
2 Use WebRTC SDP for call to server X
3 Pass WebRTC answer from server X back to Asterisk
4 Repeat N times, involving multiple Asterisk instances
• Basically a “controller” acting as a bridge for signalling alone
• Media would be provided by the servers themselves
• Less straightforward, and less flexible, but still a knife in your belt
• ... especially if you’re quite familiar with a particular server!
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
A final consideration: can servers instead help here?
• We’ve talked about clients so far, but what about servers?
• Asterisk, Freeswitch, RTC:engine, Janus, etc., all support WebRTC
• What if we used those to “stress” other servers?
• Approach could be hybrid, e.g.:
1 Have Asterisk #1 generate a call via AMI, and get the WebRTC SDP
2 Use WebRTC SDP for call to server X
3 Pass WebRTC answer from server X back to Asterisk
4 Repeat N times, involving multiple Asterisk instances
• Basically a “controller” acting as a bridge for signalling alone
• Media would be provided by the servers themselves
• Less straightforward, and less flexible, but still a knife in your belt
• ... especially if you’re quite familiar with a particular server!
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
A final consideration: can servers instead help here?
• We’ve talked about clients so far, but what about servers?
• Asterisk, Freeswitch, RTC:engine, Janus, etc., all support WebRTC
• What if we used those to “stress” other servers?
• Approach could be hybrid, e.g.:
1 Have Asterisk #1 generate a call via AMI, and get the WebRTC SDP
2 Use WebRTC SDP for call to server X
3 Pass WebRTC answer from server X back to Asterisk
4 Repeat N times, involving multiple Asterisk instances
• Basically a “controller” acting as a bridge for signalling alone
• Media would be provided by the servers themselves
• Less straightforward, and less flexible, but still a knife in your belt
• ... especially if you’re quite familiar with a particular server!
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
A final consideration: can servers instead help here?
• We’ve talked about clients so far, but what about servers?
• Asterisk, Freeswitch, RTC:engine, Janus, etc., all support WebRTC
• What if we used those to “stress” other servers?
• Approach could be hybrid, e.g.:
1 Have Asterisk #1 generate a call via AMI, and get the WebRTC SDP
2 Use WebRTC SDP for call to server X
3 Pass WebRTC answer from server X back to Asterisk
4 Repeat N times, involving multiple Asterisk instances
• Basically a “controller” acting as a bridge for signalling alone
• Media would be provided by the servers themselves
• Less straightforward, and less flexible, but still a knife in your belt
• ... especially if you’re quite familiar with a particular server!
KamailioWorld
L. Miniero
Intro
SIP Testing
SIPp
WebRTC
SIP and WebRTC
Browsers
Selenium
Native solutions
Servers
Questions
Questions? Comments?
https://twitter.com/elminiero

More Related Content

What's hot

Dissecting Java Server Faces for Penetration Testing
Dissecting Java Server Faces for Penetration Testing Dissecting Java Server Faces for Penetration Testing
Dissecting Java Server Faces for Penetration Testing
Aditya K Sood
 

What's hot (20)

Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021
Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021
Why Micro Focus Chose Pulsar for Data Ingestion - Pulsar Summit NA 2021
 
The RED Method: How to monitoring your microservices.
The RED Method: How to monitoring your microservices.The RED Method: How to monitoring your microservices.
The RED Method: How to monitoring your microservices.
 
OpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdfOpenShift-Technical-Overview.pdf
OpenShift-Technical-Overview.pdf
 
Red Hat OpenShift Operators - Operators ABC
Red Hat OpenShift Operators - Operators ABCRed Hat OpenShift Operators - Operators ABC
Red Hat OpenShift Operators - Operators ABC
 
OpenStack Architecture
OpenStack ArchitectureOpenStack Architecture
OpenStack Architecture
 
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with MicrosoftOpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
OpenStack 개요 및 활용 사례 @ Community Open Camp with Microsoft
 
Building a scalable microservice architecture with envoy, kubernetes and istio
Building a scalable microservice architecture with envoy, kubernetes and istioBuilding a scalable microservice architecture with envoy, kubernetes and istio
Building a scalable microservice architecture with envoy, kubernetes and istio
 
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
The BlackBox Project: Safely store secrets in Git/Mercurial (originally for P...
 
Flink Batch Processing and Iterations
Flink Batch Processing and IterationsFlink Batch Processing and Iterations
Flink Batch Processing and Iterations
 
Battle of the Stream Processing Titans – Flink versus RisingWave
Battle of the Stream Processing Titans – Flink versus RisingWaveBattle of the Stream Processing Titans – Flink versus RisingWave
Battle of the Stream Processing Titans – Flink versus RisingWave
 
Gitlab flow
Gitlab flowGitlab flow
Gitlab flow
 
stackconf 2023 | Practical introduction to OpenTelemetry tracing by Nicolas F...
stackconf 2023 | Practical introduction to OpenTelemetry tracing by Nicolas F...stackconf 2023 | Practical introduction to OpenTelemetry tracing by Nicolas F...
stackconf 2023 | Practical introduction to OpenTelemetry tracing by Nicolas F...
 
Configuration Management in Ansible
Configuration Management in Ansible Configuration Management in Ansible
Configuration Management in Ansible
 
Introduction to openshift
Introduction to openshiftIntroduction to openshift
Introduction to openshift
 
Ansible presentation
Ansible presentationAnsible presentation
Ansible presentation
 
Api observability
Api observability Api observability
Api observability
 
Monitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on KubernetesMonitoring, Logging and Tracing on Kubernetes
Monitoring, Logging and Tracing on Kubernetes
 
Introduction to Google Cloud Platform
Introduction to Google Cloud PlatformIntroduction to Google Cloud Platform
Introduction to Google Cloud Platform
 
(BDT318) How Netflix Handles Up To 8 Million Events Per Second
(BDT318) How Netflix Handles Up To 8 Million Events Per Second(BDT318) How Netflix Handles Up To 8 Million Events Per Second
(BDT318) How Netflix Handles Up To 8 Million Events Per Second
 
Dissecting Java Server Faces for Penetration Testing
Dissecting Java Server Faces for Penetration Testing Dissecting Java Server Faces for Penetration Testing
Dissecting Java Server Faces for Penetration Testing
 

Similar to SIP/WebRTC load testing @ KamailioWorld 2017

Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
Cisco DevNet
 

Similar to SIP/WebRTC load testing @ KamailioWorld 2017 (20)

Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019Fuzzing Janus @ IPTComm 2019
Fuzzing Janus @ IPTComm 2019
 
Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019Fuzzing RTC @ Kamailio World 2019
Fuzzing RTC @ Kamailio World 2019
 
Wwx2014 - Todd Kulick "Shipping One Million Lines of Haxe to (Over) One Milli...
Wwx2014 - Todd Kulick "Shipping One Million Lines of Haxe to (Over) One Milli...Wwx2014 - Todd Kulick "Shipping One Million Lines of Haxe to (Over) One Milli...
Wwx2014 - Todd Kulick "Shipping One Million Lines of Haxe to (Over) One Milli...
 
Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017Janus/SIP @ OpenSIPS 2017
Janus/SIP @ OpenSIPS 2017
 
WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021WHIP and Janus @ IIT-RTC 2021
WHIP and Janus @ IIT-RTC 2021
 
WebRTC & Asterisk 11
WebRTC & Asterisk 11WebRTC & Asterisk 11
WebRTC & Asterisk 11
 
Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021Write a SocialTV app @ OpenSIPS 2021
Write a SocialTV app @ OpenSIPS 2021
 
SIP2SIP - Direcciones SIP gratuitas para las masas
SIP2SIP - Direcciones SIP gratuitas para las masasSIP2SIP - Direcciones SIP gratuitas para las masas
SIP2SIP - Direcciones SIP gratuitas para las masas
 
Janus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup StockholmJanus @ WebRTC Meetup Stockholm
Janus @ WebRTC Meetup Stockholm
 
Emulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API ProvidersEmulators as an Emerging Best Practice for API Providers
Emulators as an Emerging Best Practice for API Providers
 
WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022WHIP WebRTC Broadcasting @ FOSDEM 2022
WHIP WebRTC Broadcasting @ FOSDEM 2022
 
WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023WebRTC Broadcasting @ TADSummit 2023
WebRTC Broadcasting @ TADSummit 2023
 
Upperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards UpdateUpperside Webinar - WebRTC Standards Update
Upperside Webinar - WebRTC Standards Update
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...What is the Siemens Open Library, and How it Decreased Development Time for E...
What is the Siemens Open Library, and How it Decreased Development Time for E...
 
Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010Building A Great API - Evan Cooke, Cloudstock, December 2010
Building A Great API - Evan Cooke, Cloudstock, December 2010
 
Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017Janus/Asterisk @ Astricon 2017
Janus/Asterisk @ Astricon 2017
 
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
WebRTC Standards & Implementation Q&A - The Internals of WebRTC Browsers Impl...
 
Adding Real-time Features to PHP Applications
Adding Real-time Features to PHP ApplicationsAdding Real-time Features to PHP Applications
Adding Real-time Features to PHP Applications
 
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge InteroperabilityWebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
WebRTC Webinar and Q&A - IP Address Privacy and Microsoft Edge Interoperability
 

More from Lorenzo Miniero

More from Lorenzo Miniero (20)

WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024WebRTC and SIP not just audio and video @ OpenSIPS 2024
WebRTC and SIP not just audio and video @ OpenSIPS 2024
 
Getting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC ServerGetting AV1/SVC to work in the Janus WebRTC Server
Getting AV1/SVC to work in the Janus WebRTC Server
 
BWE in Janus
BWE in JanusBWE in Janus
BWE in Janus
 
The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023The challenges of hybrid meetings @ CommCon 2023
The challenges of hybrid meetings @ CommCon 2023
 
Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023Real-Time Text and WebRTC @ Kamailio World 2023
Real-Time Text and WebRTC @ Kamailio World 2023
 
Become a rockstar using FOSS!
Become a rockstar using FOSS!Become a rockstar using FOSS!
Become a rockstar using FOSS!
 
Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022Janus SFU cascading @ IIT-RTC 2022
Janus SFU cascading @ IIT-RTC 2022
 
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022SIP transfer with Janus/WebRTC @ OpenSIPS 2022
SIP transfer with Janus/WebRTC @ OpenSIPS 2022
 
WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21WebRTC, RED and Janus @ ClueCon21
WebRTC, RED and Janus @ ClueCon21
 
Janus + Audio @ Open Source World
Janus + Audio @ Open Source WorldJanus + Audio @ Open Source World
Janus + Audio @ Open Source World
 
JamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConferenceJamRTC @ Wonder WebRTC unConference
JamRTC @ Wonder WebRTC unConference
 
Scaling WebRTC deployments with multicast @ IETF 110 MBONED
Scaling WebRTC deployments with multicast @ IETF 110 MBONEDScaling WebRTC deployments with multicast @ IETF 110 MBONED
Scaling WebRTC deployments with multicast @ IETF 110 MBONED
 
Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021Janus Workshop pt.2 @ ClueCon 2021
Janus Workshop pt.2 @ ClueCon 2021
 
Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021Janus + NDI @ ClueCon 2021
Janus + NDI @ ClueCon 2021
 
Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021Can WebRTC help musicians? @ FOSDEM 2021
Can WebRTC help musicians? @ FOSDEM 2021
 
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPSVirtual IETF meetings with WebRTC @ IETF 109 MOPS
Virtual IETF meetings with WebRTC @ IETF 109 MOPS
 
Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020Can SFUs and MCUs be friends @ IIT-RTC 2020
Can SFUs and MCUs be friends @ IIT-RTC 2020
 
Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020Insertable Streams and E2EE @ ClueCon2020
Insertable Streams and E2EE @ ClueCon2020
 
Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020Janus Workshop @ ClueCon 2020
Janus Workshop @ ClueCon 2020
 
Turning live events to virtual with Janus
Turning live events to virtual with JanusTurning live events to virtual with Janus
Turning live events to virtual with Janus
 

Recently uploaded

Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
FIDO Alliance
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
FIDO Alliance
 

Recently uploaded (20)

WebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM PerformanceWebAssembly is Key to Better LLM Performance
WebAssembly is Key to Better LLM Performance
 
2024 May Patch Tuesday
2024 May Patch Tuesday2024 May Patch Tuesday
2024 May Patch Tuesday
 
ADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptxADP Passwordless Journey Case Study.pptx
ADP Passwordless Journey Case Study.pptx
 
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider  Progress from Awareness to Implementation.pptxTales from a Passkey Provider  Progress from Awareness to Implementation.pptx
Tales from a Passkey Provider Progress from Awareness to Implementation.pptx
 
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptxHarnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
Harnessing Passkeys in the Battle Against AI-Powered Cyber Threats.pptx
 
Google I/O Extended 2024 Warsaw
Google I/O Extended 2024 WarsawGoogle I/O Extended 2024 Warsaw
Google I/O Extended 2024 Warsaw
 
Working together SRE & Platform Engineering
Working together SRE & Platform EngineeringWorking together SRE & Platform Engineering
Working together SRE & Platform Engineering
 
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdfIntroduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
Introduction to FDO and How It works Applications _ Richard at FIDO Alliance.pdf
 
Overview of Hyperledger Foundation
Overview of Hyperledger FoundationOverview of Hyperledger Foundation
Overview of Hyperledger Foundation
 
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
Event-Driven Architecture Masterclass: Engineering a Robust, High-performance...
 
State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!State of the Smart Building Startup Landscape 2024!
State of the Smart Building Startup Landscape 2024!
 
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdfLinux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
Linux Foundation Edge _ Overview of FDO Software Components _ Randy at Intel.pdf
 
Your enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4jYour enemies use GenAI too - staying ahead of fraud with Neo4j
Your enemies use GenAI too - staying ahead of fraud with Neo4j
 
The Metaverse: Are We There Yet?
The  Metaverse:    Are   We  There  Yet?The  Metaverse:    Are   We  There  Yet?
The Metaverse: Are We There Yet?
 
Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024Extensible Python: Robustness through Addition - PyCon 2024
Extensible Python: Robustness through Addition - PyCon 2024
 
Using IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & IrelandUsing IESVE for Room Loads Analysis - UK & Ireland
Using IESVE for Room Loads Analysis - UK & Ireland
 
ERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage IntacctERP Contender Series: Acumatica vs. Sage Intacct
ERP Contender Series: Acumatica vs. Sage Intacct
 
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
Human Expert Website Manual WCAG 2.0 2.1 2.2 Audit - Digital Accessibility Au...
 
How we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdfHow we scaled to 80K users by doing nothing!.pdf
How we scaled to 80K users by doing nothing!.pdf
 
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
(Explainable) Data-Centric AI: what are you explaininhg, and to whom?
 

SIP/WebRTC load testing @ KamailioWorld 2017

  • 1. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Load Testing of SIP and WebRTC Infrastructures Lorenzo Miniero @elminiero Kamailio World 8th May 2017,
  • 2. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Outline 1 A brief introduction 2 Load Testing of SIP Infrastructures SIPp: a SIP protocol test tool 3 Bringing WebRTC into the picture The problem: getting SIP and WebRTC to like each other Testing the “pane e puparuoli” way: tabs tabs tabs! A cluster of browsers: SeleniumHQ Native solutions: a look at Jattack Can WebRTC compliant servers help? 4 Questions/Comments
  • 3. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions You may remember me from last year!
  • 4. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What’s Meetecho? • A company born in 2009 as an academic spin-off • University research efforts brought to the market • Proudly brewed in sunny Napoli, Italy • Focus on real-time multimedia applications • Web conferencing only, at first • Then widened the scope to multimedia in general • Strong perspective on standardization and open source • WebRTC rulez! • Several activities • Consulting services • Commercial support & licenses • Streaming of live events (e.g., IETF, ACM SIGCOMM, ...) • Products (conferencing, webinar, ...)
  • 5. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What’s Meetecho? • A company born in 2009 as an academic spin-off • University research efforts brought to the market • Proudly brewed in sunny Napoli, Italy • Focus on real-time multimedia applications • Web conferencing only, at first • Then widened the scope to multimedia in general • Strong perspective on standardization and open source • WebRTC rulez! • Several activities • Consulting services • Commercial support & licenses • Streaming of live events (e.g., IETF, ACM SIGCOMM, ...) • Products (conferencing, webinar, ...)
  • 6. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What’s Meetecho? • A company born in 2009 as an academic spin-off • University research efforts brought to the market • Proudly brewed in sunny Napoli, Italy • Focus on real-time multimedia applications • Web conferencing only, at first • Then widened the scope to multimedia in general • Strong perspective on standardization and open source • WebRTC rulez! • Several activities • Consulting services • Commercial support & licenses • Streaming of live events (e.g., IETF, ACM SIGCOMM, ...) • Products (conferencing, webinar, ...)
  • 7. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions (* Napoli looks a bit like this...)
  • 8. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Load Testing of SIP Infrastructures • Typically, a few different objectives • How many SIP sessions can my service handle? • How many calls per second, and how many concurrent calls? • Does the number change when media is involved? • Programmable and customizable are important requirements • Not all the calls are the same • Different applications, different scenarios • Custom headers/fields may be involved • Several popular tools available for the purpose • SIPp: a SIP protocol test tool • https://github.com/SIPp/sipp • Seagull: an Open Source Multi-protocol traffic generator • http://gull.sourceforge.net/ • Many other solutions (often proprietary though)
  • 9. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Load Testing of SIP Infrastructures • Typically, a few different objectives • How many SIP sessions can my service handle? • How many calls per second, and how many concurrent calls? • Does the number change when media is involved? • Programmable and customizable are important requirements • Not all the calls are the same • Different applications, different scenarios • Custom headers/fields may be involved • Several popular tools available for the purpose • SIPp: a SIP protocol test tool • https://github.com/SIPp/sipp • Seagull: an Open Source Multi-protocol traffic generator • http://gull.sourceforge.net/ • Many other solutions (often proprietary though)
  • 10. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Load Testing of SIP Infrastructures • Typically, a few different objectives • How many SIP sessions can my service handle? • How many calls per second, and how many concurrent calls? • Does the number change when media is involved? • Programmable and customizable are important requirements • Not all the calls are the same • Different applications, different scenarios • Custom headers/fields may be involved • Several popular tools available for the purpose • SIPp: a SIP protocol test tool • https://github.com/SIPp/sipp • Seagull: an Open Source Multi-protocol traffic generator • http://gull.sourceforge.net/ • Many other solutions (often proprietary though)
  • 11. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SIPp: a SIP protocol test tool • Open source SIP traffic generator • https://github.com/SIPp/sipp • De-facto standard tool for generating SIP traffic, with or without media • XML files to design testing session • Expected sequence of SIP messages, and how to react • Variables for custom fields (e.g., addresses, usernames, etc.) • Tool comes with some pre-compiled scenarios (e.g., UAC vs. UAS) • Several options to customize session, even in real-time • Call rate, period, overall number of calls, etc. • Media can be sent as well • Replay of pre-captured pcap files (e.g., RTP content)
  • 12. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SIPp: a SIP protocol test tool • Open source SIP traffic generator • https://github.com/SIPp/sipp • De-facto standard tool for generating SIP traffic, with or without media • XML files to design testing session • Expected sequence of SIP messages, and how to react • Variables for custom fields (e.g., addresses, usernames, etc.) • Tool comes with some pre-compiled scenarios (e.g., UAC vs. UAS) • Several options to customize session, even in real-time • Call rate, period, overall number of calls, etc. • Media can be sent as well • Replay of pre-captured pcap files (e.g., RTP content)
  • 13. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SIPp: a SIP protocol test tool • Open source SIP traffic generator • https://github.com/SIPp/sipp • De-facto standard tool for generating SIP traffic, with or without media • XML files to design testing session • Expected sequence of SIP messages, and how to react • Variables for custom fields (e.g., addresses, usernames, etc.) • Tool comes with some pre-compiled scenarios (e.g., UAC vs. UAS) • Several options to customize session, even in real-time • Call rate, period, overall number of calls, etc. • Media can be sent as well • Replay of pre-captured pcap files (e.g., RTP content)
  • 14. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SIPp: a SIP protocol test tool • Open source SIP traffic generator • https://github.com/SIPp/sipp • De-facto standard tool for generating SIP traffic, with or without media • XML files to design testing session • Expected sequence of SIP messages, and how to react • Variables for custom fields (e.g., addresses, usernames, etc.) • Tool comes with some pre-compiled scenarios (e.g., UAC vs. UAS) • Several options to customize session, even in real-time • Call rate, period, overall number of calls, etc. • Media can be sent as well • Replay of pre-captured pcap files (e.g., RTP content)
  • 15. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SIPp: a SIP protocol test tool
  • 16. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SIPp XML example: a UAC <?xml version="1.0" encoding="ISO-8859-1" ?> <!DOCTYPE scenario SYSTEM "sipp.dtd"> <scenario name="UAC with media"> <send retrans="500"> [..INVITE..] </send> <recv response="100" optional="true"> </recv> <recv response="180" optional="true"> </recv> <recv response="200" rtd="true" crlf="true"> </recv> <send> [..ACK..] </send> <pause milliseconds="30000"/> <send retrans="500"> [..BYE..] </send> <recv response="200" crlf="true"> </recv> </scenario>
  • 17. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SIPp XML example: a UAC <send retrans="500"> <![CDATA[ INVITE sip:[service]@[remote_ip]:[remote_port] SIP/2.0 Via: SIP/2.0/[transport] [local_ip]:[local_port];branch=[branch] From: pippozzo <sip:pippozzo@[local_ip]:[local_port]>;tag=[call_number] To: [service] <sip:[service]@[remote_ip]:[remote_port]> X-Custom-Header-ID: xyz Call-ID: [call_id] CSeq: 1 INVITE Contact: sip:pippozzo@[local_ip]:[local_port] Max-Forwards: 70 Subject: AudioConf Test Content-Type: application/sdp Content-Length: [len] v=0 o=user1 53655765 2353687637 IN IP[local_ip_type] [local_ip] s=- c=IN IP[local_ip_type] [local_ip] t=0 0 m=audio [auto_media_port] RTP/AVP 8 a=rtpmap:8 PCMA/8000 a=rtpmap:101 telephone-event/8000 a=fmtp:101 0-11,16 ]]> </send>
  • 18. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SIPp XML example: a UAC <!-- Pause 8 seconds, which is approximately the --> <!-- duration of the PCAP file --> <pause milliseconds="8000"/> <!-- Play a pre-recorded PCAP file (RTP stream) --> <nop> <action> <exec play_pcap_audio="/usr/share/sipp/pcap/g711a.pcap"/> </action> </nop>
  • 19. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Making things easier with SIPp • SIPp is very powerful • ... but designing XML files can be a drag! • A couple of tools can help with that • Sippy Cup • SIPp helper tool, written in Ruby • Can generate SIPp load test profiles and the corresponding pcap media • http://mojolingo.github.io/sippy_cup/ • What about a web frontend? • http://sipp.sourceforge.net/web_frontend/ • https://github.com/mojolingo/SIPTreadmill (Sippy Cup authors) • https://github.com/SIPp/pysipp ("SIPp for Humans" )
  • 20. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Making things easier with SIPp • SIPp is very powerful • ... but designing XML files can be a drag! • A couple of tools can help with that • Sippy Cup • SIPp helper tool, written in Ruby • Can generate SIPp load test profiles and the corresponding pcap media • http://mojolingo.github.io/sippy_cup/ • What about a web frontend? • http://sipp.sourceforge.net/web_frontend/ • https://github.com/mojolingo/SIPTreadmill (Sippy Cup authors) • https://github.com/SIPp/pysipp ("SIPp for Humans" )
  • 21. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Making things easier with SIPp • SIPp is very powerful • ... but designing XML files can be a drag! • A couple of tools can help with that • Sippy Cup • SIPp helper tool, written in Ruby • Can generate SIPp load test profiles and the corresponding pcap media • http://mojolingo.github.io/sippy_cup/ • What about a web frontend? • http://sipp.sourceforge.net/web_frontend/ • https://github.com/mojolingo/SIPTreadmill (Sippy Cup authors) • https://github.com/SIPp/pysipp ("SIPp for Humans" )
  • 22. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Web frontend example: SIP Treadmill
  • 23. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions The problem: getting SIP and WebRTC to like each other
  • 24. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions The problem: getting SIP and WebRTC to like each other
  • 25. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Bridging the gap: the WebRTC protocol suite • Signalling (well, sort of) and Negotiation • Javascript Session Establishment Protocol (JSEP) • Session Description Protocol (SDP) adaptation • Connection Establishment and NAT Traversal • Session Traversal Utilities for NAT (STUN) • Traversal Using Relay NAT (TURN) • Interactive Connectivity Establishment (ICE) • Media Transport and Control • Real-time Transport (and Control) Protocol (RTP/RTCP) • Secure Extensions to RTP (SRTP) • Datagram Transport Layer Security (DTLS) • Multimedia codecs • Opus audio codec (MTI, Mandatory-to-implement) • VP8 and H.264 video codecs (MTI, Mandatory-to-implement) • Generic Data • WebRTC Data Channels (SCTP)
  • 26. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Bridging the gap: the WebRTC protocol suite • Signalling (well, sort of) and Negotiation • Javascript Session Establishment Protocol (JSEP) • Session Description Protocol (SDP) adaptation • Connection Establishment and NAT Traversal • Session Traversal Utilities for NAT (STUN) • Traversal Using Relay NAT (TURN) • Interactive Connectivity Establishment (ICE) • Media Transport and Control • Real-time Transport (and Control) Protocol (RTP/RTCP) • Secure Extensions to RTP (SRTP) • Datagram Transport Layer Security (DTLS) • Multimedia codecs • Opus audio codec (MTI, Mandatory-to-implement) • VP8 and H.264 video codecs (MTI, Mandatory-to-implement) • Generic Data • WebRTC Data Channels (SCTP)
  • 27. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What makes SIP+WebRTC testing harder? • First of all, simulating users is not trivial... • ... they’re not just web users • ... they’re not “regular” SIP clients either • Approaches like SIPp wouldn’t work • They might work for the signalling part... • ... but pcap files would NOT mix well with ICE/DTLS/SRTP • WebRTC too dynamic in nature to just replay traffic • Stressing tools for HTTP/WS exist, but they don’t account for WebRTC • JMeter, Siege, HTTPerf etc. very good at generating HTTP traffic • ... but then how do you create PeerConnections and/or exchange media? • PhantomJS could handle dynamic application, but not the WebRTC part
  • 28. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What makes SIP+WebRTC testing harder? • First of all, simulating users is not trivial... • ... they’re not just web users • ... they’re not “regular” SIP clients either • Approaches like SIPp wouldn’t work • They might work for the signalling part... • ... but pcap files would NOT mix well with ICE/DTLS/SRTP • WebRTC too dynamic in nature to just replay traffic • Stressing tools for HTTP/WS exist, but they don’t account for WebRTC • JMeter, Siege, HTTPerf etc. very good at generating HTTP traffic • ... but then how do you create PeerConnections and/or exchange media? • PhantomJS could handle dynamic application, but not the WebRTC part
  • 29. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What makes SIP+WebRTC testing harder? • First of all, simulating users is not trivial... • ... they’re not just web users • ... they’re not “regular” SIP clients either • Approaches like SIPp wouldn’t work • They might work for the signalling part... • ... but pcap files would NOT mix well with ICE/DTLS/SRTP • WebRTC too dynamic in nature to just replay traffic • Stressing tools for HTTP/WS exist, but they don’t account for WebRTC • JMeter, Siege, HTTPerf etc. very good at generating HTTP traffic • ... but then how do you create PeerConnections and/or exchange media? • PhantomJS could handle dynamic application, but not the WebRTC part
  • 30. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Testing the “pane e puparuoli” way • The first approach that comes to mind: just open multiple tabs! • WebRTC applications are web applications • Unlike softphones, quite easy to open more tabs for more “calls” • Besides, JavaScript allows for easy programmability • e.g., custom page that generates multiple calls • As it is, not very scalable of course... • You can only open so many tabs yourself • Local resources and/or browser connection limits may be exhausted • Fake devices can help, here, but only up to a point • Friends can help, but how many can you bother? • Sounds very silly and naive (and it probably is) • ... but as we’ll see in a minute, not that much! • (what if this could be automated and “remotized”?)
  • 31. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Testing the “pane e puparuoli” way • The first approach that comes to mind: just open multiple tabs! • WebRTC applications are web applications • Unlike softphones, quite easy to open more tabs for more “calls” • Besides, JavaScript allows for easy programmability • e.g., custom page that generates multiple calls • As it is, not very scalable of course... • You can only open so many tabs yourself • Local resources and/or browser connection limits may be exhausted • Fake devices can help, here, but only up to a point • Friends can help, but how many can you bother? • Sounds very silly and naive (and it probably is) • ... but as we’ll see in a minute, not that much! • (what if this could be automated and “remotized”?)
  • 32. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Testing the “pane e puparuoli” way • The first approach that comes to mind: just open multiple tabs! • WebRTC applications are web applications • Unlike softphones, quite easy to open more tabs for more “calls” • Besides, JavaScript allows for easy programmability • e.g., custom page that generates multiple calls • As it is, not very scalable of course... • You can only open so many tabs yourself • Local resources and/or browser connection limits may be exhausted • Fake devices can help, here, but only up to a point • Friends can help, but how many can you bother? • Sounds very silly and naive (and it probably is) • ... but as we’ll see in a minute, not that much! • (what if this could be automated and “remotized”?)
  • 33. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SeleniumHQ – Web Browser Automation • Opening tons of browsers/tabs locally and manually doesn’t scale well... SeleniumHQ • http://www.seleniumhq.org/ • Tool for browser automation • Web applications are scriptable by definition (and can collect stats) • Remotely controlled browser instances to open those • Scenario can be programmed in different languages (e.g., Java, Python, etc.) • Uses WebDrivers for different browsers • Fake devices help automate media capture (and permissions) • Tricks exist to start browsers “headless” too (e.g., Xvfb) • Side note: will Headless Chromium help even more here? • Foundation for some commercial services too (e.g., testRTC)
  • 34. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SeleniumHQ – Web Browser Automation • Opening tons of browsers/tabs locally and manually doesn’t scale well... SeleniumHQ • http://www.seleniumhq.org/ • Tool for browser automation • Web applications are scriptable by definition (and can collect stats) • Remotely controlled browser instances to open those • Scenario can be programmed in different languages (e.g., Java, Python, etc.) • Uses WebDrivers for different browsers • Fake devices help automate media capture (and permissions) • Tricks exist to start browsers “headless” too (e.g., Xvfb) • Side note: will Headless Chromium help even more here? • Foundation for some commercial services too (e.g., testRTC)
  • 35. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SeleniumHQ – Web Browser Automation • Opening tons of browsers/tabs locally and manually doesn’t scale well... SeleniumHQ • http://www.seleniumhq.org/ • Tool for browser automation • Web applications are scriptable by definition (and can collect stats) • Remotely controlled browser instances to open those • Scenario can be programmed in different languages (e.g., Java, Python, etc.) • Uses WebDrivers for different browsers • Fake devices help automate media capture (and permissions) • Tricks exist to start browsers “headless” too (e.g., Xvfb) • Side note: will Headless Chromium help even more here? • Foundation for some commercial services too (e.g., testRTC)
  • 36. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SeleniumHQ – Web Browser Automation • Opening tons of browsers/tabs locally and manually doesn’t scale well... SeleniumHQ • http://www.seleniumhq.org/ • Tool for browser automation • Web applications are scriptable by definition (and can collect stats) • Remotely controlled browser instances to open those • Scenario can be programmed in different languages (e.g., Java, Python, etc.) • Uses WebDrivers for different browsers • Fake devices help automate media capture (and permissions) • Tricks exist to start browsers “headless” too (e.g., Xvfb) • Side note: will Headless Chromium help even more here? • Foundation for some commercial services too (e.g., testRTC)
  • 37. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SeleniumHQ – Web Browser Automation • Opening tons of browsers/tabs locally and manually doesn’t scale well... SeleniumHQ • http://www.seleniumhq.org/ • Tool for browser automation • Web applications are scriptable by definition (and can collect stats) • Remotely controlled browser instances to open those • Scenario can be programmed in different languages (e.g., Java, Python, etc.) • Uses WebDrivers for different browsers • Fake devices help automate media capture (and permissions) • Tricks exist to start browsers “headless” too (e.g., Xvfb) • Side note: will Headless Chromium help even more here? • Foundation for some commercial services too (e.g., testRTC)
  • 38. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SeleniumHQ: a sample orchetrator in JavaScript var webdriver = require(’selenium-webdriver’), By = webdriver.By, until = webdriver.until; var chrome = require(’selenium-webdriver/chrome’); var options = new chrome.Options(); options.addArguments(’--use-fake-device-for-media-stream’, ’--use-fake-ui-for-media-stream’); var driver = new webdriver.Builder() .forBrowser(’chrome’) .withCapabilities(options.toCapabilities()) .build(); driver.get(’http://localhost:8000/siptest.html’); driver.findElement(By.id(’start’)).click(); driver.findElement(By.id(’username’)).sendKeys(’sip:janususer@localhost’); driver.findElement(By.id(’password’)).sendKeys(’januspwd’); driver.findElement(By.id(’registerset’)).click(); driver.findElement(By.id(’secret’)).click(); driver.wait(until.elementLocated(By.className(’bootbox’)), 10000); driver.findElement(By.css(’button[data-bb-handler=’ok’]’)).click(); driver.findElement(By.id(’register’)).click(); driver.wait(until.elementLocated(By.className(’bootbox’)), 10000); driver.findElement(By.css(’button[data-bb-handler=’confirm’]’)).click(); driver.findElement(By.id(’peer’)).sendKeys(’sip:600@localhost’); driver.findElement(By.id(’call’)).click(); driver.sleep(10000); // Wait 10s and then hangup driver.findElement(By.id(’call’)).click(); driver.quit();
  • 39. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions SeleniumHQ: grid of controlled browsers https://github.com/SeleniumHQ/selenium/wiki/Grid2
  • 40. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions A SeleniumHQ story: testing the Janus SIP plugin “Performance analysis of the Janus WebRTC gateway” (AWeS ’15) http://dl.acm.org/citation.cfm?doid=2749215.2749223
  • 41. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions A SeleniumHQ story: testing the Janus SIP plugin “Performance analysis of the Janus WebRTC gateway” (AWeS ’15) http://dl.acm.org/citation.cfm?doid=2749215.2749223
  • 42. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions A SeleniumHQ story: testing the Janus SIP plugin “Performance analysis of the Janus WebRTC gateway” (AWeS ’15) http://dl.acm.org/citation.cfm?doid=2749215.2749223
  • 43. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions A SeleniumHQ story: testing the Janus SIP plugin “Performance analysis of the Janus WebRTC gateway” (AWeS ’15) http://dl.acm.org/citation.cfm?doid=2749215.2749223
  • 44. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What about native tools? • While a great improvement over “manual” testing, Selenium is still heavy... • Even “headless”, a complete browser adds a lot of overhead • Limit on number of instances a single server can handle • Less scalability if number of servers is limited • If UI doesn’t matter, a “native” tool would be much more efficient • Something focused on PeerConnections, and not the rest • Should be controllable and programmable • ... and should be able to send/receive media as well! • While some tools exist, most are very specific to target applications • e.g., Jitsi-Hammer, a nice traffic generator for Jitsi Videobridge • In theory, Chrome WebRTC stack could be used for general purpose tool
  • 45. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What about native tools? • While a great improvement over “manual” testing, Selenium is still heavy... • Even “headless”, a complete browser adds a lot of overhead • Limit on number of instances a single server can handle • Less scalability if number of servers is limited • If UI doesn’t matter, a “native” tool would be much more efficient • Something focused on PeerConnections, and not the rest • Should be controllable and programmable • ... and should be able to send/receive media as well! • While some tools exist, most are very specific to target applications • e.g., Jitsi-Hammer, a nice traffic generator for Jitsi Videobridge • In theory, Chrome WebRTC stack could be used for general purpose tool
  • 46. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What about native tools? • While a great improvement over “manual” testing, Selenium is still heavy... • Even “headless”, a complete browser adds a lot of overhead • Limit on number of instances a single server can handle • Less scalability if number of servers is limited • If UI doesn’t matter, a “native” tool would be much more efficient • Something focused on PeerConnections, and not the rest • Should be controllable and programmable • ... and should be able to send/receive media as well! • While some tools exist, most are very specific to target applications • e.g., Jitsi-Hammer, a nice traffic generator for Jitsi Videobridge • In theory, Chrome WebRTC stack could be used for general purpose tool
  • 47. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions How we solved this for our needs: Jattack • Jattack = Janus Attack (or J’attaque ) • Controllable (via WebSockets) WebRTC client stack • Allows dynamic creation/monitoring of tons of WebRTC PeerConnections • Still improving it, but already in a usable state • Can receive (and optionally record) media • Can also send media, if you provide an RTP source yourself • Live events on anything that happens • Originally conceived as a homemade tool for stressing Janus • Might actually be used with other services as well • All the logic (signalling included) is in the controller • Presented at IPTComm in Chicago just a few months ago • https://prezi.com/krg1esxoa6ug/jattack/ • https://www.youtube.com/watch?v=UwNq8p0m1js
  • 48. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions How we solved this for our needs: Jattack • Jattack = Janus Attack (or J’attaque ) • Controllable (via WebSockets) WebRTC client stack • Allows dynamic creation/monitoring of tons of WebRTC PeerConnections • Still improving it, but already in a usable state • Can receive (and optionally record) media • Can also send media, if you provide an RTP source yourself • Live events on anything that happens • Originally conceived as a homemade tool for stressing Janus • Might actually be used with other services as well • All the logic (signalling included) is in the controller • Presented at IPTComm in Chicago just a few months ago • https://prezi.com/krg1esxoa6ug/jattack/ • https://www.youtube.com/watch?v=UwNq8p0m1js
  • 49. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions How we solved this for our needs: Jattack • Jattack = Janus Attack (or J’attaque ) • Controllable (via WebSockets) WebRTC client stack • Allows dynamic creation/monitoring of tons of WebRTC PeerConnections • Still improving it, but already in a usable state • Can receive (and optionally record) media • Can also send media, if you provide an RTP source yourself • Live events on anything that happens • Originally conceived as a homemade tool for stressing Janus • Might actually be used with other services as well • All the logic (signalling included) is in the controller • Presented at IPTComm in Chicago just a few months ago • https://prezi.com/krg1esxoa6ug/jattack/ • https://www.youtube.com/watch?v=UwNq8p0m1js
  • 50. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions How we solved this for our needs: Jattack • Jattack = Janus Attack (or J’attaque ) • Controllable (via WebSockets) WebRTC client stack • Allows dynamic creation/monitoring of tons of WebRTC PeerConnections • Still improving it, but already in a usable state • Can receive (and optionally record) media • Can also send media, if you provide an RTP source yourself • Live events on anything that happens • Originally conceived as a homemade tool for stressing Janus • Might actually be used with other services as well • All the logic (signalling included) is in the controller • Presented at IPTComm in Chicago just a few months ago • https://prezi.com/krg1esxoa6ug/jattack/ • https://www.youtube.com/watch?v=UwNq8p0m1js
  • 51. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions The Jattack architecture
  • 52. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions The Jattack architecture
  • 53. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Using Jattack with SIP/WebRTC Infrastructures • A bit more complicated than Selenium... • You can’t simply “re-use” web pages • Signalling needs to be implemented in a “Controller” • ... but way lighter! • Based on the WebRTC core of Janus itself • Only does WebSockets communication and PeerConnections • A single machine can simulate many more users • Most of the burden is designing the controller • Accept connections from one or more Jattack instances • Implementing the signalling (e.g., SIP over WS, Janus API, etc.) • Bridging SDP and candidates between server and Jattack • Intercepting events and handling them (e.g., dump to DB)
  • 54. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Using Jattack with SIP/WebRTC Infrastructures • A bit more complicated than Selenium... • You can’t simply “re-use” web pages • Signalling needs to be implemented in a “Controller” • ... but way lighter! • Based on the WebRTC core of Janus itself • Only does WebSockets communication and PeerConnections • A single machine can simulate many more users • Most of the burden is designing the controller • Accept connections from one or more Jattack instances • Implementing the signalling (e.g., SIP over WS, Janus API, etc.) • Bridging SDP and candidates between server and Jattack • Intercepting events and handling them (e.g., dump to DB)
  • 55. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Using Jattack with SIP/WebRTC Infrastructures • A bit more complicated than Selenium... • You can’t simply “re-use” web pages • Signalling needs to be implemented in a “Controller” • ... but way lighter! • Based on the WebRTC core of Janus itself • Only does WebSockets communication and PeerConnections • A single machine can simulate many more users • Most of the burden is designing the controller • Accept connections from one or more Jattack instances • Implementing the signalling (e.g., SIP over WS, Janus API, etc.) • Bridging SDP and candidates between server and Jattack • Intercepting events and handling them (e.g., dump to DB)
  • 56. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Jattack: a sample sequence diagram (“repeat N times”)
  • 57. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What about other native tools? • Unfortunately, Jattack isn’t currently open source • Anyway, as we said, Chrome WebRTC stack could be used for this • Library would provide WebRTC stack, custom control on top • A couple of projects to keep track of • https://github.com/js-platform/node-webrtc • https://github.com/vmolsa/webrtc-native • Looks like they could be a good candidate • Both aim at providing WebRTC stack controllable by a node.js application • Not sure what the status for them is, though? • Once available, the same steps described for Jattack could apply • e.g., Sequence Diagram or Scenario Topology
  • 58. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What about other native tools? • Unfortunately, Jattack isn’t currently open source • Anyway, as we said, Chrome WebRTC stack could be used for this • Library would provide WebRTC stack, custom control on top • A couple of projects to keep track of • https://github.com/js-platform/node-webrtc • https://github.com/vmolsa/webrtc-native • Looks like they could be a good candidate • Both aim at providing WebRTC stack controllable by a node.js application • Not sure what the status for them is, though? • Once available, the same steps described for Jattack could apply • e.g., Sequence Diagram or Scenario Topology
  • 59. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What about other native tools? • Unfortunately, Jattack isn’t currently open source • Anyway, as we said, Chrome WebRTC stack could be used for this • Library would provide WebRTC stack, custom control on top • A couple of projects to keep track of • https://github.com/js-platform/node-webrtc • https://github.com/vmolsa/webrtc-native • Looks like they could be a good candidate • Both aim at providing WebRTC stack controllable by a node.js application • Not sure what the status for them is, though? • Once available, the same steps described for Jattack could apply • e.g., Sequence Diagram or Scenario Topology
  • 60. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions What about other native tools? • Unfortunately, Jattack isn’t currently open source • Anyway, as we said, Chrome WebRTC stack could be used for this • Library would provide WebRTC stack, custom control on top • A couple of projects to keep track of • https://github.com/js-platform/node-webrtc • https://github.com/vmolsa/webrtc-native • Looks like they could be a good candidate • Both aim at providing WebRTC stack controllable by a node.js application • Not sure what the status for them is, though? • Once available, the same steps described for Jattack could apply • e.g., Sequence Diagram or Scenario Topology
  • 61. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions A final consideration: can servers instead help here? • We’ve talked about clients so far, but what about servers? • Asterisk, Freeswitch, RTC:engine, Janus, etc., all support WebRTC • What if we used those to “stress” other servers? • Approach could be hybrid, e.g.: 1 Have Asterisk #1 generate a call via AMI, and get the WebRTC SDP 2 Use WebRTC SDP for call to server X 3 Pass WebRTC answer from server X back to Asterisk 4 Repeat N times, involving multiple Asterisk instances • Basically a “controller” acting as a bridge for signalling alone • Media would be provided by the servers themselves • Less straightforward, and less flexible, but still a knife in your belt • ... especially if you’re quite familiar with a particular server!
  • 62. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions A final consideration: can servers instead help here? • We’ve talked about clients so far, but what about servers? • Asterisk, Freeswitch, RTC:engine, Janus, etc., all support WebRTC • What if we used those to “stress” other servers? • Approach could be hybrid, e.g.: 1 Have Asterisk #1 generate a call via AMI, and get the WebRTC SDP 2 Use WebRTC SDP for call to server X 3 Pass WebRTC answer from server X back to Asterisk 4 Repeat N times, involving multiple Asterisk instances • Basically a “controller” acting as a bridge for signalling alone • Media would be provided by the servers themselves • Less straightforward, and less flexible, but still a knife in your belt • ... especially if you’re quite familiar with a particular server!
  • 63. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions A final consideration: can servers instead help here? • We’ve talked about clients so far, but what about servers? • Asterisk, Freeswitch, RTC:engine, Janus, etc., all support WebRTC • What if we used those to “stress” other servers? • Approach could be hybrid, e.g.: 1 Have Asterisk #1 generate a call via AMI, and get the WebRTC SDP 2 Use WebRTC SDP for call to server X 3 Pass WebRTC answer from server X back to Asterisk 4 Repeat N times, involving multiple Asterisk instances • Basically a “controller” acting as a bridge for signalling alone • Media would be provided by the servers themselves • Less straightforward, and less flexible, but still a knife in your belt • ... especially if you’re quite familiar with a particular server!
  • 64. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions A final consideration: can servers instead help here? • We’ve talked about clients so far, but what about servers? • Asterisk, Freeswitch, RTC:engine, Janus, etc., all support WebRTC • What if we used those to “stress” other servers? • Approach could be hybrid, e.g.: 1 Have Asterisk #1 generate a call via AMI, and get the WebRTC SDP 2 Use WebRTC SDP for call to server X 3 Pass WebRTC answer from server X back to Asterisk 4 Repeat N times, involving multiple Asterisk instances • Basically a “controller” acting as a bridge for signalling alone • Media would be provided by the servers themselves • Less straightforward, and less flexible, but still a knife in your belt • ... especially if you’re quite familiar with a particular server!
  • 65. KamailioWorld L. Miniero Intro SIP Testing SIPp WebRTC SIP and WebRTC Browsers Selenium Native solutions Servers Questions Questions? Comments? https://twitter.com/elminiero