54
www.woomeravoip.o rg Woomera Accelerating access to VoIP Cluecon 2009, 7 August 2009 Craig Southeren

Www.woomeravoip.org Woomera Accelerating access to VoIP Cluecon 2009, 7 August 2009 Craig Southeren

Embed Size (px)

Citation preview

www.woomeravoip.org

WoomeraAccelerating access to VoIP

Cluecon 2009, 7 August 2009Craig Southeren

www.woomeravoip.org

Introduction

• Co-founder of OpenH323 project• Co-maintainer of Opal project• Post Increment– Consulting– Contracting– Open source development

www.woomeravoip.org

What problems are we trying to solve?

www.woomeravoip.org

Business Problems

• Create complex VoIP systems• Remote customers• Division of labour• Blame game• Scalability, redundancy, availability• Minimise duplicated code• Different programming languages

www.woomeravoip.org

Mix closed source and open source software, and incompatible open

source licenses

www.woomeravoip.org

Different operating systems in the same product

www.woomeravoip.org

We want simple and easy

www.woomeravoip.org

We don’t want lots of baggage

www.woomeravoip.org

The solution

• Socket-based protocol• Like HTTP or SMTP• Client-server architecture• Commands to make/hangup/answer calls• Not as complex as SIP!• TCP socket for multiple calls• MPL/GPL license

www.woomeravoip.org

Woomera

• Overriding principle: KISS• Use sockets to connect components• Text based protocol, not an API• Server/client architecture• Command/response for actions• Events for status changes• Not reinvention of SIP/MGCP/H.323

www.woomeravoip.org

One to one

• Driver abstraction

Server

Application

Client

VoIP protocol

Woomera

Woomera Server

www.woomeravoip.org

Many to one

• Application redundancy

Server

Application

Client

VoIP protocolWoo

mer

a

Woomera Server

Application

Client

www.woomeravoip.org

Server

One to many

• Load balancing

Server

Application

Client

VoIP protocol

Woo

mer

a

Woomera Server

Woomera Server VoIP protocol

www.woomeravoip.org

Server

Many to many

• Full redundancy

Server

Application

Client

Woo

mer

a

Woomera Server

Application

Client

Woomera Server

VoIP protocol

VoIP protocol

www.woomeravoip.org

Message flow

• Client sends command, server responds• Server can send events at any time• No overlapped commands/responses• Use of multiple sockets encouraged• TCP socket for commands• UDP socket for media• Extensible

www.woomeravoip.org

Message format

Same as SIP/HTTP/SMTP

command + argsMIME information<empty line>Optional body

• EventEVENT INCOMINGUnique-Call-Id: 20000000Protocol: sip<empty line>

www.woomeravoip.org

Command and media

• Commands sent over TCP• Audio media sent over UDP– PCM-16 / SLINEAR– uLaw/ALaw

• Audio can flow direct

• Audio can be proxied

Server ServerClient

media

cmds cmds

mediaServer Server

Client

media

cmds cmds

www.woomeravoip.org

Outgoing callClient Server

www.woomeravoip.org

Outgoing call

CALL sip:[email protected]: 12.3.4.5:1000<empty line>

Client Server

www.woomeravoip.org

Outgoing call

CALL sip:[email protected]: 12.3.4.5:1000<empty line>

Client Server

200 Call startedUnique-Call-Id: 10000000<empty line>

www.woomeravoip.org

Outgoing call

CALL sip:[email protected]: 12.3.4.5:1000<empty line>

Client Server

200 Call startedUnique-Call-Id: 10000000<empty line>

EVENT PROCEEDINGUnique-Call-Id: 10000000<empty line>

www.woomeravoip.org

Outgoing call

CALL sip:[email protected]: 12.3.4.5:1000<empty line>

Client Server

200 Call startedUnique-Call-Id: 10000000<empty line>

EVENT PROCEEDINGUnique-Call-Id: 10000000<empty line>

EVENT CONNECTUnique-Call-Id: 10000000Raw-Audio: 67.8.9.1<empty line>

www.woomeravoip.org

Incoming call (part 1)Client Server

www.woomeravoip.org

Incoming call (part 1)Client Server

LISTEN<empty line>

www.woomeravoip.org

Incoming call (part 1)Client Server

LISTEN<empty line>

200 Listen accepted<empty line>

www.woomeravoip.org

Incoming call (part 1)Client Server

LISTEN<empty line>

200 Listen accepted<empty line>

..... some time later .....

www.woomeravoip.org

Incoming call (part 1)Client Server

EVENT INCOMINGUnique-Call-Id: 10000000Local-Number: 1234Remote-Number: 5678Protocol: sip<empty line>

LISTEN<empty line>

200 Listen accepted<empty line>

..... some time later .....

www.woomeravoip.org

Incoming call (part 2)Client Server

www.woomeravoip.org

Incoming call (part 2)Client Server

ACCEPTUnique-Call-Id: 10000000

Raw-Audio: 12.3.4.5:1000<empty line>

www.woomeravoip.org

Incoming call (part 2)Client Server

ACCEPTUnique-Call-Id: 10000000

Raw-Audio: 12.3.4.5:1000<empty line>

200 Call acceptedUnique-Call-Id: 10000000Raw-Audio: 67.8.9.1<empty line>

