Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan...

92
Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium

Transcript of Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan...

Page 1: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

Architecture of Asterisk 13

Matt Jordan@mattcjordan

Director of Technology, Digium

Page 2: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

2Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Why this talk?

Asterisk 12– New SIP stack– New APIs– New Core

Page 3: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

3Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Why this talk?

Asterisk 12– New SIP stack– New APIs– New Core

Kamailio World:– 2014 - Asterisk's PJSIP stack– 2015 - Asterisk APIs/ARI

Page 4: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

4Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Why this talk?

Asterisk 12– New SIP stack– New APIs– New Core

Kamailio World:– 2014 - Asterisk's PJSIP stack– 2015 - Asterisk APIs/ARI

Let's talk about C APIs!

Page 5: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

5Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Page 6: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

6Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Bridging!

Page 7: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

7Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The ProblemOr: How to justify to your employers spending 10 man years on something you hope your end users never

notice

Page 8: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

8Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Problem

Asterisk– Parallelism achieved through multithreading– “Conservative” threading model

One thread per “call” Thread services both inbound and outbound

channels

Page 9: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

9Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Problem

Asterisk– Parallelism achieved through multithreading– “Conservative” threading model

One thread per “call” Thread services both inbound and outbound

channels

Problem: How do you move channels out of a call?– Transfers– Externally initiated redirects– Parking– Call pickup

Page 10: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

10Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt sip_pvt

SIP/foo-00000001ast_channel

SIP/bar-00000002ast_channel

PBX Thread

SIP Monitor Thread

Page 11: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

11Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt sip_pvt

SIP/foo-00000001ast_channel

SIP/bar-00000002ast_channel

PBX Thread

SIP Monitor Thread

Page 12: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

12Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt sip_pvt

SIP/foo-00000001ast_channel

SIP/bar-00000002ast_channel

PBX Thread

SIP Monitor Thread

SIP/bar-00000003ast_channel

Page 13: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

13Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt sip_pvt

SIP/foo-00000001ast_channel

SIP/bar-00000002ast_channel

PBX Thread

SIP Monitor Thread

SIP/bar-00000003<Masq>ast_channel

Page 14: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

14Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt sip_pvt

SIP/foo-00000001ast_channel

SIP/bar-00000002<Zombie>ast_channel

PBX Thread

SIP Monitor Thread

SIP/bar-00000003<Masq>ast_channel

Page 15: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

15Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt sip_pvt

SIP/foo-00000001ast_channel

SIP/bar-00000002<Zombie>ast_channel

PBX Thread

SIP Monitor Thread

SIP/bar-00000002ast_channel

Page 16: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

16Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt

SIP/foo-00000001ast_channel

SIP/bar-00000002<Zombie>ast_channel

PBX Thread

SIP Monitor Thread

SIP/bar-00000002ast_channel

sip_pvt

Page 17: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

17Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt

SIP/foo-00000001ast_channel

SIP/bar-00000002<Zombie>ast_channel

PBX Thread

SIP Monitor Thread

SIP/bar-00000002ast_channel

sip_pvt

Page 18: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

18Creative Innovation – Customer Satisfaction – Continual Quality Improvement

“Solution”: Masquerades!

sip_pvt

SIP/foo-00000001ast_channel

PBX Thread

SIP Monitor Thread

SIP/bar-00000002ast_channel

sip_pvt

PBX Thread

Page 19: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

19Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Page 20: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

20Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Masquerade Events

Event: NewChannelChannel: SIP/bar­00000003

Event: RenameChannel: SIP/bar­00000003Newname: SIP/bar­00000003<Masq>

Event: RenameChannel: SIP/bar­00000002Newname: SIP/bar­00000002<Zombie>

Event: RenameChannel: SIP/bar­00000003<Masq>Newname: SIP/bar­00000002

Event: MasqueradeOriginal: SIP/bar­00000002Clone: SIP/bar­00000002<Zombie>

Page 21: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

21Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Page 22: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

22Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problem: “Bridging”

features::ast_do_bridge

Page 23: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

23Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problem: “Bridging”

features::ast_do_bridge

channel::ast_channel_bridge

Page 24: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

24Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problem: “Bridging”

features::ast_do_bridge

channel::ast_channel_bridge

(chan_sip)::bridge

Page 25: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

25Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problem: “Bridging”

features::ast_do_bridge

channel::ast_channel_bridge

(chan_sip)::bridge

rtp_engine::ast_rtp_instance_bridge

Page 26: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

26Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problem: “Bridging”

