• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Fosdem2012 sayer-sems-sbc
 

Fosdem2012 sayer-sems-sbc

on

  • 1,208 views

SEMS, the SIP Express Media Server, is the media and application server counterpart to SIP Express Router aka Kamailio/OpenSER, the leading open source SIP Signalling server from iptel.org. Since 2004 ...

SEMS, the SIP Express Media Server, is the media and application server counterpart to SIP Express Router aka Kamailio/OpenSER, the leading open source SIP Signalling server from iptel.org. Since 2004 SEMS has been used to implement classical value added services in VoIP networks like announcements, conferencing, voicemail and RBT, and converged services as web conferencing and voice message broadcasting.

More recently, its integrated Back-to-Back User Agent has been extended and improved for flexibility and high performance, making it one of the few open source solutions for high volume session border control. But there's more to it: Thanks to its flexibility, it can also be used as core call routing element, and be a useful tool in various situations for the VoIP platform engineer.

The talk will present the SEMS SBC functionality and typical performance numbers, and then show how developers can use the internal call control API to create custom call routing in the SBC with two examples: Using a RESTful interface, a web app server implemented with the Play! framework is used for user controlled call routing, and by accessing a blacklist database in REDIS, SEMS' SBC can be used to block SPIT.

Statistics

Views

Total Views
1,208
Views on SlideShare
1,113
Embed Views
95

Actions

Likes
0
Downloads
12
Comments
0

1 Embed 95

