[Nfd-dev] nfdc implicit face creation problems

Junxiao Shi shijunxiao at email.arizona.EDU
Tue Jan 31 09:45:39 PST 2017


Dear folks

Back in Apr 2014 <https://redmine.named-data.net/issues/1515>, we
introduced *implicit face creation* to nfdc. This feature allows an
operator to type a command:
nfdc register / udp://hobo.cs.arizona.edu
to perform two actions: (1) create a face to the specified router if it
does not exist (2) register a route toward the specified face.

However, there has been some problems in this feature:

1.
Only unicast UDP and TCP faces can be used in the FaceUri. Multicast UDP
faces and Ethernet faces cannot be written as FaceUri, but must be
specified as FaceId. This has led to user confusions. To name a few:
http://www.lists.cs.ucla.edu/pipermail/nfd-dev/2016-June/001839.html
https://redmine.named-data.net/issues/3276
http://www.lists.cs.ucla.edu/pipermail/nfd-dev/2015-April/001013.html

2.
nfdc register can implicitly create a face, but nfdc unregister cannot.

3.
When creating a face, it's necessary to specify its persistency. This isn't
currently possible with implicit face creation, although there is a feature
request:
https://redmine.named-data.net/issues/3229

4.
If the operator mistypes a FaceUri in nfdc register command, there would be
no warning.
https://redmine.named-data.net/issues/1515#note-10 argues against
implicitly creating a face in nfdc unregister command because of that, but
the same argument applies to nfdc register as well.


I propose dropping implicit face creation feature during nfdc refactoring:
(1) nfdc face create is the only subcommand that can create a face.
(2) nfdc route add and nfdc route remove (replacements of nfdc
register and nfdc
unregister) do not implicitly create faces. They can accept either FaceId
or FaceUri. When specifying FaceUri, we query the existing faces whose
RemoteUri matches the specified FaceUri. If one exact match is found, that
face is used. If no face with that RemoteUri is found, an error message is
printed. If two or more matches are found, an error message is printed with
the list of matched faces, and the operator can re-run the command with one
of the FaceIds from that list.

This is consistent with iproute2 programs, where you must explicitly create
an interface before using it in IP routing tables.


Yours, Junxiao
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.lists.cs.ucla.edu/pipermail/nfd-dev/attachments/20170131/276de618/attachment.html>


More information about the Nfd-dev mailing list