features::ast_do_bridge

channel::ast_channel_bridge

(chan_sip)::bridge

rtp_engine::ast_rtp_instance_bridge

(res_rtp_asterisk)::ast_rtp_local_bridge

Page 27: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

27Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problem: “Bridging”

features::ast_do_bridge

channel::ast_channel_bridge

(chan_sip)::bridge

rtp_engine::ast_rtp_instance_bridge

(res_rtp_asterisk)::ast_rtp_local_bridge

DTMF FeaturesCDRCELAMI

Page 28: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

28Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problem: “Bridging”

features::ast_do_bridge

channel::ast_channel_bridge

(chan_sip)::bridge

rtp_engine::ast_rtp_instance_bridge

(res_rtp_asterisk)::ast_rtp_local_bridge

DTMF FeaturesCDRCELAMI

More FeaturesFormat CompatBridge TimersRTP Source

Page 29: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

29Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Problem: “Bridging”

features::ast_do_bridge

channel::ast_channel_bridge

(chan_sip)::bridge

rtp_engine::ast_rtp_instance_bridge

(res_rtp_asterisk)::ast_rtp_local_bridge

DTMF FeaturesCDRCELAMI

More FeaturesFormat CompatBridge TimersRTP Source

RTP CompatLocal/Remote

Page 30: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

30Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Page 31: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

31Creative Innovation – Customer Satisfaction – Continual Quality Improvement

This Is Not Fine

Page 32: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

32Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Constraints

Channels must be “stable”– No rename events– No masquerade events– Predictable lifetime

Page 33: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

33Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Constraints

Channels must be “stable”– No rename events– No masquerade events– Predictable lifetime

Can't fundamentally change Asterisk's threading model– Asterisk is multithreaded, not multiprocess– The PBX Thread must still service an ast_channel

Page 34: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

34Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Constraints

Channels must be “stable”– No rename events– No masquerade events– Predictable lifetime

Can't fundamentally change Asterisk's threading model– Asterisk is multithreaded, not multiprocess– The PBX Thread must still service an ast_channel

Use existing APIs to maximize chance of success– Bridging Framework (1.6.x)– Find places to stop expanding the scope

Page 35: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

35Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version I: Bridging as an Object

Or: Let's try a novel approach and use some code we wrote five years ago

Page 36: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

36Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Bridging Framework

Bridges are an object– Maintain the state of the call– Have a mixing technology (strategy pattern)

Page 37: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

37Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Bridging Framework

Bridges are an object– Maintain the state of the call– Have a mixing technology (strategy pattern)

Mixing strategies– “Simple” - two party, media in the core– “Softmix” - multiparty– “Multiplex” - multiple two party bridges

Page 38: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

38Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Bridging Framework

Bridges are an object– Maintain the state of the call– Have a mixing technology (strategy pattern)

Mixing strategies– “Simple” - two party, media in the core– “Softmix” - multiparty– “Multiplex” - multiple two party bridges

Page 39: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

39Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Bridging Framework

Bridges are an object– Maintain the state of the call– Have a mixing technology (strategy pattern)

Mixing strategies– “Simple” - two party, media in the core– “Softmix” - multiparty– “Multiplex” - multiple two party bridges

Dedicated thread per channel– Allows channels to gracefully leave a bridge

Page 40: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

40Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Bridging Framework

ast_bridge_create – make a new bridge

ast_bridge_join – add a channel to a bridge (blocking)

ast_bridge_impart – add a channel to a bridge (non-blocking)

ast_bridge_merge – merge two bridges together

ast_bridge_move – move a channel from one bridge to another

ast_bridge_transfer_blind – blind transfer a channel to the dialplan

ast_bridge_transfer_attended – perform an attended transfer between two channels

Page 41: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

41Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Releasing a Channel

PBX Thread Bridge Thread

PJSIP/foo-00000001 PJSIP/foo-00000002

Bridge 0001

Page 42: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

42Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Releasing a Channel

PBX Thread Bridge Thread

PJSIP/foo-00000001 PJSIP/foo-00000002

Bridge 0001

ast_bridge_set_after_goto(pjsip_foo,    “default”, “s”, 1);

Page 43: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

43Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Releasing a Channel

PBX Thread Bridge Thread

PJSIP/foo-00000001 PJSIP/foo-00000002

Bridge 0001

ast_bridge_set_after_goto(pjsip_foo,    “default”, “s”, 1);

(default, s, 1)

Page 44: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

44Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Releasing a Channel

