Project

General

Profile

ScopeControl » History » Revision 2

Revision 1 (Junxiao Shi, 06/26/2014 10:03 PM) → Revision 2/3 (Junxiao Shi, 09/02/2015 09:56 PM)

# Namespace-based Scope Control 

 NFD performs scope control of Interest and Data according to their namespace. 

 Namespace-based scope control is the only kind of scope control supported by NFD. 
 [Scope Guider](http://named-data.net/doc/ndn-tlv/interest.html#scope) in NDN-TLV Interest packet is not supported, and is ignored. 

 ## localhost Scope 

 The localhost scope limits propagation to the applications on the originating host. 
 It is equivalent to [Scope=1](http://named-data.net/doc/ndn-tlv/interest.html#scope). 

 Interest and Data packets under prefix `ndn:/localhost` are restricted by these rules: 

 * Interest namespace can come from and go to local faces only. 
 * Data namespace can come from and go to local faces only. 

 ### local face 

 Whether a face is considered "local" for scope control purpose is determined by the face implementation. 
 [[FaceMgmt#Static-Face-Attributes|FaceScope]] `Face::isLocal()` attribute indicates whether returns true if a face is local or non-local. for scope control purpose. 

 Generally, the following faces are local: 

 * internal face for the `InternalFace` (in NFD [[Management]] management module) 
 * UNIX-domain socket face 
 * TCP face whose remote address is a loopback address 
 * WebSocket face whose remote address is a loopback address 

 A local process may connect as non-local by establishing a TCP or WebSocket connection to the IP address of on a non-loopback physical NIC of the local machine. 
 Since this IP address is not a loopback address, the face would be non-local. 
 This is desirable in scenarios such as a protocol translator. 

 ## localhop Scope 

 The localhop scope limits propagation to no further than the next node. 
 It is equivalent to [Scope=2](http://named-data.net/doc/ndn-tlv/interest.html#scope). 

 Interest packets under prefix `ndn:/localhop` are restricted by these rules: 

 * Interest can come from a local face or a non-local face. 
 * If PIT entry has at least one InRecord from a local face, it can be forwarded to local faces and non-local faces. 
 * If PIT entry has all InRecords from non-local faces, it can only be forwarded to local faces. 
 * PIT entry can be satisfied by Data from any source. 

 Data packets under prefix `ndn:/localhop` are unrestricted. 

 The localhop scope allows an Interest packet to travel only one hop from the consumer host, but a Data packet may travel multiple hops from the producer host. 
 Suppose we have three hosts A-B-C in a linear topology, B can retrieve a Data under /localhop namespace from C, and this Data is cached in B's ContentStore. 
 Later A sends an Interest to B; although B cannot forward this Interest to C, the cached Data can satisfy the Interest and would be returned to A.