implementation lessons using webrtc in asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… ·...

39
Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva <[email protected]> Manager, Software Engineering Sangoma 中国代理

Upload: dinhdieu

Post on 12-Feb-2018

225 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Implementation Lessons using WebRTC in Asterisk

Astricon, October 2013 Moisés Silva <[email protected]>

Manager, Software Engineering

Sangoma 中国总代理

Page 2: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Agenda

• WebRTC Intro

• WebRTC Asterisk Architecture

• Install & Config

• Troubleshooting

2

Sangoma Technologies - © 2013

Page 3: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• It is not a phone in the browser!

3

Sangoma Technologies - © 2013

Page 4: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• It is a full RTC engine in the browser!

4

Sangoma Technologies - © 2013

Page 5: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• Yes, it can be used for a phone in the browser

5

Sangoma Technologies - © 2013

Page 6: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• Full media engine API in the web browser

• No “call” or “session” signaling defined

• Generic data interchange between browsers, peer to peer

• State of the art NAT traversal techniques

6

Sangoma Technologies - © 2013

Page 7: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• WebRTC comes with multiple APIs, ie:

• Peer-to-Peer Connections (RTCPeerConnection)

• Peer-to-Peer Data API (RTCDataChannel)

• Statistics (RTCStats)

• Media Stream (getUserMedia)

7

Sangoma Technologies - © 2013

Page 8: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• WebRTC uses established protocols: • SRTP/SRTCP for media exchange (secure RTP)

• SDP (its use is controversial and currently challenged)

• ICE, STUN, TURN for NAT Traversal

• DTLS for key exchange

• G.711, Opus, VP8/H.264 etc; for voice and video

8

Sangoma Technologies - © 2013

Page 9: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• What signaling to use is up to you:

• SIP

• XMPP/Jingle

• RESTful API (json)

• OpenPeer ….

9

Sangoma Technologies - © 2013

Page 10: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• Applications

• A phone, video calls, conferencing etc!

• Video games

• P2P Video Streaming (Chromecast)

• Motion-detecting Baby Monitor (https://github.com/webrtcHacks/webrtc_baby_monitor)

10

Sangoma Technologies - © 2013

Page 11: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC Intro

• WebRTC Web Triangle

11

Sangoma Technologies - © 2013

Alice’s Browser Bob’s Browser

Encrypted Media

Web

Signaling Signaling

Page 12: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC in Asterisk

12

Sangoma Technologies - © 2013

Alice’s Browser Bob’s Browser

Encrypted Media

SIP over WS SIP over WS

Encrypted Media

Page 13: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC in Asterisk

• WebRTC Gateway

13

Sangoma Technologies - © 2013

Alice’s Browser

SIP/RTP, Jingle, FXO/FXS, PRI, SS7 etc …

Encrypted Media

SIP over WS

Page 14: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC in Asterisk

14

Sangoma Technologies - © 2013

Javascript SIP

WebRTC

chan_sip res_http_websocket

res_rtp_asterisk res_srtp

Page 15: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

WebRTC in Asterisk

15

Sangoma Technologies - © 2013

sipml5

Chrome 30

Asterisk 11

Page 16: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Installing WebRTC Support

• Make sure you have:

• libuuid-devel (required by res_rtp_asterisk)

• OpenSSL w/ DTLS support (1.0.1e has SSL_CTX_set_tlsext_use_srtp)

• libsrtp-devel

16

Sangoma Technologies - © 2013

Page 17: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Installing WebRTC Support

• Easy usual steps …

• ./configure

• make menuselect: • res_http_websocket

• res_rtp_asterisk

• make install

17

Sangoma Technologies - © 2013

Page 18: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

• Enable the websockets server (http.conf)

• enabled=yes

• bindaddr=0.0.0.0

• bindport=8088

18

Sangoma Technologies - © 2013

Page 19: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

• Good idea to use secure websockets (http.conf)

• tlsenable=yes

• tlsbindaddr=0.0.0.0:8089

• tlscertfile=localhost.crt

• tlsprivatekey=localhost.key

19

Sangoma Technologies - © 2013

Page 20: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

• But … Asterisk currently seems to have issues with secure WebSockets, patches available to fix them

• https://issues.asterisk.org/jira/browse/ASTERISK-21930

• http://svnview.digium.com/svn/asterisk/team/moy/webrtc-11/

20

Sangoma Technologies - © 2013

Page 21: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

• Verify the HTTP server status

21

Sangoma Technologies - © 2013

Page 22: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

• Test websockets connectivity

• npm install –g ws

• wscat –s echo –c ws://<host>:<port>/ws wscat –s echo –c wss://<host>:<port>/ws

22

Sangoma Technologies - © 2013

Page 23: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

• Test websockets connectivity

23

Sangoma Technologies - © 2013

Page 24: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

24

Sangoma Technologies - © 2013

Page 25: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

• Enable SIP over websockets (sip.conf)

• transport=ws,wss

• Make sure you use the /ws URL when connecting from JavaScript

• Create a SIP account to receive ws/wss calls

25

Sangoma Technologies - © 2013

Page 26: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

• Testing using sipml5.org/call.htm

26

Sangoma Technologies - © 2013

Page 27: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Configuring WebRTC Support

27

Sangoma Technologies - © 2013

Page 28: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Troubleshooting

• Troubleshooting Toolkit

• javascript console

• chrome://webrtc-internals

• Node ws (test websockets)

• Wireshark!

28

Sangoma Technologies - © 2013

Page 29: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Troubleshooting

• The javascript console is your friend

29

Sangoma Technologies - © 2013

Page 30: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Troubleshooting

• Checking out chrome://webrtc-internals

30

Sangoma Technologies - © 2013

Page 31: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Troubleshooting

• Checking out chrome://webrtc-internals

31

Sangoma Technologies - © 2013

Page 32: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Troubleshooting

• Note that Wireshark VoIP calls menu won’t work for calls over websockets

• You can however use “Follow TCP stream” and see the entire SIP signaling flow

• RTP decoding will not work either (rtcp-mux)

32

Sangoma Technologies - © 2013

Page 33: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Troubleshooting

• TLS decryption can be achieved by installing the private key on Wireshark

• Preferences -> Protocols -> SSL -> RSA Key List

33

Sangoma Technologies - © 2013

Page 34: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Troubleshooting

• Wireshark decrypted secure WebSocket payload

34

Sangoma Technologies - © 2013

Page 35: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Things to test in the near Future

• Trickle Ice

• Use of other codecs (ie Opus, iSAC)

• Video (VP8)

• Use libwebsockets in res_http_websocket?

35

Sangoma Technologies - © 2013

Page 36: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Conclusion

• Asterisk + WebRTC gateway is easy to setup!

• Know your debugging tools

• Understand the protocols involved

• Have fun and hack away!

36

Sangoma Technologies - © 2013

Page 37: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

QUESTIONS

Page 38: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

Contact Us

• Sangoma Technologies 100 Renfrew Drive, Suite 100 Markham, Ontario L3R 9R6 Canada

• Website http://www.sangoma.com/

• Telephone +1 905 474 1990 x2 (for Sales)

• Email [email protected]

Sangoma Technologies - © 2013

38

Sangoma 中国总代理

Page 39: Implementation Lessons using WebRTC in Asteriskapi/deki/files/4088/=%e5%a6%82%e4%bd%95… · Implementation Lessons using WebRTC in Asterisk Astricon, October 2013 Moisés Silva

THANK YOU