Liviu Chircu
- 4th Feb 2017 -
OpenSIPS - an event-driven SIP routing engine Liviu Chircu - 4th - - PowerPoint PPT Presentation
OpenSIPS - an event-driven SIP routing engine Liviu Chircu - 4th Feb 2017 - Outline Architecture timeline Event subscribe-notify Usage scenarios OpenSIPS scripts Conclusions Liviu Chircu - OpenSIPS Project -
Liviu Chircu - OpenSIPS Project
2
Liviu Chircu - OpenSIPS Project
OpenSIPS 1.X
4
Time SIP packet arrivals T h r e a d 1 T h r e a d 2 CPU bound I/O bound
Liviu Chircu - OpenSIPS Project
OpenSIPS 2.1, 2.2
5
Time SIP packet arrivals T h r e a d 1 CPU bound I/O bound
Liviu Chircu - OpenSIPS Project
Advanced SIP scenarios:
What’s missing:
processing contexts
6
Liviu Chircu - OpenSIPS Project
7
Time SIP packet arrivals T h r e a d 1 T h r e a d 2
SIP msg A SIP msg B
wait(event X) resume() event X
Liviu Chircu - OpenSIPS Project
8
Time SIP packet arrival T h r e a d 1
SIP msg A 4xx SIP reply
wait(event X) resume()
timeout!
Liviu Chircu - OpenSIPS Project
9
Time SIP packet arrivals T h r e a d 1 T h r e a d 2
SIP msg A SIP msg B
trigger(handler, eventX) eventX handler
Liviu Chircu - OpenSIPS Project
11
Liviu Chircu - OpenSIPS Project
12
Liviu Chircu - OpenSIPS Project
13
Liviu Chircu - OpenSIPS Project
15
INVITE bob 1xx PN REGISTER INVITE bob
Liviu Chircu - OpenSIPS Project
Current way
16
Liviu Chircu - OpenSIPS Project
Current way (limitations)
17
Liviu Chircu - OpenSIPS Project
In 2.3:
...
route [reg_handler] { fork_call(“$event(contact)”); }
18
Liviu Chircu - OpenSIPS Project
In 2.3:
... route [dtmf_handler] { hangup() if $event(digit) != 2 }
19
Liviu Chircu - OpenSIPS Project
subscribe("REGISTER", "aor=bob", "reg_handler"); route(SEND_APN); if (lookup("location")) t_relay(); halt();
21
Liviu Chircu - OpenSIPS Project
route [SEND_APN] { rest_append_hf("Authorization: key=CONSOLE_API_KEY"); rest_append_hf("Content-Type: \"application/json\""); rest_post("https://android.googleapis.com/gcm/send", "{ \"data\" : {\"foo\": \"bar\"}, \"registration_ids\":[\"REGISTRATION_ID\"] }"...); }
22
Liviu Chircu - OpenSIPS Project
route [reg_handler] { route(CHECK_IF_MOBILE, "$event(contact)"); t_relay(); }
23
Liviu Chircu - OpenSIPS Project
Event-driven approach:
25
Liviu Chircu - OpenSIPS Project
26
○ OpenSIPS Project: www.opensips.org ○ liviu@opensips.org