Running Asterisk in a Corporate Environment: a...

19
Stephen Uhler Astricon 2005 Sun Labs (1/19) Running Asterisk in a Corporate Environment: a Beginner’s Tale Stephen Uhler Sun Microsystems Laboratories © 2005, Sun Microsystems

Transcript of Running Asterisk in a Corporate Environment: a...

Stephen Uhler Astricon 2005 Sun Labs (1/19)

Running Asterisk in a CorporateEnvironment: a Beginner’s Tale

Stephen UhlerSun Microsystems

Laboratories

© 2005, Sun Microsystems

Stephen Uhler Astricon 2005 Sun Labs (2/19)

How I Got into the Phone Business

Stephen Uhler Astricon 2005 Sun Labs (3/19)

Early Asterisk Development

Stephen Uhler Astricon 2005 Sun Labs (4/19)

The Problem

?Corporate LAN

Internet

firewall

VOIPPOTS

Stephen Uhler Astricon 2005 Sun Labs (5/19)

VOIP Related Protocols

SIP

DHCP

RTP

SDP

STUN NTPIAX

MGCP

H.323

SCCP

TFTPT1

Q.931

G.711u

G.729

SMS

ISDN/PRI

ADSI

VOFR

SIA

RPT TDMOE

CLASS

CNI

ENUM

OSP

SPEEX

ILBCADPCM

DTMF

E1

POTS

E.164GSM

Stephen Uhler Astricon 2005 Sun Labs (6/19)

*

The Solution

*SIP

IAXZap/T1/ISDN/PRI

Sparc / Solaris

Sun / Linux

Stephen Uhler Astricon 2005 Sun Labs (7/19)

Phone-y Expectations

“Can you hear me now?”

The good-old days, whenhanging-up on someoneactually meant something

Stephen Uhler Astricon 2005 Sun Labs (8/19)

DHCPin a Corporate Environment

• The “POTS” equivalent ofconnecting the wires– You don’t own it– It’s broken– It’s easy to spoof– The phones won’t work

without it

Stephen Uhler Astricon 2005 Sun Labs (9/19)

The Pieces(from the config file perspective)

• sip.conf– To connect to commercial VOIP phones

• iax.conf– To traverse the corporate firewall

• zapata.conf– To connect to the existing telephony infrastructure

• extensions.conf– To tie everything together

Stephen Uhler Astricon 2005 Sun Labs (10/19)

SIP: Take 1

Sep 23 17:37:58 NOTICE[29805]: chan_sip.c:9530handle_request_register: Registration from 'stephen <sip:stephen@sip>' failed for '129.150.27.47'

sip.conf[xlite] type=friend username=stephen secret=a_secret callerid=“Stephen" <18888> authorization??

Stephen Uhler Astricon 2005 Sun Labs (11/19)

REGISTER sip:sip SIP/2.0 From: stephen <sip:stephen@sip>;tag=211106824 To: stephen <sip:stephen@sip> Contact: "stephen" <sip:[email protected]:5060> Call-ID: 2678041C0DAD46D08CC6E6913B6CCD04@sip Authorization: Digest username=“sauhler",realm="asterisk", …

SIP: Take 2sip.conf[stephen] type=friend username=stephen secret=a_secret callerid=“Stephen" <18888> authorization?? must match

for *

Stephen Uhler Astricon 2005 Sun Labs (12/19)

Connecting *’s with IAX:Making a VOIP “null modem” cable

Master Slave

[slave]

type=friendauth=md5

username=master

secret=secret

context=from_slavepeercontext=from_master

host=dynamic

[master]

type=friendauth=md5

username=slave

secret=secret

context=from_masterpeercontext=from_slave

host=master.com

register=>slave: [email protected]

Stephen Uhler Astricon 2005 Sun Labs (13/19)

Getting Zapped• How (not) to connect to the Company PBX• Learn “Telco Speak”

Connect the TE110P to the G3R through the120A2 CSU module with a TN464 circuit packconfigured for ISDN-PRI protocol version “B”with mulaw companding over a T1 cross-cable.

Stephen Uhler Astricon 2005 Sun Labs (14/19)

Putting Contexts in Context• Calls enter a context from a channel

– SIP, IAX, Zap...• Specify context name with:

– context=name iax.conf, sip.conf …– [name] extensions.conf

• Name context based on capability, nottechnology

• Put capabilities that connect channels intheir own contexts

Stephen Uhler Astricon 2005 Sun Labs (15/19)

More Context

[local] exten=>101,1,Dial(SIP/poly_123... exten=>102,1,Dial(SIP/grand_a47...

[pstn] exten=>_91X.,1,Dial(Zap/g1/${EXTEN})

[tests] exten=>911,1,Macro(emergency... exten=>600,1,echo...

[poly_63b] type=friend context=office

911

[office] include=>tests include=>local include=>pstn

Stephen Uhler Astricon 2005 Sun Labs (16/19)

Contexts – Call Flow

Master Slave

Dial(IAX2/slave/${EXTEN})

[from_slave]exten …

[slave]username=mastercontext=from_slavepeercontext=from_master

[master]username=slavecontext=from_masterpeercontext=from_slave

[from_master]exten …

iax.confextensions.conf

Stephen Uhler Astricon 2005 Sun Labs (17/19)

Contexts – Call Flow

Master Slave

[from_slave]exten …

Dial(IAX2/master/${EXTEN})

[slave]username=mastercontext=from_slavepeercontext=from_master

[master]username=slavecontext=from_masterpeercontext=from_slave

[from_master]exten …

iax.confextensions.conf

Stephen Uhler Astricon 2005 Sun Labs (18/19)

A Caller-Id Example; Send 5-digit caller-id to local extensions, 10-digit callerid otherwise[macro-t1]exten => s,1,Set(CALLERID(num)=${IF(${MATH(${LEN(${MACRO_EXTEN})}>5,i)} exten => s,2,Dial(Zap/g1/${MACRO_EXTEN})

${EXT_PREFIX}${C

ALLERID

(NU

M):-2}

?${CALLERID(NUM)})}) :

Stephen Uhler Astricon 2005 Sun Labs (19/19)

Sunlabs Setup

Home Office

NATFirewall

MainPBX

LegacyPBX *

SIPIAX

ISDN/PRI

*Asterisk

DMZGateway

*Sparc

Solaris

SatelliteOffice

*

“Mercury”Remote PBX

X18888

*ConferenceServer