Internet Engineering Task Force IPTEL WG Internet Draft Matt Squire draft-ietf-iptel-glp-00.txt Nortel Networks February 16, 1999 Expires: August 1999 A Gateway Location Protocol STATUS OF THIS MEMO This document is an Internet-Draft and is in full conformance with all provisions of Section 10 of RFC2026. Internet-Drafts are working documents of the Internet Engineering Task Force (IETF), its areas, and its working groups. Note that other groups may also distribute working documents as Internet- Drafts. Internet-Drafts are draft documents valid for a maximum of six months and may be updated, replaced, or obsoleted by other documents at any time. It is inappropriate to use Internet- Drafts as reference material or to cite them other than as work in progress. The list of current Internet-Drafts can be accessed at http://www.ietf.org/ietf/1id-abstracts.txt The list of Internet-Draft Shadow Directories can be accessed at http://www.ietf.org/shadow.html. 1 Abstract Given a gateway and a (possibly empty) list of gateway attributes, the "gateway location problem" is to find a gateway serving the given phone number that satisfies the attribute set. This problem has also been referred to as the "call routing problem" as the answer returned may not be an IP-PSTN gateway but an intermediate signaling server. Part of the solution to this problem is the maintenance and distribution of the call routing tables. This document describes a protocol for maintaining a distributed call routing database across multiple administrative domains. The protocol uses the Server Cache Synchronization Protocol (SCSP) to maintain the distributed database. This document describes the problem of gateway location and a potential solution that uses SCSP as the foundation for distributing the call routing tables. 2 Overview of the Gateway Location Problem Squire [Page 1] Internet Draft GLP 16 February 1999 A gateway is a device providing connectivity between the PSTN and an IP network. A telephone call that originates from an IP device, or that passes through an IP network, and that terminates on the PSTN, must traverse a gateway. There may be multiple gateways in the network through which a particular call could egress the network. An important step in the evolution of IP telephony is automating the choice of an egress gateway for a particular call. The general gateway location problem is described in the Gateway Location Framework [GLP-FR], and the position of the Gateway Location Protocol (GLP) relative to other IP telephony protocols and entities is defined. This framework is summarized here, but the reader is referred to [GLP-FR] for a fuller description. In the framework, End Users (EUs) are entities with IP connectivity and with the ability to place phone calls to users on the PSTN. EUs may be users with IP telephony equipment or may be gateways from the PSTN to an IP network. Gateways are the devices that translate between an IP network and the PSTN. Location Servers (LSs) are the logical entities that maintain knowledge of the gateways, and Signaling Servers (SSs) are the entities which forward and process signaling messages. Common signaling protocols are SIP [SIP] and H.323 [H323]. Signaling servers forward (route) signaling messages while location servers maintain the information on which these forwarding decisions are made. GLP is defined as an inter-domain protocol, where an IP Telephony Administrative Domain (ITAD) is a collection of IP telephony resources under the control of a single administrative authority. LSs participate in the GLP to maintain this database of gateways across multiple ITADs. Another protocol, the intra-domain protocol, may be used by LSs within a domain to further distribute this information. The use of possibly different inter-domain and an intra-domain protocols is analogous to the use of the Border Gateway Protocol (BGP) [BGP] and the Open Shortest Path First (OSPF) [OSPF] protocol to maintain routing tables between and within autonomous systems (IP routing domains). Note that just as BGP can be used within an autonomous system, GLP can be use within an ITAD. Using GLP within an ITAD provides reliability and scaleability for inter- domain communications by permitting multiple border routers. LSs learn about the gateways within their domain through an out-of- band mechanism. Another protocol, the front-end protocol, is used by EUs to access the LS database in order to route a call toward the PSTN. The GLP places no restrictions on the front-end or intra- domain protocols. Squire [Page 2] Internet Draft GLP 16 February 1999 3 Comparison of Call Routing and IP Routing To better understand the problem of call routing, we first compare it with the well-understood problem of IP routing. IP routing tables are made up of a collection of routing table entries. For basic IP routing, each entry consists of a destination address, an address mask, a next-hop router, and a path-length. All packets targeted to a destination covered by the combination of the destination address and address mask are forwarded to the next-hop router. The cost to reach the destination is given by path-length. Whenever there are multiple entries that cover a single destination, the more specific entry (with the longer address mask) is used to route the packet. There are mechanisms defined for aggregating and forwarding routing information. For example, when advertising a route entry received from one neighbor to another neighbor, the router may increment the path-length before transmitting the advertisement. Also, when a router receives multiple routes to a particular destination, it may discard entries with a longer path- length as these represent non-optimal routes. Call routing is similar but has several important distinctions. The call routing infrastructure is overlayed on the IP infrastructure, but the two routing realms are independent. Location Servers, which maintain the call routing tables, and Signaling Servers, which forward the signaling messages, are distinct logical entities (however, a single device may perform both functions). The IP telephony data (the packetized voice) is not routed using the LS/SS combination. It is forwarded as normal IP packets and need not be routed through any signaling server. Peer LSs need not be physically adjacent. Call routing tables are made up of a collection of call routing objects. A call routing object is a more complex version of an IP routing table entry. Like an IP routing table entry, a call routing object includes a set of destination addresses and a next hop. In this case, the set of destination addresses is given by upper and lower bound telephone numbers, and the next-hop is the next-hop signaling server (which may in fact be a gateway). In IP routing, the cost represents a path cost (ie a relative measurement of the distance/delay between two points). In call routing, the cost of a route is an optional attribute of a call routing object, and the cost of a route is dependent on may variables other than the path (the cost charged by a gateway to service a call, the quality of the service given by the network and gateway, etc). A call routing object may also include any number of additional Squire [Page 3] Internet Draft GLP 16 February 1999 attributes. These might include the signaling protocols supported by the next-hop SS for this destination, the telephony features provided for this destination, the speech codecs understood for this destination, the encryption algorithms supported for this destination, etc. The set of attributes is open-ended and destination specific. As such, defining a standard set of rules for aggregating and forwarding call-routing objects is itself a difficult problem. In IP routing, given any destination address, there is a simple rule for determining the routing table entry that should be applied. Namely, find the routing table entry with the longest matching prefix. Such a rule does not exist in the context of call routing. Prefix length is not the most significant variable in determining the best suited routing object. Call routing objects are multi- attributed, as such there can certainly be more than one entry that applies to a particular destination. For example, a particular phone number may be reachable via a SIP server at one destination or via a H.323 server at another destination. Multiple matching entries could be used by a server to load-balance between several possible destinations. One can also examine the scaleability of call routing versus IP routing. For the Internet, all routers must be interconnected. Each routing table must contain an applicable entry for every Internet address. The collection of SSs on the Internet need not be (and most likely will never be) connected. A likely scenario is that a set of IP telephony providers will combine resources to form a confederation whose signaling servers and location servers communicate. Different confederations will most likely not share call routing data, implying a collection of independent call routing confederations. So although a call routing table may contain an entry covering every phone number on the PSTN, any particular LS/SS only propagates information about/to gateways within its confederation. 4 GLP Model GLP is analogous to BGP in that it is used to distribute (call) routing information between domains. As such, BGP is used as the model for GLP. At its core, BGP is a combination of link-state and distance-vector routing protocols whose aggregation and filtering rules are partially specified by the protocol itself and partially specified by a set of local policies for that BGP speaker. BGP speakers may have internal and external links to BGP speakers in its or other domains. A BGP Squire [Page 4] Internet Draft GLP 16 February 1999 link is a communication between two peer BGP speakers. Behavior over internal and external links is slightly different. Within a domain, all BGP speakers use a combination of a mesh or route reflectors to achieve complete connectivity. BGP speakers maintain an inbound and outbound routing table for each link, as well as a local routing table used in their own routing decisions. When a link is first established, BGP synchronizes each speaker's outbound routing table with its peer's inbound routing table. After this synchronization, only updates traverse across the link. The Server Cache Synchronization Protocol (SCSP), on the other hand, is a generalization of OSPF in that it accomplishes database synchronization on multiple servers by flooding information received from one neighbor to all other neighbors. However, if an SCSP flooding domain is restricted to a pair of neighbors, then SCSP behaves much like BGP. Both protocols exchange hello messages between peers, perform an entire transfer of the database upon detecting a new peer, and only exchange incremental updates after the initial synchronization. GLP applies SCSP to the inter-domain problem of gateway location by limiting the inter-domain flooding group to a pair of peer speakers from adjacent ITADs. In other words, the flooding aspects of SCSP are not used on inter-ITAD links. To this end, a Location Server belongs to a number of Server Groups (SGs). Each SG corresponds to a collection of servers whose databases are to be synchronized. When a SG spans domains, it likely consists of only two LSs and provides bidirectional connectivity between the LSs. This is analogous to two peer BGP speakers over an external BGP link. For internal links, however, the possibilities are more flexible. Within a domain, a Server Group may consist of multiple LSs interconnected with an arbitrary topology. This provides a much more flexible and robust intra-domain connectivity than BGP meshes and route reflectors. The set of SGs to which a particular LS belongs, the set of servers forming a Server Group, and the topology of interconnection within a SG are all determined administratively. Since GLP is defined as an inter-domain protocol, no neighbor discovery is provided. SCSP is used to maintain a distributed and synchronized database over all servers in a Server Group. This database consists of the information required to route calls across the network. As in BGP, the database can be logically partitioned into inbound and outbound databases. The LS has an internal Policy Information Base (LS-PIB) that defines how to compute the outbound databases given the set of inbound databases. The LS also has a local database that it uses to make call forwarding decisions. The contents of the local database is also determined by applying the LS-PIB policy to the inbound Squire [Page 5] Internet Draft GLP 16 February 1999 databases. The GLP model is depicted in Figure 1, where LSs LS-A1 through LS-A3 are in one administrative domain, and LSs LS-B1 through LS-B2 are in another ITAD. In this example, the SGs are {LS-A1, LS-A2, LS-A3}, {LS-A3, LS-B1}, and {LS-B1, LS-B2}. Note that the topology in administrative domain A is not complete. SCSP provides synchronization across arbitrary connected topologies. |---------------------- | LS-A1 | | gw-local | | | | | LS-PIB | | | | | | | |---------------------| | gw-in gw-out | | LS-A3 | |---------------------| | gw-local | | | | | / | | | / ----------------| gw-in -- LS-PIB | / | gw-out | | |---------------------- | | | | gw-in gw-out | | gw-out gw-in | | | | |---------------------| | | | | | LS-PIB | | | | | | | | LS-A2 | |-----------------------| | gw-local | | gw-in gw-out | |---------------------| | | | | LS-PIB -- gw-local | | | | | gw-in gw-out LS-B1 | |-----------------------| | |-----------------------| | gw-in gw-out | | | | | LS-PIB -- gw-local | | | | LS-B2 | |-----------------------| Figure 1 GLP Model Squire [Page 6] Internet Draft GLP 16 February 1999 The form and function of the LS policies is not defined in this document. We believe that the most appropriate policies will be developed over time and through implementation innovation and experience. The multi-attributed nature of a gateway makes it difficult to define a satisfactory set of policies for aggregating and filtering the collection of gateways forwarded to each neighbor. 5 SCSP The Server Cache Synchronization Protocol (SCSP) [SCSP] solves the general problem of server synchronization and cache replication. SCSP synchronizes the caches of a set of servers of a particular protocol bound to a particular server group. In the case of GLP, SCSP is used to synchronize the call routing database of all servers within a SG. The SG may consist of two servers (for example, an inter-ITAD SG may consist of one LS from each of two domains) or may be more general (for example, when used between the border LSs within a particular ITAD). SCSP uses the combination of a Protocol ID (PID) and a Server Group ID (SGID) to identify both the protocol for which the servers are being synchronized as well as the instance of that protocol. In our case, the PID identifies the protocol as GLP. Editor's Note. We need to get an SCSP PID for GLP. SCSP assumes a the underlying network is a Non-Broadcast Multiple Access (NBMA) network. For GLP, the NMBA network is any IP network providing TCP connectivity. GLP could also operate directly over other NBMA networks (such as ATM AAL5, Frame Relay, etc), but the specifics of such behavior is not detailed here. 5.1 SCSP Operation SCSP has three phases. The first phase serves to establish connectivity between directly connected neighbors. This phase is known as the Hello Phase. The second phase is the Cache Alignment phase, where directly connected servers quickly exchange the contents of their entire database. The third phase is the Cache State Update phase, where servers only transmit updates of their local database to their directly connected peers, and servers flood received database elements to other directly connected peers within the same SG. Note that this flooding operation permits a more general intra-domain topology than BGP which requires a combination of meshes and route reflectors. Squire [Page 7] Internet Draft GLP 16 February 1999 5.1.2 Hello Phase In the Hello Phase, directly connected LSs exchange hello messages in order to establish bidirectional connectivity between peers. After connectivity is established, hello messages continue to be exchanged in order to indicate the status of the peer. Hello messages have two fields which control the frequency of the hello messages and the time before a neighbor is declared inoperable. Hello messages are sent every HelloInterval seconds. A peer is considered dead if no hello message has been received for HelloInterval*DeadFactor seconds. For GLP, hello messages must not be transmitted more than once per second. The suggested value for the HelloInterval is 30 seconds. The suggested value of DeadFactor is 3. Editor's Note. One shortcoming of SCSP is that the Hello Protocol is not particularly extendible. There is nothing like version or feature negotiation during the Hello Phase. Is version/feature negotiation required for GLP? 5.1.2 Cache Alignment Phase During the Cache Alignment phase, peer servers synchronize the contents of their entire database. During Cache Alignment, peer servers first exchange a summary of their database. After the summary exchange, a server requests data elements from their peers based on that summary information. Cache Alignment ends when peer servers have synchronized their databases for the first time. After first aligning its GLP database with a peer, an LS shall execute its local policies to determine if any of its advertised databases, or its local database, have changed. Any resulting changes to an advertised route must be synchronized with the affected neighbor(s). 5.1.3 Cache State Update Phase During the Cache Update phase, adjacent LSs exchange only changed or updated data elements. When something happens at an LS to change the set of advertised call routing elements to a peer, an LS must propagate this change to its neighbor. The neighbor acknowledges the newly received elements. When an LS is informed of an updated or new call routing data Squire [Page 8] Internet Draft GLP 16 February 1999 element, it must execute its local policies to determine if the set of local or advertised call routes has been changed. If so, then these changes must be propagated to the affected neighbor(s). 5.2 GLP Specific SCSP Fields SCSP has generic and protocol specific aspects. This section details the GLP specific fields and formats for use within SCSP. GLP runs over a NBMA network of TCP connections. During initialization, servers establish TCP connections to their configured set of peers. By default, SCSP over TCP uses TCP port XXXX. This port value should be configurable at an LS. It is a straightforward exercise to run GLP over other types of NBMA networks, or to extend SCSP/GLP over a network with multicast ability. However, due to the inter-domain aspects of GLP, multicast is not recommended. Editor's Note. We need to get a SCSP TCP port assigned. Editor's Note. It is not obvious that TCP is the only or the right choice for the transport layer. RUTS? An encrypted transport? Other possibilities? The scope of a SCSP flooding domain is controlled by the combination of Server Group ID (SGID) and Protocol ID (PID). For GLP, the PID is XXXX. The assignment of the SGID for a specific set of servers is a local decision. Editor's Note. We need to get a SCSP GLP PID assigned. Servers within a SG of SCSP must have unique server identifiers. These identifiers are used to indicate the source and recipient of each SCSP message, as well as the originator of a data element within the distributed database. For GLP, this identifier is an IP address unique to the LS. The identifier is 4 octets in length. Each data element within a SCSP database can be identified by the combination of the Originator ID (the server which sourced the data element) and the Cache Key. The Cache Key is an identifier for the data element chosen such that the combination of Originator ID and Cache Key uniquely identifies this element. Servers use this identification method when determining if a received data element is a 'new' object or another version of an existing object. The Cache Key is variable length in SCSP. For GLP, the length of the Cache Key is 4. The Cache Key is a 4-octet field chosen by the originator of a data element such that the uniqueness condition is guaranteed. Squire [Page 9] Internet Draft GLP 16 February 1999 SCSP also defines a 'newness' criteria for database elements. When a server receives a data element from a peer, and that new element matches an existing element in both the Originator ID and Cache Key, then the server examines the Sequence Number of the element to determine which version of the element is newer. Sequence Numbers can be used to refresh aging database elements. The format of the data elements synchronized by SCSP for GLP is given in Section 5.2.1. 5.2.1 Generic GLP Data Object Format SCSP synchronizes individual database elements to all servers within a Server Group. In SCSP, a database element is represented as a Cache State Advertisement (CSA). Each CSA contains a CSA header followed by a protocol specific part containing the actual data. The protocol specific part of a GLP CSA has the following generic format. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Obj Type | Reserved | GLP Object Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Object Data (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ The fields are defined as follows. GLP Obj Type. This field defines the type of GLP object. This specification defines the following GLP Object Types. 1 - GLPv1.0 Call Routing Object GLP Object Length. The Length of the GLP Object, from the start of the GLP Object Type field to the end of the CSA data. For alignment purposes, all GLP objects should be padded to have even length. CSA Data. The data specific to this instance of the object. The format of the data depends on the object type. 5.2.2 GLP Call Routing Object Format Squire [Page 10] Internet Draft GLP 16 February 1999 The GLP Call Routing Object (CRO) forms the basis for internet call routing. The GLP CRO associates a range of telephone numbers with an IP address. A CRO can be used to route signaling messages to phone numbers that lie within the range specified by the lower and upper bound telephone numbers. When forwarding a signaling message for a phone number in the specified range, a signaling server or user agent may forward the signaling message to the Next Hop Signaling Server specified in the CRO. The Next Hop Signaling Server may represent an actual gateway or a transit signaling server. Whether the CRO represents an actual gateway or a transit SS cannot be determined from the CRO. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Obj Type | Reserved | GLP Object Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Phone# LB Len | Phone# UB Len | Num GLP Attributes | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Lifetime | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Hop Signaling Server | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Phone# Lower Bound (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Phone# Upper Bound (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attributes (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Object Type. Equals 1. GLP Object Length. A CRO object has variable length but the length must be even. Phone Number Lower Bound Length. The length of the Lower Bound Phone Number field. Phone Number Upper Bound Length. The length of the Upper Bound Phone Number field. Number of GLP Attributes. The number of GLP attributes in this CRO. Lifetime. The number of seconds that this call-routing object is valid. CROs Squire [Page 11] Internet Draft GLP 16 February 1999 must be aged in the database and removed when their lifetime expires. Similarly, an originator must refresh CROs before they expire in a peer. A CRO can be refreshed by incrementing the Sequence Number of a CRO and synchronizing the updated CRO CSA with the peer. Next Hop Signaling Server. The IP address of the next hop signaling server that is associated with this call routing object. When using this call routing object to route a call, signaling messages are sent to this address. Editor's Note. Should probably have a more general concept of a protocol address (ie have a protocol type and a protocol address). This would permit the same protocol to be used for routing calls over other networks (IPv6). Phone Number Lower Bound. The lower bound of the telephone number range defined by this CRO. The sytax of this field is: phone-number-bound = +1*phone-digit phone-digit = DIGIT This format is similar to the format for a global telephone number as defined in SIP [4] without visual separators. This format facilitates efficient comparison with the internationalized format of a phone number. Editor's Note. This representation does not permot 'local' phone number formats. Local formats seem dangerous when one the concept of local can be different for the client and server. Phone Number Upper Bound. The upper bound of the telephone number range defined by this CRO. The lower and upper bounds may refer to phone numbers in different country codes and have different lengths. A phone number is covered by a particular CRO if lb <= p <= ub where p is the international version of the phone number and the comparison is performed using a string comparison function. For example, +1919 <= +19199929048 <= +1919993 Editor's Note. We could also make the phone numbers and next hop server into attributes (ie have the type, length, value format). Preferences anyone? GLP Attributes. The collection of attributes associated with this call routing object. For alignment purposes, this field starts on the first even-octet boundary after the previous field. Squire [Page 12] Internet Draft GLP 16 February 1999 5.2.3 Generic GLP Attribute Format A CRO may contain any number of GLP Attributes. Attributes provide additional information about the call routing object. Each GLP Attribute has the following generic format. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Type | GLP Attribute Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Data (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Attribute Type. GLP Attributes provide additional information that can be used to restrict the call routing path applicable to a specific signaling sequence. The following attribute types are defined in this specification. 1 - Supported Signaling Protocols 2 - Pricing 3 - Gateway Provider 4 - Next Hop Provider 5 - Supported Codecs 6 - Capacity 7 - Time-to-live GLP Attribute Length. The length of this attribute from the start of the type field. The length must be even. GLP Attribute Data. The data specific to this attribute. The data format for each attribute is given in the following sections. 5.2.3.1 Supported Signaling Protocol Attribute The Supported Signaling Protocol Attribute gives a signaling protocol supported for the CRO address range by the CRO next hop. There can be multiple instances of this attribute in a CRO CSA when a next hop can be contacted for the same phone numbers using multiple signaling protocols. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 Squire [Page 13] Internet Draft GLP 16 February 1999 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Type=1 | GLP Attribute Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TCP/UDP Port | IP Protocol | SigProtoIdLen | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Signaling Protocol Identifier (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Additional Signaling Protocol Parameters (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Attribute Type. Equals 1. GLP Attribute Length. Variable, even length. TCP/UDP Port. The TCP/UDP port that should be used to contact the next-hop when using the specified signaling protocol. IP Protocol. Indicates whether TCP (0x06) or UDP (x11) should be used to contact the next hop when using this signaling protocol. Signaling Protocol Identifier Length. The length of the Signaling Protocol Identifier field. Signaling Protocol Identifier. Identifies a signaling protocol that can be used to contact phone numbers in the CRO's phone number range using the specified next hop. The Signaling Protocol Identifier format is: sig-proto-id = "SIP" | "H323" Editor's Note. Is there a standard method of expressing signaling protocols like SIP or H.323 within a message? Couldn't find them registered with IANA. Additional Signaling Protocol Parameters. This field can be used to specify additional signaling parameters needed to establish a connection using this signaling protocol to the specified next hop. This attribute should contain only those signaling parameters required to establish a connection that cannot be expressed by any other GLP attribute. Many signaling parameters can be negotiated during the signaling process. It is recommended that negotiable signaling parameters are not included in this attribute. Limiting the number of signaling parameters improves scaleability of the protocol. The format of this field is dependent on the signaling protocol. Squire [Page 14] Internet Draft GLP 16 February 1999 Editor's Note. The goal of this last field is to allow the expression of any attributes that need to be given in order to allow the signaling to work. Since signaling protocols are evolving, we can't cover everything in attributes. This gives a back door to get needed information into the database. If this approach is acceptable, then we need to define the formats of this field for SIP & H.323. 5.2.3.2 Pricing Attribute The purpose of the Pricing Attribute is to provide information on how much a call to a phone number in the CRO's telephone range would cost a user. The pricing attribute is sub-typed to yield several methods of expressing the pricing details. The End Users must recognize the pricing attribute cannot be taken as a guarantee of a particular service for a particular price. Other factors may influence the actual amount a user is charged for a service. Pricing structures may have too many variables to guarantee the accuracy of this data to the end user. For example, the cost of a call through a gateway may depend upon the source of the call (ie are you a customer of ISP-X?). The cost may also depend upon the negotiated media capabilities. Such variables complicate the pricing structures. Other protocols (AAA, OTP, RSVP, etc) must perform the authentication, negotiation, accounting, etc. required to actually negotiate and authorize the final charge for the phone service. There can be at most one Pricing Attribute in a CRO. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Type=2 | GLP Attribute Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |L| Pricing Attribute Subtype | Pricing Attribute Data Len | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pricing Attr Originator Len | Reserved | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pricing Attribute Data (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pricing Attribute Originator (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Pricing Attribute Signature (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Attribute Type. Equals 2. Squire [Page 15] Internet Draft GLP 16 February 1999 GLP Attribute Length. Variable, even length. Pricing Attribute Subtype. The subtype may have either local significance or be a registered subtype with IANA. Local subtypes have the L-flag set, while IANA registered subtypes have the L-flag cleared. The purpose of the local subtypes is so that within a ITAD, or within a confederation of ITADs, a pricing structure can be expressed in method that can be automatically interpreted by a program (such as the LS policy decision process) to better automate the choice of next hop. The format of the data section differs for each subtype. The set of currently defined subtypes is: 1 - Text 2 - URL Editor's Note. Any other suggestions on how to do pricing? Pricing Attribute Data Length. The length of the Pricing Attribute Data Field. Must be even. Pricing Attribute Originator Length. The length of the Pricing Attribute Data Field. Must be even. Pricing Attribute Data. The formats for the Pricing Attribute Data are given in subsequent sections. Pricing Attribute Originator. The originator of the Pricing Attribute. A LS should not propagate a CRO if the originator of the pricing attribute is not trusted. Editor's Note. Any suggestions on how to handle representation of the originator? Company name? Web page? Contact information? Some ITAD numeric representation? Pricing Attribute Signature. A digital signature that can be used to authenticate the the validity of the pricing data. In the event of a false advertisement, the source of the false advertisement can be traced. The pricing attribute signature is calculated over the entire Pricing Attribute. The pricing attribute may be signed before being advertised by an LS. If an LS does not alter the Pricing attribute data, it must not alter the originator or the signature. If an LS does modify the Pricing attribute data, it must put itself as the originator and may sign the message as well. Squire [Page 16] Internet Draft GLP 16 February 1999 5.2.3.2.1 Text This Pricing Attribute subtype contains a textual description of a pricing strategy. The intent of this subtype is that this description can be displayed to an end user. The character set is ISO 10646 using UTF-8 encoding [UTF8]. Editor's Note. If we want this, do we need to worry about language concerns? I'd prefer to let language concerns be handled by the URL sub-type and let this sub-type be simple character representations. 5.2.3.2.2 URL This Princing Attribute sub-type contains a URL from which additional pricing data may be retrieved. The intent of this subtype is that the URL may contain data that can be displayed to the end user or used by some automated selection process. A pricing structure may be given in multiple languages using an HTTP URL and language negotiation as specified in HTTP [HTTP1.1]. URL formats are defined in [URL]. 5.2.3.3 Gateway Provider The Gateway Provider attribute specifies the owner/provider of an egress gateway to the PSTN indicated by this CRO. The provider of a gateway may be used when selecting how to route a particular call. There may be multiple Gateway Provider attributes in a CRO. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Type=3 | GLP Attribute Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Gateway Provider (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Attribute Type. Equals 3. GLP Attribute Length. Variable, even length. Gateway Provider. The Gateway Provider field specifies the owner/provider of the Squire [Page 17] Internet Draft GLP 16 February 1999 egress gateway for this CRO. Editor's Note. We are now presented with the question of how to represent an Internet telephony service provider. Two obvious possibilities are using a numeric representation along the lines of a BGP AS, or using a string representation along the lines of DNS. Could we use DNS names or do we need a new type of name? Maybe a URL? 5.2.3.4 Next Hop Provider The next hop provider attribute specifies the owner/provider of the next hop SS specified by this CRO. Like the Gateway Provider attribute, the Next Hop Provider may be used when deciding how to route a particular call. A single Next Hop Provider attribute must be in every CRO. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Type=4 | GLP Attribute Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Next Hop Provider | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Attribute Type. Equals 4. GLP Attribute Length. Variable, even length. Next Hop Provider. The Next Hop Provider field specifies the owner/provider of the provider of the next hop signaling server listed in the CRO. A single Next Hop Provider attribute must exist in every CRO. Editor's Note. Again have to worry how to represent providers. 5.2.3.5 Supported Codec This attribute is used to specify the codecs that are supported by an egress gateway that can be reached via the next hop in this CRO. There may be multiple Supported Codec attributes in a CRO. Squire [Page 18] Internet Draft GLP 16 February 1999 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Type=5 | GLP Attribute Length | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Supported Codec (variable) | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Attribute Type. Equals 5. GLP Attribute Length. Variable, even length. Supported Codec. Specifies an algorithm for the encoding and decoding of packetized voice. The set of registered codec names is maintained by IANA [RFC1890]. Non-registered codecs are indicated by preceding the name with "X-". The format for the Supported Codecs field is: supported-codec ; see [RFC1890] 5.2.3.6 Capacity Gateways may have varying capabilities with regard to the number of phone calls that can be simultaneously processed. The capacity of a gateway may be limited by link speed, memory, the number of circuits, etc. The Capacity Attribute allows administrators to assign gateways a metric representative of their capacity. The Capacity Attribute is a relative metric to be used across a confederation of ITADs. The determination of the capacity of a gateway as communicated by this attribute is an administrative matter. The unitless nature of the Capacity Attribute makes it impossible to compare the capacity of two gateways in different Internet telephony confederations. This attribute can be used to load-balance connections between a set of satisfactory next-hops. Note that this metric is NOT a path cost, but a relative measurement of the capacity of the egress gateway(s). This attribute is not intended to indicate any aspects of the real- time load on the gateway(s). This attribute may be modified by intermediate LSs when performing aggregation or filtering of CROs. Only one Capacity Attribute is permitted in a CRO. The format of the Capacity attribute is given below. 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Type=6 | GLP Attribute Length=8 | Squire [Page 19] Internet Draft GLP 16 February 1999 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | Capacity | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Attribute Type. Equals 6. GLP Attribute Length. Equals 8. Capacity. A relative measurement of the capacity of the egress gateway(s) represented by the call routing object. Represented as a 32-bit unsigned integer. A larger value in the Capacity field represents a CRO with more egress gateway capacity. The capacity of a gateway(s) is a relative value and cannot be used for comparison between different Internet telephony confederations. Editor's Note. We could define some unit(s) for the capacity metric. For example, bandwidth, maximum circuits, etc. Defining multiple units complicates the comparison of two capacities (ie is 10 Mbps greater than 20 circuits?), but makes the measurement more concrete. Suggestions? 5.2.3.7 Time-To-Live The TTL attribute is used to prevent loop detection. A LS must decrement the TTL of a CRO that it advertises to a peer in another administrative domain. When aggregating multiple inbound CROs into a single outbound CRO, the aggregated CRO must have a TTL less than all of the CROs that served as input for the outbound CRO. CROs with a TTL of zero must be ignored on receipt and should not be transmitted. Each CRO must contain a single TTL attribute. The format for the TTL Attribute is: 0 1 2 3 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | GLP Attribute Type=7 | GLP Attribute Length = 8 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | TTL | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ GLP Attribute Type. Equals 7. Squire [Page 20] Internet Draft GLP 16 February 1999 GLP Attribute Length. Equals 8. TTL. The number of intermediate LSs through which this CRO may be forwarded. The default value for CROs originated within the local ITAD is XXXX (?). Editor's Note. Might be better to use a loop detection algorithm more like BGP where we record the route of every entry. Preferences? Editor's Note. SCSP doesn't have any error indication defined. Should we try to define one, or just have the application layer deal with errors. Editor's Note. Instead of including all of the attributes with the call routing information in a single object, we could put each attribute into its own object. This would allow attributes to be updated independently of the base call routing data (ie every update wouldn't have to include the entire CRO), but would require more objects and the correlation of the objects. 6 Security Considerations SCSP has an Authentication Extension that can be appended to any SCSP message. When included in a SCSP message, the Authentication Extension provides integrity and authentication between directly connected peers. It is recommended that GLP speakers use the Authentication Extension of SCSP to validate incoming GLP messages. LSs may also wish to provide confidentiality for their transmitted data. To achieve confidentiality, peer LSs may communicate over an encrypted TCP connection. 7 IANA Considerations - scsp pid - tcp port for scsp? - signaling protocols - internet telephony admin domains - other? Squire [Page 21] Internet Draft GLP 16 February 1999 8 Conclusions 9 References [GLP-FR] J. Rosenberg and H. Schulzrinne, A Framework for a Gateway Location Protocol, Internet Draft, Internet Engineering Task Force, Work in Progress, 1999 [BGP4] Y. Rekhter and T. Li, A border gateway protocol 4 (BGP-4), Request for Comments (Draft Standard) 1771, Internet Engineering Task Force, Mar. 1995. (Obsoletes RFC1654). [OSPF] OSPF [SIP] SIP [H323] H323 [SCSP] SCSP [HTTP1.1] HTTP 1.1 [UTF8] ISO 10646 in UTF8 (rfc 2279) [RFC1890] RTP codec names & payload types [URL] URL formats [ISO4217] ISO 4217 (currency codes?) Author's Address Matt Squire Nortel Networks 4309 Emporer Blvd Suite 200 Durham, NC 27703 Phone: (919) 992-9048 msquire@nortelnetworks.com Squire [Page 22]