5. Decent-Pull-Based Mapping System
The pull-based system does not require xTRs to join a multicast group. It uses a SHA-256 hash over an ASCII EID string and DNS A/AAAA records to identify which xTRs act as Map-Resolvers and Map-Servers.
Important hash strings and names are preserved:
[<iid>]<eid>/<ml>
[<iid>]<group>/<gml>-<source>/<sml>
eid = "[<iid>]<eid>/<ml>"
index = hash.sha_256(eid) MOD mv
sg-eid = "[<iid>]<group>/<gml>-<source>/<sml>"
index = hash.sha_256(sg-eid) MOD mv
starg-eid = "[<iid>]<group>/<gml>-0.0.0.0/0"
index = hash.sha_256(starg-eid) MOD mv
<index>.map-server.example.com
For multicast entries, the Hash Mask MUST include the string "[
Operators MAY configure ITRs to use specific lookup prefix lengths for EID allocation ranges. ITRs SHOULD support this configuration, SHOULD check for matching configured ranges, MUST use the configured lookup prefix length when a match is found, and MUST select the longest matching configured prefix when multiple ranges match. When constructing the hash string, the ITR MUST mask bits beyond the lookup-length.
The example EID range configuration is preserved:
Example configuration with multiple EID ranges:
EID Range Configuration:
Range: [0]240.11.0.0/16 -> lookup-length: 24
Range: [0]240.12.0.0/16 -> lookup-length: 30
Range: [0]240.13.0.0/16 -> lookup-length: 25
Lookup Examples:
EID [0]240.11.1.1/32 -> hash on [0]240.11.1.0/24
EID [0]240.12.2.5/32 -> hash on [0]240.12.2.4/30
EID [0]240.13.3.7/32 -> hash on [0]240.13.3.0/25
EID [0]240.14.1.1/32 -> hash on [0]240.14.1.1/32
(no match, use full EID)
The deployment example is preserved:
Here is an example deployment of a Decent-Pull-based model. Let's
say that 4 Map-Server sets are provisioned for the Mapping System.
Therefore, 4 distinct DNS names are allocated and a Modulus Value 4
is used. Each DNS name is allocated Name Index 0 through 3:
0.map-server.lispers.net
1.map-server.lispers.net
2.map-server.lispers.net
3.map-server.lispers.net
The A records for each name can be assigned as:
0.map-server.lispers.net:
A <rloc1-att>
A <rloc2-verizon>
1.map-server.lispers.net:
A <rloc1-bt>
A <rloc2-dt>
2.map-server.lispers.net:
A <rloc1-cn>
A <rloc2-kr>
3.map-server.lispers.net:
A <rloc1-au>
A <rloc2-nz>
When an xTR wants to register "[1000]fd::2222/128", it hashes the EID
string to produce, for example, hash value 0x67. Using the modulus
value 4 (0x67 & 0x3) produces index 0x3, so the DNS name 3.map-
server.lispers.net is used and a Map-Register is sent to <rloc1-au>
and <rloc2-nz>.
Note that the Decent-Pull-based method can be used for a core seed-
group for bootstrapping a Decent-Push-based Mapping System where
multicast groups are registered.
An implementation SHOULD periodically perform DNS lookups to detect changed A records. All xTRs need the same Modulus Value, otherwise EIDs can be looked up in the wrong Map-Server set.