240 likes | 385 Views
Feature Interaction Handling in LESS. Xiaotao Wu and Henning Schulzrinne Internet Real Time Laboratory. Overview. End system services CPL and LESS Feature interaction handling in CPL/LESS Action conflict table Tree merging More than call control services Open issues.
E N D
Feature Interaction Handling in LESS Xiaotao Wu and Henning Schulzrinne Internet Real Time Laboratory
Overview • End system services • CPL and LESS • Feature interaction handling in CPL/LESS • Action conflict table • Tree merging • More than call control services • Open issues
CPL and LESS • CPL: Call Processing Language • LESS: Language for End System Services • Simple • Four kinds of elements: trigger, switch, action, modifier • Tree-like structure, easy for feature interaction analysis • Safe • Type safety: XML-based, no user defined variables • Control flow safety: tree-like structure without back-reference • No direct memory access • Default behavior for every tree branch • Portability • Handle user interactions and media operations • Beyond call control • presence, IM, Web, location IEEE ICC’03 RFC3880
Vibrate my device If the call is from my boss YES YES If I am in a conference For an incoming call NO Reject the call Tree-like structure • Using a tree-like structure to represent communication services Natural thinking of call decision making – a rule set For an incoming call, if I am in a conference, I will reject all the calls that are not from my boss. A decision tree to represent a rule set CPL and LESS
Timer triggered outgoing call <?xml version="1.0" encoding="UTF-8"?> <less xmlns="urn:ietf:params:xml:ns:less“ xmlns:IM="urn:ietf:params:xml:ns:less:im“ xmlns:xsi=“…" xsi:schemaLocation=“…"> <timer dtstart="20050307T110000Z"> <status-switch uri="sip:bob@example.com" status-name="presence"> <status is="open"> <location url="sip:bob@example.com"> <call> <busy> <location url="sip:bob@example.com"> <IM:sendmsg> Hi, please call me back. I am in office </IM:sendmsg> </location> …………….
LESS elements • Triggers • incoming: incoming call handling • timer: timer triggered actions • UI:command: user interaction commands • IM:message: incoming instant messaging • Event:subscription: incoming subscription • Event:notification: incoming notification
LESS elements (cont.) • Switches • time-switch: make decisions based on time • address-switch: make decisions based on caller, callee • priority-switch: make decisions based on call priority • string-switch: make decisions based on subject, … • language-switch: make decisions based on languages • status-switch: make decisions based on users’ status (remote user or local user, status includes presence, activity, mood, …, as listed in RPID) • Event:event-switch: check values in event notifications • LOC:where-switch: check users’ physical location information (remote or local user) • LOC:where-relation-switch: check relative physical locations between two people
LESS elements (Cont.) • Actions • accept: accept an incoming call • reject: reject an incoming call • redirect: redirect an incoming call • authenticate: authenticate anincoming request • call: make an outgoing call • terminate: disconnect a call • wait: wait for a certain time before next action • mail: send email • log: log request handling process • Media:mediaupdate: update media attributes • Midcall:transfer: transfer a call • Midcall:merge: merge multiple calls • UI:alert: alert user • UI:getinput: get user input • IM:sendmsg: send an instant message • Event:approve: approve subscription • Event:deny: deny event subscription • Event:defer: defer the decision on event subscription • Event:subscribe: send subscription out • Event:notify: send notification out • Queue:enqueue: put a call and its context into a queue • Queue:dequeue: get a call and its context from a queue
LESS elements (Cont.) • Two smaller concepts might be simpler and more flexible than one more powerful but complicated concept • Modifiers • location: to which a request to be directed • lookup: lookup locations from a source • remove-location: remove locations from location set • Media:media: provide media attributes
<?xml version="1.0"?> <less> <incoming> <address-switch field="origin"> <address is="sip:hgs@cs.columbia.edu"> <accept/> </address> <otherwise> <location url="sip:foo@example.com"> <redirect/> </location> </otherwise> </address-switch> </incoming> </less>
Feature interaction analysis • Tree merging Incoming call Incoming call Incoming call If time is between 10:00AM and 11:00AM If address is hgs If address is hgs If time is between 10:00AM and 11:00AM = + accept accept accept reject Forward to conf Forward to conf reject Take actions from both scripts. Simply setting precedence rules cannot work.
Feature interaction analysis • FI handling between multiple CPL/LESS scripts • Action conflict tables • Tree merging algorithm • Multi-component feature interactions • e.g., parallel forking with all end systems automatically accept an incoming call
Related work of CPL FI handling • Related work • Syntax correct, semantic warnings • e.g., parent switch and child switch mutually exclusive • Translate to formal languages to check FI with other complex services
Action conflict table -: no interaction, A: attribute conflict, C: action conflict, (C): avoidable conflict, E: enabling, R: resource competition
Tree merging set base-rule-set empty foreach LESS-tree { convert the LESS-tree into a rule set foreach rule in the rule set { normalize the rule } merge the normalized rule set into base-rule-set } convert base-rule-set into a decision tree
Tree merging (cont.) if (two rules have different triggers) { no rule conflict except timer trigger } else if actions in two rules do not conflict { no rule conflict } else if no overlap between rule path in two rules { no rule conflict } else { two rules conflict with each other, return the rule path overlap and action conflict information prompt to the script owner to judge }
Rich signaling information canhelp to solve feature interactions • Rich signaling information • SIP headers • Caller preference and callee capabilities • MIME contents • Event notification • Other means • Web calendar, Directory services
More than just call control services • Interact with existing Internet services • web • email • SLP • SAP • IM • presence • location • networked appliance control • directory service • calendar service • conferencing • Not named services, but programmable services • Programmable conferencing services
Open issues • Can we use LESS for B2BUA? • ‘lookup’ from database • coordinate multiple sessions • multi-user feature interaction handling • Loop and user-defined variables needed? • Based on our exercises, no • But, what about unknown new services? • Convert loop to a high-level abstraction? • What’s the impact on feature interaction handling
Some links • LESS: http://www.ietf.org/internet-drafts/draft-wu-iptel-less-00.txt • Service examples: http://www.cs.columbia.edu/~library/TR-repository/reports/reports-2004/cucs-048-04.pdf • Feature interaction handling: http://www.cs.columbia.edu/ ~xiaotaow/rer/Research/Paper/fiw.pdf • SIPc: http://www.cs.columbia.edu/IRT/sipc • CINEMA: http://www.cs.columbia.edu/IRT/cinema
Acknowledgements • Dr. Henning Schulzrinne • This project is supported by the funding from SIPQuest Thank you!