http://lanyrd.com 95

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Fosdem2012 sayer-sems-sbc Fosdem2012 sayer-sems-sbc Presentation Transcript

    • SEMS SBCStefan SayerCEO, FRAFOS GmbHFOSDEM 2012, 05.02.2012
    • Contents● SEMS project● The flexible, open SBC● SBC programmability 2
    • The SIP Express Media Server● Media, application server from iptel.org● Only 1 year younger than SER (*2002)● Widely used by carriers, ITSPs, OEMs, Universities, hobbyists 3
    • SEMS use cases 4
    • SEMS: The VAS platform● C++, Python APIs● DSM: State charts scripting engine 5
    • SBCs – what? “SBCs are SIP application servers with focus on security and isolation” 6
    • SBCs – the need● Security requirements are rising → Policy enforcement and control at UNI/NNI● Topology hiding is necessary → NAT and security● Core call controls become big and slow → Routing and service management at NNI● SIP implementations are buggy → “SIP normalization”, translation 7
    • SBCs – the special case● On signaling and media plane● Call stateful – high requirements for availability and scalability● Interworking with all “SIP dialects” 8
    • The SEMS SBC● Widely deployed SIP technology● Broad range of media capabilities● Configurable transparency● Policy programmability – “SBC platform” 9
    • Signaling Features● Topology hiding● From, To, RURI, Contact, Call-ID manipulation● Header and message filter● Adding headers● Reply code translation● SIP authentication● SIP Session Timer, Call Timer● Prepaid accounting 10
    • Media features● RTP anchoring / media steering● Physical network separation● NAT traversal, symmetric RTP (comedia style)● Codec filter● SDP normalization 11
    • Flexible profile based control sbc.conf iptelecho.sbcprofile.conf load_profiles=iptelecho URI=sip:echo@iptel.org active_profile=iptelecho From=<anonymous@mynet.net> ... To=<sip:echo@iptel.org> ... SEMS SBC# #U 210.13.3.122:5080 -> 210.13.3.100:5060 U 210.13.3.100:5060 -> 213.192.59.75:5060INVITE sip:+49123@osbc1.mynet.net SIP/2.0 INVITE sip:echo@iptel.org SIP/2.0From: “John” <sip:+431556221@mynet.net>;tag=12 From: <anonymous@mynet.net>;tag=3213To: “Clara” <+49123@mynet.net> To: <sip:echo@iptel.org>Call-ID: 3cde5d1a960a-dez6oz34llo4 Call-ID: y76IIPf4UD68bb... ... ● define SBC behaviour in profiles 12
    • Set RURI, From, To, Call-ID ... set_fromto.sbcprofile.conf URI=$tU@sbc1.mypeer.net From=<$fU@mynet.net> known To=<sip:$tU@mypeer.net> SER Call-ID=$ci_leg2 pseudo-variables ... SEMS SBC# #U 210.13.3.122:5080 -> 210.13.3.100:5060 U 210.13.3.100:5060 -> 213.192.59.75:5060INVITE sip:+49123@osbc1.mynet.net SIP/2.0 INVITE sip:+49123@sbc1.mypeer.net SIP/2.0From: “John” <sip:+431556221@mynet.net>;tag=12 From: <+431556221@mynet.net>;tag=3213To: “Clara” <+49123@mynet.net> To: <sip:+49123@mypeer.net>Call-ID: 3cde5d1a960a-dez6oz34llo4 Call-ID: 3cde5d1a960a-dez6oz34llo4_leg2... ... 13
    • Replacement patterns● RURI, From, To, PAI, PPI ($r, $f, $t, $a, $p)● Call-ID ($ci)● src, dst IP address/port ($si, $pi, $Ri, $Rp)● P-App-Param hdr parameter ($P(myparam))● Header value ($H(P-My-Header))● Map any value via regexp ($M(val=>map)) 14
    • Control SBC from proxy dynamic_rtprelay_sst.sbcprofile.conf ... enable_rtprelay=$H(P-Enable-RTPRrelay) enable_session_timer=$H(P-Enable-SST) ... SEMS SBC# #U 210.13.3.122:5080 -> 210.13.3.100:5060 U 210.13.3.100:5060 -> 213.192.59.75:5060INVITE sip:+49123@osbc1.mynet.net SIP/2.0 INVITE sip:+49123@sbc1.mypeer.net SIP/2.0From: “John” <sip:+431556221@mynet.net>;tag=12 From: <+431556221@mynet.net>;tag=3213To: “Clara” <+49123@mynet.net> To: <sip:+49123@mypeer.net>Call-ID: 3cde5d1a960a-dez6oz34llo4 Call-ID: 3cde5d1a960a-dez6oz34llo4_leg2P-Enable-RTPRelay: no Session-Expires: 300P-Enable-SST: yes ...... 15
    • Profile selection● Static ● active_profile=static_config● Pseudo-var ipmap.conf ● active_profile=$rU ^10.0..*=>internal1 ^10.1..*=>internal2● Mapping urimap.conf iptel.org=>iptel ● active_profile=$M(val=>map) fliptel.com=>fliptel● Select first matched ● active_profile=$M($si=>ipmap), $M($ru=>urimap),$H(P-SBCProfile),refuse 16
    • Manage SBC● sems-sbc-* tools ● get and set active profile ● load and reload profiles ● load and reload mappings● Track profile versions with MD5 hash● Get statistics from monitoring 17
    • Processing modelUDP other receiver/msg parser event sources threadsSession Container RTP processing session pool event queues event processing● Signaling: Async, one thread per call or thread pool● Media: Sync, Thread pool 18
    • SEMS B2BUA architecture DIALOG DIALOG SIP message event SIP message● Two complete, separate instances of dialog handling: Locally SIP correct 19
    • E.g.: Session Timers SST: refresh! Re-INVITE SDP changed? 200 Re-INVITE event: session changed 200● Use UPDATE or re-INVITE for refresh● SST and timer values per leg● Try to have e2e refresh 20
    • SBC programmability● Pluggable Call Control modules for custom SBC application scenario● e.g. policing with external data source Call control Call control Call control SBC SEMS core 21
    • Call control SBC-API● V1: connect(...), start(...), end(...)● Control SBC through call profile object● Pattern replacements (provisioning) in both input and output● Modules: CDR generation, call timer, prepaid, parallel calls limit, REST/http, REDIS blacklist 22
    • Programmability example (1)● Call Forward settings via Web App● Destination queried via REST interface 23
    • Minimal Play! Web app 24
    • ...with CRUD module 25
    • REST call control module● Using libcurl for http request● Result expected as JSON or TEXT (key=valuen) 26
    • Programmability example (2)● In-memory Blacklist DB: REDIS● Connection pool● Configurable command ● SMEMBER blacklist $fU ● rate limiting with ZRANGE ● More complex logic in lua ● ... 27
    • Programmability example (3)FRAFOS:SBC withProvisioning andOAM GUI 28
    • FRAFOS: SBC high availability● Replication of call state to hot standby● Transparent fail-over 29
    • SBC performance 30
    • Thank You.http://iptel.org/sems