RFC 3603
Private Session Initiation Protocol (SIP) Proxy-to-Proxy Extensions for Supporting the PacketCable Distributed Call Signaling Architecture
RFC 3603 ๐ Private Session Initiation Protocol (SIP) Proxy-to-Proxy Extensions for Supporting the PacketCable Distributed Call Signaling Architecture
Okay bestie, here's the paperwork tea โ
- Series: Network Working Group
- Number: Request for Comments: 3603
- Authors: W. Marshall, Ed. (AT&T) and F. Andreasen, Ed. (Cisco)
- Category: Informational
- Date: October 2003
- Obsoletes/Updates: The title block doesn't list anything this one obsoletes or updates ๐
Status of this Memo โจ
This memo gives information to the Internet community. It is not a standard of any kind, and it doesn't specify an Internet standard. Distribution is unlimited ๐ฆ
Copyright Notice
Copyright (C) The Internet Society (2003). All Rights Reserved. ๐
Abstract ๐
Okay so, the goal is to offer residential phone service at a huge scale across different domains ๐. For that to work, trusted elements owned by different service providers have to swap trusted info that carries customer-specific details and expectations about the people on the call. This doc describes private extensions to the Session Initiation Protocol (SIP) (RFC3261) that let trusted entities in the PacketCable Distributed Call Signaling Architecture exchange customer and billing info. These extensions give us mechanisms for access network coordination to prevent theft of service, customer originated trace of harassing calls, support for operator services and emergency services, and support for various other regulatory issues. The extensions only apply within closed administrative domains, or among federations of administrative domains with previously agreed-upon policies where coordinating charging and other functions is required. That's the vibe, no cap ๐ซถ
Table of Contents ๐
1. Applicability Statement . . . . . . . . . . . . . . . . . . . 3
2. Introduction. . . . . . . . . . . . . . . . . . . . . . . . . 3
3. Trust Boundary. . . . . . . . . . . . . . . . . . . . . . . . 5
4. Conventions used in this document . . . . . . . . . . . . . . 6
5. P-DCS-TRACE-PARTY-ID. . . . . . . . . . . . . . . . . . . . . 6
5.1. Syntax. . . . . . . . . . . . . . . . . . . . . . . . . 7
5.2. Procedures at an Untrusted User Agent Client (UAC). . . 7
5.3. Procedures at a Trusted User Agent Client (UAC) . . . . 7
5.4. Procedures at an Untrusted User Agent Server (UAS). . . 7
5.5. Procedures at a Trusted User Agent Server (UAS) . . . . 7
5.6. Procedures at Proxy . . . . . . . . . . . . . . . . . . 8
5.6.1. Procedures at Originating Proxy . . . . . . . . 8
5.6.2. Procedures at Terminating Proxy . . . . . . . . 8
6. P-DCS-OSPS. . . . . . . . . . . . . . . . . . . . . . . . . . 8
6.1. Syntax. . . . . . . . . . . . . . . . . . . . . . . . . 9
6.2. Procedures at an Untrusted User Agent Client (UAC). . . 9
6.3. Procedures at a Trusted User Agent Client (UAC). . . . . 10
6.4. Procedures at an Untrusted User Agent Server (UAS). . . 10
6.5. Procedures at a Trusted User Agent Server (UAS). . . . . 11
6.6. Procedures at Proxy . . . . . . . . . . . . . . . . . . 11
7. P-DCS-BILLING-INFO. . . . . . . . . . . . . . . . . . . . . . 11
7.1. Syntax. . . . . . . . . . . . . . . . . . . . . . . . . 13
7.2. Procedures at an Untrusted User Agent Client (UAC). . . 14
7.3. Procedures at a Trusted User Agent Client (UAC). . . . . 14
7.4. Procedures at an Untrusted User Agent Server (UAS). . . 15
7.5. Procedures at a Trusted User Agent Server (UAS). . . . . 15
7.6. Procedures at Proxy . . . . . . . . . . . . . . . . . . 16
7.6.1. Procedures at Originating Proxy . . . . . . . . 16
7.6.2. Procedures at Terminating Proxy . . . . . . . . 17
7.6.3. Procedures at Tandem Proxy. . . . . . . . . . . 18
8. P-DCS-LAES and P-DCS-REDIRECT . . . . . . . . . . . . . . . . 18
8.1. Syntax. . . . . . . . . . . . . . . . . . . . . . . . . 19
8.2. Procedures at an Untrusted User Agent Client (UAC). . . 20
8.3. Procedures at a Trusted User Agent Client (UAC). . . . . 20
8.4. Procedures at an Untrusted User Agent Server (UAS). . . 21
8.5. Procedures at a Trusted User Agent Server (UAS). . . . . 21
8.6. Procedures at Proxy . . . . . . . . . . . . . . . . . . 21
8.6.1. Procedures at Originating Proxy . . . . . . . . 22
8.6.2. Procedures at Terminating Proxy . . . . . . . . 23
9. Security Considerations . . . . . . . . . . . . . . . . . . . 24
10. IANA Considerations . . . . . . . . . . . . . . . . . . . . . 25
11. Intellectual Property Rights Notice . . . . . . . . . . . . . 25
12. References . . . . . . . . . . . . . . . . . . . . . . . . . 25
12.1. Normative References. . . . . . . . . . . . . . . . . . 25
12.2. Informative References. . . . . . . . . . . . . . . . . 26
13. Acknowledgements. . . . . . . . . . . . . . . . . . . . . . . 26
14. Editors' Addresses. . . . . . . . . . . . . . . . . . . . . . 27
15. Full Copyright Statement. . . . . . . . . . . . . . . . . . . 28
1. Applicability Statement ๐ธ
Heads up, these SIP extensions make some big assumptions about network topology, how SIP links to the lower layers, and whether trust is transitive ๐ง. Those assumptions generally don't hold across the Internet as a whole. The headers are only meant for closed administrative domains, or federations of administrative domains with previously agreed-upon policies where coordinating charging and other functions is required, like in the architecture described in [6]. Using them outside of that setup could leak sensitive or private info, so be careful ๐. Users are strongly encouraged to consent to the privacy implications of the policies in [6] inside those domains too.
Also, even though RFC 2119 language shows up in this doc, the normative language only covers this doc's area of applicability. Like the technology itself, it does not reach the general Internet ๐
2. Introduction ๐
Okay so, to launch a SIP-based [2] residential phone service at a massive scale across different domains, trusted elements owned by different service providers need to trade trusted info. That info covers billing details and expectations about the people on the call ๐ฑ
There are tons of billing models that bring in revenue from phone services today โจ Charging for phone service is tightly tied to using network resources. Going through all of these different methods is out of scope for this doc, so we're skipping that drama.
A key principle behind the DCS architecture in [6] is that network service providers need to be able to control and monitor network resources ๐ฅ Revenue can come from using those resources, and also from delivering enhanced services like telephony. The DCS architecture also gets that call signaling and resource management need to coordinate. That coordination makes sure users are authenticated and authorized before they get access to network resources and billable enhanced services ๐ซถ
DCS Proxies, as defined in [6], can see subscriber info and act as policy decision points and trusted intermediaries along the call signaling path ๐ Edge routers handle network connectivity and enforce resource policy. They also capture and report connectivity and resource usage info. Edge routers need billing info they can log with Record Keeping or Billing servers ๐งพ The DCS Proxy is the central point where call signaling and resource management meet, so it can provide that info based on the authenticated identity of the calling and called parties. Since DCS Proxies trust each other, they can be relied on to exchange trusted billing info about the parties in a call. See [6] for the trust boundary and the trusted versus untrusted entities ๐ฆ
So, it makes sense to think about defining SIP header extensions that let DCS Proxies swap info during call setup ๐ The extensions would only show up on trusted network segments. They should be inserted when entering a trusted network region, and removed before leaving trusted network segments.
An originating DCS Proxy gets a LOT of info while handling a connection setup request from a user agent ๐ญ That includes location info about the subscriber (essential for emergency services calls), billing info, and station info (like, a coin operated phone). Plus, while translating the destination number, it picks up info like the local-number-portability office code, and every other proxy handling the call will need that too ๐
For Usage Accounting records, we need an identifier that can be tied to all the event records made for the call ๐ The SIP Call-ID header field can't do that job. The originating user agent picks it, and it may not be unique across past and current calls. Since the service provider is the one using this identifier, it should be picked in a way and format that meets the provider's needs ๐
Billing info isn't always unique to each user. Picture a bunch of calls from an office all billed to the same account ๐ข It also may not be the same for every call one user makes. Think prepaid calls, credit card calls, collect calls, and so on ๐ That's why billing info has to be carried separately from the calling and called party identification. On top of that, some billing models use split-charging, where multiple entities get billed for parts of the call ๐
Adding a SIP General Header Field lets us capture billing info and billing identification for the whole duration of the call โญ
The billing extensions also only show up on trusted network segments. A DCS Proxy MAY insert them in INVITE and REFER requests and INVITE responses on a trusted network segment, and they get removed before leaving trusted network segments ๐ง
Besides billing, residential phone service also needs customer originated trace for harassing or obscene calls ๐ It needs operator services like busy line verification and emergency interrupt, which an operator starts from an Operator Services Position System (OSPS) ๐ It needs emergency services too, like 9-1-1 calls to a Public Service Access Point (PSAP) and the call handling that follows. And it needs support for Electronic Surveillance and Law Enforcement access, as required by applicable legislation and court orders โ๏ธ In all of these cases, more info about the call and the subscribers on it has to get exchanged between the proxies. Lowkey a lot, but that's the job ๐ธ
3. Trust Boundary โจ
okay so the DCS architecture [6] draws a trust boundary ๐ก๏ธ around all the systems and servers that the service provider owns, runs, and/or controls. the trusted side includes the proxies plus servers like bridge servers, voicemail servers, announcement servers, etc. ๐ everything outside that boundary is the customer premises equipment, plus application and media servers run by third-party service providers.
some subscriber info, like billing and accounting details, stays inside the boundary ๐. other subscriber info, like endpoint identity, may get shown to untrusted endpoints, or may get held back depending on the subscriber profile ๐.
the User Agent (UA) can be inside the trust boundary OR outside it, and it depends on exactly what function is being done and exactly how it's being done ๐ฆ. so the procedures a User Agent follows are different depending on which side it's on. obsessed with how this makes sense once you see it ๐ญ.
that's why the User Agent sections below are split into trusted user agents and untrusted user agents ๐ง.
4. Conventions used in this document ๐
the key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this document are to be interpreted as described in BCP 14, RFC 2119 [1]. ๐
okay now the private-URL ๐ต๏ธโโ๏ธ. this is a term used in this document for a SIP URI that a proxy generates. it has a "hostport" that identifies the proxy, plus a "userinfo" string that the proxy generated too. the "userinfo" usually has (or points to) stuff that must not leave the trusted proxy domain, like billing account numbers, electronic surveillance indication, electronic surveillance parameters, and call redirection information ๐.
so that info is either stored locally by the proxy, or it's encrypted with a private key that only the proxy knows, then encoded as a character string in the "userinfo" part of the URL. a checksum is included in the "userinfo" data so tampering can be detected ๐.
how a proxy recognizes a "userinfo" as a private-URL, then decodes and recovers the original info, is local to that proxy and is not standardized. ๐คซ a couple of possible implementations are an initial magic cookie (e.g., z9hG4Bk followed by the pointer/information), or using a reserved "user" name (e.g., "private") with the optional "password" holding the pointer/information ๐.
5. P-DCS-TRACE-PARTY-ID ๐
in the telephone network, calling identity info supports regulatory stuff like the Customer Originated Trace service ๐จ. that service lets the called party report obscene or harassing phone calls to law enforcement. it works separately from caller-id, and it works even if the caller asked for anonymity ๐. the calling party here is the station that originated the call.
for this service to be dependable, the called party has to be able to trust that the calling identity info being shown is valid โ . one way to get there is described in [10] โจ.
to start a customer-originated-trace from an untrusted UAC, there's an extra header defined for the INVITE request ๐. it's called P-DCS-Trace-Party-ID, and it doesn't show up in any other request or response. the entity the Request-URI points to does the service-provider-specific stuff: recording and reporting the caller identity in the P-DCS-Trace-Party-ID for law enforcement action ๐ฎโโ๏ธ. then it forwards the call to either an announcement server or the service-provider's business office, to collect more info about the complaint. ๐ a trusted UAC doesn't use this header, since it starts the action locally.
5.1. Syntax ๐
the ABNF for this header is below (some terms used in this ABNF are defined in [2]) ๐ :
P-DCS-Trace-Party-ID = "P-DCS-Trace-Party-ID" HCOLON
name-addr
this document adds the following entry to Table 2 of [2] ๐งพ:
Header field where proxy ACK BYE CAN INV OPT REG
------------ ----- ----- --- --- --- --- --- ---
P-DCS-Trace-Party-ID R dr - - - o - -
SUB NOT REF INF UPD PRA
--- --- --- --- --- ---
- - - - - -
the addr-spec inside name-addr holds a URL that identifies the remote endpoint ๐ธ. it's usually a tel: URL or a SIP URI giving the identity of the remote endpoint, as provided in the signaling messages that set up the session being traced ๐ฏ.
5.2. Procedures at an Untrusted User Agent Client (UAC) ๐
the UAC MUST insert a P-DCS-Trace-Party-ID header into the initial INVITE message for a customer-originated-trace request ๐จ. the UAC MUST also use a SIP URI in the Request-URI, with userinfo set to "call-trace" and hostport identifying the call tracing entity for the untrusted UA ๐ซถ.
5.3. Procedures at a Trusted User Agent Client (UAC) ๐
a trusted UAC does the customer-originated-trace in a way that's similar to the trusted UAS, described below ๐ฆ. a trusted UAC MUST NOT include this header in any request ๐ โโ๏ธ.
5.4. Procedures at an Untrusted User Agent Server (UAS) ๐ซ
this header MUST NOT appear in any response sent by a UAS ๐.
5.5. Procedures at a Trusted User Agent Server (UAS) ๐
if the P-DCS-Trace-Party-ID header is in the initial INVITE request from a UAC, and the Request-URI of the INVITE has userinfo set to "call-trace" and hostport set to the UAS, then the UAS MUST do the service-provider-specific stuff: record and report the caller identity for law enforcement action ๐. the UAS then MUST redirect the call, using a 3xx response, to either an announcement server or the service-provider's business office, to collect further info about the complaint ๐โโ๏ธ.
this header MUST NOT appear in any response sent by a UAS ๐ โโ๏ธ.
5.6. Procedures at Proxy ๐
there are two sets of proxy procedures defined: (1) the procedures at an originating proxy, and (2) the procedures at a terminating proxy ๐งฉ. the originating proxy is a proxy that received the INVITE request from a non-trusted endpoint.
the terminating proxy is a proxy that sends the INVITE request to a non-trusted endpoint ๐ค.
a proxy that both receives the INVITE request from an untrusted endpoint AND sends the INVITE request to an untrusted endpoint performs both sets of procedures ๐.
5.6.1. Procedures at Originating Proxy ๐๏ธ
if the P-DCS-Trace-Party-ID header is in the initial INVITE request from the UAC, and the Request-URI of the INVITE has userinfo other than "call-trace", and hostport is set to something other than a potentially provisioned call tracing entity, then the Proxy MAY reject the request, or MAY remove the P-DCS-Trace-Party-ID header from the request ๐ค. if the header is in a valid request and holds a private-URL that identifies the Proxy in the hostport, then the Originating Proxy SHOULD replace the private-URL with its original contents (i.e., the verified identity of the caller of the session that is being traced) โจ.
5.6.2. Procedures at Terminating Proxy ๐
this header MUST NOT appear in any request or response sent by a terminating proxy to an untrusted endpoint ๐ โโ๏ธ.
6. P-DCS-OSPS ๐
some calls have special call processing needs that normal user agent call processing might not satisfy ๐. for example, when a user is already on a call and another call comes in, that call might get rejected with a busy indication ๐ต. but some PSTN operator services need special call processing. in particular, the Busy Line Verification (BLV) and Emergency Interrupt (EI) services, started by an operator from an Operator Services Position System (OSPS) on the PSTN network, have that need ๐ฉโ๐ผ. similarly, emergency calls to a 9-1-1 Public Service Access Point (PSAP) may cause trunk signaling that leads to operator ringback, using a howling tone or sustained ring on the originating line (country-specific variations may exist) ๐จ.
to tell the SIP user agent that a call should get special treatment, we use a new P-DCS-OSPS header field ๐ซ. it can be set to a value that says when a special type of call processing is requested. three values are defined in this header: "BLV" for busy line verification, "EI" for emergency interrupt, and "RING" for operator ringback (e.g., howling/sustained tone ring in the US) ๐.
if the user agent decides to honor such a request, its response to an INVITE with either "BLV" or "EI" will not be a busy indication ๐. since "EI" and "RING" only happen on established dialogs, they may also show up in UPDATE requests ๐งโโ๏ธ.
6.1. Syntax ๐
the ABNF for the P-DCS-OSPS header is below (some terms used in this ABNF are defined in [2]) ๐ :
P-DCS-OSPS = "P-DCS-OSPS" HCOLON OSPS-Tag
OSPS-Tag = "BLV" / "EI" / "RING" / token
this document adds the following entry to Table 2 of [2] ๐งพ:
Header field where proxy ACK BYE CAN INV OPT REG
------------ ----- ----- --- --- --- --- --- ---
P-DCS-OSPS R dr - - - o - -
SUB NOT REF INF UPD PRA
--- --- --- --- --- ---
- - - - o -
the OSPS-Tag value of "token" is defined for extensibility, and it's reserved for future use ๐ฎ.
6.2. Procedures at an Untrusted User Agent Client (UAC) ๐ซ
the P-DCS-OSPS header MUST NOT be sent in a request from an untrusted UAC ๐ โโ๏ธ.
6.3. Procedures at a Trusted User Agent Client (UAC) ๐๏ธ
this header is usually only inserted by a Media Gateway Controller [6] that controls a Media Gateway with special trunks to a PSTN OSPS system or PSAP ๐. that trunk group is often called a BLV-trunk group, and it uses special signaling procedures that prevent accidental use ๐ก๏ธ. calls starting at the PSTN OSPS system get sent over this trunk group, and they result in an INVITE request with the P-DCS-OSPS header ๐.
this header MAY be sent in an INVITE request, and it MUST NOT appear in any message other than the ones listed below ๐ฏ.
the OSPS-Tag value "BLV" MUST NOT appear in any request or response other than an initial INVITE request that sets up a new dialog ๐ โโ๏ธ.
the OSPS-Tag value "EI" MUST NOT appear in any request or response other than (1) a subsequent INVITE within a pre-existing dialog that was established with the OSPS-Tag value of "BLV", or (2) an UPDATE request within a pre-existing dialog that was established with the OSPS-Tag value of "BLV" ๐.
the OSPS-Tag value "RING" MUST NOT appear in any request or response other than (1) a subsequent INVITE within a pre-existing dialog that a UAC established to an operator or PSAP, or (2) an UPDATE request within a pre-existing dialog that a UAC established to an operator or PSAP ๐.
6.4. Procedures at an Untrusted User Agent Server (UAS) ๐
okay so if the UAS gets an INVITE with an OSPS-Tag of "BLV", and the dialog identification matches an existing dialog, but that existing call was NOT set up with the OSPS-Tag, it MUST reject the request with a 403-Forbidden error code. no exceptions bestie ๐
โโ๏ธ
if the UAS gets an INVITE/UPDATE with an OSPS-Tag of "EI" or "RING" and the dialog identification does NOT match an existing dialog, it MUST reject it with a 403-Forbidden response code ๐
if an INVITE has an OSPS-Tag of "BLV" and the UAS isn't willing to help offer this service, it MUST reject the request with a 403-Forbidden response code. boundaries are everything ๐ซถ
now the vibes for "BLV". the UAS SHOULD NOT reject a BLV INVITE just because it's busy ๐. the UAS MUST NOT send a 3xx-Redirect response code to a BLV INVITE, no redirecting, no drama ๐
โโ๏ธ. and the UAS SHOULD NOT alert the user about the incoming call attempt if the BLV OSPS-Tag is in the INVITE. shhh ๐คซ
if a BLV INVITE gets accepted (like it meets all the QoS pre-conditions, etc.), the UAS MUST send an audio stream on this connection to the address and port listed in the SDP of the INVITE ๐ง. the UAS MAY mix the two ends of an existing active call together and send that resulting media stream to the address and port listed. or, alternatively, the UAS MAY send a copy of the local voice stream and, if there's no activity on the local voice stream, send a copy of the received voice stream of an existing call. mixing options, so cute ๐. if the UAS is idle, the UAS SHOULD send a stream of silence packets to OSPS ๐ค. if the UAS is ringing or in ringback, the UAS SHOULD send a ringback stream to OSPS ๐.
if an INVITE/UPDATE with an OSPS-Tag of "EI" gets accepted, the UAS MUST enable communication between the UAC and the local user ๐ฃ๏ธโจ. the UAS MAY put any existing call on hold, or start an ad-hoc conference. main character energy ๐.
if an INVITE/UPDATE with an OSPS-Tag of "RING" gets accepted, the UAS MUST perform operator ringback following local procedures. for example, it can generate a 3-second howling tone or a sustained ring, depending on what state the user equipment is in ๐๐ธ.
6.5. Procedures at a Trusted User Agent Server (UAS) ๐ซถ
the procedures at a trusted UAS MUST be identical to the ones in 6.4. same rules, no notes ๐โจ.
6.6. Procedures at Proxy ๐ง
in the DCS architecture, the OSPS counts as a trusted UAC ๐ค. if a proxy gets a P-DCS-OSPS header in a request from an untrusted source, it MUST either remove the header or reject the request with a 403-Forbidden response ๐ซ. no sneaky headers allowed bestie ๐ค.
a proxy that runs a call-forwarding service MUST NOT respond to an INVITE request with a 3xx response if the request had the P-DCS-OSPS header in it ๐. redirects are off the table here ๐ .
7. P-DCS-BILLING-INFO ๐ธ
okay billing time ๐. there are SO many billing models out there for making money off telephony services, and charging is super tightly linked to how network resources get used. the details of all these different methods are outside the scope of this document, so we're skipping them ๐.
proxies have access to subscriber info and act as policy decision points and trusted middlemen along the call signaling path ๐ต๏ธโโ๏ธ. edge routers provide the network connection and enforce resource policy, and they also capture and report connection and resource usage info ๐. edge routers need billing info they can log with Record Keeping or Billing servers ๐. the proxy is the central coordinator between call signaling and resource management, so it can provide this info based on the authenticated identity of the calling and called parties ๐ชช. since proxies trust each other, they can be relied on to exchange trusted billing info about the parties in a call ๐ค๐.
for Usage Accounting records, you need an identifier that can be linked to ALL the event records made for a call ๐. the SIP Call-ID header field can't do this job, because the originating user agent picks it, and it might not be unique across past and current calls ๐ โโ๏ธ. also, since the service provider is the one using this identifier, it should be chosen in a manner and format that meets the service provider's needs ๐ผ.
billing info isn't always unique per user, like calls from an office that all get billed to the same account ๐ข. and billing info isn't always the same for every call one user makes, like prepaid calls, credit card calls, collect calls, and so on ๐ณ. so billing info has to be carried separately from the calling and called party identification ๐ง . and some billing models do split-charging, where multiple entities get billed for different portions of the call โ๏ธ.
adding a SIP General Header Field lets you capture billing info and billing identification for the whole duration of the call ๐ฏ.
the billing extensions are only meant to show up on trusted network segments. they MAY be inserted by a proxy or a trusted UA in INVITE requests on a trusted network segment, and removed before they leave the trusted network segments ๐ก๏ธ. the P-DCS-Billing-Info header extension is only used on requests and responses between proxies and trusted User Agents. it is NEVER sent to, or sent by, an untrusted UA ๐ซโจ.
7.1. Syntax ๐
the DCS-Billing-Info header is defined by the following ABNF (some terms used in this ABNF are defined in [2]) ๐งพ:
P-DCS-Billing-Info = "P-DCS-Billing-Info" HCOLON
Billing-Correlation-ID "/" FEID
*(SEMI Billing-Info-param)
Billing-Correlation-ID = 1*48(HEXDIG)
FEID = 1*16(HEXDIG) "@" host
Billing-Info-param = RKS-Group-ID-param / Charge-param /
Calling-param / Called-param /
Routing-param / Loc-Routing-param /
generic-param
RKS-Group-ID-param = "rksgroup" EQUAL RKS-Group-ID
RKS-Group-ID = token
Charge-param = "charge" EQUAL Acct-Charge-URI
Acct-Charge-URI = LDQUOT addr-spec RDQUOT
Calling-param = "calling" EQUAL Acct-Calling-URI
Acct-Calling-URI = LDQUOT addr-spec RDQUOT
Called-param = "called" EQUAL Acct-Called-URI
Acct-Called-URI = LDQUOT addr-spec RDQUOT
Routing-param = "routing" EQUAL Acct-Routing-URI
Acct-Routing-URI = LDQUOT addr-spec RDQUOT
Loc-Routing-param = "locroute" EQUAL Acct-Loc-Routing-URI
Acct-Loc-Routing-URI = LDQUOT addr-spec RDQUOT
this doc adds the following entry to Table 2 of [2] ๐:
Header field where proxy ACK BYE CAN INV OPT REG
------------ ----- ----- --- --- --- --- --- ---
P-DCS-Billing-Info admr - - - o - -
SUB NOT REF INF UPD PRA
--- --- --- --- --- ---
- - - - - -
the P-DCS-Billing-Info extension holds an identifier that an event recorder can use to link multiple usage records, possibly from different sources, to a billable account ๐. it also has the subscriber account info and other info needed for accurate billing of the service ๐ฐ. this header is only used between proxies and trusted User Agents ๐ค.
the Billing-Correlation-ID is specified in [9] as a 24-byte binary structure. it has 4 bytes of NTP timestamp, 8 bytes for the unique identifier of the network element that made the ID, 8 bytes for the time zone, and 4 bytes of monotonically increasing sequence number at that network element ๐งฎ. this identifier is picked to be globally unique within the system for a window of several months ๐. it MUST be encoded in the P-DCS-Billing-Info header as a hexadecimal string of up to 48 characters. leading zeroes MAY be suppressed ๐ซง.
the Financial-Entity-ID (FEID) is specified in [9] as an 8-byte structure. it has the financial identifier for that domain, followed by a domain name ๐ฆ. an FEID can be associated with a type of service, and it could be assigned to multiple domains by the same provider ๐๏ธ. a domain could contain multiple assigned FEIDs too ๐. this 8-byte structure MUST be encoded in the P-DCS-Billing-Info header as a hexadecimal string of up to 16 characters. trailing zeroes MAY be suppressed. "Host" holds the domain name ๐.
the RKS-Group-ID points to a record keeping server (or a group of cooperating servers) for event messages about this call ๐. it's used to control certain optimizations of procedures when multiple event message streams are being sent to the same Record Keeping Server โก.
the extra parameters carry the info needed to generate event message records ๐. Acct-Charge-URI, Acct-Calling-URI, Acct-Called-URI, Acct-Routing-URI, and Acct-Location-Routing-URI are each defined as URLs. they SHOULD all contain tel: URLs with E.164 formatted addresses. (lowercase "should" here, it's a soft suggestion ๐ฅฐ.) these fields are further defined in [9] under the element identifiers "Charge_Number" (element ID 16), "Calling_Party_Number" (element ID 4), "Called_Party_Number" (element ID 5), "Routing Number" (element ID 25), and "Location_Routing_Number" (element ID 22) ๐ข.
7.2. Procedures at an Untrusted User Agent Client (UAC) ๐ โโ๏ธ
this header is never sent to an untrusted UAC, and it's never sent by an untrusted UAC either ๐.
7.3. Procedures at a Trusted User Agent Client (UAC) ๐
the UAC MUST generate the Billing-Correlation-ID for the call and put it into the P-DCS-Billing-Info header in the initial INVITE sent to the terminating proxy, along with the charging info for the call ๐. the UAC MUST include its FEID and the RKS-Group-ID for the Record-Keeping-Server it's using. if the UAC did a Local Number Portability (LNP) query, it MUST include the Routing Number and Location Routing Number that the query returned ๐.
if the response to the initial INVITE is a 3xx-Redirect, the UAC generates a new initial INVITE request to the destination in the Contact: header, just like standard SIP ๐. if a UAC gets a 3xx-Redirect response to an initial INVITE, the new INVITE it generates MUST contain the P-DCS-Billing-Info header from that 3xx-Redirect response ๐ซถ. if the UAC is acting as a B2BUA, it MAY generate a private-URL instead of a new INVITE and place it in the Contact header of a 3xx-Redirect response sent to the originating endpoint ๐ฆ. this private-URL MUST contain (or contain a pointer to) the P-DCS-Billing-Info value, which shows the charging arrangement for the new call, and it MUST have an expiration time very shortly in the future. that way the originator can't reuse this private-URL for multiple calls โณ๐.
a UAC that includes a Refer-to header in a REFER request MUST include a P-DCS-Billing-Info header in the Refer-to's URL ๐. this P-DCS-Billing-Info header MUST include the accounting info of the REFER initiator ๐งพโจ.
7.4. Procedures at an Untrusted User Agent Server (UAS) ๐
this header is never sent to an untrusted UAS, and it's never sent by an untrusted UAS either ๐ซง๐.
7.5. Procedures at a Trusted User Agent Server (UAS) ๐ โจ
Okay bestie, the trusted UAS has the biggest job in the call ๐ซถ. It MUST put a P-DCS-Billing-Info header in the first reliable 1xx (except 100) or 2xx response to an initial INVITE message ๐. That header MUST carry the Billing-Correlation-ID the UAS generated, the FEID of the UAS, and the RKS-Group-ID of the Record-Keeping-Server it's using ๐ฆ.
The UAS MAY change Acct-Charge-URI if it wants to override the billing info that came in the INVITE, like for a toll-free call ๐. But whether it does that, and what the new Acct-Charge-URI says, MUST be decided by the service provider policy provisioned in the UAS ๐. And if the UAS did an LNP query, it MUST include the Routing Number and Location Routing Number that the query returned ๐.
The UAS MUST also add a P-DCS-Billing-Info header to a 3xx-redirect response to an initial INVITE ๐ธ. That header gives the accounting info for the call forwarder, covering the call segment from the destination to the forwarded-to destination. Iconic ๐ .
7.6. Procedures at Proxy ๐ง
There are three sets of proxy procedures: (1) the originating proxy, (2) the terminating proxy, and (3) the tandem proxy ๐.
An originating proxy is the one that receives the INVITE request from a non-trusted endpoint โจ.
A terminating proxy is the one that sends the INVITE request to a non-trusted endpoint ๐ฆ.
Any proxy that is neither of those is a tandem proxy ๐.
For mid-call changes, like call transfers, the proxy that gets the request from a non-trusted endpoint is called the initiating proxy ๐ฒ. The proxy that sends the request to a non-trusted endpoint is called the recipient proxy ๐. The initiating proxy's procedures are grouped with the originating proxy ones, and the recipient proxy's procedures are grouped with the terminating ones ๐ซถ.
A proxy that both receives the INVITE request from an untrusted endpoint and sends the INVITE request to a non-trusted endpoint does both sets of procedures. Main character energy ๐.
7.6.1. Procedures at Originating Proxy ๐
The originating proxy MUST generate the Billing-Correlation-ID for the call and insert it into the P-DCS-Billing-Info header in the initial INVITE message it sends to the terminating proxy, along with the charging info for the call ๐. It MUST include its FEID and the RKS-Group-ID of the Record-Keeping-Server it's using. If it did an LNP query, it MUST include the Routing Number and Location Routing Number that the query returned. And any P-DCS-Billing-Info header that came from an untrusted UA MUST be removed ๐๏ธ.
If the Request-URI contains a private-URL, and the decoded username contains billing information, the originating proxy MUST generate a P-DCS-Billing-Info header with that decrypted information ๐. Otherwise, the originating proxy MUST work out the accounting info for the call originator and insert a P-DCS-Billing-Info header with that info ๐ .
If the response to the initial INVITE is a 3xx-Redirect that arrives before a 18x, the originating proxy generates a new initial INVITE request to the destination listed in the Contact: header, just like standard SIP ๐ฆ. If an originating proxy gets a 3xx-Redirect response to an initial INVITE before any 18x response, the INVITE it generates MUST contain the P-DCS-Billing-Info header from that 3xx-Redirect response ๐ธ.
If the response to the initial INVITE is a 3xx-Redirect that arrives after a 18x, the originating proxy generates a private-URL and puts it in the Contact header of a 3xx-Redirect response sent to the originating endpoint ๐ง. That private-URL MUST contain (or contain a pointer to) the P-DCS-Billing-Info value, which shows the charging arrangement for the new call. It also needs an expiration time very shortly in the future, so the originator can't reuse it for multiple calls โณ.
An originating proxy that processes a REFER request from an untrusted UA MUST include a P-DCS-Billing-Info header in the Refer-to's URL ๐. That header MUST include the accounting info of the initiator ๐.
7.6.2. Procedures at Terminating Proxy ๐
The terminating proxy MUST NOT send the P-DCS-Billing-Info header to an untrusted destination ๐ โโ๏ธ.
The terminating proxy MUST include a P-DCS-Billing-Info header in the first reliable 1xx (except 100) or 2xx response to an initial INVITE message ๐. That header MUST include the Billing-Correlation-ID the terminating proxy generated, its FEID, and the RKS-Group-ID of the Record-Keeping-Server it's using ๐. It MAY change Acct-Charge-URI if it wants to override the billing info that was in the INVITE, like for a toll-free call โ๏ธ. Whether it does that, and what the resulting P-DCS-Billing-Info header contains, MUST be determined by the service provider policy provisioned in the terminating proxy ๐. If it did an LNP query, it MUST include the Routing Number and Location Routing Number that the query returned ๐ฆ.
The terminating proxy MUST add P-DCS-Billing-Info headers to a 3xx-redirect response to an initial INVITE ๐ธ. Those give the accounting info for the call forwarder, for the call segment from the destination to the forwarded-to destination ๐.
When a proxy gets a mid-call REFER request that includes a Refer-to header, it generates a private-URL and puts it in the Refer-to header sent to the endpoint ๐. That private-URL MUST contain the P-DCS-Billing-Info value, which shows the charging arrangement for the new call. It also needs an expiration time very shortly in the future, so the endpoint can't reuse it for multiple calls ๐ญ.
7.6.3. Procedures at Tandem Proxy ๐
If the tandem proxy did an LNP query, it MUST insert the Routing Number and Location Routing Number returned by the query into the P-DCS-Billing-Info header in the first reliable 1xx/2xx/3xx (except 100) response ๐ .
8. P-DCS-LAES and P-DCS-REDIRECT ๐ต๏ธ
NOTE: According to RFC 2804 [5], the IETF supports documenting lawful intercept technology if it's needed to develop it ๐. The next section provides that documentation. The RFC 2119 language, as stated above, describes the requirements of the specification only if it's implemented, and strictly within the applicability domain described above. See RFC 2804 for the privacy, security, and complexity issues around this tech ๐.
The P-DCS-LAES extension holds the info needed to support Lawfully Authorized Electronic Surveillance ๐ต๏ธโโ๏ธ. This header has the address and port of an Electronic Surveillance Delivery Function, which receives a duplicate stream of event messages related to this call. It may also have an extra address and port for delivering call content. Security key info is included so pairs of Delivery Functions can securely exchange surveillance information ๐. This header is only used between proxies and trusted User Agents ๐.
The P-DCS-Redirect extension holds call-identifying info needed to support Lawfully Authorized Electronic Surveillance of redirected calls ๐ฆ. This header is only used between proxies and trusted User Agents ๐ซถ.
Use of P-DCS-LAES and P-DCS-Redirect is controlled by a mix of legislation, regulation, and court orders, and those MUST be followed โ๏ธ. In some cases these headers are mandated, so they MUST be present in the requests and responses indicated. In other cases they're forbidden, so they MUST NOT be present in the requests and responses indicated. In the sub-sections that follow, "SHOULD" is used to cover these conflicting situations. For example, a P-DCS-LAES header SHOULD be included in an initial INVITE means either that it MUST be included or that it MUST NOT be included, depending on the applicable court orders ๐.
8.1. Syntax ๐
The formats of the P-DCS-LAES and P-DCS-Redirect headers are given by the following ABNF (some terms used in this ABNF are defined in [2] and [3]) ๐ง:
P-DCS-LAES = "P-DCS-LAES" HCOLON Laes-sig
*(SEMI Laes-param)
Laes-sig = hostport
Laes-param = Laes-content / Laes-key / generic-param
Laes-content = "content" EQUAL hostport
Laes-key = "key" EQUAL token
P-DCS-Redirect = "P-DCS-Redirect" HCOLON Called-ID
*(redir-params)
Called-ID = LDQUOT addr-spec RDQUOT
redir-params = redir-uri-param / redir-count-param /
generic-param
redir-uri-param = "redirector-uri" EQUAL Redirector
Redirector = LDQUOT addr-spec RDQUOT
redir-count-param = "count" EQUAL Redir-count
Redir-count = 1*DIGIT
This document adds the following entry to Table 2 of [2] ๐:
Header field where proxy ACK BYE CAN INV OPT REG
------------ ----- ----- --- --- --- --- --- ---
P-DCS-LAES adr - - - o - -
P-DCS-Redirect adr - - - o - -
SUB NOT REF INF UPD PRA
--- --- --- --- --- ---
- - - - - -
- - - - - -
The values of Laes-sig and Laes-content are addresses of the Electronic Surveillance Delivery Function. They're used as the destination address for call-identifying info and call content, respectively ๐ฏ. Laes-key is a string the proxy generates, which the Delivery Function uses to securely transfer info between them [8] ๐.
The P-DCS-Redirect header holds redirection info ๐. The redir-uri-param shows the original destination the user asked for (like the dialed number), the Redirector shows the new destination, and the Redir-count shows how many redirections have happened so far ๐ข.
8.2. Procedures at an Untrusted User Agent Client (UAC) ๐ โโ๏ธ
This header MUST NOT be sent to an untrusted UAC, and it MUST NOT be sent by an untrusted UAC either ๐.
8.3. Procedures at a Trusted User Agent Client (UAC) ๐
okay so the trusted UAC is the one that checks whether the originating subscriber has an outstanding lawfully authorized surveillance order ๐. If there is one, it puts that info into the Authorization for Quality of Service [7] or signals it to the device doing the intercept (like a Media Gateway) ๐ง
If the first reliable 1xx (except 100), 2xx, or 3xx response has a P-DCS-LAES header in it, that means surveillance is needed on the terminating subscriber, but the terminating equipment can't do it itself ๐ญ. In that case the UAC MUST include this info in the Authorization for Quality of Service, or MUST signal it to the device performing the intercept (e.g., a Media Gateway) ๐ซถ
Now the redirect situation ๐ฆ. If a 3xx-Redirect response comes back to the initial INVITE request, and that 3xx response has a P-DCS-LAES header, the UAC SHOULD keep that header exactly as it is when it reissues the INVITE. The UAC SHOULD also add a P-DCS-Redirect header with the original dialed number, the new destination number, and how many redirections have happened so far ๐ง Now, it's technically possible for the originating equipment to do this surveillance (or add to its existing surveillance of the call), but the surveillance system is designed so the terminating equipment handles all the intermediate forwardings ๐
Next, a UAC that puts a Refer-to header in a REFER request should SHOULD include a P-DCS-LAES header attached to the Refer-to, but only when the originating subscriber has an outstanding lawfully authorized surveillance order ๐ธ That header SHOULD include the address and port of the local Electronic Surveillance Delivery Function for a copy of the call's event messages. It SHOULD also include the address and port of that same kind of Delivery Function for a copy of the call content, if the call content is being intercepted. And it SHOULD include a random string to use as a security key between the Delivery Functions ๐
Last but DEFINITELY not least ๐ซ: the trusted UAC MUST NOT send the P-DCS-LAES and P-DCS-Redirect headers to an untrusted entity ๐
8.4. Procedures at an Untrusted User Agent Server (UAS) ๐
this one is short and sweet ๐ This header MUST NOT be sent to an untrusted UAS, and MUST NOT be sent by an untrusted UAS ๐
8.5. Procedures at a Trusted User Agent Server (UAS) ๐ง
the trusted UAS checks for an outstanding lawfully authorized surveillance order for the terminating subscriber. It also checks whether the P-DCS-LAES header is in the INVITE request. If either of those is there, the UAS puts this info into the authorization for Quality of Service [7] โจ
If the terminating equipment can't perform the required surveillance (say the destination is a voicemail server ๐ผ), the UAS SHOULD include a P-DCS-LAES header in the first reliable non-100 response. That header asks the originating proxy to do the surveillance ๐ It SHOULD include the address and port of the local Electronic Surveillance Delivery Function for a copy of the call's event messages. It SHOULD include the address and port of that same kind of Delivery Function for a copy of call content, if call content is to be intercepted. And it SHOULD include a random string for use as a security key between the Delivery Functions ๐๏ธ
If the response to the initial INVITE request is a 3xx-Redirect response, and there's an outstanding lawfully authorized surveillance order for the terminating subscriber, the UAS SHOULD include a P-DCS-LAES header in the 3xx-Redirect response. Its contents are the same as described above ๐
The trusted UAS MUST NOT send the P-DCS-LAES and P-DCS-Redirect headers to an untrusted entity โ ๏ธ
8.6. Procedures at Proxy ๐งโโ๏ธ
there are two sets of proxy procedures here ๐ (1) the procedures at an originating proxy, and (2) the procedures at a terminating proxy. The originating proxy is the proxy that got the INVITE request from a non-trusted endpoint. The terminating proxy is the proxy that sends the INVITE request to a non-trusted endpoint ๐ฆ
For mid-call changes, like call transfers ๐, the proxy that gets the request from a non-trusted endpoint counts as the initiating proxy. The proxy that sends the request to a non-trusted endpoint counts as the recipient proxy. The initiating proxy's procedures are included with the originating proxy ones, and the recipient proxy's procedures are included with the terminating proxy ones ๐
A proxy that BOTH receives the INVITE request from an untrusted endpoint AND sends the INVITE request to a non-trusted endpoint MUST NOT generate P-DCS-LAES nor P-DCS-Redirect headers ๐ซ
A proxy that's neither an originating proxy nor a terminating proxy SHOULD pass the P-DCS-Laes and P-DCS-Redirect headers along in requests and responses ๐ซถ
8.6.1. Procedures at Originating Proxy ๐
The Originating Proxy MUST remove any P-DCS-LAES and P-DCS-Redirect headers in requests or responses to or from an untrusted proxy or untrusted UA ๐งน
The originating proxy checks for an outstanding lawfully authorized surveillance order for the originating subscriber. If there is one, it puts this info into the Authorization for Quality of Service [7] or signals it to the device doing the intercept (like a Media Gateway) ๐ง
If the first reliable 1xx (except 100), 2xx, or 3xx response has a P-DCS-LAES header, that means surveillance is needed on the terminating subscriber, but the terminating equipment can't do it ๐ฉ In that case the originating proxy MUST include this info in the Authorization for Quality of Service, or MUST signal it to the device performing the intercept (e.g., a Media Gateway) โจ
If the Request-URI in an initial INVITE request has a private-URL, the originating proxy MUST decrypt the userinfo to find the real destination for the call, plus any other special processing info ๐ If the decrypted userinfo has electronic surveillance info in it, the originating proxy SHOULD generate a P-DCS-LAES header with that surveillance info ๐ต๏ธโโ๏ธ
If a 3xx-Redirect response comes back to the initial INVITE request before an 18x, and that 3xx response has a P-DCS-LAES header, the originating proxy SHOULD keep that header unchanged when it reissues the INVITE. It SHOULD also add a P-DCS-Redirect header with the original dialed number, the new destination number, and how many redirections have happened ๐
If a 3xx-Redirect response comes back to the initial INVITE request after an 18x, the originating proxy generates a private-URL and puts it in the Contact header of a 3xx-Redirect response sent to the originating endpoint ๐ If a P-DCS-LAES header is in the 3xx response, this private-URL MUST contain (1) the electronic surveillance info from the 3xx-Redirect response, (2) the original destination number, (3) the identity of the redirecting party, and (4) the number of redirections for this call ๐งฉ
An originating proxy that handles a REFER request [4] from an untrusted UA becomes a B2BUA for that request, but only when the originating subscriber has an outstanding lawfully authorized surveillance order ๐ฆ It SHOULD reissue the request with a P-DCS-LAES header added to the Refer-to's URL. That header SHOULD include (1) the address and port of the local Electronic Surveillance Delivery Function for a copy of the call's event messages, (2) the address and port of that same kind of Delivery Function for a copy of call content if call content is to be intercepted, and (3) a random string to use as a security key between the Delivery Functions ๐๏ธ
An initiating proxy that sends a mid-call REFER request with a Refer-to header, when the initiating subscriber has an outstanding lawfully authorized surveillance order, SHOULD include a P-DCS-LAES header in the Refer-to's URL ๐ธ
The originating proxy MUST NOT send the P-DCS-LAES and P-DCS-Redirect headers to an untrusted entity ๐
8.6.2. Procedures at Terminating Proxy ๐
The Terminating Proxy MUST remove any P-DCS-LAES and P-DCS-Redirect headers in requests or responses to or from an untrusted proxy or UA ๐งน
The terminating proxy checks for an outstanding lawfully authorized surveillance order for the terminating subscriber. If there is one, the terminating proxy puts this info into the authorization for Quality of Service [7] โจ
The terminating proxy MUST NOT send the P-DCS-LAES and P-DCS-Redirect headers to an untrusted entity. That goes for headers in the request or response, and for headers attached to URIs in the request or response ๐
โโ๏ธ
If the terminating equipment can't do the required surveillance (say the destination is a voicemail server ๐ผ), the terminating proxy SHOULD include a P-DCS-LAES header in the first reliable 1xx/2xx/3xx (except 100) response. That asks the originating proxy to do the surveillance ๐ The header SHOULD include the address and port of the local Electronic Surveillance Delivery Function for a copy of the call's event messages. It SHOULD include the address and port of that same kind of Delivery Function for a copy of call content, if call content is to be intercepted. And it SHOULD include a random string to use as a security key between the Delivery Functions ๐
If the response to the initial INVITE request is a 3xx-Redirect response, and there's an outstanding lawfully authorized surveillance order for the terminating subscriber, the terminating proxy SHOULD include a P-DCS-LAES header in the 3xx-Redirect response. Its contents are the same as described above ๐
A proxy that gets a mid-call REFER request [4] with a Refer-to header that has a P-DCS-LAES header attached becomes a B2BUA for this request ๐ฆ It MUST generate a private-URL and put it in the Refer-to header sent to the endpoint. This private-URL MUST contain the P-DCS-LAES info from the attached header ๐
9. Security Considerations ๐โ ๏ธ
okay this one is SERIOUS bestie, no jokes ๐ญ QoS gate coordination, billing information, and electronic surveillance information are all sensitive. They MUST be protected from eavesdropping, and they furthermore require integrity checking ๐ก๏ธ So the trusted UAs and proxies NEED to take precautions to protect this info from eavesdropping and tampering. Use of IPsec or TLS between Proxies is REQUIRED ๐ A minimum mandatory-to-implement IPsec configuration for the DCS architecture is given by [8] ๐ Also REQUIRED is mutual authentication (1) between Proxies and (2) between trusted UAs and Proxies. Either of these MAY be implemented with administratively pre-shared keys, or through consultation with another trusted third party ๐ค If IPsec is going to be used, the specification of the security policies and procedures of the administrative domain where these headers apply (and all connections between administrative domains in the federation) MUST define an interoperable set of options ๐ธ
10. IANA Considerations โจ
okay so this doc adds a bunch of new SIP extension headers ๐ and they get added to the registry of SIP headers from [2]. here's the registration info for each one ๐
Header Field Name: P-DCS-Trace-Party-ID
RFC Number: 3603
Compact Form: none
Header Field Name: P-DCS-OSPS
RFC Number: 3603
Compact Form: none
Header Field Name: P-DCS-Billing-Info
RFC Number: 3603
Compact Form: none
Header Field Name: P-DCS-LAES
RFC Number: 3603
Compact Form: none
Header Field Name: P-DCS-Redirect
RFC Number: 3603
Compact Form: none
11. Intellectual Property Rights Notice ๐ฆ
the IETF has heard that some intellectual property rights are claimed over some or all of the spec in this document ๐ if you want the details, go check the online list of claimed rights.
12. References
12.1. Normative References
- [1] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997. ๐
- [2] Rosenberg, J., Schulzrinne, H., Camarillo, G., Johnston, A., Peterson, J., Sparks, R., Handley, M. and E. Schooler, "SIP: Session Initiation Protocol", RFC 3261, June 2002. ๐
- [3] Crocker, D., Ed. and P. Overell, "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997. ๐งฉ
- [4] Sparks, R., "The Session Initiation Protocol (SIP) Refer Method", RFC 3515, April 2003. โช๏ธ
- [5] IAB and IESG, "IETF Policy on Wiretapping", RFC 2804, May 2000. ๐ต๏ธโโ๏ธ
12.2. Informative References
- [6] DCS Group, "Architectural Considerations for Providing Carrier Class Telephony Services Utilizing SIP-based Distributed Call Control Mechanisms", Work in Progress. ๐ง
- [7] PacketCable Dynamic Quality of Service Specification, pkt-sp-dqos-i07-030815, August 2003. ๐ฆ
- [8] PacketCable Security Specification, pkt-sp-sec-i09-030728, July 2003. ๐
- [9] PacketCable Event Message Specification, pkt-sp-em-i07-030815, August 2003. ๐๏ธ
- [10] Jennings, C., Peterson, J. and M. Watson, "Private Extensions to the Session Initiation Protocol (SIP) for Asserted Identity within Trusted Networks", RFC 3325, November 2002. ๐ชช
13. Acknowledgements ๐ซถ
the Distributed Call Signaling work in the PacketCable project was done by a huge crew from loads of different companies, and the authors wanted to thank these people for helping out: John Wheeler, Motorola; David Boardman, Daniel Paul, Arris Interactive; Bill Blum, Jon Fellows, Jay Strater, Jeff Ollis, Clive Holborow, Motorola; Doug Newlin, Guido Schuster, Ikhlaq Sidhu, 3Com; Jiri Matousek, Bay Networks; Farzi Khazai, Nortel; John Chapman, Bill Guckel, Michael Ramalho, Cisco; Chuck Kalmanek, Doug Nortz, John Lawser, James Cheng, Tung- Hai Hsiao, Partho Mishra, AT&T; Telcordia Technologies; and Lucent Cable Communications. ๐
earlier versions also credited a bunch of people as co-authors for writing the text of this document ๐ธ they are:
Bill Marshall (wtm@research.att.com) and K. K. Ramakrishnan (kkrama@research.att.com), AT&T; Ed Miller (edward.miller@terayon.com), Terayon; Glenn Russell (G.Russell@Cablelabs.com), CableLabs; Burcak Beser (burcak@juniper.net) Juniper Networks, Mike Mannette (Michael_Mannette@3com.com) and Kurt Steinbrenner (Kurt_Steinbrenner@3com.com), 3Com; Dave Oran (oran@cisco.com) and Flemming Andreasen (fandreas@cisco.com), Cisco Systems; John Pickens (jpickens@com21.com), Com21; Poornima Lalwaney (poornima.lalwaney@nokia.com), Nokia; Jon Fellows (jfellows@coppermountain.com), Copper Mountain Networks; Doc Evans (n7dr@arrisi.com) Arris, and Keith Kelly (keith@netspeak.com), NetSpeak.
14. Editors' Addresses ๐ฎ
Bill Marshall
AT&T
Florham Park, NJ 07932
EMail: wtm@research.att.com
Flemming Andreasen
Cisco
Edison, NJ
EMail: fandreas@cisco.com
15. Full Copyright Statement ๐
Copyright (C) The Internet Society (2003). All Rights Reserved.
you're allowed to copy and share this document, and to make derivative works that comment on it, explain it, or help people implement it, and publish and distribute those in whole or in part with no real restrictions, as long as the copyright notice and this paragraph stay on every copy and derivative work ๐ the document itself can't be modified in any way, like removing the copyright notice or the references to the Internet Society or other Internet organizations. the one exceptions are for developing Internet standards, where the copyright procedures in the Internet Standards process have to be followed, or translating it into languages other than English ๐
these permissions are perpetual and the Internet Society or its successors or assigns will never revoke them ๐
this document and the info in it is provided "AS IS", and THE INTERNET SOCIETY AND THE INTERNET ENGINEERING TASK FORCE DISCLAIMS 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. ๐
Acknowledgement
funding for the RFC Editor function is currently provided by the Internet Society ๐
๐ฆ where this page comes from
- ietf: rfc3603 2003-10
- ๐ girlified by claude-haiku-5-5 on : a language model's rewrite of the original, under its terms