rfc-3219

Telephony Routing over IP (TRIP)

J. Rosenberg, H. Salama, M. Squire
date2002-01 streamIETF arearai wgiptel statusPROPOSED STANDARD pages79 canonicalhttps://www.rfc-editor.org/rfc/rfc3219 doi10.17487/RFC3219 errataview
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. [STANDARDS-TRACK]

updated by

Extracted elements (33)

design-rationale §5.4

TRIP introduces a separate RoutedPath attribute (distinct from AdvertisementPath) because intermediate LSs need not modify the NextHopServer when propagating a route, causing the advertisement propagation path to diverge from the actual signaling path. BGP has no equivalent because all AS hops must modify the next-hop.

routing, voip

design-rationale §2

TRIP uses a link-state flooding mechanism for intra-domain synchronization (similar to OSPF/IS-IS/SCSP) rather than BGP's iBGP full-mesh requirement. This permits arbitrary intra-domain LS topologies, simplifying configuration and improving scalability within large telephony domains.

routing, voip

interoperability-note §2

TRIP is explicitly signaling-protocol-independent: a single TRIP route is defined as the combination of an address prefix (with its address family) and an application protocol identifier, allowing TRIP to simultaneously carry routing tables for SIP, H.323, and other protocols over the same peering sessions.

routing, voip, sip, realtime

normative-requirement §4.2.1.1.2 MUST NOT

A peering session MUST NOT be established between two LSs both in Send Only mode or both in Receive Only mode. On detecting such a capability mismatch in an OPEN message, the LS MUST send a NOTIFICATION with error code 'Capability Mismatch' and close the session.

routing, voip

normative-requirement §4 MUST

All TRIP implementations MUST support the maximum message size of 4096 octets. A message MUST be processed only after it is entirely received.

routing, voip

normative-requirement §4.2.1.1.1 MUST NOT

An LS MUST NOT use route types in a peering session that are not supported by the peer LS as indicated via the Route Types Supported capability. If supported route types are unsatisfactory, the LS SHOULD terminate the peering session.

routing, voip

normative-requirement §5.6.5 MUST NOT

An LS receiving a route with AtomicAggregate (Type Code 6, zero-length value) MUST NOT make the set of destinations more specific when advertising to other LSs, and MUST NOT remove the attribute when propagating it.

routing, voip

normative-requirement §5.5.5 MUST NOT

If an LS has not changed the NextHopServer attribute when propagating a route, it MUST NOT change the RoutedPath attribute. When it does change the NextHopServer and advertises to another ITAD, it MUST prepend its own ITAD to the RoutedPath.

routing, voip

normative-requirement §5.4.3 MUST

If an LS receives a route with its own ITAD number already present in the AdvertisementPath, the route MUST be discarded. This is the primary loop-prevention mechanism in TRIP.

routing, voip

normative-requirement §4.4 MUST NOT

KEEPALIVE messages MUST NOT be sent more than once every 3 seconds. If the negotiated Hold Time is zero, periodic KEEPALIVE messages MUST NOT be sent. An implementation SHOULD adjust the KEEPALIVE rate as a function of the negotiated Hold Time.

routing, voip

normative-requirement §5.7 MUST NOT

LocalPreference (Type Code 7, 4-octet unsigned value) MUST NOT be included when communicating with an LS in another domain, and MUST be included over intra-domain links. LocalPreference received from inter-domain peers MUST be ignored.

routing, voip

normative-requirement §5.8 MUST NOT

MultiExitDisc (Type Code 8, 4-octet unsigned value, higher=preferred) MUST NOT be propagated to LSs in other domains. Routes with differing MultiExitDisc values MUST NOT be aggregated together.

routing, voip

normative-requirement §4.2 MUST

The TRIP Identifier MUST uniquely identify the LS within its ITAD and MUST be the same for all peer connections. It may be set to an IPv4 address assigned to the LS.

routing, voip

normative-requirement §4.2 MUST

Upon receipt of an OPEN message, an LS MUST calculate the Hold Timer as the minimum of its configured Hold Time and the received Hold Time. The Hold Time MUST be either zero or at least 3 seconds.

routing, voip

normative-requirement §5.3.4 MUST

When aggregating routes with differing NextHopServer values, an LS MUST insert a signaling server from within its own domain as the new NextHopServer for the aggregate route.

routing, voip

protocol-element §4.3.2

Attribute Flags occupy 1 octet with five defined bits: Well-Known (bit 0), Transitive (bit 1), Dependent (bit 2), Partial (bit 3), and Link-state Encapsulation (bit 4, valid only on ReachableRoutes and WithdrawnRoutes). These control forwarding of unrecognized attributes.

routing, voip

protocol-element §5.4

The AdvertisementPath attribute (Type Code 4, conditionally mandatory with ReachableRoutes/WithdrawnRoutes) records all ITADs through which an advertisement has passed, using AP_SEQUENCE (ordered, 1-octet type, 1-octet count, 4-octet ITAD entries) and AP_SET (unordered) segment types. Analogous to BGP AS_PATH.

