Project

General

Profile

Task #1910

faces/create: require canonical FaceUri

Added by Junxiao Shi about 5 years ago. Updated about 4 years ago.

Status:
Closed
Priority:
Low
Assignee:
Category:
Management
Target version:
Start date:
Due date:
% Done:

100%

Estimated time:
2.50 h

Description

Allow only canonical FaceUri in faces/create command: require specifying either IPv4 or IPv6, permit IP address only (no DNS resolution).

NFD Developer Guide should be updated as part of this Task to reflect this change.


Related issues

Blocked by NFD - Task #1909: nfdc: ensure FaceUri is in canonical formClosed

Blocked by NLSR - Task #1911: Create face with canonical FaceUriClosed

Blocks NFD - Bug #1839: faces/create commands fail if sent in a batchRejected2014-08-10

Blocks NFD - Task #2207: Eliminate TcpResolver and UdpResolverClosed

History

#1 Updated by Junxiao Shi about 5 years ago

  • Blocked by Task #1909: nfdc: ensure FaceUri is in canonical form added

#2 Updated by Junxiao Shi about 5 years ago

  • Blocked by Task #1911: Create face with canonical FaceUri added

#3 Updated by Junxiao Shi almost 5 years ago

  • Blocks Bug #1839: faces/create commands fail if sent in a batch added

#4 Updated by Lan Wang almost 5 years ago

what should happen when a hostname resolves to multiple IP addresses? also may be a mix of ipv4 and ipv6 addresses. John DeHart had this problem on the lip6 node.

#5 Updated by Junxiao Shi almost 5 years ago

The client must decide which IP to use prior to sending faces/create command.
The client may opt to send the command for one IP first. If face creation fails, the client can then send another command for a different IP.

#6 Updated by Junxiao Shi almost 5 years ago

  • Description updated (diff)
  • Estimated time changed from 2.00 h to 2.50 h

#7 Updated by Junxiao Shi almost 5 years ago

  • Blocks Task #2207: Eliminate TcpResolver and UdpResolver added

#8 Updated by Junxiao Shi almost 5 years ago

Notice is sent to ndn-app ndn-lib nfd-dev.

This change cannot happen (merge) before Dec 04 12:00 UTC.

#9 Updated by Chengyu Fan almost 5 years ago

  • Assignee set to Chengyu Fan

#10 Updated by Chengyu Fan almost 5 years ago

Not sure I understand this task correctly...
This task requires the controller to verify if the FaceUri is canonical. So this job should be done in the ndn-cxx.

Also please let me know how to update NFD Developer Guide?

#11 Updated by Junxiao Shi almost 5 years ago

This task requires the controller to verify if the FaceUri is canonical. So this job should be done in the ndn-cxx.

NO. This Task is to modify FaceManager so that non-canonical FaceUri is rejected with code 400.

Also please let me know how to update NFD Developer Guide?

See #1611.

#12 Updated by Chengyu Fan almost 5 years ago

  • % Done changed from 0 to 70

part of this Task is to update the NFD developer guide.

Code is submitted for review.

#13 Updated by Chengyu Fan almost 5 years ago

  • Status changed from New to Code review
  • % Done changed from 70 to 100

#14 Updated by Chengyu Fan almost 5 years ago

NFD Developer Guide is already updated and committed to git@git.irl.cs.ucla.edu:papers/nfd-docs.git, need feedback.

#15 Updated by Junxiao Shi almost 5 years ago

nfd-docs commit is not correctly uploaded. HEAD is at 4e440922c6a2e56d9892f16321c2cd34f58c28a1 updated on Nov 19.

#16 Updated by Chengyu Fan over 4 years ago

Sorry about incorrect submission.

Please tell me what command I should use to commit the updates: git push, git push origin HEAD:refs/for/master, or other command?

#17 Updated by Junxiao Shi over 4 years ago

nfd-docs is a regular git repository, so git push origin master should be used for uploading.

#18 Updated by Chengyu Fan over 4 years ago

nfd-docs upadtes committed.

#19 Updated by Junxiao Shi over 4 years ago

  • Status changed from Code review to Closed

Verified nfd-docs.

#20 Updated by Junxiao Shi about 4 years ago

Since someone is asking, I'll explain the rationale of requiring canonical FaceUri in faces/create: canonization is not the responsibility of NFD.

  • NFD's responsibility is to forward NDN packets in NDN network.
  • A major part of FaceUri canonization is performing a DNS lookup.
  • DNS resolution is performed in IP network, and it can sometimes get messy and complex.
  • DNS resolution routines in standard libraries are blocking; calling a blocking function in single-threaded NFD is bad. Third party libraries can offer non-blocking DNS resolution, but they increase the complexity of NFD.

In addition, face query operation (see FaceMgmt) requires canonical FaceUris.

  • It's difficult or even impossible to compare two non-canonical FaceUris.
  • Performing FaceUri canonization incurs all problems above.
  • The same non-canonical FaceUri may resolve to different canonical FaceUris overtime, eg. due to DNS round-robin.

Requiring canonical FaceUri makes NFD simpler, and moves the complexity of DNS resolution to the client.

Also available in: Atom PDF