Fun with Linux Telephony Donald Burr <dburr@DonaldBurr.com>
Topics We’ll Cover• Introduction & Terminology• Hardware and Software• Basic Setup• Advanced Conﬁguration• Q&A & Wrap Up
What the heck is VoIP?• Voice over IP (VoIP) is a family of technologies, methodologies, communication protocols, and transmission techniques for the delivery of voice communications and multimedia sessions over Internet Protocol (IP) networks, such as the Internet. Other terms frequently encountered and often used synonymously with VoIP are IP telephony, Internet telephony, voice over broadband (VoBB), broadband telephony, and broadband phone.
What the heck is VoIP?• Internet telephony refers to communications services—Voice, fax, SMS, and/or voice-messaging applications—that are transported via the Internet, rather than the public switched telephone network (PSTN). The steps involved in originating a VoIP telephone call are signaling and media channel setup, digitization of the analog voice signal, encoding, packetization, and transmission as Internet Protocol (IP) packets over a packet-switched network. On the receiving side, similar steps (usually in the reverse order) such as reception of the IP packets, decoding of the packets and digital-to-analog conversion reproduce the original voice stream. Even though IP Telephony and VoIP are terms that are used interchangeably, they are actually different; IP telephony has to do with digital telephony systems that use IP protocols for voice communication while VoIP is actually a subset of IP Telephony.VoIP is a technology used by IP telephony as a means of transporting phone calls.
What it all boils down to• Software (and hardware) that lets you use your computer as a telephone switchboard (PBX)... and so much more!
What can I do with it?• Multiple Extensions • Conferencing• Multiple “Channels” • Videoconferencing• “Follow Me” • Home Automation/ Control• Google Voice-type stuff • Podcasting!• Voicemail • Gated Entry/Checkpoint• Call Center • ...and more!
Why would you want to do this?• More control• More professional• Save money• Stick it to the man• Because it’s cool/fun/geeky
Terminology• SIP - Session Initiation Protocol • IETF protocol to handle VoiP and other text and multimedia services • aka RFC 3261• SIP Provider • Company that provides inbound and/or outbound calling via SIP• PBX - Private Branch Exchange • Box that sits at your business • One end connects to a line coming in from your phone company • All of your internal phones connect to it• IVR - Interactive Voice Response • “Press 1 for sales, press 2 for support, ...” • AKA Auto Attendant, Digital Receptionist
Terminology• PSTN - Public Switched Telephone Network • aka POTS - Plain Old Telephone Service• DID - Direct Inward Dialing • Service that gives you a phone number that you can route to your PBX• DISA - Direct Inward System Access • Allows an external caller to use internal-only features/dial out as if you were connected to the internal system • Kind of like a “VPN for telephones”• Trunking • A transmission channel between SIP provider and you • One or more - Sharing & managing multiple SIP providers• Dialplan • The “rules” for how to handle calls (both inbound and outbound)
Terminology• ATA • Analog Telephone Adapter • Lets you connect an old school phone to your VoiP service• IP Phone • Phone that has Internet and SIP connectivity “baked in” • Ethernet (or WiFi) instead of phone wire• Softphone • Computer or smartphone/tablet software that functions as an IP phone
Two main Linux VoiP software solutions• Asterisk • The “gold standard” • Older code (but still supported) • Still the recommended choice (IMHO)• FreeSwitch • The “new kid on the block” • Started by former Asterisk devs • Completely reimagined from scratch • Still relatively immature
Which one to use?• My vote: Asterisk • Tried and true code base • Well supported • Lots of documentation • Large user base/community
Where do I get it?• It’s in most distros’ package managers • But might not be the latest and greatest (or even complete) • Many distros don’t include the web GUI’s• Or you could download and install a “distribution” • Especially appropriate if you’re building a machine speciﬁcally for this purpose
Asterisk “Distributions”• Asterisk + Web GUI + extra “stuff” in a “one- click” install CD (like Mythbuntu, Knoppix, etc.)• Some of the more popular ones • AsteriskNOW • Trixbox • FreePBX• I’m sure there are plenty of others
My vote: FreePBX• Current version is using Asterisk 1.8 LTS• Uses a lean and mean (and secure) CentOS as its base OS• Really good web GUI• “Hooks” for customizing via editing conﬁg ﬁles
Here There Be Dragons• GUIs will get you 99% of the way there• For 99% of use cases that’s all you’ll need• But if you want ultimate ﬂexibility/tweakability, you’ll need to hack conﬁg ﬁles• Not harder than your average scripting language (and deﬁnitely easier than hardcore programming, C/C++, etc.)• Lots of documentation and places to get help (as well as pre-built “recipes”)
What You Need• PC capable of running Linux • Doesn’t have to be particularly powerful (great use for older PCs) • Virtual Machines may (or may not) work • Depends on your host computer • Fine for testing and light production work• Your Asterisk or Linux distro of choice• One or more phones • Technically you can even get by with 0 phones, but that’s not very fun...
What sorts of phonesare we talking about here?
Softphones for computers• Windows • MicroSIP: http://microsip.org.ua/downloads/• Mac: • Telephone (in Mac App Store)• Linux: • Twinkle (look in your distro’s repository)
Softphones for smartphones/tablets• iOS, Android, BlackBerry • LinPhone (In iOS and Android app stores) • NOT in BlackBerry App World. You’ll have to download it direct from their website: http://www.linphone.org/eng/download/ packages/blackberry.html)• Windows Phone 7? HP webOS? Symbian? • Sorry, you’re out of luck...
All of these are free* by the way *as in beer AND as in speech too!
But we all like to playwith teh shiny*, don’t we? *by this we mean hardware. Sadly, NOT free...
OBi 100• Cheap• Requires an analog telephone (it’s an ATA)• Best bet if you... • ...want to experiment with “real” hardware • ...are looking for a low-cost solution • ...already have a bunch of fairly nice (analog/ POTS) phones that you want to recycle
Handsets by Polycom, Cisco, etc.• The fancy IP Phones that the “big boys” use• Some are fairly inexpensive, but the price goes up fast• Lots of fancy features (on the higher end units)• Recommended for new business installations
Panasonic KX-TGP551T04 (plus, optionally, one or more KX-TPA50B04’s)• A fully featured IP phone at an excellent price• You get a corded phone AND a cordless phone too - what a deal!• Supports multiple lines (but all lines ring all phones)• Works great with Asterisk/FreePBX, despite what the literature says • They haven’t disabled this (yet...) • You can disable automatic ﬁrmware updates
Telephony interface boards• Connect to traditional types of trunk lines/systems (T1/E1, etc.)• Good for legacy installs
What if youdon’t want to (or can’t) run Ethernet?
Advantages/ Disadvantages• Advantages: • Disadvantages: • Tried and true • Not as cheap as other technology methods • Relatively inexpensive • Can be ﬂaky • Fairly easy to obtain • Multiple (non- interoperable) standards
Advantages/ Disadvantages• Advantages: • Disadvantages: • Works anywhere • Hard to ﬁnd where there’s WiFi - portable • Price disparity + not sure what you’re • Compact; no mess of getting extra cables, boxes, etc. to deal with • Requires WiFi
Advantages/ Disadvantages• Advantages: • Disadvantages: • In most cases, uses • You’re at the mercy of already-existing cordless phone equipment technology • Inexpensive • Range may not be as great • MacGyver would approve. • Some Ethernet is still involved
For More Info• http://DonaldBurr.com/ • Slides, notes, links to all websites/ products mentioned, notes on various conﬁguration tweaks I had to make, etc.
For More Info• Asterisk http://www.asterisk.org/ Main Asterisk site, documentation, forums, etc.• VoIP-Info http://www.voip-info.org/ Good general VoIP information site. Also includes Asterisk/ FreePBX conﬁguration instructions.• AsteriskGuru http://www.asteriskguru.com/ Asterisk documentation, user forums• Google is your friend
VoIP Providers• IPKall http://ipkall.com/ Free Washington State area dial-in only (DID) numbers, ideal for testing• CallCentric http://callcentric.com/ Reasonably priced dial-in (DID) and dial-out plans, for both individuals and businesses. Both local (all across the USA) and toll-free (1-800/877/866) numbers are available.• Disclaimer: I am not afﬁliated with any of these outﬁts, nor do I beneﬁt in any way from referring you to them.
Thanks for coming! May the Source be with you!