Top Banner
Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium
46

Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

Apr 14, 2020

Download

Documents

dariahiddleston
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

Asterisk as a Media Application Server

Matt Jordan@mattcjordan

Director of Technology, Digium

Page 2: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

2Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Goal:

Can we make Asterisk a generic media

application server?

Page 3: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

3Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Scalability

Page 4: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

4Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployments

Page 5: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

5Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployments

Asterisk front-ended with Kamailio– Kamailio acts as Registrar, provides Location– Asterisk provides media services

Use Traditional Asterisk Dialplan

Page 6: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

6Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployments

Asterisk front-ended with Kamailio– Kamailio acts as Registrar, provides Location– Asterisk provides media services

Use Traditional Asterisk Dialplan

Option 1: Each Asterisk server the same

Page 7: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

7Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 1

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk PBX

Asterisk PBX

Page 8: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

8Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 1

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk PBX

Asterisk PBX

● Kamailio acts as Registrar

● Round Robin routing

● Multi-tenant● Asterisk

systems share configuration

Page 9: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

9Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 1

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk PBX

Asterisk PBX

● Kamailio acts as Registrar

● Round Robin routing

● Multi-tenant● Asterisk

systems share configuration

Page 10: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

10Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problems with Option 1

Sharing Configuration– Not easily scaled– All systems must know all information– Requires careful dialplan construction (func_odbc)

Page 11: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

11Creative Innovation – Customer Satisfaction – Continual Quality Improvement

[customer_one]

exten => 1000,1,NoOp() same => n,ConfBridge(1000,c_one_profile) same => n,Hangup()

[customer_two]

exten => 1000,1,NoOp() same => n,ConfBridge(1000,c_two_profile) same => n,Hangup()

Page 12: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

12Creative Innovation – Customer Satisfaction – Continual Quality Improvement

[customer]

exten => 1000,1,NoOp() same => n,ConfBridge(1000,${ODBC_CONF_PROF(${CALLERID(num)})}) same => n,Hangup()

Page 13: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

13Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 1

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk PBX

Asterisk PBX

Alice Calls 1000 (Conference)

Page 14: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

14Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 1

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk PBX

Asterisk PBX

Bob Calls 1000 (Conference)

Page 15: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

15Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 1

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk PBX

Asterisk PBX

