| < draft-ietf-sipping-service-identification-03.txt | draft-ietf-sipping-service-identification-04.txt > | |||
|---|---|---|---|---|
| SIPPING J. Rosenberg | SIPPING J. Rosenberg | |||
| Internet-Draft Cisco | Internet-Draft jdrosen.net | |||
| Intended status: Informational August 4, 2008 | Intended status: Informational March 23, 2010 | |||
| Expires: February 5, 2009 | Expires: September 24, 2010 | |||
| Identification of Communications Services in the Session Initiation | Identification of Communications Services in the Session Initiation | |||
| Protocol (SIP) | Protocol (SIP) | |||
| draft-ietf-sipping-service-identification-03 | draft-ietf-sipping-service-identification-04 | |||
| Abstract | ||||
| This document considers the problem of service identification in the | ||||
| Session Initiation Protocol (SIP). Service identification is the | ||||
| process of determining the user-level use case that is driving the | ||||
| signaling being utilized by the user agent. This document discusses | ||||
| the uses of service identification, and outlines several | ||||
| architectural principles behind the process. It identifies perils | ||||
| when service identification is not done properly - including fraud, | ||||
| interoperability failures and stifling of innovation. It then | ||||
| outlines a set of reccomended practices for service identification. | ||||
| Status of this Memo | Status of this Memo | |||
| By submitting this Internet-Draft, each author represents that any | This Internet-Draft is submitted to IETF in full conformance with the | |||
| applicable patent or other IPR claims of which he or she is aware | provisions of BCP 78 and BCP 79. | |||
| have been or will be disclosed, and any of which he or she becomes | ||||
| aware will be disclosed, in accordance with Section 6 of BCP 79. | ||||
| Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
| Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
| other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
| Drafts. | Drafts. | |||
| Internet-Drafts are draft documents valid for a maximum of six months | Internet-Drafts are draft documents valid for a maximum of six months | |||
| and may be updated, replaced, or obsoleted by other documents at any | and may be updated, replaced, or obsoleted by other documents at any | |||
| time. It is inappropriate to use Internet-Drafts as reference | time. It is inappropriate to use Internet-Drafts as reference | |||
| material or to cite them other than as "work in progress." | material or to cite them other than as "work in progress." | |||
| The list of current Internet-Drafts can be accessed at | The list of current Internet-Drafts can be accessed at | |||
| http://www.ietf.org/ietf/1id-abstracts.txt. | http://www.ietf.org/ietf/1id-abstracts.txt. | |||
| The list of Internet-Draft Shadow Directories can be accessed at | The list of Internet-Draft Shadow Directories can be accessed at | |||
| http://www.ietf.org/shadow.html. | http://www.ietf.org/shadow.html. | |||
| This Internet-Draft will expire on February 5, 2009. | This Internet-Draft will expire on September 24, 2010. | |||
| Copyright Notice | Copyright Notice | |||
| Copyright (C) The IETF Trust (2008). | Copyright (c) 2010 IETF Trust and the persons identified as the | |||
| document authors. All rights reserved. | ||||
| Abstract | ||||
| This document considers the problem of service identification in the | This document is subject to BCP 78 and the IETF Trust's Legal | |||
| Session Initiation Protocol (SIP). Service identification is the | Provisions Relating to IETF Documents | |||
| process of determining the user-level use case that is driving the | (http://trustee.ietf.org/license-info) in effect on the date of | |||
| signaling being utilized by the user agent. This document discusses | publication of this document. Please review these documents | |||
| the uses of service identification, and outlines several | carefully, as they describe your rights and restrictions with respect | |||
| architectural principles behind the process. It identifies perils | to this document. Code Components extracted from this document must | |||
| when service identification is not done properly - including fraud, | include Simplified BSD License text as described in Section 4.e of | |||
| interoperability failures and stifling of innovation. | the Trust Legal Provisions and are provided without warranty as | |||
| described in the BSD License. | ||||
| Table of Contents | Table of Contents | |||
| 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 3 | 1. Introduction . . . . . . . . . . . . . . . . . . . . . . . . . 4 | |||
| 2. Services and Service Identification . . . . . . . . . . . . . 4 | 2. Services and Service Identification . . . . . . . . . . . . . 5 | |||
| 3. Example Services . . . . . . . . . . . . . . . . . . . . . . . 5 | 3. Example Services . . . . . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.1. IPTV vs. Multimedia . . . . . . . . . . . . . . . . . . . 5 | 3.1. IPTV vs. Multimedia . . . . . . . . . . . . . . . . . . . 7 | |||
| 3.2. Gaming vs. Voice Chat . . . . . . . . . . . . . . . . . . 6 | 3.2. Gaming vs. Voice Chat . . . . . . . . . . . . . . . . . . 7 | |||
| 3.3. Gaming vs. Voice Chat #2 . . . . . . . . . . . . . . . . . 6 | 3.3. Gaming vs. Voice Chat #2 . . . . . . . . . . . . . . . . . 8 | |||
| 3.4. Configuration vs. Pager Messaging . . . . . . . . . . . . 6 | 3.4. Configuration vs. Pager Messaging . . . . . . . . . . . . 8 | |||
| 4. Using Service Identification . . . . . . . . . . . . . . . . . 7 | 4. Using Service Identification . . . . . . . . . . . . . . . . . 9 | |||
| 4.1. Application Invocation in the User Agent . . . . . . . . . 7 | 4.1. Application Invocation in the User Agent . . . . . . . . . 9 | |||
| 4.2. Application Invocation in the Network . . . . . . . . . . 9 | 4.2. Application Invocation in the Network . . . . . . . . . . 10 | |||
| 4.3. Network Quality of Service Authorization . . . . . . . . . 9 | 4.3. Network Quality of Service Authorization . . . . . . . . . 11 | |||
| 4.4. Service Authorization . . . . . . . . . . . . . . . . . . 10 | 4.4. Service Authorization . . . . . . . . . . . . . . . . . . 11 | |||
| 4.5. Accounting and Billing . . . . . . . . . . . . . . . . . . 10 | 4.5. Accounting and Billing . . . . . . . . . . . . . . . . . . 12 | |||
| 4.6. Negotiation of Service . . . . . . . . . . . . . . . . . . 10 | 4.6. Negotiation of Service . . . . . . . . . . . . . . . . . . 12 | |||
| 4.7. Dispatch to Devices . . . . . . . . . . . . . . . . . . . 11 | 4.7. Dispatch to Devices . . . . . . . . . . . . . . . . . . . 12 | |||
| 5. Key Principles of Service Identification . . . . . . . . . . . 11 | 5. Key Principles of Service Identification . . . . . . . . . . . 12 | |||
| 5.1. Services are a By-Product of Signaling . . . . . . . . . . 11 | 5.1. Services are a By-Product of Signaling . . . . . . . . . . 13 | |||
| 5.2. Identical Signaling Produces Identical Services . . . . . 12 | 5.2. Identical Signaling Produces Identical Services . . . . . 14 | |||
| 5.3. Do What I Say, not What I Mean . . . . . . . . . . . . . . 14 | 5.3. Do What I Say, not What I Mean . . . . . . . . . . . . . . 15 | |||
| 5.4. Explicit Service Identifiers are Redundant . . . . . . . . 14 | 5.4. Declarative Service Identifiers are Redundant . . . . . . 16 | |||
| 5.5. URIs are Key for Differentiated Signaling . . . . . . . . 14 | 5.5. URIs are Key for Differentiated Signaling . . . . . . . . 16 | |||
| 6. Perils of Declarative Service Identification . . . . . . . . . 15 | 6. Perils of Declarative Service Identification . . . . . . . . . 17 | |||
| 6.1. Fraud . . . . . . . . . . . . . . . . . . . . . . . . . . 15 | 6.1. Fraud . . . . . . . . . . . . . . . . . . . . . . . . . . 17 | |||
| 6.2. Systematic Interoperability Failures . . . . . . . . . . . 16 | 6.2. Systematic Interoperability Failures . . . . . . . . . . . 18 | |||
| 6.3. Stifling of Service Innovation . . . . . . . . . . . . . . 18 | 6.3. Stifling of Service Innovation . . . . . . . . . . . . . . 19 | |||
| 7. Recommendations . . . . . . . . . . . . . . . . . . . . . . . 19 | 7. Recommendations . . . . . . . . . . . . . . . . . . . . . . . 20 | |||
| 7.1. Use Derived Service Identification . . . . . . . . . . . . 19 | 7.1. Use Derived Service Identification . . . . . . . . . . . . 20 | |||
| 7.2. Design for Heterogeneity . . . . . . . . . . . . . . . . . 19 | 7.2. Design for SIP's Negotiative Expressiveness . . . . . . . 21 | |||
| 7.3. Presence . . . . . . . . . . . . . . . . . . . . . . . . . 20 | 7.3. Presence . . . . . . . . . . . . . . . . . . . . . . . . . 21 | |||
| 7.4. Intra-Domain . . . . . . . . . . . . . . . . . . . . . . . 20 | 7.4. Intra-Domain . . . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 7.5. Device Dispatch . . . . . . . . . . . . . . . . . . . . . 20 | 7.5. Device Dispatch . . . . . . . . . . . . . . . . . . . . . 22 | |||
| 8. Security Considerations . . . . . . . . . . . . . . . . . . . 21 | 8. Security Considerations . . . . . . . . . . . . . . . . . . . 23 | |||
| 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 21 | 9. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 21 | 10. Acknowledgements . . . . . . . . . . . . . . . . . . . . . . . 23 | |||
| 11. Informational References . . . . . . . . . . . . . . . . . . . 21 | 11. Informational References . . . . . . . . . . . . . . . . . . . 23 | |||
| Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 22 | Author's Address . . . . . . . . . . . . . . . . . . . . . . . . . 24 | |||
| Intellectual Property and Copyright Statements . . . . . . . . . . 24 | ||||
| 1. Introduction | 1. Introduction | |||
| The Session Initiation Protocol (SIP) [RFC3261] defines mechanisms | The Session Initiation Protocol (SIP) [RFC3261] defines mechanisms | |||
| for initiating and managing communications sessions between agents. | for initiating and managing communications sessions between agents. | |||
| SIP allows for a broad array of session types between agents. It can | SIP allows for a broad array of session types between agents. It can | |||
| manage audio sessions, ranging from low bitrate voice-only up to | manage audio sessions, ranging from low bitrate voice-only up to | |||
| multi-channel hi fidelity music. It can manage video sessions, | multi-channel hi fidelity music. It can manage video sessions, | |||
| ranging from small, "talking-head" style video chat, up to high | ranging from small, "talking-head" style video chat, up to high | |||
| definition multipoint video conferencing, to low bandwidth user- | definition multipoint video conferencing, to low bandwidth user- | |||
| skipping to change at page 4, line 8 ¶ | skipping to change at page 5, line 8 ¶ | |||
| identification can lead to fraud, systemic interoperability failures, | identification can lead to fraud, systemic interoperability failures, | |||
| and a complete stifling of the innovation that SIP was meant to | and a complete stifling of the innovation that SIP was meant to | |||
| achieve. The purpose of this document is to describe service | achieve. The purpose of this document is to describe service | |||
| identification in more detail and describe how these problems arise. | identification in more detail and describe how these problems arise. | |||
| Section 2 begins by defining a service and the service identification | Section 2 begins by defining a service and the service identification | |||
| problem. Section 3 gives some concrete examples of services and why | problem. Section 3 gives some concrete examples of services and why | |||
| they can be challenging to identify. Section 4 explores the ways in | they can be challenging to identify. Section 4 explores the ways in | |||
| which a service identification can be utilized within a network. | which a service identification can be utilized within a network. | |||
| Next, Section 5 discusses the key architectural principles of service | Next, Section 5 discusses the key architectural principles of service | |||
| identification. Section 6 describes what explicit service invocation | identification. Section 6 describes what declarative service | |||
| is, and how it can lead to fraud, interoperability failures, and | invocation is, and how it can lead to fraud, interoperability | |||
| stifling of service innovation. | failures, and stifling of service innovation. | |||
| Consequently, this document concludes that declarative service | ||||
| identification - the process by which a user agent inserts a moniker | ||||
| into a message that defines the desired service, separate from | ||||
| explicit and well-defiend protocol mechanisms, is harmful. | ||||
| Instead of performing declarative service identification, this | ||||
| document recommends derived service identification, and gives several | ||||
| reccomendations around it in Section 7: | ||||
| 1. The identity of a service should always be derived from the | ||||
| explicit signaling in the protocol messages and other contextual | ||||
| information, and never indicated by the user through a separate | ||||
| identifier placed into the message. | ||||
| 2. The process of service identification based on signaling messages | ||||
| must be designed to SIP's negotiative expressiveness, and | ||||
| therefore handle heterogeneity and not assume a fixed set of use | ||||
| cases. | ||||
| 3. Presence can help in providing URIs that can be utilized to | ||||
| connect to specific services, thereby creating explicit | ||||
| indications in the signaling which can be used to dervice a | ||||
| service identity. | ||||
| 4. Service identities placed into signaling messages for the | ||||
| purposes of caching the service identity are strictly for intra- | ||||
| domain usage. | ||||
| 5. Device dispatch should be based on feature-tags which map to | ||||
| well-defined SIP extensions and capabilities, and not abstract | ||||
| service identifiers. | ||||
| 2. Services and Service Identification | 2. Services and Service Identification | |||
| The problem of identifying services within SIP is not a new one. The | The problem of identifying services within SIP is not a new one. The | |||
| problem has been considered extensively in the context of presence. | problem has been considered extensively in the context of presence. | |||
| In particular, the presence data model for SIP [RFC4479] defines the | In particular, the presence data model for SIP [RFC4479] defines the | |||
| concept of a service as one of the core notions that presence | concept of a service as one of the core notions that presence | |||
| describes. Services are described in Section 3.3 of RFC 4479. | describes. Services are described in Section 3.3 of RFC 4479. | |||
| Essentially, the service is the user-visible use case that is driving | Essentially, the service is the user-visible use case that is driving | |||
| skipping to change at page 8, line 30 ¶ | skipping to change at page 9, line 50 ¶ | |||
| | +-----------------------------+ | | | +-----------------------------+ | | |||
| | | | | | | |||
| +---------------------------------+ | +---------------------------------+ | |||
| Physical Device | Physical Device | |||
| Figure 1 | Figure 1 | |||
| The role of the SIP layer is to parse incoming messages, handle the | The role of the SIP layer is to parse incoming messages, handle the | |||
| SIP state machinery for transactions and dialogs, and then dispatch | SIP state machinery for transactions and dialogs, and then dispatch | |||
| request to the appropriate service. This software architecture is | requests to the appropriate service. This software architecture is | |||
| analagous to the way web servers frequently work. An HTTP server | analagous to the way web servers frequently work. An HTTP server | |||
| listens on port 80 for requests, and based on the HTTP Request-URI, | listens on port 80 for requests, and based on the HTTP Request-URI, | |||
| dispatches the request to a number of disparate applications. The | dispatches the request to a number of disparate applications. The | |||
| same is happening here. For the example services in Section 3.2, an | same is happening here. For the example services in Section 3.2, an | |||
| incoming INVITE for the gaming service would be delivered to the | incoming INVITE for the gaming service would be delivered to the | |||
| gaming application software. An incoming INVITE for the voice chat | gaming application software. An incoming INVITE for the voice chat | |||
| service would be delivered to the voice chat application software. | service would be delivered to the voice chat application software. | |||
| The example in Section 3.3 is similar. For the examples in | The example in Section 3.3 is similar. For the examples in | |||
| Section 3.4, a MESSAGE request for user to user messaging would be | Section 3.4, a MESSAGE request for user to user messaging would be | |||
| delivered to the messaging or SMS app, and a MESSAGE request | delivered to the messaging or SMS app, and a MESSAGE request | |||
| skipping to change at page 9, line 46 ¶ | skipping to change at page 11, line 14 ¶ | |||
| purposes might contain an XML document that uses the token "stock" as | purposes might contain an XML document that uses the token "stock" as | |||
| some kind of attribute. This configuration update would be discarded | some kind of attribute. This configuration update would be discarded | |||
| by the filtering server, when it should not have been. | by the filtering server, when it should not have been. | |||
| 4.3. Network Quality of Service Authorization | 4.3. Network Quality of Service Authorization | |||
| The IP network can provide differing levels of Quality of Service | The IP network can provide differing levels of Quality of Service | |||
| (QoS) to IP packets. This service can include guaranteed throughput, | (QoS) to IP packets. This service can include guaranteed throughput, | |||
| latency, or loss characteristics. Typically, the user agent will | latency, or loss characteristics. Typically, the user agent will | |||
| make some kind of QoS request, either using explicit signaling | make some kind of QoS request, either using explicit signaling | |||
| protocols (such as RSVP) or through marking of Diffserv value in | protocols (such as RSVP [RFC2205]) or through marking of Diffserv | |||
| packets. The network will need to make a policy decision based on | value in packets. The network will need to make a policy decision | |||
| whether these QoS treatments are authorized or not. One common | based on whether these QoS treatments are authorized or not. One | |||
| authorization policy is to check if the user has invoked a service | common authorization policy is to check if the user has invoked a | |||
| using SIP that they are authorized to invoke, and that this service | service using SIP that they are authorized to invoke, and that this | |||
| requires the level of QoS treatment the user has requested. | service requires the level of QoS treatment the user has requested. | |||
| For example, consider IPTV and multimedia conferencing as described | For example, consider IPTV and multimedia conferencing as described | |||
| in Section 3.1. IPTV is a non-real time service. Consequently, | in Section 3.1. IPTV is a non-real time service. Consequently, | |||
| media traffic for IPTV would be authorized for bandwidth guarantees, | media traffic for IPTV would be authorized for bandwidth guarantees, | |||
| but not for latency or loss guarantees. On the other hand, | but not for latency or loss guarantees. On the other hand, | |||
| multimedia conferencing is real time. Its traffic would require | multimedia conferencing is real time. Its traffic would require | |||
| bandwidth, loss and latency guarantees from the network. | bandwidth, loss and latency guarantees from the network. | |||
| Consequently, if a user should make an RSVP reservation for a media | Consequently, if a user should make an RSVP reservation for a media | |||
| stream, and ask for latency guarantees for that stream, the network | stream, and ask for latency guarantees for that stream, the network | |||
| skipping to change at page 11, line 38 ¶ | skipping to change at page 13, line 12 ¶ | |||
| In this section, we describe several key principles of service | In this section, we describe several key principles of service | |||
| identification: | identification: | |||
| 1. Services are a by-product of signaling | 1. Services are a by-product of signaling | |||
| 2. Identical signaling produces identical services | 2. Identical signaling produces identical services | |||
| 3. Declarative service identification is an example of Do-What-I- | 3. Declarative service identification is an example of Do-What-I- | |||
| Mean (DWIM) | Mean (DWIM) | |||
| 4. Explicit service identifiers are redundant | 4. Declarative service identifiers are redundant | |||
| 5. URIs are a key mechanism for producing differentiated signaling | 5. URIs are a key mechanism for producing differentiated signaling | |||
| 5.1. Services are a By-Product of Signaling | 5.1. Services are a By-Product of Signaling | |||
| Declarative service identification - the addition of a service | Declarative service identification - the addition of a service | |||
| identifier by clients in order to inform other entities what the | identifier by clients in order to inform other entities what the | |||
| service is - is a very compelling solution to solving the use cases | service is - is a very compelling solution to solving the use cases | |||
| described above. It provides a clear way for each of the use cases | described above. It provides a clear way for each of the use cases | |||
| to be differentiated. On the other hand, derived service | to be differentiated. On the other hand, derived service | |||
| skipping to change at page 13, line 49 ¶ | skipping to change at page 15, line 24 ¶ | |||
| dictates their content, and therefore, this schema represents the | dictates their content, and therefore, this schema represents the | |||
| actual content type that should be signaled. | actual content type that should be signaled. | |||
| Gaming vs. Voice CHat #2: In this case, both sessions involve only | Gaming vs. Voice CHat #2: In this case, both sessions involve only | |||
| voice, and both are targeted at the same AOR. Indeed, there truly | voice, and both are targeted at the same AOR. Indeed, there truly | |||
| is nothing different - if indeed the signaling works this way. | is nothing different - if indeed the signaling works this way. | |||
| However, there is an alternative mechanism for performing the | However, there is an alternative mechanism for performing the | |||
| signaling. For the gaming session, the proprietary protocol can | signaling. For the gaming session, the proprietary protocol can | |||
| be used to exchange a URI that can be used to identify the voice | be used to exchange a URI that can be used to identify the voice | |||
| chat function on the phone that is associated with the game (for | chat function on the phone that is associated with the game (for | |||
| example, a GRUU can be used [I-D.ietf-sip-gruu]). Indeed, the | example, a GRUU can be used [RFC5627]). Indeed, the gaming chat | |||
| gaming chat is not targeting the USER - its targeting the gaming | is not targeting the USER - its targeting the gaming instance on | |||
| instance on the phone. Thus, if a special GRUU is used for the | the phone. Thus, if a special GRUU is used for the gaming chat, | |||
| gaming chat, this makes the signaling different between these two | this makes the signaling different between these two services. | |||
| services. | ||||
| Configuration vs. Pager Messaging: Just as in the case of gaming vs. | Configuration vs. Pager Messaging: Just as in the case of gaming vs. | |||
| voice chat, the content type of the messages differentiates the | voice chat, the content type of the messages differentiates the | |||
| service that occurs as a consequence of the messages. | service that occurs as a consequence of the messages. | |||
| 5.3. Do What I Say, not What I Mean | 5.3. Do What I Say, not What I Mean | |||
| "Do What I Mean", abbreviated as DWIM, is a concept in computer | "Do What I Mean", abbreviated as DWIM, is a concept in computer | |||
| science. It is sometimes used to describe a function which tries to | science. It is sometimes used to describe a function which tries to | |||
| intelligently guess at what the user intended. It is contrast to "Do | intelligently guess at what the user intended. It is contrast to "Do | |||
| skipping to change at page 14, line 38 ¶ | skipping to change at page 16, line 13 ¶ | |||
| summarizing things that are well defined by signaling. | summarizing things that are well defined by signaling. | |||
| As a litmus test to differentiate the two cases, consider the | As a litmus test to differentiate the two cases, consider the | |||
| following question. If a request contained a service identifier, and | following question. If a request contained a service identifier, and | |||
| that request were processed by a domain which didn't understand the | that request were processed by a domain which didn't understand the | |||
| concept of service identifiers at all, would the request be rejected | concept of service identifiers at all, would the request be rejected | |||
| if that service were not supported, or would it complete but do the | if that service were not supported, or would it complete but do the | |||
| wrong thing? If it is the latter case, its DWIM. If its the former, | wrong thing? If it is the latter case, its DWIM. If its the former, | |||
| its DWIS. | its DWIS. | |||
| 5.4. Explicit Service Identifiers are Redundant | 5.4. Declarative Service Identifiers are Redundant | |||
| Because an explicit service identifier is, by definition, inside of | Because a declarative service identifier is, by definition, inside of | |||
| the signaling message, and because the signaling itself completely | the signaling message, and because the signaling itself completely | |||
| defines the behavior of the service, another natural conclusion is | defines the behavior of the service, another natural conclusion is | |||
| that an explicit service identifier is redundant with the signaling | that a declarative service identifier is redundant with the signaling | |||
| itself. It says nothing that could not or should not otherwise be | itself. It says nothing that could not or should not otherwise be | |||
| derived from examination of the signaling. | derived from examination of the signaling. | |||
| 5.5. URIs are Key for Differentiated Signaling | 5.5. URIs are Key for Differentiated Signaling | |||
| In the IPTV example and in the second gaming example, it was | In the IPTV example and in the second gaming example, it was | |||
| ultimately the Request-URI that was (or should be) different between | ultimately the Request-URI that was (or should be) different between | |||
| the two services. This is important. In many cases where services | the two services. This is important. In many cases where services | |||
| appear the same, it is because the resource which is being targeted | appear the same, it is because the resource which is being targeted | |||
| is not, in fact, the user. Rather, it is a resource that is linked | is not, in fact, the user. Rather, it is a resource that is linked | |||
| skipping to change at page 16, line 21 ¶ | skipping to change at page 17, line 46 ¶ | |||
| IPTV, but at the cost of multimedia conferencing. | IPTV, but at the cost of multimedia conferencing. | |||
| This same principle shows up in other places. For example, in the | This same principle shows up in other places. For example, in the | |||
| identification of an emergency services call | identification of an emergency services call | |||
| [I-D.ietf-ecrit-framework]. It is desirable to give emergency | [I-D.ietf-ecrit-framework]. It is desirable to give emergency | |||
| services calls special treatment, such as being free, authorized even | services calls special treatment, such as being free, authorized even | |||
| when the user cannot otherwise make calls, and to give them priority. | when the user cannot otherwise make calls, and to give them priority. | |||
| If emergency calls where indicated through something other than the | If emergency calls where indicated through something other than the | |||
| target of the call being an emergency services URN [RFC5031], it | target of the call being an emergency services URN [RFC5031], it | |||
| would open an avenue for fraud. The user could place any desired URI | would open an avenue for fraud. The user could place any desired URI | |||
| in the request-URI, and indicate that the call is an emergency | in the request-URI, and indicate separately, through a declarative | |||
| services call. This could would then get special treatment, but of | identifier, that the call is an emergency services call. This could | |||
| course get routed to the target URI. The only way to prevent this | would then get special treatment, but of course get routed to the | |||
| fraud is to consider an emergency call as any call whose target is an | target URI. The only way to prevent this fraud is to consider an | |||
| emergency services URN. Thus, the service identification here is | emergency call as any call whose target is an emergency services URN. | |||
| based on the target of the request. When the target is an emergency | Thus, the service identification here is based on the target of the | |||
| services URN, the request can get special treatment. The user cannot | request. When the target is an emergency services URN, the request | |||
| lie, since there is no way to separately indicate this is an | can get special treatment. The user cannot lie, since there is no | |||
| emergency call, besides targeting it to an emergency URN. | way to separately indicate this is an emergency call, besides | |||
| targeting it to an emergency URN. | ||||
| 6.2. Systematic Interoperability Failures | 6.2. Systematic Interoperability Failures | |||
| How can declarative service identification cause loss of | How can declarative service identification cause loss of | |||
| interoperability? When an identifier is used to drive functionality | interoperability? When an identifier is used to drive functionality | |||
| - such as dispatch on the phones, in the network, or QoS | - such as dispatch on the phones, in the network, or QoS | |||
| authorization, it means that the wrong thing can happen when this | authorization, it means that the wrong thing can happen when this | |||
| field is not set properly. Consider a user in domain 1, calling a | field is not set properly. Consider a user in domain 1, calling a | |||
| user in domain 2. Domain 1 provides the user with a service they | user in domain 2. Domain 1 provides the user with a service they | |||
| call "voice chat", which utilizes voice and IM for real time | call "voice chat", which utilizes voice and IM for real time | |||
| skipping to change at page 17, line 11 ¶ | skipping to change at page 18, line 36 ¶ | |||
| the server in domain 2, the service identifier is unknown. | the server in domain 2, the service identifier is unknown. | |||
| Consequently, the request does not get the proper QoS treatment, even | Consequently, the request does not get the proper QoS treatment, even | |||
| if the call itself will succeed. | if the call itself will succeed. | |||
| If, on the other hand, derived service identification were used, the | If, on the other hand, derived service identification were used, the | |||
| service identifier could be removed by domain 2, and then recomputed | service identifier could be removed by domain 2, and then recomputed | |||
| based on the signaling to match its own notion of services. In this | based on the signaling to match its own notion of services. In this | |||
| case, domain 2 could derive the "text telephony" identifier, and the | case, domain 2 could derive the "text telephony" identifier, and the | |||
| request completes successfully. | request completes successfully. | |||
| declarative service identification, used between domains, causes | Declarative service identification, used between domains, causes | |||
| interoperability failures unless all interconnected domains agree on | interoperability failures unless all interconnected domains agree on | |||
| exactly the same set of services and how to name them. Of course, | exactly the same set of services and how to name them. Of course, | |||
| lack of service identifiers does not guarantee service | lack of service identifiers does not guarantee service | |||
| interoperability. However, SIP was built with rich tools for | interoperability. However, SIP was built with rich tools for | |||
| negotiation of capabilities at a finely granular level. One user | negotiation of capabilities at a finely granular level. One user | |||
| agent can make a call using audio and video, but if the receiving UA | agent can make a call using audio and video, but if the receiving UA | |||
| only supports audio, SIP allows both sides to negotiate down to the | only supports audio, SIP allows both sides to negotiate down to the | |||
| lowest common denominator. Thus, communications is still provided. | lowest common denominator. Thus, communications is still provided. | |||
| As another example, if one agent initiates a Push-To-Talk session | As another example, if one agent initiates a Push-To-Talk session | |||
| (which is audio with a companion floor control mechanism), and the | (which is audio with a companion floor control mechanism), and the | |||
| skipping to change at page 19, line 37 ¶ | skipping to change at page 21, line 15 ¶ | |||
| described above. | described above. | |||
| If it appears that the signaling currently defined in standards is | If it appears that the signaling currently defined in standards is | |||
| not sufficient to identify the service, it may be due to lack of | not sufficient to identify the service, it may be due to lack of | |||
| sufficient signaling to convey what is needed, or may be because | sufficient signaling to convey what is needed, or may be because | |||
| request URIs should be used for differentiation and they are not | request URIs should be used for differentiation and they are not | |||
| being used. By applying the litmus tests described in Section 5.3, | being used. By applying the litmus tests described in Section 5.3, | |||
| network designers can determine if the system is attempting to | network designers can determine if the system is attempting to | |||
| perform declarative service identification or not. | perform declarative service identification or not. | |||
| 7.2. Design for Heterogeneity | 7.2. Design for SIP's Negotiative Expressiveness | |||
| When performing derived service identification, domains should be | One of SIP's key strengths is its ability to negotiate a common view | |||
| aware that sessions may arrive from different networks and different | of a session between participants. This means that the service that | |||
| endpoints. Consequently, the service identification algorithm must | is ultimately received can vary wildly, depending on the type of | |||
| be complete - meaning it computes the best answer for any possible | endpoints in the call and their capabilities. Indeed, this fact | |||
| signaling message that might be received. | becomes even more evident when calls are set up between domains. | |||
| As such, when performing derived service identification, domains | ||||
| should be aware that sessions may arrive from different networks and | ||||
| different endpoints. Consequently, the service identification | ||||
| algorithm must be complete - meaning it computes the best answer for | ||||
| any possible signaling message that might be received and any session | ||||
| which might be set up. | ||||
| In a homogeneous environment, the process of service identification | In a homogeneous environment, the process of service identification | |||
| is easy. The service provider will know the set of services they are | is easy. The service provider will know the set of services they are | |||
| providing, and based on the specific calls flows for each specific | providing, and based on the specific calls flows for each specific | |||
| service, can construct rules to differentiate one service from | service, can construct rules to differentiate one service from | |||
| another. However, when two different providers interconnect, | another. However, when different providers interconnect, or when | |||
| assumptions about what services are used, and how they are signaled, | different endpoitns are introduced, assumptions about what services | |||
| no longer apply. To provide the best user experience possible, a | are used, and how they are signaled, no longer apply. To provide the | |||
| provider doing service identification needs to perform a 'best-match' | best user experience possible, a provider doing service | |||
| operation, such that any legal SIP signaling - not just the specific | identification needs to perform a 'best-match' operation, such that | |||
| call flows running within their own network - is mapped to the | any legal SIP signaling - not just the specific call flows running | |||
| appropriate service. | within their own network amongst a limited set of endpoints - is | |||
| mapped to the appropriate service. | ||||
| 7.3. Presence | 7.3. Presence | |||
| Presence can help a great deal with providing unique URIs for | Presence can help a great deal with providing unique URIs for | |||
| different services. When a user wishes to contact another user, and | different services. When a user wishes to contact another user, and | |||
| knows only the AOR for the target (which is usually the case), the | knows only the AOR for the target (which is usually the case), the | |||
| user can fetch the presence document for the target. That document, | user can fetch the presence document for the target. That document, | |||
| in turn, can contain numerous service URI for contacting the target | in turn, can contain numerous service URI for contacting the target | |||
| with different services. Those URI can then be used in the Request- | with different services. Those URI can then be used in the Request- | |||
| URI for differentiation. When possible, this is the best solution to | URI for differentiation. When possible, this is the best solution to | |||
| skipping to change at page 20, line 36 ¶ | skipping to change at page 22, line 21 ¶ | |||
| the same domain. However, service identifiers are fundamentally | the same domain. However, service identifiers are fundamentally | |||
| useful within a particular domain, and any such header must be | useful within a particular domain, and any such header must be | |||
| stripped at a network boundary. Consequently, the process of service | stripped at a network boundary. Consequently, the process of service | |||
| identification and their associated service identifiers is always an | identification and their associated service identifiers is always an | |||
| intra-domain operation. | intra-domain operation. | |||
| 7.5. Device Dispatch | 7.5. Device Dispatch | |||
| Device dispatch should be done following the principles of [RFC3841], | Device dispatch should be done following the principles of [RFC3841], | |||
| using implicit preferences based on the signaling. For example, | using implicit preferences based on the signaling. For example, | |||
| [I-D.rosenberg-sip-app-media-tag] defines a new UA capability that | [RFC5688] defines a new UA capability that can be used to dispatch | |||
| can be used to dispatch requests based on different types of | requests based on different types of application media streams. | |||
| application media streams. | ||||
| However, it is is a mistake to try and use a service identifier as a | However, it is is a mistake to try and use a service identifier as a | |||
| UA capability. Consider a service called "multimedia telephony" | UA capability. Consider a service called "multimedia telephony" | |||
| which adds video to the existing PSTN experience. A user has two | which adds video to the existing PSTN experience. A user has two | |||
| devices, one of which is used for multimedia telephony, and the other | devices, one of which is used for multimedia telephony, and the other | |||
| is used strictly for a voice-assisted game. It is tempting to have | is used strictly for a voice-assisted game. It is tempting to have | |||
| the telephony device include a UA capability [RFC3840] called | the telephony device include a UA capability [RFC3840] called | |||
| "multimedia telephony" in its registration. Then, a calling | "multimedia telephony" in its registration. Then, a calling | |||
| multimedia telephony device can then include the Accept-Contact | multimedia telephony device can then include the Accept-Contact | |||
| header field [RFC3841] containing this feature tag. The proxy | header field [RFC3841] containing this feature tag. The proxy | |||
| skipping to change at page 21, line 26 ¶ | skipping to change at page 23, line 12 ¶ | |||
| granularity of feature tags must be equivalent to the granularity of | granularity of feature tags must be equivalent to the granularity of | |||
| individual features that can be signaled in SIP. | individual features that can be signaled in SIP. | |||
| 8. Security Considerations | 8. Security Considerations | |||
| Oftentimes, the service associated with a request is utilized for | Oftentimes, the service associated with a request is utilized for | |||
| purposes such as authorization, accounting, and billing. When | purposes such as authorization, accounting, and billing. When | |||
| service identification is not done properly, the possibility of | service identification is not done properly, the possibility of | |||
| unauthorized service use and network fraud is introduced. It is for | unauthorized service use and network fraud is introduced. It is for | |||
| this reason, discussed extensively in Section 6.1, that the usage of | this reason, discussed extensively in Section 6.1, that the usage of | |||
| explicit service identifiers inserted by a UA is not recommended. | declarative service identifiers inserted by a UA is not recommended. | |||
| 9. IANA Considerations | 9. IANA Considerations | |||
| There are no IANA considerations associated with this specification. | There are no IANA considerations associated with this specification. | |||
| 10. Acknowledgements | 10. Acknowledgements | |||
| This document is based on discussions with Paul Kyzivat and Andrew | This document is based on discussions with Paul Kyzivat and Andrew | |||
| Allen, who contributed significantly to the ideas here. Much of the | Allen, who contributed significantly to the ideas here. Much of the | |||
| content in this draft is a result of discussions amongst participants | content in this draft is a result of discussions amongst participants | |||
| skipping to change at page 22, line 22 ¶ | skipping to change at page 24, line 6 ¶ | |||
| [RFC4975] Campbell, B., Mahy, R., and C. Jennings, "The Message | [RFC4975] Campbell, B., Mahy, R., and C. Jennings, "The Message | |||
| Session Relay Protocol (MSRP)", RFC 4975, September 2007. | Session Relay Protocol (MSRP)", RFC 4975, September 2007. | |||
| [RFC5031] Schulzrinne, H., "A Uniform Resource Name (URN) for | [RFC5031] Schulzrinne, H., "A Uniform Resource Name (URN) for | |||
| Emergency and Other Well-Known Services", RFC 5031, | Emergency and Other Well-Known Services", RFC 5031, | |||
| January 2008. | January 2008. | |||
| [I-D.ietf-ecrit-framework] | [I-D.ietf-ecrit-framework] | |||
| Rosen, B., Schulzrinne, H., Polk, J., and A. Newton, | Rosen, B., Schulzrinne, H., Polk, J., and A. Newton, | |||
| "Framework for Emergency Calling using Internet | "Framework for Emergency Calling using Internet | |||
| Multimedia", draft-ietf-ecrit-framework-05 (work in | Multimedia", draft-ietf-ecrit-framework-10 (work in | |||
| progress), February 2008. | progress), July 2009. | |||
| [I-D.ietf-sip-gruu] | [RFC5627] Rosenberg, J., "Obtaining and Using Globally Routable User | |||
| Rosenberg, J., "Obtaining and Using Globally Routable User | Agent URIs (GRUUs) in the Session Initiation Protocol | |||
| Agent (UA) URIs (GRUU) in the Session Initiation Protocol | (SIP)", RFC 5627, October 2009. | |||
| (SIP)", draft-ietf-sip-gruu-15 (work in progress), | ||||
| October 2007. | ||||
| [I-D.rosenberg-sip-app-media-tag] | [RFC5688] Rosenberg, J., "A Session Initiation Protocol (SIP) Media | |||
| Rosenberg, J., "A Session Initiation Protocol (SIP) Media | Feature Tag for MIME Application Subtypes", RFC 5688, | |||
| Feature Tag for MIME Application Sub-Types", | January 2010. | |||
| draft-rosenberg-sip-app-media-tag-02 (work in progress), | ||||
| November 2007. | ||||
| [RFC3428] Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C., | [RFC3428] Campbell, B., Rosenberg, J., Schulzrinne, H., Huitema, C., | |||
| and D. Gurle, "Session Initiation Protocol (SIP) Extension | and D. Gurle, "Session Initiation Protocol (SIP) Extension | |||
| for Instant Messaging", RFC 3428, December 2002. | for Instant Messaging", RFC 3428, December 2002. | |||
| [RFC3841] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Caller | [RFC3841] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, "Caller | |||
| Preferences for the Session Initiation Protocol (SIP)", | Preferences for the Session Initiation Protocol (SIP)", | |||
| RFC 3841, August 2004. | RFC 3841, August 2004. | |||
| [RFC3840] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, | [RFC3840] Rosenberg, J., Schulzrinne, H., and P. Kyzivat, | |||
| "Indicating User Agent Capabilities in the Session | "Indicating User Agent Capabilities in the Session | |||
| Initiation Protocol (SIP)", RFC 3840, August 2004. | Initiation Protocol (SIP)", RFC 3840, August 2004. | |||
| [RFC2205] Braden, B., Zhang, L., Berson, S., Herzog, S., and S. | ||||
| Jamin, "Resource ReSerVation Protocol (RSVP) -- Version 1 | ||||
| Functional Specification", RFC 2205, September 1997. | ||||
| Author's Address | Author's Address | |||
| Jonathan Rosenberg | Jonathan Rosenberg | |||
| Cisco | jdrosen.net | |||
| Edison, NJ | Monmouth, NJ | |||
| US | US | |||
| Email: jdrosen@cisco.com | Email: jdrosen@jdrosen.net | |||
| URI: http://www.jdrosen.net | URI: http://www.jdrosen.net | |||
| Full Copyright Statement | ||||
| Copyright (C) The IETF Trust (2008). | ||||
| This document is subject to the rights, licenses and restrictions | ||||
| contained in BCP 78, and except as set forth therein, the authors | ||||
| retain all their rights. | ||||
| This document and the information contained herein are provided on an | ||||
| "AS IS" basis and THE CONTRIBUTOR, THE ORGANIZATION HE/SHE REPRESENTS | ||||
| OR IS SPONSORED BY (IF ANY), THE INTERNET SOCIETY, THE IETF TRUST AND | ||||
| THE INTERNET ENGINEERING TASK FORCE DISCLAIM ALL WARRANTIES, EXPRESS | ||||
| OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF | ||||
| THE INFORMATION HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED | ||||
| WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. | ||||
| Intellectual Property | ||||
| The IETF takes no position regarding the validity or scope of any | ||||
| Intellectual Property Rights or other rights that might be claimed to | ||||
| pertain to the implementation or use of the technology described in | ||||
| this document or the extent to which any license under such rights | ||||
| might or might not be available; nor does it represent that it has | ||||
| made any independent effort to identify any such rights. Information | ||||
| on the procedures with respect to rights in RFC documents can be | ||||
| found in BCP 78 and BCP 79. | ||||
| Copies of IPR disclosures made to the IETF Secretariat and any | ||||
| assurances of licenses to be made available, or the result of an | ||||
| attempt made to obtain a general license or permission for the use of | ||||
| such proprietary rights by implementers or users of this | ||||
| specification can be obtained from the IETF on-line IPR repository at | ||||
| http://www.ietf.org/ipr. | ||||
| The IETF invites any interested party to bring to its attention any | ||||
| copyrights, patents or patent applications, or other proprietary | ||||
| rights that may cover technology that may be required to implement | ||||
| this standard. Please address the information to the IETF at | ||||
| ietf-ipr@ietf.org. | ||||
| Acknowledgment | ||||
| Funding for the RFC Editor function is provided by the IETF | ||||
| Administrative Support Activity (IASA). | ||||
| End of changes. 29 change blocks. | ||||
| 118 lines changed or deleted | 166 lines changed or added | |||
This html diff was produced by rfcdiff 1.48. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ | ||||