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

Woomera Accelerating access to VoIP

  • Upload
    riva

  • View
    22

  • Download
    0

Embed Size (px)

DESCRIPTION

Woomera Accelerating access to VoIP. Cluecon 2009, 7 August 2009 Craig Southeren. Introduction. Co-founder of OpenH323 project Co-maintainer of Opal project Post Increment Consulting Contracting Open source development. What problems are we trying to solve?. Business Problems. - PowerPoint PPT Presentation

Citation preview

Page 1: Woomera Accelerating access to VoIP

www.woomeravoip.org

WoomeraAccelerating access to VoIP

Cluecon 2009, 7 August 2009Craig Southeren

Page 2: Woomera Accelerating access to VoIP

www.woomeravoip.org

Introduction

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

Page 3: Woomera Accelerating access to VoIP

www.woomeravoip.org

What problems are we trying to solve?

Page 4: Woomera Accelerating access to VoIP

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

Page 5: Woomera Accelerating access to VoIP

www.woomeravoip.org

Mix closed source and open source software, and incompatible open

source licenses

Page 6: Woomera Accelerating access to VoIP

www.woomeravoip.org

Different operating systems in the same product

Page 7: Woomera Accelerating access to VoIP

www.woomeravoip.org

We want simple and easy

Page 8: Woomera Accelerating access to VoIP

www.woomeravoip.org

We don’t want lots of baggage

Page 9: Woomera Accelerating access to VoIP

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

Page 10: Woomera Accelerating access to VoIP

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

Page 11: Woomera Accelerating access to VoIP

www.woomeravoip.org

One to one

• Driver abstraction

Server

Application

Client

VoIP protocol

Woomera

Woomera Server

Page 12: Woomera Accelerating access to VoIP

www.woomeravoip.org

Many to one

• Application redundancy

Server

Application

Client

VoIP protocolWoo

mer

a

Woomera Server

Application

Client

Page 13: Woomera Accelerating access to VoIP

www.woomeravoip.org

Server

One to many

• Load balancing

Server

Application

Client

VoIP protocol

Woo

mer

a

Woomera Server

Woomera Server VoIP protocol

Page 14: Woomera Accelerating access to VoIP

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

Page 15: Woomera Accelerating access to VoIP

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

Page 16: Woomera Accelerating access to VoIP

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>

Page 17: Woomera Accelerating access to VoIP

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

Page 18: Woomera Accelerating access to VoIP

www.woomeravoip.org

Outgoing callClient Server

Page 19: Woomera Accelerating access to VoIP

www.woomeravoip.org

Outgoing call

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

Client Server

Page 20: Woomera Accelerating access to VoIP

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>

Page 21: Woomera Accelerating access to VoIP

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>

Page 22: Woomera Accelerating access to VoIP

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>

Page 23: Woomera Accelerating access to VoIP

www.woomeravoip.org

Incoming call (part 1)Client Server

Page 24: Woomera Accelerating access to VoIP

www.woomeravoip.org

Incoming call (part 1)Client Server

LISTEN<empty line>

Page 25: Woomera Accelerating access to VoIP

www.woomeravoip.org

Incoming call (part 1)Client Server

LISTEN<empty line>

200 Listen accepted<empty line>

Page 26: Woomera Accelerating access to VoIP

www.woomeravoip.org

Incoming call (part 1)Client Server

LISTEN<empty line>

200 Listen accepted<empty line>

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

Page 27: Woomera Accelerating access to VoIP

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 .....

Page 28: Woomera Accelerating access to VoIP

www.woomeravoip.org

Incoming call (part 2)Client Server

Page 29: Woomera Accelerating access to VoIP

www.woomeravoip.org

Incoming call (part 2)Client Server

ACCEPTUnique-Call-Id: 10000000Raw-Audio: 12.3.4.5:1000<empty line>

Page 30: Woomera Accelerating access to VoIP

www.woomeravoip.org

Incoming call (part 2)Client Server

ACCEPTUnique-Call-Id: 10000000Raw-Audio: 12.3.4.5:1000<empty line>

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

Page 31: Woomera Accelerating access to VoIP

www.woomeravoip.org

Incoming call (part 2)

ANSWERUnique-Call-Id: 10000000<empty line>

Client Server

ACCEPTUnique-Call-Id: 10000000Raw-Audio: 12.3.4.5:1000<empty line>

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

Page 32: Woomera Accelerating access to VoIP

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: 10000000Raw-Audio: 12.3.4.5:1000<empty line>

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

Page 33: Woomera Accelerating access to VoIP

www.woomeravoip.org

Local call hangupClient Server

Page 34: Woomera Accelerating access to VoIP

www.woomeravoip.org

Local call hangupClient Server

HANGUPUnique-Call-Id: 10000000<empty line>

Page 35: Woomera Accelerating access to VoIP

www.woomeravoip.org

Local call hangupClient Server

HANGUPUnique-Call-Id: 10000000<empty line>

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

Page 36: Woomera Accelerating access to VoIP

www.woomeravoip.org

Remote call hangupClient Server

Page 37: Woomera Accelerating access to VoIP

www.woomeravoip.org

Remote call hangupClient Server

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

Page 38: Woomera Accelerating access to VoIP

www.woomeravoip.org

Remote call hangupClient Server

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

HANGUPUnique-Call-Id: 10000000<empty line>

Page 39: Woomera Accelerating access to VoIP

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>

Page 40: Woomera Accelerating access to VoIP

www.woomeravoip.org

DTMFClient Server

Page 41: Woomera Accelerating access to VoIP

www.woomeravoip.org

DTMFClient Server

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

Page 42: Woomera Accelerating access to VoIP

www.woomeravoip.org

DTMFClient Server

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

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

Page 43: Woomera Accelerating access to VoIP

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>

Page 44: Woomera Accelerating access to VoIP

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

Page 45: Woomera Accelerating access to VoIP

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

Page 46: Woomera Accelerating access to VoIP

www.woomeravoip.org

Real-world example #1

Asterisk

chan_woomera

WoomeraOpal

H.323

H.323 for Asterisk

Woomera

Page 47: Woomera Accelerating access to VoIP

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

Page 48: Woomera Accelerating access to VoIP

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

Page 49: Woomera Accelerating access to VoIP

www.woomeravoip.org

Real-world example #4

Control software

WOpenMCU

WoomeraOpal

Dealer trading room system

SIP gateway

Woomera

CLI

SIP handsets

Page 50: Woomera Accelerating access to VoIP

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

Page 51: Woomera Accelerating access to VoIP

www.woomeravoip.org

Clients

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

Page 52: Woomera Accelerating access to VoIP

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

Page 53: Woomera Accelerating access to VoIP

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

Page 54: Woomera Accelerating access to VoIP

www.woomeravoip.org

Questions ?

[email protected]

http://www.woomeravoip.org