PBX Thread Bridge Thread

PJSIP/foo-00000001 PJSIP/foo-00000002

Bridge 0001

ast_bridge_kick(b01, pjsip_foo);

(default, s, 1)

Page 45: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

45Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Releasing a Channel

PBX Thread Bridge Thread

PJSIP/foo-00000001 PJSIP/foo-00000002

Bridge 0001

ast_bridge_kick(b01, pjsip_foo);

(default, s, 1)

Page 46: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

46Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Releasing a Channel

PBX Thread PBX Thread

PJSIP/foo-00000001 PJSIP/foo-00000002

Bridge 0001

ast_bridge_kick(b01, pjsip_foo);

(default, s, 1)

Page 47: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

47Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Releasing a Channel

PBX Thread

PBX Thread

PJSIP/foo-00000001

PJSIP/foo-00000002

Bridge 0001

ast_bridge_kick(b01, pjsip_foo);

(default, s, 1)

Page 48: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

48Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Bridging Events

Event: BridgeEnterChannel: PJSIP/foo­00000001Bridge: 0001

Event: BridgeEnterChannel: PJSIP/bar­00000002Bridge: 0001

Event: BridgeLeaveChannel: PJSIP/bar­00000002Bridge: 0001

Event: BridgeLeaveChannel: PJSIP/foo­00000001Bridge: 0001

Page 49: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

49Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version I

Page 50: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

50Creative Innovation – Customer Satisfaction – Continual Quality Improvement

What about Native Bridging?

Page 51: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

51Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version II: Native Bridging Modules

Or: Let's not rewrite res_rtp_asterisk just yet

Page 52: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

52Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version II

Page 53: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

53Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Mixing Strategies

PJSIP-foo joins Simple – 1 channel

Page 54: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

54Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Mixing Strategies

PJSIP-foo joins

DAHDI-i1 joins

Simple – 1 channel

Simple – 2 channels

Page 55: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

55Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Mixing Strategies

PJSIP-foo joins

DAHDI-i1 joins

PJSIP-yack joins

Simple – 1 channel

Simple – 2 channels

Softmix – 3 channels

Page 56: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

56Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Mixing Strategies

PJSIP-foo joins

DAHDI-i1 joins

PJSIP-yack joins

DAHDI-i1 leaves

Simple – 1 channel

Simple – 2 channels

Softmix – 3 channels

Native RTP (local) – 2 channels

Page 57: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

57Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Mixing Strategies

PJSIP-foo joins

DAHDI-i1 joins

PJSIP-yack joins

DAHDI-i1 leaves

PJSIP-bar joins

Simple – 1 channel

Simple – 2 channels

Softmix – 3 channels

Native RTP (local) – 2 channels

Softmix – 3 channels

Page 58: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

58Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Mixing Strategies

PJSIP-foo joins

DAHDI-i1 joins

PJSIP-yack joins

DAHDI-i1 leaves

PJSIP-bar joins

PJSIP-yack leaves

Simple – 1 channel

Simple – 2 channels

Softmix – 3 channels

Native RTP (local) – 2 channels

Softmix – 3 channels

Native RTP (rmt) – 2 channels

Page 59: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

59Creative Innovation – Customer Satisfaction – Continual Quality Improvement

What about Features?

Page 60: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

60Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version III: Features

Or: Users like buttons

Page 61: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

61Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version III

Page 62: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

62Creative Innovation – Customer Satisfaction – Continual Quality Improvement

What about Parking?

Page 63: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

63Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version IV: Parking as a Bridge

Or: Hold All the Things

Page 64: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

64Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Parking

Create a new bridge mixing technology, 'holding'– Drops all media read from channels– Entertains channels with music, ringing, or white

noise

Page 65: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

65Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Parking

Create a new bridge mixing technology, 'holding'– Drops all media read from channels– Entertains channels with music, ringing, or white

noise

Announcements– Channels join either as participant or announcer– Announcer channels broadcast their media to all

participants

Page 66: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

66Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Parking

Create a new bridge mixing technology, 'holding'– Drops all media read from channels– Entertains channels with music, ringing, or white

noise

Announcements– Channels join either as participant or announcer– Announcer channels broadcast their media to all

participants

Parking– Park puts channel into holding bridge– Pickup pulls channel from bridge and puts it into a

standard 'mixing' bridge with the pickup-ee

Page 67: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

67Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version IV

Page 68: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

68Creative Innovation – Customer Satisfaction – Continual Quality Improvement

What about CDRs/CEL/AMI?

