summaryrefslogtreecommitdiff
path: root/doc/rfc/rfc3219.txt
diff options
context:
space:
mode:
Diffstat (limited to 'doc/rfc/rfc3219.txt')
-rw-r--r--doc/rfc/rfc3219.txt4427
1 files changed, 4427 insertions, 0 deletions
diff --git a/doc/rfc/rfc3219.txt b/doc/rfc/rfc3219.txt
new file mode 100644
index 0000000..03745a5
--- /dev/null
+++ b/doc/rfc/rfc3219.txt
@@ -0,0 +1,4427 @@
+
+
+
+
+
+
+Network Working Group J. Rosenberg
+Request for Comments: 3219 dynamicsoft
+Category: Standards Track H. Salama
+ Cisco Systems
+ M. Squire
+ Hatteras Networks
+ January 2002
+
+
+ Telephony Routing over IP (TRIP)
+
+Status of this Memo
+
+ This document specifies an Internet standards track protocol for the
+ Internet community, and requests discussion and suggestions for
+ improvements. Please refer to the current edition of the "Internet
+ Official Protocol Standards" (STD 1) for the standardization state
+ and status of this protocol. Distribution of this memo is unlimited.
+
+Copyright Notice
+
+ Copyright (C) The Internet Society (2002). All Rights Reserved.
+
+Abstract
+
+ This document presents the Telephony Routing over IP (TRIP). TRIP is
+ a policy driven inter-administrative domain protocol for advertising
+ the reachability of telephony destinations between location servers,
+ and for advertising attributes of the routes to those destinations.
+ TRIP's operation is independent of any signaling protocol, hence TRIP
+ can serve as the telephony routing protocol for any signaling
+ protocol.
+
+ The Border Gateway Protocol (BGP-4) is used to distribute routing
+ information between administrative domains. TRIP is used to
+ distribute telephony routing information between telephony
+ administrative domains. The similarity between the two protocols is
+ obvious, and hence TRIP is modeled after BGP-4.
+
+Table of Contents
+
+ 1 Terminology and Definitions .............................. 3
+ 2 Introduction ............................................. 4
+ 3 Summary of Operation ..................................... 5
+ 3.1 Peering Session Establishment and Maintenance ............ 5
+ 3.2 Database Exchanges ....................................... 6
+ 3.3 Internal Versus External Synchronization ................. 6
+ 3.4 Advertising TRIP Routes .................................. 6
+
+
+
+Rosenberg, et. al. Standards Track [Page 1]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ 3.5 Telephony Routing Information Bases ...................... 7
+ 3.6 Routes in TRIP ........................................... 9
+ 3.7 Aggregation .............................................. 9
+ 4 Message Formats .......................................... 10
+ 4.1 Message Header Format .................................... 10
+ 4.2 OPEN Message Format ...................................... 11
+ 4.3 UPDATE Message Format .................................... 15
+ 4.4 KEEPALIVE Message Format ................................ 22
+ 4.5 NOTIFICATION Message Format ............................. 23
+ 5 TRIP Attributes ......................................... 24
+ 5.1 WithdrawnRoutes .......................................... 24
+ 5.2 ReachableRoutes .......................................... 28
+ 5.3 NextHopServer ........................................... 29
+ 5.4 AdvertisementPath ....................................... 31
+ 5.5 RoutedPath ............................................... 35
+ 5.6 AtomicAggregate ......................................... 36
+ 5.7 LocalPreference ......................................... 37
+ 5.8 MultiExitDisc ............................................ 38
+ 5.9 Communities .............................................. 39
+ 5.10 ITAD Topology .......................................... 41
+ 5.11 ConvertedRoute ........................................... 43
+ 5.12 Considerations for Defining New TRIP Attributes ......... 44
+ 6 TRIP Error Detection and Handling ....................... 44
+ 6.1 Message Header Error Detection and Handling ............. 45
+ 6.2 OPEN Message Error Detection and Handling ............... 45
+ 6.3 UPDATE Message Error Detection and Handling ............. 46
+ 6.4 NOTIFICATION Message Error Detection and Handling ....... 48
+ 6.5 Hold Timer Expired Error Handling ....................... 48
+ 6.6 Finite State Machine Error Handling ..................... 48
+ 6.7 Cease ................................................... 48
+ 6.8 Connection Collision Detection .......................... 48
+ 7 TRIP Version Negotiation ................................ 49
+ 8 TRIP Capability Negotiation ............................. 50
+ 9 TRIP Finite State Machine ............................... 50
+ 10 UPDATE Message Handling ................................. 55
+ 10.1 Flooding Process ........................................ 56
+ 10.2 Decision Process ........................................ 58
+ 10.3 Update-Send Process ..................................... 62
+ 10.4 Route Selection Criteria ................................ 67
+ 10.5 Originating TRIP Routes ................................. 67
+ 11 TRIP Transport .......................................... 68
+ 12 ITAD Topology ........................................... 68
+ 13 IANA Considerations ...................................... 68
+ 13.1 TRIP Capabilities ....................................... 68
+ 13.2 TRIP Attributes ........................................ 69
+ 13.3 Destination Address Families ............................ 69
+ 13.4 TRIP Application Protocols .............................. 69
+ 13.5 ITAD Numbers ............................................ 70
+
+
+
+Rosenberg, et. al. Standards Track [Page 2]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ 14 Security Considerations ................................. 70
+ A1 Appendix 1: TRIP FSM State Transitions and Actions ...... 71
+ A2 Appendix 2: Implementation Recommendations .............. 73
+ Acknowledgments ................................................ 75
+ References ..................................................... 75
+ Intellectual Property Notice ................................... 77
+ Authors' Addresses ............................................. 78
+ Full Copyright Statement ....................................... 79
+
+1. Terminology and Definitions
+
+ 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 RFC 2119 [1].
+
+ A framework for Telephony Routing over IP (TRIP) is described in [2].
+ We assume the reader is familiar with the framework and terminology
+ of [2]. We define and use the following terms in addition to those
+ defined in [2].
+
+ Telephony Routing Information Base (TRIB): The database of reachable
+ telephony destinations built and maintained at an LS as a result of
+ its participation in TRIP.
+
+ IP Telephony Administrative Domain (ITAD): The set of resources
+ (gateways, location servers, etc.) under the control of a single
+ administrative authority. End users are customers of an ITAD.
+
+ Less/More Specific Route: A route X is said to be less specific than
+ a route Y if every destination in Y is also a destination in X, and X
+ and Y are not equal. In this case, Y is also said to be more
+ specific than X.
+
+ Aggregation: Aggregation is the process by which multiple routes are
+ combined into a single less specific route that covers the same set
+ of destinations. Aggregation is used to reduce the size of the TRIB
+ being synchronized with peer LSs by reducing the number of exported
+ TRIP routes.
+
+ Peers: Two LSs that share a logical association (a transport
+ connection). If the LSs are in the same ITAD, they are internal
+ peers. Otherwise, they are external peers. The logical association
+ between two peer LSs is called a peering session.
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 3]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Telephony Routing Information Protocol (TRIP): The protocol defined
+ in this specification. The function of TRIP is to advertise the
+ reachability of telephony destinations, attributes associated with
+ the destinations, as well as the attributes of the path towards those
+ destinations.
+
+ TRIP destination: TRIP can be used to manage routing tables for
+ multiple protocols (SIP, H323, etc.). In TRIP, a destination is the
+ combination of (a) a set of addresses (given by an address family and
+ address prefix), and (b) an application protocol (SIP, H323, etc).
+
+2. Introduction
+
+ The gateway location and routing problem has been introduced in [2].
+ It is considered one of the more difficult problems in IP telephony.
+ The selection of an egress gateway for a telephony call, traversing
+ an IP network towards an ultimate destination in the PSTN, is driven
+ in large part by the policies of the various parties along the path,
+ and by the relationships established between these parties. As such,
+ a global directory of egress gateways in which users look up
+ destination phone numbers is not a feasible solution. Rather,
+ information about the availability of egress gateways is exchanged
+ between providers, and subject to policy, made available locally and
+ then propagated to other providers in other ITADs, thus creating
+ routes towards these egress gateways. This would allow each provider
+ to create its own database of reachable phone numbers and the
+ associated routes - such a database could be very different for each
+ provider depending on policy.
+
+ TRIP is an inter-domain (i.e., inter-ITAD) gateway location and
+ routing protocol. The primary function of a TRIP speaker, called a
+ location server (LS), is to exchange information with other LSs.
+ This information includes the reachability of telephony destinations,
+ the routes towards these destinations, and information about gateways
+ towards those telephony destinations residing in the PSTN. The TRIP
+ requirements are set forth in [2].
+
+ LSs exchange sufficient routing information to construct a graph of
+ ITAD connectivity so that routing loops may be prevented. In
+ addition, TRIP can be used to exchange attributes necessary to
+ enforce policies and to select routes based on path or gateway
+ characteristics. This specification defines TRIP's transport and
+ synchronization mechanisms, its finite state machine, and the TRIP
+ data. This specification defines the basic attributes of TRIP. The
+ TRIP attribute set is extendible, so additional attributes may be
+ defined in future documents.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 4]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ TRIP is modeled after the Border Gateway Protocol 4 (BGP-4) [3] and
+ enhanced with some link state features, as in the Open Shortest Path
+ First (OSPF) protocol [4], IS-IS [5], and the Server Cache
+ Synchronization Protocol (SCSP) [6]. TRIP uses BGP's inter-domain
+ transport mechanism, BGP's peer communication, BGP's finite state
+ machine, and similar formats and attributes as BGP. Unlike BGP
+ however, TRIP permits generic intra-domain LS topologies, which
+ simplifies configuration and increases scalability in contrast to
+ BGP's full mesh requirement of internal BGP speakers. TRIP uses an
+ intra-domain flooding mechanism similar to that used in OSPF [4],
+ IS-IS [5], and SCSP [6].
+
+ TRIP permits aggregation of routes as they are advertised through the
+ network. TRIP does not define a specific route selection algorithm.
+
+ TRIP runs over a reliable transport protocol. This eliminates the
+ need to implement explicit fragmentation, retransmission,
+ acknowledgment, and sequencing. The error notification mechanism
+ used in TRIP assumes that the transport protocol supports a graceful
+ close, i.e., that all outstanding data will be delivered before the
+ connection is closed.
+
+ TRIP's operation is independent of any particular telephony signaling
+ protocol. Therefore, TRIP can be used as the routing protocol for
+ any of these protocols, e.g., H.323 [7] and SIP [8].
+
+ The LS peering topology is independent of the physical topology of
+ the network. In addition, the boundaries of an ITAD are independent
+ of the boundaries of the layer 3 routing autonomous systems. Neither
+ internal nor external TRIP peers need to be physically adjacent.
+
+3. Summary of Operation
+
+ This section summarizes the operation of TRIP. Details are provided
+ in later sections.
+
+3.1. Peering Session Establishment and Maintenance
+
+ Two peer LSs form a transport protocol connection between one
+ another. They exchange messages to open and confirm the connection
+ parameters, and to negotiate the capabilities of each LS as well as
+ the type of information to be advertised over this connection.
+
+ KeepAlive messages are sent periodically to ensure adjacent peers are
+ operational. Notification messages are sent in response to errors or
+ special conditions. If a connection encounters an error condition, a
+ Notification message is sent and the connection is closed.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 5]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+3.2. Database Exchanges
+
+ Once the peer connection has been established, the initial data flow
+ is a dump of all routes relevant to the new peer (In the case of an
+ external peer, all routes in the LS's Adj-TRIB-Out for that external
+ peer. In the case of an internal peer, all routes in the Ext-TRIB
+ and all Adj-TRIBs-In). Note that the different TRIBs are defined in
+ Section 3.5.
+
+ Incremental updates are sent as the TRIP routing tables (TRIBs)
+ change. TRIP does not require periodic refresh of the routes.
+ Therefore, an LS must retain the current version of all routing
+ entries.
+
+ If a particular ITAD has multiple LSs and is providing transit
+ service for other ITADs, then care must be taken to ensure a
+ consistent view of routing within the ITAD. When synchronized the
+ TRIP routing tables, i.e., the Loc-TRIBs, of all internal peers are
+ identical.
+
+3.3. Internal Versus External Synchronization
+
+ As with BGP, TRIP distinguishes between internal and external peers.
+ Within an ITAD, internal TRIP uses link-state mechanisms to flood
+ database updates over an arbitrary topology. Externally, TRIP uses
+ point-to-point peering relationships to exchange database
+ information.
+
+ To achieve internal synchronization, internal peer connections are
+ configured between LSs of the same ITAD such that the resulting
+ intra-domain LS topology is connected and sufficiently redundant.
+ This is different from BGP's approach that requires all internal
+ peers to be connected in a full mesh topology, which may result in
+ scaling problems. When an update is received from an internal peer,
+ the routes in the update are checked to determine if they are newer
+ than the version already in the database. Newer routes are then
+ flooded to all other peers in the same domain.
+
+3.4. Advertising TRIP Routes
+
+ In TRIP, a route is defined as the combination of (a) a set of
+ destination addresses (given by an address family indicator and an
+ address prefix), and (b) an application protocol (e.g. SIP, H323,
+ etc.). Generally, there are additional attributes associated with
+ each route (for example, the next-hop server).
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 6]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ TRIP routes are advertised between a pair of LSs in UPDATE messages.
+ The destination addresses are included in the ReachableRoutes
+ attribute of the UPDATE, while other attributes describe things like
+ the path or egress gateway.
+
+ If an LS chooses to advertise a TRIP route, it may add to or modify
+ the attributes of the route before advertising it to a peer. TRIP
+ provides mechanisms by which an LS can inform its peer that a
+ previously advertised route is no longer available for use. There
+ are three methods by which a given LS can indicate that a route has
+ been withdrawn from service:
+
+ - Include the route in the WithdrawnRoutes Attribute in an UPDATE
+ message, thus marking the associated destinations as being no
+ longer available for use.
+ - Advertise a replacement route with the same set of destinations
+ in the ReachableRoutes Attribute.
+ - For external peers where flooding is not in use, the LS-to-LS
+ peer connection can be closed, which implicitly removes from
+ service all routes which the pair of LSs had advertised to each
+ other over that peer session. Note that terminating an
+ internal peering session does not necessarily remove the routes
+ advertised by the peer LS as the same routes may have been
+ received from multiple internal peers because of flooding. If
+ an LS determines that another internal LS is no longer active
+ (from the ITAD Topology attributes of the UPDATE messages from
+ other internal peers), then it MUST remove all routes
+ originated into the LS by that LS and rerun its decision
+ process.
+
+3.5. Telephony Routing Information Bases
+
+ A TRIP LS processes three types of routes:
+
+ - External routes: An external route is a route received from an
+ external peer LS
+ - Internal routes: An internal route is a route received from an
+ internal LS in the same ITAD.
+ - Local routes: A local route is a route locally injected into
+ TRIP, e.g. by configuration or by route redistribution from
+ another routing protocol.
+
+ The Telephony Routing Information Base (TRIB) within an LS consists
+ of four distinct parts:
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 7]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ - Adj-TRIBs-In: The Adj-TRIBs-In store routing information that
+ has been learned from inbound UPDATE messages. Their contents
+ represent TRIP routes that are available as an input to the
+ Decision Process. These are the "unprocessed" routes received.
+ The routes from each external peer LS and each internal LS are
+ maintained in this database independently, so that updates from
+ one peer do not affect the routes received from another LS.
+ Note that there is an Adj-TRIB-In for every LS within the
+ domain, even those with which the LS is not directly peered.
+ - Ext-TRIB: There is only one Ext-TRIB database per LS. The LS
+ runs the route selection algorithm on all external routes
+ (stored in the Adj-TRIBs-In of the external peers) and local
+ routes (may be stored in an Adj-TRIB-In representing the local
+ LS) and selects the best route for a given destination and
+ stores it in the Ext-TRIB. The use of Ext-TRIB will be
+ explained further in Section 10.3.1
+ - Loc-TRIB: The Loc-TRIB contains the local TRIP routing
+ information that the LS has selected by applying its local
+ policies to the routing information contained in its Adj-
+ TRIBs-In of internal LSs and the Ext-TRIB.
+ - Adj-TRIBs-Out: The Adj-TRIBs-Out store the information that
+ the local LS has selected for advertisement to its external
+ peers. The routing information stored in the Adj-TRIBs-Out
+ will be carried in the local LS's UPDATE messages and
+ advertised to its peers.
+
+ Figure 1 illustrates the relationship between the four parts of the
+ routing information base.
+
+ Loc-TRIB
+ ^
+ |
+ Decision Process
+ ^ ^ |
+ | | |
+ Adj-TRIBs-In | V
+ (Internal LSs) | Adj-TRIBs-Out
+ |
+ |
+ |
+ Ext-TRIB
+ ^ ^
+ | |
+ Adj-TRIB-In Local Routes
+ (External Peers)
+
+ Figure 1: TRIB Relationships
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 8]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Although the conceptual model distinguishes between Adj-TRIBs-In,
+ Ext-TRIB, Loc-TRIB, and Adj-TRIBs-Out, this neither implies nor
+ requires that an implementation must maintain four separate copies of
+ the routing information. The choice of implementation (for example,
+ 4 copies of the information vs. 1 copy with pointers) is not
+ constrained by the protocol.
+
+3.6. Routes in TRIP
+
+ A route in TRIP specifies a range of numbers by being a prefix of
+ those numbers (the exact definition & syntax of route are in 5.1.1).
+ Arbitrary ranges of numbers are not atomically representable by a
+ route in TRIP. A prefix range is the only type of range supported
+ atomically. An arbitrary range can be accomplished by using multiple
+ prefixes in a ReachableRoutes attribute (see Section 5.1 & 5.2). For
+ example, 222-xxxx thru 999-xxxx could be represented by including the
+ prefixes 222, 223, 224,...,23,24,...,3,4,...,9 in a ReachableRoutes
+ attribute.
+
+3.7. Aggregation
+
+ Aggregation is a scaling enhancement used by an LS to reduce the
+ number of routing entries that it has to synchronize with its peers.
+ Aggregation may be performed by an LS when there is a set of routes
+ {R1, R2, ...} in its TRIB such that there exists a less specific
+ route R where every valid destination in R is also a valid
+ destination in {R1, R2, ...} and vice-versa. Section 5 includes a
+ description of how to combine each attribute (by type) on the {R1,
+ R2, ...} routes into an attribute for R.
+
+ Note that there is no mechanism within TRIP to communicate that a
+ particular address prefix is not used or valid within a particular
+ address family, and thus that these addresses could be skipped during
+ aggregation. LSs may use methods outside of TRIP to learn of invalid
+ prefixes that may be ignored during aggregation.
+
+ An LS is not required to perform aggregation, however it is
+ recommended whenever maintaining a smaller TRIB is important. An LS
+ decides based on its local policy whether or not to aggregate a set
+ of routes into a single aggregate route.
+
+ Whenever an LS aggregates multiple routes where the NextHopServer is
+ not identical in all aggregated routes, the NextHopServer attribute
+ of the aggregate route must be set to a signalling server in the
+ aggregating LS's domain.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 9]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ When an LS resets the NextHopServer of any route, and this may be
+ performed because of aggregation or other reasons, it has the effect
+ of adding another signalling server along the signalling path to
+ these destinations. The end result is that the signalling path
+ between two destinations may consist of multiple signalling servers
+ across multiple domains.
+
+4. Message Formats
+
+ This section describes message formats used by TRIP. Messages are
+ sent over a reliable transport protocol connection. A message MUST
+ be processed only after it is entirely received. The maximum message
+ size is 4096 octets. All implementations MUST support this maximum
+ message size. The smallest message that MAY be sent consists of a
+ TRIP header without a data portion, or 3 octets.
+
+4.1. Message Header Format
+
+ Each message has a fixed-size header. There may or may not be a data
+ portion following the header, depending on the message type. The
+ layout of the header fields is shown in Figure 2.
+
+ 0 1 2
+ 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3
+ +--------------+----------------+---------------+
+ | Length | Type |
+ +--------------+----------------+---------------+
+
+ Figure 2: TRIP Header
+
+ Length: This 2-octet unsigned integer indicates the total length of
+ the message, including the header, in octets. Thus, it allows one to
+ locate, in the transport-level stream, the beginning of the next
+ message. The value of the Length field must always be at least 3 and
+ no greater than 4096, and may be further constrained depending on the
+ message type. No padding of extra data after the message is allowed,
+ so the Length field must have the smallest value possible given the
+ rest of the message.
+
+ Type: This 1-octet unsigned integer indicates the type code of the
+ message. The following type codes are defined:
+
+ 1 - OPEN
+ 2 - UPDATE
+ 3 - NOTIFICATION
+ 4 - KEEPALIVE
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 10]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+4.2. OPEN Message Format
+
+ After a transport protocol connection is established, the first
+ message sent by each side is an OPEN message. If the OPEN message is
+ acceptable, a KEEPALIVE message confirming the OPEN is sent back.
+ Once the OPEN is confirmed, UPDATE, KEEPALIVE, and NOTIFICATION
+ messages may be exchanged.
+
+ The minimum length of the OPEN message is 17 octets (including
+ message header). OPEN messages not meeting this minimum requirement
+ are handled as defined in Section 6.2.
+
+ In addition to the fixed-size TRIP header, the OPEN message contains
+ the following fields:
+
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Version | Reserved | Hold Time |
+ +---------------+---------------+--------------+----------------+
+ | My ITAD |
+ +---------------+---------------+--------------+----------------+
+ | TRIP Identifier |
+ +---------------+---------------+--------------+----------------+
+ | Optional Parameters Len |Optional Parameters (variable)...
+ +---------------+---------------+--------------+----------------+
+
+ Figure 3: TRIP OPEN Header
+
+ Version:
+ This 1-octet unsigned integer indicates the protocol version of the
+ message. The current TRIP version number is 1.
+
+ Hold Time:
+ This 2-octet unsigned integer indicates the number of seconds that
+ the sender proposes for the value of the Hold Timer. Upon receipt of
+ an OPEN message, an LS MUST calculate the value of the Hold Timer by
+ using the smaller of its configured Hold Time and the Hold Time
+ received in the OPEN message. The Hold Time MUST be either zero or
+ at least three seconds. An implementation MAY reject connections on
+ the basis of the Hold Time. The calculated value indicates the
+ maximum number of seconds that may elapse between the receipt of
+ successive KEEPALIVE and/or UPDATE messages by the sender.
+
+ This 4-octet unsigned integer indicates the ITAD number of the
+ sender. The ITAD number must be unique for this domain within this
+ confederation of cooperating LSs.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 11]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ ITAD numbers are assigned by IANA as specified in Section 13. This
+ document reserves ITAD number 0. ITAD numbers from 1 to 255 are
+ designated for private use.
+
+ TRIP Identifier:
+ This 4-octet unsigned integer indicates the TRIP Identifier of the
+ sender. The TRIP Identifier MUST uniquely identify this LS within
+ its ITAD. A given LS MAY set the value of its TRIP Identifier to an
+ IPv4 address assigned to that LS. The value of the TRIP Identifier
+ is determined on startup and MUST be the same for all peer
+ connections. When comparing two TRIP identifiers, the TRIP
+ Identifier is interpreted as a numerical 4-octet unsigned integer.
+
+ Optional Parameters Length:
+ This 2-octet unsigned integer indicates the total length of the
+ Optional Parameters field in octets. If the value of this field is
+ zero, no Optional Parameters are present.
+
+ Optional Parameters:
+ This field may contain a list of optional parameters, where each
+ parameter is encoded as a <Parameter Type, Parameter Length,
+ Parameter Value> triplet.
+
+ 0 1 2
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Parameter Type | Parameter Length |
+ +---------------+---------------+--------------+----------------+
+ | Parameter Value (variable)...
+ +---------------+---------------+--------------+----------------+
+
+ Figure 4: Optional Parameter Encoding
+
+ Parameter Type:
+ This is a 2-octet field that unambiguously identifies individual
+ parameters.
+
+ Parameter Length:
+ This is a 2-octet field that contains the length of the Parameter
+ Value field in octets.
+
+ Parameter Value:
+ This is a variable length field that is interpreted according to the
+ value of the Parameter Type field.
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 12]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+4.2.1. Open Message Optional Parameters
+
+ This document defines the following Optional Parameters for the OPEN
+ message.
+
+4.2.1.1. Capability Information
+
+ Capability Information uses Optional Parameter type 1. This is an
+ optional parameter used by an LS to convey to its peer the list of
+ capabilities supported by the LS. This permits an LS to learn of the
+ capabilities of its peer LSs. Capability negotiation is defined in
+ Section 8.
+
+ The parameter contains one or more triples <Capability Code,
+ Capability Length, Capability Value>, where each triple is encoded as
+ shown below:
+
+ 0 1 2
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Capability Code | Capability Length |
+ +---------------+---------------+--------------+----------------+
+ | Capability Value (variable)...
+ +---------------+---------------+--------------+----------------+
+
+ Figure 5: Capability Optional Parameter
+
+ Capability Code:
+ Capability Code is a 2-octet field that unambiguously identifies
+ individual capabilities.
+
+ Capability Length:
+ Capability Length is a 2-octet field that contains the length of the
+ Capability Value field in octets.
+
+ Capability Value:
+ Capability Value is a variable length field that is interpreted
+ according to the value of the Capability Code field.
+
+ Any particular capability, as identified by its Capability Code, may
+ appear more than once within the Optional Parameter.
+
+ This document reserves Capability Codes 32768-65535 for vendor-
+ specific applications (these are the codes with the first bit of the
+ code value equal to 1). This document reserves value 0. Capability
+ Codes (other than those reserved for vendor specific use) are
+ controlled by IANA. See Section 13 for IANA considerations.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 13]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ The following Capability Codes are defined by this specification:
+
+ Code Capability
+ 1 Route Types Supported
+ 2 Send Receive Capability
+
+4.2.1.1.1. Route Types Supported
+
+ The Route Types Supported Capability Code lists the route types
+ supported in this peering session by the transmitting LS. An LS MUST
+ NOT use route types that are not supported by the peer LS in any
+ particular peering session. If the route types supported by a peer
+ are not satisfactory, an LS SHOULD terminate the peering session.
+ The format for a Route Type is:
+
+ 0 1 2
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Address Family | Application Protocol |
+ +---------------+---------------+--------------+----------------+
+
+ Figure 6: Route Types Supported Capability
+
+ The Address Family and Application Protocol are as defined in Section
+ 5.1.1. Address Family gives the address family being routed (within
+ the ReachableRoutes attribute). The application protocol lists the
+ application for which the routes apply. As an example, a route type
+ for TRIP could be <E.164, SIP>, indicating a set of E.164
+ destinations for the SIP protocol.
+
+ The Route Types Supported Capability MAY contain multiple route types
+ in the capability. The number of route types within the capability
+ is the maximum number that can fit given the capability length. The
+ Capability Code is 1 and the length is variable.
+
+4.2.1.1.2. Send Receive Capability
+
+ This capability specifies the mode in which the LS will operate with
+ this particular peer. The possible modes are: Send Only mode,
+ Receive Only mode, or Send Receive mode. The default mode is Send
+ Receive mode.
+
+ In Send Only mode, an LS transmits UPDATE messages to its peer, but
+ the peer MUST NOT transmit UPDATE messages to that LS. If an LS in
+ Send Only mode receives an UPDATE message from its peer, it MUST
+ discard that message, but no further action should be taken.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 14]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ The UPDATE messages sent by an LS in Send Only mode to its intra-
+ domain peer MUST include the ITAD Topology attribute whenever the
+ topology changes. A useful application of an LS in Send Only mode
+ with an external peer is to enable gateway registration services.
+
+ If a service provider terminates calls to a set of gateways it owns,
+ but never initiates calls, it can set its LSs to operate in Send Only
+ mode, since they only ever need to generate UPDATE messages, not
+ receive them. If an LS in Send Receive mode has a peering session
+ with a peer in Send Only mode, that LS MUST set its route
+ dissemination policy such that it does not send any UPDATE messages
+ to its peer.
+
+ In Receive Only mode, the LS acts as a passive TRIP listener. It
+ receives and processes UPDATE messages from its peer, but it MUST NOT
+ transmit any UPDATE messages to its peer. This is useful for
+ management stations that wish to collect topology information for
+ display purposes.
+
+ The behavior of an LS in Send Receive mode is the default TRIP
+ operation specified throughout this document.
+
+ The Send Receive capability is a 4-octet unsigned numeric value. It
+ can only take one of the following three values:
+
+ 1 - Send Receive mode
+ 2 - Send only mode
+ 3 - Receive Only mode
+
+ A peering session MUST NOT be established between two LSs if both of
+ them are in Send Only mode or if both of them are in Receive Only
+ mode. If a peer LS detects such a capability mismatch when
+ processing an OPEN message, it MUST respond with a NOTIFICATION
+ message and close the peer session. The error code in the
+ NOTIFICATION message must be set to "Capability Mismatch."
+
+ An LS MUST be configured in the same Send Receive mode for all peers.
+
+4.3. UPDATE Message Format
+
+ UPDATE messages are used to transfer routing information between LSs.
+ The information in the UPDATE packet can be used to construct a graph
+ describing the relationships between the various ITADs. By applying
+ rules to be discussed, routing information loops and some other
+ anomalies can be prevented.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 15]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ An UPDATE message is used to both advertise and withdraw routes from
+ service. An UPDATE message may simultaneously advertise and withdraw
+ TRIP routes.
+
+ In addition to the TRIP header, the TRIP UPDATE contains a list of
+ routing attributes as shown in Figure 7. There is no padding between
+ routing attributes.
+
+ +------------------------------------------------+--...
+ | First Route Attribute | Second Route Attribute | ...
+ +------------------------------------------------+--...
+
+ Figure 7: TRIP UPDATE Format
+
+ The minimum length of an UPDATE message is 3 octets (there are no
+ mandatory attributes in TRIP).
+
+4.3.1. Routing Attributes
+
+ A variable length sequence of routing attributes is present in every
+ UPDATE message. Each attribute is a triple <attribute type,
+ attribute length, attribute value> of variable length.
+
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Attr. Flags |Attr. Type Code| Attr. Length |
+ +---------------+---------------+--------------+----------------+
+ | Attribute Value (variable) |
+ +---------------+---------------+--------------+----------------+
+
+ Figure 8: Routing Attribute Format
+
+ Attribute Type is a two-octet field that consists of the Attribute
+ Flags octet followed by the Attribute Type Code octet.
+
+ The Attribute Type Code defines the type of attribute. The basic
+ TRIP-defined Attribute Type Codes are discussed later in this
+ section. Attributes MUST appear in the UPDATE message in numerical
+ order of the Attribute Type Code. An attribute MUST NOT be included
+ more than once in the same UPDATE message. Attribute Flags are used
+ to control attribute processing when the attribute type is unknown.
+ Attribute Flags are further defined in Section 4.3.2.
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 16]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ This document reserves Attribute Type Codes 224-255 for vendor-
+ specific applications (these are the codes with the first three bits
+ of the code equal to 1). This document reserves value 0. Attribute
+ Type Codes (other than those reserved for vendor specific use) are
+ controlled by IANA. See Section 13 for IANA considerations.
+
+ The third and the fourth octets of the route attribute contain the
+ length of the attribute value field in octets.
+
+ The remaining octets of the attribute represent the Attribute Value
+ and are interpreted according to the Attribute Flags and the
+ Attribute Type Code. The basic supported attribute types, their
+ values, and their uses are defined in this specification. These are
+ the attributes necessary for proper loop free operation of TRIP, both
+ inter-domain and intra-domain. Additional attributes may be defined
+ in future documents.
+
+4.3.2. Attribute Flags
+
+ It is clear that the set of attributes for TRIP will evolve over
+ time. Hence it is essential that mechanisms be provided to handle
+ attributes with unrecognized types. The handling of unrecognized
+ attributes is controlled via the flags field of the attribute.
+ Recognized attributes should be processed according to their specific
+ definition.
+
+ The following are the attribute flags defined by this specification:
+ Bit Flag
+ 0 Well-Known Flag
+ 1 Transitive Flag
+ 2 Dependent Flag
+ 3 Partial Flag
+ 4 Link-state Encapsulated Flag
+
+ The high-order bit (bit 0) of the Attribute Flags octet is the Well-
+ Known Bit. It defines whether the attribute is not well-known (if
+ set to 1) or well-known (if set to 0). Implementations are not
+ required to support not well-known attributes, but MUST support
+ well-known attributes.
+
+ The second high-order bit (bit 1) of the Attribute Flags octet is the
+ Transitive bit. It defines whether a not well-known attribute is
+ transitive (if set to 1) or non-transitive (if set to 0). For well-
+ known attributes, the Transitive bit MUST be zero on transmit and
+ MUST be ignored on receipt.
+
+ The third high-order bit (bit 2) of the Attribute Flags octet is the
+ Dependent bit. It defines whether a transitive attribute is
+
+
+
+Rosenberg, et. al. Standards Track [Page 17]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ dependent (if set to 1) or independent (if set to 0). For well-known
+ attributes and for non-transitive attributes, the Dependent bit is
+ irrelevant, and MUST be set to zero on transmit and MUST be ignored
+ on receipt.
+
+ The fourth high-order bit (bit 3) of the Attribute Flags octet is the
+ Partial bit. It defines whether the information contained in the not
+ well-known transitive attribute is partial (if set to 1) or complete
+ (if set to 0). For well-known attributes and for non-transitive
+ attributes the Partial bit MUST be set to 0 on transmit and MUST be
+ ignored on receipt.
+
+ The fifth high-order bit (bit 4) of the Attribute Flags octet is the
+ Link-state Encapsulation bit. This bit is only applicable to certain
+ attributes (ReachableRoutes and WithdrawnRoutes) and determines the
+ encapsulation of the routes within those attributes. If this bit is
+ set, link-state encapsulation is used within the attribute.
+ Otherwise, standard encapsulation is used within the attribute. The
+ Link-state Encapsulation technique is described in Section 4.3.2.4.
+ This flag is only valid on the ReachableRoutes and WithdrawnRoutes
+ attributes. It MUST be cleared on transmit and MUST be ignored on
+ receipt for all other attributes.
+
+ The other bits of the Attribute Flags octet are unused. They MUST be
+ zeroed on transmit and ignored on receipt.
+
+4.3.2.1. Attribute Flags and Route Selection
+
+ Any recognized attribute can be used as input to the route selection
+ process, although the utility of some attributes in route selection
+ is minimal.
+
+4.3.2.2. Attribute Flags and Route Dissemination
+
+ TRIP provides for two variations of transitivity due to the fact that
+ intermediate LSs need not modify the NextHopServer when propagating
+ routes. Attributes may be non-transitive, dependent transitive, or
+ independent transitive. An attribute cannot be both dependent
+ transitive and independent transitive.
+
+ Unrecognized independent transitive attributes may be propagated by
+ any intermediate LS. Unrecognized dependent transitive attributes
+ MAY only be propagated if the LS is NOT changing the next-hop server.
+ The transitivity variations permit some unrecognized attributes to be
+ carried end-to-end (independent transitive), some to be carried
+ between adjacent next-hop servers (dependent transitive), and other
+ to be restricted to peer LSs (non-transitive).
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 18]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ An LS that passes an unrecognized transitive attribute to a peer MUST
+ set the Partial flag on that attribute. Any LS along a path MAY
+ insert a transitive attribute into a route. If any LS except the
+ originating LS inserts a new independent transitive attribute into a
+ route, then it MUST set the Partial flag on that attribute. If any
+ LS except an LS that modifies the NextHopServer inserts a new
+ dependent transitive attribute into a route, then it MUST set the
+ Partial flag on that attribute. The Partial flag indicates that not
+ every LS along the relevant path has processed and understood the
+ attribute. For independent transitive attributes, the "relevant
+ path" is the path given in the AdvertisementPath attribute. For
+ dependent transitive attributes, the relevant path consists only of
+ those domains thru which this object has passed since the
+ NextHopServer was last modified. The Partial flag in an independent
+ transitive attribute MUST NOT be unset by any other LS along the
+ path. The Partial flag in a dependent transitive attribute MUST be
+ reset whenever the NextHopServer is changed, but MUST NOT be unset by
+ any LS that is not changing the NextHopServer.
+
+ The rules governing the addition of new non-transitive attributes are
+ defined independently for each non-transitive attribute. Any
+ attribute MAY be updated by an LS in the path.
+
+4.3.2.3. Attribute Flags and Route Aggregation
+
+ Each attribute defines how it is to be handled during route
+ aggregation.
+
+ The rules governing the handling of unknown attributes are guided by
+ the Attribute Flags. Unrecognized transitive attributes are dropped
+ during aggregation. There should be no unrecognized non-transitive
+ attributes during aggregation because non-transitive attributes must
+ be processed by the local LS in order to be propagated.
+
+4.3.2.4. Attribute Flags and Encapsulation
+
+ Normally attributes have the simple format as described in Section
+ 4.3.1. If the Link-state Encapsulation Flag is set, then the two
+ additional fields are added to the attribute header as shown in
+ Figure 9.
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 19]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Attr. Flags |Attr. Type Code| Attr. Length |
+ +---------------+---------------+--------------+----------------+
+ | Originator TRIP Identifier |
+ +---------------+---------------+--------------+----------------+
+ | Sequence Number |
+ +---------------+---------------+--------------+----------------+
+ | Attribute Value (variable) |
+ +---------------+---------------+--------------+----------------+
+
+ Figure 9: Link State Encapsulation
+
+ The Originator TRIP ID and Sequence Number are used to control the
+ flooding of routing updates within a collection of servers. These
+ fields are used to detect duplicate and old routes so that they are
+ not further propagated to other LSs. The use of these fields is
+ defined in Section 10.1.
+
+4.3.3. Mandatory Attributes
+
+ There are no Mandatory attributes in TRIP. However, there are
+ Conditional Mandatory attributes. A conditional mandatory attribute
+ is an attribute, which MUST be included in an UPDATE message if
+ another attribute is included in that message. For example, if an
+ UPDATE message includes a ReachableRoutes attribute, it MUST include
+ an AdvertisementPath attribute as well.
+
+ The three base attributes in TRIP are WithdrawnRoutes,
+ ReachableRoutes, and ITAD Topology. Their presence in an UPDATE
+ message is entirely optional and independent of any other attributes.
+
+4.3.4. TRIP UPDATE Attributes
+
+ This section summarizes the attributes that may be carried in an
+ UPDATE message. Attributes MUST appear in the UPDATE message in
+ increasing order of the Attribute Type Code. Additional details are
+ provided in Section 5.
+
+4.3.4.1. WithdrawnRoutes
+
+ This attribute lists a set of routes that are being withdrawn from
+ service. The transmitting LS has determined that these routes should
+ no longer be advertised, and is propagating this information to its
+ peers.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 20]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+4.3.4.2. ReachableRoutes
+
+ This attribute lists a set of routes that are being added to service.
+ These routes will have the potential to be inserted into the Adj-
+ TRIBs-In of the receiving LS and the route selection process will be
+ applied to them.
+
+4.3.4.3. NextHopServer
+
+ This attribute gives the identity of the entity to which messages
+ should be sent along this routed path. It specifies the identity of
+ the next hop server as either a host domain name or an IP address.
+ It MAY optionally specify the UDP/TCP port number for the next hop
+ signaling server. If not specified, then the default port SHOULD be
+ used. The NextHopServer is specific to the set of destinations and
+ application protocol defined in the ReachableRoutes attribute. Note
+ that this is NOT necessarily the address to which media (voice,
+ video, etc.) should be transmitted, it is only for the application
+ protocol as given in the ReachableRoutes attribute.
+
+4.3.4.4. AdvertisementPath
+
+ The AdvertisementPath is analogous to the AS_PATH in BGP4 [3]. The
+ attribute records the sequence of domains through which this
+ advertisement has passed. The attribute is used to detect when the
+ routing advertisement is looping. This attribute does NOT reflect
+ the path through which messages following this route would traverse.
+ Since the next-hop need not be modified by each LS, the actual path
+ to the destination might not have to traverse every domain in the
+ AdvertisementPath.
+
+4.3.4.5. RoutedPath
+
+ The RoutedPath attribute is analogous to the AdvertisementPath
+ attribute, except that it records the actual path (given by the list
+ of domains) *to* the destinations. Unlike AdvertisementPath, which
+ is modified each time the route is propagated, RoutedPath is only
+ modified when the NextHopServer attribute changes. Thus, it records
+ the subset of the AdvertisementPath which signaling messages
+ following this particular route would traverse.
+
+4.3.4.6. AtomicAggregate
+
+ The AtomicAggregate attribute indicates that a route may actually
+ include domains not listed in the RoutedPath. If an LS, when
+ presented with a set of overlapping routes from a peer LS, selects a
+ less specific route without selecting the more specific route, then
+ the LS MUST include the AtomicAggregate attribute with the route. An
+
+
+
+Rosenberg, et. al. Standards Track [Page 21]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ LS receiving a route with an AtomicAggregate attribute MUST NOT make
+ the set of destinations more specific when advertising it to other
+ LSs.
+
+4.3.4.7. LocalPreference
+
+ The LocalPreference attribute is an intra-domain attribute used to
+ inform other LSs of the local LS's preference for a given route. The
+ preference of a route is calculated at the ingress to a domain and
+ passed as an attribute with that route throughout the domain. Other
+ LSs within the same ITAD use this attribute in their route selection
+ process. This attribute has no significance between domains.
+
+4.3.4.8. MultiExitDisc
+
+ There may be more than one LS peering relationship between
+ neighboring domains. The MultiExitDisc attribute is used by an LS to
+ express a preference for one link between the domains over another
+ link between the domains. The use of the MultiExitDisc attribute is
+ controlled by local policy.
+
+4.3.4.9. Communities
+
+ The Communities attribute is not a well-known attribute. It is used
+ to facilitate and simplify the control of routing information by
+ grouping destinations into communities.
+
+4.3.4.10. ITAD Topology
+
+ The ITAD topology attribute is an intra-domain attribute that is used
+ by LSs to indicate their intra-domain topology to other LSs in the
+ domain.
+
+4.3.4.11. ConvertedRoute
+
+ The ConvertedRoute attribute indicates that an intermediate LS has
+ altered the route by changing the route's Application Protocol.
+
+4.4. KEEPALIVE Message Format
+
+ TRIP does not use any transport-based keep-alive mechanism to
+ determine if peers are reachable. Instead, KEEPALIVE messages are
+ exchanged between peers often enough as not to cause the Hold Timer
+ to expire. A reasonable maximum time between KEEPALIVE messages
+ would be one third of the Hold Time interval. KEEPALIVE messages
+ MUST NOT be sent more than once every 3 seconds. An implementation
+ SHOULD adjust the rate at which it sends KEEPALIVE messages as a
+ function of the negotiated Hold Time interval.
+
+
+
+Rosenberg, et. al. Standards Track [Page 22]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ If the negotiated Hold Time interval is zero, then periodic KEEPALIVE
+ messages MUST NOT be sent.
+
+ The KEEPALIVE message consists of only a message header and has a
+ length of 3 octets.
+
+4.5. NOTIFICATION Message Format
+
+ A NOTIFICATION message is sent when an error condition is detected.
+ The TRIP transport connection is closed immediately after sending a
+ NOTIFICATION message.
+
+ In addition to the fixed-size TRIP header, the NOTIFICATION message
+ contains the following fields:
+
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Error Code | Error Subcode | Data... (variable)
+ +---------------+---------------+--------------+----------------+
+
+ Figure 10: TRIP NOTIFICATION Format
+
+ Error Code:
+ This 1-octet unsigned integer indicates the type of NOTIFICATION.
+ The following Error Codes have been defined:
+
+ Error Code Symbolic Name Reference
+ 1 Message Header Error Section 6.1
+ 2 OPEN Message Error Section 6.2
+ 3 UPDATE Message Error Section 6.3
+ 4 Hold Timer Expired Section 6.5
+ 5 Finite State Machine Error Section 6.6
+ 6 Cease Section 6.7
+
+ Error Subcode:
+ This 1-octet unsigned integer provides more specific information
+ about the nature of the reported error. Each Error Code may have one
+ or more Error Subcodes associated with it. If no appropriate Error
+ Subcode is defined, then a zero (Unspecific) value is used for the
+ Error Subcode field.
+
+ Message Header Error Subcodes:
+ 1 - Bad Message Length.
+ 2 - Bad Message Type.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 23]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ OPEN Message Error Subcodes:
+ 1 - Unsupported Version Number.
+ 2 - Bad Peer ITAD.
+ 3 - Bad TRIP Identifier.
+ 4 - Unsupported Optional Parameter.
+ 5 - Unacceptable Hold Time.
+ 6 - Unsupported Capability.
+ 7 - Capability Mismatch.
+
+ UPDATE Message Error Subcodes:
+ 1 - Malformed Attribute List.
+ 2 - Unrecognized Well-known Attribute.
+ 3 - Missing Well-known Mandatory Attribute.
+ 4 - Attribute Flags Error.
+ 5 - Attribute Length Error.
+ 6 - Invalid Attribute.
+
+ Data:
+ This variable-length field is used to diagnose the reason for the
+ NOTIFICATION. The contents of the Data field depend upon the Error
+ Code and Error Subcode.
+
+ Note that the length of the data can be determined from the message
+ length field by the formula:
+
+ Data Length = Message Length - 5
+
+ The minimum length of the NOTIFICATION message is 5 octets (including
+ message header).
+
+5. TRIP Attributes
+
+ This section provides details on the syntax and semantics of each
+ TRIP UPDATE attribute.
+
+5.1. WithdrawnRoutes
+
+ Conditional Mandatory: False.
+ Required Flags: Well-known.
+ Potential Flags: Link-State Encapsulation (when flooding).
+ TRIP Type Code: 1
+
+ The WithdrawnRoutes specifies a set of routes that are to be removed
+ from service by the receiving LS(s). The set of routes MAY be empty,
+ indicated by a length field of zero.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 24]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.1.1. Syntax of WithdrawnRoutes
+
+ The WithdrawnRoutes Attribute encodes a sequence of routes in its
+ value field. The format for individual routes is given in Section
+ 5.1.1.1. The WithdrawnRoutes Attribute lists the individual routes
+ sequentially with no padding as shown in Figure 11. Each route
+ includes a length field so that the individual routes within the
+ attribute can be delineated.
+
+ +---------------------+---------------------+...
+ | WithdrawnRoute1... | WithdrawnRoute2... |...
+ +---------------------+---------------------+...
+
+ Figure 11: WithdrawnRoutes Format
+
+5.1.1.1. Generic TRIP Route Format
+
+ The generic format for a TRIP route is given in Figure 12.
+
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Address Family | Application Protocol |
+ +---------------+---------------+--------------+----------------+
+ | Length | Address (variable) ...
+ +---------------+---------------+--------------+----------------+
+
+ Figure 12: Generic TRIP Route Format
+
+ Address Family:
+ The address family field gives the type of address for the route.
+ Three address families are defined in this Section:
+
+ Code Address Family
+ 1 Decimal Routing Numbers
+ 2 PentaDecimal Routing Numbers
+ 3 E.164 Numbers
+
+ This document reserves address family code 0. This document reserves
+ address family codes 32768-65535 for vendor-specific applications
+ (these are the codes with the first bit of the code value equal to
+ 1). Additional address families may be defined in the future.
+ Assignment of address family codes is controlled by IANA. See
+ Section 13 for IANA considerations.
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 25]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Application Protocol:
+ The application protocol gives the protocol for which this routing
+ table is maintained. The currently defined application protocols
+ are:
+
+ Code Protocol
+ 1 SIP
+ 2 H.323-H.225.0-Q.931
+ 3 H.323-H.225.0-RAS
+ 4 H.323-H.225.0-Annex-G
+
+ This document reserves application protocol code 0. This document
+ reserves application protocol codes 32768-65535 for vendor-specific
+ applications (these are the codes with the first bit of the code
+ value equal to 1). Additional application protocols may be defined
+ in the future. Assignment of application protocol codes is
+ controlled by IANA. See Section 13 for IANA considerations.
+
+ Length:
+ The length of the address field, in bytes.
+
+ Address:
+ This is an address (prefix) of the family type given by Address
+ Family. The octet length of the address is variable and is
+ determined by the length field of the route.
+
+5.1.1.2. Decimal Routing Numbers
+
+ The Decimal Routing Numbers address family is a super set of all
+ E.164 numbers, national numbers, local numbers, and private numbers.
+ It can also be used to represent the decimal routing numbers used in
+ conjunction with Number Portability in some countries/regions. A set
+ of telephone numbers is specified by a Decimal Routing Number prefix.
+ Decimal Routing Number prefixes are represented by a string of
+ digits, each digit encoded by its ASCII character representation.
+ This routing object covers all phone numbers starting with this
+ prefix. The syntax for the Decimal Routing Number prefix is:
+
+ Decimal-routing-number = *decimal-digit
+ decimal-digit = DECIMAL-DIGIT
+ DECIMAL-DIGIT = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
+
+ This DECIMAL Routing Number prefix is not bound in length. This
+ format is similar to the format for a global telephone number as
+ defined in SIP [8] without visual separators and without the "+"
+ prefix for international numbers. This format facilitates efficient
+ comparison when using TRIP to route SIP or H323, both of which use
+ character based representations of phone numbers. The prefix length
+
+
+
+Rosenberg, et. al. Standards Track [Page 26]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ is determined from the length field of the route. The type of
+ Decimal Routing Number (private, local, national, or international)
+ can be deduced from the first few digits of the prefix.
+
+5.1.1.3. PentaDecimal Routing Numbers
+
+ This address family is used to represent PentaDecimal Routing Numbers
+ used in conjunction with Number Portability in some
+ countries/regions. PentaDecimal Routing Number prefixes are
+ represented by a string of digits, each digit encoded by its ASCII
+ character representation. This routing object covers all routing
+ numbers starting with this prefix. The syntax for the PentaDecimal
+ Routing Number prefix is:
+
+ PentaDecimal-routing-number = *pentadecimal-digit
+ pentadecimal-routing-digit = PENTADECIMAL-DIGIT
+ PENTADECIMAL-DIGIT = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|
+ "8"|"9"|"A"|"B"|"C"|"D"|"E"
+
+ Note the difference in alphabets between Decimal Routing Numbers and
+ PentaDecimal Routing Numbers. A PentaDecimal Routing Number prefix
+ is not bound in length.
+
+ Note that the address family, which suits the routing numbers of a
+ specific country/region depends on the alphabets used for routing
+ numbers in that country/region. For example, North American routing
+ numbers SHOULD use the Decimal Routing Numbers address family,
+ because their alphabet is limited to the digits "0" through "9".
+ Another example, in most European countries routing numbers use the
+ alphabet "0" through "9" and "A" through "E", and hence these
+ countries SHOULD use the PentaDecimal Routing Numbers address family.
+
+5.1.1.4. E.164 Numbers
+
+ The E.164 Numbers address family is dedicated to fully qualified
+ E.164 numbers. A set of telephone numbers is specified by a E.164
+ prefix. E.164 prefixes are represented by a string of digits, each
+ digit encoded by its ASCII character representation. This routing
+ object covers all phone numbers starting with this prefix. The
+ syntax for the E.164 prefix is:
+
+ E164-number = *e164-digit
+ E164-digit = E164-DIGIT
+ E164-DIGIT = "0"|"1"|"2"|"3"|"4"|"5"|"6"|"7"|"8"|"9"
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 27]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ This format facilitates efficient comparison when using TRIP to route
+ SIP or H323, both of which use character based representations of
+ phone numbers. The prefix length is determined from the length field
+ of the route.
+
+ The E.164 Numbers address family and the Decimal Routing Numbers
+ address family have the same alphabet. The E.164 Numbers address
+ family SHOULD be used whenever possible. The Decimal Routing Numbers
+ address family can be used in case of private numbering plans or
+ applications that do not desire to advertise fully expanded, fully
+ qualified telephone numbers. If Decimal Routing Numbers are used to
+ advertise non-fully qualified prefixes, the prefixes may have to be
+ manipulated (e.g. expanded) at the boundary between ITADs. This adds
+ significant complexity to the ITAD-Border LS, because, it has to map
+ the prefixes from the format used in its own ITAD to the format used
+ in the peer ITAD.
+
+5.2. ReachableRoutes
+
+ Conditional Mandatory: False.
+ Required Flags: Well-known.
+ Potential Flags: Link-State Encapsulation (when flooding).
+ TRIP Type Code: 2
+
+ The ReachableRoutes attribute specifies a set of routes that are to
+ be added to service by the receiving LS(s). The set of routes MAY be
+ empty, as indicated by setting the length field to zero.
+
+5.2.1. Syntax of ReachableRoutes
+
+ The ReachableRoutes Attribute has the same syntax as the
+ WithdrawnRoutes Attribute. See Section 5.1.1.
+
+5.2.2. Route Origination and ReachableRoutes
+
+ Routes are injected into TRIP by a method outside the scope of this
+ specification. Possible methods include a front-end protocol, an
+ intra-domain routing protocol, or static configuration.
+
+5.2.3. Route Selection and ReachableRoutes
+
+ The routes in ReachableRoutes are necessary for route selection.
+
+5.2.4. Aggregation and ReachableRoutes
+
+ To aggregate multiple routes, the set of ReachableRoutes to be
+ aggregated MUST combine to form a less specific set.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 28]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ There is no mechanism within TRIP to communicate that a particular
+ address prefix is not used and thus that these addresses could be
+ skipped during aggregation. LSs MAY use methods outside of TRIP to
+ learn of invalid prefixes that may be ignored during aggregation.
+
+ If an LS advertises an aggregated route, it MUST include the
+ AtomicAggregate attribute.
+
+5.2.5. Route Dissemination and ReachableRoutes
+
+ The ReachableRoutes attribute is recomputed at each LS except where
+ flooding is being used (e.g., within a domain). It is therefore
+ possible for an LS to change the Application Protocol field of a
+ route before advertising that route to an external peer.
+
+ If an LS changes the Application Protocol of a route it advertises,
+ it MUST include the ConvertedRoute attribute in the UPDATE message.
+
+5.2.6. Aggregation Specifics for Decimal Routing Numbers, E.164 Numbers,
+ and PentaDecimal Routing Numbers
+
+ An LS that has routes to all valid numbers in a specific prefix
+ SHOULD advertise that prefix as the ReachableRoutes, even if there
+ are more specific prefixes that do not actually exist on the PSTN.
+ Generally, it takes 10 Decimal Routing/E.164 prefixes, or 15
+ PentaDecimal Routing prefixes, of length n to aggregate into a prefix
+ of length n-1. However, if an LS is aware that a prefix is an
+ invalid Decimal Routing/E.164 prefix, or PentaDecimal Routing prefix,
+ then the LS MAY aggregate by skipping this prefix. For example, if
+ the Decimal Routing prefix 19191 is known not to exist, then an LS
+ can aggregate to 1919 without 19191. A prefix representing an
+ invalid set of PSTN destinations is sometimes referred to as a
+ "black-hole." The method by which an LS is aware of black-holes is
+ not within the scope of TRIP, but if an LS has such knowledge, it can
+ use the knowledge when aggregating.
+
+5.3. NextHopServer
+
+ Conditional Mandatory: True (if ReachableRoutes and/or
+ WithdrawnRoutes attribute is present).
+ Required Flags: Well-known.
+ Potential Flags: None.
+ TRIP Type Code: 3.
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 29]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Given a route with application protocol A and destinations D, the
+ NextHopServer indicates to the next-hop that messages of protocol A
+ destined for D should be sent to it. This may or may not represent
+ the ultimate destination of those messages.
+
+5.3.1. NextHopServer Syntax
+
+ For generality, the address of the next-hop server may be of various
+ types (domain name, IPv4, IPv6, etc). The NextHopServer attribute
+ includes the ITAD number of next-hop server, a length field, and a
+ next-hop name or address.
+
+ The syntax for the NextHopServer is given in Figure 13.
+
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Next Hop ITAD |
+ +---------------+---------------+--------------+----------------+
+ | Length | Server (variable) ...
+ +---------------+---------------+--------------+----------------+
+
+ Figure 13: NextHopServer Syntax
+
+ The Next-Hop ITAD indicates the domain of the next-hop. Length field
+ gives the number of octets in the Server field, and the Server field
+ contains the name or address of the next-hop server. The server
+ field is represented as a string of ASCII characters. It is defined
+ as follows:
+
+ Server = host [":" port ]
+ host = < A legal Internet host domain name
+ or an IPv4 address using the textual representation
+ defined in Section 2.1 of RFC 1123 [9]
+ or an IPv6 address using the textual representation
+ defined in Section 2.2 of RFC 2373 [10]. The IPv6
+ address MUST be enclosed in "[" and "]"
+ characters.>
+ port = *DIGIT
+
+ If the port is empty or not given, the default port is assumed (e.g.,
+ port 5060 if the application protocol is SIP).
+
+5.3.2. Route Origination and NextHopServer
+
+ When an LS originates a routing object into TRIP, it MUST include a
+ NextHopServer within its domain. The NextHopServer could be an
+ address of the egress gateway or of a signaling proxy.
+
+
+
+Rosenberg, et. al. Standards Track [Page 30]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.3.3. Route Selection and NextHopServer
+
+ LS policy may prefer certain next-hops or next-hop domains over
+ others.
+
+5.3.4. Aggregation and NextHopServer
+
+ When aggregating multiple routing objects into a single routing
+ object, an LS MUST insert a new signaling server from within its
+ domain as the new NextHopServer unless all of the routes being
+ aggregated have the same next-hop.
+
+5.3.5. Route Dissemination and NextHopServer
+
+ When propagating routing objects to peers, an LS may choose to insert
+ a signaling proxy within its domain as the new next-hop, or it may
+ leave the next-hop unchanged. Inserting a new next-hop will cause
+ the signaling messages to be sent to that address, and will provide
+ finer control over the signaling path. Leaving the next-hop
+ unchanged will yield a more efficient signaling path (fewer hops).
+ It is a local policy decision of the LS to decide whether to
+ propagate or change the NextHopServer.
+
+5.4. AdvertisementPath
+
+ Conditional Mandatory: True (if ReachableRoutes and/or
+ WithdrawnRoutes attribute is present).
+ Required Flags: Well-known.
+ Potential Flags: None.
+ TRIP Type Code: 4.
+
+ This attribute identifies the ITADs through which routing information
+ carried in an advertisement has passed. The AdvertisementPath
+ attribute is analogous to the AS_PATH attribute in BGP. The
+ attributes differ in that BGP's AS_PATH also reflects the path to the
+ destination. In TRIP, not every domain need modify the next-hop, so
+ the AdvertisementPath may include many more hops than the actual path
+ to the destination. The RoutedPath attribute (Section 5.5) reflects
+ the actual signaling path to the destination.
+
+5.4.1. AdvertisementPath Syntax
+
+ AdvertisementPath is a variable length attribute that is composed of
+ a sequence of ITAD path segments. Each ITAD path segment is
+ represented by a type-length-value triple.
+
+ The path segment type is a 1-octet long field with the following
+ values defined:
+
+
+
+Rosenberg, et. al. Standards Track [Page 31]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Value Segment Type
+ 1 AP_SET: unordered set of ITADs a route in the
+ advertisement message has traversed
+ 2 AP_SEQUENCE: ordered set of ITADs a route in
+ the advertisement message has traversed
+
+ The path segment length is a 1-octet long field containing the number
+ of ITADs in the path segment value field.
+
+ The path segment value field contains one or more ITAD numbers, each
+ encoded as a 4-octets long field. ITAD numbers uniquely identify an
+ Internet Telephony Administrative Domain, and must be obtained from
+ IANA. See Section 13 for procedures to obtain an ITAD number from
+ IANA.
+
+5.4.2. Route Origination and AdvertisementPath
+
+ When an LS originates a route then:
+
+ - The originating LS shall include its own ITAD number in the
+ AdvertisementPath attribute of all advertisements sent to LSs
+ located in neighboring ITADs. In this case, the ITAD number of
+ the originating LS's ITAD will be the only entry in the
+ AdvertisementPath attribute.
+ - The originating LS shall include an empty AdvertisementPath
+ attribute in all advertisements sent to LSs located in its own
+ ITAD. An empty AdvertisementPath attribute is one whose length
+ field contains the value zero.
+
+5.4.3. Route Selection and AdvertisementPath
+
+ The AdvertisementPath may be used for route selection. Possible
+ criteria to be used are the number of hops on the path and the
+ presence or absence of particular ITADs on the path.
+
+ As discussed in Section 10, the AdvertisementPath is used to prevent
+ routing information from looping. If an LS receives a route with its
+ own ITAD already in the AdvertisementPath, the route MUST be
+ discarded.
+
+5.4.4. Aggregation and AdvertisementPath
+
+ The rules for aggregating AdvertisementPath attributes are given in
+ the following sections, where the term "path" used in Section 5.4.4.1
+ and 5.4.4.2 is understood to mean AdvertisementPath.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 32]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.4.4.1. Aggregating Routes with Identical Paths
+
+ If all routes to be aggregated have identical path attributes, then
+ the aggregated route has the same path attribute as the individual
+ routes.
+
+5.4.4.2. Aggregating Routes with Different Paths
+
+ For the purpose of aggregating path attributes we model each ITAD
+ within the path as a pair <type, value>, where "type" identifies a
+ type of the path segment (AP_SEQUENCE or AP_SET), and "value" is the
+ ITAD number. Two ITADs are said to be the same if their
+ corresponding <type, value> are the same.
+
+ If the routes to be aggregated have different path attributes, then
+ the aggregated path attribute shall satisfy all of the following
+ conditions:
+
+ - All pairs of the type AP_SEQUENCE in the aggregated path MUST
+ appear in all of the paths of routes to be aggregated.
+ - All pairs of the type AP_SET in the aggregated path MUST appear
+ in at least one of the paths of the initial set (they may
+ appear as either AP_SET or AP_SEQUENCE types).
+ - For any pair X of the type AP_SEQUENCE that precedes pair Y in
+ the aggregated path, X precedes Y in each path of the initial
+ set that contains Y, regardless of the type of Y.
+ - No pair with the same value shall appear more than once in the
+ aggregated path, regardless of the pair's type.
+
+ An implementation may choose any algorithm that conforms to these
+ rules. At a minimum, a conformant implementation MUST be able to
+ perform the following algorithm that meets all of the above
+ conditions:
+
+ - Determine the longest leading sequence of tuples (as defined
+ above) common to all the paths of the routes to be aggregated.
+ Make this sequence the leading sequence of the aggregated path.
+ - Set the type of the rest of the tuples from the paths of the
+ routes to be aggregated to AP_SET, and append them to the
+ aggregated path.
+ - If the aggregated path has more than one tuple with the same
+ value (regardless of tuple's type), eliminate all but one such
+ tuple by deleting tuples of the type AP_SET from the aggregated
+ path.
+
+ An implementation that chooses to provide a path aggregation
+ algorithm that retains significant amounts of path information may
+ wish to use the procedure of Section 5.4.4.3.
+
+
+
+Rosenberg, et. al. Standards Track [Page 33]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.4.4.3. Example Path Aggregation Algorithm
+
+ An example algorithm to aggregate two paths works as follows:
+
+ - Identify the ITADs (as defined in Section 5.4.1) within each
+ path attribute that are in the same relative order within both
+ path attributes. Two ITADs, X and Y, are said to be in the
+ same order if either X precedes Y in both paths, or if Y
+ precedes X in both paths.
+ - The aggregated path consists of ITADs identified in (a) in
+ exactly the same order as they appear in the paths to be
+ aggregated. If two consecutive ITADs identified in (a) do not
+ immediately follow each other in both of the paths to be
+ aggregated, then the intervening ITADs (ITADs that are between
+ the two consecutive ITADs that are the same) in both attributes
+ are combined into an AP_SET path segment that consists of the
+ intervening ITADs from both paths; this segment is then placed
+ in between the two consecutive ITADs identified in (a) of the
+ aggregated attribute. If two consecutive ITADs identified in
+ (a) immediately follow each other in one attribute, but do not
+ follow in another, then the intervening ITADs of the latter are
+ combined into an AP_SET path segment; this segment is then
+ placed in between the two consecutive ITADs identified in (a)
+ of the aggregated path.
+
+ If as a result of the above procedure a given ITAD number appears
+ more than once within the aggregated path, all but the last instance
+ (rightmost occurrence) of that ITAD number should be removed from the
+ aggregated path.
+
+5.4.5. Route Dissemination and AdvertisementPath
+
+ When an LS propagates a route which it has learned from another LS,
+ it shall modify the route's AdvertisementPath attribute based on the
+ location of the LS to which the route will be sent.
+
+ - When a LS advertises a route to another LS located in its own
+ ITAD, the advertising LS MUST NOT modify the AdvertisementPath
+ attribute associated with the route.
+ - When a LS advertises a route to an LS located in a neighboring
+ ITAD, then the advertising LS MUST update the AdvertisementPath
+ attribute as follows:
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 34]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ * If the first path segment of the AdvertisementPath is of
+ type AP_SEQUENCE, the local system shall prepend its own
+ ITAD number as the last element of the sequence (put it in
+ the leftmost position).
+
+ * If the first path segment of the AdvertisementPath is of
+ type AP_SET, the local system shall prepend a new path
+ segment of type AP_SEQUENCE to the AdvertisementPath,
+ including its own ITAD number in that segment.
+
+5.5. RoutedPath
+
+ Conditional Mandatory: True
+ (if ReachableRoutes attribute is present).
+ Required Flags: Well-known.
+ Potential Flags: None.
+ TRIP Type Code: 5.
+
+ This attribute identifies the ITADs through which messages sent using
+ this route would pass. The ITADs in this path are a subset of those
+ in the AdvertisementPath.
+
+5.5.1. RoutedPath Syntax
+
+ The syntax of the RoutedPath attribute is the same as that of the
+ AdvertisementPath attribute. See Section 5.4.1.
+
+5.5.2. Route Origination and RoutedPath
+
+ When an LS originates a route it MUST include the RoutedPath
+ attribute.
+
+ - The originating LS shall include its own ITAD number in the
+ RoutedPath attribute of all advertisements sent to LSs located
+ in neighboring ITADs. In this case, the ITAD number of the
+ originating LS's ITAD will be the only entry in the RoutedPath
+ attribute.
+ - The originating LS shall include an empty RoutedPath attribute
+ in all advertisements sent to LSs located in its own ITAD. An
+ empty RoutedPath attribute is one whose length field contains
+ the value zero.
+
+5.5.3. Route Selection and RoutedPath
+
+ The RoutedPath MAY be used for route selection, and in most cases is
+ preferred over the AdvertisementPath for this role. Some possible
+ criteria to be used are the number of hops on the path and the
+ presence or absence of particular ITADs on the path.
+
+
+
+Rosenberg, et. al. Standards Track [Page 35]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.5.4. Aggregation and RoutedPath
+
+ The rules for aggregating RoutedPath attributes are given in Section
+ 5.4.4.1 and 5.4.4.2, where the term "path" used in Section 5.4.4.1
+ and 5.4.4.2 is understood to mean RoutedPath.
+
+5.5.5. Route Dissemination and RoutedPath
+
+ When an LS propagates a route that it learned from another LS, it
+ modifies the route's RoutedPath attribute based on the location of
+ the LS to which the route is sent.
+
+ - When an LS advertises a route to another LS located in its own
+ ITAD, the advertising LS MUST NOT modify the RoutedPath
+ attribute associated with the route.
+ - If the LS has not changed the NextHopServer attribute, then the
+ LS MUST NOT change the RoutedPath attribute.
+ - Otherwise, the LS changed the NextHopServer and is advertising
+ the route to an LS in another ITAD. The advertising LS MUST
+ update the RoutedPath attribute as follows:
+
+ * If the first path segment of the RoutedPath is of type
+ AP_SEQUENCE, the local system shall prepend its own ITAD
+ number as the last element of the sequence (put it in the
+ leftmost position).
+
+ * If the first path segment of the RoutedPath is of type
+ AP_SET, the local system shall prepend a new path segment of
+ type AP_SEQUENCE to the RoutedPath, including its own ITAD
+ number in that segment.
+
+5.6. AtomicAggregate
+
+ Conditional Mandatory: False.
+ Required Flags: Well-known.
+ Potential Flags: None.
+ TRIP Type Code: 6.
+
+ The AtomicAggregate attribute indicates that a route may traverse
+ domains not listed in the RoutedPath. If an LS, when presented with
+ a set of overlapping routes from a peer LS, selects the less specific
+ route without selecting the more specific route, then the LS includes
+ the AtomicAggregate attribute with the routing object.
+
+5.6.1. AtomicAggregate Syntax
+
+ This attribute has length zero (0); the value field is empty.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 36]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.6.2. Route Origination and AtomicAggregate
+
+ Routes are never originated with the AtomicAggregate attribute.
+
+5.6.3. Route Selection and AtomicAggregate
+
+ The AtomicAggregate attribute may be used in route selection - it
+ indicates that the RoutedPath may be incomplete.
+
+5.6.4. Aggregation and AtomicAggregate
+
+ If any of the routes to aggregate has the AtomicAggregate attribute,
+ then so MUST the resultant aggregate.
+
+5.6.5. Route Dissemination and AtomicAggregate
+
+ If an LS, when presented with a set of overlapping routes from a peer
+ LS, selects the less specific route (see Section 0) without selecting
+ the more specific route, then the LS MUST include the AtomicAggregate
+ attribute with the routing object (if it is not already present).
+
+ An LS receiving a routing object with an AtomicAggregate attribute
+ MUST NOT make the set of destinations more specific when advertising
+ it to other LSs, and MUST NOT remove the attribute when propagating
+ this object to a peer LS.
+
+5.7. LocalPreference
+
+ Conditional Mandatory: False.
+ Required Flags: Well-known.
+ Potential Flags: None.
+ TRIP Type Code: 7.
+
+ The LocalPreference attribute is only used intra-domain, it indicates
+ the local LS's preference for the routing object to other LSs within
+ the same domain. This attribute MUST NOT be included when
+ communicating to an LS in another domain, and MUST be included over
+ intra-domain links.
+
+5.7.1. LocalPreference Syntax
+
+ The LocalPreference attribute is a 4-octet unsigned numeric value. A
+ higher value indicates a higher preference.
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 37]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.7.2. Route Origination and LocalPreference
+
+ Routes MUST NOT be originated with the LocalPreference attribute to
+ inter-domain peers. Routes to intra-domain peers MUST be originated
+ with the LocalPreference attribute.
+
+5.7.3. Route Selection and LocalPreference
+
+ The LocalPreference attribute allows one LS in a domain to calculate
+ a preference for a route, and to communicate this preference to other
+ LSs within the domain.
+
+5.7.4. Aggregation and LocalPreference
+
+ The LocalPreference attribute is not affected by aggregation.
+
+5.7.5. Route Dissemination and LocalPreference
+
+ An LS MUST include the LocalPreference attribute when communicating
+ with peer LSs within its own domain. An LS MUST NOT include the
+ LocalPreference attribute when communicating with LSs in other
+ domains. LocalPreference attributes received from inter-domain peers
+ MUST be ignored.
+
+5.8. MultiExitDisc
+
+ Conditional Mandatory: False.
+ Required Flags: Well-known.
+ Potential Flags: None.
+ TRIP Type Code: 8.
+
+ When two ITADs are connected by more than one set of peers, the
+ MultiExitDisc attribute may be used to specify preferences for routes
+ received over one of those links versus routes received over other
+ links. The MultiExitDisc parameter is used only for route selection.
+
+5.8.1. MultiExitDisc Syntax
+
+ The MultiExitDisc attribute carries a 4-octet unsigned numeric value.
+ A higher value represents a more preferred routing object.
+
+5.8.2. Route Origination and MultiExitDisc
+
+ Routes originated to intra-domain peers MUST NOT be originated with
+ the MultiExitDisc attribute. When originating a route to an inter-
+ domain peer, the MultiExitDisc attribute may be included.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 38]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.8.3. Route Selection and MultiExitDisc
+
+ The MultiExitDisc attribute is used to express a preference when
+ there are multiple links between two domains. If all other factors
+ are equal, then a route with a higher MultiExitDisc attribute is
+ preferred over a route with a lower MultiExitDisc attribute.
+
+5.8.4. Aggregation and MultiExitDisc
+
+ Routes with differing MultiExitDisc parameters MUST NOT be
+ aggregated. Routes with the same value in the MultiExitDisc
+ attribute MAY be aggregated and the same MultiExitDisc attribute
+ attached to the aggregated object.
+
+5.8.5. Route Dissemination and MultiExitDisc
+
+ If received from a peer LS in another domain, an LS MAY propagate the
+ MultiExitDisc to other LSs within its domain. The MultiExitDisc
+ attribute MUST NOT be propagated to LSs in other domains.
+
+ An LS may add the MultiExitDisc attribute when propagating routing
+ objects to an LS in another domain. The inclusion of the
+ MultiExitDisc attribute is a matter of policy, as is the value of the
+ attribute.
+
+5.9. Communities
+
+ Conditional Mandatory: False.
+ Required Flags: Not Well-Known, Independent Transitive.
+ Potential Flags: None.
+ TRIP Type Code: 9.
+
+ A community is a group of destinations that share some common
+ property.
+
+ The Communities attribute is used to group destinations so that the
+ routing decision can be based on the identity of the group. Using
+ the Communities attribute should significantly simplify the
+ distribution of routing information by providing an administratively
+ defined aggregation unit.
+
+ Each ITAD administrator may define the communities to which a
+ particular route belongs. By default, all routes belong to the
+ general Internet Telephony community.
+
+ As an example, the Communities attribute could be used to define an
+ alliance between a group of Internet Telephony service providers for
+ a specific subset of routing information. In this case, members of
+
+
+
+Rosenberg, et. al. Standards Track [Page 39]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ that alliance would accept only routes for destinations in this group
+ that are advertised by other members of the alliance. Other
+ destinations would be more freely accepted. To achieve this, a
+ member would tag each route with a designated Community attribute
+ value before disseminating it. This relieves the members of such an
+ alliance, from the responsibility of keeping track of the identities
+ of all other members of that alliance.
+
+ Another example use of the Communities attribute is with aggregation.
+ It is often useful to advertise both the aggregate route and the
+ component more-specific routes that were used to form the aggregate.
+ These information components are only useful to the neighboring TRIP
+ peer, and perhaps the ITAD of the neighboring TRIP peer, so it is
+ desirable to filter out the component routes. This can be achieved
+ by specifying a Community attribute value that the neighboring peers
+ will match and filter on. That way it can be assured that the more
+ specific routes will not propagate beyond their desired scope.
+
+5.9.1. Syntax of Communities
+
+ The Communities attribute is of variable length. It consists of a
+ set of 8-octet values, each of which specifies a community. The
+ first 4 octets of the Community value are the Community ITAD Number
+ and the next 4 octets are the Community ID.
+
+ 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
+ +---------------+---------------+--------------+----------------+
+ | Community ITAD Number 1 |
+ +---------------+---------------+--------------+----------------+
+ | Community ID 1 |
+ +---------------+---------------+--------------+----------------+
+ | . . . . . . . . .
+ +---------------+---------------+--------------+----------------+
+
+ Figure 14: Communities Syntax
+
+ For administrative assignment, the following assumptions may be made:
+
+ The Community attribute values starting with a Community ITAD
+ Number of 0x00000000 are hereby reserved.
+
+ The following communities have global significance and their
+ operation MUST be implemented in any Community attribute-aware TRIP
+ LS.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 40]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ - NO_EXPORT (Community ITAD Number = 0x00000000 and Community ID
+ = 0xFFFFFF01). Any received route with a community attribute
+ containing this value MUST NOT be advertised outside of the
+ receiving TRIP ITAD.
+
+ Other community values MUST be encoded using an ITAD number in the
+ four most significant octets. The semantics of the final four octets
+ (the Community ID octets) may be defined by the ITAD (e.g., ITAD 690
+ may define research, educational, and commercial community IDs that
+ may be used for policy routing as defined by the operators of that
+ ITAD).
+
+5.9.2. Route Origination and Communities
+
+ The Communities attribute is not well-known. If a route has a
+ Communities attribute associated with it, the LS MUST include that
+ attribute in the advertisement it originates.
+
+5.9.3. Route Selection and Communities
+
+ The Communities attribute may be used for route selection. A route
+ that is a member of a certain community may be preferred over another
+ route that is not a member of that community. Likewise, routes
+ without a certain community value may be excluded from consideration.
+
+5.9.4. Aggregation and Communities
+
+ If a set of routes is to be aggregated and the resultant aggregate
+ does not carry an Atomic_Aggregate attribute, then the resulting
+ aggregate should have a Communities attribute that contains the union
+ of the Community attributes of the aggregated routes.
+
+5.9.5. Route Dissemination and Communities
+
+ An LS may manipulate the Communities attribute before disseminating a
+ route to a peer. Community attribute manipulation may include adding
+ communities, removing communities, adding a Communities attribute (if
+ none exists), deleting the Communities attribute, etc.
+
+5.10. ITAD Topology
+
+ Conditional Mandatory: False.
+ Required Flags: Well-known, Link-State encapsulated.
+ Potential Flags: None.
+ TRIP Type Code: 10.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 41]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Within an ITAD, each LS must know the status of other LSs so that LS
+ failure can be detected. To do this, each LS advertises its internal
+ topology to other LSs within the domain. When an LS detects that
+ another LS is no longer active, the information sourced by that LS
+ can be deleted (the Adj-TRIB-In for that peer may be cleared). The
+ ITAD Topology attribute is used to communicate this information to
+ other LSs within the domain.
+
+ An LS MUST send a topology update each time it detects a change in
+ its internal peer set. The topology update may be sent in an UPDATE
+ message by itself or it may be piggybacked on an UPDATE message which
+ includes ReachableRoutes and/or WithdrawnRoutes information.
+
+ When an LS receives a topology update from an internal LS, it MUST
+ recalculate which LSs are active within the ITAD via a connectivity
+ algorithm on the topology.
+
+5.10.1. ITAD Topology Syntax
+
+ The ITAD Topology attribute indicates the LSs with which the LS is
+ currently peering. The attribute consists of a list of the TRIP
+ Identifiers with which the LS is currently peering, the format is
+ given in Figure 15. This attribute MUST use the link-state
+ encapsulation as defined in Section 4.3.2.4.
+
+ 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
+ +---------------+---------------+--------------+----------------+
+ | TRIP Identifier 1 |
+ +---------------+---------------+--------------+----------------+
+ | TRIP Identifier 2 ... |
+ +---------------+---------------+--------------+----------------+
+
+ Figure 15: ITAD Topology Syntax
+
+5.10.2. Route Origination and ITAD Topology
+
+ The ITAD Topology attribute is independent of any routes in the
+ UPDATE. Whenever the set of internal peers of an LS changes, it MUST
+ create an UPDATE with the ITAD Topology Attribute included listing
+ the current set of internal peers. The LS MUST include this
+ attribute in the first UPDATE it sends to a peer after the peering
+ session is established.
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 42]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.10.3. Route Selection and ITAD Topology
+
+ This attribute is independent of any routing information in the
+ UPDATE. When an LS receives an UPDATE with an ITAD Topology
+ attribute, it MUST compute the set of LSs currently active in the
+ domain by performing a connectivity test on the ITAD topology as
+ given by the set of originated ITAD Topology attributes. The LS MUST
+ locally purge the Adj-TRIB-In for any LS that is no longer active in
+ the domain. The LS MUST NOT propagate this purging information to
+ other LSs as they will make a similar decision.
+
+5.10.4. Aggregation and ITAD Topology
+
+ This information is not aggregated.
+
+5.10.5. Route Dissemination and ITAD Topology
+
+ An LS MUST ignore the attribute if received from a peer in another
+ domain. An LS MUST NOT send this attribute to an inter-domain peer.
+
+5.11. ConvertedRoute
+
+ Conditional Mandatory: False.
+ Required Flags: Well-known.
+ Potential Flags: None.
+ TRIP Type Code: 12.
+
+ The ConvertedRoute attribute indicates that an intermediate LS has
+ altered the route by changing the route's Application Protocol. For
+ example, if an LS receives a route with Application Protocol X and
+ changes the Application Protocol to Y before advertising the route to
+ an external peer, the LS MUST include the ConvertedRoute attribute.
+ The attribute is an indication that the advertised application
+ protocol will not be used end-to-end, i.e., the information
+ advertised about this route is not complete.
+
+5.11.1. ConvertedRoute Syntax
+
+ This attribute has length zero (0); the value field is empty.
+
+5.11.2. Route Origination and ConvertedRoute
+
+ Routes are never originated with the ConvertedRoute attribute.
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 43]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+5.11.3. Route Selection and ConvertedRoute
+
+ The ConvertedRoute attribute may be used in route selection - it
+ indicates that advertised routing information is not complete.
+
+5.11.4. Aggregation and ConvertedRoute
+
+ If any of the routes to aggregate has the ConvertedRoute attribute,
+ then so MUST the resultant aggregate.
+
+5.11.5. Route Dissemination and ConvertedRoute
+
+ If an LS changes the Application Protocol of a route before
+ advertising the route to an external peer, the LS MUST include the
+ ConvertedRoute attribute.
+
+5.12. Considerations for Defining New TRIP Attributes
+
+ Any proposal for defining new TRIP attributes should specify the
+ following:
+
+ - the use of this attribute,
+ - the attribute's flags,
+ - the attribute's syntax,
+ - how the attribute works with route origination,
+ - how the attribute works with route aggregation, and
+ - how the attribute works with route dissemination and the
+ attribute's scope (e.g., intra-domain only like
+ LocalPreference)
+
+ IANA will manage the assignment of TRIP attribute type codes to new
+ attributes.
+
+6. TRIP Error Detection and Handling
+
+ This section describes errors to be detected and the actions to be
+ taken while processing TRIP messages.
+
+ When any of the conditions described here are detected, a
+ NOTIFICATION message with the indicated Error Code, Error Subcode,
+ and Data fields MUST be sent, and the TRIP connection MUST be closed.
+ If no Error Subcode is specified, then a zero Subcode MUST be used.
+
+ The phrase "the TRIP connection is closed" means that the transport
+ protocol connection has been closed and that all resources for that
+ TRIP connection have been de-allocated. If the connection was
+ inter-domain, then routing table entries associated with the remote
+ peer MUST be marked as invalid. Routing table entries MUST NOT be
+
+
+
+Rosenberg, et. al. Standards Track [Page 44]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ marked as invalid if an internal peering session is terminated. The
+ fact that the routes have been marked as invalid is passed to other
+ TRIP peers before the routes are deleted from the system.
+
+ Unless specified explicitly, the Data field of the NOTIFICATION
+ message that is sent to indicate an error MUST be empty.
+
+6.1. Message Header Error Detection and Handling
+
+ All errors detected while processing the Message Header are indicated
+ by sending the NOTIFICATION message with the Error Code Message
+ Header Error. The Error Subcode elaborates on the specific nature of
+ the error. The error checks in this section MUST be performed by
+ each LS upon receipt of every message.
+
+ If the Length field of the message header is less than 3 or greater
+ than 4096, or if the Length field of an OPEN message is less than the
+ minimum length of the OPEN message, or if the Length field of an
+ UPDATE message is less than the minimum length of the UPDATE message,
+ or if the Length field of a KEEPALIVE message is not equal to 3, or
+ if the Length field of a NOTIFICATION message is less than the
+ minimum length of the NOTIFICATION message, then the Error Subcode
+ MUST be set to Bad Message Length. The Data field contains the
+ erroneous Length field.
+
+ If the Type field of the message header is not recognized, then the
+ Error Subcode MUST be set to "Bad Message Type." The Data field
+ contains the erroneous Type field.
+
+6.2. OPEN Message Error Detection and Handling
+
+ All errors detected while processing the OPEN message are indicated
+ by sending the NOTIFICATION message with the Error Code "OPEN Message
+ Error." The Error Subcode elaborates on the specific nature of the
+ error. The error checks in this section MUST be performed by each LS
+ upon receipt of every OPEN message.
+
+ If the version number contained in the Version field of the received
+ OPEN message is not supported, then the Error Subcode MUST be set to
+ "Unsupported Version Number." The Data field is a 1-octet unsigned
+ integer, which indicates the largest locally supported version
+ number, which is less than the version of the remote TRIP peer bid
+ (as indicated in the received OPEN message).
+
+ If the ITAD field of the OPEN message is unacceptable, then the Error
+ Subcode MUST be set to "Bad Peer ITAD." The determination of
+ acceptable ITAD numbers is outside the scope of this protocol.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 45]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ If the Hold Time field of the OPEN message is unacceptable, then the
+ Error Subcode MUST be set to "Unacceptable Hold Time." An
+ implementation MUST reject Hold Time values of one or two seconds.
+ An implementation MAY reject any proposed Hold Time. An
+ implementation that accepts a Hold Time MUST use the negotiated value
+ for the Hold Time.
+
+ If the TRIP Identifier field of the OPEN message is not valid, then
+ the Error Subcode MUST be set to "Bad TRIP Identifier." A TRIP
+ identifier is 4-octets in length and can take any value. An LS
+ considers the TRIP Identifier invalid if it already has an open
+ connection with another peer LS that has the same ITAD and TRIP
+ Identifier.
+
+ Any two LSs within the same ITAD MUST NOT have equal TRIP Identifier
+ values. This restriction does not apply to LSs in different ITADs
+ since the purpose is to uniquely identify an LS using its TRIP
+ Identifier and its ITAD number.
+
+ If one of the Optional Parameters in the OPEN message is not
+ recognized, then the Error Subcode MUST be set to "Unsupported
+ Optional Parameters."
+
+ If the Optional Parameters of the OPEN message include Capability
+ Information with an unsupported capability (unsupported in either
+ capability type or value), then the Error Subcode MUST be set to
+ "Unsupported Capability," and the entirety of the unsupported
+ capabilities MUST be listed in the Data field of the NOTIFICATION
+ message.
+
+ If the Optional Parameters of the OPEN message include Capability
+ Information which does not match the receiving LS's capabilities,
+ then the Error Subcode MUST be set to "Capability Mismatch," and the
+ entirety of the mismatched capabilities MUST be listed in the Data
+ field of the NOTIFICATION message.
+
+6.3. UPDATE Message Error Detection and Handling
+
+ All errors detected while processing the UPDATE message are indicated
+ by sending the NOTIFICATION message with the Error Code "UPDATE
+ Message Error." The Error Subcode elaborates on the specific nature
+ of the error. The error checks in this section MUST be performed by
+ each LS upon receipt of every UPDATE message. These error checks
+ MUST occur before flooding procedures are invoked with internal
+ peers.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 46]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ If any recognized attribute has Attribute Flags that conflict with
+ the Attribute Type Code, then the Error Subcode MUST be set to
+ "Attribute Flags Error." The Data field contains the erroneous
+ attribute (type, length and value).
+
+ If any recognized attribute has an Attribute Length that conflicts
+ with the expected length (based on the attribute type code), then the
+ Error Subcode MUST be set to "Attribute Length Error." The Data
+ field contains the erroneous attribute (type, length and value).
+
+ If any of the mandatory (i.e., conditional mandatory attribute and
+ the conditions for including it in the UPDATE message are fulfilled)
+ well-known attributes are not present, then the Error Subcode MUST be
+ set to "Missing Well-known Mandatory Attribute." The Data field
+ contains the Attribute Type Code of the missing well-known
+ conditional mandatory attributes.
+
+ If any of the well-known attributes are not recognized, then the
+ Error Subcode MUST be set to "Unrecognized Well-known Attribute."
+ The Data field contains the unrecognized attribute (type, length and
+ value).
+
+ If any attribute has a syntactically incorrect value, or an undefined
+ value, then the Error Subcode is set to "Invalid Attribute." The
+ Data field contains the incorrect attribute (type, length and value).
+ Such a NOTIFICATION message is sent, for example, when a
+ NextHopServer attribute is received with an invalid address.
+
+ The information carried by the AdvertisementPath attribute is checked
+ for ITAD loops. ITAD loop detection is done by scanning the full
+ AdvertisementPath, and checking that the ITAD number of the local
+ ITAD does not appear in the AdvertisementPath. If the local ITAD
+ number appears in the AdvertisementPath, then the route MAY be stored
+ in the Adj-TRIB-In. However unless the LS is configured to accept
+ routes with its own ITAD in the advertisement path, the route MUST
+ not be passed to the TRIP Decision Process. The operation of an LS
+ that is configured to accept routes with its own ITAD number in the
+ advertisement path are outside the scope of this document.
+
+ If the UPDATE message was received from an internal peer and either
+ the WithdrawnRoutes, ReachableRoutes, or ITAD Topology attribute does
+ not have the Link-State Encapsulation flag set, then the Error
+ Subcode is set to "Invalid Attribute" and the data field contains the
+ attribute. Likewise, the attribute is invalid if received from an
+ external peer and the Link-State Flag is set.
+
+ If any attribute appears more than once in the UPDATE message, then
+ the Error Subcode is set to "Malformed Attribute List."
+
+
+
+Rosenberg, et. al. Standards Track [Page 47]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+6.4. NOTIFICATION Message Error Detection and Handling
+
+ If a peer sends a NOTIFICATION message, and there is an error in that
+ message, there is unfortunately no means of reporting this error via
+ a subsequent NOTIFICATION message. Any such error, such as an
+ unrecognized Error Code or Error Subcode, should be noticed, logged
+ locally, and brought to the attention of the administration of the
+ peer. The means to do this, however, are outside the scope of this
+ document.
+
+6.5. Hold Timer Expired Error Handling
+
+ If a system does not receive successive messages within the period
+ specified by the negotiated Hold Time, then a NOTIFICATION message
+ with a "Hold Timer Expired" Error Code MUST be sent and the TRIP
+ connection MUST be closed.
+
+6.6. Finite State Machine Error Handling
+
+ An error detected by the TRIP Finite State Machine (e.g., receipt of
+ an unexpected event) MUST result in sending a NOTIFICATION message
+ with the Error Code "Finite State Machine Error" and the TRIP
+ connection MUST be closed.
+
+6.7. Cease
+
+ In the absence of any fatal errors (that are indicated in this
+ section), a TRIP peer MAY choose at any given time to close its TRIP
+ connection by sending the NOTIFICATION message with the Error Code
+ "Cease." However, the Cease NOTIFICATION message MUST NOT be used
+ when a fatal error indicated by this section exists.
+
+6.8. Connection Collision Detection
+
+ If a pair of LSs try simultaneously to establish a transport
+ connection to each other, then two parallel connections between this
+ pair of speakers might well be formed. We refer to this situation as
+ connection collision. Clearly, one of these connections must be
+ closed.
+
+ Based on the value of the TRIP Identifier, a convention is
+ established for detecting which TRIP connection is to be preserved
+ when a collision occurs. The convention is to compare the TRIP
+ Identifiers of the peers involved in the collision and to retain only
+ the connection initiated by the LS with the higher-valued TRIP
+ Identifier.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 48]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Upon receipt of an OPEN message, the local LS MUST examine all of its
+ connections that are in the OpenConfirm state. An LS MAY also
+ examine connections in an OpenSent state if it knows the TRIP
+ Identifier of the peer by means outside of the protocol. If among
+ these connections there is a connection to a remote LS, whose TRIP
+ Identifier equals the one in the OPEN message, then the local LS MUST
+ perform the following collision resolution procedure:
+
+ The TRIP Identifier and ITAD of the local LS is compared to the TRIP
+ Identifier and ITAD of the remote LS (as specified in the OPEN
+ message). TRIP Identifiers are treated as 4-octet unsigned integers
+ for comparison.
+
+ If the value of the local TRIP Identifier is less than the remote
+ one, or if the two TRIP Identifiers are equal and the value of the
+ ITAD of the local LS is less than value of the ITAD of the remote LS,
+ then the local LS MUST close the TRIP connection that already exists
+ (the one that is already in the OpenConfirm state), and accept the
+ TRIP connection initiated by the remote LS:
+
+ 1. Otherwise, the local LS closes the newly created TRIP
+ connection and continues to use the existing one (the one that
+ is already in the OpenConfirm state).
+ 2. If a connection collision occurs with an existing TRIP
+ connection that is in the Established state, then the LS MUST
+ unconditionally close off the newly created connection. Note
+ that a connection collision cannot be detected with connections
+ in Idle, Connect, or Active states.
+ 3. To close the TRIP connection (that results from the collision
+ resolution procedure), an LS MUST send a NOTIFICATION message
+ with the Error Code "Cease" and the TRIP connection MUST be
+ closed.
+
+7. TRIP Version Negotiation
+
+ Peer LSs may negotiate the version of the protocol by making multiple
+ attempts to open a TRIP connection, starting with the highest version
+ number each supports. If an open attempt fails with an Error Code
+ "OPEN Message Error" and an Error Subcode "Unsupported Version
+ Number," then the LS has available the version number it tried, the
+ version number its peer tried, the version number passed by its peer
+ in the NOTIFICATION message, and the version numbers that it
+ supports. If the two peers support one or more common versions, then
+ this will allow them to rapidly determine the highest common version.
+ In order to support TRIP version negotiation, future versions of TRIP
+ must retain the format of the OPEN and NOTIFICATION messages.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 49]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+8. TRIP Capability Negotiation
+
+ An LS MAY include the Capabilities Option in its OPEN message to a
+ peer to indicate the capabilities supported by the LS. An LS
+ receiving an OPEN message MUST NOT use any capabilities that were not
+ included in the OPEN message of the peer when communicating with that
+ peer.
+
+9. TRIP Finite State Machine
+
+ This section specifies TRIP operation in terms of a Finite State
+ Machine (FSM). Following is a brief summary and overview of TRIP
+ operations by state as determined by this FSM. A condensed version
+ of the TRIP FSM is found in Appendix 1. There is one TRIP FSM per
+ peer and these FSMs operate independently.
+
+ Idle state:
+ Initially TRIP is in the Idle state for each peer. In this state,
+ TRIP refuses all incoming connections. No resources are allocated to
+ the peer. In response to the Start event (initiated by either the
+ system or the operator), the local system initializes all TRIP
+ resources, starts the ConnectRetry timer, initiates a transport
+ connection to the peer, starts listening for a connection that may be
+ initiated by the remote TRIP peer, and changes its state to Connect.
+ The exact value of the ConnectRetry timer is a local matter, but
+ should be sufficiently large to allow TCP initialization.
+
+ If an LS detects an error, it closes the transport connection and
+ changes its state to Idle. Transitioning from the Idle state
+ requires generation of the Start event. If such an event is
+ generated automatically, then persistent TRIP errors may result in
+ persistent flapping of the LS. To avoid such a condition, Start
+ events MUST NOT be generated immediately for a peer that was
+ previously transitioned to Idle due to an error. For a peer that was
+ previously transitioned to Idle due to an error, the time between
+ consecutive Start events, if such events are generated automatically,
+ MUST exponentially increase. The value of the initial timer SHOULD
+ be 60 seconds, and the time SHOULD be at least doubled for each
+ consecutive retry up to some maximum value.
+
+ Any other event received in the Idle state is ignored.
+
+ Connect State:
+ In this state, an LS is waiting for a transport protocol connection
+ to be completed to the peer, and is listening for inbound transport
+ connections from the peer.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 50]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ If the transport protocol connection succeeds, the local LS clears
+ the ConnectRetry timer, completes initialization, sends an OPEN
+ message to its peer, sets its Hold Timer to a large value, and
+ changes its state to OpenSent. A Hold Timer value of 4 minutes is
+ suggested.
+
+ If the transport protocol connect fails (e.g., retransmission
+ timeout), the local system restarts the ConnectRetry timer, continues
+ to listen for a connection that may be initiated by the remote LS,
+ and changes its state to Active state.
+
+ In response to the ConnectRetry timer expired event, the local LS
+ cancels any outstanding transport connection to the peer, restarts
+ the ConnectRetry timer, initiates a transport connection to the
+ remote LS, continues to listen for a connection that may be initiated
+ by the remote LS, and stays in the Connect state.
+
+ If the local LS detects that a remote peer is trying to establish a
+ connection to it and the IP address of the peer is not an expected
+ one, then the local LS rejects the attempted connection and continues
+ to listen for a connection from its expected peers without changing
+ state.
+
+ If an inbound transport protocol connection succeeds, the local LS
+ clears the ConnectRetry timer, completes initialization, sends an
+ OPEN message to its peer, sets its Hold Timer to a large value, and
+ changes its state to OpenSent. A Hold Timer value of 4 minutes is
+ suggested.
+
+ The Start event is ignored in the Connect state.
+
+ In response to any other event (initiated by either the system or the
+ operator), the local system releases all TRIP resources associated
+ with this connection and changes its state to Idle.
+
+ Active state:
+ In this state, an LS is listening for an inbound connection from the
+ peer, but is not in the process of initiating a connection to the
+ peer.
+
+ If an inbound transport protocol connection succeeds, the local LS
+ clears the ConnectRetry timer, completes initialization, sends an
+ OPEN message to its peer, sets its Hold Timer to a large value, and
+ changes its state to OpenSent. A Hold Timer value of 4 minutes is
+ suggested.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 51]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ In response to the ConnectRetry timer expired event, the local system
+ restarts the ConnectRetry timer, initiates a transport connection to
+ the TRIP peer, continues to listen for a connection that may be
+ initiated by the remote TRIP peer, and changes its state to Connect.
+
+ If the local LS detects that a remote peer is trying to establish a
+ connection to it and the IP address of the peer is not an expected
+ one, then the local LS rejects the attempted connection and continues
+ to listen for a connection from its expected peers without changing
+ state.
+
+ Start event is ignored in the Active state.
+
+ In response to any other event (initiated by either the system or the
+ operator), the local system releases all TRIP resources associated
+ with this connection and changes its state to Idle.
+
+ OpenSent state:
+ In this state, an LS has sent an OPEN message to its peer and is
+ waiting for an OPEN message from its peer. When an OPEN message is
+ received, all fields are checked for correctness. If the TRIP
+ message header checking or OPEN message checking detects an error
+ (see Section 6.2) or a connection collision (see Section 6.8), the
+ local system sends a NOTIFICATION message and changes its state to
+ Idle.
+
+ If there are no errors in the OPEN message, TRIP sends a KEEPALIVE
+ message and sets a KeepAlive timer. The Hold Timer, which was
+ originally set to a large value (see above), is replaced with the
+ negotiated Hold Time value (see Section 4.2). If the negotiated Hold
+ Time value is zero, then the Hold Time timer and KeepAlive timers are
+ not started. If the value of the ITAD field is the same as the local
+ ITAD number, then the connection is an "internal" connection;
+ otherwise, it is "external" (this will affect UPDATE processing).
+ Finally, the state is changed to OpenConfirm.
+
+ If the local LS detects that a remote peer is trying to establish a
+ connection to it and the IP address of the peer is not an expected
+ one, then the local LS rejects the attempted connection and continues
+ to listen for a connection from its expected peers without changing
+ state.
+
+ If a disconnect notification is received from the underlying
+ transport protocol, the local LS closes the transport connection,
+ restarts the ConnectRetry timer, continues to listen for a connection
+ that may be initiated by the remote TRIP peer, and goes into the
+ Active state.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 52]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ If the Hold Timer expires, the local LS sends a NOTIFICATION message
+ with the Error Code "Hold Timer Expired" and changes its state to
+ Idle.
+
+ In response to the Stop event (initiated by either system or
+ operator) the local LS sends a NOTIFICATION message with the Error
+ Code "Cease" and changes its state to Idle.
+
+ The Start event is ignored in the OpenSent state.
+
+ In response to any other event the local LS sends a NOTIFICATION
+ message with the Error Code "Finite State Machine Error" and changes
+ its state to Idle.
+
+ Whenever TRIP changes its state from OpenSent to Idle, it closes the
+ transport connection and releases all resources associated with that
+ connection.
+
+ OpenConfirm state:
+ In this state, an LS has sent an OPEN to its peer, received an OPEN
+ from its peer, and sent a KEEPALIVE in response to the OPEN. The LS
+ is now waiting for a KEEPALIVE or NOTIFICATION message in response to
+ its OPEN.
+
+ If the local LS receives a KEEPALIVE message, it changes its state to
+ Established.
+
+ If the Hold Timer expires before a KEEPALIVE message is received, the
+ local LS sends NOTIFICATION message with the Error Code "Hold Timer
+ Expired" and changes its state to Idle.
+
+ If the local LS receives a NOTIFICATION message, it changes its state
+ to Idle.
+
+ If the KeepAlive timer expires, the local LS sends a KEEPALIVE
+ message and restarts its KeepAlive timer.
+
+ If a disconnect notification is received from the underlying
+ transport protocol, the local LS closes the transport connection,
+ restarts the ConnectRetry timer, continues to listen for a connection
+ that may be initiated by the remote TRIP peer, and goes into the
+ Active state.
+
+ In response to the Stop event (initiated by either the system or the
+ operator) the local LS sends NOTIFICATION message with the Error Code
+ "Cease" and changes its state to Idle.
+
+ The Start event is ignored in the OpenConfirm state.
+
+
+
+Rosenberg, et. al. Standards Track [Page 53]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ In response to any other event the local LS sends a NOTIFICATION
+ message with the Error Code "Finite State Machine Error" and changes
+ its state to Idle.
+
+ Whenever TRIP changes its state from OpenConfirm to Idle, it closes
+ the transport connection and releases all resources associated with
+ that connection.
+
+ Established state:
+ In the Established state, an LS can exchange UPDATE, NOTIFICATION,
+ and KEEPALIVE messages with its peer.
+
+ If the negotiated Hold Timer is zero, then no procedures are
+ necessary for keeping a peering session alive. If the negotiated
+ Hold Time value is non-zero, the procedures of this paragraph apply.
+ If the Hold Timer expires, the local LS sends a NOTIFICATION message
+ with the Error Code "Hold Timer Expired" and changes its state to
+ Idle. If the KeepAlive Timer expires, then the local LS sends a
+ KeepAlive message and restarts the KeepAlive Timer. If the local LS
+ receives an UPDATE or KEEPALIVE message, then it restarts its Hold
+ Timer. Each time the LS sends an UPDATE or KEEPALIVE message, it
+ restarts its KeepAlive Timer.
+
+ If the local LS receives a NOTIFICATION message, it changes its state
+ to Idle.
+
+ If the local LS receives an UPDATE message and the UPDATE message
+ error handling procedure (see Section6.3) detects an error, the local
+ LS sends a NOTIFICATION message and changes its state to Idle.
+
+ If a disconnect notification is received from the underlying
+ transport protocol, the local LS changes its state to Idle.
+
+ In response to the Stop event (initiated by either the system or the
+ operator), the local LS sends a NOTIFICATION message with the Error
+ Code "Cease" and changes its state to Idle.
+
+ The Start event is ignored in the Established state.
+
+ In response to any other event, the local LS sends a NOTIFICATION
+ message with Error Code "Finite State Machine Error" and changes its
+ state to Idle.
+
+ Whenever TRIP changes its state from Established to Idle, it closes
+ the transport connection and releases all resources associated with
+ that connection. Additionally, if the peer is an external peer, the
+ LS deletes all routes derived from that connection.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 54]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+10. UPDATE Message Handling
+
+ An UPDATE message may be received only in the Established state.
+ When an UPDATE message is received, each field is checked for
+ validity as specified in Section 6.3. The rest of this section
+ presumes that the UPDATE message has passed the error-checking
+ procedures of Section 6.3.
+
+ If the UPDATE message was received from an internal peer, the
+ flooding procedures of Section 10.1 MUST be applied. The flooding
+ process synchronizes the Loc-TRIBs of all LSs within the domain.
+ Certain routes within the UPDATE may be marked as old or duplicates
+ by the flooding process and are ignored during the rest of the UPDATE
+ processing.
+
+ If the UPDATE message contains withdrawn routes, then the
+ corresponding previously advertised routes shall be removed from the
+ Adj-TRIB-In. This LS MUST rerun its Decision Process since the
+ previously advertised route is no longer available for use.
+
+ If the UPDATE message contains a route, then the route MUST be placed
+ in the appropriate Adj-TRIB-In, and the following additional actions
+ MUST be taken:
+
+ 1. If its destinations are identical to those of a route currently
+ stored in the Adj-TRIB-In, then the new route MUST replace the
+ older route in the Adj-TRIB-In, thus implicitly withdrawing the
+ older route from service. The LS MUST rerun its Decision
+ Process since the older route is no longer available for use.
+ 2. If the new route is more specific than an earlier route
+ contained in the Adj-TRIB-In and has identical attributes, then
+ no further actions are necessary.
+ 3. If the new route is more specific than an earlier route
+ contained in the Adj-TRIB-In but does not have identical
+ attributes, then the LS MUST run its Decision Process since the
+ more specific route has implicitly made a portion of the less
+ specific route unavailable for use.
+ 4. If the new route has destinations that are not present in any
+ of the routes currently stored in the Adj-TRIB-In, then the LS
+ MUST run its Decision Process.
+ 5. If the new route is less specific than an earlier route
+ contained in the Adj-TRIB-In, the LS MUST run its Decision
+ Process on the set of destinations that are described only by
+ the less specific route.
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 55]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+10.1. Flooding Process
+
+ When an LS receives an UPDATE message from an internal peer, the LS
+ floods the new information from that message to all of its other
+ internal peers. Flooding is used to efficiently synchronize all of
+ the LSs within a domain without putting any constraints on the
+ domain's internal topology. The flooding mechanism is based on the
+ techniques used in OSPF [4] and SCSP [6]. One may argue that TRIP's
+ flooding process is in reality a controlled broadcast mechanism.
+
+10.1.1. Database Information
+
+ The LS MUST maintain the sequence number and originating TRIP
+ identifier for each link-state encapsulated attribute in an internal
+ Adj-TRIB-In. These values are included with the route in the
+ ReachableRoutes, WithdrawnRoutes, and ITAD Topology attributes. The
+ originating TRIP identifier gives the internal LS that originated
+ this route into the ITAD, the sequence number gives the version of
+ this route at the originating LS.
+
+10.1.2. Determining Newness
+
+ For each route in the ReachableRoutes or WithdrawnRoutes field, the
+ LS decides if the route is new or old. This is determined by
+ comparing the Sequence Number of the route in the UPDATE with the
+ Sequence Number of the route saved in the Adj-TRIB-In. The route is
+ new if either the route does not exist in the Adj-TRIB-In for the
+ originating LS, or if the route does exist in the Adj-TRIB-In but the
+ Sequence Number in the UPDATE is greater than the Sequence Number
+ saved in the Adj-TRIBs-In. Note that the newness test is
+ independently applied to each link-state encapsulated attribute in
+ the UPDATE (WithdrawnRoutes or ReachableRoutes or ITAD Topology).
+
+10.1.3. Flooding
+
+ Each route in the ReachableRoutes or WithdrawnRoutes field that is
+ determined to be old is ignored in further processing. If the route
+ is determined to be new then the following actions occur.
+
+ If the route is being withdrawn, then the LS MUST flood the withdrawn
+ route to all other internal peers, and MUST mark the route as
+ withdrawn. An LS MUST maintain routes marked as withdrawn in its
+ databases for MaxPurgeTime seconds.
+
+ If the route is being updated, then the LS MUST update the route in
+ the Adj-TRIB-In and MUST flood it to all other internal peers.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 56]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ If these procedures result in changes to the Adj-TRIB-In, then the
+ route is also made available for local route processing as described
+ early in Section 10.
+
+ To implement flooding, the following is recommended. All routes
+ received in a single UPDATE message that are determined to be new
+ should be forwarded to all other internal peers in a single UPDATE
+ message. Other variations of flooding are possible, but the local LS
+ MUST ensure that each new route (and any associated attributes)
+ received from an internal peer get forwarded to every other internal
+ peer.
+
+10.1.4. Sequence Number Considerations
+
+ The Sequence Number is used to determine when one version of a Route
+ is newer than another version of a route. A larger Sequence Number
+ indicates a newer version. The Sequence Number is assigned by the LS
+ originating the route into the local ITAD. The Sequence Number is an
+ unsigned 4-octet integer in the range of 1 thru 2^31-1 MinSequenceNum
+ thru MaxSequenceNum). The value 0 is reserved. When an LS first
+ originates a route (including when the LS restarts/reboots) into its
+ ITAD, it MUST originate it with a Sequence Number of MinSequenceNum.
+ Each time the route is updated within the ITAD by the originator, the
+ Sequence Number MUST be increased.
+
+ If it is ever the case that the sequence number is MaxSequenceNum-1
+ and it needs to be increased, then the TRIP module of the LS MUST be
+ disabled for a period of TripDisableTime so that all routes
+ originated by this LS with high sequence numbers can be removed.
+
+10.1.5. Purging a Route Within the ITAD
+
+ To withdraw a route that it originated within the ITAD, an LS
+ includes the route in the WithdrawnRoutes field of an UPDATE message.
+ The Sequence Number MUST be greater than the last valid version of
+ the route. The LS MAY choose to use a sequence number of
+ MaxSequenceNum when withdrawing routes within its ITAD, but this is
+ not required.
+
+ After withdrawing a route, an LS MUST mark the route as "withdrawn"
+ in its database, and maintain the withdrawn route in its database for
+ MaxPurgeTime seconds. If the LS needs to re-originate a route that
+ had been purged but is still in its database, it can either re-
+ originate the route immediately using a Sequence Number that is
+ greater than that used in the withdraw, or the LS may wait until
+ MaxPurgeTime seconds have expired since the route was withdrawn.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 57]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+10.1.6. Receiving Self-Originated Routes
+
+ It is common for an LS to receive UPDATES for routes that it
+ originated within the ITAD via the flooding procedure. If the LS
+ receives an UPDATE for a route that it originated that is newer (has
+ a higher sequence number) than the LSs current version, then special
+ actions must be taken. This should be a relatively rare occurrence
+ and indicates that a route still exists within the ITAD since the LSs
+ last restart/reboot.
+
+ If an LS receives a self-originated route update that is newer than
+ the current version of the route at the LS, then the following
+ actions MUST be taken. If the LS still wishes to advertise the
+ information in the route, then the LS MUST increase the Sequence
+ Number of the route to a value greater than that received in the
+ UPDATE and re-originate the route. If the LS does not wish to
+ continue to advertise the route, then it MUST purge the route as
+ described in Section 10.1.5.
+
+10.1.7. Removing Withdrawn Routes
+
+ An LS SHOULD ensure that routes marked as withdrawn are removed from
+ the database in a timely fashion after the MaxPurgeTime has expired.
+ This could be done, for example, by periodically sweeping the
+ database, and deleting those entries that were withdrawn more than
+ MaxPurgeTime seconds ago.
+
+10.2. Decision Process
+
+ The Decision Process selects routes for subsequent advertisement by
+ applying the policies in the local Policy Information Base (PIB) to
+ the routes stored in its Adj-TRIBs-In. The output of the Decision
+ process is the set of routes that will be advertised to all peers;
+ the selected routes will be stored in the local LS's Adj-TRIBs-Out.
+
+ The selection process is formalized by defining a function that takes
+ the attributes of a given route as an argument and returns a non-
+ negative integer denoting the degree of preference for the route.
+ The function that calculates the degree of preference for a given
+ route shall not use as its inputs any of the following: the
+ existence of other routes, the non-existence of other routes, or the
+ attributes of other routes. Route selection then consists of an
+ individual application of the degree of preference function to each
+ feasible route, followed by the choice of the one with the highest
+ degree of preference.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 58]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ All internal LSs in an ITAD MUST run the Decision Process and apply
+ the same decision criteria, otherwise it will not be possible to
+ synchronize their Loc-TRIBs.
+
+ The Decision Process operates on routes contained in each Adj-TRIBs-
+ In, and is responsible for:
+
+ - selection of routes to be advertised to internal peers
+ - selection of routes to be advertised to external peers
+ - route aggregation and route information reduction
+
+ The Decision Process takes place in three distinct phases, each
+ triggered by a different event:
+
+ - Phase 1 is responsible for calculating the degree of preference
+ for each route received from an external peer.
+ - Phase 2 is invoked on completion of phase 1. It is responsible
+ for choosing the best route out of all those available for each
+ distinct destination, and for installing each chosen route into
+ the Loc-TRIB.
+ - Phase 3 is invoked after the Loc-TRIB has been modified. It is
+ responsible for disseminating routes in the Loc-TRIB to each
+ external peer, according to the policies contained in the PIB.
+ Route aggregation and information reduction can optionally be
+ performed within this phase.
+
+10.2.1. Phase 1: Calculation of Degree of Preference
+
+ The Phase 1 decision function shall be invoked whenever the local LS
+ receives from a peer an UPDATE message that advertises a new route, a
+ replacement route, or a withdrawn route.
+
+ The Phase 1 decision function is a separate process that is completed
+ when it has no further work to do.
+
+ The Phase 1 decision function shall lock an Adj-TRIB-In prior to
+ operating on any route contained within it, and shall unlock it after
+ operating on all new or replacement routes contained within it.
+
+ The local LS MUST determine a degree of preference for each newly
+ received or replacement route. If the route is learned from an
+ internal peer, the value of the LocalPreference attribute MUST be
+ taken as the degree of preference. If the route is learned from an
+ external peer, then the degree of preference MUST be computed based
+ on pre-configured policy information and used as the LocalPreference
+ value in any intra-domain TRIP advertisement. The exact nature of
+ this policy information and the computation involved is a local
+ matter.
+
+
+
+Rosenberg, et. al. Standards Track [Page 59]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ The output of the degree of preference determination process is the
+ local preference of a route. The local LS computes the local
+ preference of routes learned from external peers or originated
+ internally at that LS. The local preference of a route learned from
+ an internal peer is included in the LocalPreference attribute
+ associated with that route.
+
+10.2.2. Phase 2: Route Selection
+
+ The Phase 2 decision function shall be invoked on completion of Phase
+ 1. The Phase 2 function is a separate process that completes when it
+ has no further work to do. Phase 2 consists of two sub-phases: 2a
+ and 2b. The same route selection function is applied in both sub-
+ phases, but the inputs to each phase are different. The Phase 2a
+ process MUST consider as inputs all external routes, that are present
+ in the Adj-TRIBs-In of external peers, and all local routes. The
+ output of Phase 2a is inserted into the Ext-TRIB. The Phase 2b
+ process shall be invoked upon completion of Phase 2a and it MUST
+ consider as inputs all routes in the Ext-TRIB and all routes that are
+ present in the Adj-TRIBs-In of internal LSs. The output of Phase 2b
+ is stored in the Loc-TRIB.
+
+ The Phase 2 decision function MUST be blocked from running while the
+ Phase 3 decision function is in process. The Phase 2 function MUST
+ lock all Adj-TRIBs-In and the Ext-TRIB prior to commencing its
+ function, and MUST unlock them on completion.
+
+ If the LS determines that the NextHopServer listed in a route is
+ unreachable, then the route MAY be excluded from the Phase 2 decision
+ function. The means by which such a determination is made is not
+ mandated here.
+
+ For each set of destinations for which one or more routes exist, the
+ local LS's route selection function MUST identify the route that has:
+
+ - the highest degree of preference, or
+ - is selected as a result of the tie breaking rules specified in
+ 10.2.2.1.
+
+ Withdrawn routes MUST be removed from the Loc-TRIB, Ext-TRIB, and the
+ Adj-TRIBs-In.
+
+10.2.2.1. Breaking Ties (Phase 2)
+
+ Several routes to the same destination that have the same degree of
+ preference may be input to the Phase 2 route selection function. The
+ local LS can select only one of these routes for inclusion in the
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 60]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ associated Ext-TRIB (Phase 2a) or Loc-TRIB (Phase 2b). The local LS
+ considers all routes with the same degrees of preference. The
+ following algorithm shall be used to break ties.
+
+ - If the local LS is configured to use the MultiExitDisc
+ attribute to break ties, and candidate routes received from the
+ same neighboring ITAD differ in the value of the MultiExitDisc
+ attribute, then select the route that has the larger value of
+ MultiExitDisc.
+ - If at least one of the routes was originated by an internal LS,
+ select the route route that was advertised by the internal LS
+ that has the lowest TRIP ID.
+ - Otherwise, select the route that was advertised by the neighbor
+ domain that has the lowest ITAD number.
+
+10.2.3. Phase 3: Route Dissemination
+
+ The Phase 3 decision function MUST be invoked upon completion of
+ Phase 2 if Phase 2 results in changes to the Loc-TRIB or when a new
+ LS-to-LS peer session is established.
+
+ The Phase 3 function is a separate process that is completed when it
+ has no further work to do. The Phase 3 routing decision function
+ MUST be blocked from running while the Phase 2 decision function is
+ in process.
+
+ All routes in the Loc-TRIB shall be processed into a corresponding
+ entry in the associated Adj-TRIBs-Out. Route aggregation and
+ information reduction techniques (see 10.3.4) MAY optionally be
+ applied.
+
+ When the updating of the Adj-TRIBs-Out is complete, the local LS MUST
+ run the external update process of 10.3.2.
+
+10.2.4. Overlapping Routes
+
+ When overlapping routes are present in the same Adj-TRIB-In, the more
+ specific route shall take precedence, in order, from most specific to
+ least specific.
+
+ The set of destinations described by the overlap represents a portion
+ of the less specific route that is feasible, but is not currently in
+ use. If a more specific route is later withdrawn, the set of
+ destinations described by the more specific route will still be
+ reachable using the less specific route.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 61]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ If an LS receives overlapping routes, the Decision Process MUST take
+ into account the semantics of the overlapping routes. In particular,
+ if an LS accepts the less specific route while rejecting the more
+ specific route from the same peer, then the destinations represented
+ by the overlap may not forward along the domains listed in the
+ AdvertisementPath attribute of that route. Therefore, an LS has the
+ following choices:
+
+ 1. Install both the less and the more specific routes
+ 2. Install the more specific route only
+ 3. Install the non-overlapping part of the less specific route
+ only (that implies disaggregation of the less-specific route)
+ 4. Aggregate the two routes and install the aggregated route
+ 5. Install the less specific route only
+ 6. Install neither route
+
+ If an LS chooses 5), then it SHOULD add AtomicAggregate attribute to
+ the route. A route that carries AtomicAggregate attribute MUST NOT
+ be de-aggregated. That is, the route cannot be made more specific.
+ Forwarding along such a route does not guarantee that route traverses
+ only domains listed in the RoutedPath of the route. If an LS chooses
+ 1), then it MUST NOT advertise the less specific route without the
+ more specific route.
+
+10.3. Update-Send Process
+
+ The Update-Send process is responsible for advertising UPDATE
+ messages to all peers. For example, it distributes the routes chosen
+ by the Decision Process to other LSs that may be located in either
+ the same ITAD or a neighboring ITAD. Rules for information exchange
+ between peer LSs located in different ITADs are given in 10.3.2;
+ rules for information exchange between peer LSs located in the same
+ ITAD are given in 10.3.1.
+
+ Before forwarding routes to peers, an LS MUST determine which
+ attributes should be forwarded along with that route. If a not
+ well-known non-transitive attribute is unrecognized, it is quietly
+ ignored. If a not well-known dependent-transitive attribute is
+ unrecognized, and the NextHopServer attribute has been changed by the
+ LS, the unrecognized attribute is quietly ignored. If a not well-
+ known dependent-transitive attribute is unrecognized, and the
+ NextHopServer attribute has not been modified by the LS, the Partial
+ bit in the attribute flags octet is set to 1, and the attribute is
+ retained for propagation to other TRIP speakers. Similarly, if an
+ not well-known independent-transitive attribute is unrecognized, the
+ Partial bit in the attribute flags octet is set to 1, and the
+ attribute is retained for propagation to other TRIP speakers.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 62]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ If a not well-known attribute is recognized, and has a valid value,
+ then, depending on the type of the not well-known attribute, it is
+ updated, if necessary, for possible propagation to other TRIP
+ speakers.
+
+10.3.1. Internal Updates
+
+ The Internal update process is concerned with the distribution of
+ routing information to internal peers.
+
+ When an LS receives an UPDATE message from another TRIP LS located in
+ its own ITAD, it is flooded as described in Section 10.1.
+
+ When an LS receives a new route from an LS in a neighboring ITAD, or
+ if a local route is injected into TRIP, the LS determines the
+ preference of that route. If the new route has the highest degree of
+ preference for all external routes and local routes to a given
+ destination (or if the route was selected via a tie-breaking
+ procedure as specified in 10.3.1.1), the LS MUST insert that new
+ route into the Ext-TRIB database and the LS MUST advertise that route
+ to all other LSs in its ITAD by means of an UPDATE message. The LS
+ MUST advertise itself as the Originator of that route within the
+ ITAD.
+
+ When an LS receives an UPDATE message with a non-empty
+ WithdrawnRoutes attribute from an external peer, or if a local route
+ is withdrawn from TRIP, the LS MUST remove from its Adj-TRIB-In all
+ routes whose destinations were carried in this field. If the
+ withdrawn route was previously selected into the Ext-TRIB, the LS
+ MUST take the following additional steps:
+
+ - If a new route is selected for advertisement for those
+ destinations, then the LS MUST insert the replacement route
+ into Ext-TRIB to replace the withdrawn route and advertise it
+ to all internal LSs.
+ - If a replacement route is not available for advertisement, then
+ the LS MUST include the destinations of the route in the
+ WithdrawnRoutes attribute of an UPDATE message, and MUST send
+ this message to each internal peer. The LS MUST also remove
+ the withdrawn route from the Ext-TRIB.
+
+10.3.1.1. Breaking Ties (Routes Received from External Peers)
+
+ If an LS has connections to several external peers, there will be
+ multiple Adj-TRIBs-In associated with these peers. These databases
+ might contain several equally preferable routes to the same
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 63]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ destination, all of which were advertised by external peers. The
+ local LS shall select one of these routes according to the following
+ rules:
+
+ - If the LS is configured to use the MultiExitDisc attribute to
+ break ties, and the candidate routes differ in the value of the
+ MultiExitDisc attribute, then select the route that has the
+ lowest value of MultiExitDisc, else
+ - Select the route that was advertised by the external LS that
+ has the lowest TRIP Identifier.
+
+10.3.2. External Updates
+
+ The external update process is concerned with the distribution of
+ routing information to external peers. As part of the Phase 3 route
+ selection process, the LS has updated its Adj-TRIBs-Out. All newly
+ installed routes and all newly unfeasible routes for which there is
+ no replacement route MUST be advertised to external peers by means of
+ UPDATE messages.
+
+ Any routes in the Loc-TRIB marked as withdrawn MUST be removed.
+ Changes to the reachable destinations within its own ITAD SHALL also
+ be advertised in an UPDATE message.
+
+10.3.3. Controlling Routing Traffic Overhead
+
+ The TRIP protocol constrains the amount of routing traffic (that is,
+ UPDATE messages) in order to limit both the link bandwidth needed to
+ advertise UPDATE messages and the processing power needed by the
+ Decision Process to digest the information contained in the UPDATE
+ messages.
+
+10.3.3.1. Frequency of Route Advertisement
+
+ The parameter MinRouteAdvertisementInterval determines the minimum
+ amount of time that must elapse between advertisements of routes to a
+ particular destination from a single LS. This rate limiting
+ procedure applies on a per-destination basis, although the value of
+ MinRouteAdvertisementInterval is set on a per LS peer basis.
+
+ Two UPDATE messages sent from a single LS that advertise feasible
+ routes to some common set of destinations received from external
+ peers MUST be separated by at least MinRouteAdvertisementInterval.
+ Clearly, this can only be achieved precisely by keeping a separate
+ timer for each common set of destinations. This would be unwarranted
+ overhead. Any technique which ensures that the interval between two
+ UPDATE messages sent from a single LS that advertise feasible routes
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 64]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ to some common set of destinations received from external peers will
+ be at least MinRouteAdvertisementInterval, and will also ensure that
+ a constant upper bound on the interval is acceptable.
+
+ Two UPDATE messages, sent from a single LS to an external peer, that
+ advertise feasible routes to some common set of destinations received
+ from internal peers MUST be separated by at least
+ MinRouteAdvertisementInterval.
+
+ Since fast convergence is needed within an ITAD, this rate limiting
+ procedure does not apply to routes received from internal peers and
+ being broadcast to other internal peers. To avoid long-lived black
+ holes, the procedure does not apply to the explicit withdrawal of
+ routes (that is, routes whose destinations explicitly withdrawn by
+ UPDATE messages).
+
+ This procedure does not limit the rate of route selection, but only
+ the rate of route advertisement. If new routes are selected multiple
+ times while awaiting the expiration of MinRouteAdvertisementInterval,
+ the last route selected shall be advertised at the end of
+ MinRouteAdvertisementInterval.
+
+10.3.3.2. Frequency of Route Origination
+
+ The parameter MinITADOriginationInterval determines the minimum
+ amount of time that must elapse between successive advertisements of
+ UPDATE messages that report changes within the advertising LS's own
+ ITAD.
+
+10.3.3.3. Jitter
+
+ To minimize the likelihood that the distribution of TRIP messages by
+ a given LS will contain peaks, jitter should be applied to the timers
+ associated with MinITADOriginationInterval, KeepAlive, and
+ MinRouteAdvertisementInterval. A given LS shall apply the same
+ jitter to each of these quantities regardless of the destinations to
+ which the updates are being sent; that is, jitter will not be applied
+ on a "per peer" basis.
+
+ The amount of jitter to be introduced shall be determined by
+ multiplying the base value of the appropriate timer by a random
+ factor that is uniformly distributed in the range from 0.75 to 1.0.
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 65]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+10.3.4. Efficient Organization of Routing Information
+
+ Having selected the routing information that it will advertise, a
+ TRIP speaker may use methods to organize this information in an
+ efficient manner. These methods are discussed in the following
+ sections.
+
+10.3.4.1. Information Reduction
+
+ Information reduction may imply a reduction in granularity of policy
+ control - after information has collapsed, the same policies will
+ apply to all destinations and paths in the equivalence class.
+
+ The Decision Process may optionally reduce the amount of information
+ that it will place in the Adj-TRIBs-Out by any of the following
+ methods:
+
+ - ReachableRoutes: A set of destinations can be usually
+ represented in compact form. For example, a set of E.164 phone
+ numbers can be represented in more compact form using E.164
+ prefixes.
+ - AdvertisementPath: AdvertisementPath information can be
+ represented as ordered AP_SEQUENCEs or unordered AP_SETs.
+ AP_SETs are used in the route aggregation algorithm described
+ in Section 5.4.4. They reduce the size of the AP_PATH
+ information by listing each ITAD number only once, regardless
+ of how many times it may have appeared in multiple
+ advertisement paths that were aggregated.
+
+ An AP_SET implies that the destinations advertised in the UPDATE
+ message can be reached through paths that traverse at least some of
+ the constituent ITADs. AP_SETs provide sufficient information to
+ avoid route looping; however their use may prune potentially feasible
+ paths, since such paths are no longer listed individually as in the
+ form of AP_SEQUENCEs. In practice this is not likely to be a
+ problem, since once a call arrives at the edge of a group of ITADs,
+ the LS at that point is likely to have more detailed path information
+ and can distinguish individual paths to destinations.
+
+10.3.4.2. Aggregating Routing Information
+
+ Aggregation is the process of combining the characteristics of
+ several different routes in such a way that a single route can be
+ advertised. Aggregation can occur as part of the decision process to
+ reduce the amount of routing information that is placed in the Adj-
+ TRIBs-Out.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 66]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Aggregation reduces the amount of information an LS must store and
+ exchange with other LSs. Routes can be aggregated by applying the
+ following procedure separately to attributes of like type.
+
+ Routes that have the following attributes shall not be aggregated
+ unless the corresponding attributes of each route are identical:
+ MultiExitDisc, NextHopServer.
+
+ Attributes that have different type codes cannot be aggregated.
+ Attributes of the same type code may be aggregated. The rules for
+ aggregating each attribute MUST be provided together with attribute
+ definition. For example, aggregation rules for TRIP's basic
+ attributes, e.g., ReachableRoutes and AdvertisementPath, are given in
+ Section 5.
+
+10.4. Route Selection Criteria
+
+ Generally speaking, additional rules for comparing routes among
+ several alternatives are outside the scope of this document. There
+ are two exceptions:
+
+ - If the local ITAD appears in the AdvertisementPath of the new
+ route being considered, then that new route cannot be viewed as
+ better than any other route. If such a route were ever used, a
+ routing loop could result (see Section 6.3).
+ - In order to achieve successful distributed operation, only
+ routes with a likelihood of stability can be chosen. Thus, an
+ ITAD must avoid using unstable routes, and it must not make
+ rapid spontaneous changes to its choice of route. Quantifying
+ the terms "unstable" and "rapid" in the previous sentence will
+ require experience, but the principle is clear.
+
+10.5. Originating TRIP Routes
+
+ An LS may originate local routes by injecting routing information
+ acquired by some other means (e.g. via an intra-domain routing
+ protocol or through manual configuration or some dynamic registration
+ mechanism/protocol) into TRIP. An LS that originates TRIP routes
+ shall assign the degree of preference to these routes by passing them
+ through the Decision Process (see Section 10.2). To TRIP, local
+ routes are identical to external routes and are subjected to the same
+ two phase route selection mechanism. A local route which is selected
+ into the Ext-TRIB MUST be advertised to all internal LSs. The
+ decision whether to distribute non-TRIP acquired routes within an
+ ITAD via TRIP or not depends on the environment within the ITAD (e.g.
+ type of intra-domain routing protocol) and should be controlled via
+ configuration.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 67]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+11. TRIP Transport
+
+ This specification defines the use of TCP as the transport layer for
+ TRIP. TRIP uses TCP port 6069. Running TRIP over other transport
+ protocols is for further study.
+
+12. ITAD Topology
+
+ There are no restrictions on the intra-domain topology of TRIP LSs.
+ For example, LSs in an ITAD can be configured in a full mesh, star,
+ or any other connected topology. Similarly, there are no
+ restrictions on the topology of TRIP ITADs. For example, the ITADs
+ can be organized in a flat topology (mesh or ring) or in multi-level
+ hierarchy or any other topology.
+
+ The border between two TRIP ITADs may be located either on the link
+ between two TRIP LSs or it may coincide on a TRIP LS. In the latter
+ case, the same TRIP LS will be member in more than one ITAD, and it
+ appears to be an internal peer to LSs in each ITAD it is member of.
+
+13. IANA Considerations
+
+ This document creates a new IANA registry for TRIP parameters. The
+ following TRIP parameters are included in the registry:
+
+ - TRIP Capabilities
+ - TRIP Attributes
+ - TRIP Address Families
+ - TRIP Application Protocols
+ - TRIP ITAD Numbers
+
+ Protocol parameters are frequently initialized/reset to 0. This
+ document reserves the value 0 of each of the above TRIP parameters in
+ order to clearly distinguish between an unset parameter and any other
+ registered values for that parameter.
+
+ The sub-registries for each of the above parameters are discussed in
+ the sections below.
+
+13.1. TRIP Capabilities
+
+ Requests to add TRIP capabilities other than those defined in Section
+ 4.2.1.1 must be submitted to iana@iana.org. Following the assigned
+ number policies outlined in [11], Capability Codes in the range
+ 32768-65535 are reserved for Private Use (these are the codes with
+ the first bit of the code value equal to 1). This document reserves
+ value 0. Capability Codes 1 and 2 have been assigned in Section
+ 4.2.1.1. Capability Codes in the range 2-32767 are controlled by
+
+
+
+Rosenberg, et. al. Standards Track [Page 68]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ IANA, and are allocated subject to the Specification Required (IETF
+ RFC or equivalent) condition. The specification MUST include a
+ description of the capability, the possible values it may take, and
+ what constitutes a capability mismatch.
+
+13.2. TRIP Attributes
+
+ This document reserves Attribute Type Codes 224-255 for Private Use
+ (these are the codes with the first three bits of the code equal to
+ 1). This document reserves the value 0. Attribute Type Codes 1
+ through 11 have already been allocated by this document. Attribute
+ Type Codes 1 through 11 are defined in Sections 5.1 through 5.11.
+
+ Attribute Type Codes in the range 12-223 are controlled by IANA, and
+ require a Specification document (RFC or equivalent). The
+ specification MUST provide all information required in Section 5.12
+ of this document.
+
+ Attribute Type Code registration requests must be sent to
+ iana@iana.org. In addition to the specification requirement, the
+ request MUST include an indication of who has change control over the
+ attribute and contact information (postal and email address).
+
+13.3. Destination Address Families
+
+ This document reserves address family 0. Requests to add TRIP address
+ families other than those defined in Section 5.1.1.1 ( address
+ families 1, 2, and 3), i.e., in the range 4-32767, must be submitted
+ to iana@iana.org. The request MUST include a brief description of
+ the address family, its alphabet, and special processing rules and
+ guidelines, such as guidelines for aggregation, if any. The requests
+ are subject to Expert Review. This document reserves the address
+ family codes 32768-65535 for vendor-specific applications.
+
+13.4. TRIP Application Protocols
+
+ This document creates a new IANA registry for TRIP application
+ protocols. This document reserves the application protocol code 0.
+ Requests to add TRIP application protocols other than those defined
+ in Section 5.1.1.1 (application protocols 1 through 4), i.e., in the
+ range 5-32767, must be submitted to iana@iana.org. The request MUST
+ include a brief background on the application protocol, and a
+ description of how TRIP can be used to advertise routes for that
+ protocol. The requests are subject to Expert Review. This document
+ reserves the application protocol codes 32768-65535 for vendor-
+ specific applications.
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 69]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+13.5. ITAD Numbers
+
+ This document reserves the ITAD number 0. ITAD numbers in the range
+ 1-255 are designated for Private Use. ITAD numbers in the range from
+ 256 to (2**32)-1 are allocated by IANA on a First-Come-First-Serve
+ basis. Requests for ITAD numbers must be submitted to iana@iana.org.
+ The requests MUST include the following:
+
+ - Information about the organization that will administer the
+ ITAD.
+ - Contact information (postal and email address).
+
+14. Security Considerations
+
+ This section covers security between peer TRIP LSs when TRIP runs
+ over TCP in an IP environment.
+
+ A security mechanism is clearly needed to prevent unauthorized
+ entities from using the protocol defined in this document for setting
+ up unauthorized peer sessions with other TRIP LSs or interfering with
+ authorized peer sessions. The security mechanism for the protocol,
+ when transported over TCP in an IP network, is IPsec [12]. IPsec
+ uses two protocols to provide traffic security: Authentication Header
+ (AH) [13] and Encapsulating Security Payload (ESP) [14].
+
+ The AH header affords data origin authentication, connectionless
+ integrity and optional anti-replay protection of messages passed
+ between the peer LSs. The ESP header provides origin authentication,
+ connectionless integrity, anti-replay protection, and confidentiality
+ of messages.
+
+ Implementations of the protocol defined in this document employing
+ the ESP header SHALL comply with section 5 of [14], which defines a
+ minimum set of algorithms for integrity checking and encryption.
+ Similarly, implementations employing the AH header SHALL comply with
+ section 5 of [13], which defines a minimum set of algorithms for
+ integrity checking using manual keys.
+
+ Implementations SHOULD use IKE [15] to permit more robust keying
+ options. Implementations employing IKE SHOULD support authentication
+ with RSA signatures and RSA public key encryption.
+
+ A Security Association (SA) [12] is a simplex "connection" that
+ affords security services to the traffic carried by it. Security
+ services are afforded to a SA by the use of AH, or ESP, but not both.
+ Two types of SAs are defined: transport mode and tunnel mode [12]. A
+ transport mode SA is a security association between two hosts, and is
+ appropriate for protecting the TRIP session between two peer LSs.
+
+
+
+Rosenberg, et. al. Standards Track [Page 70]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+A1. Appendix 1: TRIP FSM State Transitions and Actions
+
+ This Appendix discusses the transitions between states in the TRIP
+ FSM in response to TRIP events. The following is the list of these
+ states and events when the negotiated Hold Time value is non-zero.
+
+ TRIP States:
+ 1 - Idle
+ 2 - Connect
+ 3 - Active
+ 4 - OpenSent
+ 5 - OpenConfirm
+ 6 - Established
+
+ TRIP Events:
+ 1 - TRIP Start
+ 2 - TRIP Stop
+ 3 - TRIP Transport connection open
+ 4 - TRIP Transport connection closed
+ 5 - TRIP Transport connection open failed
+ 6 - TRIP Transport fatal error
+ 7 - ConnectRetry timer expired
+ 8 - Hold Timer expired
+ 9 - KeepAlive timer expired
+ 10 - Receive OPEN message
+ 11 - Receive KEEPALIVE message
+ 12 - Receive UPDATE messages
+ 13 - Receive NOTIFICATION message
+
+ The following table describes the state transitions of the TRIP FSM
+ and the actions triggered by these transitions.
+
+ Event Actions Message Sent Next State
+ --------------------------------------------------------------------
+ Idle (1)
+ 1 Initialize resources none 2
+ Start ConnectRetry timer
+ Initiate a transport connection
+ others none none 1
+
+ Connect(2)
+ 1 none none 2
+ 3 Complete initialization OPEN 4
+ Clear ConnectRetry timer
+ 5 Restart ConnectRetry timer none 3
+ 7 Restart ConnectRetry timer none 2
+ Initiate a transport connection
+ others Release resources none 1
+
+
+
+Rosenberg, et. al. Standards Track [Page 71]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ Active (3)
+ 1 none none 3
+ 3 Complete initialization OPEN 4
+ Clear ConnectRetry timer
+ 5 Close connection 3
+ Restart ConnectRetry timer
+ 7 Restart ConnectRetry timer none 2
+ Initiate a transport connection
+ others Release resources none 1
+
+ OpenSent(4)
+ 1 none none 4
+ 4 Close transport connection none 3
+ Restart ConnectRetry timer
+ 6 Release resources none 1
+ 10 Process OPEN is OK KEEPALIVE 5
+ Process OPEN failed NOTIFICATION 1
+ others Close transport connection NOTIFICATION 1
+ Release resources
+
+ OpenConfirm (5)
+ 1 none none 5
+ 4 Release resources none 1
+ 6 Release resources none 1
+ 9 Restart KeepAlive timer KEEPALIVE 5
+ 11 Complete initialization none 6
+ Restart Hold Timer
+ 13 Close transport connection 1
+ Release resources
+ others Close transport connection NOTIFICATION 1
+ Release resources
+
+ Established (6)
+ 1 none none 6
+ 4 Release resources none 1
+ 6 Release resources none 1
+ 9 Restart KeepAlive timer KEEPALIVE 6
+ 11 Restart Hold Timer none 6
+ 12 Process UPDATE is OK UPDATE 6
+ Process UPDATE failed NOTIFICATION 1
+ 13 Close transport connection 1
+ Release resources
+ others Close transport connection NOTIFICATION 1
+ Release resources
+ -----------------------------------------------------------------
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 72]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ The following is a condensed version of the above state transition
+ table.
+
+ Events| Idle | Connect | Active | OpenSent | OpenConfirm | Estab
+ | (1) | (2) | (3) | (4) | (5) | (6)
+ |----------------------------------------------------------
+ 1 | 2 | 2 | 3 | 4 | 5 | 6
+ | | | | | |
+ 2 | 1 | 1 | 1 | 1 | 1 | 1
+ | | | | | |
+ 3 | 1 | 4 | 4 | 1 | 1 | 1
+ | | | | | |
+ 4 | 1 | 1 | 1 | 3 | 1 | 1
+ | | | | | |
+ 5 | 1 | 3 | 3 | 1 | 1 | 1
+ | | | | | |
+ 6 | 1 | 1 | 1 | 1 | 1 | 1
+ | | | | | |
+ 7 | 1 | 2 | 2 | 1 | 1 | 1
+ | | | | | |
+ 8 | 1 | 1 | 1 | 1 | 1 | 1
+ | | | | | |
+ 9 | 1 | 1 | 1 | 1 | 5 | 6
+ | | | | | |
+ 10 | 1 | 1 | 1 | 1 or 5 | 1 | 1
+ | | | | | |
+ 11 | 1 | 1 | 1 | 1 | 6 | 6
+ | | | | | |
+ 12 | 1 | 1 | 1 | 1 | 1 | 1 or 6
+ | | | | | |
+ 13 | 1 | 1 | 1 | 1 | 1 | 1
+ | | | | | |
+ --------------------------------------------------------------
+
+A2. Appendix 2: Implementation Recommendations
+
+ This section presents some implementation recommendations.
+
+A.2.1: Multiple Networks Per Message
+
+ The TRIP protocol allows for multiple address prefixes with the same
+ advertisement path and next-hop server to be specified in one
+ message. Making use of this capability is highly recommended. With
+ one address prefix per message there is a substantial increase in
+ overhead in the receiver. Not only does the system overhead increase
+ due to the reception of multiple messages, but the overhead of
+ scanning the routing table for updates to TRIP peers is incurred
+ multiple times as well. One method of building messages containing
+
+
+
+Rosenberg, et. al. Standards Track [Page 73]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ many address prefixes per advertisement path and next hop from a
+ routing table that is not organized per advertisement path is to
+ build many messages as the routing table is scanned. As each address
+ prefix is processed, a message for the associated advertisement path
+ and next hop is allocated, if it does not exist, and the new address
+ prefix is added to it. If such a message exists, the new address
+ prefix is just appended to it. If the message lacks the space to
+ hold the new address prefix, it is transmitted, a new message is
+ allocated, and the new address prefix is inserted into the new
+ message. When the entire routing table has been scanned, all
+ allocated messages are sent and their resources released. Maximum
+ compression is achieved when all the destinations covered by the
+ address prefixes share the same next hop server and common
+ attributes, making it possible to send many address prefixes in one
+ 4096-byte message.
+
+ When peering with a TRIP implementation that does not compress
+ multiple address prefixes into one message, it may be necessary to
+ take steps to reduce the overhead from the flood of data received
+ when a peer is acquired or a significant network topology change
+ occurs. One method of doing this is to limit the rate of updates.
+ This will eliminate the redundant scanning of the routing table to
+ provide flash updates for TRIP peers. A disadvantage of this
+ approach is that it increases the propagation latency of routing
+ information. By choosing a minimum flash update interval that is not
+ much greater than the time it takes to process the multiple messages,
+ this latency should be minimized. A better method would be to read
+ all received messages before sending updates.
+
+A.2.2: Processing Messages on a Stream Protocol
+
+ TRIP uses TCP as a transport mechanism. Due to the stream nature of
+ TCP, all the data of a received message does not necessarily arrive
+ at the same time. This can make it difficult to process the data as
+ messages, especially on systems where it is not possible to determine
+ how much data has been received but not yet processed.
+
+ One method that can be used in this situation is to first try to read
+ just the message header. For the KEEPALIVE message type, this is a
+ complete message; for other message types, the header should first be
+ verified, in particular the total length. If all checks are
+ successful, the specified length, minus the size of the message
+ header is the amount of data left to read. An implementation that
+ would "hang" the routing information process while trying to read
+ from a peer could set up a message buffer (4096 bytes) per peer and
+ fill it with data as available until a complete message has been
+ received.
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 74]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+A.2.3: Reducing Route Flapping
+
+ To avoid excessive route flapping an LS which needs to withdraw a
+ destination and send an update about a more specific or less specific
+ route SHOULD combine them into the same UPDATE message.
+
+A.2.4: TRIP Timers
+
+ TRIP employs seven timers: ConnectRetry, Hold Time, KeepAlive,
+ MaxPurgeTime, TripDisableTime, MinITADOriginationInterval, and
+ MinRouteAdvertisementInterval. The suggested value for the
+ ConnectRetry timer is 120 seconds. The suggested value for the Hold
+ Time is 90 seconds. The suggested value for the KeepAlive timer is
+ 30 seconds. The suggested value for the MaxPurgeTime timer is 10
+ seconds. The suggested value for the TripDisableTime timer is 180
+ seconds. The suggested value for the MinITADOriginationInterval is
+ 30 seconds. The suggested value for the
+ MinRouteAdvertisementInterval is 30 seconds.
+
+ An implementation of TRIP MUST allow these timers to be configurable.
+
+A.2.5: AP_SET Sorting
+
+ Another useful optimization that can be done to simplify this
+ situation is to sort the ITAD numbers found in an AP_SET. This
+ optimization is entirely optional.
+
+Acknowledgments
+
+ We wish to thank Dave Oran for his insightful comments and
+ suggestions.
+
+References
+
+ [1] Bradner, S., "Keywords for use in RFCs to Indicate Requirement
+ Levels", BCP 14, RFC 2119, March 1997.
+
+ [2] Rosenberg, J. and H. Schulzrinne, "A Framework for a Gateway
+ Location Protocol", RFC 2871, June 2000.
+
+ [3] Rekhter, Y. and T. Li, "Border Gateway Protocol 4 (BGP-4)," RFC
+ 1771, March 1995.
+
+ [4] Moy, J., "Open Shortest Path First Version 2", STD 54, RFC
+ 2328, April 1998.
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 75]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+ [5] "Intermediate System to Intermediate System Intra-Domain
+ Routing Exchange Protocol for use in Conjunction with the
+ Protocol for Providing the Connectionless-mode Network Service
+ (ISO 8473)," ISO DP 10589, February 1990.
+
+ [6] Luciani, J., Armitage, G., Halpern, J. and N. Doraswamy,
+ "Server Cache Synchronization Protocol (SCSP)", RFC 2334, April
+ 1998.
+
+ [7] International Telecommunication Union, "Packet-Based Multimedia
+ Communication Systems," Recommendation H.323, Version 3
+ Telecommunication Standardization Sector of ITU, Geneva,
+ Switzerland, November 2000.
+
+ [8] Handley, H., Schulzrinne, H., Schooler, E. and J. Rosenberg,
+ "SIP: Session Initiation Protocol", RFC 2543, March 1999.
+
+ [9] Braden, R., "Requirements for Internet Hosts -- Application and
+ Support", STD 3, RFC 1123, October 1989.
+
+ [10] Hinden, R. and S. Deering, "IP Version 6 Addressing
+ Architecture", RFC 2373, July 1998.
+
+ [11] Narten, T. and H. Alvestrand, "Guidelines for Writing an IANA
+ Considerations Section in RFCs", BCP 26, RFC 2434, October
+ 1998.
+
+ [12] Kent, S. and R. Atkinson, "Security Architecture for the
+ Internet Protocol", RFC 2401, November 1998.
+
+ [13] Kent, S. and R. Atkinson, "IP Authentication Header", RFC 2402,
+ November 1998.
+
+ [14] Kent, S. and R. Atkinson, "IP Encapsulating Security Payload
+ (ESP)", RFC 2406, November 1998.
+
+ [15] Harkins, D. and D. Carrel, "The Internet Key Exchange (IKE)",
+ RFC 2409, November 1998.
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 76]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+Intellectual Property Notice
+
+ The IETF takes no position regarding the validity or scope of any
+ intellectual property or other rights that might be claimed to
+ pertain to the implementation or use of the technology described in
+ this document or the extent to which any license under such rights
+ might or might not be available; neither does it represent that it
+ has made any effort to identify any such rights. Information on the
+ IETF's procedures with respect to rights in standards-track and
+ standards-related documentation can be found in BCP 11. Copies of
+ claims of rights made available for publication and any assurances of
+ licenses to be made available, or the result of an attempt made to
+ obtain a general license or permission for the use of such
+ proprietary rights by implementers or users of this specification can
+ be obtained from the IETF Secretariat.
+
+ The IETF invites any interested party to bring to its attention any
+ copyrights, patents or patent applications, or other proprietary
+ rights which may cover technology that may be required to practice
+ this standard. Please address the information to the IETF Executive
+ Director.
+
+ The IETF has been notified of intellectual property rights claimed in
+ regard to some or all of the specification contained in this
+ document. For more information consult the online list of claimed
+ rights.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 77]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+Authors' Addresses
+
+ Jonathan Rosenberg
+ dynamicsoft
+ 72 Eagle Rock Avenue
+ First Floor
+ East Hanover, NJ 07936
+
+ Phone: 973-952-5000
+ EMail: jdrosen@dynamicsoft.com
+
+
+ Hussein F. Salama
+ Cisco Systems
+ 170 W. Tasman Drive
+ San Jose, CA 95134
+
+ Phone: 408-527-7147
+ EMail: hsalama@cisco.com
+
+
+ Matt Squire
+ Hatteras Networks
+ 639 Davis Drive
+ Suite 200
+ Durham, NC 27713
+
+ EMail: mattsquire@acm.org
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 78]
+
+RFC 3219 Telephony Routing over IP (TRIP) January 2002
+
+
+Full Copyright Statement
+
+ Copyright (C) The Internet Society (2002). All Rights Reserved.
+
+ This document and translations of it may be copied and furnished to
+ others, and derivative works that comment on or otherwise explain it
+ or assist in its implementation may be prepared, copied, published
+ and distributed, in whole or in part, without restriction of any
+ kind, provided that the above copyright notice and this paragraph are
+ included on all such copies and derivative works. However, this
+ document itself may not be modified in any way, such as by removing
+ the copyright notice or references to the Internet Society or other
+ Internet organizations, except as needed for the purpose of
+ developing Internet standards in which case the procedures for
+ copyrights defined in the Internet Standards process must be
+ followed, or as required to translate it into languages other than
+ English.
+
+ The limited permissions granted above are perpetual and will not be
+ revoked by the Internet Society or its successors or assigns.
+
+ This document and the information contained herein is provided on an
+ "AS IS" basis 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.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+Rosenberg, et. al. Standards Track [Page 79]
+