Using Open Source SIP to provide PBX-equivalent telephony features
Couldn't have done any of this without help from our friends (and vendors)
University of Pennsylvania
Started with their SER cfg and web provisioning tool
University of North Carolina Chapel Hill
MIT
OpenSER developers and users
special thanks to Anca Vamanu who wrote the PUA_BLA module
Voice-System SRL
Internet2 PIC, SIP.edu and VoIP working groups
First learned about SER and used the SIP.edu cookbook
Polycom
Cisco

NetPhone Voice over IP service in
Studebaker Building
First ÒnewÓ building on new Manhattanville campus
First step in replacing 20,000 obsolete ROLM PBX phones at 12 sites
700 users are administrative staff in IT, Finance and HR departments including senior VPs
PBX-equivalent phone service with some difficult (for SIP) ÒbusinessÓ features:
Bridged/Shared Line Appearance
Directed/Group Call Pickup
Compatibility/interop with existing PBX dial plan

Converged IP Network Applications
Physical access control
Surveillance cameras
Intrusion & fire systems monitoring
HVAC monitoring
Electric meters
NetPhone Voice over IP service

Survivable IP Network
L1
Diverse outside fiber routes – ring via Broadway & 12th Ave
Diverse in-building vertical riser fiber ring
Dual power supplies, dual UPS
Diesel generator
PoE for phones, cameras, WiFi APs
L2/L3
Dual switch uplinks w/HSRP
802.1q voice VLAN (learned via CDP)
protected by ACLs (port 5060)
POTS lines for emergency backup Òjust in caseÓ
Digital Centrex – same dial plan

CU NetPhone Feature Summary (1/2)
Multiple line appearances
Bridged lines
Privacy
Multiple ÒStackedÓ lines per registration
Call Waiting
Caller & Called number & name display
Speaker
Headset
Cordless Headset
Mute
Hold
Transfer – Consultative & Blind
Call Forward Always/Busy/No Answer
Do Not Disturb
Redial
Call Return
Call Log
Buzz Intercom
Intercom groups
Hunt groups
Call Park/Pickup
Directed/Group Call pickup
Message Waiting Indicator
Conference
Speed Dial
Distinctive Ring
Personal Security Codes
DTMF passthru

CU NetPhone Feature Summary (2/2)
Anonymous Call Reject
Anonymous Calling
Restricted Calling
Conference Bridge
Analog Lines
Fax
Voicemail as email
Voicemail forwarding
Voicemail broadcast
Voicemail distribution groups
Voicemail referral extension
Automatic Call Distribution
E911
Improvements over current PBX:
Call Waiting
Multiple Lines per Registration
Call Log
Redial
Voicemail as Email
Web settings (my NetPhone)

Slide 8
OpenSER – Open SIP Express Router
www.openser.org
branch of SER (www.iptel.org)
SIP Proxy, Registrar, Location Server, etc.
Modular add-ins for features like Presence
Automatic tracking of SIP session state
Scripting language permits customization to implement, e.g.:
dial plans (R-URI rewriting & forwarding)
permissions
selective editing of SIP requests/response headers, SDP, etc.
Does not handle media – use Asterisk.

Easy: Adding Called Name Display w/OpenSER

Polycom UA dials x12345 and the display shows name of called party
Easy: Adding Called Name Display w/OpenSER
Difficult: Bridged/Shared Line Appearance
Two or more phones all with the same ÒextensionÓ number, like a key system.
In-use LED goes on for all phones when one phone is taken Òoff hookÓ (before dialing, that is no INVITE or response to INVITE generated yet).
Off when phone is hung up (put Òon hookÓ) even if never dialed (BYE, CANCEL or response never generated).
Flashing LED on all phones when call is on hold.
Can put a call on hold on phone A and pick up from phone B
ÒSylantroÓ spec in draft-anil-sipping-bla-02.txt (expired:-(
Uses RFC3265 SUBSCRIBE/NOTIFY
RFC4235 ÒdialogÓ event package
RFC3680 ÒregÓ event package

Subscribing to Bridged Line Appearance Presence State
Phone REGISTERs with Proxy.
Proxy notifies Presence User Agent (PUA) of registration.
PUA SUBSCRIBEs to dialog state of Phone's Contact address (sip:12345@1.1.1.1)
Phone SUBSCRIBEs to dialog state of Address of Record (AOR) (sip:12345@sip.columbia.edu)
repeat for each additional bridged phone.

Phone A REGISTERs
Taking the phone off-hook and lighting all the LEDs
Phone A goes off-hook.  Lights the LED.
Sends NOTIFY to subscriber for sip:12345@1.1.1.1 (PUA)
PUA links this NOTIFY to subscriptions for AOR sip:12345@sip....
PUA sends NOTIFY to all subscribers (phone B, C, etc.)
Each of phone B, C, etc. turns on the LED.

Phone A NOTIFYs
A sample NOTIFY showing an in-process dialog
Moving an on-hold call from Phone A to Phone B
Phone C calls Phone A and is put on hold.
NOTIFY sent to PUA. This includes unique dialog identifier.
ÒholdÓ SDP sent to Phone C to stop the media.
All that other stuff happens to make the LEDs blink on all other phones.
Phone B goes off-hook to seize the on-hold call.
In addition to all the Presence NOTIFYs, Phone B:
Sends a CANCEL to Phone A
Sends a re-INVITE with Replaces header to Phone C.  This includes all the SDP negotiation to establish the new media path.

A sample Re-INVITE w/Replaces
Simple!
Iff your UAs implement the Sylantro stuff for BLA
At least it's a published spec!
Iff your UAs implement Re-INVITE w/Replaces header
What happens when Phone C is coming in from the legacy PBX?
It happens to work since Cisco media GWs implement Replaces.
But BLA can't be implemented across the PBX/SIP boundary
(notwithstanding some IOS bugs:-)
What happens when Phone C is coming in from an ITSP?
Sometimes works...
The moral of the story: There are too many ways to do the same thing in SIP and too many optional features to make this stuff work across multi-vendor systems.
Hence, recent formation of the IETF BLISS working group.