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