connecting people webrtc and the pexip collaboration
play

Connecting people: WebRTC and the Pexip collaboration platform - PowerPoint PPT Presentation

Connecting people: WebRTC and the Pexip collaboration platform TF-WebRTC : May 19, 2015 Who are Pexip? Founded in April 2012 Strong video heritage Manufacture Infjnity a pure-software, virtualized, distributed, scalable


  1. Connecting people: WebRTC and the Pexip collaboration platform TF-WebRTC : May 19, 2015

  2. Who are Pexip?  Founded in April 2012  Strong video heritage  Manufacture Infjnity – a pure-software, virtualized, distributed, scalable collaboration platform

  3. Who am I?  John-Mark Bell  Software engineer in Pexip's UK R&D team  Been with Pexip since day one  Responsible for Pexip's OS & product security  Implemented Pexip's initial WebRTC stack

  4. Collaboration technologies H.323 SIP

  5. Some important trends  Hardware -> Software  Personalisation & BYoD  User driven demand It's no longer about the technology

  6. Where does WebRTC fjt?  Browser-based clients are (becoming!) universal  Can be used in isolation, or to augment traditional voice/video solutions – Screen/presentation sharing – Control functionality  May enhance existing web collaboration tools Opens up novel solutions and use-cases

  7. Pexip's philosophy  Interoperability matters – People want to use whatever client/device they have – Collaboration with people using difgerent technologies needs to work (within and between organisations)  Scale is inevitable – Ease of access to capable clients drives demand – Generational change – people expect to use this stufg

  8. Pexip's philosophy  Extensibility is vital – We provide a solid, feature-rich foundation – But we don't do everything or solve every use case – Therefore, we expose open, documented APIs which allow an ecosystem to build around us – This also allows customers to be proactive in addressing their specifjc needs by building on our foundations

  9. Interoperability Skype RTV Desktops RDP Skype for SVC G.7xx H.323 Business Rooms H.264 Opus H.263 Lync2013 Siren WebRTC H.261 Silk VoIP Phones Lync2011 SIP VP8 Speex H.264HP* AAC Lync2010 Softphones H.265* VP9*

  10. Pexip Distributed Architecture  T ypical Deployment Conferencing  1 x Management Node Nodes Management  Multiple Conferencing Nodes Node  Resilience  Resilient to temporary network splits Conferencing Nodes  Leverages VMware and Hyper-V resilience mechanisms Conferencing Nodes Distributed Pexip  Benefjts  Management: Single point of Infjnity Deployment management & diagnostics for a global deployment  Keeps bandwidth usage local  Minimizes bandwidth usage between regions

  11. Distributed Architecture – Conferencing T raditional Centralized Deployment Multiple HD streams One centralized data center Distributed Conferencing High defjnition video stream Only one HD stream in each direction Low resolution video stream Multiple low bandwidth PIP streams Resilient to network outages

  12. Distributed Architecture - Gateway Centralized Deployment Headquarters Remote Offjce New York Singapore Lync Lync H.323 Room System SIP Desktop System Centralized deployment due to high custom hardware cost Distributed Deployment Excessive WAN bandwidth used due to hairpinning of media Long latency for some local calls Headquarters Remote Offjce Reduced user experience New York Singapore Lync No media hairpinning Lync No WAN bandwidth for local H.323 Room System SIP Desktop System calls Lowest possible latency Better user experience

  13. Endpoint registration and call routing Registrar and Conferencing Nodes Management Node Registrar and Conferencing Nodes Policy Server Registrar and Conferencing Nodes SIP registration SIP registration Advanced call control through distributed policy server and distributed registrar

  14. Pexip Infjnity APIs in a Nutshell Client Voice/Video Client Voice/Video Management Management Applications Mgmnt API Applications Applications Applications Client API Pexip Pexip Infjnity Infjnity Policy API Policy Servers Policy Servers

  15. Management Applications Client Applications Management Applications Client Applications App (iOS) App (Android) App (Browser) App (iOS) App (Android) App (Browser) Management REST API can be used for Management REST API can be used for Automatic deployment Automatic deployment Pexip App Framework (Browser) Automatic provisioning Pexip App Framework (Browser) Automatic provisioning Custom web interfaces Custom web interfaces Pexip App Framework (Android) Pexip App Framework (Android) Custom conference control Custom conference control ...and more Pexip App Framework (iOS) ...and more Pexip App Framework (iOS) Confjguration Command Command EventSource Status API Status API API API API API Get active Get conference WebRTC Add/delete/edit Escalate to conferences info Dial participant Conference info VMR video RTMP Get Conf Node Get participant Mute (push) Deploy new Conf Start status info participant Node presentation ... ... ... ... Management API (REST) Client API (REST) Media ... Management API (REST) Client API (REST) ... Media Pexip Infjnity Pexip Infjnity External Policy API External Policy API Policy Server Policy Server Third party policy server Third party policy server

  16. Client API

  17. Client API overview  REST, with JSON payloads  We use it to build our: – web application – mobile applications for iOS/Android – installable client for Windows/Mac/Linux

  18. Client API fmow  Connect to conference  (Regularly) refresh connection to conference  (Optionally) register for event notifjcations  (Optionally) activate media functionality  Disconnect from conference The same fmow works with gateways, too

  19. Connect to conference  HTTP POST to C S | request_token | |-------------------------------------->| https://cn/api/client/v2/conferences/conference/request_token | {'display_name': 'Test'} | | | | response| |<--------------------------------------| | {'status': 'success', | import json | 'result': { | import requests | 'token' : '...', | import time | 'expires' : '120', | | 'participant_uuid': '...', | | 'version' : '...', | base_url = 'https://10.0.0.1/api/client/v2/conferences/test/' | 'role' : 'HOST', | | 'chat_enabled' : true, | response = requests.post(base_url + 'request_token', | 'service_type' : 'conference', | headers = { 'Content-Type' : 'application/json' }, | 'stun' : '...' | data = json.dumps({ 'display_name' : 'Test' })).json() | } | | } | token = response['result']['token'] | | expires = time.time() + int(response['result']['expires']) / 2 participant = response['result']['participant_uuid']

  20. Refresh connection to conference  HTTP POST to C S | refresh_token | |-------------------------------------->| https://cn/api/client/v2/conferences/conference/refresh_token | | | | | response| |<--------------------------------------| | {'status': 'success', | response = requests.post(base_url + 'refresh_token', | 'result': { | headers = { | 'token' : '...', | 'Content-Type' : 'application/json', | 'expires' : '120', | 'token' : token | 'participant_uuid': '...', | | 'version' : '...', | }).json() | 'role' : 'HOST', | | 'chat_enabled' : true, | token = response['result']['token'] | 'service_type' : 'conference', | expires = time.time() + int(response['result']['expires']) / 2 | 'stun' : '...' | | } | | } | | |

  21. Register for event notifjcations  HTTP GET to C S | events | |----------------------------------------------->| https://cn/api/client/v2/conferences/conference/events | | | | | response| |<-----------------------------------------------| | Event stream: | response = requests.get(base_url + 'events', | http://www.w3.org/TR/eventsource/ | headers = { 'token' : token }, | e.g.: | stream = True) | : hello | | | | event: conference_update | for event in parse_events(response): | id: MTAuNDQuOTkuMjE= | process_event(event) | data: {"guests_muted": false, “locked": false} | | | if time.time() > expires: | event: participant_sync_begin | refresh_token() | id: MTAuNDQuOTkuMjI= | | data: null |

Recommend


More recommend