SDS Foil no 1 PBX Make your own PBX – solution sketch.

13
SDS Foil no 1 PBX Make your own PBX – solution sketch

Transcript of SDS Foil no 1 PBX Make your own PBX – solution sketch.

SDSFoil no 1

PBX

Make your own PBX – solution sketch

SDSFoil no 2

First structure

• Is this sufficient to make a real PBX?• Is this sufficient to make a real PBX?

system LocalSwitch

t[*]:Terminal ua[*]:UserAgtMessage

router

Nameserver

SDSFoil no 3

Voice over IP solution

system LocalSwitch

t[*]:Terminal ua[*]:UserAgtlMessage

router

Nameserver

IP network

voice

SDSFoil no 4

Line switched voice solution

system LocalSwitch

t[*]:Terminal ua[*]:UserAgtlMessage

router

Nameserver

Line switch

voice

SDSFoil no 5

First step – the a role as specified in the MSCprocess type UserAgent

1(2)

CallTo

Idle

Alerting

Inviting

Alerted

Request

Busy

Idle

Connect

Alerted

Connected

Busy

Connected-a

SDSFoil no 6

Second step – adding the b role

process type UserAgent1(2)

CallTo

Idle

Alerting

Inviting

Alerted

Setup

Busy

Idle

Answer

Ringing

Connect

Busy

Request

Ringing

Ringing

Alerting

Connected-b

Ringing

Connect

Alerted

Connected

Connected-a

Ringing

Note that addressing is not considered yetNote that disconnection is not shown

SDSFoil no 7

Third step – considering signal addressing process type UserAgent

1(2)

CallTo(b,ta)

Idle

Alerting

Inviting

Alerted

Request To b

Busy

Idle

Connect

Alerted

Connect To ta

Busy To ta

Connected-a

DCL a,b,ta PId;

SDSFoil no 8

Fourth step – considering multiple initiatives and busyprocess type UserAgent

2(2)

*(Idle)

Request

-

Busy

Note that Busy handling is very simple hereNote that CallTo may collide with Request

SDSFoil no 9

Remarks

• What if the b agent is identified by an external name instead of a PId – how to get the b PId then??

• What if more intelligent busy treatment is needed?

• What if the b agent is identified by an external name instead of a PId – how to get the b PId then??

• What if more intelligent busy treatment is needed?

SDSFoil no 10

Adding allocator and nameserver

system LocalSwitch

nameserver

ua:UserAllo

us:UserServ

U(*):UserAgent

MessageRouter

t[*]:Terminal

• Note that external names maps to allocators now!

• Note that we need to: 1) define the behaviour of UserAllo and 2) change the previous UserAgt to become the new UserServer.

• Note that we may split the UserServer according to roles: Originating (A) and Terminating (B)

• Note that external names maps to allocators now!

• Note that we need to: 1) define the behaviour of UserAllo and 2) change the previous UserAgt to become the new UserServer.

• Note that we may split the UserServer according to roles: Originating (A) and Terminating (B)

SDSFoil no 11

Adding the allocators and the nameserver

CallTo Request_self

MSC Succesful_Outgoing_Call_modified

AlertingAlerting

ReleaseComplete

Connected

Disconnect

a:Terminal a: UserServer b:UserServer

Connect

b:Terminal

RingingAnswer

b:UserAlloa:UserAllo

Grant_self

RequestGrant Sieze

Free Free

LookupLookupResult

Nameserver

SDSFoil no 12

Adding agents for external switches

• If we have a standard internal interface, we can just add different types of agents!

• If we have a standard internal interface, we can just add different types of agents!

system LocalSwitch

nameserver

ua:UserAllo

us:UserServ

U(*):UserAgent

MessageRouter

t[*]:Terminal

(*):NodeType1

pa:LinkAllo

l(l):protokol

o(k):OtherAgent

SDSFoil no 13

Adding agents for operators

• If we have a standard internal interface, we can just add different types of agents!

• If we have a standard internal interface, we can just add different types of agents!

system LocalSwitch

nameserver

ua:UserAllo

us:UserServ

U(*):UserAgent

MessageRouter

t[*]:Terminal

(*):NodeType1

pa:LinkAllo

l(l):protokol

o(k):OtherAgent

Oa:OPAllo

Os:OpServ

O(*):OPAgent

ot[*]:Operatorl