⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rfc2824.txt

📁 著名的RFC文档,其中有一些文档是已经翻译成中文的的.
💻 TXT
📖 第 1 页 / 共 4 页
字号:
   Feature interaction is the term used in telephony systems when two or   more requested features produce ambiguous or conflicting behavior   [8]. Feature interaction issues for features implemented with a call   processing language can be roughly divided into three categories:   feature-to-feature in one server, script-to-script in one server, and   server-to-server.9.1 Feature-to-feature interactions   Due to the explicit nature of event conditions discussed in the   previous section, feature-to-feature interaction is not likely to be   a problem in a call processing language environment. Whereas a   subscriber to traditional telephone features might unthinkingly   subscribe to both "call waiting" and "call forward on busy," a user   creating a CPL script would only be able to trigger one action in   response to the condition "a call arrives while the line is busy."   Given a good user interface for creation, or a CPL server which can   check for unreachable code in an uploaded script, contradictory   condition/action pairs can be avoided.Lennox & Schulzrinne         Informational                     [Page 13]RFC 2824                         CPL-F                          May 20009.2 Script-to-script interactions   Script-to-script interactions arise when a server invokes multiple   scripts for a single call, as described in section 7.2.  This can   occur in a number of cases: if both the call originator and the   destination have scripts specified on a single server; if a script   forwards a request to another address which also has a script; or if   an administrative script is specified as well as a user's individual   script.   The solution to this interaction is to determine an ordering among   the scripts to be executed. In this ordering, the "first" script is   executed first; if this script allows or permits the call to be   proxied, the script corresponding to the next address is executed.   When the first script says to forward the request to some other   address, those actions are considered as new requests which arrive at   the second script. When the second script sends back a final   response, that response arrives at the first script in the same   manner as if a request arrived over the network. Note that in some   cases, forwarding can be recursive; a CPL server must be careful to   prevent forwarding loops.   Abstractly, this can be viewed as equivalent to having each script   execute on a separate signalling server. Since the CPL architecture   is designed to allow scripts to be executed on multiple signalling   servers in the course of locating a user, we can conceptually   transform script-to-script interactions into the server-to-server   interactions described in the next section, reducing the number of   types of interactions we need to concern ourselves with.   The question, then, is to determine the correct ordering of the   scripts.  For the case of a script forwarding to an address which   also has a script, the ordering is obvious; the other two cases are   somewhat more subtle. When both originator and destination scripts   exist, the originator's script should be executed before the   destination script; this allows the originator to perform address   translation, call filtering, etc., before a destination address is   determined and a corresponding script is chosen.   Even more complicated is the case of the ordering of administrative   scripts. Many administrative scripts, such as ones that restrict   source and destination addresses, need to be run after originator   scripts, but before destination scripts, to avoid a user's script   evading administrative restrictions through clever forwarding;   however, others, such as a global address book translation function,   would need to be run earlier or later.  Servers which allowLennox & Schulzrinne         Informational                     [Page 14]RFC 2824                         CPL-F                          May 2000   administrative scripts to be run will need to allow the administrator   to configure when in the script execution process a particular   administrative script should fall.9.3 Server-to-server interactions   The third case of feature interactions, server-to-server   interactions, is the most complex of these three. The canonical   example of this type of interaction is the combination of Originating   Call Screening and Call Forwarding: a user (or administrator) may   wish to prevent calls from being placed to a particular address, but   the local script has no way of knowing if a call placed to some   other, legitimate address will be proxied, by a remote server, to the   banned address. This type of problem is unsolvable in an   administratively heterogeneous network, even a "lightly"   heterogeneous network such as current telephone systems. CPL does not   claim to solve it, but the problem is not any worse for CPL scripts   than for any other means of deploying services.   Another class of server-to-server interactions are best resolved by   the underlying signalling protocol, since they can arise whether the   signalling servers are being controlled by a call processing language   or by some entirely different means. One example of this is   forwarding loops, where user X may have calls forwarded to Y, who has   calls forwarded back to X. SIP has a mechanism to detect such loops.   A call processing language server thus does not need to define any   special mechanisms to prevent such occurrences; it should, however,   be possible to trigger a different set of call processing actions in   the event that a loop is detected, and/or to report back an error to   the owner of the script through some standardized run-time error   reporting mechanism.9.4 Signalling ambiguity   As an aside, [8] discusses a fourth type of feature interaction for   traditional telephone networks, signalling ambiguity. This can arise   when several features overload the same operation in the limited   signal path from an end station to the network: for example, flashing   the switch-hook can mean both "add a party to a three-way call" and   "switch to call waiting." Because of the explicit nature of   signalling in both the Internet telephony protocols discussed here,   this issue does not arise.10 Relationship with existing languages   This document's description of the CPL as a "language" is not   intended to imply that a new language necessarily needs to be   implemented from scratch.  A server could potentially implement allLennox & Schulzrinne         Informational                     [Page 15]RFC 2824                         CPL-F                          May 2000   the functionality described here as a library or set of extensions   for an existing language; Java, or the various freely-available   scripting languages (Tcl, Perl, Python, Guile), are obvious   possibilities.   However, there are motivations for creating a new language. All the   existing languages are, naturally, expressively complete; this has   two inherent disadvantages. The first is that any function   implemented in them can take an arbitrarily long time, use an   arbitrarily large amount of memory, and may never terminate. For call   processing, this sort of resource usage is probably not necessary,   and as described in section 12.1, may in fact be undesirable. One   model for this is the electronic mail filtering language Sieve [4],   which deliberately restricts itself from being Turing-complete.   Similar levels of safety and protection (though not automatic   generation and parsing) could also be achieved through the use of a   "sandbox" such as is used by Java applets, where strict bounds are   imposed on the amount of memory, cpu time, stack space, etc., that a   program can use. The difficulty with this approach is primarily in   its lack of transparency and portability:  unless the levels of these   bounds are imposed by the standard, a bad idea so long as available   resources are increasing exponentially with Moore's Law, a user can   never be sure whether a particular program can successfully be   executed on a given server without running into the server's resource   limits, and a program which executes successfully on one server may   fail unexpectedly on another. Non-expressively-complete languages, on   the other hand, allow an implicit contract between the script writer   and the server:  so long as the script stays within the rules of the   language, the server will guarantee that it will execute the script.   The second disadvantage with expressively complete languages is that   they make automatic generation and parsing of scripts very difficult,   as every parsing tool must be a full interpreter for the language. An   analogy can be drawn from the document-creation world: while text   markup languages like HTML or XML can be, and are, easily manipulated   by smart editors, powerful document programming languages such as   LaTeX or Postscript usually cannot be. While there are word   processors that can save their documents in LaTeX form, they cannot   accept as input arbitrary LaTeX documents, let alone preserve the   structure of the original document in an edited form. By contrast,   essentially any HTML editor can edit any HTML document from the web,   and the high-quality ones preserve the structure of the original   documents in the course of editing them.Lennox & Schulzrinne         Informational                     [Page 16]RFC 2824                         CPL-F                          May 200011 Related work11.1 IN service creation environments   The ITU's IN series describe, on an abstract level, service creation   environments [6]. These describe services in a traditional circuit-   switched telephone network as a series of decisions and actions   arranged in a directed acyclic graph. Many vendors of IN services use   modified and extended versions of this for their proprietary service   creation environments.11.2 SIP CGI   SIP CGI [9] is an interface for implementing services on SIP servers.   Unlike a CPL, it is a very low-level interface, and would not be   appropriate for services written by non-trusted users.   The paper "Programming Internet Telephony Services" [10] discusses   the similarities and contrasts between SIP CGI and CPL in more   detail.12 Necessary language features   This section lists those properties of a call processing language   which we believe to be necessary to have in order to implement the   motivating examples, in line with the described architecture.12.1 Language characteristics   These are some abstract attributes which any proposed call processing   language should possess.      o  Light-weight, efficient, easy to implement         In addition to the general reasons why this is desirable, a         network server might conceivably handle very large call         volumes, and we don't want CPL execution to be a major         bottleneck. One way to achieve this might be to compile scripts         before execution.      o  Easily verifiable for correctness         For a script which runs in a server, mis-configurations can         result in a user becoming unreachable, making it difficult to         indicate run-time errors to a user (though a second-channel         error reporting mechanism such as e-mail could ameliorate         this). Thus, it should be possible to verify, when the scriptLennox & Schulzrinne         Informational                     [Page 17]RFC 2824                         CPL-F                          May 2000         is committed to the server, that it is at least syntactically         correct, does not have any obvious loops or other failure         modes, and does not use too many server resources.      o  Executable in a safe manner         No action the CPL script takes should be able to subvert         anything about the server which the user shouldn't have access         to, or affect the state of other users without permission.         Additionally, since CPL scripts will typically run on a server         on which users cannot normally run code, either the language or         its execution environment must be designed so that scripts         cannot use unlimited amounts of network resources, server CPU         time, storage, or memory.      o  Easily writeable and parsable by both humans and machines.         For maximum flexibility, we want to allow humans to write their         own scripts, or to use and customize script libraries provided         by others. However, most users will want to have a more         intuitive user-interface for the same functionality, and so         will have a program which creates scripts for them.  Both cases         should be easy; in particular, it should be easy for script         editors to read human-generated scripts, and vice-versa.      o  Extensible         It should be possible to add additional features to a language         in a way that existing scripts continue to work, and existing         servers can easily recognize features they don't understand and         safely inform the user of this fact.      o  Independent of underlying signalling details         The same scripts should be usable whether the underlying         protocol is SIP, H.323, a traditional telephone network, or any         other means of setting up calls. It should also be agnostic to         address formats. (We use SIP terminology in our descriptions of         requirements, but this should map fairly easily to other         systems.) It may also be useful to have the language extend to         processing of other sorts of communication, such as e-mail or         fax.Lennox & Schulzrinne         Informational                     [Page 18]RFC 2824                         CPL-F                          May 200012.2 Base features -- call signalling   To be useful, a call processing language obviously should be able to   react to and initiate call signalling events.      o  Should execute actions when a call request arrives         See section 7, particularly 7.1.      o  Should be able to make decisions based on event properties         A number of properties of a call event are relevant for a         script's decision process. These include, roughly in order of         importance:         -  Destination address            We want to be able to do destination-based routing or            screening.  Note that in SIP we want to be able to filter on            either or both of the addresses in the To header and the            Request-URI.         -  Originator address            Similarly, we want to be able to do originator-based            screening or routing.         -  Caller Preferences            In SIP, a caller can express preferences about the type of            device to be reached -- see [11]. The script should be able            to make decisions based on this information.         -  Information about caller or call            SIP has textual fields such as Subject, Organization,            Priority, etc., and a display name for addresses; users can            also add non-standard additional headers. H.323 has a single            Display field. The script should be able to make decisions

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -