Upload
meghan-vanessa-jacobs
View
220
Download
2
Tags:
Embed Size (px)
Citation preview
www.woomeravoip.org
Introduction
• Co-founder of OpenH323 project• Co-maintainer of Opal project• Post Increment– Consulting– Contracting– Open source development
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
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 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
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
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
HANGUPUnique-Call-Id: 10000000
<empty line>
200 Call hungupUnique-Call-Id: 10000000<empty line>
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
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