WEBRTC : EXPLORATION THROUGH THE QUESTIONOF INTEROPERABILITY WITH SIP
Soutenance17/06/2013
Ornella Annicchiarico, Benoit Le Quéau, Mouhcine Mendil, Florian Seka
1
CONTENT
2
I. Objectives
II. Infrastructure solutions
III. Experiments
IV. Demonstration
OBJECTIVES I-Objectives II- Infrastructure solutions III-Experiments
Browser BlocSIPphone
3
OBJECTIVES I-Objectives II- Infrastructure solutions III-Experiments
Browser BlocSIPphone
WebRTC
3
OBJECTIVES I-Objectives II- Infrastructure solutions III-Experiments
Browser BlocSIPphone
WebRTC
3
WEBRTC
4
I-Objectives II- Infrastructure solutions III-Experiments
SIPML 5 Browser
SipML5
BlocSIPphone
I-Objectives II- Infrastructure solutions III-Experiments
5
SIPML 5 Browser
SipML5
Sip stack
WebRTC
BlocSIPphone
I-Objectives II- Infrastructure solutions III-Experiments
5
ARCHITECTURE Browser
SipML5
Sip stack
WebRTC
Bloc
SIPphone
I-Objectives II- Infrastructure solutions III-Experiments
6
ARCHITECTURE Browser
SipML5
Sip stack
WebRTC
Bloc
RegistrarProxy SIP
RTPEngine
HTTP server
Websocket server
SIPphone
I-Objectives II- Infrastructure solutions III-Experiments
6
ARCHITECTURE Browser
SipML5
Sip stack
WebRTC
Bloc
RegistrarProxy SIP
RTPEngine
HTTP server
Websocket server
SIPphone
HTMLwebapp.js
HTTP GET
I-Objectives II- Infrastructure solutions III-Experiments
6
ARCHITECTURE Browser
SipML5
Sip stack
WebRTC
Bloc
RegistrarProxy SIP
RTPEngine
HTTP server
Websocket server
SIPphone
HTMLwebapp.js
HTTP GET
SIP over
WS SIP
SIP
I-Objectives II- Infrastructure solutions III-Experiments
6
ARCHITECTURE Browser
SipML5
Sip stack
WebRTC
Bloc
RegistrarProxy SIP
RTPEngine
HTTP server
Websocket server
SIPphone
HTMLwebapp.js
HTTP GET
SIP over
WS SIP
SIPSRTP
RTP
I-Objectives II- Infrastructure solutions III-Experiments
6
ARCHITECTURE Browser
SipML5
Sip stack
WebRTC
Bloc
RegistrarProxy SIP
RTPEngine
HTTP server
Websocket server
SIPphone
HTMLwebapp.js
HTTP GET
SIP over
WS SIP
SIPSRTP
RTP
I-Objectives II- Infrastructure solutions III-Experiments
6
• Proxy and server SIP :
- Asterisk v 11.2.2
- Additional patch for VP8 support
OUR SOLUTION
7
Asterisk11.2.2
I-Objectives II- Infrastructure solutions III-Experiments
SCENARIOS AND TESTS
8
sipML5
javascript
WebRTC
FireBug
PCVirtual Machine
Asterisk
RTP debugSIP debug
(CLI)
Wireshark
eth0
I-Objectives II- Infrastructure solutions III-Experiments
SCENARIO 1: AUDIO CALL
• Scenario : an audio call between a browser and a softphone
• Registration is performed
• Need a websocket server and a proxy SIP (provided by Asterisk)
• VM network is on bridge
9
Chrome
I-Objectives II- Infrastructure solutions III-Experiments
192.168.0.45 192.168.0.46
192.168.0.11
Asterisk
192.168.0.25
g711
X Lite
g711
Host machine
AUDIO CALL CALL FLOW
Browser Softphone(already registered)
Asterisk
INVITE SDP
401 Unauthorized
ACK
INVITE SDP
100 Trying
WS [INVITE SDP]
180 Ringing
WS [200 OK]
RTP
WS [100 Trying]WS [180 Ringing]
SRTP
200 OK
• Signaling encapsuled in Websocket
Les trames SRTP ne sont pas encapsulées dans du websocket.
Notre version de wireshark ne reconnait pas SRTP, il indique que c’est sur de l’UDP.
WS[REGISTER]
WS[401 Unautho
rized]
WS[REGISTER]
10
WS[200 OK]
AUDIO CALL CALL FLOW
Browser Softphone(already registered)
Asterisk
INVITE SDP
401 Unauthorized
ACK
INVITE SDP
100 Trying
WS [INVITE SDP]
180 Ringing
WS [200 OK]
RTP
WS [100 Trying]WS [180 Ringing]
SRTP
200 OK
• Signaling encapsuled in Websocket
Les trames SRTP ne sont pas encapsulées dans du websocket.
Notre version de wireshark ne reconnait pas SRTP, il indique que c’est sur de l’UDP.
WS[REGISTER]
WS[401 Unautho
rized]
WS[REGISTER]
10
WS[200 OK]
AUDIO CALL CALL FLOW
Browser Softphone(already registered)
Asterisk
INVITE SDP
401 Unauthorized
ACK
INVITE SDP
100 Trying
WS [INVITE SDP]
180 Ringing
WS [200 OK]
RTP
WS [100 Trying]WS [180 Ringing]
SRTP
200 OK
• Signaling encapsuled in Websocket
Les trames SRTP ne sont pas encapsulées dans du websocket.
Notre version de wireshark ne reconnait pas SRTP, il indique que c’est sur de l’UDP.
WS[REGISTER]
WS[401 Unautho
rized]
WS[REGISTER]
10
WS[200 OK]
SCENARIO II:AUDIOCONFERENCE
• adding modules in Asterisk: MeetMe, ConfBridge
• Dial-In
• DTMF in SIP INFO 192.168.0.33
192.168.0.46
192.168.0.45
11
192.168.0.11
AsteriskHost machine
192.168.0.25
g711
g711
g711
LinPhone
I-Objectives II- Infrastructure solutions III-Experiments
SCENARIO III:PRESENCE
12
Browser Asterisk
WS [NOTIFY]
WS [200 OK]
WS[SUSCRIBE]
WS[401 Unautho
rized]
WS[200 OK]
WS[SUSCRIBE]
Status of userX ?
I-Objectives II- Infrastructure solutions III-Experiments
Change of userX’s status
WS [NOTIFY]
WS [200 OK]
192.168.0.45 192.168.0.46
192.168.0.11
Asterisk
192.168.0.25
g711
X Lite
g711
Host machine
SCENARIO III:PRESENCE
12
Browser Asterisk
WS [NOTIFY]
WS [200 OK]
WS[SUSCRIBE]
WS[401 Unautho
rized]
WS[200 OK]
WS[SUSCRIBE]
Status of userX ?
I-Objectives II- Infrastructure solutions III-Experiments
Change of userX’s status
WS [NOTIFY]
WS [200 OK]
192.168.0.45 192.168.0.46
192.168.0.11
Asterisk
192.168.0.25
g711
X Lite
g711
Host machine
SCENARIO IV: VIDEO
• Works between softphones using h264, h263, VP8
• Asterisk needs to be patched to be VP8-compliant
192.168.0.25 192.168.0.46
13
192.168.0.11
Asterisk
192.168.0.25
h.264 h.264
X Lite iDoubs
I-Objectives II- Infrastructure solutions III-Experiments
Host machine
CONCLUSION• WebRTC:
- only VP8 available- works only with Chrome and Firefox• Asterisk:
- No video transcoding‣ external transcoder: webrtc2sip ?
- WebRTC users ≠ Softphone users
• other solutions: jsSIP/OverSIP...14
DEMONSTRATION !
OUR HTML5 CLIENT
16
• Deployed on Asterisk HTTP Server
APPENDIX
• SIP messages encapsulated in WebSocket.
• No WebSocket on media plan.
APPENDIX
• https://wiki.asterisk.org/wiki/display/AST/Video+Telephony
APPENDIX
• http://www.virtualbox.org/manual/ch06.html
VARIABILITY OF TESTSOS du PBX CentOS Ubuntu
PBX PIAF-Green Asterisk Kamailo OverSIP
OS utilisateur
Windows 8 OS X Ubuntu Android iOS
SoftphoneSipInside,
X LiteTelephone,
iDoubs Zoiper Sipdroid Linphone,Media5-fone
NavigateurFirefox Nightly Chrome Bowser
CONFERENCE CALL FLOWComputer ComputerAsterisk SoftphoneAsterisk
INVITE SDP
401 Unauthorized
ACK
INVITE SDP
100 Trying
200 OK
ACK
RTP
WS[INVITE SDP]
WS[401 Unauthorized]
WS[ACK]
WS[INVITE SDP]
WS[100 Trying]WS[200 OK]
WS[ACK]
UDP
WS[INVITE SDP]
WS[401 Unauthorized]
WS[ACK]
WS[INVITE SDP]
WS[100 Trying]
WS[200 OK]
WS[ACK]
UDP