Project

General

Profile

Actions

Task #1910

closed

faces/create: require canonical FaceUri

Added by Junxiao Shi over 9 years ago. Updated almost 9 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 4 (0 open4 closed)

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

Actions
Blocked by NLSR - Task #1911: Create face with canonical FaceUriClosedVince Lehman

Actions
Blocks NFD - Bug #1839: faces/create commands fail if sent in a batchRejected08/10/2014

Actions
Blocks NFD - Task #2207: Eliminate TcpResolver and UdpResolverClosedChengyu Fan

Actions
Actions #1

Updated by Junxiao Shi over 9 years ago

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

Updated by Junxiao Shi over 9 years ago

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

Updated by Junxiao Shi over 9 years ago

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

Updated by Lan Wang over 9 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.

Actions #5

Updated by Junxiao Shi over 9 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.

Actions #6

Updated by Junxiao Shi over 9 years ago

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

Updated by Junxiao Shi over 9 years ago

  • Blocks Task #2207: Eliminate TcpResolver and UdpResolver added
Actions #8

Updated by Junxiao Shi over 9 years ago

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

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

Actions #9

Updated by Chengyu Fan over 9 years ago

  • Assignee set to Chengyu Fan
Actions #10

Updated by Chengyu Fan over 9 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?

Actions #11

Updated by Junxiao Shi over 9 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.

Actions #12

Updated by Chengyu Fan over 9 years ago

  • % Done changed from 0 to 70

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

Code is submitted for review.

Actions #13

Updated by Chengyu Fan over 9 years ago

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

Updated by Chengyu Fan over 9 years ago

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

Actions #15

Updated by Junxiao Shi over 9 years ago

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

Actions #16

Updated by Chengyu Fan over 9 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?

Actions #17

Updated by Junxiao Shi over 9 years ago

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

Actions #18

Updated by Chengyu Fan over 9 years ago

nfd-docs upadtes committed.

Actions #19

Updated by Junxiao Shi over 9 years ago

  • Status changed from Code review to Closed

Verified nfd-docs.

Actions #20

Updated by Junxiao Shi almost 9 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.

Actions

Also available in: Atom PDF