Telephony Routing over IP (TRIP)
updated by
- rfc-8602 — Update to the Telephony Routing over IP (TRIP) IANA Registry Rules regarding Postal Addresses
Extracted elements (33)
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.
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.
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.
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.
All TRIP implementations MUST support the maximum message size of 4096 octets. A message MUST be processed only after it is entirely received.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.