Forwarding Hint in NFD Junxiao Shi, 2015-08-14 1 Overview • Forwarding hint is a scheme for mobility support in a large NDN network. • See #2587 link.pdf for protocol definition. • This document describes how forwarding hint feature is to be implemented in NFD. • Some features are beyond the minimal necessary features, and will not be implemented in the first stage. 2 How Forwarding Hint Works 3 Forwarding within consumer region consumer region edge router consumer NDNS nameserver (first default-free router) regular Interest: /ndnsim/index.htm NACK: /ndnsim/index.htm is unroutable NDNS query for /ndnsim/index.htm NDNS reply for /ndnsim/index.htm /ndnsim is available at /att/ndnsim and /ucla/ndnsim Interest: /ndnsim/index.htm Link object: /ndnsim is delegated to /att/ndnsim and /ucla/ndnsim 4 Forwarding across the Internet consumer region edge /cox/router1 intermediate router /level3/router2 producer region edge /att/router3 make a selection among delegations Interest: /ndnsim/index.htm Link object: /ndnsim is delegated to /att/ndnsim and /ucla/ndnsim SelectedDelegation: 0 (/att/ndnsim) follow the selected delegation Interest: /ndnsim/index.htm Link object: /ndnsim is delegated to /att/ndnsim and /ucla/ndnsim SelectedDelegation: 0 (/att/ndnsim) 5 Forwarding within producer region • When the Interest has reached the producer region, it can be forwarded with the Name (not Link). • The router tests whether the delegation Name (/att) is a prefix of the router's region name to determine if the Interest has reached the producer region. • The Interest Name prefix (/ndnsim), should be announced within the producer region (/att). • Link and SelectedDelegation should be ignored. • See next page: ContentStore partitioning is unnecessary within producer region. 6 Data forwarding • Data is returned following PIT states. • To prevent cache poisoning with counterfeit Link objects, the ContentStore is partitioned with Link object. • unless the Data is within producer region, where Link object is ignored. • ContentStore lookup returns a match only if the cached Data has been retrieved with the same Link object. 7 Summary 1. When Interest with unroutable Name hits consumer region edge (a default-free router), the router returns NACK. 2. Consumer re-expresses with a Link. 3. The consumer region edge router picks a producer region from the Link. 4. Intermediate routers forward the Interest toward the producer region (chosen in step 3). 5. The Interest is forwarded according to its regular Name within the producer region. 6. Data is returned with PIT states. 8 Example for NDNFit 9 Topology NDNS nameserver for /ndnfit DSU for Bob UCLA router mobile for Bob ARIZONA router DPU 10 Mobile Upload to DSU • Why the Link object isn't published into NDNS? • This depends on: should an Interest from DPU be able to reach the mobile? 1. Mobile connects to ARIZONA router, and performs remote prefix registration. • ARIZONA router knows "/ndnfit/bob" is served by mobile. 2. Mobile sends command to DSU: "I want to upload /ndnfit/bob/20150518" • A Link object is sent as part of the upload command: Link(/ndnfit/bob, delegation=/ndn/edu/arizona, signed by Bob) • Can we send the Name of the Link object, instead of the Link object itself, as a command parameter? • No. The Link object exists on the mobile only, and the mobile doesn't have a routable prefix. Without the link object, DSU can't reach the mobile with an unroutable prefix. 11 Mobile Upload to DSU 3. DSU sends Interest with forwarding hint: • INTEREST /ndnfit/bob/20150518 Link(/ndnfit/bob, delegation=/ndn/edu/arizona, signed by Bob) 4. The network forwards Interest to ARIZONA router, according to forwarding hint. 5. ARIZONA router strips Link object, and forwards the Interest to the mobile, according to /ndnfit/bob prefix. 12 DPU Download from DSU 1. DSU connects to UCLA router, and performs remote prefix registration with a globally routable prefix: /ndn/edu/ucla/ndnfit-dsu-ucla. 2. When Bob signs up, Bob updates NDNS: Link(/ndnfit/bob, delegation=/ndn/edu/ucla/ndnfit-dsu-ucla, signed by Bob) 3. DPU performs NDNS lookup for /ndnfit/bob 13 DPU Download from DSU 4. DPU sends Interest with forwarding hint: • INTEREST /ndnfit/bob/20150518 Link(/ndnfit/bob, delegation=/ndn/edu/ucla/ndnfit-dsuucla, signed by Bob) 5. The network forwards Interest to DSU, according to forwarding hint. 6. DSU forwarder strips Link object, and forwards the Interest to the application, according to /ndnfit/bob prefix. 14 Application Changes 15 Producer • The producer should determine the routable prefix of the region in which its own prefix is routable, and (optionally) publish a Link object in NDNS nameserver. • Implementation: • Library provides APIs for application to generate and publish Link objects to NDNS nameserver. • A higher-level library may expose an "upload API" for "mobile upload to DSU" scenario. 16 Consumer • The consumer should react to NACK-unroutable: • perform NDNS lookup • re-express Interest with Link object • Short term solution before NACK is ready: • the consumer should always perform NDNS lookup • Implementation: • Application MAY explicit set the forwarding hint. • If forwarding hint is unset, Face::expressInterest performs automatic lookup, and caches the result. • so applications don't have to change 17 Forwarder Changes This section describes the MINIMAL changes in forwarding to support mobility. Additional features are needed in the complete solution, which is not yet ready. 18 Configuration: region names • Add a "region name" field to NFD configuration file. • This allows the producer region edge router to determine an Interest has reached the producer region. • The region name could indicate a single router (router name), or a Point Of Presence. • There could be multiple region names. We use "region name" rather than "router name". By configuring region names to be a Point Of Presence or larger, an attacker would not be able to address a single router by setting its router name in the Link object. 19 Interest forwarding: pick delegation • Condition: • Delegation Name is not a prefix of any region name. • Interest has Link object but no SelectedDelegation. • Action: 1. (ContentStore miss pipeline) perform FIB lookups for each delegation Name in the Link object 2. (strategy) pick a delegation 3. (strategy) forward to one or more nexthops in the FIB entry associated with the chosen delegation 4. (outgoing Interest pipeline) set SelectedDelegation field 20 Interest forwarding: follow delegation • Condition: • Delegation Name is not a prefix of any region name. • Interest has Link object and SelectedDelegation. • Action: 1. (ContentStore miss pipeline) perform FIB lookup for selected delegation Name 2. (strategy) forward to one or more nexthops in the FIB entry associated with the delegation 21 Interest forwarding: within producer region • Condition: • Delegation Name is a prefix of any region name. • Action: 1. (incoming Interest pipeline) ignore Link object and SelectedDelegation • This requires all nodes in the producer region to have accurate "region name", otherwise, if some nodes don't have "region name": • those nodes are confused whether to follow the forwarding hint, or to follow the Interest Name. • If it's just the end host laptop not having an accurate "region name", the laptop can follow the forwarding hint for Interests from a local app, otherwise follow the Interest Name. But this won't work in the general case. 22