SlideShare une entreprise Scribd logo
1  sur  65
Télécharger pour lire hors ligne
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

Contenu connexe

Tendances

Performance Testing With Loadrunner
Performance Testing With LoadrunnerPerformance Testing With Loadrunner
Performance Testing With Loadrunner
vladimir zaremba
 
Jmeter Performance Testing
Jmeter Performance TestingJmeter Performance Testing
Jmeter Performance Testing
Atul Pant
 

Tendances (20)

Cross browser testing
Cross browser testingCross browser testing
Cross browser testing
 
Kafka Summit 2021 - Apache Kafka meets workflow engines
Kafka Summit 2021 - Apache Kafka meets workflow enginesKafka Summit 2021 - Apache Kafka meets workflow engines
Kafka Summit 2021 - Apache Kafka meets workflow engines
 
Test de charge avec Apache JMeter
Test de charge avec Apache JMeterTest de charge avec Apache JMeter
Test de charge avec Apache JMeter
 
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
[DPE Summit] How Improving the Testing Experience Goes Beyond Quality: A Deve...
 
VMware Esx Short Presentation
VMware Esx Short PresentationVMware Esx Short Presentation
VMware Esx Short Presentation
 
Test Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and CucumberTest Automation Framework with BDD and Cucumber
Test Automation Framework with BDD and Cucumber
 
Performance testing presentation
Performance testing presentationPerformance testing presentation
Performance testing presentation
 
Performance Testing With Loadrunner
Performance Testing With LoadrunnerPerformance Testing With Loadrunner
Performance Testing With Loadrunner
 
End to end test automation with cypress
End to end test automation with cypressEnd to end test automation with cypress
End to end test automation with cypress
 
Performance Testing using LoadRunner
Performance Testing using LoadRunnerPerformance Testing using LoadRunner
Performance Testing using LoadRunner
 
Loadrunner vs Jmeter
Loadrunner vs JmeterLoadrunner vs Jmeter
Loadrunner vs Jmeter
 
Introduction To Appium With Robotframework
Introduction To Appium With RobotframeworkIntroduction To Appium With Robotframework
Introduction To Appium With Robotframework
 
QSpiders - Introduction to HP Load Runner
QSpiders - Introduction to HP Load RunnerQSpiders - Introduction to HP Load Runner
QSpiders - Introduction to HP Load Runner
 
Microservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring CloudMicroservice With Spring Boot and Spring Cloud
Microservice With Spring Boot and Spring Cloud
 
Introduction to selenium
Introduction to seleniumIntroduction to selenium
Introduction to selenium
 
Getting Started With Cypress
Getting Started With CypressGetting Started With Cypress
Getting Started With Cypress
 
Introduction to Selenium grid
Introduction to Selenium gridIntroduction to Selenium grid
Introduction to Selenium grid
 
BDD with Cucumber
BDD with CucumberBDD with Cucumber
BDD with Cucumber
 
Performance Testing
Performance TestingPerformance Testing
Performance Testing
 
Jmeter Performance Testing
Jmeter Performance TestingJmeter Performance Testing
Jmeter Performance Testing
 

Similaire à 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
 

Similaire à 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
 

Plus de Lorenzo Miniero

Plus de Lorenzo Miniero (20)

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
 
Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020Janus RTP forwarders @ FOSDEM 2020
Janus RTP forwarders @ FOSDEM 2020
 

Dernier

Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
vu2urc
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Dernier (20)

Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf[2024]Digital Global Overview Report 2024 Meltwater.pdf
[2024]Digital Global Overview Report 2024 Meltwater.pdf
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 

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