:-(

Page 16: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

16Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problems with Option 1

Sharing Configuration– Not easily scaled– All systems must know all information– Requires careful dialplan construction (func_odbc)

func_odbc: Still doesn't scale well!– Can defer customer logic to external system– Cannot easily defer routing/application logic

Page 17: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

17Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployments

Asterisk front-ended with Kamailio– Kamailio acts as Registrar, provides Location– Asterisk provides media services

Use Traditional Asterisk Dialplan

Option 1: Each Asterisk server the same

Page 18: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

18Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployments

Asterisk front-ended with Kamailio– Kamailio acts as Registrar, provides Location– Asterisk provides media services

Use Traditional Asterisk Dialplan

Option 1: Each Asterisk server the same

Page 19: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

19Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployments

Asterisk front-ended with Kamailio– Kamailio acts as Registrar, provides Location– Asterisk provides media services

Use Traditional Asterisk Dialplan

Option 1: Each Asterisk server the same

Option 2: Special purpose Asterisk servers

Page 20: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

20Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 2

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk Conferencing

Asterisk PBX

● Kamailio acts as Registrar

● Route based on functional purpose (with round robin amongst those)

● Multi-tenant● Asterisk

systems share configuration

Page 21: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

21Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 2

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk Conferencing

Asterisk PBX

Page 22: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

22Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 2

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk Conferencing

Asterisk PBX

But what if Ineed anotherConferencingServer?

Page 23: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

23Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployment: Option 2

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk PBX

Asterisk Conferencing

Asterisk PBX

:-(

Page 24: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

24Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Traditional Deployments

Asterisk front-ended with Kamailio– Kamailio acts as Registrar, provides Location– Asterisk provides media services

Use Traditional Asterisk Dialplan

Option 1: Each Asterisk server the same

Option 2: Special purpose Asterisk servers

Page 25: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

25Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problems with Option 1 and Option 2

Sharing Configuration– Not easily scaled– All systems must know all information– Requires careful dialplan construction (func_odbc)

func_odbc: Still doesn't scale well!– Can defer customer logic to external system– Cannot easily defer application logic

Functional systems only partially mitigate the problem– Application logic still affects routing decisions– Impacts how easy we can scale

Page 26: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

26Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problems with Tradition

Optimal routing should not require application logic: Not Kamailio's job

Page 27: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

27Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problems with Tradition

Optimal routing should not require application logic: Not Kamailio's job

Application Logic impacts routing

Page 28: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

28Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problems with Tradition

Optimal routing should not require application logic: Not Kamailio's job

Application Logic impacts routing

Ideal situation– Every instance of Asterisk is generic– Kamailio just routes based on performance

Page 29: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

29Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Goal:

Can we make Asterisk a generic media

application server?

Page 30: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

30Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Remove the application logic from Asterisk

Page 31: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

31Creative Innovation – Customer Satisfaction – Continual Quality Improvement

ARI: An API for building custom communications

applications

Page 32: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

32Creative Innovation – Customer Satisfaction – Continual Quality Improvement

ARI: A Super Quick Overview

A REST(ful) API– Exposes the raw Asterisk primitives as resources

Page 33: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

33Creative Innovation – Customer Satisfaction – Continual Quality Improvement

ARI: A Super Quick Overview

A REST(ful) API– Exposes the raw Asterisk primitives as resourcesPOST /channels/12345/answerDELETE /bridges/awesome_bridgePUT /deviceStates/my_dev/state=BUSY

Page 34: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

34Creative Innovation – Customer Satisfaction – Continual Quality Improvement

ARI: A Super Quick Overview

A REST(ful) API– Exposes the raw Asterisk primitives as resourcesPOST /channels/12345/answerDELETE /bridges/awesome_bridgePUT /deviceStates/my_dev/state=BUSY

JSON Events over WS{ event: 'ChannelHangup',  channel: { 'id': '12345',             'name':  'PJSIP/alice'

A tiny bit of dialplanexten => _XXXX,1,Stasis(your­app)

Page 35: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

35Creative Innovation – Customer Satisfaction – Continual Quality Improvement

ARI: A Super Quick Overview

AsteriskDialplan Execution

ARIExternal Execution

Stasis dialplan app

Page 36: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

36Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Single Slide Conference Bridge

import ari

client = ari.connect('http://localhost:8088',    'ari_user', 's3cr3t')

conf_bridge = client.bridges.create(    type='mixing,dtmf_events',    bridgeId='awesome_conf')

def stasis_start_cb(channels, ev):    channel = channels.get('channel')    channel.answer()        conf_bridge.play(media='sound:beep')    conf_bridge.addChannel(channel=channel.id)

client.on_channel_event('StasisStart',    stasis_start_cb)

client.run(apps='awesome_conference')

Page 37: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

37Creative Innovation – Customer Satisfaction – Continual Quality Improvement

ARI: An API for building custom communications

applications

(THAT'S THE DIALPLAN)

Page 38: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

38Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Nontraditional Deployment

Page 39: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

39Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Step 1: Remove the Dialplan*

* Conspiracy Theorists Rejoice

Page 40: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

40Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Getting a little extreme

[default]

exten => _X.,1,NoOp() same => n,Stasis(EVERYTHING) same => n,Hangup()

Page 41: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

41Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Step 2: Use a Message Bus

Approach

Page 42: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

42Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Getting a little extreme

def get_app_by_exten(exten):    “””This is terrible, but demos the concept”””

    if exten == '1000':        return exec_conference    else:        return default_app_exec

def stasis_start_cb(channel, ev):    exten = ev.get('exten')    app = get_app_by_exten(exten)    app(channel)

client.on_channel_event('StasisStart',                        stasis_start_cb)

Page 43: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

43Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Getting a bit more extreme

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk 1

Asterisk 2

Asterisk n

SIP ARI

App Server

App Server

Page 44: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

44Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Getting a bit more extreme

Kamailio 1

Kamailio 2

Alice

Bob

Asterisk 1

Asterisk 2

Asterisk n

SIP ARI

App Server

App Server

Treat as Scalable Microservices

Page 45: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

45Creative Innovation – Customer Satisfaction – Continual Quality Improvement

A philosophical taxonomy

Keep things as simple as possible, but no simpler

Kamailio: manage SIP

Asterisk: manage media

Application logic: your choice

Page 46: Asterisk as a Media Application Server - Kamailio€¦ · Asterisk as a Media Application Server Matt Jordan @mattcjordan Director of Technology, Digium

46Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Questions

?