Partial View Identifier for TRRP

TRRP suffers a "locator liveness" problem that BGP does not. A TRRP route lookup may return ETR addresses which are not reachable by the ITR and whose unreachability is not passively detectable by the ITR. If an unreachable ETR is selected, communication will fail even though another path is likely available.

This liveness problem can be addressed in the following way:

If the map TTL is the same or less than a BGP session timeout, this approach should yield approximately the same reliability as BGP through a static tunnel. However, unless the ITR realizes that it only has a partial view, it will be unable to select the best path or take advantage of multiple equal cost paths. Thus the ITR should be explicitly informed that it may receive other usable answers if it also queries the other authoritative map servers.

DNS Egress Map entry:

TRRP specifies routing entries via DNS TXT records in the format "pp,ii,route pp,ii,route ..." where pp is a hexadecimal priority, ii is a protocol Identifier and route is the egress information needed by the protocol. For the Partial View entry, these elements are:

Identifier: vi = View. There may only be one View Identifier in the DNS Egress Map. If more than one is offered, the ITR should ignore all of them.

Priority: the priority for the "vi" identifier should always be "ff". An ITR should ignore the priority of the vi identifier regardless of its setting.

Route: The "route" parameter offers a liveness flag, followed by a dot, followed by the 32-bit change stamp.

The change stamp is incremented each time the full route view (including this partial view) is changed.

If the liveness flag is 1, this record contains only routes which the query path confirms working. If the liveness flag is 0, the route server knows no working ETR along this path and instead offers the routes it hasn't positively confirmed to have failed.

Example:

The ITR makes a DNS TXT request for 1.101.168.192.v4.trrp.arpa. It receives one TXT record in response:

80,g4,1.2.3.4 ff,vi,1.0000000f

This means that 192.168.101.1 is reachable via an IPv4 GRE tunnel to 1.2.3.4 as confirmed by the path taken for this DNS query, but it's also reachable via other routes not specified here. This result should not overwrite any prior results with the same changestamp.

How to handle a partial-view result:

1. Start sending waiting packets immediately to the best available address.

2. With each additional packet received for the destination, query one additional authority DNS route map server until all have been asked for their views.

3. If at least one view with a liveness flag of 1 is received, discard all views with a liveness flag of 0.

4. Upon TTL expiration, re-request entries only from the authority servers which offered the preferred map entries. If the change stamp has changed or none of the DNS authority servers for the ITR's preferred ETRs return a liveness flag of 1, requery all authority servers.

Example:

1.101.168.192.v4.trrp.arpa has four authority DNS egress map servers:

The ITR receives a packet for 192.168.101.1. It first queries 1.2.3.4 and receives the answer: "80,g4,1.2.3.4 ff,vi,1.0000000f" along with the list of authority servers.

The ITR encapsulates the packet for 192.168.101.1 in a GRE packet and sends it to 1.2.3.4.

The ITR receives another packet for 192.168.101.1 It sends this one to 1.2.3.4 too but queries 5.6.7.8 for its view. The ITR receives the answer: "80,g4,1.2.3.4 60,g6,2002:c0a8:0101::5 ff,vi,0.0000000f". The response is discarded because the liveness flag is 0 and a response with a liveness flag of 1 is already known.

The ITR receives another packet for 192.168.101.1 It sends this one to 1.2.3.4 and queries 2002:c0a8:0101::1 for its view. The ITR receives the answer: "60,g6,2002:c0a8:0101::5 ff,vi,1.0000000f".

The ITR receives another packet for 192.168.101.1 It sends this one to 2002:c0a8:0101::5 because that's the best known ETR. The ITR also queries 2002:c0a8:ffff::1 for its view but after various retries it fails to receive a response and gives up. 2002:c0a8:ffff::1's view is not available.

The ITR continues sending packets for 192.168.101.1 to 2002:c0a8:0101::5 until the TTL is reached for the "60,g6,2002:c0a8:0101::5 ff,vi,1.0000000f" map entry.

The ITR receives another packet for 192.168.101.1 but the TTL for "60,g6,2002:c0a8:0101::5 ff,vi,1.0000000f" has expired. It sends the packet to 2002:c0a8:0101::5 immediately and then asks 2002:c0a8:0101::1 for its current view. The ITR receives the answer: "60,g6,2002:c0a8:0101::5 ff,vi,1.0000000f". Since the change stamp hasn't changed, the ITR does not need to re-query the other authority servers.

Optional:

Partial View is an optional TRRP feature. ITRs which do not understand or implement partial view should ignore it and proceed as if it was not present in the egress map.