www.woomeravoip.org

Incoming call (part 2)

ANSWERUnique-Call-Id: 10000000

<empty line>

Client Server

ACCEPTUnique-Call-Id: 10000000

Raw-Audio: 12.3.4.5:1000<empty line>

200 Call acceptedUnique-Call-Id: 10000000Raw-Audio: 67.8.9.1<empty line>

www.woomeravoip.org

Incoming call (part 2)

ANSWERUnique-Call-Id: 10000000

<empty line>

Client Server

200 Call answeredUnique-Call-Id: 10000000<empty line>

ACCEPTUnique-Call-Id: 10000000

Raw-Audio: 12.3.4.5:1000<empty line>

200 Call acceptedUnique-Call-Id: 10000000Raw-Audio: 67.8.9.1<empty line>

www.woomeravoip.org

Local call hangupClient Server

www.woomeravoip.org

Local call hangupClient Server

HANGUPUnique-Call-Id: 10000000

<empty line>

www.woomeravoip.org

Local call hangupClient Server

HANGUPUnique-Call-Id: 10000000

<empty line>

200 Call hungupUnique-Call-Id: 10000000<empty line>

www.woomeravoip.org

Remote call hangupClient Server

www.woomeravoip.org

Remote call hangupClient Server

EVENT HANGUPUnique-Call-Id: 10000000<empty line>

www.woomeravoip.org

Remote call hangupClient Server

EVENT HANGUPUnique-Call-Id: 10000000<empty line>

HANGUPUnique-Call-Id: 10000000

<empty line>

www.woomeravoip.org

Remote call hangupClient Server

EVENT HANGUPUnique-Call-Id: 10000000<empty line>

HANGUPUnique-Call-Id: 10000000

<empty line>

200 Call hungupUnique-Call-Id: 10000000<empty line>

www.woomeravoip.org

DTMFClient Server

www.woomeravoip.org

DTMFClient Server

DTMFUnique-Call-Id: 10000000Content-Length: 11<empty line>14157773456

www.woomeravoip.org

DTMFClient Server

DTMFUnique-Call-Id: 10000000Content-Length: 11<empty line>14157773456

200 DTMF acceptedUnique-Call-Id: 10000000<empty line>

www.woomeravoip.org

DTMFClient Server

EVENT DTMFUnique-Call-Id: 10000000Content-Length: 11<empty line>14157773456

DTMFUnique-Call-Id: 10000000Content-Length: 11<empty line>14157773456

200 DTMF acceptedUnique-Call-Id: 10000000<empty line>

www.woomeravoip.org

H.323 and Woomera

CALL

Command H.323 PDU

H.225 SETUP

H.225 PROCEEDINGPROCEEDING

Event

H.225 CONNECTCONNECT

HANGUP H.225 RELEASE COMPLETE

H.225 RELEASECOMPLETE HANGUP

DTMF H.245 UI/RFC 2833

H.245 UI/RFC 2833 DTMF

INCOMING

ACCEPT H.225 ALERTING

ANSWER H.225 CONNECT

H.225 SETUP

www.woomeravoip.org

SIP and Woomera

CALL

Command SIP PDU

INVITE

180 RingingPROCEEDING

Event

200 OKCONNECT

HANGUP HANGUP

HANGUPHANGUP

DTMF INFO/RFC 2833

INFO/RFC 2833 DTMF

INCOMING

ACCEPT 180 RINGING

ANSWER 200 OK

INVITE

www.woomeravoip.org

Real-world example #1

Asterisk

chan_woomera

WoomeraOpal

H.323

H.323 for Asterisk

Woomera

www.woomeravoip.org

Real-world example #2

Jabber-based collaboration server

WOpenMCU

WoomeraOpal

Audio-conferencing for collaboration

WoomeraRTP

Jabber clients (2000+) WoomeraWoomera

Jabber

RTP

CLI

www.woomeravoip.org

Real-world example #3

WoomeraOpal

Multi-protocol router

Woomera

Inco

min

g le

g

Out

boun

d le

g

SIP, H.323 etc SIP, H.323 etc

www.woomeravoip.org

Real-world example #4

Control software

WOpenMCU

WoomeraOpal

Dealer trading room system

SIP gateway

Woomera

CLI

SIP handsets

www.woomeravoip.org

Libwoomera

• “C” interface• Single threaded• Triple license : GPL/LGPL/MPL• Server and client• Windows and Unix• Self-proxy• Auto-discovery of servers

www.woomeravoip.org

Clients

• WOpenMCU – audio MCU• Wproxy – back to back proxy• chan_woomera – asterisk channel• Sangoma Media Gateway

www.woomeravoip.org

Servers

• WoomeraOPAL – SIP, H.323, IAX, ivr, fax• WoomeraRTP – raw RTP and SRTP• WoomeraPRI – E1/T1 over Sangoma PRI• Sangoma – BRI and SS7

www.woomeravoip.org

Future work

• Draft RFC• Video support• Hold and transfer• Server limits and soft

shutdown• Secure command

channel• Secure media

• Different raw media types

• Call bridging• Libwoomera

enhancements

www.woomeravoip.org

Questions ?

[email protected]

http://www.woomeravoip.org