Page 69: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

69Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version V: StasisOr: If we never charged people money this would be

much easier

Page 70: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

70Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Consuming Bridge State

Do not put CDR, CEL, AMI logic back into Bridging Framework

Stasis: Internal pub/sub message bus– Bridge state is published onto bus– AMI, CDR, CEL become consumers of that state

Page 71: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

71Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Consuming Bridge State

Stasis

BridgingFramework

AMI CDR CEL

cdr.csv

Page 72: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

72Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Consuming Bridge State

Stasis

BridgingFramework

AMI CDR CEL

cdr.csv

Channel pulled from bridge

Page 73: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

73Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Consuming Bridge State

Stasis

BridgingFramework

AMI CDR CEL

cdr.csv

Channel pulled from bridge

Publish ast_bridge_snapshot

Page 74: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

74Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Consuming Bridge State

Stasis

BridgingFramework

AMI CDR CEL

Channel pulled from bridge

Publish ast_bridge_snapshot

Raise ChannelLeftBridge event

Page 75: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

75Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Consuming Bridge State

Stasis

BridgingFramework

AMI CDR CEL

cdr.csv

Channel pulled from bridge

Publish ast_bridge_snapshot

Update state of CDRWrite CDR out to file

Page 76: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

76Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Consuming Bridge State

Stasis

BridgingFramework

AMI CDR CEL

Channel pulled from bridge

Publish ast_bridge_snapshot

Write BridgeExitevent to database

Page 77: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

77Creative Innovation – Customer Satisfaction – Continual Quality Improvement

What about Local Channel

Optimization?

Page 78: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

78Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version VI: Local Channels

Or: Oh Snap.

Page 79: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

79Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Optimization: Bridge Swap

PJSIP/foo-00000001 Bridge 0001

PJSIP/bar-00000002

Bridge 0002

Local/omg-00000003;2

Local/omg-00000003;1

Page 80: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

80Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Optimization: Bridge Swap

PJSIP/foo-00000001 Bridge 0001

Bridge 0002

Local/omg-00000003;2Local/omg-00000003;1

PJSIP/bar-00000002

Page 81: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

81Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Optimization: Bridge Swap

PJSIP/foo-00000001 Bridge 0001

Bridge 0002

Local/omg-00000003;2Local/omg-00000003;1

PJSIP/bar-00000002

Page 82: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

82Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Optimization: Bridge Merge

PJSIP/foo-00000001 Bridge 0001

PJSIP/bar-00000002

Bridge 0002

Local/omg-00000003;2

Local/omg-00000003;1

PJSIP/yack-00000004

Page 83: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

83Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Optimization: Bridge Merge

PJSIP/foo-00000001

Bridge 0001

PJSIP/bar-00000002

Local/omg-00000003;2

Local/omg-00000003;1

PJSIP/yack-00000004

Page 84: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

84Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Optimization: Bridge Merge

PJSIP/foo-00000001

Bridge 0001

PJSIP/bar-00000002

Local/omg-00000003;2

Local/omg-00000003;1

PJSIP/yack-00000004

Page 85: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

85Creative Innovation – Customer Satisfaction – Continual Quality Improvement

What happens when a Local

channel merges into ConfBridge?

Page 86: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

86Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Version VII: Class Bridges

Or: That's it, I'm taking my ball and going home now.

Page 87: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

87Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Class Bridges

Some bridges have application state in addition to their mixing strategy– ConfBridge: marked users, admins, etc.– Parking: which parking lot am I in– Stasis: ARI specific logic to know who controls a

channel– Agent waiting pools: how long has a Queue agent

been waiting for a call

Page 88: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

88Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Class Bridges

Some bridges have application state in addition to their mixing strategy– ConfBridge: marked users, admins, etc.– Parking: which parking lot am I in– Stasis: ARI specific logic to know who controls a

channel– Agent waiting pools: how long has a Queue agent

been waiting for a call

Solution: give a bridge a 'class' with callbacks to update their application state

ConfBridge: still prohibited

Page 89: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

89Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Page 90: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

90Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Big Picture

Page 91: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

91Creative Innovation – Customer Satisfaction – Continual Quality Improvement

The Current* Bridging Framework

Page 92: Architecture of Asterisk 13 - Kamailio · Architecture of Asterisk 13 Matt Jordan @mattcjordan Director of Technology, Digium ... Kamailio World: –2014 - Asterisk's PJSIP stack

92Creative Innovation – Customer Satisfaction – Continual Quality Improvement

Questions?