routing, voip

protocol-element §5.3

The NextHopServer attribute (Type Code 3, conditionally mandatory when ReachableRoutes or WithdrawnRoutes is present) encodes a 4-octet Next Hop ITAD, a 2-octet Length, and a variable ASCII string in the form 'host[:port]' identifying the next-hop signaling server.

routing, voip

protocol-element §5.5

The RoutedPath attribute (Type Code 5, conditionally mandatory with ReachableRoutes) records only the ITADs through which signaling messages following this route would actually pass—a subset of AdvertisementPath—updated only when the NextHopServer attribute is changed.

routing, voip

protocol-element §5.1

The WithdrawnRoutes attribute (Type Code 1, Well-known) lists routes being removed from service; the ReachableRoutes attribute (Type Code 2, Well-known) lists routes being added. Both encode routes sequentially with no padding; neither has mandatory presence but each is a conditional mandatory trigger for other attributes.

routing, voip

registry §13.5

IANA assigns ITAD (IP Telephony Administrative Domain) numbers (Section 13.5). ITAD number 0 is reserved by this document; numbers 1-255 are designated for private use. All other ITAD numbers are IANA-assigned.

registry, routing, voip

registry §13.3

IANA controls Destination Address Family codes (Section 13.3) and TRIP Application Protocol codes (Section 13.4). Address families 1 (Decimal), 2 (PentaDecimal), 3 (E.164) and protocols 1 (SIP) through 4 (H.323-Annex-G) are defined; codes 0 and 32768-65535 are reserved in each namespace.

registry, routing, voip, sip

registry §13.2

IANA controls TRIP Attribute Type Codes (Section 13.2). Code 0 and codes 224-255 are reserved; codes 1 through 11 (WithdrawnRoutes through ConvertedRoute) are defined by this document.

registry, routing, voip

registry §13.1

IANA controls TRIP Capability Codes (Section 13.1). Code 0 and codes 32768-65535 are reserved; code 1 (Route Types Supported) and code 2 (Send Receive Capability) are defined by this document.

registry, routing, voip

security-consideration §14

Section 14 addresses security considerations for TRIP. Because TRIP distributes telephony routing policy between administrative domains, peering sessions carry sensitive information and must be protected against spoofed peers and injected routes; transport-level security mechanisms such as TCP MD5 authentication or IPsec are applicable.

security, routing, voip

state-machine §9

The TRIP FSM (Section 9, Appendix A1) is modeled after BGP-4's FSM. States govern peer connection lifecycle from initial Idle through connection establishment (Connect, Active), OPEN exchange (OpenSent, OpenConfirm), and normal operation (Established). Triggers include transport events, message receipt, and Hold Timer expiry.

routing, voip

wire-format §4.3.1

Each UPDATE routing attribute is encoded as: 1-octet Attribute Flags, 1-octet Attribute Type Code, 2-octet Attribute Length, and variable Attribute Value. Attributes MUST appear in ascending order of Attribute Type Code; an attribute MUST NOT appear more than once per UPDATE message.

routing, voip

wire-format §4.2.1.1

OPEN Optional Parameters are encoded as <Parameter Type (2 octets), Parameter Length (2 octets), Parameter Value (variable)> triples. Capability Information uses Optional Parameter type 1 and carries <Capability Code (2 octets), Capability Length (2 octets), Capability Value (variable)> triples.

routing, voip

wire-format §5.1.1.1

The generic TRIP route format encodes: 2-octet Address Family (1=Decimal Routing Numbers, 2=PentaDecimal Routing Numbers, 3=E.164 Numbers), 2-octet Application Protocol (1=SIP, 2=H.323-Q.931, 3=H.323-RAS, 4=H.323-Annex-G), 2-octet Length, and variable ASCII digit-string Address prefix.

routing, voip, sip

wire-format §4.5

The NOTIFICATION message contains a 1-octet Error Code (1=Message Header Error, 2=OPEN Error, 3=UPDATE Error, 4=Hold Timer Expired, 5=FSM Error, 6=Cease), a 1-octet Error Subcode, and variable Data. Minimum length is 5 octets; the transport connection is closed immediately after sending.

routing, voip

wire-format §4.2

The OPEN message fixed fields are: 1-octet Version (current=1), 1-octet Reserved, 2-octet Hold Time, 4-octet My ITAD number, 4-octet TRIP Identifier, 2-octet Optional Parameters Length, and variable Optional Parameters. Minimum length is 17 octets including the message header.

routing, voip

wire-format §4.1

The TRIP message header consists of a 2-octet unsigned integer Length field (minimum 3, maximum 4096 octets) followed by a 1-octet unsigned integer Type field (1=OPEN, 2=UPDATE, 3=NOTIFICATION, 4=KEEPALIVE). No padding after the message is allowed.

routing, voip

wire-format §4.3.2.4

When the Link-state Encapsulation flag is set, the attribute header is extended with two additional 4-octet fields: Originator TRIP Identifier and Sequence Number, which are used to detect and suppress duplicate or stale flooded routes.

routing, voip